生成均值文件
current_path=`cd $(dirname $0) ; pwd`
EXAMPLE=$current_path/lmdb #lmdb所在路径
DATA=$current_path/mean #要放均值文件的路径
TOOLS=caffe根目录/build/tools
$TOOLS/compute_image_mean $EXAMPLE/train_lmdb $DATA/mean_train.binaryproto
$TOOLS/compute_image_mean $EXAMPLE/val_lmdb $DATA/mean_val.binaryproto
echo "Done."
protobinary转npy
#!/usr/bin/env python
# encoding=utf8
import caffe
import numpy as np
MEAN_PROTO_PATH = 'XXX/caffe_mean_Train.binaryproto'
# 待转换的pb格式图像均值文件路径
MEAN_NPY_PATH = 'XXX/caffe_mean_Train.npy'
# 转换后的numpy格式图像均值文件路径
blob = caffe.proto.caffe_pb2.BlobProto() # 创建protobuf blob
data = open(MEAN_PROTO_PATH, 'rb' ).read() # 读入mean.binaryproto文件内容
blob.ParseFromString(data) # 解析文件内容到blob
array = np.array(caffe.io.blobproto_to_array(blob))# 将blob中的均值转换成numpy格式,array的shape (mean_number,channel, hight, width)
mean_npy = array[0] # 一个array中可以有多组均值存在,故需要通过下标选择其中一组均值
np.save(MEAN_NPY_PATH ,mean_npy)