OpenCV DNN 和 YOLOv3 的对象检测不佳

Poor object detection with OpenCV DNN and YOLOv3

OpenCV 为其 DNN 模块提供 object detection sample code

我从训练它的同一 COCO 数据集下载了 YOLOv3 模型和样本图像:

wget https://pjreddie.com/media/files/yolov3.weights  
wget https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/yolov3.cfg
wget http://farm8.staticflickr.com/7272/7745390240_0dcf7d107d_z.jpg

以下是场景中标记的对象:

然后我运行检测未标注图像中物体的示例代码:

python object_detection.py --model yolov3.weights --config yolov3.cfg --height 320 --input 7745390240_0dcf7d107d_z.jpg 

这会在检测到的对象周围绘制矩形。但是检测出来的基本都是垃圾


如果我只是直接使用 Darknet,这是它的标签:

缺少的参数似乎是 --scale 0.00392 --rgb,它来自 this tutorial

  --scale SCALE         Preprocess input image by multiplying on a scale
                        factor. (default: 1.0)
  --rgb                 Indicate that model works with RGB input images
                        instead BGR ones. (default: False)

这些作为参数传递给 cv2.dnn.blobFromImage

我认为scale实际上并不是在调整输入图像的大小,而是将图像的每个元素转换为[0.0, 1.0]范围内的浮点数。 0.00392 大约是 1/255。