我有一组训练图像,其中包含许多小物体(10-20)。图像分辨率高(9000x6000)。
在进行yolo训练之前将图像分割成特定的对象更好吗?或者只是保持原样。
yolo会调整整个图像的大小,还是在调整大小之前先“提取”带注释的对象?
如果是前者,我担心分辨率会很差。想象一下416x416图像中的20个对象。
答案 0 :(得分:0)
yolo会调整整个图像的大小,还是“提取”带注释的图像 对象先调整大小?
是的,如果使用Yolo,则会调整整个图像的大小,并且在调整大小之前不会提取带注释的对象。
由于您输入的图像具有很高的分辨率,因此您可以执行以下操作:
Yolo可以使用网络输入层大小25 x 25
有效地处理608 x 608
的对象大小。因此,如果原始输入图像中的对象尺寸大于 250 x 250
,则可以按原样训练图像(使用608 x 608
网络尺寸)。在那种情况下,即使将图像调整为网络大小,对象的大小也将大于25x25
。这应该给您良好的准确性。
(6000/600) * 25 = 250
如果原始图像中的对象尺寸小于 200 x 200
,请将输入图像分成8个较小的单位/块,例如2250 x 1500
的块/小块。将这些块训练为单个图像。每个较大的图像(9000 x 6000)对应于8个训练图像。每个图像可能包含零到许多对象。您可以使用滑动窗口方法进行操作。
您选择的训练方法也应用于推断。
要对各种尺寸的物体进行训练,请使用以下模型:[如果您使用原始图像进行训练,请使用此模型]
如果要检测的所有对象的尺寸都较小,则为了进行有效检测,请使用Yolov4并进行以下更改:[如果将原始图像分为8个块,则使用此选项]
layers = 23
而不是layers = 54 stride=4
而不是stride=2 stride=4
而不是stride=2 参考: