热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python生成caffebinaryproto文件

使用python生成caffe.binaryproto文件,使用起来比caffe提供的二进制工具灵活一些,可以在生成的时候自由添加一些对数据的处理。python代码:defCo

使用python 生成 caffe .binaryproto文件,使用起来比caffe提供的二进制工具灵活一些,可以在生成的时候自由添加一些对数据的处理。

python 代码:

def ComputeMean(img_file_list,mean_file_write_to):
#resize 尺寸
protosize=(224,224)

#可以限定生成均值图像使用的图像数量
mean_count=20000
images=open(img_file_list.decode('utf-8')).read().strip().split('\n')
totalMean=np.zeros(protosize[0],protosize[1],3)
accedImage=np.zeros(protosize[0],protosize[1],3)
for index,img in enumerate(images):
img_path=img.decode('gbk').split(' ')[0].replace('G:/','/Volumes/xxx/')
print img_path
img_data=cv2.imread(img_path.encode('gbk'))
img_resized=cv2.resize(img_data,protosize,interpolation=cv2.INTER_LINEAR)
cv2.accumulate(img_resized,accedImage)

#累计1000次计算一次均值速度会快一些,如果图像太多汇总起来再计算可能会溢出。
if(index%1000 ==0 and index>0):
accedImage=accedImage/float(mean_count)
cv2.accumulate(accedImage,totalMean)
accedImage=np.zeros(protosize[0],protosize[1],3)
print "processed: "+str(index)
if index==mean_count:
break
accedImage=accedImage/float(mean_count)
cv2.accumulate(accedImage,totalMean)

#均值文件保存成图像便于查看
cv2.imwrite(mean_to_file+"proto.jpg",totalMean)
cv2.imshow("test",totalMean)
cv2.waitKey(1000)

#for RGB image
# totalMean=totalMean.transpose((2, 0, 1))

# 存储为binaryproto
blob = caffe.BlobProto()
blob.channels=3
blob.height = protosize[0]
blob.width = protosize[1]
blob.num=1
blob.data.extend(totalMean.astype(float).flat)
binaryproto_file = open(mean_file_write_to, 'wb' )
binaryproto_file.write(blob.SerializeToString())
binaryproto_file.close()

对于单通道图像生成的方式大同小异,channel改为1即可。


推荐阅读
author-avatar
情若自已_650
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有