Caffe---Pycaffe转换均值文件:xxx_mean.binaryproto成为xxx_mean.npy
Pycaffe转换均值文件:xxx_mean.binaryproto成为xxx_mean.npy
为什么需要mean.binaryproto转mean.npy?
使用Caffe的C++接口进行操作时,需要的图像均值文件是pb格式,例如常见的均值文件名为mean.binaryproto。但在使用python接口进行操作时,需要的图像均值文件是numpy格式,例如mean.npy。所以在跨语言进行操作时,需要将mean.binaryproto转换成mean.npy。
首先是生成binaryproto的sh文件,这里不介绍。这里提供转mean.npy两个程序,bin_2_npy001.py如下:
#!/usr/bin/env python #binaryproto_2_npy import numpy as np c=np.fromfile("road_mean.binaryproto", dtype=np.float) print c np.save("road_mean.npy", c) b=np.load('road_mean001.npy') print b
bin_2_npy002.py如下:
#!/usr/bin/env python # -*- coding: UTF-8 -*- #mean.binaryproto_2_mean.npy
#import sys #导入Python的sys模块
#sys.path.append("/usr/lib/python2.7/dist-packages")
import caffe # 导入caffe模块 import numpy as np #导入矩阵数值运算程序库 MEAN_PROTO_PATH = 'road_mean.binaryproto' # 待转换的pb格式图像均值文件路径 MEAN_NPY_PATH = 'road_mean002.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)
说明:本文件夹下的bin_2_npy001.py与bin_2_npy002.py都可以生成均值,但是road_mean002.npy在后续程序中好用。原因尚不明确,待思考解决。
参考 https://blog.csdn.net/hyman_yx/article/details/51732656,补充:
已知图像均值,构造mean.npy
如果已知图像中每个通道的均值,例如3通道图像每个通道的均值分别为104,117,123,我们也可以通过其构造mean.npy。代码如下:
import numpy as np
MEAN_NPY_PATH = 'mean.npy'
mean = np.ones([3,256, 256], dtype=np.float)
mean[0,:,:] = 104
mean[1,:,:] = 117
mean[2,:,:] = 123
np.save(MEAN_NPY, mean)
载入mean.npy
上面我们用两种方式构造了均值文件mean.npy,在使用时载入mean.npy的代码如下:
import numpy as np
mean_npy = np.load(MEAN_NPY_PATH)
mean = mean_npy.mean(1).mean(1)
【. . . . . .本博客仅作个人生活、工作、学习等的日常记录。说明: (1) 内容有参考其他博主、网页等,有因“懒”直接粘贴来,会备注出处。若遇雷同,或忘备注,并无故意抄袭之意,请诸“原主”谅解,很感谢您的辛勤"笔记"可供本人参考学习。 (2) 如遇同行,有参考学习者,因个人学识有限,不保证所写内容完全正确。您对本博文有任何的意见或建议,欢迎留言,感谢指正。 (3) 若您认为本主的全博客还不错,可以点击关注,便于互相学习。 (4) 感谢您的阅读,希望对您有一定的帮助。欢迎转载或分享,但请注明出处,谢谢。. . . . . .】
【作者: Carole0904 ; 出处: https://www.cnblogs.com/carle-09/ 】