首页 > 解决方案 > 为什么yolo检测不到图像中的所有物体?

问题描述

我正在尝试使用 AlexeyAB darknet 检测图像中的对象。但它只检测到 2 或 3 个对象。它无法检测到小对象(例如帽子)。我正在使用这个命令:

./darknet detector test ./cfg/coco.data ./cfg/yolov3.cfg /weight_path/ /image_path/

我该怎么做?

标签: machine-learningimage-processingobject-detectionyolodarknet

解决方案


根据AlexeyAB page for small objects 你可以这样做:

用于训练小对象(图像大小调整为 416x416 后小于 16x16)- 设置层 = -1, 11 而不是 https://github.com/AlexeyAB/darknet/blob/6390a5a2ab61a0bdf6f1a9a6b4a739c16b36e0d7/cfg/yolov3.cfg#L720 并设置 stride=4 而不是 https://github.com/AlexeyAB/darknet/blob/6390a5a2ab61a0bdf6f1a9a6b4a739c16b36e0d7/cfg/yolov3.cfg#L717

对于训练小型和大型对象,您可以使用修改后的模型:

同样在训练完成后,在检测阶段,您可以执行以下操作:

通过在 .cfg 文件中设置(高度=608 和宽度=608)或(高度=832 和宽度=832)或(32 的任何值倍数)来提高网络分辨率 - 这会提高精度并可以检测小物件:链接

  • 无需再次训练网络,只需使用已针对 416x416 分辨率训练的 .weights-file

  • 但要获得更高的精度,您应该使用更高分辨率 608x608 或 832x832 进行训练,注意:如果出现内存不足错误,
    则在 .cfg 文件中您应该增加细分 = 16、32 或 64:链接


推荐阅读