【導(dǎo)讀】神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺(jué)領(lǐng)域有著廣泛的應(yīng)用。只要稍加變形,同樣的工具和技術(shù)就可以有效地應(yīng)用于廣泛的任務(wù)。在本文中,我們將介紹其中的幾個(gè)應(yīng)用程序和方法,包括語(yǔ)義分割、分類(lèi)與定位、目標(biāo)檢測(cè)、實(shí)例分割。
Detection andSegmentation through ConvNets
——計(jì)算機(jī)視覺(jué)-目標(biāo)檢測(cè)與分割
神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺(jué)領(lǐng)域有著廣泛的應(yīng)用。只要稍加變形,同樣的工具和技術(shù)就可以有效地應(yīng)用于廣泛的任務(wù)。在本文中,我們將介紹其中的幾個(gè)應(yīng)用程序和方法。最常見(jiàn)的四個(gè)是:
語(yǔ)義分割(Semantic segmentation)
分類(lèi)與定位(Classification and localization)
目標(biāo)檢測(cè)(Object detection)
實(shí)例分割(Instance segmentation)
1、語(yǔ)義分割
我們輸入圖像并輸出每個(gè)像素的類(lèi)別決策。換句話(huà)說(shuō),我們希望將每個(gè)像素劃分為幾個(gè)可能的類(lèi)別之一。這意味著,所有攜帶綿羊的像素都會(huì)被分類(lèi)為一個(gè)類(lèi)別,有草和道路的像素也會(huì)被分類(lèi)。更重要的是,輸出不會(huì)區(qū)分兩種不同的綿羊。
解決這個(gè)問(wèn)題的一個(gè)可能的方法是把它當(dāng)作一個(gè)滑動(dòng)窗口的分類(lèi)問(wèn)題[1]。這樣我們就把輸入圖像分解成幾個(gè)大小相同的crop。然后每一種crop都會(huì)被傳送給CNN,作為輸出得到該crop的分類(lèi)類(lèi)別。像素級(jí)的crop會(huì)對(duì)每一個(gè)像素進(jìn)行分類(lèi)。這是非常容易的,不是嗎?
滑動(dòng)窗口的語(yǔ)義分割
嗯,甚至不需要研究生學(xué)位就能看出這種方法在實(shí)際中的計(jì)算效率有多低。我們需要的是一種盡量將圖像的傳送次數(shù)減少到單道的方法。幸運(yùn)的是,有一些技術(shù)可以用所有卷積層來(lái)同時(shí)對(duì)所有像素進(jìn)行預(yù)測(cè)。
語(yǔ)義分割的全卷積層
如你所見(jiàn),這樣的網(wǎng)絡(luò)將是下采樣和上采樣層的混合,以保持輸入圖像的空間大小(在像素級(jí)進(jìn)行預(yù)測(cè))。下采樣是通過(guò)使用strides或max/avg pooling來(lái)實(shí)現(xiàn)的。另一方面,上采樣需要使用一些巧妙的技術(shù),其中兩個(gè)是-最近鄰[2]和轉(zhuǎn)置卷積[3]。
上采樣技術(shù)
簡(jiǎn)而言之,最近鄰只是在它的接受域中復(fù)制特定元素(在上面的例子中是2x2)。另一方面,轉(zhuǎn)置卷積努力學(xué)習(xí)適當(dāng)?shù)臋?quán)重,為濾波器執(zhí)行上采樣。在這里,我們從左上角值開(kāi)始,這是一個(gè)標(biāo)量,與過(guò)濾器相乘,并將這些值復(fù)制到輸出單元格中。然后,我們將濾波器中的一些特定像素與輸入中的一個(gè)像素成比例地移動(dòng)。這就是輸出和輸入之間的比率,這將給我們提供我們想要使用的步幅。在有重疊的情況下,我們只對(duì)數(shù)值進(jìn)行匯總。這樣,這些過(guò)濾器也構(gòu)成了這些網(wǎng)絡(luò)的可學(xué)習(xí)參數(shù),而不是一些固定的值集,就像最近的鄰居一樣。最后,利用像素級(jí)的交叉熵?fù)p失[4]對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行反向傳播訓(xùn)練[5]。
2、分類(lèi)和定位
圖像分類(lèi)[6]處理的是將類(lèi)別標(biāo)簽分配給圖像。但是有時(shí),除了預(yù)測(cè)類(lèi)別之外,我們還感興趣的是該對(duì)象在圖像中的位置。從數(shù)學(xué)的角度來(lái)說(shuō),我們可能希望在圖像的頂部畫(huà)一個(gè)包圍框。幸運(yùn)的是,我們可以重用圖像分類(lèi)學(xué)到的所有工具和技術(shù)。
用于分類(lèi)定位的卷積網(wǎng)絡(luò)
我們首先將輸入圖像輸入到某個(gè)巨大的ConvNet中,這將給出每個(gè)類(lèi)別的分?jǐn)?shù)。但是現(xiàn)在我們有了另一個(gè)完全連接的層,它從先前層次生成的特征Map中預(yù)測(cè)對(duì)象的邊界框坐標(biāo)(x,y坐標(biāo)以及高度和寬度)。因此,我們的網(wǎng)絡(luò)將產(chǎn)生兩個(gè)輸出,一個(gè)對(duì)應(yīng)于圖像類(lèi),另一個(gè)對(duì)應(yīng)于邊界。為了訓(xùn)練這個(gè)網(wǎng)絡(luò),我們必須考慮兩個(gè)損失:分類(lèi)的交叉熵?fù)p失和邊界預(yù)測(cè)的L1/L2損失[7](某種回歸損失)。
廣義上,這種預(yù)測(cè)固定數(shù)目集的思想可以應(yīng)用于除定位以外的各種計(jì)算機(jī)視覺(jué)任務(wù),如人體姿態(tài)估計(jì)。
人體姿態(tài)估計(jì)
在這里,我們可以定義人體姿勢(shì)的固定點(diǎn)集上的身體,例如關(guān)節(jié)。然后將我們的圖像輸入到ConvNet并輸出相同的固定點(diǎn)集(x,y)坐標(biāo)。然后我們可以在每一點(diǎn)上應(yīng)用某種回歸損失來(lái)通過(guò)反向訓(xùn)練來(lái)訓(xùn)練網(wǎng)絡(luò).
3、目標(biāo)檢測(cè)
目標(biāo)檢測(cè)的思想是從我們感興趣的一組固定類(lèi)別開(kāi)始,每當(dāng)這些類(lèi)別中的任何一種出現(xiàn)在輸入圖像中時(shí),我們就會(huì)在圖像周?chē)?huà)出包圍框,并預(yù)測(cè)它的類(lèi)標(biāo)簽。這與圖像分類(lèi)和定位的不同之處在于,在前一種意義上,我們只對(duì)單個(gè)對(duì)象進(jìn)行分類(lèi)和繪制邊框。而在后一種情況下,我們無(wú)法提前知道圖像中期望的對(duì)象數(shù)量。同樣,我們也可以采用蠻力滑動(dòng)窗口方法[8]來(lái)解決這個(gè)問(wèn)題。然而,這又是一種計(jì)算效率低下的問(wèn)題,很少有算法能有效地解決這一問(wèn)題,比如基于Region proposal的算法,及基于yolo目標(biāo)檢測(cè)的算法[9]。
基于Region proposal的算法
給定一個(gè)輸入圖像,一個(gè)Regionproposal算法會(huì)給出成千上萬(wàn)個(gè)可能出現(xiàn)對(duì)象的框。當(dāng)然,在沒(méi)有對(duì)象的情況下,輸出框中存在噪聲的可能性。但是,如果圖像中有任何對(duì)象,該算法就會(huì)選擇它作為候選框。
區(qū)域搜索的選擇性搜索
為了使所有的候選框都是一樣大小的,我們需要把它們變形到固定的方格大小,這樣我們最終就可以給網(wǎng)絡(luò)輸入了。然后,我們可以將一個(gè)巨大的ConvNets應(yīng)用到從region proposal輸出的每個(gè)候選框中以獲得最終類(lèi)別。當(dāng)然,與蠻力滑動(dòng)窗口算法相比,它最終的計(jì)算效率要高得多。這就是R-CNN背后的整個(gè)想法。為了進(jìn)一步降低復(fù)雜度,采用Fast R-CNN的方法,F(xiàn)ast R-CNN的思想首先是通過(guò)ConvNet傳遞輸入圖像,得到高分辨率的特征圖,然后將這些region proposals強(qiáng)加到這個(gè)特征圖上,而不是實(shí)際的圖像上。這使得我們可以在有大量crops的情況下,在整個(gè)圖像中重用大量代價(jià)昂貴的卷積運(yùn)算。
YOLO(You only look once)
YOLO目標(biāo)檢測(cè)
Yolo背后的想法是,不要在所有提議的區(qū)域進(jìn)行獨(dú)立的處理,而是將所有的預(yù)測(cè)都重組為一個(gè)單一的回歸問(wèn)題,從圖像像素到包圍框坐標(biāo)和分類(lèi)概率。
我們首先將整個(gè)輸入圖像劃分為SXS網(wǎng)格,每個(gè)網(wǎng)格單元與b邊界(x,y,w,h)一起預(yù)測(cè)c條件的類(lèi)概率(Pr(Class | Object)),每個(gè)邊界盒(x,y,w,h)都有一個(gè)置信度分?jǐn)?shù)。(x,y)坐標(biāo)表示邊框的中心相對(duì)于網(wǎng)格單元格的邊界,而寬度和高度則是相對(duì)于整個(gè)圖像預(yù)測(cè)。概率是以包含對(duì)象的網(wǎng)格單元為條件的。我們只預(yù)測(cè)每個(gè)網(wǎng)格單元格的一組類(lèi)概率,而不管方框B的數(shù)量。置信度分?jǐn)?shù)反映了模型對(duì)框中包含對(duì)象的信心程度,如果框中沒(méi)有對(duì)象,則置信度必須為零。在另一個(gè)極端,置信度應(yīng)與預(yù)測(cè)框與ground truth標(biāo)簽之間的交集(IOU)相同。
Confidence score =Pr(Object) * IOU
在測(cè)試時(shí),我們將條件類(lèi)概率和單個(gè)邊框置信度預(yù)測(cè)相乘,這給出了每個(gè)框的特定類(lèi)別的置信度分?jǐn)?shù)。這些分?jǐn)?shù)既編碼了該類(lèi)出現(xiàn)在盒子中的概率,也表示了預(yù)測(cè)的盒適合對(duì)象的程度。
Pr(Class | Object) ?(Pr(Object) ? IOU) = Pr(Class) ? IOU
4、實(shí)例分割
實(shí)例分割采用語(yǔ)義分割和目標(biāo)檢測(cè)相結(jié)合的技術(shù)。給定一幅圖像,我們希望預(yù)測(cè)該圖像中目標(biāo)的位置和身份(類(lèi)似于目標(biāo)檢測(cè)),但是,與其預(yù)測(cè)這些目標(biāo)的邊界框,不如預(yù)測(cè)這些目標(biāo)的整個(gè)分割掩碼,即輸入圖像中的哪個(gè)像素對(duì)應(yīng)于哪個(gè)目標(biāo)實(shí)例。在此基礎(chǔ)上,我們對(duì)圖像中的每一只綿羊分別得到了分割掩碼,而語(yǔ)義分割中所有的綿羊都得到了相同的分割掩碼。
基于Mask R-CNN的實(shí)例分割
Mask R-CNN是這類(lèi)任務(wù)的首選網(wǎng)絡(luò)。在這個(gè)多階段的處理任務(wù)中,我們通過(guò)一個(gè)ConvNet和一些學(xué)習(xí)region proposal網(wǎng)絡(luò)傳遞輸入圖像。一旦我們有了這些region proposal,我們就把這些proposals投影到卷積特征圖上,就像我們?cè)赗-CNN的情況下所做的那樣。然而現(xiàn)在,除了進(jìn)行分類(lèi)和邊界框預(yù)測(cè)之外,我們還預(yù)測(cè)了每個(gè)region proposal的分割掩碼。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4764瀏覽量
100541 -
計(jì)算機(jī)視覺(jué)
+關(guān)注
關(guān)注
8文章
1696瀏覽量
45928
原文標(biāo)題:【計(jì)算機(jī)視覺(jué)】檢測(cè)與分割詳解
文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論