R-CNN(Rich feature hierarchies for accurate object detection and semantic segmentation)论文理解...
論文地址:https://arxiv.org/pdf/1311.2524.pdf
翻譯請移步:
https://www.cnblogs.com/xiaotongtt/p/6691103.html
https://blog.csdn.net/v1_vivian/article/details/78599229
?
背景:
1、近10年以來,以人工經驗特征為主導的物體檢測任務mAP【物體類別和位置的平均精度】提升緩慢;
2、隨著ReLu激勵函數、dropout正則化手段和大規模圖像樣本集ILSVRC的出現,在2012年ImageNet大規模視覺識別挑戰賽中,Hinton及他的學生采用CNN特征獲得了最高的圖像識別精確度;
3、上述比賽后,引發了一股“是否可以采用CNN特征來提高當前一直停滯不前的物體檢測準確率“的熱潮。
4、目標檢測(mAP) = 目標識別(accuracy)+定位(IOU):
mAP指標請移步:https://blog.csdn.net/katherine_hsr/article/details/79266880
5、傳統目標檢測流程:
區域選擇(窮舉策略:采用滑動窗口,且設置不同的大小,不同的長寬比對圖像進行遍歷,時間復雜度高)
特征提取(SIFT、HOG等;形態多樣性、光照變化多樣性、背景多樣性使得特征魯棒性差)
分類器(主要有SVM、Adaboost等)
6、傳統目標檢測的主要問題:
基于滑動窗口的區域選擇策略沒有針對性,時間復雜度高,窗口冗余
手工設計的特征對于多樣性的變化沒有很好的魯棒性
?
R-CNN算法流程:
測試過程:
1、輸入一張多目標圖像,采用selective search算法提取約2000個建議框;
候選區域生成(Selective Search)
step0:圖片采用一定過分割方法生成區域集R
step1:計算區域集R里每個相鄰區域的相似度(顏色、紋理、尺寸和空間交疊)S={s1,s2,…}?
step2:找出相似度最高的兩個區域,將其合并為新集,添加進R?
step3:從S中移除所有與step2中有關的子集?
step4:計算新集與所有子集的相似度?
step5:跳至step2,直至S為空
Selective Search進一步詳解請移步:https://blog.csdn.net/ibunny/article/details/79396754
2、先在每個建議框周圍加上16個像素值為建議框像素平均值的邊框,再直接變形為227×227的大小;
為什么要將建議框變形為227×227?怎么做?
本文采用AlexNet CNN網絡進行CNN特征提取,為了適應AlexNet網絡的輸入圖像大小:227×227,故將所有建議框變形為227×227。
那么問題來了,如何進行變形操作呢?作者在補充材料中給出了四種變形方式:
① 考慮context【圖像中context指RoI周邊像素】的各向同性變形,建議框像周圍像素擴充到227×227,若遇到圖像邊界則用建議框像素均值填充,下圖第二列;?
② 不考慮context的各向同性變形,直接用建議框像素均值填充至227×227,下圖第三列;?
③ 各向異性變形,簡單粗暴對圖像就行縮放至227×227,下圖第四列;?
④ 變形前先進行邊界像素填充【padding】處理,即向外擴展建議框邊界,以上三種方法中分別采用padding=0下圖第一行,padding=16下圖第二行進行處理;
經過作者一系列實驗表明采用padding=16的各向異性變形即下圖第二行第三列效果最好,能使mAP提升3-5%。
3、先將所有建議框像素減去該建議框像素平均值后【預處理操作】,再依次將每個227×227的建議框輸入AlexNet CNN網絡獲取4096維的特征【比以前的人工經驗特征低兩個數量級】,2000個建議框的CNN特征組合成2000×4096維矩陣;
4、將2000×4096維特征與20個SVM組成的權值矩陣4096×20相乘【20種分類,SVM是二分類器,則有20個SVM】,獲得2000×20維矩陣表示每個建議框是某個物體類別的得分;
5、分別對上述2000×20維矩陣中每一列即每一類進行非極大值抑制剔除重疊建議框,得到該列即該類中得分最高的一些建議框;
非極大值抑制NMS(Non Maximum Suppression)
目的:為了保留一個最優窗
6、分別用20個回歸器對上述20個類別中剩余的建議框進行回歸操作,最終得到每個類別的修正后的得分最高的bounding box。
為什么要采用回歸器?回歸器是什么有什么用?如何進行操作?
首先要明確目標檢測不僅是要對目標進行識別,還要完成定位任務,所以最終獲得的bounding-box也決定了目標檢測的精度。
這里先解釋一下什么叫定位精度:定位精度可以用算法得出的物體檢測框與實際標注的物體邊界框的IoU值來近似表示。
如下圖所示,綠色框為實際標準的卡宴車輛框,即Ground Truth;黃色框為selective search算法得出的建議框,即Region Proposal。即使黃色框中物體被分類器識別為卡宴車輛,但是由于綠色框和黃色框IoU值并不大,所以最后的目標檢測精度并不高。采用回歸器是為了對建議框進行校正,使得校正后的Region Proposal與selective search更接近, 以提高最終的檢測精度。論文中采用bounding-box回歸使mAP提高了3~4%。?
?
訓練過程:
1、有監督預訓練
使用ILSVRC樣本集(ImageNet挑戰賽數據集),僅用圖像類別標簽,沒有圖像物體位置標注;?
采用AlexNet CNN網絡進行有監督預訓練,學習率=0.01;?
該網絡輸入為227×227的ILSVRC訓練集圖像,輸出最后一層為4096維特征->1000類的映射,訓練的是網絡參數。
2、特定樣本下的微調
PASCAL VOC 2007樣本集上既有圖像中物體類別標簽,也有圖像中物體位置標簽;
采用訓練好的AlexNet CNN網絡進行PASCAL VOC 2007樣本集下的微調,fine-tune的Loss仍采用AlexNet網絡的softmax的loss,該網絡輸入為建議框【由selective search而來】變形后的227×227的圖像,將最后一個全連接層的輸出(分類數)從1000改為21維【20類+背景】輸出,然后這一層直接采用參數隨機初始化的方法,其它網絡層的參數不變(SGD,學習率0.001【0.01/10為了在學習新東西時不至于忘記之前的記憶】),mini-batch為32個正樣本和96個負樣本【由于正樣本太少】;
3、SVM訓練
?
由于SVM是二分類器,需要為每個類別訓練單獨的SVM;
SVM訓練時輸入正負樣本在AlexNet CNN網絡計算下的4096維特征,輸出為該類的得分,訓練的是SVM權重向量;
由于負樣本太多,采用hard negative mining的方法在負樣本中選取有代表性的負樣本。
4、Bounding-box regression訓練
?
測試和訓練更多細節詳見:
https://blog.csdn.net/WoPawn/article/details/52133338
https://blog.csdn.net/ibunny/article/details/79396754
?
還存在什么問題
1、很明顯,最大的缺點是對一張圖片的處理速度慢,這是由于一張圖片中由selective search算法得出的約2k個建議框都需要經過變形處理后由CNN前向網絡計算一次特征,這其中涵蓋了對一張圖片中多個重復區域的重復計算,很累贅;
2、知乎上有人說R-CNN網絡需要兩次CNN前向計算,第一次得到建議框特征給SVM分類識別,第二次對非極大值抑制后的建議框再次進行CNN前向計算獲得Pool5特征,以便對建議框進行回歸得到更精確的bounding-box,這里文中并沒有說是怎么做的,博主認為也可能在計算2k個建議框的CNN特征時,在硬盤上保留了2k個建議框的Pool5特征,雖然這樣做只需要一次CNN前向網絡運算,但是耗費大量磁盤空間;
3、訓練時間長,雖然文中沒有明確指出具體訓練時間,但由于采用RoI-centric sampling【從所有圖片的所有建議框中均勻取樣】進行訓練,那么每次都需要計算不同圖片中不同建議框CNN特征,無法共享同一張圖的CNN特征,訓練速度很慢;
4、整個測試過程很復雜,要先提取建議框,之后提取每個建議框CNN特征,再用SVM分類,做非極大值抑制,最后做bounding-box回歸才能得到圖片中物體的種類以及位置信息;同樣訓練過程也很復雜,ILSVRC 2012上預訓練CNN,PASCAL VOC 2007上微調CNN,做20類SVM分類器的訓練和20類bounding-box回歸器的訓練;這些不連續過程必然涉及到特征存儲、浪費磁盤空間等問題。
?
其余參考:
https://blog.csdn.net/u014380165/article/details/72851035
?https://blog.csdn.net/shenxiaolu1984/article/details/51066975
轉載于:https://www.cnblogs.com/CJT-blog/p/10415980.html
總結
以上是生活随笔為你收集整理的R-CNN(Rich feature hierarchies for accurate object detection and semantic segmentation)论文理解...的全部內容,希望文章能夠幫你解決所遇到的問題。