之前李菲菲的公開課cs231n上曾講解rcnn嘉栓、fast-rcnn等一系列的文章宏榕,所以這周對(duì)這篇文章進(jìn)行學(xué)習(xí)。
這篇文章是2014年CVPR上的經(jīng)典paper侵佃,是物體檢測領(lǐng)域曾經(jīng)獲得state-of-art精度的經(jīng)典文獻(xiàn)麻昼。這篇paper的思想,改變了物體檢測的總思路馋辈,現(xiàn)在好多文獻(xiàn)關(guān)于深度學(xué)習(xí)的物體檢測的算法抚芦,基本上都是繼承了這個(gè)思想,可以說是利用深度學(xué)習(xí)進(jìn)行目標(biāo)檢測的開山之作迈螟。下面具體對(duì)這篇文章進(jìn)行講述燕垃。
在這篇文章出來之前,視覺detection的任務(wù)多采取SIFT和HOG井联,所以發(fā)展緩慢卜壕,而深度學(xué)習(xí)的興起給作者以啟發(fā),能否將Alexnet等在分類上表現(xiàn)很好的方法遷移到檢測任務(wù)上烙常,所以就產(chǎn)生了本文轴捎,將CNN用于物體檢測鹤盒。檢測和分類的區(qū)別就是分類只區(qū)分物體類別,而檢測同時(shí)要確定物體位置侦副,這就把分類問題轉(zhuǎn)化成立回歸問題侦锯,找到一個(gè)BBox圈出物體。下圖是本文的模型框架秦驯,接下來會(huì)具體講解各部分內(nèi)容尺碰。
簡單來說就是,首先輸入一張圖片译隘,先定位出2000個(gè)物體候選框亲桥,然后采用CNN提取每個(gè)候選框中圖片的特征向量,特征向量的維度為4096維固耘,接著采用svm算法對(duì)各個(gè)候選框中的物體進(jìn)行分類識(shí)別题篷。也就是按照如下程序:
a、找出候選框厅目;
b番枚、利用CNN提取特征;
c损敷、利用SVM進(jìn)行特征分類葫笼。
a、找出候選框拗馒;
作者采用選擇性搜索的方式搜索出2000個(gè)候選框渔欢,文章采用的是過分割的手段,將圖片分割成很多小區(qū)域瘟忱,所以作者先將候選框進(jìn)行合并奥额,按照顏色。紋理等特征進(jìn)行合并访诱。從上面的模型框架中可以看到垫挨,搜出的候選框是矩形的,而且是大小各不相同触菜。然而CNN對(duì)輸入圖片的大小是有固定的九榔,比如Alexnet網(wǎng)絡(luò)要求輸入圖片大小為227*227。因此對(duì)于每個(gè)輸入的候選框都需要縮放到固定的大小涡相。文章對(duì)于圖片縮放做了兩種類型的實(shí)驗(yàn)哲泊。
(1)各向異性縮放,這種方法很簡單催蝗,就是不管圖片的長寬比例切威,不管它是否扭曲,進(jìn)行縮放就是了丙号,全部縮放到CNN輸入的大小227*227先朦,如下圖(D)所示缰冤;
(2)各向同性縮放,因?yàn)閳D片扭曲后喳魏,估計(jì)會(huì)對(duì)后續(xù)CNN的訓(xùn)練精度有影響棉浸,于是作者也測試了“各向同性縮放”方案。這個(gè)有兩種辦法
A刺彩、直接在原始圖片中迷郑,把bounding box的邊界進(jìn)行擴(kuò)展延伸成正方形,然后再進(jìn)行裁剪创倔;如果已經(jīng)延伸到了原始圖片的外邊界嗡害,那么就用b box中的顏色均值填充;如下圖(B)所示;
B三幻、先把bounding box圖片裁剪出來,然后用固定的-+
背景顏色(b box的像素顏色均值)填充成正方形圖片,如下圖(C)所示;
文章還對(duì)圖片做了padding處理呐能,上面的示意圖中第1念搬、3行結(jié)合了padding=0,第2摆出、4行結(jié)果圖采用padding=16的結(jié)果朗徊。經(jīng)過最后的試驗(yàn)對(duì)比,作者發(fā)現(xiàn)采用各向異性縮放偎漫、padding=16的精度最高爷恳。
此時(shí)我們已經(jīng)選出了2000個(gè)候選框,2000個(gè)矩形框也不一定會(huì)出現(xiàn)一個(gè)與人工標(biāo)注完全匹配的候選框象踊。因此我們需要用IOU為2000個(gè)bounding box打標(biāo)簽温亲,以便下一步CNN訓(xùn)練使用。IOU定義了兩個(gè)b box的重疊度杯矩,如下圖所示:IOU=(A∩B)/(A∪B)
在CNN階段栈虚,如果挑選出來的候選框與物體的人工標(biāo)注矩形框的重疊區(qū)域IOU大于0.5,那么我們就把這個(gè)候選框標(biāo)注成物體類別史隆,否則我們就把它當(dāng)做背景類別魂务。
b、利用CNN提取特征泌射;
作者嘗試采用了Alexnet和Vggnet兩種模型粘姜,Vgg的結(jié)果雖然略好于Alexnet,但消耗的計(jì)算量卻遠(yuǎn)高于Alexnet熔酷,所以文章采用了Alexnet的模型進(jìn)行特征提取孤紧,我們知道Alex最后的F6和F7層是4096個(gè)神經(jīng)元的全連接,所以最后提取特征每個(gè)輸入候選框圖片都能得到一個(gè)4096維的特征向量拒秘。
有監(jiān)督預(yù)訓(xùn)練坛芽,又稱為遷移學(xué)習(xí)留储。遷移學(xué)習(xí)就是就是把已學(xué)訓(xùn)練好的模型參數(shù)遷移到新的模型來幫助新模型訓(xùn)練數(shù)據(jù)集。在本文里就是將已經(jīng)經(jīng)過ILSVRC2012訓(xùn)練過的分類圖片的Alexnet網(wǎng)絡(luò)拿來做物體檢測任務(wù)咙轩,解決了檢測領(lǐng)域標(biāo)記樣本少的問題获讳,直接將參數(shù)初始化后的Alexnet網(wǎng)絡(luò)來進(jìn)行檢測,再進(jìn)行后續(xù)的fine-tuning訓(xùn)練活喊。
fine-tuning訓(xùn)練丐膝,我們將2000個(gè)候選框處理后對(duì)上面預(yù)訓(xùn)練的cnn模型進(jìn)行fine-tuning訓(xùn)練。假設(shè)要檢測的物體類別有N類钾菊,那么就需要把上面預(yù)訓(xùn)練階段的CNN模型的F7層給替換掉帅矗,替換成N+1個(gè)輸出的神經(jīng)元(一個(gè)背景),然后這一層直接采用參數(shù)隨機(jī)初始化的方法煞烫,其它網(wǎng)絡(luò)層的參數(shù)不變浑此;接著就可以開始繼續(xù)SGD訓(xùn)練了。開始的時(shí)候滞详,SGD學(xué)習(xí)率選擇0.001凛俱,在每次訓(xùn)練的時(shí)候,batch?size大小選擇128料饥,其中32個(gè)正樣本蒲犬、96個(gè)負(fù)樣本(因?yàn)檎龢颖玖可伲?/p>
作者針對(duì)要不要進(jìn)行fintune進(jìn)行了實(shí)驗(yàn),結(jié)果如下表所示:
上表顯示如果不進(jìn)行fintune岸啡,F(xiàn)C6層直接檢測結(jié)果要優(yōu)于FC7原叮,而進(jìn)行fintune之后結(jié)果會(huì)大幅度提升。據(jù)此我們了解到巡蘸,如果不針對(duì)特定任務(wù)進(jìn)行finetune奋隶,而是把CNN當(dāng)做特征提取器,卷積層所學(xué)到的特征其實(shí)就是基礎(chǔ)的共享特征悦荒,可以用于提取各種圖片的特征达布,而f6、f7所學(xué)習(xí)到的特征是用于針對(duì)特定任務(wù)的特征逾冬。比如說黍聂,對(duì)于人臉性別識(shí)別來說,一個(gè)CNN模型前面的卷積層所學(xué)習(xí)到的特征就類似于學(xué)習(xí)人臉共性特征身腻,然后全連接層所學(xué)習(xí)的特征就是針對(duì)性別分類的特征产还。
C、SVM訓(xùn)練嘀趟,測試階段
此階段將CNN特征提取之后的2000個(gè)框輸入到SVM里進(jìn)行二分類脐区,此時(shí)同一個(gè)目標(biāo)會(huì)被多個(gè)建議框包圍,這時(shí)需要非極大值抑制操作去除得分較低的候選框以減少重疊框她按。
非極大值抑制的流程是:就像下面的圖片一樣牛隅,定位一個(gè)車輛炕柔,最后算法就找出了一堆的方框,我們需要判別哪些矩形框是沒用的媒佣。先假設(shè)有6個(gè)矩形框匕累,根據(jù)分類器類別分類概率做排序,從小到大分別屬于車輛的概率分別為A默伍、B欢嘿、C、D也糊、E炼蹦、F。
1)從最大概率矩形框F開始狸剃,分別判斷A~E與F的IOU是否大于某個(gè)設(shè)定的閾值;
2)假設(shè)B掐隐、D與F的重疊度超過閾值,那么就扔掉B钞馁、D虑省;并標(biāo)記第一個(gè)矩形框F,是我們保留下來的指攒。
3)從剩下的矩形框A慷妙、C僻焚、E中允悦,選擇概率最大的E,然后判斷E與A虑啤、C的重疊度隙弛,重疊度大于一定的閾值,那么就扔掉狞山;并標(biāo)記E是我們保留下來的第二個(gè)矩形框全闷。
就這樣一直重復(fù),找到所有被保留下來的矩形框萍启。
而在二分類時(shí)定義正負(fù)閾值总珠,IOU大于0.5的為正樣本,小于0.3的為負(fù)樣本勘纯;而在CNN訓(xùn)練階段局服,負(fù)樣本選擇為0.5,從網(wǎng)上找資料說是因?yàn)椤拔⒄{(diào)階段是由于CNN對(duì)小樣本容易過擬合驳遵,需要大量訓(xùn)練數(shù)據(jù)淫奔,故對(duì)IOU限制寬松:IoU>0.5的建議框?yàn)檎龢颖荆駝t為負(fù)樣本堤结;SVM這種機(jī)制是由于其適用于小樣本訓(xùn)練唆迁,故對(duì)樣本IOU限制嚴(yán)格:IOU<0.3的建議框?yàn)樨?fù)樣本鸭丛。”
下圖是作者在VOC 2010和VOC2007的檢測結(jié)果,mAP值提升明顯唐责。
文章還展示了RCNN在圖像語義分割上的應(yīng)用鳞溉,不過效果并不理想,在此也不贅述,文章附錄里講述了很多具體的實(shí)驗(yàn)細(xì)節(jié)妒蔚,還和overfeat模型結(jié)構(gòu)進(jìn)行對(duì)比穿挨,因?yàn)槲覍?duì)檢測領(lǐng)域不是很了解,所以也沒有認(rèn)真研究這一部分肴盏。
本文所提出的RCNN網(wǎng)絡(luò)雖然效果達(dá)到了state-of-the-art科盛,但仍舊有問題存在,比如說菜皂,整個(gè)測試過程很復(fù)雜贞绵,要先提取建議框,之后提取每個(gè)建議框CNN特征恍飘,再用SVM分類榨崩,做非極大值抑制,最后做b-box回歸才能得到圖片中物體的種類以及位置信息章母;同樣訓(xùn)練過程也很復(fù)雜母蛛,這些不連續(xù)過程必然涉及到特征存儲(chǔ)、浪費(fèi)磁盤空間等問題乳怎。也就是因?yàn)樯厦孢@些問題的存在彩郊,才引出了Fast-RCNN、Faster-RCNN的產(chǎn)生蚪缀,接下來我也會(huì)繼續(xù)把這幾篇文章了解清楚秫逝。