目标检测技术演化:从R-CNN到Faster R-CNN
摘要:?一文了解目標檢測技術(shù)發(fā)展,不要錯過喲。
目標檢測旨在準確地找到給定圖片中物體的位置,并將其正確分類。準確地來講,目標檢測需要確定目標是什么以及對其定位。
然而,想要解決這個問題并不容易。因為,目標的大小,其在空間中的方向,其姿態(tài),以及其在圖片中的位置都是變化的。
這里有一張圖片,我們需要識別圖片中的物體,并且用方框?qū)⒃撐矬w圈出來。
圖像識別(分類)
定位:
如今大火的卷積神經(jīng)網(wǎng)絡(luò)幫助我們很好地進行圖像識別。但是,我們?nèi)孕枰恍╊~外的功能來進行精確定位,深度學(xué)習(xí)在這里發(fā)揮了很好的作用。
在本文中,我們將從目標定位的角度入手探討目標檢測技術(shù)的發(fā)展。我們將按著如下的演化順序講述:R-CNN->SPP Net->Fast R-CNN-> Faster R-CNN
在開始前,我們將對基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)(R-CNN)進行簡單的介紹。
將定位看作回歸問題
如果我們將其看作是一個回歸問題,則需要對(x,y,w,h)四個參數(shù)進行預(yù)測,從而得到方框所在位置。
步驟1
?
步驟2
?
步驟3
步驟4
接著,我們將進行兩次微調(diào)操作。第一次在AlexNet上進行,第二次將頭部改為回歸頭。
回歸部分加在哪里呢?
兩種解決辦法:
但是實現(xiàn)回歸操作太困難了,我們需要找到一種方法將其變?yōu)榉诸悊栴}。回歸的訓(xùn)練參數(shù)收斂的時間要長得多,所以上面的網(wǎng)絡(luò)采取了用分類的網(wǎng)絡(luò)來計算網(wǎng)絡(luò)共同部分的連接權(quán)值。
取圖像窗口
?
左上角的黑框:得分0.5
右上角的黑框:得分0.75
左下角的黑框:得分0.6
右下角的黑框:得分0.8
根據(jù)這些得分,我們選擇右下角的黑框作為所要預(yù)測的目標位置。
注:有的時候也會選擇得分最高的兩個方框,然后取兩個方框的交集作為最終需要預(yù)測的位置。
問題:方框的大小如何確定呢?
當取了不同的方框后,依次從左上角掃描到右下角。
總結(jié):
對第一張圖片,我們使用不同大小的方框(遍歷整張圖片)將圖片截取出來,輸入到CNN,然后CNN會輸出這個框的分類以及這個框圖片對應(yīng)的(x,y,w,h)。
?
但是,這個方法太耗費時間了,需要做一些優(yōu)化。最初的網(wǎng)絡(luò)模型如下圖所示:
?
所做優(yōu)化:將全連接層改為為卷積層以提高速度。
?
目標檢測
當圖中有多個物體存在的時候我們應(yīng)該如何做呢?現(xiàn)在我們所要解決的問題就變成了:多個目標識別+定位。
現(xiàn)在我們還能將其看作分類問題么?
?
可是,將其看作分類問題的話會有如下矛盾產(chǎn)生:
如果將其看作分類問題,我們能做哪些優(yōu)化呢?我們并不想使用太多的方框在不同的位置間來回嘗試。下面,給出了一種解決方案:
首先,我們需要找出包含所有目標的方框。其中有的方框會產(chǎn)生重疊或者互相包含,這樣我們就不用枚舉出所有的方框了。
?
對于候選框的獲取,前人發(fā)現(xiàn)了很多種方法:比如EdgeBoxes和Selective Search。以下是候選方框獲取方法的性能對比:
?
對于“選擇性搜索”是如何選出所有候選方框這個問題,本文不作介紹,有興趣的可以對其相關(guān)論文進行研究。
R-CNN
上述提及的思路推動了R-CNN的面世。讓我們以同樣的圖片為例,對R-CNN進行講解。
步驟1
下載一個分類模型(如AlexNet)
?
步驟2
對模型進行微調(diào)
?
步驟3
特征提取:
?
步驟4
?
步驟5
使用回歸器對候選方框的位置進行仔細校正。對于每一個分類,都需要訓(xùn)練一個線性回歸模型,用以判斷這個方框是否足夠匹配。
?
SPP Net
空間金字塔池化(SPP:Spatial Pyramid Pooling)概念的提出對R-CNN的發(fā)展有著非凡的意義。在此我們會對SPP進行簡明的介紹。
SPP有兩個特征:
1. 結(jié)合空間金字塔法,實現(xiàn)CNN的多尺度輸入
一般來說,在CNN后面會接有一個全連接層或者一個分類器。它們都需要調(diào)整至合適大小方可作為輸入,因此需要對輸入數(shù)據(jù)進行分割和變形。然而,這些預(yù)處理可能會造成數(shù)據(jù)的丟失或幾何的失真。SPP Net的第一個貢獻就是將金字塔思想與CNN相結(jié)合,實現(xiàn)數(shù)據(jù)的多尺度輸入。
如下圖所示,在卷積層和全連接層之間加入一個SPP層。此時,網(wǎng)絡(luò)的輸入尺度可以是任意的,在SPP層中,池化所需的過濾器會根據(jù)輸入自動調(diào)節(jié)大小,但SPP的輸出尺度確實保持不變的。
?
2. 只對原始圖像提取一次卷積特征
在R-CNN中,每個候選框會將其尺寸調(diào)至統(tǒng)一,然后分別作為CNN的輸入,但這樣的做法降低了效率。SPP Net針對這個缺點做了相應(yīng)的優(yōu)化:只對原始圖像進行一次卷積操作,得到特征圖,然后找到每個候選方框在特征圖上的映射,然后將該映射作為卷積特征輸入SPP層。這種優(yōu)化方法節(jié)約了大量的計算時間,相比 R-CNN快上百倍。
?
Fast R-CNN
SPP Net非常實用,有學(xué)者就在R-CNN的基礎(chǔ)上結(jié)合SPP Net,提出Fast R-CNN,進一步提升了性能。
R-CNN與Fast R-CNN有什么區(qū)別呢?
首先,讓我們來看看R-CNN的不足之處。盡管它在提取潛在邊框作為輸入時,使用了選擇性搜索以及其它處理方法,但是R-CNN在運算速度上仍然遇到了瓶頸。這是由于計算機在對所有區(qū)域進行特征提取時會進行大量的重復(fù)計算。
為了解決這個問題,研究學(xué)者提出了Fast R-CNN。
?
在Fast R-CNN中,有一個被稱為ROI Pooling的單層SPP網(wǎng)絡(luò)層。該網(wǎng)絡(luò)層能夠?qū)⒉煌叽绲妮斎胗成錇橐幌盗泄潭ǔ叨鹊奶卣飨蛄?#xff0c;正如我們所知,conv,pooling,relu以及一些其它操作并不需要固定尺度的輸入。因此,當我們在原始圖片上執(zhí)行這些操作后,由于輸入圖片的尺寸不同,得到的特征圖尺寸也不一樣,不能將它們直接連接到一個全連接層上進行分類,但是我們可以在其中加入ROI Pooling層,以一個固定尺度的特征來表示每個區(qū)域,再通過softmax進行分類。
此外,前面所講的R-CNN需要先有一個proposal,再輸入到CNN中進行特征提取,之后采用SVM進行分類,最后進行邊框回歸。但是在Fast R-CNN模型中,作者將邊框回歸引入神經(jīng)網(wǎng)絡(luò),并將其與區(qū)域分類合并,形成一個多任務(wù)模型。
實驗證明,這兩個任務(wù)能夠共享卷積特征。Fast R-CNN的一個額外貢獻是使Region Proposal+CNN這一框架得以運用,同時讓人們看到進行多類檢測的同時仍保證精度是能夠?qū)崿F(xiàn)的。
R-CNN總結(jié):
很明顯,Fast R-CNN比R-CNN在速度上有了大幅提升;與R-CNN對每個候選方框輸入到CNN中提取特征不同的是,Fast R-CNN只對輸入的整張圖片提取一次特征,然后在第五個卷積層上提取每個候選方框的特征,此操作只需要計算一次特征,剩下的操作在第五個卷積層上完成即可。
性能的提升也十分明顯:
?
Faster R-CNN
毫無疑問,Fast R-CNN與傳統(tǒng)的CNN相比,在性能上有了大幅提升。但Fast R-CNN的一個主要問題在于它使用選擇性搜索去找所有的候選方框,這是非常耗時的。
是否有更加高效的方法去找出所有的候選方框呢?
解決辦法:增加一個可以對邊緣進行提取的神經(jīng)網(wǎng)絡(luò)。換句話說,利用神經(jīng)網(wǎng)絡(luò)去尋找所有的候選方框。能夠?qū)崿F(xiàn)這種操作的神經(jīng)網(wǎng)絡(luò)叫做區(qū)域生成網(wǎng)絡(luò)(RPN:Region Proposal Network)。
讓我們看看RPN有哪些提升:
?
RPN總結(jié):
?
四種損失函數(shù):
?
?
?
速度比較
Faster R-CNN的貢獻在于它設(shè)計了一個RPN網(wǎng)絡(luò)對候選區(qū)域進行提取,此步驟代替了耗時過多的選擇性搜索,使速度得到大幅提升。
總結(jié)
總的來說,從R-CNN,SPP-NET,Fast R-CNN到R-CNN,基于深度學(xué)習(xí)進行目標檢測的步驟得到了簡化,精度得到了提高,速度得到了提升。可以說,基于區(qū)域生成的系列R-CNN目標檢測算法在目標檢測領(lǐng)域已經(jīng)成為最主要的分支。
數(shù)十款阿里云產(chǎn)品限時折扣中,趕緊點擊領(lǐng)劵開始云上實踐吧!
原文鏈接?
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的目标检测技术演化:从R-CNN到Faster R-CNN的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你的专属云资源管家!阿里云正式对外发布云
- 下一篇: 阿里云携领先SDN能力,亮相全球网络技术