- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
caffe抽取特征例子.
/guoyilin/article/details caffe c++ 抽取图片特征 安装好Caffe后,在examples/images文件夹下有两张示例图像,本文即在这两张图像上,用Caffe提供的预训练模型,进行特征提取,并进行可视化。
1. 进入caffe根目录,创建临时文件夹,用于存放所需要的临时文件
?
?
2. 根据examples/images文件夹中的图片,创建包含图像列表的txt文件,并添加标签(0)
?
?
3. 执行下列脚本,下载imagenet12图像均值文件,在后面的网络结构定义prototxt文件中,需要用到该文件 (data/ilsvrc212/imagenet_mean.binaryproto)
4. 将网络定义prototxt文件复制到_temp文件夹下
?1. 创建 src/youname/ 文件夹, 存放我们自己的脚本
分类: 机器学习 2015-01-19 22:47 1599人阅读 评论(8) 收藏 举报
featurecaffec++
caffe c++批量抽取特征的方法在[1],但是该方法使用中有几个疑问:
1. 如何转换levelDB 格式为libsvm格式。
2. ?./build/tools/extract_features mini-batch 是代表什么意思,和imagenet_totxt中的batch_size的关系是什么?
本文主要解决如上两个问题,具体extract_features源代码还需要进一步分析。
第一个问题,
[plain] view plaincopyprint?
./build/tools/extract_features?models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel?examples/_temp/imagenet_totxt?fc7?examples/_temp/features?10??
其中,10 是mini-batch, 假设imagenet_totxt的batches size是128, 那么程序将抽取128 * 10个图片的特征。如果你有100张图片, 你可以设置mini-batch = 1, batches size = 100.如果你的image个数是1283, 那么如上数值的设置会是的leveldb多出3个无用的feature,这个需要注意, 我测试过好像是会重复之前的图片,具体需要研究源代码。第二个问题, 特征保存的格式为leveldb,如果需要用libsvm的格式访问特征,可以用python 进行转换, 程序如下, 这里感谢bean的程序[1]:
[python] view plaincopyprint?
import?numpy?as?np??
import?caffe??
import?sys??
from?to?import?caffe_pb2??
??
#parse?argument ??
dbName?=?sys.argv[1]??
featureFile?=?sys.argv[2]??
output?=?open(featureFile,?w)??
import numpy as np
import caffe
import sys
from to import caffe_pb2
#parse argument
dbName = sys.argv[1]
featureFile = sys.argv[2]
output = open(featureFile, w)
[python] view plaincopyprint?
#?open?leveldb?files ??
db?=?leveldb.LevelDB(dbName)??
??
#?get?db?iterator ??
it?=?db.RangeIter()??
count?=?0??
for?key,value?in?it:??
????#?convert?string?to?datum ??
??
????datum?=?caffe_pb2.Datum.FromString(db.Get(key))??
??
????#?convert?datum?to?numpy?string ??
??
????arr?=?caffe.io.datum_to_array(datum)[0]??
??
????i?=?0??
????tmpS?=???
??
????#?convert?to?svm?format ??
??
????for?i?in?range(0,?len(arr)):??
????????tmpS?+=?str(i+1)
文档评论(0)