2017CS231n笔记_S11分割,定位,检测
目錄
S11.0前言
S11.1語義分割
S11.1.1滑動窗口方法
S11.1.2全卷積方法
S11.1.13上采樣
S11.2分類+定位
S11.2.1分類+定位
S11.2.2姿態估計
S11.3目標檢測
S11.3.1目標檢測作為回歸任務?
S11.3.2目標檢測作為分類任務
S11.3.3Detection with Region Proposals
S11.3.4Detection without Proposals
S11.4實例分割
S11.0前言
本章節對分類之外的其他視覺任務進行介紹,包括語義分割(Semantic Segmentation),分類+定位(Classification+Localization),目標檢測(Classification+Localization)和實例分割(Instance Segmentation)。四種視覺任務結果如下圖所示。
S11.1語義分割
語義分割是像素級任務,并不區分實例。語義分割是指輸入圖像,并對圖像中的每個像素做分類,為每個像素分配標簽。語義分割并不區分同類目標。
S11.1.1滑動窗口方法
使用該方法的一個模型如下。模型將輸入圖片分為很多很多個小的局部圖像塊,然后用CNN判別局部圖像塊的中心像素的類別。但對于每個像素,都要判別該像素對應的局部圖像塊,并且模型沒有共享這些圖像塊之間重疊的特征,因此模型的計算復雜度很高。該模型論文“Learning Hierarchical Features for Scene Labeling“。
S11.1.2全卷積方法
全卷積方法是指,圖像輸入到模型中,使用多個卷積層,輸出和輸入圖像相同大小的結果圖像。但這樣,會有一個問題,就是在原始圖像分辨率上做卷積會十分昂貴。因此,在多個卷積層之間先進行降采樣(downsampling),再進行上采樣(unsampling),使得輸出圖像的大小等同輸入圖像的大小。降采樣方法有:pooling和strided convolution。上采樣方法有:unpooling和transpose convolution。使用該方法的一個模型如下。模型論文"Fully Convolutional Networks for Semantic Segmentation"。但該方法的問題是,如何得到數據庫。可以考慮自己使用ps工具來得到每個輸入圖像對應的目標圖像。
S11.1.13上采樣
上采樣方法分為Unpooling和Transpose Convolution。
Unpooling:常見方法如下圖所示。設Unpooling層的輸出是輸出區域。Nearest Neighbor方法是在輸出區域中對像素進行重復。Bed of Nails方法是輸出區域左上角的值為對應的輸入像素值,輸出區域的其他值為0。Max Unpooling方法在使用時,網絡中每個Max Pooling層對應一個Max Unpooling層。在輸出區域中,對應Max Pooling層中最大像素的位置(例如圖中5,6,7,8的位置)的值為降采樣輸入像素值(例如圖中1,2,3,4),輸出區域中其他位置的值為0。
Transpose Convolution:比如輸入是一個2*2的像素,例如上圖的1,2,3,4。假設轉置卷積層的過濾器大小為3*3。那么該層的計算是:使用1這個標量與過濾器相乘,得到3*3的矩陣。那么分別使用1,2,3,4進行上述操作,總共能得到4個3*3的矩陣。轉置卷積層有步常stride參數。根據這個參數,4個3*3的矩陣在空間上可能有重疊的部分。那么重疊部分的值為每個矩陣中該位置值之和。該層還有其他名稱,如Deconvolution,Upconvolution,fractionally strided convolution,Backward strided convolution。
S11.2分類+定位
S11.2.1分類+定位
對于一幅含有貓的圖片,除了判別該圖像是貓,還想判斷貓在哪里。這就是分類定位問題。提前知道有一個物體或多個物體是需要定位的。我們需要畫出一個框來包括整個貓咪。解決該任務的一個模型如下所示。首先,在一個預訓練的CNN網絡上生成圖像表示向量。然后用兩個全連接層。第一個全連接層用于圖像的分類。使用Softmax,交叉熵等損失函數來計算分類損失。第二個全連接層用于輸出位置值(x,y,w,h)。使用L1損失,平滑L1損失,L2等損失韓式來計算回歸損失。回歸和分類的區別在于,回歸的值是一個連續值,分類的值是一個離散值。網絡的整體損失是分類損失和回歸損失的加權和,需要手動設置加權參數。網絡的訓練方法可以是網絡整體一起訓練,這種效果會好。但實際中有一個訓練技巧,首先凍結卷積網絡,分別訓練來優化兩個全連接部分網絡的參數,直到兩個網絡收斂,最后再對整體網絡進行訓練/聯合調試。
S11.2.2姿態估計
在圖片中預測固定點的位置的想法可以應用到分類+定位以外的其他問題上,比如姿態估計。姿態估計的任務是,輸入左邊的圖,輸出人的關節/點位(右邊的圖)。這樣網絡就能預測出這個人的姿態。一般在深度學習中,使用14個關節點的位置來定義人的姿態。
人體姿勢估計模型如下所示。模型接收圖片,然后使用使用CNN網絡來得到圖像表示向量,然后輸出14個關節點的坐標值。分別計算14個關節點的回歸損失,這里使用L2損失。然后對所有損失求和。模型來自論文“DeepPose: Human Pose Estimation via Deep Neural Networks”。
S11.3目標檢測
目標檢測是一個內容相當豐富的話題,在計算機視覺領域占據核心地位。目標檢測任務是,目標的類別確定,根據輸入的圖像,每當圖像中出現一個對象時,確定這個對象的類別以及位置。與分類+定位不同的是,目標檢測在最開始不確定圖像中對象的個數。
S11.3.1目標檢測作為回歸任務?
如果將目標檢測作為回歸任務,那么對于下面第一張圖,需要預測4個值;第二張圖,需要預測16個值;而第三張圖,需要預測很多很多個值。但由于提前并不確定圖像中對象的個數,因此需要預測的值的個數也不確定。因此將目標檢測作為回歸任務會非常棘手。
S11.3.2目標檢測作為分類任務
將目標檢測作為分類任務,應用滑動窗口的思想。將輸入圖像切分為小塊,將圖像塊輸入到CNN網絡中,進行分類決策。當網絡沒有見過的范圍之外的其他對象時,就會將其識別為背景Background。但選擇圖像塊是一個問題,因為圖像中對象的大小和位置不固定,那么圖像塊的大小,尺度,位置也不定。那么滑動窗口方法就要測試成千上萬次。另外,每一個圖像塊都要輸入到CNN網絡中進行訓練,計算復雜度過高,實際中不會這樣進行。
S11.3.3Detection with Region Proposals
使用候選區域(Region Proposals)方法來進行目標檢測。該方法在深度學習中并不常見,更像傳統的計算機視覺方法。候選區域網絡采用信號處理,圖像處理等方法建立候選的區域。一般會在對象周圍給出上千個框,如下圖所示。相關論文: "Measuring the objectness of image windows","Selective Search for Object Recognition","BING: Binarized normed gradients for objectness estimation at 300fps","Edge boxes: Locating object proposals from edges"。使用候選區域的方法有Selective Search,R-CNN,Fast R-CNN,Faster R-CNN等。
Selective Search:一種常見的候選區域方法。該方法首先將輸入圖像切分為2000個候選區域,然后使用CNN網絡對候選區域進行分類。這比窮盡所有的候選區域簡單一點。但區域中包含噪點,它們中的大部分不是想要的。但召回率比較高。
R-CNN:論文"Rich feature hierarchies for accurate object detection and semantic segmentation"。給定輸入圖像,首先運行區域選擇網絡,找到大約2000個興趣區域(Regionis of Interest,RoI),并會邊界框進行修正;接著由于興趣區域可能有不同尺寸,但都要輸入到CNN中進行分類,因此,需要對興趣區域進行切分,使得區域尺寸一致;最后將興趣區域輸入到CNN中進行分類。但該算法的實現需要許多計算力;訓練時間慢(84h);占用很多磁盤空間;區域選擇模型是固定的,并不學習參數。
Fast R-CNN:論文"Fast R-CNN"。給定輸入圖像,首先使用卷積網絡得到整個圖像的高分辨率特征映射;然后使用一些方法來選擇興趣區域RoI;接著使用RoI池化層來對固定RoI的尺寸;將固定尺寸的RoI輸入到全連接網絡中,進行分類以及邊界框的回歸。因此模型中存在兩種損失。訓練和測試時間都有大幅減少,測試時間耗在得到備選區域上。
Faster R-CNN:?論文"Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks"。解決了備選區域耗時問題。在模型中插入候選區域網絡(Region Proposal Network,RPN)來解決,RPN網絡從卷積映射圖中來預測候選區域。這使得網絡自身去做RoI的預測。RPN網絡有兩個損失,分類損失和邊界框損失。RPN的分類結果為兩類:有目標或者沒有目標。整個網絡,給定輸入圖像,首先使用卷積網絡得到整個圖像的高分辨率特征映射;然后使用RPN來選擇興趣區域RoI;接著使用RoI池化層來對固定RoI的尺寸;將固定尺寸的RoI輸入到全連接網絡中,進行分類以及邊界框的回歸。整個網絡有4個損失,RPN分類損失,RPN回歸損失,最終的分類損失(目標的類別),最終的回歸損失。
S11.3.4Detection without Proposals
用于目標檢測的另一種方法,是一種前饋模型,有兩種模型:YOLO和SSD。該類模型不對候選區域分別進行處理,而是嘗試將其作為回歸問題處理。借助于大型網絡,所有的預測一次完成。下圖是SSD模型方法。給定輸入圖像,將輸入圖像分成網格,例如7*7。以每個單元格為中心,分別畫一些基本邊界框,例如長的,寬的,正方形的三個基本邊界框。模型要預測邊界框與對象位置的偏移量;預測對象對應類別的分數。YOLO模型論文"You Only Look Once: Unified, Real-Time Object Detection"。SSD模型論文"SSD: Single-Shot MultiBox Detector"。
S11.4實例分割
實例分割是指,給定一幅圖片,輸出對象的位置,類別以及所在的整個區域。該任務像是混合了語義分割和目標檢測的任務。Mask R-CNN模型是解決該問題的一個模型,如下所示。模型有兩個分支,上面的分支用于預測對象的類別和框,下面的分支對輸入候選框的像素進行分類,確定該像素是不是屬于某個對象。模型論文 “Mask R-CNN”。
?
總結
以上是生活随笔為你收集整理的2017CS231n笔记_S11分割,定位,检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (zzulioj1005)输入3个整数,
- 下一篇: 理解和实现置换检验