首页 > 其他分享 >OpenCV自带dnn的Example研究(3)— object_detection

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

时间:2022-12-25 12:01:51浏览次数:65  
标签:object yolo -- cfg dnn detection OpenCV 416 classes

​https://docs.opencv.org/master/examples.html​​下的



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


6个文件,看看在最新的OpenCV中,它们是如何发挥作用的。


在配置使用的过程中,需要注意使用较高版本的VS避免编译器兼容问题;由于DNN程序的运行依赖于训练成功的模型,因此需要预先下载准备;此外如果出现各种报错,需要对症下药。


此外,由于需要使用common.hpp文件,所以需要引入dnn目录到include中



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


用到的数据集都放在:


链接:https://pan.baidu.com/s/1WPoXU3VodErPHZo6Yc21xA 


提取码:01no 


如果你没找到,那一定是我忘了。


=====================================================================================友善的分割线============================


注意,这个例子有官方教程: ​​https://docs.opencv.org/master/da/d9d/tutorial_dnn_yolo.html​



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


教程给出了调用方法:


Usage examples

Execute in webcam:


​--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:


​​--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,


​​:      //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​​





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





对象识别是CV和DL的经典问题,看看OpenCV自己提供了什么。


本来我使用的是OpenCV4,但是例子代码使用的是最新从网上下载的,开头直接给报了个错



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


根据我多年程序设计的经验(其实是瞎猜),我认为是不是我的OpenCV版本低了,感觉更新到最新版本(这里注意一下,对于vs2015和2017,opencv提供了prebuild版本,比如叫opencv-4.1.0-vc14_vc15.exe这样的名字,可以从官网直接下载)



OpenCV自带dnn的Example研究(3)— object_detection_深度学习_06


注意prebuild是64位的,需要注意选择。然后就可以了,当然由于参数问题,仍然是需要进行修改的。(果然猜对了)


因为已经出现了能够正确运行的命令行,所以这里直接修改即可。



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


将汽车识别成bird肯定是错误的,但是object detection和class的区别在于跟踪,从显示的结果上来看,就是画框。



这个地方,就体现出了OpenCV DNN的黑盒特性,就是模型训练中的东西,可能是效果非常好的,也可能是效果不好的。


对这块的调节,不是OpenCV的工作,而是深度学习系统的工作—不管它是用什么训练出来的,我们都希望OpenCV能够提供一个接入现有系统的接口。


在深度学习这里,这才是OpenCV的价值。


标签:object,yolo,--,cfg,dnn,detection,OpenCV,416,classes
From: https://blog.51cto.com/jsxyhelu2017/5968078

相关文章

  • ArcObjects SDK开发 022 开发框架搭建-FrameWorkUI包设计
    1、CommandUIs部分这部分主要是定义承载Command和Tool的具体UI。如下图所示。以CommandUI结尾的这几个类都是继承了Framework.Engine里面的ICommandUI接口,这样我们定义......
  • 15_Java筑基之Object类、多态
    15_Java筑基之Object类、多态一.Object类Object类是类层次结构的根类,每个类都使用Object作为超类(父类).1.equals()方法指示其他某个对象是否与此对象“相等”.示例代码;......
  • js:Object对象按照key的升序排序
    思路:js的Object对象类型,不能直接排序,不过Array是可以排序的将Object类型的key,转为Array排序,再将结果转为Object示例letdata={name:"tom",age:20,};consol......
  • 记录:去除list<Map<String,Object>>中主键重复的map
    /**mapKey 主键key**/publicstaticList<Map<String,Object>>removeRepeatMapByKey(List<Map<String,Object>>list,StringmapKey){List<Map<String,Object>......
  • AcDbSmartObjectPointer
    描述这个类与AcDbObjectPointer协议兼容,并且增加了在给定对象id时避免访问对象的开放冲突的功能,此外还有长期存在的总是“关闭”对象或至少将其恢复到分配给指针之前的打......
  • ArcObjects SDK开发 021 开发框架搭建-FrameWork包设计
    1、框架引擎部分引擎模块其实就是之前我们说的App-Command-Tool模块,通过这个模块,把系统的主干框架搭建起来。其中大部分出现在菜单以及工具条上的按钮都会继承这个框架......
  • AcDbObjectPointerBase
    AcDbObjectPointerBase是一组模板类的基类,这些模板类简化了AcDbObjects指针的内存管理以及打开和关闭AcDbObjects。这些类提供了在创建和销毁时自动打开和关闭AcDbObjects......
  • JS中的Object、Proxy、Reflect以及Promise对象
    一、创建对象的方式字面量leta={}new关键字letb=newObject()Object.create()方法letc=Object.create(Object.prototype)二、原型链代码......
  • Vue、angular等框架实现双向绑定的原理,核心机制是使用了Object.defineProperty
    <divid="name"></div>varobj={};Object.defineProperty(obj,"name",{set:newVal=>(document.querySelector("#name").innerHTML=newVal)});obj.name="修改后,内......
  • ArcObjects SDK开发 019 SpatialReference
    1、SpatialReference的结构ArcObjectsSDK帮助中Esri.ArcGIS.Geometry命名空间帮助中的ObjectModelDiagram共两页,第一页就是Geometry的结构,第二页就是SpatialReference......