根据caffe官网上的教程进行了一次模拟的特征抽取,数据集只有caffe-master_github/images/文件下的三张图片。
1.在caffe根目录下运行命令:
python scripts/download_model_binary.py models/bvlc_reference_caffenet
成功会显示:
2.创建临时文件夹,用于存放所需要的临时文件
mkdir examples/_temp
3.根据examples/images文件夹中的图片,创建包含图像列表的txt文件
find `pwd`/examples/images -type f -exec echo {} \; > examples/_temp/temp.txt
4.在生成的txt文件中图像列表后添加标签0
sed "s/$/ 0/" examples/_temp/temp.txt > examples/_temp/file_list.txt
5.下载ILSVRC数据集的均值文件
./data/ilsvrc12/get_ilsvrc_aux.sh
下载成功后应该看到的结果差不多是:
6.将网络文件复制到_temp文件夹中
cp examples/feature_extraction/imagenet_val.prototxt examples/_temp
7.执行命令
./build/tools/extract_features.bin models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel examples/_temp/imagenet_val.prototxt fc7 examples/_temp/features 10 leveldb
说明:抽取的是网络中fc7层计算后的特征,当然也可以选择其他的层进行特征抽取。所有的特征在/examples/_temp/features/文件夹中。
特征抽取成功后应该是:
注意
1. 不要提取softmax最后一层的特征(如Caffenet的fc8)
2. batch_size*num_mini_batch应该等于提取特征的样本总数
错误日志:
[1]执行Python脚本时,遇到错误:
Traceback (most recent call last):
File "scripts/download_model_binary.py", line 73, in <module>
frontmatter['caffemodel_url'], model_filename, reporthook)
File "/usr/lib/python2.7/urllib.py", line 94, in urlretrieve
return _urlopener.retrieve(url, filename, reporthook, data)
File "/usr/lib/python2.7/urllib.py", line 244, in retrieve
tfp = open(filename, 'wb')
IOError: [Errno 13] Permission denied: 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'
很奇怪的问题,重新复制一份caffe-master_github再执行脚本就没问题,不知道怎么回事。
[2]下载图像均值文件时遇到错误:
./data/ilsvrc12/get_ilsvrc_aux.sh: command not found
这是get_ilsvrc_aux.sh
没有执行权限而已,解决办法为运行命令:
chmod +x get_ilsvrc_aux.sh
将get_ilsvrc_aux.sh
变为可执行文件。
参考文献:
[1].http://caffe.berkeleyvision.org/gathered/examples/feature_extraction.html
[2].http://www.cnblogs.com/platero/p/3967208.html