开始使用OpenCV4.0吧

去年,OpenCV我主要使用了两个版本:opencv-2.4.9和opencv-3.4.2。

换opencv-3.4.2,是为了使用其dnn模块加载深度学习模型,从而能够在C++应用程序中部署网络模型。然而,opencv-3.4.2对TensorFlow模型的支持很不够,一些例子模型可能还可以,而自己训练的模型就不行。

我不得不转向Caffe,然后发现,OpenCV对Caffe模型的支持果然好一些。现在OpenCV已经更新至4.0.1了,就想再试一下加载深度学习模型的情况。

今天重点介绍一下准备工作。

第1步:从OpenCV官网上下载安装包。下载地址为:

https://opencv.org/releases.html

第2步:将压缩包opencv-4.0.1-vc14_vc15.exe解压,比如解压到C:\opencv 4.0.1文件夹中。

第3步:找到之前的测试工程。其实就是官方网站给出的例子,介绍如何加载一个Caffe模型进行图像分类:

https://docs.opencv.org/3.3.0/d5/de7/tutorial_dnn_googlenet.html

第4步:在Visual Studio中配置opencv 4.0.1的环境。并将opencv 4.0.1的动态库opencv_world401d.dll拷贝到程序执行目录下。

第5步:找到测试图片space_shuttle.jpg,一张飞机图片。opencv 4.0.1没有这张测试图片了,你可能需要到opencv 3中去找找。

第6步:准备3个文件。

1.googlenet模型bvlc_googlenet.caffemodel:

http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel

2.描述文件bvlc_googlenet.prototxt:

https://github.com/opencv/opencv_extra/blob/master/testdata/dnn/bvlc_googlenet.prototxt

3.标签文件synset_words.txt

https://github.com/HoldenCaulfieldRye/caffe/blob/master/data/ilsvrc12/synset_words.txt

如果你下载了opencv 3.3,可以直接在下面目录下获得这些文件:

...\samples\data\dnn

这里对第6步补充说明一下,第一个文件,我们都知道是图像分类所需要的深度学习模型,一个CNN模型,是用100万张图片训练的、可以进行1000种分类的模型。而世界上第一个CNN图像分类模型是LeNet,可以在这里详细了解:

http://yann.lecun.com/exdb/lenet/

描述文件描述了深度学习模型的结果,网络每一层的名字、类型、参数等。

标签文件描述了分类结果的含义。比如数字1代表飞机。

第7步:运行测试程序,查看加载模型并分类的结果。如果一切正常,将显示下面的界面:

开始使用OpenCV4.0吧

到此,程序成功加载了Caffe模型,并实现了图像分类。下面就可以测试opencv 4.0.1 dnn对自训练TensorFlow模型的支持情况了。

 

这篇文章20190225首发于公众号。