(一)mean,binaryproto格式的均值文件到mean.npy格式的均值文件的转换
使用Caffe的命令行接口进行操作是,我们经常生成的均值文件是mean,binaryproto格式的均值文件,但是当我们在利用训练好的模型进行分类/检测或者在做CNN各层的可视化的时候,我们通常使用的是Python接口;但在使用Python接口进行操作的时候,均值文件的格式是Numpy的格(mean.npy)。、
因此,我么面临的一个问题是,如何实现:mean,binaryproto格式的均值文件到mean.npy格式的均值文件的转换
我们使用如下的代码进行转换
import sys #[1]导入Python的sys模块
sys.path.append("/usr/lib/python2.7/dist-packages")
import caffe #[2]导入caffe模块
import numpy as np #[3]导入矩阵数值运算程序库
#[4]待转化的均值文件的路径
MEAN_PROTO_PATH = '/wei/home/caffe/examples/myself/myself_cifar10_mean.binaryproto'
#[5]转换后的numpy格式图像均值文件路径
MEAN_NPY_PATH = '/wei/home/caffe/examples/myself/mean.npy'
blob = caffe.proto.caffe_pb2.BlobProto() #[6]创建protobuf blob
data = open(MEAN_PROTO_PATH, 'rb' ).read() #[7]读入mean.binaryproto文件内容
blob.ParseFromString(data) #[8]解析文件内容到blob
array = np.array(caffe.io.blobproto_to_array(blob))#[9]将blob中的均值转换成numpy格式
mean_npy = array[0] #[10]一个array中可以有多组均值存在,故需要通过下标选择其中一组均值
np.save(MEAN_NPY_PATH ,mean_npy)