本文主要是介绍OpenCV4.0 DNN-googleNet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
OpenCV4.0 DNN-googleNet
OpenCV 4.0最近发布,其中一大亮点便是加入DNN;之前的文章中介绍了OpenCV 4.0的编译,本系列就通过GoogleNet的demo来窥探OpenCV 4.0的DNN。
核心函数介绍
首先需要准备GoogleNet的prototxt,caffemodel,和synset_words.txt;这个在网上很容易下载到。然后就是需要一张RGB或者BGR的测试图片,本文使用的是官方提供的经典图片space_shuttle.jpg。
我们使用的函数非常简单,主要涉及函数有以下几个:
- readNetFromCaffe
- blobFromImage
- setInput
- forward
blobFormImage
函数原型
Mat cv::dnn::blobFromImage(InputArray image,double scalefactor = 1.0,const Size & size = Size(),const Scalar & mean = Scalar(),bool swapRB = false,bool crop = false,int ddepth = CV_32F )
以上是官方给出的函数原型。
- image:输入图像
- scalefactor: multiplier for image values.
- size:指的不是输入图像的尺寸,是指所需要的尺寸,也就是返回的Mat中数据的尺寸。
- swapRB:是否交换R和B分量,这在之前的色彩空间转换的文章中介绍过
- crop:输入图像大小与size不符的时候,是否需要裁剪
- ddepth:图像的数据类型,目前仅支持32F和8U
以上的参数都很好理解,接下来是关于mean参数,如果之前没有深入研究过深度学习,这个还是不太好理解的。首先给出mean的数值:(104 117 123);数字从什么地方来的呢?这个是在googleNet训练的时候设定的,节选部分train_val.prototxt,可以看到在训练的时候transform_param中设置了mean。
name: "GoogleNet"
layer {name: "data"type: "Data"top: "data"top: "label"include {phase: TRAIN}transform_param {mirror: truecrop_size: 224mean_value: 104mean_value: 117mean_value: 123}data_param {
这篇关于OpenCV4.0 DNN-googleNet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!