【目标检测】OpenCV中dnn模块的SSD demo运行
2017-03-19 23:13
489 查看
本文将opencv的contrib库中的dnn模块下的SSD检测方法的demo运行过程作以记录。
运行环境:win7 64位旗舰版,opencv3.1以及contrib库。
opencv dnn模块
到写本文的时间,opencv已经出到3.2版本了,由于之前装了3.1故版本没有更新,不过一般建议使用最新版本,新版本在兼容性和速度上都会有提升。我们这里只使用contrib库的dnn模块,并且读取以及训练好的模型来进行检测。下面是opencv3.2的dnn模块简介。
上面的介绍,我们可以看出,dnn模块支持caffe、TensorFlow、torch三种深度学习框架。也可以自己写网络层,读取网络结构和已经训练好的模型。
SSD方法
方法主页:SSD: Single Shot MultiBox Detector该方法在YOLO的基础上增加了多尺度的处理,对于不同尺寸的目标有了更好的检测效果,提高了准确率,同时还去掉了一些全连接层以提高检测速度。作者的实验中SSD300模型可以达到46FPS,同时VOC2007的mAP也达到了77.2。
demo运行
准备工作
1.使用cmake编译opencv以及contrib库(官网下载)。2.下载SSD模型,在上述的主页中可以下载,这里我用的是VGG_VOC0712_SSD_300x300_iter_120000.caffemodel及其对应的结构deploy.prototxt。
开始运行
1.在..\opencv_contrib-master\modules\dnn\samples下面的ssd_object_detection.cpp就是官方给出的例子。与以往不同的是,这个例程使用了opencv的CommandLineParser类,这是个命令行解析类,详情参见这篇博客OpenCV中CommandLineParser类。编译过后我们可以使用命令行来输入参数,这里我们直接在vs中调试。参数修改如下:
const char* about = "This sample uses Single-Shot Detector " "(https://arxiv.org/abs/1512.02325)" "to detect objects on image\n"; // TODO: link const char* params = "{ help | false | print usage }" "{ proto |deploy.prototxt| model configuration }" "{ model |VGG_VOC0712_SSD_300x300_iter_120000.caffemodel| model weights }" "{ image |rgb.jpg | image for detection }" "{ min_confidence | 0.5 | min confidence }";2.修改deploy.prototxt文件
修改参数后直接运行会报错,一般都是读取网络结构时,没有xxx层或者读取出错。这里我们按照报错以及给出的VGG_VOC0712_SSD_300x300_iter_60000.prorotxt来修改deploy文件。
(1)Normalize->NormalizeBBox
(2)norm_para->normalize_bbox_para
(3)step->#step (注释掉)
(4)offset->#offset(注释掉)
以上在文件中查找并替换就可以了。
3.运行
接下来就可以直接运行demo了。结果如下:
相关文章推荐
- 【目标检测】OpenCV中dnn模块的SSD demo运行
- 【目标检测】OpenCV中dnn模块的SSD demo运行
- 【目标检测】OpenCV中dnn模块的SSD demo运行
- 【目标检测】OpenCV中dnn模块的SSD demo运行
- 【目标检测】OpenCV中dnn模块的SSD demo运行
- 【目标检测】OpenCV中dnn模块的SSD demo运行
- 【目标检测】OpenCV中dnn模块的SSD demo运行
- 【目标检测】OpenCV中dnn模块的SSD demo运行
- 【目标检测】OpenCV中dnn模块的SSD demo运行
- 【目标检测】OpenCV中dnn模块的SSD demo运行
- vs2012安装opencv运行报错fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
- opencv3.4 + vs2015配置后运行提示(模块计算机类型“x64”与目标计算机类型“X86”冲突 opencv_world340.dll)
- JAVA调用OPENCV中DNN.Darknet接口进行目标检测测试(代码备份)
- 目标检测算法SSD在Ubuntu+CPU下运行
- ubuntu14.04配置SSD物体识别检测环境运行demo
- 一种Java与OpenCV结合实现的目标检测模块
- OpenCV 用dnn深度学习模块检测图像
- 转载: OpenCV中HOG人检测以及Part Model latent SVM目标识别 | 丕子 http://www.zhizhihu.com/html/y2011/3436.html
- OpenCV_基于自适应背景更新的运动目标检测
- Object Recognition and Scene Understanding(六)OpenCV中HOG+SVM目标检测