?
開篇需要跟大家道歉,一切忙沒時(shí)間的理由都是借口,實(shí)際上就是偷懶了,這么久才更新,非常抱歉!
本篇爭(zhēng)取以最簡(jiǎn)明的敘述,幫助大家理解下基于Region Proposal的目標(biāo)檢測(cè)的一系列工作,包括RCNN,F(xiàn)ast-RCNN,F(xiàn)aster-RCNN,這部分內(nèi)容網(wǎng)上有很多博文,本文中會(huì)有很多圖與其他博文相似或者雷同,如有侵權(quán)行為,請(qǐng)聯(lián)系鄙人。講得不好請(qǐng)大家海涵,若有疑點(diǎn),大家可以閱讀原論文。
目標(biāo)檢測(cè)是計(jì)算機(jī)視覺當(dāng)中很重要的一個(gè)任務(wù),它的目標(biāo)不僅要識(shí)別出圖像中包含物體的類別,還要對(duì)各個(gè)物體進(jìn)行較精確的定位,定位的方式為給出一個(gè)包含該物體的框。見開篇圖,取自論文RCNN。
那么怎樣進(jìn)行檢測(cè)和識(shí)別呢,接來下就開始說RCNN。
RCNN:Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation,2014-CVPR
從本篇標(biāo)題說起,整個(gè)RCNN系列是基于Region Proposal(可譯為候選區(qū)域)做的。簡(jiǎn)單來說,這種做法就是先在圖上提取很多個(gè)候選區(qū)域,然后判斷這個(gè)區(qū)域是否包含物體以及包含什么物體,最后對(duì)包含物體的候選區(qū)域位置進(jìn)行精修。
RCNN整個(gè)過程是分段的,可以分為以下幾步:
1.提取候選區(qū)域
文中選取了Selective Search的方式對(duì)每張圖提取了約2000個(gè)大小不一候選區(qū)域,為了使不同尺寸的候選區(qū)域可以喂給固定輸入尺寸的網(wǎng)絡(luò)提取特征,對(duì)這些候選區(qū)域都縮放到227,為避免縮放操作對(duì)識(shí)別檢測(cè)精度的影響,作者對(duì)縮放過程做了優(yōu)化,比如對(duì)候選區(qū)域邊界擴(kuò)展、warp等,并選取最好的縮放方式。
2.訓(xùn)練一個(gè)用于提特征的深度網(wǎng)絡(luò)
在這一部分,首先基于ILVCR-2012中ImageNet所有數(shù)據(jù)訓(xùn)練一個(gè)1000分類的模型,作者嘗試了VGG-16和AlexNet,單從精度方面VGG-16優(yōu)于AlexNet,但由于VGG-16速度方面大幅落后于AlexNet,因此作者最終選用了AlexNet,我們簡(jiǎn)稱為模型1。
其次,在上述模型1的基礎(chǔ)上,基于在圖像上提出的候選區(qū)域,篩選出符合條件的,對(duì)網(wǎng)絡(luò)進(jìn)行微調(diào),即Fine-tune,稍后會(huì)說如何對(duì)候選框進(jìn)行篩選。在微調(diào)的過程中,將上述模型1的最后一層輸出類別個(gè)數(shù)改為要檢測(cè)的目標(biāo)類別個(gè)數(shù)加1,以VOC為例,最后微調(diào)的模型輸出類別為20+1=21類,即物體類別數(shù)加上背景。
在微調(diào)模型的過程中,最關(guān)鍵的點(diǎn)在于候選區(qū)域的篩選和標(biāo)簽的獲得,這里需要引入一個(gè)概念:IoU(intersection-over- union),IoU描述了兩個(gè)框之間的重疊度,計(jì)算方法為兩個(gè)框的交集除以兩個(gè)框的并集,見下面示意圖:
根據(jù)候選框和真實(shí)標(biāo)定框(Ground Truth)之間的IoU值確定該候選框的標(biāo)簽,選取候選框與真實(shí)標(biāo)定框IoU最大的標(biāo)定框,若IoU大于0.5,標(biāo)簽即取為該真實(shí)框內(nèi)物體的類別標(biāo)簽。如果候選框與任何一個(gè)真實(shí)標(biāo)定框之間IoU均小于0.5,該候選框的標(biāo)簽即為背景?;诤Y選出的包含各個(gè)類別和背景的候選區(qū)域?qū)W(wǎng)絡(luò)進(jìn)行微調(diào),即可得到最終用于提特征的深度網(wǎng)絡(luò)。
3.提取候選區(qū)域特征,訓(xùn)練SVM分類器
最終對(duì)候選框類別的分類,作者單獨(dú)訓(xùn)練了SVM,需要注意的是對(duì)于每個(gè)類別,均訓(xùn)練了一個(gè)二分類的SVM,比如對(duì)于狗,訓(xùn)練一個(gè)SVM來判斷一個(gè)候選區(qū)域是或者不是狗。還是以VOC為例,則訓(xùn)練了20個(gè)SVM分類器。
在SVM的訓(xùn)練過程中,對(duì)候選區(qū)域的選擇較為嚴(yán)格,正例為真實(shí)標(biāo)定框,負(fù)例為與真實(shí)標(biāo)定框IoU值小于0.3的候選框,將這些框過一遍上一步中微調(diào)好的模型,提取最后一層FC-4096維的特征向量,喂給這些框?qū)?yīng)類別SVM進(jìn)行訓(xùn)練。由于負(fù)例很多,作者采用了hard negative mining的方式。
4.利用回歸的方式對(duì)框位置進(jìn)行精修
在經(jīng)過上述所有步驟得到最終框之后,為了使得框的位置更加精確,作者對(duì)框進(jìn)行了線性回歸。選取判定為該類別的框與標(biāo)定框的IoU大于0.6的候選框,提取深度特征進(jìn)行回歸。
以上即為整個(gè)流程的訓(xùn)練過程。
整個(gè)test過程如下,在整幅圖中利用Selective Search選取約2000個(gè)候選框,提取2000個(gè)框的深度特征,分別喂給各個(gè)類別的SVM分類器,判斷是否包含該物體。由于一個(gè)物體可能有多個(gè)候選框,所以對(duì)同一類別的多個(gè)框做NMS(非極大值抑制),選取最優(yōu)的框,將剩下的框分別進(jìn)行框回歸,得到最終結(jié)果。
RCNN存在的問題以及大部分人的疑問:
很多人對(duì)為什么單獨(dú)訓(xùn)練SVM而不拿微調(diào)的模型直接得到分類結(jié)果存在疑問,作者也在論文附上了他們的解釋,主要還是精度的問題,在微調(diào)模型的時(shí)候,對(duì)候選區(qū)域的選擇較為寬松,防止過擬合,而且在SVM訓(xùn)練過程中作者采用了hard negative mining的方式,因此SVM的分類精度比微調(diào)后的深度模型softmax分類精度高的多。
當(dāng)無法否認(rèn)的是,RCNN存在很多缺點(diǎn),比如速度慢,占用太多磁盤資源等,但也正是這些痛點(diǎn),才催化出后來更優(yōu)秀的算法。
由于篇幅有限,F(xiàn)ast RCNN以及Faster RCNN后續(xù)再說了,上述不好的地方或者沒說明白的地方,歡迎留言批評(píng)指正。