在我们使用Pycaffe的过程中需要有时会碰到需要mean.npy文件的情况,这个npy文件就是训练时候的均值文件mean.binaryproto转化而来的,下面代码使用时基本不需要变动,直接修改相关mean文件的路径以及生成文件的保存路径就可以了,下面就直接上代码:
#coding=utf-8
import caffe
import numpy as np
# 待转换的pb格式图像均值文件路径
MEAN_PROTO_PATH = '/PATH/TO/READ/mean.binaryproto'
# 转换后的numpy格式图像均值文件路径
MEAN_NPY_PATH = '/PATH/TO/SAVE/mean.npy'
# 创建protobuf blob
blob = caffe.proto.caffe_pb2.BlobProto()
# 读入mean.binaryproto文件内容
data = open(MEAN_PROTO_PATH, 'rb' ).read()
# 解析文件内容到blob
blob.ParseFromString(data)
# 将blob中的均值转换成numpy格式,array的shape (mean_number,channel, hight, width)
array = np.array(caffe.io.blobproto_to_array(blob))
# 一个array中可以有多组均值存在,故需要通过下标选择其中一组均值
mean_npy = array[0]
np.save(MEAN_NPY_PATH ,mean_npy)