本文將討論目標(biāo)檢測(cè)的基本方法(窮盡搜索、R-CNN、Fast R-CNN和Faster R-CNN),并嘗試?yán)斫饷總€(gè)模型的技術(shù)細(xì)節(jié)。為了讓經(jīng)驗(yàn)水平各不相同的讀者都能夠理解,文章不會(huì)使用任何公式來(lái)進(jìn)行講解。
開(kāi)啟目標(biāo)檢測(cè)的第一步
這是只鳥(niǎo)還是架飛機(jī)?—— 圖像分類
目標(biāo)檢測(cè)(或識(shí)別)基于圖像分類。圖像分類是通過(guò)上圖所示的像素網(wǎng)格,將圖像分類為一個(gè)類類別。目標(biāo)識(shí)別是對(duì)圖像中的對(duì)象進(jìn)行識(shí)別和分類的過(guò)程。
為了使模型能夠?qū)W習(xí)圖像中對(duì)象的類別和位置,目標(biāo)必須是一個(gè)五維標(biāo)簽(類別,x, y,寬度,長(zhǎng)度)。
對(duì)象檢測(cè)方法的內(nèi)部工作
一種費(fèi)機(jī)器(奢侈計(jì)算)的方法:窮舉搜索
最簡(jiǎn)單的目標(biāo)檢測(cè)方法是對(duì)圖像的各個(gè)子部分使用圖像分類器,讓我們來(lái)逐個(gè)考慮:
· 首先,選擇想要執(zhí)行目標(biāo)檢測(cè)的圖像。
· 然后將該圖像分割成不同的部分,或者說(shuō)“區(qū)域”。
· 把每個(gè)區(qū)域看作一個(gè)單獨(dú)的圖像。
· 使用經(jīng)典的圖像分類器對(duì)每幅圖像進(jìn)行分類。
· 最后,將檢測(cè)到目標(biāo)的區(qū)域的所有圖像與預(yù)測(cè)標(biāo)簽結(jié)合。
這種方法存在一個(gè)問(wèn)題,對(duì)象可能具有的不同縱橫比和空間位置,這可能導(dǎo)致對(duì)大量區(qū)域進(jìn)行不必要的昂貴計(jì)算。它在計(jì)算時(shí)間方面存在太大的瓶頸,從而無(wú)法用于解決實(shí)際問(wèn)題。
區(qū)域提議方法和選擇性搜索
最近有種方法是將問(wèn)題分解為兩個(gè)任務(wù):首先檢測(cè)感興趣的區(qū)域,然后進(jìn)行圖像分類以確定每個(gè)對(duì)象的類別。
第一步通常是使用區(qū)域提議方法。這些方法輸出可能包含感興趣對(duì)象的邊界框。如果在一個(gè)區(qū)域提議中正確地檢測(cè)到目標(biāo)對(duì)象,那么分類器也應(yīng)該檢測(cè)到了它。這就是為什么對(duì)這些方法而言,快速和高回應(yīng)率非常重要。重要的是這兩個(gè)方法不僅要是快速的,還要有著很高的回應(yīng)率。
這兩個(gè)方法還使用了一種聰明的體系結(jié)構(gòu),其中目標(biāo)檢測(cè)和分類任務(wù)的圖像預(yù)處理部分相同,從而使其比簡(jiǎn)單地連接兩個(gè)算法更快。選擇性搜索是最常用的區(qū)域提議方法之一。
它的第一步是應(yīng)用圖像分割。
從圖像分割輸出中,選擇性搜索將依次進(jìn)行:
· 從分割部分創(chuàng)建邊界框,然后將其添加到區(qū)域建議列表中。
· 根據(jù)四種相似度:顏色,紋理,大小和形狀,將幾個(gè)相鄰的小片段合并為較大的片段。
· 返回到第一步,直到該部分覆蓋了整個(gè)圖像。
在了解了選擇性搜索的工作原理后,接著看一些使用該法最常見(jiàn)的目標(biāo)檢測(cè)算法。
第一目標(biāo)檢測(cè)算法:R-CNN
Ross Girshick等人提出了區(qū)域CNN(R-CNN),允許選擇性搜索與CNN結(jié)合使用。實(shí)際上,對(duì)于每個(gè)區(qū)域方案(如本文中的2000),一個(gè)正向傳播會(huì)通過(guò)CNN生成一個(gè)輸出向量。這個(gè)向量將被輸入到one-vs-all分類器中。每個(gè)類別一個(gè)分類器,例如一個(gè)分類器設(shè)置為如果圖像是狗,則標(biāo)簽=1,否則為0,另一個(gè)分類器設(shè)置為如果圖像是貓,標(biāo)簽= 1,否則為0,以此類推。R-CNN使用的分類算法是SVM。
但如何將該地區(qū)標(biāo)記為提議呢?當(dāng)然,如果該區(qū)域完全匹配真值,可以將其標(biāo)為1,如果給定的對(duì)象根本不存在,這個(gè)對(duì)象可以被標(biāo)為0。
如果圖像中存在對(duì)象的一部分怎么辦?應(yīng)該把這個(gè)區(qū)域標(biāo)記為0還是1?為了確保訓(xùn)練分類器的區(qū)域是在預(yù)測(cè)一幅圖像時(shí)可以實(shí)際獲得的區(qū)域(不僅僅是那些完美匹配的區(qū)域),來(lái)看看選擇性搜索和真值預(yù)測(cè)的框的并集(IoU)。
IoU是一個(gè)度量,用預(yù)測(cè)的框和真值框的重疊面積除以它們的并集面積來(lái)表示。它獎(jiǎng)勵(lì)成功的像素檢測(cè),懲罰誤報(bào),以防止算法選擇整個(gè)圖像。
回到R-CNN方法,如果IoU低于給定的閾值(0.3),那么相對(duì)應(yīng)的標(biāo)簽將是0。
在對(duì)所有區(qū)域建議運(yùn)行分類器后,R-CNN提出使用一個(gè)特定類的邊界框(bbox)回歸量來(lái)優(yōu)化邊界框。bbox回歸量可以微調(diào)邊界框的邊界位置。例如,如果選擇性搜索已經(jīng)檢測(cè)到一只狗,但只選擇了它的一半,而意識(shí)到狗有四條腿的bbox回歸量,將確保狗的整個(gè)身體被選中。
也多虧了新的bbox回歸預(yù)測(cè),我們可以使用非最大抑制(NMS)舍棄重疊建議。這里的想法是識(shí)別并刪除相同對(duì)象的重疊框。NMS根據(jù)分類分?jǐn)?shù)對(duì)每個(gè)類的建議進(jìn)行排序,并計(jì)算具有最高概率分?jǐn)?shù)的預(yù)測(cè)框與所有其他預(yù)測(cè)框(于同一類)的IoU。如果IoU高于給定的閾值(例如0.5),它就會(huì)放棄這些建議。然后對(duì)下一個(gè)最佳概率重復(fù)這一步。
綜上所述,R-CNN遵循以下步驟:
· 根據(jù)選擇性搜索創(chuàng)建區(qū)域建議(即,對(duì)圖像中可能包含對(duì)象的部分進(jìn)行預(yù)測(cè))。
· 將這些地區(qū)帶入到pre-trained模型,然后運(yùn)用支持向量機(jī)分類子圖像。通過(guò)預(yù)先訓(xùn)練的模型運(yùn)行這些區(qū)域,然后通過(guò)SVM(支持向量機(jī))對(duì)子圖像進(jìn)行分類。
· 通過(guò)邊界框預(yù)測(cè)來(lái)運(yùn)行正向預(yù)測(cè),從而獲得更好的邊界框精度。
· 在預(yù)測(cè)過(guò)程中使用NMS去除重疊的建議。
不過(guò),R-CNN也有一些問(wèn)題:
· 該方法仍然需要分類所有地區(qū)建議,可能導(dǎo)致達(dá)到計(jì)算瓶頸——不可能將其用于實(shí)時(shí)用例。
· 在選擇性搜索階段不會(huì)學(xué)習(xí),可能導(dǎo)致針對(duì)某些類型的數(shù)據(jù)集會(huì)提出糟糕的區(qū)域建議。
小小的改進(jìn):Fast R-CNN(快速R-CNN)
Fast R-CNN,顧名思義,比R-CNN快。它基于R-CNN,但有兩點(diǎn)不同:
· 不再向CNN提供對(duì)每個(gè)地區(qū)的提議,通過(guò)對(duì)CNN提供整幅圖像來(lái)生成一個(gè)卷積特性映射(使用一個(gè)過(guò)濾器將矢量的像素轉(zhuǎn)換成另一個(gè)矢量,能得到一個(gè)卷積特性映射)。接下來(lái),建議區(qū)域被識(shí)別與選擇性搜索,然后利用區(qū)域興趣池(RoI pooling)層將它們重塑成固定大小,從而能夠作為全連接層的輸入。
· Fast-RCNN使用更快,精度更高的softmax層而不是SVM來(lái)進(jìn)行區(qū)域建議分類。
以下是該網(wǎng)絡(luò)的架構(gòu):
如下所示,F(xiàn)ast R-CNN在訓(xùn)練和測(cè)試方面比R-CNN要快得多。但是,受選擇性搜索方法的影響,該方法仍然存在瓶頸。
Faster R-CNN(更快的R-CNN)
雖然Fast R-CNN比R-CNN快得多,但其瓶頸仍然是選擇性搜索,因?yàn)樗浅:臅r(shí)。因此,任少卿等人設(shè)計(jì)了更快R-CNN來(lái)解決這個(gè)問(wèn)題,并提出用一個(gè)非常小的卷積網(wǎng)絡(luò)區(qū)域提議網(wǎng)Region Proposal network(RPN)代替選擇性搜索來(lái)尋找感興趣的區(qū)域。
簡(jiǎn)而言之,RPN是一個(gè)直接尋找區(qū)域建議的小型網(wǎng)絡(luò)。一種簡(jiǎn)單的方法是創(chuàng)建一個(gè)深度學(xué)習(xí)模型,輸出x_min、y_min、x_max和x_max來(lái)獲得一個(gè)區(qū)域建議的邊界框(如果我們想要2000個(gè)區(qū)域,那么就需要8000個(gè)輸出)。然而,有兩個(gè)基本問(wèn)題:
· 圖像的大小和比例可能各不相同,所以很難創(chuàng)建一個(gè)能正確地預(yù)測(cè)原始坐標(biāo)的模型。
· 在預(yù)測(cè)中有一些坐標(biāo)排序約束(x_min 《 x_max, y_min 《 y_max)。
為了克服這個(gè)問(wèn)題,我們將使用錨:錨是在圖像上預(yù)設(shè)好不同比例和比例的框。(錨點(diǎn)是預(yù)定義的框,它們具有不同的比例,并在整個(gè)圖像上縮放。)
例如,對(duì)于給定的中心點(diǎn),通常從三組大?。ɡ纾?4px, 128px, 256px)和三種不同的寬高比(1/1,1/2,2/1)開(kāi)始。在本例中,對(duì)于圖像的給定像素(方框的中心),最終會(huì)有9個(gè)不同的方框。
那么一張圖片總共有多少個(gè)錨點(diǎn)呢?
我們不打算在原始圖像上創(chuàng)建錨點(diǎn),而是在最后一個(gè)卷積層的輸出特征圖上創(chuàng)建錨點(diǎn),這一點(diǎn)非常重要。例如,對(duì)于一個(gè)1000*600的輸入圖像,由于每個(gè)像素有一個(gè)錨點(diǎn),所以有1000 *600*9=5400000個(gè)錨點(diǎn),這是錯(cuò)誤的。確實(shí),因?yàn)橐谔卣鲌D譜上創(chuàng)建它們,所以需要考慮子采樣比率,即由于卷積層的大步移動(dòng),輸入和輸出維度之間的因子減少。
在示例中,如果我們將這個(gè)比率設(shè)為16(像在VGG16中那樣),那么特征圖譜的每個(gè)空間位置將有9個(gè)錨,因此“只有”大約20000個(gè)錨(5400000/ 16^2)。這意味著輸出特征中的兩個(gè)連續(xù)像素對(duì)應(yīng)于輸入圖像中相距16像素的兩個(gè)點(diǎn)。注意,這個(gè)下降采樣比率是Faster R-CNN的一個(gè)可調(diào)參數(shù)。
現(xiàn)在剩下的問(wèn)題是如何從那20000個(gè)錨到2000個(gè)區(qū)域建議(與之前的區(qū)域建議數(shù)量相同),這是RPN的目標(biāo)。
如何訓(xùn)練區(qū)域建議網(wǎng)絡(luò)
要實(shí)現(xiàn)這一點(diǎn),需要RPN告知框包含的是對(duì)象還是背景,以及對(duì)象的精確坐標(biāo)。輸出預(yù)測(cè)有作為背景的概率,作為前景的概率,以及增量Dx, Dy, Dw, Dh,它們是錨點(diǎn)和最終建議之間的差異。
1.第一,我們將刪除跨邊界錨(即因?yàn)閳D像邊界而被減去的錨點(diǎn)),這給我們留下了約6000張圖像。
2.如果存在以下兩個(gè)條件中的任一,我們需要標(biāo)簽錨為正:
· 在所有錨中,該錨具有最高的IoU,并帶有真值框。
· 錨點(diǎn)至少有0.7的IoU,并帶有真值框。
3.如果錨的IoU在所有真值框中小于0.3,需要標(biāo)簽其為負(fù)。
4.舍棄所有剩下的錨。
5.訓(xùn)練二進(jìn)制分類和邊界框回歸調(diào)整。
最后,關(guān)于實(shí)施的幾點(diǎn)說(shuō)明:
· 希望正錨和負(fù)錨的數(shù)量在小批處理中能夠平衡。
· 因?yàn)橄氡M量減少損失而使用了多任務(wù)損失,這是有意義的——損失有錯(cuò)誤預(yù)測(cè)前景或背景的錯(cuò)誤,以及方框的準(zhǔn)確性的錯(cuò)誤。
· 使用預(yù)先訓(xùn)練好的模型中的權(quán)值來(lái)初始化卷積層。
如何使用區(qū)域建議網(wǎng)絡(luò)
· 所有錨(20000)計(jì)入后得到新的邊界框和成為所有邊界框的前景(即成為對(duì)象)的概率。
· 使用non-maximum抑制。
· 建議選擇:最后,僅保留按分?jǐn)?shù)排序的前N個(gè)建議(當(dāng)N=2000,回到2000個(gè)區(qū)域建議)。
像之前的方法一樣,最終獲得了2000個(gè)方案。盡管看起來(lái)更復(fù)雜,這個(gè)預(yù)測(cè)步驟比以前的方法更快更準(zhǔn)確。
下一步是使用RPN代替選擇性搜索,創(chuàng)建一個(gè)與Fast R-CNN相似的模型(即RoI pooling和一個(gè)分類器+bbox回歸器)。然而,不像之前那樣,把這2000個(gè)建議進(jìn)行裁剪,然后通過(guò)一個(gè)預(yù)先訓(xùn)練好的基礎(chǔ)網(wǎng)絡(luò)進(jìn)行傳遞。而是重用現(xiàn)有的卷積特征圖。實(shí)際上,使用RPN作為提案生成器的一個(gè)好處是在RPN和主檢測(cè)器網(wǎng)絡(luò)之間共享權(quán)值和CNN。
· 使用預(yù)先訓(xùn)練好的網(wǎng)絡(luò)對(duì)RPN進(jìn)行訓(xùn)練,然后進(jìn)行微調(diào)。
· 使用預(yù)先訓(xùn)練好的網(wǎng)絡(luò)對(duì)檢測(cè)器網(wǎng)絡(luò)進(jìn)行訓(xùn)練,然后進(jìn)行微調(diào)。使用來(lái)自RPN的建議區(qū)域。
· 使用來(lái)自第二個(gè)模型的權(quán)重對(duì)RPN進(jìn)行初始化,然后進(jìn)行微調(diào)——這將是最終的RPN模型)。
· 最后,對(duì)檢測(cè)器網(wǎng)絡(luò)進(jìn)行微調(diào)(RPN權(quán)值固定)。CNN的特色圖將在兩個(gè)網(wǎng)絡(luò)之間共享。
綜上所述,F(xiàn)aster R-CNN比之前的方法更準(zhǔn)確,比Fast-R-CNN快10倍左右,這是一個(gè)很大的進(jìn)步,也是實(shí)時(shí)評(píng)分的開(kāi)始。
即便如此,區(qū)域建議檢測(cè)模型對(duì)于嵌入式系統(tǒng)來(lái)說(shuō)還是不夠,因?yàn)檫@些模型太笨重,而且對(duì)于大多數(shù)實(shí)時(shí)評(píng)分案例來(lái)說(shuō)速度也不夠快——最后一例是大約每秒檢測(cè)5張圖像。
編輯:jq
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3593瀏覽量
129500 -
分類器
+關(guān)注
關(guān)注
0文章
152瀏覽量
13195 -
cnn
+關(guān)注
關(guān)注
3文章
352瀏覽量
22231
原文標(biāo)題:深入了解目標(biāo)檢測(cè)深度學(xué)習(xí)算法的技術(shù)細(xì)節(jié)
文章出處:【微信號(hào):lingzhiVision888,微信公眾號(hào):凌智機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論