圖像分類、定位、檢測,語義分割和實例分割方法梳理
新智元專欄
作者:張皓
【新智元導讀】本文作者來自南京大學計算機系機器學習與數據挖掘所(LAMDA),本文直觀系統地梳理了深度學習在計算機視覺領域四大基本任務中的應用,包括圖像分類、定位、檢測、語義分割和實例分割。
本文旨在介紹深度學習在計算機視覺領域四大基本任務中的應用,包括分類(圖a)、定位、檢測(圖b)、語義分割(圖c)、和實例分割(圖d)。
圖像分類(image classification)
給定一張輸入圖像,圖像分類任務旨在判斷該圖像所屬類別。
(1) 圖像分類常用數據集
以下是幾種常用分類數據集,難度依次遞增。http://rodrigob.github.io/are_we_there_yet/build/列舉了各演算法在各數據集上的性能排名。
MNIST60k訓練圖像、10k測試圖像、10個類別、圖像大小1×28×28、內容是0-9手寫數字。
CIFAR-1050k訓練圖像、10k測試圖像、10個類別、圖像大小3×32×32。
CIFAR-10050k訓練圖像、10k測試圖像、100個類別、圖像大小3×32×32。
ImageNet1.2M訓練圖像、50k驗證圖像、1k個類別。2017年及之前,每年會舉行基於ImageNet數據集的ILSVRC競賽,這相當於計算機視覺界奧林匹克。
(2) 圖像分類經典網路結構
基本架構我們用conv代表卷積層、bn代表批量歸一層、pool代表匯合層。最常見的網路結構順序是conv -> bn -> relu -> pool,其中卷積層用於提取特徵、匯合層用於減少空間大小。隨著網路深度的進行,圖像的空間大小將越來越小,而通道數會越來越大。
針對你的任務,如何設計網路?當面對你的實際任務時,如果你的目標是解決該任務而不是發明新演算法,那麼不要試圖自己設計全新的網路結構,也不要試圖從零復現現有的網路結構。找已經公開的實現和預訓練模型進行微調。去掉最後一個全連接層和對應softmax,加上對應你任務的全連接層和softmax,再固定住前面的層,只訓練你加的部分。如果你的訓練數據比較多,那麼可以多微調幾層,甚至微調所有層。
AlexNet60M參數,ILSVRC 2012的冠軍網路。網路基本架構為:conv1 (96) -> pool1 -> conv2 (256) -> pool2 -> conv3 (384) -> conv4 (384) -> conv5 (256) -> pool5 -> fc6 (4096) -> fc7 (4096) -> fc8 (1000) -> softmax。AlexNet有著和LeNet-5相似網路結構,但更深、有更多參數。conv1使用11×11的濾波器、步長為4使空間大小迅速減小(227×227 -> 55×55)。AlexNet的關鍵點是:(1).使用了ReLU激活函數,使之有更好的梯度特性、訓練更快。(2).使用了隨機失活(dropout)。(3).大量使用數據擴充技術。AlexNet的意義在於它以高出第二名10%的性能取得了當年ILSVRC競賽的冠軍,這使人們意識到卷機神經網路的優勢。此外,AlexNet也使人們意識到可以利用GPU加速卷積神經網路訓練。AlexNet取名源自其作者名Alex。
VGG-16/VGG-19138M參數,ILSVRC 2014的亞軍網路。VGG-16的基本架構為:conv1^2 (64) -> pool1 -> conv2^2 (128) -> pool2 -> conv3^3 (256) -> pool3 -> conv4^3 (512) -> pool4 -> conv5^3 (512) -> pool5 -> fc6 (4096) -> fc7 (4096) -> fc8 (1000) -> softmax。 ^3代表重複3次。VGG網路的關鍵點是:(1).結構簡單,只有3×3卷積和2×2匯合兩種配置,並且重複堆疊相同的模塊組合。卷積層不改變空間大小,每經過一次匯合層,空間大小減半。(2).參數量大,而且大部分的參數集中在全連接層中。網路名稱中有16表示它有16層conv/fc層。(3).合適的網路初始化和使用批量歸一(batch normalization)層對訓練深層網路很重要。VGG-19結構類似於VGG-16,有略好於VGG-16的性能,但VGG-19需要消耗更大的資源,因此實際中VGG-16使用得更多。由於VGG-16網路結構十分簡單,並且很適合遷移學習,因此至今VGG-16仍在廣泛使用。VGG-16和VGG-19取名源自作者所處研究組名(Visual Geometry Group)。
GoogLeNet5M參數,ILSVRC 2014的冠軍網路。GoogLeNet試圖回答在設計網路時究竟應該選多大尺寸的卷積、或者應該選匯合層。其提出了Inception模塊,同時用1×1、3×3、5×5卷積和3×3匯合,並保留所有結果。網路基本架構為:conv1 (64) -> pool1 -> conv2^2 (64, 192) -> pool2 -> inc3 (256, 480) -> pool3 -> inc4^5 (512, 512, 512, 528, 832) -> pool4 -> inc5^2 (832, 1024) -> pool5 -> fc (1000)。GoogLeNet的關鍵點是:(1).多分支分別處理,並級聯結果。(2). 為了降低計算量,用了1×1卷積降維。GoogLeNet使用了全局平均匯合替代全連接層,使網路參數大幅減少。GoogLeNet取名源自作者所處單位(Google),其中L大寫是為了向LeNet致敬,而Inception的名字來源於盜夢空間中的"we need to go deeper"梗。
Inception v3/v4在GoogLeNet的基礎上進一步降低參數。其和GoogLeNet有相似的Inception模塊,但將7×7和5×5卷積分解成若干等效3×3卷積,並在網路中後部分把3×3卷積分解為1×3和3×1卷積。這使得在相似的網路參數下網路可以部署到42層。此外,Inception v3使用了批量歸一層。Inception v3是GoogLeNet計算量的2.5倍,而錯誤率較後者下降了3%。Inception v4在Inception模塊基礎上結合了residual模塊(見下文),進一步降低了0.4%的錯誤率。
ResNetILSVRC 2015的冠軍網路。ResNet旨在解決網路加深後訓練難度增大的現象。其提出了residual模塊,包含兩個3×3卷積和一個短路連接(左圖)。短路連接可以有效緩解反向傳播時由於深度過深導致的梯度消失現象,這使得網路加深之後性能不會變差。短路連接是深度學習又一重要思想,除計算機視覺外,短路連接也被用到了機器翻譯、語音識別/合成領域。此外,具有短路連接的ResNet可以看作是許多不同深度而共享參數的網路的集成,網路數目隨層數指數增加。ResNet的關鍵點是:(1). 使用短路連接,使訓練深層網路更容易,並且重複堆疊相同的模塊組合。(2). ResNet大量使用了批量歸一層。(3). 對於很深的網路(超過50層),ResNet使用了更高效的瓶頸(bottleneck)結構(下圖右)。ResNet在ImageNet上取得了超過人的準確率。
下表對比了上述幾種網路結構。
preResNetResNet的改進。preResNet整了residual模塊中各層的順序。相比經典residual模塊(a),(b)將BN共享會更加影響信息的短路傳播,使網路更難訓練、性能也更差;(c)直接將ReLU移到BN後會使該分支的輸出始終非負,使網路表示能力下降;(d)將ReLU提前解決了(e)的非負問題,但ReLU無法享受BN的效果;(e)將ReLU和BN都提前解決了(d)的問題。preResNet的短路連接(e)能更加直接的傳遞信息,進而取得了比ResNet更好的性能。
ResNeXtResNet的另一改進。傳統的方法通常是靠加深或加寬網路來提升性能,但計算開銷也會隨之增加。ResNeXt旨在不改變模型複雜度的情況下提升性能。受精簡而高效的Inception模塊啟發,ResNeXt將ResNet中非短路那一分支變為多個分支。和Inception不同的是,每個分支的結構都相同。ResNeXt的關鍵點是:(1). 沿用ResNet的短路連接,並且重複堆疊相同的模塊組合。(2).多分支分別處理。(3). 使用1×1卷積降低計算量。其綜合了ResNet和Inception的優點。此外,ResNeXt巧妙地利用分組卷積進行實現。ResNeXt發現,增加分支數是比加深或加寬更有效地提升網路性能的方式。ResNeXt的命名旨在說明這是下一代(next)的ResNet。
隨機深度ResNet的改進。旨在緩解梯度消失和加速訓練。類似於隨機失活(dropout),其以一定概率隨機將residual模塊失活。失活的模塊直接由短路分支輸出,而不經過有參數的分支。在測試時,前饋經過全部模塊。隨機深度說明residual模塊是有信息冗餘的。
DenseNet其目的也是避免梯度消失。和residual模塊不同,dense模塊中任意兩層之間均有短路連接。也就是說,每一層的輸入通過級聯(concatenation)包含了之前所有層的結果,即包含由低到高所有層次的特徵。和之前方法不同的是,DenseNet中卷積層的濾波器數很少。DenseNet只用ResNet一半的參數即可達到ResNet的性能。實現方面,作者在大會報告指出,直接將輸出級聯會佔用很大GPU存儲。後來,通過共享存儲,可以在相同的GPU存儲資源下訓練更深的DenseNet。但由於有些中間結果需要重複計算,該實現會增加訓練時間。
目標定位(object localization)
在圖像分類的基礎上,我們還想知道圖像中的目標具體在圖像的什麼位置,通常是以包圍盒的(bounding box)形式。
基本思路
多任務學習,網路帶有兩個輸出分支。一個分支用於做圖像分類,即全連接+softmax判斷目標類別,和單純圖像分類區別在於這裡還另外需要一個「背景」類。另一個分支用於判斷目標位置,即完成回歸任務輸出四個數字標記包圍盒位置(例如中心點橫縱坐標和包圍盒長寬),該分支輸出結果只有在分類分支判斷不為「背景」時才使用。
人體位姿定位/人臉定位
目標定位的思路也可以用於人體位姿定位或人臉定位。這兩者都需要我們對一系列的人體關節或人臉關鍵點進行回歸。
弱監督定位
由於目標定位是相對比較簡單的任務,近期的研究熱點是在只有標記信息的條件下進行目標定位。其基本思路是從卷積結果中找到一些較高響應的顯著性區域,認為這個區域對應圖像中的目標。
目標檢測(object detection)
在目標定位中,通常只有一個或固定數目的目標,而目標檢測更一般化,其圖像中出現的目標種類和數目都不定。因此,目標檢測是比目標定位更具挑戰性的任務。
(1) 目標檢測常用數據集
PASCAL VOC包含20個類別。通常是用VOC07和VOC12的trainval並集作為訓練,用VOC07的測試集作為測試。
MS COCOCOCO比VOC更困難。COCO包含80k訓練圖像、40k驗證圖像、和20k沒有公開標記的測試圖像(test-dev),80個類別,平均每張圖7.2個目標。通常是用80k訓練和35k驗證圖像的並集作為訓練,其餘5k圖像作為驗證,20k測試圖像用於線上測試。
mAP(mean average precision) 目標檢測中的常用評價指標,計算方法如下。當預測的包圍盒和真實包圍盒的交並比大於某一閾值(通常為0.5),則認為該預測正確。對每個類別,我們畫出它的查准率-查全率(precision-recall)曲線,平均準確率是曲線下的面積。之後再對所有類別的平均準確率求平均,即可得到mAP,其取值為[0, 100%]。
交並比(intersection over union, IoU) 演算法預測的包圍盒和真實包圍盒交集的面積除以這兩個包圍盒並集的面積,取值為[0, 1]。交並比度量了演算法預測的包圍盒和真實包圍盒的接近程度,交並比越大,兩個包圍盒的重疊程度越高。
(2) 基於候選區域的目標檢測演算法
基本思路
使用不同大小的窗口在圖像上滑動,在每個區域,對窗口內的區域進行目標定位。即,將每個窗口內的區域前饋網路,其分類分支用於判斷該區域的類別,回歸分支用於輸出包圍盒。基於滑動窗的目標檢測動機是,儘管原圖中可能包含多個目標,但滑動窗對應的圖像局部區域內通常只會有一個目標(或沒有)。因此,我們可以沿用目標定位的思路對窗口內區域逐個進行處理。但是,由於該方法要把圖像所有區域都滑動一遍,而且滑動窗大小不一,這會帶來很大的計算開銷。
R-CNN
先利用一些非深度學習的類別無關的無監督方法,在圖像中找到一些可能包含目標的候選區域。之後,對每個候選區域前饋網路,進行目標定位,即兩分支(分類+回歸)輸出。其中,我們仍然需要回歸分支的原因是,候選區域只是對包含目標區域的一個粗略的估計,我們需要有監督地利用回歸分支得到更精確的包圍盒預測結果。R-CNN的重要性在於當時目標檢測已接近瓶頸期,而R-CNN利於在ImageNet預訓練模型微調的方法一舉將VOC上mAP由35.1%提升至53.7%,確定了深度學習下目標檢測的基本思路。一個有趣之處是R-CNN論文開篇第一句只有兩個詞"Features matter." 這點明了深度學習方法的核心。
候選區域(region proposal)
候選區域生成演算法通常基於圖像的顏色、紋理、面積、位置等合併相似的像素,最終可以得到一系列的候選矩陣區域。這些演算法,如selective search或EdgeBoxes,通常只需要幾秒的CPU時間,而且,一個典型的候選區域數目是2k,相比於用滑動窗把圖像所有區域都滑動一遍,基於候選區域的方法十分高效。另一方面,這些候選區域生成演算法的查准率(precision)一般,但查全率(recall)通常比較高,這使得我們不容易遺漏圖像中的目標。
Fast R-CNN
R-CNN的弊端是需要多次前饋網路,這使得R-CNN的運行效率不高,預測一張圖像需要47秒。Fast R-CNN同樣基於候選區域進行目標檢測,但受SPPNet啟發,在Fast R-CNN中,不同候選區域的卷積特徵提取部分是共享的。也就是說,我們先將整副圖像前饋網路,並提取conv5卷積特徵。之後,基於候選區域生成演算法的結果在卷積特徵上進行採樣,這一步稱為興趣區域匯合。最後,對每個候選區域,進行目標定位,即兩分支(分類+回歸)輸出。
興趣區域匯合(region of interest pooling, RoI pooling)
興趣區域匯合旨在由任意大小的候選區域對應的局部卷積特徵提取得到固定大小的特徵,這是因為下一步的兩分支網路由於有全連接層,需要其輸入大小固定。其做法是,先將候選區域投影到卷積特徵上,再把對應的卷積特徵區域空間上劃分成固定數目的網格(數目根據下一步網路希望的輸入大小確定,例如VGGNet需要7×7的網格),最後在每個小的網格區域內進行最大匯合,以得到固定大小的匯合結果。和經典最大匯合一致,每個通道的興趣區域匯合是獨立的。
Faster R-CNN
Fast R-CNN測試時每張圖像前饋網路只需0.2秒,但瓶頸在於提取候選區域需要2秒。Faster R-CNN不再使用現有的無監督候選區域生成演算法,而利用候選區域網路從conv5特徵中產生候選區域,並且將候選區域網路集成到整個網路中端到端訓練。Faster R-CNN的測試時間是0.2秒,接近實時。後來有研究發現,通過使用更少的候選區域,可以在性能損失不大的條件下進一步提速。
候選區域網路(region proposal networks, RPN)在卷積特徵上的通過兩層卷積(3×3和1×1卷積),輸出兩個分支。其中,一個分支用於判斷每個錨盒是否包含了目標,另一個分支對每個錨盒輸出候選區域的4個坐標。候選區域網路實際上延續了基於滑動窗進行目標定位的思路,不同之處在於候選區域網路在卷積特徵而不是在原圖上進行滑動。由於卷積特徵的空間大小很小而感受野很大,即使使用3×3的滑動窗,也能對應於很大的原圖區域。Faster R-CNN實際使用了3組大小(128×128、256×256、512×512)、3組長寬比(1:1、1:2、2:1),共計9個錨盒,這裡錨盒的大小已經超過conv5特徵感受野的大小。對一張1000×600的圖像,可以得到20k個錨盒。
為什麼要使用錨盒(anchor box)
錨盒是預先定義形狀和大小的包圍盒。使用錨盒的原因包括:(1). 圖像中的候選區域大小和長寬比不同,直接回歸比對錨盒坐標修正訓練起來更困難。(2). conv5特徵感受野很大,很可能該感受野內包含了不止一個目標,使用多個錨盒可以同時對感受野內出現的多個目標進行預測。(3). 使用錨盒也可以認為這是向神經網路引入先驗知識的一種方式。我們可以根據數據中包圍盒通常出現的形狀和大小設定一組錨盒。錨盒之間是獨立的,不同的錨盒對應不同的目標,比如高瘦的錨盒對應於人,而矮胖的錨盒對應於車輛。
R-FCN
Faster R-CNN在RoI pooling之後,需要對每個候選區域單獨進行兩分支預測。R-FCN旨在使幾乎所有的計算共享,以進一步加快速度。由於圖像分類任務不關心目標具體在圖像的位置,網路具有平移不變性。但目標檢測中由於要回歸出目標的位置,所以網路輸出應當受目標平移的影響。為了緩和這兩者的矛盾,R-FCN顯式地給予深度卷積特徵各通道以位置關係。在RoI匯合時,先將候選區域劃分成3×3的網格,之後將不同網格對應於候選卷積特徵的不同通道,最後每個網格分別進行平均匯合。R-FCN同樣採用了兩分支(分類+回歸)輸出。
小結
基於候選區域的目標檢測演算法通常需要兩步:第一步是從圖像中提取深度特徵,第二步是對每個候選區域進行定位(包括分類和回歸)。其中,第一步是圖像級別計算,一張圖像只需要前饋該部分網路一次,而第二步是區域級別計算,每個候選區域都分別需要前饋該部分網路一次。因此,第二步佔用了整體主要的計算開銷。R-CNN, Fast R-CNN, Faster R-CNN, R-FCN這些演算法的演進思路是逐漸提高網路中圖像級別計算的比例,同時降低區域級別計算的比例。R-CNN中幾乎所有的計算都是區域級別計算,而R-FCN中幾乎所有的計算都是圖像級別計算。
(3) 基於直接回歸的目標檢測演算法
基本思路
基於候選區域的方法由於有兩步操作,雖然檢測性能比較好,但速度上離實時仍有一些差距。基於直接回歸的方法不需要候選區域,直接輸出分類/回歸結果。這類方法由於圖像只需前饋網路一次,速度通常更快,可以達到實時。
YOLO
將圖像劃分成7×7的網格,其中圖像中的真實目標被其劃分到目標中心所在的網格及其最接近的錨盒。對每個網格區域,網路需要預測:每個錨盒包含目標的概率(不包含目標時應為0,否則為錨盒和真實包圍盒的IoU)、每個錨盒的4個坐標、該網格的類別概率分布。每個錨盒的類別概率分布等於每個錨盒包含目標的概率乘以該網格的類別概率分布。相比基於候選區域的方法,YOLO需要預測包含目標的概率的原因是,圖像中大部分的區域不包含目標,而訓練時只有目標存在時才對坐標和類別概率分布進行更新。
YOLO的優點在於:(1). 基於候選區域的方法的感受野是圖像中的局部區域,而YOLO可以利用整張圖像的信息。(2). 有更好的泛化能力。
YOLO的局限在於:(1). 不能很好處理網格中目標數超過預設固定值,或網格中有多個目標同時屬於一個錨盒的情況。(2). 對小目標的檢測能力不夠好。(3). 對不常見長寬比的包圍盒的檢測能力不強。(4). 計算損失時沒有考慮包圍盒大小。大的包圍盒中的小偏移和小的包圍盒中的小偏移應有不同的影響。
SSD
相比YOLO,SSD在卷積特徵後加了若干卷積層以減小特徵空間大小,並通過綜合多層卷積層的檢測結果以檢測不同大小的目標。此外,類似於Faster R-CNN的RPN,SSD使用3×3卷積取代了YOLO中的全連接層,以對不同大小和長寬比的錨盒來進行分類/回歸。SSD取得了比YOLO更快,接近Faster R-CNN的檢測性能。後來有研究發現,相比其他方法,SSD受基礎模型性能的影響相對較小。
FPN
之前的方法都是取高層卷積特徵。但由於高層特徵會損失一些細節信息,FPN融合多層特徵,以綜合高層、低解析度、強語義信息和低層、高解析度、弱語義信息來增強網路對小目標的處理能力。此外,和通常用多層融合的結果做預測的方法不同,FPN在不同層獨立進行預測。FPN既可以與基於候選區域的方法結合,也可以與基於直接回歸的方法結合。FPN在和Faster R-CNN結合後,在基本不增加原有模型計算量的情況下,大幅提高對小目標的檢測性能。
RetinaNet
RetinaNet認為,基於直接回歸的方法性能通常不如基於候選區域方法的原因是,前者會面臨極端的類別不平衡現象。基於候選區域的方法可以通過候選區域過濾掉大部分的背景區域,但基於直接回歸的方法需要直接面對類別不平衡。因此,RetinaNet通過改進經典的交叉熵損失以降低對已經分的很好的樣例的損失值,提出了焦點(focal)損失函數,以使模型訓練時更加關注到困難的樣例上。RetinaNet取得了接近基於直接回歸方法的速度,和超過基於候選區域的方法的性能。
(4) 目標檢測常用技巧
非最大抑制(non-max suppression, NMS)
目標檢測可能會出現的一個問題是,模型會對同一目標做出多次預測,得到多個包圍盒。NMS旨在保留最接近真實包圍盒的那一個預測結果,而抑制其他的預測結果。NMS的做法是,首先,對每個類別,NMS先統計每個預測結果輸出的屬於該類別概率,並將預測結果按該概率由高至低排序。其次,NMS認為對應概率很小的預測結果並沒有找到目標,所以將其抑制。然後,NMS在剩餘的預測結果中,找到對應概率最大的預測結果,將其輸出,並抑制和該包圍盒有很大重疊(如IoU大於0.3)的其他包圍盒。重複上一步,直到所有的預測結果均被處理。
在線困難樣例挖掘(online hard example mining, OHEM)
目標檢測的另一個問題是類別不平衡,圖像中大部分的區域是不包含目標的,而只有小部分區域包含目標。此外,不同目標的檢測難度也有很大差異,絕大部分的目標很容易被檢測到,而有一小部分目標卻十分困難。OHEM和Boosting的思路類似,其根據損失值將所有候選區域進行排序,並選擇損失值最高的一部分候選區域進行優化,使網路更關注於圖像中更困難的目標。此外,為了避免選到相互重疊很大的候選區域,OHEM對候選區域根據損失值進行NMS。
在對數空間回歸
回歸相比分類優化難度大了很多。L2ell_損失對異常值比較敏感,由於有平方,異常值會有大的損失值,同時會有很大的梯度,使訓練時很容易發生梯度爆炸。而L1el損失的梯度不連續。在對數空間中,由於數值的動態範圍小了很多,回歸訓練起來也會容易很多。此外,也有人用平滑的L1el損失進行優化。預先將回歸目標規範化也會有助於訓練。
語義分割(semantic segmentation)
語義分割是目標檢測更進階的任務,目標檢測只需要框出每個目標的包圍盒,語義分割需要進一步判斷圖像中哪些像素屬於哪個目標。
(1) 語義分割常用數據集
PASCAL VOC 2012 1.5k訓練圖像,1.5k驗證圖像,20個類別(包含背景)。
MS COCO COCO比VOC更困難。有83k訓練圖像,41k驗證圖像,80k測試圖像,80個類別。
(2) 語義分割基本思路
基本思路
逐像素進行圖像分類。我們將整張圖像輸入網路,使輸出的空間大小和輸入一致,通道數等於類別數,分別代表了各空間位置屬於各類別的概率,即可以逐像素地進行分類。
全卷積網路+反卷積網路
為使得輸出具有三維結構,全卷積網路中沒有全連接層,只有卷積層和匯合層。但是隨著卷積和匯合的進行,圖像通道數越來越大,而空間大小越來越小。要想使輸出和輸入有相同的空間大小,全卷積網路需要使用反卷積和反匯合來增大空間大小。
反卷積(deconvolution)/轉置卷積(transpose convolution)
標準卷積的濾波器在輸入圖像中進行滑動,每次和輸入圖像局部區域點乘得到一個輸出,而反卷積的濾波器在輸出圖像中進行滑動,每個由一個輸入神經元乘以濾波器得到一個輸出局部區域。反卷積的前向過程和卷積的反向過程完成的是相同的數學運算。和標準卷積的濾波器一樣,反卷積的濾波器也是從數據中學到的。
反最大匯合(max-unpooling)
通常全卷積網路是對稱的結構,在最大匯合時需要記下最大值所處局部區域位置,在對應反最大匯合時將對應位置輸出置為輸入,其餘位置補零。反最大匯合可以彌補最大匯合時丟失的空間信息。反最大匯合的前向過程和最大匯合的反向過程完成的是相同的數學運算。
(3) 語義分割常用技巧
擴張卷積(dilated convolution)
經常用於分割任務以增大有效感受野的一個技巧。標準卷積操作中每個輸出神經元對應的輸入局部區域是連續的,而擴張卷積對應的輸入局部區域在空間位置上不連續。擴張卷積保持卷積參數量不變,但有更大的有效感受野。
條件隨機場(conditional random field, CRF)
條件隨機場是一種概率圖模型,常被用於微修全卷積網路的輸出結果,使細節信息更好。其動機是距離相近的像素、或像素值相近的像素更可能屬於相同的類別。此外,有研究工作用循環神經網路(recurrent neural networks)近似條件隨機場。條件隨機場的另一弊端是會考慮兩兩像素之間的關係,這使其運行效率不高。
利用低層信息
綜合利用低層結果可以彌補隨著網路加深丟失的細節和邊緣信息。
實例分割(instance segmentation)
語義分割不區分屬於相同類別的不同實例。例如,當圖像中有多隻貓時,語義分割會將兩隻貓整體的所有像素預測為「貓」這個類別。與此不同的是,實例分割需要區分出哪些像素屬於第一隻貓、哪些像素屬於第二隻貓。
基本思路
目標檢測+語義分割。先用目標檢測方法將圖像中的不同實例框出,再用語義分割方法在不同包圍盒內進行逐像素標記。
Mask R-CNN
用FPN進行目標檢測,並通過添加額外分支進行語義分割(額外分割分支和原檢測分支不共享參數),即Master R-CNN有三個輸出分支(分類、坐標回歸、和分割)。此外,Mask R-CNN的其他改進有:(1). 改進了RoI匯合,通過雙線性差值使候選區域和卷積特徵的對齊不因量化而損失信息。(2). 在分割時,Mask R-CNN將判斷類別和輸出模板(mask)這兩個任務解耦合,用sigmoid配合對率(logistic)損失函數對每個類別的模板單獨處理,取得了比經典分割方法用softmax讓所有類別一起競爭更好的效果。
參考文獻(略)
作者簡介
張皓:南京大學計算機系機器學習與數據挖掘所(LAMDA)碩士生,研究方向為計算機視覺和機器學習,特別是視覺識別和深度學習。個人主頁http://lamda.nju.edu.cn/zhangh/。
論文下載:https://pan.baidu.com/s/1mjJi0YW
加入社群
新智元AI技術+產業社群招募中,歡迎對AI技術+產業落地感興趣的同學,加小助手微信號:aiera2015_1入群;通過審核後我們將邀請進群,加入社群後務必修改群備註(姓名-公司-職位;專業群審核較嚴,敬請諒解)。
此外,新智元AI技術+產業領域社群(智能汽車、機器學習、深度學習、神經網路等)正在面向正在從事相關領域的工程師及研究人員進行招募。
加入新智元技術社群 共享AI+開放平台
※五天拿下Google、Facebook、Airbnb 等矽谷五家公司Offer
TAG:新智元 |