目录
DNN模型是什么?
在OpenCV中,DNN模型是一个深度学习模块,它提供了推理功能,但不涉及模型的训练。它支持多种深度学习框架,如TensorFlow、Caffe、Torch和Darknet。DNN模型只实现推理功能,代码量和编译运行开销远小于其他深度学习模型框架。该模型具有内建的CPU和GPU加速功能,无需依赖第三方库。DNN模块支持多种网络模型格式,用户无需额外的进行网络模型的转换就可以直接使用,涵盖了常用的目标分类、目标检测和图像分割的类别。
DNN的基本结构
从DNN按不同层的位置划分,DNN内部的神经网络层可以分为三类,输入层,隐藏层和输出层,如下图示例,一般来说第一层是输入层,最后一层是输出层,而中间的层数都是隐藏层。
层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。虽然DNN看起来很复杂,但是从小的局部模型来说,还是和感知机一样,即一个线性关系z=∑wixi+bz=∑wixi+b加上一个激活函数σ(z)σ(z)。
DNN模型的特点
- 轻量: OpenCV的深度学习模块只实现了模型推理功能,不涉及模型训练,这使得相关程序非常精简,加速了安装和编译过程。
- 外部依赖性低:重新实现一遍深度学习框架使得DNN模块对外部依赖性极低,极大地方便了深度学习应用的部署。
- 方便:在原有OpenCV开发程序的基础上,通过DNN模块可以非常方便地加入对神经网络推理的支持。
- 集成:若网络模型来自多个框架,如一个来自TensorFlow)另外一个来自Caffe,则刚DNN模块可以方便地对网络进行整合。。
- 通用性:DNN模块提供了统一的接口来操作网络模型,内部做的优化和加速适用于所有网络模型格式,支持多种设备和操作系统。