我正在尝试在暗网 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
这就是为什么我想知道如何将其用于不同大小的数据集。
你不必调整它的大小,因为暗网会代替你来做!
这意味着您真的不需要这样做,您可以在训练期间使用不同的图像大小。您上面发布的只是网络配置。还应该有完整的网络定义。高度和宽度告诉您网络分辨率是多少。它还保持纵横比,例如检查这个。
调整数据库映像的大小。PJReddie的YOLO架构根据文件中的分辨率自行保持纵横比安全(不会遗漏任何信息.cfg。例如,如果图像大小为 1248 x 936,YOLO 会将其大小调整为 416 x 312,然后用黑条填充额外的空间以适应 416 x 416 网络。
在训练前调整图像大小是很常见的。 416x416 比普通略大。例如,大多数图像网模型将图像调整大小并平方为 256x256。所以我在这里也期望同样的事情。尝试在 6000x4000 上进行训练将需要一组 GPU。标准过程是将图像平方到最大尺寸(高度或宽度(,在较短的边上填充 0,然后使用 PIL 等标准图像大小调整工具调整大小。
您无需调整图像大小,可以直接更改darknet.cfg
文件中的值。
- 当你打开
darknet.cfg
(yolo-darknet.cfg(文件时,你可以
超参数及其值。 - 如
cfg
文件图像尺寸为(416,416(->(体重,高度(所示,您可以更改值,以便暗网在训练前自动调整图像大小。 - 由于图像具有高维度,因此您可以调整批处理和细分值(降低值 32,16,8 .它必须是 2 的倍数(,这样暗网就不会崩溃(内存分配错误(
默认情况下,暗网 API 在推理和训练中都会改变图像的大小,但理论上任何输入大小 w, h = 32 x X,其中 X 属于自然数,W 是宽度,H 是高度。默认情况下 X = 13,因此输入大小为 w, h = (416, 416(。我在 opencv 中对 yolov3 使用此规则,X 越大,效果越好。