使用别人训练好的caffemodel来测试自己的数据集(only c++)

         caffe程序自带有一张小猫图片(caffe/examples/images/cat.jpg), 如果我们想用一个训练好的caffemodel来对这张图片进行分类,那该怎么办呢? 如果不用这张小猫图片,换一张别的图片,又该怎么办呢?如果学会了小猫图片的分类,那么换成其它图片,程序实际上是一样的。作者在此处找了一些斑马(zebra),蚂蚁(ant)等jpg格式数据也进行了测试。

        要进行图片的分类,这个caffemodel是最好不过的了。所以,不管是用c++来进行分类,还是用python接口来分类,我们都应该准备这样三个文件:

1、caffemodel文件。 

  可以直接在浏览器里输入地址下载,也可以运行脚本文件下载。下载地址为:http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel

文件名称为:bvlc_reference_caffenet.caffemodel,文件大小为230M左右,为了代码的统一,将这个caffemodel文件下载到caffe根目录下的 models/bvlc_reference_caffenet/ 文件夹下面。也可以运行脚本文件进行下载:

  sudo ./scripts/download_model_binary.py models/bvlc_reference_caffenet

2、均值文件。

    有了caffemodel文件,就需要对应的均值文件,在测试阶段,需要把测试数据减去均值。这个文件我们用脚本来下载,在caffe根目录下执行:

  sudo sh ./data/ilsvrc12/get_ilsvrc_aux.sh

    执行并下载后,均值文件放在 data/ilsvrc12/ 文件夹里。

3、synset_words.txt文件

    在调用脚本文件下载均值的时候,这个文件也一并下载好了。里面放的是1000个类的名称。

    data/ilsvrc12文件夹中的除get_ilsvrc_aux.sh,新生成了8个文件,见下图:

使用别人训练好的caffemodel来测试自己的数据集(only c++)_第1张图片

    数据准备好了,我们就可以开始分类了,在这里只进行了c++方法进行测试,python方法后续更新

在caffe根目录下的 examples/cpp-classification/ 文件夹下面,有个classification.cpp文件,就是用来分类的。在编译之后,放在/build/examples/cpp_classification/ 下面,详情见下图:

使用别人训练好的caffemodel来测试自己的数据集(only c++)_第2张图片

  我们就直接运行命令:

 sudo ./build/examples/cpp_classification/classification.bin \models/bvlc_reference_caffenet/deploy.prototxt   models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel   data/ilsvrc12/imagenet_mean.binaryproto   data/ilsvrc12/synset_words.txt   examples/images/cat.jpg

命令很长,用了很多的\符号来换行。可以看出,所需文件有deploy.prototxt    caffemodel     mean.binaryproto      synset_word.txt    以及jpg数据

运行成功后,输出结果为:

 
  

即有0.3134的概率为tabby,tabby cat;有0.2380的概率为tiger cat ......

本人在网上找来一推jpg格式数据进行测试(需为synset_word.txt中所拥有的分类),此处以ant,zebra为例进行演示:

   将蚂蚁(ant.jpg),斑马(zebra.jpg)的图像下载好后,置于caffe/examples/images中

使用别人训练好的caffemodel来测试自己的数据集(only c++)_第3张图片   使用别人训练好的caffemodel来测试自己的数据集(only c++)_第4张图片

我们先测试蚂蚁:

 sudo ./build/examples/cpp_classification/classification.bin \models/bvlc_reference_caffenet/deploy.prototxt   models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel   data/ilsvrc12/imagenet_mean.binaryproto   data/ilsvrc12/synset_words.txt   examples/images/ant.jpg
运行成功后,输出结果为:

使用别人训练好的caffemodel来测试自己的数据集(only c++)_第5张图片

即有0.5728的概率为ant,emmet,pismire;有0.4023的概率为black widow,Latrodectus mactans ......

继续进行测试斑马:

 sudo ./build/examples/cpp_classification/classification.bin \models/bvlc_reference_caffenet/deploy.prototxt   models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel   data/ilsvrc12/imagenet_mean.binaryproto   data/ilsvrc12/synset_words.txt   examples/images/zebra.jpg

运行成功后,输出结果为:

使用别人训练好的caffemodel来测试自己的数据集(only c++)_第6张图片

即有0.9983的概率为zebra;有0.0004的概率为park bench.........


                                                                                                                                                                                                            ——————本人深度学习笔记,谢谢参考

你可能感兴趣的:(深度学习)