caffe抽取特征例子

上传人:xiao****1972 文档编号:84144462 上传时间:2019-03-02 格式:DOC 页数:6 大小:61.50KB
返回 下载 相关 举报
caffe抽取特征例子_第1页
第1页 / 共6页
caffe抽取特征例子_第2页
第2页 / 共6页
caffe抽取特征例子_第3页
第3页 / 共6页
caffe抽取特征例子_第4页
第4页 / 共6页
caffe抽取特征例子_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《caffe抽取特征例子》由会员分享,可在线阅读,更多相关《caffe抽取特征例子(6页珍藏版)》请在金锄头文库上搜索。

1、http:/ caffe c+ 抽取图片特征 http:/ 本文作者参考这个例子,抽取自己数据特征数据模型与准备安装好Caffe后,在examples/images文件夹下有两张示例图像,本文即在这两张图像上,用Caffe提供的预训练模型,进行特征提取,并进行可视化。1. 进入caffe根目录,创建临时文件夹,用于存放所需要的临时文件mkdir examples/_temp2. 根据examples/images文件夹中的图片,创建包含图像列表的txt文件,并添加标签(0)find pwd/examples/images -type f -exec echo ; examples/_temp/

2、temp.txtsed s/$/ 0/ examples/_temp/temp.txt examples/_temp/file_list.txt3. 执行下列脚本,下载imagenet12图像均值文件,在后面的网络结构定义prototxt文件中,需要用到该文件 (data/ilsvrc212/imagenet_mean.binaryproto)data/ilsvrc12/get_ilsvrc_aux.sh4. 将网络定义prototxt文件复制到_temp文件夹下cp examples/feature_extraction/imagenet_val.prototxt examples/_tem

3、p提取特征1. 创建 src/youname/ 文件夹, 存放我们自己的脚本mkdir src/yournamecaffe c+ 抽取图片特征 分类: 机器学习 2015-01-19 22:47 1599人阅读 评论(8) 收藏 举报 featurecaffec+caffe c+批量抽取特征的方法在1,但是该方法使用中有几个疑问:1. 如何转换levelDB 格式为libsvm格式。2. ./build/tools/extract_features mini-batch 是代表什么意思,和imagenet_val.prototxt中的batch_size的关系是什么?本文主要解决如上两个问题,

4、具体extract_features源代码还需要进一步分析。第一个问题,plain view plaincopyprint?1. ./build/tools/extract_featuresmodels/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodelexamples/_temp/imagenet_val.prototxtfc7examples/_temp/features10./build/tools/extract_features models/bvlc_reference_caffenet/bvlc_reference

5、_caffenet.caffemodel examples/_temp/imagenet_val.prototxt fc7 examples/_temp/features 10其中,10 是mini-batch, 假设imagenet_val.prototxt的batches size是128, 那么程序将抽取128 * 10个图片的特征。如果你有100张图片, 你可以设置mini-batch = 1, batches size = 100.如果你的image个数是1283, 那么如上数值的设置会是的leveldb多出3个无用的feature,这个需要注意, 我测试过好像是会重复之前的图片,具

6、体需要研究源代码。第二个问题, 特征保存的格式为leveldb,如果需要用libsvm的格式访问特征,可以用python 进行转换, 程序如下, 这里感谢bean的程序1: python view plaincopyprint?1. importnumpyasnp2. importcaffe3. importsys4. fromcaffe.protoimportcaffe_pb25. 6. #parseargument 7. dbName=sys.argv18. featureFile=sys.argv29. output=open(featureFile,w)import numpy as

7、npimport caffeimport sysfrom caffe.proto import caffe_pb2#parse argumentdbName = sys.argv1featureFile = sys.argv2output = open(featureFile, w)python view plaincopyprint?1. #openleveldbfiles 2. db=leveldb.LevelDB(dbName)3. 4. #getdbiterator 5. it=db.RangeIter()6. count=07. forkey,valueinit:8. #conver

8、tstringtodatum 9. 10. datum=caffe_pb2.Datum.FromString(db.Get(key)11. 12. #convertdatumtonumpystring 13. 14. arr=caffe.io.datum_to_array(datum)015. 16. i=017. tmpS=18. 19. #converttosvmformat 20. 21. foriinrange(0,len(arr):22. tmpS+=str(i+1)+:+str(arri.tolist()0)+23. #printtmpS 24. output.write(tmpS

9、.strip()+n)25. count+=126. printcount27. output.close()# open leveldb filesdb = leveldb.LevelDB(dbName)# get db iteratorit = db.RangeIter()count = 0for 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_ar

10、ray(datum)0 i = 0 tmpS = # convert to svm format for i in range(0, len(arr): tmpS += str(i+1) + : + str(arri.tolist()0) + #print tmpS output.write(tmpS.strip() + n) count+=1 print countoutput.close()但是这个程序有个巨大的bug,db.RangeIter()返回的key 顺序是按照 字母 进行排序的,和levelDB的排序方式是不一样的。具体参见3:The problem is most likel

11、y caused by re-ordering of training/test examples since thedb.RangeIter()iterates over keys in alphabetical order whileextract_featurescreates keys from index values without leading zeros (unlikeconvert_imageset). Hence, you get an order like0, 1, 10, 100, .Parse the key value in python and put the

12、extracted feature vector at that position.在这里,我们也只能说fuck了。修改后代码如下 : python view plaincopyprint?1. #getdbiterator 2. it=db.RangeIter()3. features=4. forkey,valueinit:5. #convertstringtodatum 6. datum=caffe_pb2.Datum.FromString(value)7. #convertdatumtonumpystring 8. arr=caffe.io.datum_to_array(datum)0

13、9. featuresint(key)=arr10. 11. #writetofile,sincethekeyinitissortedbyalpha_numberdefault,whileleveldbissortedbynumber,wemustsortthekeyagain. 12. sort_features=collections.OrderedDict(sorted(features.items()13. fork,arrinsort_features.iteritems():14. if(kimageCount-1):15. break16. line=17. foriinrange(0,len(arr):18. line+=str(i+1)+:+str(arri.tolist()0)+19. output.write(line.strip()+n)20. output.close()# get db iteratorit = db.RangeIter()features = for key,value in it: # convert string to datum datum = caffe_pb2.Datum.FromS

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号