sudo python convert_mean.py mean.binaryproto mean.npy
一.二进制的均值计算
caffe中使用的均值数据格式是binaryproto, caffe为我们提供了一个计算均值的文件compute_image_mean.cpp, 在caffe目录下的build/tool文件中
sudo build/tools/compute_image_mean examples/mnist/mnist_train_lmdb examples/mnist/mean.binaryproto
第一个参数:examples/mnist/mnist_train_lmdb, 表示需要计算均值的数据,格式为lmdb的训练数据
第二个参数:examples/mnist/mean.binaryproto, 计算出来的结果保存文件。
二. python格式的均值计算
由python脚本实现
1 #!/usr/bin/env python
2 import numpy as np
3 import sys,caffe
4
5 if len(sys.argv)!=3:
6 print "Usage: python convert_mean.py mean.binaryproto mean.npy"
7 sys.exit()
8
9 blob = caffe.proto.caffe_pb2.BlobProto()
10 bin_mean = open( sys.argv[1] , 'rb' ).read()
11 blob.ParseFromString(bin_mean)
12 arr = np.array( caffe.io.blobproto_to_array(blob) )
13 npy_mean = arr[0]
14 np.save( sys.argv[2] , npy_mean )
将这个脚本保存为convert_mean.py,调用
python convert_mean.py mean.binaryproto mean.npy
convert_mean.py 上述脚本文件
mean.binaryproto 上述的二进制文件
mean.npy 为保存的python格式的均值文件
自己使用过的一个脚本
1 #!usr/bin/env python
2 import PIL
3 import image
4 import sys
5 import time
6 import os
7 import numpy as np
8 from matplotlib import pyplot as plt
9
10 start = time.time()
11
12 # Make sure that caffe is on the python path
13 caffe_root = '/home/caffe/'
14 sys.path.insert(0, caffe_root + 'python')
15
16 import caffe
17 # "source" is the binary file converted by the command shell
18 # "des" is the binary file with python format converted from "source"
19 source = caffe_root + 'examples/mnist/mean.binaryproto'
20 des = caffe_root + 'examples/mnist/mean_1.npy'
21
22 # BlobProto object
23 blob = caffe.proto.caffe_pb2.BlobProto()
24 data = open( source , 'rb' ).read()
25 # parsing source data
26 blob.ParseFromString(data)
27 # convert to npy format
28 arr = np.array( caffe.io.blobproto_to_array(blob) )
29 out = arr[0]
30 # save the converted result
31 np.save( des , out )
~
注:
sudo pip install image
权限不够,获取root权限
在进入python编辑模式时import caffe并没有报错,运行脚本文件时却提示我没有 module caffe
sudo python convert_mean.py mean.binaryproto mean.npy
将sudo 去掉后可以运行本章主要参考http://www.cnblogs.com/denny402/p/5102328.html