Caffe SSD的resize過程解析


問題描述
在windows平台上,本地訓練SSD_512得到了對應的權值參數文件,加載模型進行前向測試的時候,發現調用caffe.io.Transformer中的resize處理函數速度太慢,打算用opencv的resize做替換,因此更改了輸入圖片到模型中的預處理過程,使用caffe.io.Transformer進行預處理的過程如下:

import numpy as np 
import sys,os 
# 設置當前的工作環境在caffe下 
caffe_root = '/home/xxx/caffe/' 
# 我們也把caffe/python也添加到當前環境 
sys.path.insert(0, caffe_root + 'python') 
import caffe 
os.chdir(caffe_root)#更換工作目錄

# 設置網絡結構 
net_file=caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt' 
# 添加訓練之后的參數 
caffe_model=caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel' 
# 均值文件 
mean_file=caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy'

# 這里對任何一個程序都是通用的,就是處理圖片 
# 把上面添加的兩個變量都作為參數構造一個Net 
net = caffe.Net(net_file,caffe_model,caffe.TEST) 
# 得到data的形狀,這里的圖片是默認matplotlib底層加載的 
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape}) 
# matplotlib加載的image是像素[0-1],圖片的數據格式[weight,high,channels],RGB 
# caffe加載的圖片需要的是[0-255]像素,數據格式[channels,weight,high],BGR,那么就需要轉換

# channel 放到前面 
transformer.set_transpose('data', (2,0,1)) 
transformer.set_mean('data', np.load(mean_file).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(caffe_root+'examples/images/cat.jpg') 
# 用上面的transformer.preprocess來處理剛剛加載圖片 
net.blobs['data'].data[...] = transformer.preprocess('data',im) 
#注意,網絡開始向前傳播啦 
out = net.forward() 
# 最終的結果: 當前這個圖片的屬於哪個物體的概率(列表表示) 
output_prob = output['prob'][0] 
# 找出最大的那個概率 
print 'predicted class is:', output_prob.argmax() 

  


用opencv2中的resize函數替換之后,檢測的結果很差,最終通過比較兩種resize方式對同一張圖片處理后結果的差異,發現兩種方式存在不同,雖然說差異很小,但是也會嚴重影響檢測結果,原因可能如下:

模型不夠魯棒
caffe中的resize和opencv中的resize的默認插值方式可能不同,這點需要看源碼進行確認
在ubuntu上不存在這個問題,猜想可能是在windows下的caffe不是官方提供的,可能處理方式存在差異
最終,全部采用caffe.io.Transformer的方式進行圖片的預處理,檢測結果恢復正常。

此外,測試了opencv2和opencv3,發現用opencv2處理圖片,檢測的效果更好,原因未知!
---------------------
作者:tsq292978891
來源:CSDN
原文:https://blog.csdn.net/tsq292978891/article/details/78918413
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

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



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