我正在尝试使用AlexeyAB暗网检测图像中的对象。但它只能检测到 2 或 3 个物体。它无法检测到小物体(例如帽子(。我正在使用这个命令:
./darknet detector test ./cfg/coco.data ./cfg/yolov3.cfg /weight_path/ /image_path/
我该怎么做?
根据小对象的AlexeyAB页面,您可以执行以下操作:
用于训练小型对象(图像 调整为 416x416( - 设置图层 = -1, 11 而不是 https://github.com/AlexeyAB/darknet/blob/6390a5a2ab61a0bdf6f1a9a6b4a739c16b36e0d7/cfg/yolov3.cfg#L720 并设置步幅=4 而不是 https://github.com/AlexeyAB/darknet/blob/6390a5a2ab61a0bdf6f1a9a6b4a739c16b36e0d7/cfg/yolov3.cfg#L717
对于训练小型和大型对象,您可以使用修改后的模型:
- 全模:5层:https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3_5l.cfg
- 微型模型:3 层:https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3-tiny_3l.cfg
- 空间-完整模型:3 个 yolo 层:https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3-spp.cfg
此外,在训练完成后,在检测阶段,您可以执行以下操作:
通过.cfg文件中的设置提高网络分辨率(高度 = 608 和 宽度=608(或(高度=832和宽度=832(或(32的任何值倍数( - 这提高了精度,并可以检测小物体:链接
没有必要再次训练网络,只需使用已经训练为 416x416 分辨率的 .weights-file
但是为了获得更高的精度,您应该使用更高分辨率 608x608 或 832x832 进行训练,注意:如果出现
内存不足,那么在.cfg文件中,您应该增加细分=16、32 或 64:链接