Fast R-CNN的提出是基于前面的R-CNN及SPP-NET的改進(jìn)版本,那么首先再來說明一下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)練過程不是端到端的,分為region proposal的Selective Search階段中捆,CNN精調(diào)階段鸯匹,SVM分類器訓(xùn)練階段,同時(shí)在進(jìn)行SVM分類之前泄伪,需要將提取到的每個(gè)region proposal存儲(chǔ)在磁盤中(殴蓬??蟋滴?)染厅,然后再進(jìn)行SVM階段的處理。整個(gè)過程是很耗時(shí)的津函。
SPP-NET針對(duì)R-CNN中的尺度問題進(jìn)行了改進(jìn)肖粮,引入了SPP(spatial pyramid pooling)以此來實(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)練過程和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è)人覺得乐疆,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)練階段
要說相比于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.如下圖:
(??對(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)練的?)
************
Step4 預(yù)測(cè)階段:
與SPP-NET類似承璃,對(duì)圖片利用Selective Search提取region proposals利耍,然后將整張圖片輸入網(wǎng)絡(luò),經(jīng)過卷積層提取特征后,可利用ROI pooling層對(duì)不同尺寸的region proposal形成相同長(zhǎng)度的特征向量堂竟,然后輸入之后的fc層和softmax即regression進(jìn)行分類及boundingbox回歸魂毁。并進(jìn)行非極大值抑制對(duì)boundingbox進(jìn)行篩選。
********
并不是proposal提取越多效果就會(huì)越好出嘹,提取得太多席楚,效果反而會(huì)使mAP值下降。
********