caffe Python API 之圖片預處理


# 設定圖片的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))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM