简介

随着计算机视觉的流行,opencv 也专门开发了 dnn 模块来实现 深度神经网络相关 的功能

虽然 opencv 无法训练模型,但它支持 载入其他 深度学习框架训练好的模型,并使用该模型进行预测 inference;

而且 opencv 在载入模型时会使用 dnn 模块对模型进行重写,使得模型运行效率更高;  【怎么重写的,为什么效率高,后续研究】

故如果想在 opencv 中融入深度学习模型,可以先使用 深度学习框架 训练好模型,再使用 dnn 模块载入

 

完整教程参见 https://github.com/opencv/opencv/wiki/Deep-Learning-in-OpenCV

 

应用范围 

支持算法领域:图像识别、目标检测、图像分割

支持的深度学习框架:tensorflow、pytorch、caffe、DLDT、Darknet,

同时还支持 自定义层解析、非极大值抑制、获取各层信息 等操作;

 

不同框架对应的 API、文件类型不同,具体 API 介绍

 

API 介绍

dnn.readNet

一个通用的 API,作用是 从支持的 深度学习框架 中 加载 深度学习网络和模型权重

def readNet(model, config=None, framework=None)

model:模型训练好的参数 文件,支持格式有 *.caffemodel--Caffe、*.pb--TensorFlow、*.t7 或 *.net--Torch、 *.weights--Darknet、*.bin--DLDT.

config:包含网络结构或者叫网络配置的文本文件,支持的格式有:*.prototxt--Caffe、*.pbtxt--TensorFlow、*.cfg --arknet、*.xml--DLDT.

framework:指定 深度学习框架,如 tensorflow,

该函数自动检测训练模型所采用的深度学习框架,然后调用 readNetFromCaffereadNetFromTensorflowreadNetFromTorch 或 readNetFromDarknet 中的某个函数.

cv2.dnn.readNetFromCaffe(model, config)
cv2.dnn.readNetFromTensorflow(model, config)
cv2.dnn.readNetFromTorch(model, config)
cv2.dnn.readNetFromDarknet(model, config)

参数同上

 

dnn.blobFromImage

dnn.blobFromImages

 

案例-图像识别

...

案例-目标检测

...

 

 

 

参考资料:

https://zhuanlan.zhihu.com/p/111508792  知乎   哈尔滨工业大学 计算机科学与技术硕士

https://zhuanlan.zhihu.com/p/140012286  知乎   计算机视觉/搬砖        【实例较多,但没有资源链接】

https://cloud.tencent.com/developer/article/1419634  干货 | tensorflow模型导出与OpenCV DNN中使用

https://www.aiuai.cn/aifarm941.html  OpenCV4.X - DNN模块 Python APIs

 

https://blog.csdn.net/xingchenbingbuyu/article/details/107145917    李飞飞  图像风格迁移 

https://zhuanlan.zhihu.com/p/88745033    googlenet 识别一张图 blobFromImage 和多张图 blobFromImages,唐宇迪视频代码 

 

https://blog.csdn.net/qq_43019451/article/details/105894552    opencv-python dnn模块使用CUDA加速

 

https://cloud.tencent.com/developer/article/1610535    C++,用法讲的比较详细

https://blog.csdn.net/stq054188/article/details/108697929    C++ yolov4

http://www.360doc.com/content/21/0128/20/68330161_959454821.shtml    C++   mask rcnn 缺陷检测

 

https://opencv.org/releases/