Caffe均值文件binaryproto转npy

原文:

http://blog.csdn.net/langb2014/article/details/52995968

http://blog.csdn.net/may0324/article/details/52316967

之前做过点项目,整理一下小细节。

mean.binaryproto转mean.npy

首先是生成binaryproto的sh文件

  1. #!/usr/bin/env sh  
  2. # Compute the mean image from the imagenet training lmdb  
  3. # N.B. this is available in data/ilsvrc12  
  4. EXAMPLE=.  
  5. DATA=/data/model_train/trainSet  
  6. TOOLS=/data/cuda+digits3.0+cudnnv5+opencv/caffe-master/build/tools  
  7.   
  8. $TOOLS/compute_image_mean $EXAMPLE/train_lmdb \  
  9.   $EXAMPLE/train_lmdb/trainset_mean.binaryproto  
  10.   
  11. $TOOLS/compute_image_mean $EXAMPLE/test_lmdb \  
  12.   $EXAMPLE/test_lmdb/testset_mean.binaryproto  
  13.   
  14. echo "Done."  
然后调用python脚本转换为npy数据
  1. #!/usr/bin/env python  
  2. #coding=gbk  
  3. import numpy as np  
  4. import os  
  5. import sys  
  6. import argparse  
  7. import glob  
  8. import time,datetime  
  9. import scipy.io as scio  
  10.   
  11. caffe_root = '/data/cuda+digits3.0+cudnnv5+opencv/caffe-master/' #caffe-master            
  12. import sys  
  13. pycaffe_dir=sys.path.insert(0, caffe_root + 'python')  
  14. import caffe  
  15. caffe.set_mode_gpu();  
  16.   
  17. if len(sys.argv)!=3:  
  18.     print "Usage: python convert_mean.py mean.binaryproto mean.npy"  
  19.     sys.exit()  
  20.   
  21. blob = caffe.proto.caffe_pb2.BlobProto()  
  22. bin_mean = open( sys.argv[1] , 'rb' ).read()  
  23. blob.ParseFromString(bin_mean)  
  24. arr = np.array( caffe.io.blobproto_to_array(blob) )  
  25. npy_mean = arr[0]  
  26. np.save( sys.argv[2] , npy_mean )  

在终端使用方法

  1. python convert_mean.py mean.binaryproto mean.npy 

其他方法

binaryproto -> npy

import numpy as np
import caffe
import sys

blob = caffe.proto.caffe_pb2.BlobProto()
data = open( 'mean.binaryproto' , 'rb' ).read()
blob.ParseFromString(data)
arr = np.array( caffe.io.blobproto_to_array(blob) )
out = arr[0]
np.save( 'mean.npy' , out )


npy -> binaryproto
data_mean is 1*H*W

import numpy as np
import caffe
import sys

blob = caffe.proto.caffe_pb2.BlobProto()
with open('mean.npy','rb') as f:
     data_mean = numpy.load(f)
blob.channels=1
blob.height = data_mean.shape[0]
blob.width = data_mean.shape[1]
blob.data.extend(data_mean.astype(float).flat)
binaryproto_file = open('mean.binaryproto', 'wb' ) 
binaryproto_file.write(blob.SerializeToString())
binaryproto_file.close()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值