如何利用caffe自带的工具包绘制accuracy/loss曲线
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个文件,见下图:
数据准备好了,我们就可以开始分类了,在这里只进行了c++方法进行测试,python方法后续更新
在caffe根目录下的 examples/cpp-classification/ 文件夹下面,有个classification.cpp文件,就是用来分类的。在编译之后,放在/build/examples/cpp_classification/ 下面,详情见下图:
我们就直接运行命令:
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中
我们先测试蚂蚁:
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
即有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
运行成功后,输出结果为:
即有0.9983的概率为zebra;有0.0004的概率为park bench.........
——————本人深度学习笔记,谢谢参考