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