Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用OpenCV 4.1.2的DNN模块部署深度学习模型

使用OpenCV 4.1.2的DNN模块部署深度学习模型

作者头像
OpenCV学堂
发布于 2019-11-15 08:13:47
发布于 2019-11-15 08:13:47
3.1K10
代码可运行
举报
运行总次数:0
代码可运行

自3.3版本开始,OpenCV加入了对深度神经网络推理运算的支持模块-DNN模块,它支持多种深度学习框架的模型,如Tensorflow、Caffe、Torch、Darknet,以及ONNX格式的模型。

使用DNN模块部署模型非常简单,4.1.2版本加入了dnn::Model类以及针对不同任务的类dnn::ClassificationModel,dnn::DetectionModel,dnn::SegmentationModel,可以进行网络的自动预处理和后处理,更加简化了流程。

以目标检测为例,4.1.2之前的版本部署方式为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
    float model = "ssdlite_mobilenet_v2.pb";
    float config = "ssdlite_mobilenet_v2.pbtxt";
    float scale = 1.0;
    int inpWidth = 300;
    int inpHeight = 300;
    Scalar mean(103.939, 116.779, 123.68);
    float confThreshold = 0.5f;
    float nmsThreshold = 0.4f;
    // 1. 装载模型,设置参数
    Net net = readNet(model, config);
    net.setPreferableBackend(DNN_BACKEND_OPENCV);
    net.setPreferableTarget(DNN_TARGET_CPU);
    std::vector<String> outNames = net.getUnconnectedOutLayersNames();

    // 读入图像
    Mat image = imread("picture.jpg");

    Mat blob;
    // 2. 由输入图像生成blob,设置blob为模型输入
    blobFromImage(image, blob, scale, inpSize, mean, true, false);
    net.setInput(blob);
    std::vector<Mat> outs;
    // 3. 前向计算,检测结果存入outs
    net.forward(outs, outNames);
    // 4. 对检测结果进行非极大值抑制等后处理,结果存入outs
    postprocess(frame, outs, net);
}

4.1.2版本的部署方式为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
    float model = "ssdlite_mobilenet_v2.pb";
    float config = "ssdlite_mobilenet_v2.pbtxt";
    float scale = 1.0;
    int inpWidth = 300;
    int inpHeight = 300;
    Scalar mean(103.939, 116.779, 123.68);
    float confThreshold = 0.5f;
    float nmsThreshold = 0.4f;
    // 1. 装载模型,设置参数
    DetectionModel dnn_model(model, config);
    dnn_model.setPreferableBackend(DNN_BACKEND_OPENCV);
    dnn_model.setPreferableTarget(DNN_TARGET_CPU);
    dnn_model.setInputParams(scale, Size(inpWidth, inpHeight), mean, true, false);

    // 读入图像
    Mat image = imread("picture.jpg");

    std::vector<int> classIds;
    std::vector<float> confs;
    std::vector<Rect> boxes;
    // 2. 前向计算,检测结果矩形框存入boxes(已经过后处理)
    dnn_model.detect(image, classIds, confs, boxes, confThreshold, nmsThreshold);
}

OpenCV 4.1.2下载地址:

https://opencv.org/releases/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
楼主你好,我按您的方法测试了一下dnn::DetectionModel好像效率完全没有提升,楼主能否发一个openvino在vs2015环境上检测darknet模型的配置流程与例子呢,个人按照您以前的文章配置,但在net.forward就一定会报错。
楼主你好,我按您的方法测试了一下dnn::DetectionModel好像效率完全没有提升,楼主能否发一个openvino在vs2015环境上检测darknet模型的配置流程与例子呢,个人按照您以前的文章配置,但在net.forward就一定会报错。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
OpenCV DNN模块官方教程(二)YoloV4目标检测实例
OpenCV DNN模块官方教程地址如下,可以查看各个对应的使用方法https://docs.opencv.org/4.4.0/d2/d58/tutorial_table_of_content_dnn.html
Color Space
2020/09/23
3.9K0
OpenCV DNN模块官方教程(二)YoloV4目标检测实例
【C++】OpenCV:YOLO目标检测介绍及实现示例
我们都知道,yolo这些深度学习检测算法都是在python下用pytorch或tf框架这些训练的,训练得到的是pt或者weight权重文件,这些是算法开发人员做的事情,如何让算法的检测精度更高、速度更快。
DevFrank
2024/07/24
1.6K0
深度学习:驾驶行为分析
程序功能简介: 使用yolo训练,OpenCV调用、实现打哈欠、手机、抽烟、系安全带,口罩检测。
DS小龙哥
2022/01/17
7920
深度学习:驾驶行为分析
目标检测实战:4种YOLO目标检测的C++和Python两种版本实现
本文作者使用C++编写一套基于OpenCV的YOLO目标检测,包含了经典的YOLOv3,YOLOv4,Yolo-Fastest和YOLObile这4种YOLO目标检测的实现。附代码详解。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
Color Space
2021/05/18
2.3K0
目标检测实战:4种YOLO目标检测的C++和Python两种版本实现
ubuntu16.0.4 opencv4.0.0 yolov3测试
硬件信息 8 Intel® Core™ i7-4790 CPU @ 3.60GHz
用户1148525
2019/05/26
6710
OpenCV4.x的EAST场景文字检测
点击上方蓝字关注我们 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 EAST模型 EAST( An Efficient and Accurate Scene Text Detector)是标题的英文首字母缩写,模型出自旷视科技。相比其他几种场景文字检测模型,表现开挂。在ICDAR 2015数据集上表现优异,见下图: 可以看到红色点标记EAST模型的速度与性能超过之前的模型。EAST模型是一个全卷积神经网络(FCN)它会预测每个像素是否是TEXT或者WORDS,对比之前的一些卷积神经网
OpenCV学堂
2022/08/29
5640
OpenCV4.x的EAST场景文字检测
EAST场景文字检测模型使用
EAST( An Efficient and Accurate Scene Text Detector)是标题的英文首字母缩写,模型出自旷视科技。相比其他几种场景文字检测模型,表现开挂。在ICDAR 2015数据集上表现优异,见下图:
OpenCV学堂
2019/03/07
2.1K0
OpenCV4 | 如何一行代码搞定SSD模型推理与结果解析
最新版本OpenCV4.1.2,针对深度神经网络模块,提供了三个高阶的API,通过它们,自动实现输入图像预处理与后处理,直接输出检测结果,支持图像分类、对象检测、图像分割三种常见的视觉常见任务。相关API如下:
OpenCV学堂
2019/11/11
1.6K0
OpenCV4.4 + YOLOv4 真的可以运行了…..
前一阵子YOLOv4发布了,后面就是YOLOv5,估计再过几天就要YOLOv10086了,这个时代技术进步太魔幻,改几个参数就可以继续升级版本。2020.718 OpenCV4.4发布了,支持YOLOv4推理,于是我立刻测试了一波。
OpenCV学堂
2020/07/24
8.3K2
OpenCV4.4 + YOLOv4 真的可以运行了…..
Yolov5 + Opencv DNN + C++部署
OpenCV由各种不同组件组成。OpenCV源代码主要由OpenCV core(核心库)、opencv_contrib和opencv_extra等子仓库组成。近些年,OpenCV的主仓库增加了深度学习相关的子仓库:OpenVINO(即DLDT, Deep Learning Deployment Toolkit)、open_model_zoo,以及标注工具CVAT等。
AI小怪兽
2023/11/30
2.1K0
OpenCV4.8+YOLOv8对象检测C++推理演示
自从YOLOv5更新成7.0版本,YOLOv8推出以后,OpenCV4.6以前的版本都无法再加载导出ONNX格式模型了,只有OpenCV4.7以上版本才可以支持最新版本YOLOv5与YOLOv8模型的推理部署。首先看一下最新版本的YOLOv5与YOLOv8的输入与输出格式:
OpenCV学堂
2023/09/27
2.3K0
OpenCV4.8+YOLOv8对象检测C++推理演示
YOLOv3使用笔记
Google Cloud Platform (GCP) 深度学习虚拟机 (VM)(推荐!)
小锋学长生活大爆炸
2022/05/09
1.2K0
YOLOv3使用笔记
OpenCV DNN模块教程(四)Mask-RCNN实例分割
本文为OpenCV DNN模块官方教程的扩展,介绍如何使用OpenCV加载TensorFlow Object Detection API训练的模型做实例分割,以Mask-RCNN为例来检测缺陷。TensorFlow Object Detection API的github链接地址如下:https://github.com/tensorflow/models/tree/master/research/object_detection
Color Space
2020/10/29
1.1K0
OpenCV DNN模块教程(四)Mask-RCNN实例分割
源码 | OpenCV DNN + YOLOv7目标检测
点击上方蓝字关注我们 作者:王博,极视角科技算法研究员 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 简单说明 分别使用OpenCV、ONNXRuntime部署YOLOV7目标检测,一共包含12个onnx模型,依然是包含C++和Python两个版本的程序。 编写这套YOLOV7的程序,跟此前编写的YOLOV6的程序,大部分源码是相同的,区别仅仅在于图片预处理的过程不一样。YOLOV7的图片预处理是BGR2RGB+不保持高宽比的resize+除以255 由于onnx文件太多,无法直接上传
OpenCV学堂
2022/07/19
4.1K1
源码 | OpenCV DNN + YOLOv7目标检测
OpenCV DNN模块教程(三)SSD/Faster-RCNN目标检测实例
本文为OpenCV DNN模块官方教程的扩展,介绍如何使用OpenCV加载TensorFlow Object Detection API训练的模型做目标检测,以SSD和Faster-RCNN为例。
Color Space
2020/10/29
1.5K0
OpenCV DNN模块教程(三)SSD/Faster-RCNN目标检测实例
使用OpenVINO ToolKit 实时推断
OpenVINO ToolKit是英特尔发布的一套深度学习推断引擎,支持各种网络框架,官方给出的说明是支持100多种网络训练导出的模型(100多种网络模型,无知限制了我的想象力)官方对这个工具包的主要特点总结如下:
OpenCV学堂
2019/04/29
4.7K2
使用OpenVINO ToolKit 实时推断
OpenCV4中如何使用Mask RCNN网络
Mask-RCNN可以看成是在Faster-RCNN的基础上多出一个分支实现的实例分割网络二值化mask层输出,而且这个分支mask分割网络是全卷积网络,结构显示如下:
OpenCV学堂
2019/07/25
1.6K0
OpenCV4中如何使用Mask RCNN网络
逆天啦!OpenCV4.1.2 CPU上人脸检测居然能跑到700+ FPS
初学OpenCV开发,配置开发环境,大家都一般都是配置为debug模式,其实时间一长就会给大家带来很多困扰,就是发现OpenCV速度比较慢,感觉有点不真实。其实这个时候只要切换到Release模式下,一行代码都不用改,程序重新编译生成一下,速度都会得到明显的提升。这个就是Debug与Release模式的不同。但是我还一直没有尝试过OpenCV DNN模块在Release模式的表现如何,今天我在编译OpenCV4.1.2时候,一时兴起在Debug与Release模式下都测试了一下DNN模块的人脸检测功能,结果我自己惊讶到下巴掉下来了。没想到差距如此之大,详细看下面的对比试验。
OpenCV学堂
2019/11/18
2.4K0
逆天啦!OpenCV4.1.2 CPU上人脸检测居然能跑到700+ FPS
OpenCV+OpenVINO实现人脸Landmarks实时检测
自从OpenCV3.3版本引入深度神经网络(DNN)模块之后,OpenCV对DNN模块支持最好的表现之一就是开始支持基于深度学习人脸检测,OpenCV本身提供了两个模型分别是基于Caffe与Tensorflow的,Caffe版本的模型是半精度16位的,tensorflow版本的模型是8位量化的。同时OpenCV通过与OpenVINO IE模型集成实现了底层硬件对对象检测、图像分割、图像分类等常见模型加速推理支持。OpenVINO框架本身提供直接快速开发应用原型的模型库,对很多常见视觉任务都可以做到快速演示支持。说起人脸的Lankmarks提取,最早的OpenCV跟DLib支持的方式都是基于AAM算法实现的68个人脸特征点的拟合模型,另外OpenCV中支持landmark的人脸检测会先加载一个很大的模型文件,然后速度感人,觉得还有很大的改进空间。好处是OpenCV自己提供了一个训练工具,可以自己训练模型。常见的MTCNN同时实现了人脸检测跟landmarks检测,但是只支持5点检测。而OpenVINO自带的Landmark检测模型基于自定义的卷积神经网络实现,取35个人脸各部位关键点。
OpenCV学堂
2020/04/14
2K0
OpenCV+OpenVINO实现人脸Landmarks实时检测
手把手教你使用yolo进行对象检测
古语云“不进则退,不喜则忧” ,在ai大变革的时代,掌握基本的ai技能是技术人员必备生存之道。本文从对象检测应用出发,一步一步的给出使用yolo进行对象检测的流程。这里主要关注利用已有工具(yolo模型)进行对象检测应用(即模型的推理),不注重原理解析和模型训练。
用户7680342
2020/09/23
2.6K0
相关推荐
OpenCV DNN模块官方教程(二)YoloV4目标检测实例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验