暗网YOLO图像大小

Darknet YOLO image size

我正在尝试在 Darknet YOLO v2 中训练自定义对象分类器 https://pjreddie.com/darknet/yolo/

我收集了一个图像数据集,其中大部分是 6000 x 4000 像素和一些较低的分辨率。

我需要在训练之前调整图像大小才能平方吗?

我发现配置使用:

[net]
batch=64
subdivisions=8
height=416
width=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

这就是为什么我想知道如何将它用于不同大小的数据集。

在训练前调整图像大小是很常见的。 416x416 比普通的略大。例如,大多数 imagenet 模型将图像调整大小并调整为 256x256。所以我希望这里也一样。尝试在 6000x4000 上进行训练将需要大量 GPU。标准过程是将图像平方到最大尺寸(高度或宽度),在较短的边填充 0,然后使用标准图像调整工具(如 PIL)调整大小。

您不必调整它的大小,因为 Darknet 会代替您来做!

这意味着您真的不需要这样做,并且您可以在训练期间使用不同的图像尺寸。您上面发布的只是网络配置。还应该有完整的网络定义。高度和宽度告诉您网络分辨率是多少。它还保持宽高比,检查例如 this.

您不需要调整图像大小,您可以直接更改 darknet.cfg 文件中的值。

  1. 当你打开darknet.cfg(yolo-darknet.cfg)文件时,你可以全部
    超参数及其值。
  2. 如您的 cfg 文件中所示,图像尺寸为 (416,416)->(weight,height),您可以更改这些值,以便 darknet 会在训练前自动调整图像大小。
  3. 由于图片维度高,可以调整batch和sub-division的值(调低32,16,8,必须是2的倍数),这样darknet就不会崩溃(内存分配错误) )

您不需要调整数据库图像的大小。 PJReddie 的 YOLO 架构根据 .cfg 文件中的分辨率自行保持纵横比安全(不会遗漏任何信息)。 例如,如果您的图像尺寸为 1248 x 936,YOLO 会将其调整为 416 x 312,然后用黑条填充额外的 space 以适应 416 x 416 网络。

默认情况下,暗网 api 在推理和训练中都会改变图像的大小,但理论上任何输入大小 w, h = 32 x X 其中 X 属于自然数,W 应该是宽度,H 高度。默认情况下 X = 13,因此输入大小为 w, h = (416, 416)。我在 opencv 的 yolov3 中使用这个规则,X 越大效果越好。