caffe下用个多模型对图片批量分类

首先,根据网上教程

在caffe根目录下的 examples/cpp_classification/ 文件夹下面,有个classification.cpp文件,就是用来分类的。编译caffe后自动生成,放在/build/examples/cpp_classification/ 下面,接下来要调用classification.bin

问题1:我的服务器上没有自动生成classification.bin,我也并不知道为什么

解决方法:找别人拷一下,亲测能用



直接运行命令:

命令很长,用了很多的\符号来换行。可以看出,从第二行开始就是参数,每行一个,共需要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/cat.jpg

问题2:经常会忘记“\”,而且前面的【空格】也是必不可少的,刚开始不熟悉linux,走了不少弯路

运行成功后,输出top-5结果:


---------- Prediction for examples/images/cat.jpg ----------
0.3134 - "n02123045 tabby, tabby cat"
0.2380 - "n02123159 tiger cat"
0.1235 - "n02124075 Egyptian cat"
0.1003 - "n02119022 red fox, Vulpes vulpes"
0.0715 - "n02127052 lynx, catamount"


前文用到的模型caffenet.caffemodel是从caffe model zoo下载的。

那么问题来了,如果我想套用其他的模型,是不是改一个参数就可以呢?

答案是可以。于是从caffe model zoo又下载了VGG16,Alexnet,googlenet,NIN,别忘了同时下载相应的deploy.prototxt。

问题3:F0306 21:27:18.357961  4487 classification.cpp:82] Check failed: labels_.size() == output_layer->channels() (1000 vs. 20) Number of labels is different from the output layer dimension.

使用的模型必须是输出维度为1000类,否则会显示不匹配


但还是有一个问题,现在只能一张一张的测,如果我们想批量处理,应该怎么办呢?

在caffe的根目录下编写脚本,保存为class.sh文件

for i in 6 7
do
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/$i.jpg
done

在根目录下./class.sh就可以同时处理images文件下的6.jpg和7.jpg。

同理,想同时处理更多的图片,在for i in 后加上图片名就好啦


如果我想再比较一下各个模型处理时间对比呢?

很简单,在代码前后输入系统时间就好啦

DATE=`date`
echo "$DATE"
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
do
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 
\data/brdw/$i.jpg
done
DATE=`date`
echo "$DATE"


模型

时间(s)

caffenet

40

Googlenet

32

Alexnet

40

NIN-imagenet

32

VGG

60


用上文提到的五个模型处理我从百度下载的20张图片所需时间对比
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值