caffe Python API 之圖片預處理
阿新 • • 發佈:2018-11-06
# 設定圖片的shape格式為網路data層格式 transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape}) # 改變維度的順序,由原始圖片維度(width, height, channel)變為(channel, width, height) transformer.set_transpose('data', (2,0,1)) # 減去均值,注意要先將binaryproto格式均值檔案轉換為npy格式[此步根據訓練model時設定可選] transformer.set_mean('data', np.load(mean_file_path).mean(1).mean(1))# 縮放到[0,255]之間 transformer.set_raw_scale('data', 255) # 交換通道,將圖片由RGB變為BGR transformer.set_channel_swap('data', (2,1,0)) # 載入圖片 im=caffe.io.load_image(img) # 執行上面設定的圖片預處理操作,並將圖片載入到blob中 net.blobs['data'].data[...] = transformer.preprocess('data',im)
這裡注意的是:caffe.io.load_image()讀入的畫素值是[0-1]之間,且通道順序為RGB,而caffe內部的資料格式是BGR,因此需要進行如下操作,若是使用opencv開啟圖片,則無需進行如下操作。
# 縮放到[0,255]之間 transformer.set_raw_scale('data', 255) # 交換通道,將圖片由RGB變為BGR transformer.set_channel_swap('data', (2,1,0))