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