mean.binaryproto轉(zhuǎn)mean.npy
使用Caffe的C++接口進(jìn)行操作時(shí),需要的圖像均值文件是pb格式,例如常見(jiàn)的均值文件名為mean.binaryproto;但在使用python接口進(jìn)行操作時(shí),需要的圖像均值文件是numpy格式,例如mean.npy。所以在跨語(yǔ)言進(jìn)行操作時(shí),需要將mean.binaryproto轉(zhuǎn)換成mean.npy,轉(zhuǎn)換代碼如下:
import caffeimport numpy as npMEAN_PROTO_PATH = 'mean.binaryproto' # 待轉(zhuǎn)換的pb格式圖像均值文件路徑MEAN_NPY_PATH = 'mean.npy' # 轉(zhuǎn)換后的numpy格式圖像均值文件路徑blob = caffe.proto.caffe_pb2.BlobProto() # 創(chuàng)建protobuf blobdata = open(MEAN_PROTO_PATH, 'rb' ).read() # 讀入mean.binaryproto文件內(nèi)容blob.ParseFromString(data) # 解析文件內(nèi)容到blobarray = np.array(caffe.io.blobproto_to_array(blob))# 將blob中的均值轉(zhuǎn)換成numpy格式,array的shape (mean_number,channel, hight, width)mean_npy = array[0] # 一個(gè)array中可以有多組均值存在,故需要通過(guò)下標(biāo)選擇其中一組均值np.save(MEAN_NPY_PATH ,mean_npy)
已知圖像均值,構(gòu)造mean.npy
如果已知圖像中每個(gè)通道的均值,例如3通道圖像每個(gè)通道的均值分別為104,117,123,我們也可以通過(guò)其構(gòu)造mean.npy。代碼如下:
import numpy as npMEAN_NPY_PATH = 'mean.npy'mean = np.ones([3,256, 256], dtype=np.float)mean[0,:,:] = 104mean[1,:,:] = 117mean[2,:,:] = 123np.save(MEAN_NPY, mean)
載入mean.npy
上面我們用兩種方式構(gòu)造了均值文件mean.npy,在使用時(shí)載入mean.npy的代碼如下:
import numpy as npmean_npy = np.load(MEAN_NPY_PATH)mean = mean_npy.mean(1).mean(1)
以上這篇Caffe均值文件mean.binaryproto轉(zhuǎn)mean.npy的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林站長(zhǎng)站。
新聞熱點(diǎn)
疑難解答
圖片精選