參考:RCNN介紹
參考:RCNN,Fast RCNN, Faster RCNN整理總結(jié)
一妨猩、 RCNN
【借助CNN良好的特征提取和分類性能验游,通過RegionProposal方法實(shí)現(xiàn)目標(biāo)檢測問題的轉(zhuǎn)化】
20180527152957814.png
RCNN三個步驟:
1)候選區(qū)域選擇
- Region Proposal:一類傳統(tǒng)的區(qū)域提取方法陆馁,可以看作不同寬高的滑動窗口徘公,通過窗口滑動獲得潛在的目標(biāo)圖像。
- SelectiveSearch:
滑動窗口法:就是按照子塊的大小在整幅圖像上窮舉所有子圖像塊(費(fèi)時費(fèi)力)驹溃。
選擇性搜索:和滑動窗口法相對的是另外一類基于區(qū)域(region proposal)的方法舱殿。參考SelectiveSearch - Candidate:一般2k個饲宛,可理解為將圖片劃分成2k個網(wǎng)格僵娃,之后再對網(wǎng)格進(jìn)行特征提取或卷積操作概作,這根據(jù)RCNN類算法下的分支來決定。然后基于就建議提取的目標(biāo)圖像將其標(biāo)準(zhǔn)化為CNN的標(biāo)準(zhǔn)輸入默怨。
2)CNN特征提取
標(biāo)準(zhǔn)CNN過程讯榕,根據(jù)輸入進(jìn)行卷積或池化等操作,得到固定維度的輸出匙睹。在特征提取之后愚屁,特征映射被卷積和匯集以獲得輸出(向量)。
3)分類與邊界回歸
兩個步驟:
1.分類:對前一步的輸出向量進(jìn)行分類痕檬,分類器需要根據(jù)特征進(jìn)行訓(xùn)練集绰。(分類器的選擇中有支持向量機(jī)SVM、Softmax等等)
2.邊界回歸:通過邊界回歸框(bounding-box regression)進(jìn)行回歸谆棺,獲得精確的目標(biāo)區(qū)域。其目的是準(zhǔn)確定位和合并完成分類的預(yù)期目標(biāo),并避免多重檢測改淑。(邊界回歸有bbox回歸碍岔、多任務(wù)損失函數(shù)邊框回歸等)
RCNN缺點(diǎn)
- 在RCNN剛剛被發(fā)明出來的2014年,RCNN在目標(biāo)檢測與行人檢測上取得了巨大的成就朵夏,然而效率低下蔼啦,花費(fèi)時間長等一系列的問題的產(chǎn)生,還是導(dǎo)致了RCNN的運(yùn)用并沒有取得大范圍的應(yīng)用仰猖。
- 其最大的問題有三:
- 需要事先提取多個候選區(qū)域?qū)?yīng)的圖像捏肢。這一行為會占用大量的磁盤空間。
- 針對傳統(tǒng)的CNN來說饥侵,輸入的map需要時固定尺寸的鸵赫,而歸一化(crop/warp)過程中對圖片產(chǎn)生的形變(截?cái)嗷蚶欤?dǎo)致圖片大小改變,導(dǎo)致輸入CNN的信息丟失躏升,這對CNN的特征提取有致命的壞處辩棒。
- 每個RegionProposal都需要進(jìn)入CNN網(wǎng)絡(luò)計(jì)算,上千個Region存在大量范圍重疊膨疏,導(dǎo)致重復(fù)的相同的特征提取一睁,這導(dǎo)致巨大的計(jì)算資源。
二佃却、SPP-Net
克服CNN特征提取過程卷積計(jì)算資源的耗費(fèi)者吁,提取整體特征(而不是對每個候選區(qū)域獨(dú)立計(jì)算),分類之前僅僅做一次Region截取饲帅。
SPP-Net.png
改進(jìn):
1)取消了crop/warp圖像歸一化過程复凳,解決圖像變形導(dǎo)致的信息丟失以及存儲問題;
2)采用空間金字塔池化(SpatialPyramid Pooling)替換了全連接層之間的最優(yōu)一個遲化層洒闸。
空間金字塔池化
使得任意大小的特征圖都能夠轉(zhuǎn)換成固定大小的特征向量染坯,這就是空間金字塔池化的意義(多尺度特征提取出固定大小的特征向量),送入全連接層丘逸。整體框架大致為:輸入圖像单鹿,卷積層提取特征,空間金字塔池化提取固定大小特征深纲,全連接層仲锄。
SppNet缺點(diǎn):
- 和RCNN一樣,訓(xùn)練過程仍然是隔離的湃鹊,提取候選框 | 計(jì)算CNN特征| SVM分類 | Bounding Box回歸獨(dú)立訓(xùn)練儒喊,大量的中間結(jié)果需要轉(zhuǎn)存,無法整體訓(xùn)練參數(shù)币呵;
- SPP-Net在無法同時Tuning在SPP-Layer兩邊的卷積層和全連接層怀愧,很大程度上限制了深度CNN的效果侨颈;
- 在整個過程中,Proposal Region仍然很耗時芯义。
三哈垢、Fast RCNN
改進(jìn)點(diǎn):對RCNN進(jìn)行加速。(更快扛拨、更準(zhǔn)耘分、更魯棒——是我們一直追求的目標(biāo))
- (重點(diǎn)一)借鑒SPP思路,提出簡化版ROI池化層(不是金字塔)绑警,同時加入候選框映射功能求泰,使得網(wǎng)絡(luò)能夠反向傳播,解決了SPP的整體網(wǎng)絡(luò)訓(xùn)練問題计盒;
- (重點(diǎn)二)多任務(wù)Loss層
a) SoftmaxLoss代替SVM渴频,證明softmax比SVM更好的效果;
b) SmoothL1Loss代替Bounding box回歸(邊界回歸)章郁。
將分類和邊框回歸進(jìn)行合并枉氮,通過多任務(wù)Loss層進(jìn)一步整合深度網(wǎng)絡(luò),統(tǒng)一了訓(xùn)練過程暖庄,從而提高了算法準(zhǔn)確度聊替。
- (重點(diǎn)二)多任務(wù)Loss層
- 全連接層通過SVD加速(有一定的提升但不是革命性的)
- 結(jié)合上面的改進(jìn),模型訓(xùn)練時可對所有層進(jìn)行更新培廓,除了速度提升外(訓(xùn)練速度是SPP的3倍惹悄,測試速度10倍),得到了更好的檢測效果(VOC07數(shù)據(jù)集mAP為70肩钠,注:mAP泣港,mean Average Precision)。
四价匠、Faster RCNN
* 對于提取候選框最常用的SelectiveSearch方法当纱,提取一副圖像大概需要2s的時間,改進(jìn)的EdgeBoxes算法將效率提高到了0.2s踩窖,但是這還不夠坡氯。
* 選框提取不一定要在原圖上做,特征圖上同樣可以洋腮,低分辨率特征圖意味著更少的計(jì)算量箫柳,基于這個假設(shè),MSRA的任少卿等人提出RPN(RegionProposal Network)啥供,完美解決了這個問題悯恍,我們先來看一下網(wǎng)絡(luò)拓?fù)洹?br> 候Faster-RCNN.png
RPN分支
- 通過添加額外的RPN分枝網(wǎng)絡(luò),將候選框提取合并到深度網(wǎng)絡(luò)中伙狐,這正是Faster-RCNN里程碑式的貢獻(xiàn)涮毫。
- RPN網(wǎng)絡(luò)的特點(diǎn)在于通過滑動窗口的方式實(shí)現(xiàn)候選框的選取瞬欧,每個滑動窗口位置生成9個候選框(不同尺寸、不同高度)窒百,提取對應(yīng)9個候選框的特征黍判,用于目標(biāo)分類和邊框回歸,與FastRCNN類似篙梢。
-
目標(biāo)分類只需要區(qū)分候選框內(nèi)特征為前景或者背景。
邊框回歸確定更精確的目標(biāo)位置美旧。
Faster-RCNN-RPN.png
-
訓(xùn)練過程中渤滞,候選框選取依據(jù):
- 丟棄跨越邊界的anchor;
- 與樣本重疊區(qū)域大于0.7的anchor標(biāo)記為前景榴嗅,重疊區(qū)域小于0.3的標(biāo)定為背景妄呕;
- 對于每一個位置,通過兩個全連接層(目標(biāo)分類+邊框回歸)對每個候選框(anchor)進(jìn)行判斷嗽测,并且結(jié)合概率值進(jìn)行舍棄(僅保留約300個anchor)绪励,沒有顯式地提取任何候選窗口,完全使用網(wǎng)絡(luò)自身完成判斷和修正唠粥。
-
從模型訓(xùn)練的角度來看疏魏,通過使用共享特征交替訓(xùn)練的方式,達(dá)到接近實(shí)時的性能晤愧,交替訓(xùn)練方式描述為:
- 根據(jù)現(xiàn)有網(wǎng)絡(luò)初始化權(quán)值w大莫,訓(xùn)練RPN;
- 用RPN提取訓(xùn)練集上的候選區(qū)域官份,用候選區(qū)域訓(xùn)練FastRCNN只厘,更新權(quán)值w;
- 重復(fù)1舅巷、2羔味,直到收斂。
因?yàn)镕aster-RCNN钠右,這種基于CNN的real-time 的目標(biāo)檢測方法看到了希望赋元,在這個方向上有了進(jìn)一步的研究思路。
RCNN網(wǎng)絡(luò)的演進(jìn):
RCNN網(wǎng)絡(luò)的演進(jìn).png
Faster實(shí)現(xiàn)了端到端的檢測爬舰,并且?guī)缀踹_(dá)到了效果上的最優(yōu)们陆,速度方向的改進(jìn)仍有余地,于是YOLO誕生了情屹。
五坪仇、YOLO
YOLO來自于“YouOnly Look Once”,你只需要看一次垃你,不需要類似RPN的候選框提取椅文,直接進(jìn)行整圖回歸就可以了喂很。
YOLO.png
算法描述
- 將圖像劃分為固定的網(wǎng)格(比如7*7),如果某個樣本Object中心落在對應(yīng)網(wǎng)格皆刺,該網(wǎng)格負(fù)責(zé)這個Object位置的回歸少辣;
- 每個網(wǎng)格預(yù)測包含Object位置與置信度信息,這些信息編碼為一個向量羡蛾;
- 網(wǎng)絡(luò)輸出層即為每個Grid的對應(yīng)結(jié)果漓帅,由此實(shí)現(xiàn)端到端的訓(xùn)練。
存在的問題
7*7的網(wǎng)格回歸特征丟失比較嚴(yán)重痴怨,缺乏多尺度回歸依據(jù)忙干;
-
Loss計(jì)算方式無法有效平衡(不管是加權(quán)或者均差),Loss收斂變差浪藻,導(dǎo)致模型不穩(wěn)定捐迫。
Object(目標(biāo)分類+回歸)<=等價于=>背景(目標(biāo)分類)
- 導(dǎo)致Loss對目標(biāo)分類+回歸的影響,與背景影響一致爱葵,部分殘差無法有效回傳施戴;
- 整體上YOLO方法定位不夠精確,貢獻(xiàn)在于提出給目標(biāo)檢測一個新的思路萌丈,讓我們看到了目標(biāo)檢測在實(shí)際應(yīng)用中真正的可能性赞哗。
- 這里備注一下,直接回歸可以認(rèn)為最后一層即是對應(yīng)7*7個網(wǎng)格的特征結(jié)果浓瞪,每一個網(wǎng)格的對應(yīng)向量代表了要回歸的參數(shù)(比如pred懈玻、cls、xmin乾颁、ymin涂乌、xmax、ymax)英岭,參數(shù)的含義在于Loss函數(shù)的設(shè)計(jì)湾盒。
SSD
由于YOLO本身采用的SingleShot基于最后一個卷積層實(shí)現(xiàn),對目標(biāo)定位有一定偏差诅妹,也容易造成小目標(biāo)的漏檢罚勾。
借鑒Faster-RCNN的Anchor機(jī)制,SSD(Single Shot MultiBox Detector)在一定程度上解決了這個問題吭狡,我們先來看下SSD的結(jié)構(gòu)對比圖尖殃。
SSD.png
- 基于多尺度特征的Proposal,SSD達(dá)到了效率與效果的平衡划煮,從運(yùn)算速度上來看送丰,能達(dá)到接近實(shí)時的表現(xiàn),從效果上看弛秋,要比YOLO更好器躏。
- 對于目標(biāo)檢測網(wǎng)絡(luò)的探索仍在一個快速的過程中俐载,有些基于Faster-RCNN的變種準(zhǔn)確度已經(jīng)刷到了87%以上,而在速度的改進(jìn)上登失,YOLO2也似乎會給我們帶來一定的驚喜遏佣,“未來已來”,我們拭目以待揽浙!
【上面都是理論状婶,接下來去代碼實(shí)踐一下】