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。
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。