Fast R-CNN

Fast R-CNN的提出是基于前面的R-CNN及SPP-NET的改進(jìn)版本,那么首先再來(lái)說(shuō)明一下R-CNN和SPP-NET各自的不足之處吧~~

R-CNN最明顯的不足之處在于對(duì)于一幅圖片的2000個(gè)region proposals需要分別輸入CNN進(jìn)行特征提取,這將變得很耗時(shí)。另外因?yàn)槿B接層的存在,其需要每個(gè)輸入的region proposal的尺度一樣,而這使得其對(duì)尺度敏感,不利于實(shí)際處理時(shí)的應(yīng)用。整個(gè)網(wǎng)絡(luò)的訓(xùn)練過(guò)程不是端到端的,分為region proposal的Selective Search階段,CNN精調(diào)階段,SVM分類器訓(xùn)練階段,同時(shí)在進(jìn)行SVM分類之前,需要將提取到的每個(gè)region proposal存儲(chǔ)在磁盤中(???),然后再進(jìn)行SVM階段的處理。整個(gè)過(guò)程是很耗時(shí)的。

SPP-NET針對(duì)R-CNN中的尺度問(wèn)題進(jìn)行了改進(jìn),引入了SPP(spatial pyramid pooling)以此來(lái)實(shí)現(xiàn)對(duì)輸入圖片的大小不作限制,同時(shí)不是對(duì)每個(gè)region proposal單獨(dú)輸入CNN,而是將整張圖片輸入后得到feature map然后將每個(gè)region proposal映射到feature map上的對(duì)應(yīng)位置。以此提升了速度。但整個(gè)網(wǎng)絡(luò)的訓(xùn)練過(guò)程和R-CNN一樣,也是分為多個(gè)階段的,且需將提取到的特征存放至磁盤再進(jìn)行SVM的操作。并且,由于SPP的加入,使得其在反向傳播時(shí)不能對(duì)SPP之前的卷積網(wǎng)絡(luò)進(jìn)行更新,這限制了最后結(jié)果準(zhǔn)確率的提升。

綜上,R-CNN和SPP-NET的時(shí)間和空間消耗都較大。

于是一種end-to-end的joint training的pipeline誕生了~~~
個(gè)人覺(jué)得,F(xiàn)ast-RCNN是一種聯(lián)合訓(xùn)練簡(jiǎn)化版的SPP-NET,至于原因,就從下面的details吧~

訓(xùn)練階段:

Step1:原始圖像的數(shù)據(jù)處理

文中在訓(xùn)練時(shí)與之前的不同是采用了一些訓(xùn)練的小trick,作者在進(jìn)行SGD時(shí)取的mini-batch是兩張圖中各取64個(gè)region proposals共128個(gè)作為一次訓(xùn)練的數(shù)據(jù)。這比從128張圖片中各1取一個(gè)proposal的方式要快64倍。類似于SPP-NET,將整張圖輸入至網(wǎng)絡(luò)。

Step2:利用模型對(duì)整幅圖提取特征

采用VGG16模型,和SPP-NET中類似,只是將其SPP網(wǎng)絡(luò)的三層結(jié)構(gòu)換成了單一結(jié)構(gòu),即只有一層金字塔,此時(shí)稱其為ROI Pooling。使不同尺度的region proposals形成相同尺寸的特征向量。其整體結(jié)構(gòu)可視為(13個(gè)卷積層+4個(gè)pooling層+ROI層+2fc層+2個(gè)平及層【softmaxLoss層和SmoothL1loss層】)

Step3:多任務(wù)訓(xùn)練階段

要說(shuō)相比于SPP-NET有明顯不同的地方,大概就是這一步多任務(wù)訓(xùn)練了。從上圖的網(wǎng)絡(luò)結(jié)構(gòu)可以看出,在最后fc層處有兩個(gè)并列的輸出,一個(gè)是用于分類的Softmax,另一個(gè)是用于bounding box的回歸,以此實(shí)現(xiàn)一個(gè)完全端到端的網(wǎng)絡(luò)結(jié)構(gòu)。此時(shí),對(duì)于Step2中提取到的特征,可不必存于磁盤而是直接輸入到softmax和regression中進(jìn)行訓(xùn)練(??)注:此時(shí)的正樣本需滿足余groundtruth的IoU>0.5.(可理解為,在之前如SPP-NET,R-CNN中在對(duì)CNN網(wǎng)絡(luò)進(jìn)行精調(diào)時(shí),需要IoU>0.5,在對(duì)SVM訓(xùn)練時(shí)IoU>0.3,故在此進(jìn)行聯(lián)合訓(xùn)練時(shí)取其較大值0.5)

多任務(wù)損失:分類采用softmax損失,回歸采用SmoothL1Loss,兩者的權(quán)比例為1:1.如下圖:

total loss
SmoothL1Loss

(??對(duì)于回歸部分的損失)

另外,為了加快速度,作者對(duì)于全連接層處的矩陣進(jìn)行了SVD分解,這樣使得RoI數(shù)目較大時(shí)可以使速度明顯提升。

************
在進(jìn)行訓(xùn)練時(shí),多尺度圖像訓(xùn)練Fast R-CNN與單尺度圖像訓(xùn)練相比,只提升了微小的mAP,但是時(shí)間成本卻增加了很多,故綜合考慮,作者建議直接用一種尺度的圖像訓(xùn)練Fast R-CNN。(如何訓(xùn)練的?)

scale choose

************

Step4 預(yù)測(cè)階段:

與SPP-NET類似,對(duì)圖片利用Selective Search提取region proposals,然后將整張圖片輸入網(wǎng)絡(luò),經(jīng)過(guò)卷積層提取特征后,可利用ROI pooling層對(duì)不同尺寸的region proposal形成相同長(zhǎng)度的特征向量,然后輸入之后的fc層和softmax即regression進(jìn)行分類及boundingbox回歸。并進(jìn)行非極大值抑制對(duì)boundingbox進(jìn)行篩選。

********
并不是proposal提取越多效果就會(huì)越好,提取得太多,效果反而會(huì)使mAP值下降。

********

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容