我正在尝试在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
这就是为什么我想知道如何将它用于不同大小的数据集。
答案 0 :(得分:9)
你不必调整它的大小,因为Darknet会代替你而不是你!
这意味着您确实不需要这样做,并且您可以在训练期间使用不同的图像尺寸。您上面发布的内容只是网络配置。还应该有完整的网络定义。高度和宽度告诉你什么是网络分辨率。它还保持纵横比,例如this。
答案 1 :(得分:3)
在训练前调整图像大小非常常见。 416x416略大于普通。大多数imagenet模型调整大小并将图像平方为256x256。所以我希望在这里也一样。试图在6000x4000上进行训练需要一个GPU场。标准过程是将图像平方到最大尺寸(高度或宽度),在短边上用0填充,然后使用像PIL这样的标准图像大小调整工具调整大小。
答案 2 :(得分:1)
您无需调整图像大小,可以直接更改darknet.cfg
文件中的值。
darknet.cfg
(yolo-darknet.cfg)文件时,您可以全部cfg
文件中所示,图像尺寸为(416,416)->(重量,高度),您可以更改值,以便darknet在训练之前自动调整图像的大小。答案 3 :(得分:1)
您不需要调整数据库映像的大小。 YOLO架构会根据.cfg文件中的分辨率自行确保宽高比安全(不会丢失任何信息)。 例如,如果您的图像尺寸为1248 x 936,则YOLO会将其尺寸调整为416 x 312,然后用黑条填充多余的空间以适合416 x 416网络。
答案 4 :(得分:0)
默认情况下,暗网api在推理和训练中都会更改图像的大小,但理论上任何输入大小w,h = 32 x X,其中X属于自然数,W是宽度,H是高度。默认情况下,X = 13,因此输入大小为w,h =(416,416)。我在opencv中将这个规则与yolov3一起使用,并且X越大越好。