OpenCV自带dnn的Example研究(3)— object_detection

这个博客系列,简单来说,今天我们就是要研究
6个文件,看看在最新的OpenCV中,它们是如何发挥作用的。
在配置使用的过程中,需要注意使用较高版本的VS避免编译器兼容问题;由于DNN程序的运行依赖于训练成功的模型,因此需要预先下载准备;此外如果出现各种报错,需要对症下药。
此外,由于需要使用common.hpp文件,所以需要引入dnn目录到include中
用到的数据集都放在:
链接:https://pan.baidu.com/s/1WPoXU3VodErPHZo6Yc21xA 
提取码:01no 
如果你没找到,那一定是我忘了。
=====================================================================================友善的分割线============================
注意,这个例子有官方教程: https://docs.opencv.org/master/da/d9d/tutorial_dnn_yolo.html
yolo.jpg
教程给出了调用方法:

Usage examples

Execute in webcam:

$ example_dnn_object_detection --config =[PATH -TO -DARKNET] /cfg /yolo.cfg --model =[PATH -TO -DARKNET] /yolo.weights --classes =object_detection_classes_pascal_voc.txt --width = 416 --height = 416 --scale = 0. 00392 --rgb

Execute with image or video file:

$ example_dnn_object_detection --config =[PATH -TO -DARKNET] /cfg /yolo.cfg --model =[PATH -TO -DARKNET] /yolo.weights --classes =object_detection_classes_pascal_voc.txt --width = 416 --height = 416 --scale = 0. 00392 --input =[PATH -TO -IMAGE -OR -VIDEO -FILE] --rgb

参考这个 方法,修改我们的调用参数

--config=e:/template/yolov3.cfg --model=e:/template/yolov3.weights --classes=e:/template/object_detection_classes_pascal_voc.txt --width=416 --height=416 --scale=0.00392 --input=e:/template/bike.avi --rgb
 
 
所以我们需要先准备的是yolo.weights 和 yolo.cfg,
wget https : //pjreddie.com/media/files/yolov3.weights
wget https : //github.com/pjreddie/darknet/blob/master/cfg/yolov3.cfg?raw=true -O ./yolov3.cfg
wget https : //github.com/pjreddie/darknet/blob/master/data/coco.names?raw=true -O ./coco.names






对象识别是CV和DL的经典问题,看看OpenCV自己提供了什么。
本来我使用的是OpenCV4,但是例子代码使用的是最新从网上下载的,开头直接给报了个错
根据我多年程序设计的经验(其实是瞎猜),我认为是不是我的OpenCV版本低了,感觉更新到最新版本(这里注意一下,对于vs2015和2017,opencv提供了prebuild版本,比如叫opencv-4.1.0-vc14_vc15.exe这样的名字,可以从官网直接下载)
注意prebuild是64位的,需要注意选择。然后就可以了,当然由于参数问题,仍然是需要进行修改的。(果然猜对了)
因为已经出现了能够正确运行的命令行,所以这里直接修改即可。
将汽车识别成bird肯定是错误的,但是object detection和class的区别在于跟踪,从显示的结果上来看,就是画框。

这个地方,就体现出了OpenCV DNN的黑盒特性,就是模型训练中的东西,可能是效果非常好的,也可能是效果不好的。
对这块的调节,不是OpenCV的工作,而是深度学习系统的工作—不管它是用什么训练出来的,我们都希望OpenCV能够提供一个接入现有系统的接口。
在深度学习这里,这才是OpenCV的价值。

参考资料:






附件列表

     

    posted on   jsxyhelu  阅读(96)  评论(0编辑  收藏  举报

    相关博文:
    阅读排行:
    · 25岁的心里话
    · 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
    · 零经验选手,Compose 一天开发一款小游戏!
    · 因为Apifox不支持离线,我果断选择了Apipost!
    · 通过 API 将Deepseek响应流式内容输出到前端

    导航

    < 2025年3月 >
    23 24 25 26 27 28 1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30 31 1 2 3 4 5

    统计

    点击右上角即可分享
    微信分享提示