作者:情若自已_650 | 来源:互联网 | 2023-09-24 17:14
使用python生成caffe.binaryproto文件,使用起来比caffe提供的二进制工具灵活一些,可以在生成的时候自由添加一些对数据的处理。python代码:defCo
使用python 生成 caffe .binaryproto文件,使用起来比caffe提供的二进制工具灵活一些,可以在生成的时候自由添加一些对数据的处理。
python 代码:
def ComputeMean(img_file_list,mean_file_write_to):
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)
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)
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即可。