在caffe中,如果使用的是c++接口,均值文件默認為.binaryproto格式,而如果使用的是python接口,均值文件默認的是numpy的.npy格式,在工作中有時需要將兩者進行互相轉換,具體方式如下:
binaryproto -> npy
1
2
3
4
5
6
7
8
9
10
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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() |
以上這篇caffe binaryproto 與 npy相互轉換的實例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/may0324/article/details/52316967