一、OpenCV的DNN模块
OpenCV官方从3.3版本开始将改进后的DNN模块从opencv_contrib仓库移入主仓库并正式发布。从4.1.0版本开始支持CUDA加速,DNN模块与NVIDIA GPU、CUDA和cuDNN结合使用,可使推理速度提高2~15倍。
目前,DNN模块支持的深度学习框架包括Caffe、TensorFlow、Torch、PyTorch和Darknet,另外,还支持开放神经网络交换(ONNX)格式的模型。虽然我们不能用OpenCV训练深度学习模型,但DNN模块使我们能够在OpenCV脚本中直接有效地使用训练好的模型,对于暂时不支持的层,也提供了自定义层的功能。
从OpenCV 3.3版本开始,DNN模块正式加入发布版本,其API兼容C++和Python。除了libprotobuf,该模块没有任何其他依赖项,而libprotobuf现在也已经被包含进OpenCV中。DNN模块的使用方式相对简单:从硬盘加载模型,预处理输入图像,通过网络传递图像并获得输出结果。
二、支持的层类型
AbsVal、Accum、AveragePooling、BatchNormalization、BNLL、Concatenation、Convolution(1d, 2d, including dilated convolution,