为什么yolo不能检测到图像中的所有物体?[英] Why yolo can't detect all objects in image?

本文是小编为大家收集整理的关于为什么yolo不能检测到图像中的所有物体?的处理方法,想解了为什么yolo不能检测到图像中的所有物体?的问题怎么解决?为什么yolo不能检测到图像中的所有物体?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在尝试使用 AlexeyAB 暗网检测图像中的物体.但它只检测到 2 或 3 个物体.它无法检测到小物体(例如帽子).我正在使用这个命令:

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

我该怎么做?

解决方案

根据AlexeyAB 页面 对于小对象,您可以这样做:

<块引用>

用于训练小物体(小于 16x16 后的图像调整为 416x416) - 设置图层 = -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 和width=608) 或 (height=832 and width=832) 或 (32 的任何倍数)- 这提高了精度并可以检测小物体:链接

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

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

本文地址:https://www.itbaoku.cn/post/1793883.html