本文旨在介紹深度學習在計算機視覺領域四大基本任務中的應用,包括分類(圖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,再固定住前面的層,只訓練你加的部分。如果你的訓練數據比較多,那么可以多微調幾層,甚至微調所有層。
LeNet-560k參數。網絡基本架構為:conv1 (6) -> pool1 -> conv2 (16) -> pool2 -> fc3 (120) -> fc4 (84) -> fc5 (10) -> softmax。括號中的數字代表通道數,網絡名稱中有5表示它有5層conv/fc層。當時,LeNet-5被成功用于ATM以對支票中的手寫數字進行識別。LeNet取名源自其作者姓LeCun。
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) 基于候選區域的目標檢測算法
基本思路
使用不同大小的窗口在圖像上滑動,在每個區域,對窗口內的區域進行目標定位。即,將每個窗口內的區域前饋網絡,其分類分支用于判斷該區域的類別,回歸分支用于輸出包圍盒?;诨瑒哟暗哪繕藱z測動機是,盡管原圖中可能包含多個目標,但滑動窗對應的圖像局部區域內通常只會有一個目標(或沒有)。因此,我們可以沿用目標定位的思路對窗口內區域逐個進行處理。但是,由于該方法要把圖像所有區域都滑動一遍,而且滑動窗大小不一,這會帶來很大的計算開銷。
R-CNN
先利用一些非深度學習的類別無關的無監督方法,在圖像中找到一些可能包含目標的候選區域。之后,對每個候選區域前饋網絡,進行目標定位,即兩分支(分類+回歸)輸出。其中,我們仍然需要回歸分支的原因是,候選區域只是對包含目標區域的一個粗略的估計,我們需要有監督地利用回歸分支得到更精確的包圍盒預測結果。R-CNN的重要性在于當時目標檢測已接近瓶頸期,而R-CNN利于在ImageNet預訓練模型微調的方法一舉將VOC上mAP由35.1%提升至53.7%,確定了深度學習下目標檢測的基本思路。一個有趣之處是R-CNN論文開篇第一句只有兩個詞"Features matter." 這點明了深度學習方法的核心。
候選區域(region proposal)
候選區域生成算法通?;趫D像的顏色、紋理、面積、位置等合并相似的像素,最終可以得到一系列的候選矩陣區域。這些算法,如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) 基于直接回歸的目標檢測算法
基本思路
基于候選區域的方法由于有兩步操作,雖然檢測性能比較好,但速度上離實時仍有一些差距?;谥苯踊貧w的方法不需要候選區域,直接輸出分類/回歸結果。這類方法由于圖像只需前饋網絡一次,速度通常更快,可以達到實時。
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認為,基于直接回歸的方法性能通常不如基于候選區域方法的原因是,前者會面臨極端的類別不平衡現象?;诤蜻x區域的方法可以通過候選區域過濾掉大部分的背景區域,但基于直接回歸的方法需要直接面對類別不平衡。因此,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。
在對數空間回歸
回歸相比分類優化難度大了很多。L2\ell_損失對異常值比較敏感,由于有平方,異常值會有大的損失值,同時會有很大的梯度,使訓練時很容易發生梯度爆炸。而L1\el損失的梯度不連續。在對數空間中,由于數值的動態范圍小了很多,回歸訓練起來也會容易很多。此外,也有人用平滑的L1\el損失進行優化。預先將回歸目標規范化也會有助于訓練。
語義分割(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讓所有類別一起競爭更好的效果。
-
定位
+關注
關注
5文章
1329瀏覽量
35357 -
分類
+關注
關注
0文章
61瀏覽量
12910 -
計算機視覺
+關注
關注
8文章
1698瀏覽量
45977 -
深度學習
+關注
關注
73文章
5500瀏覽量
121113
原文標題:【計算機視覺必讀干貨】圖像分類、定位、檢測,語義分割和實例分割方法梳理
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論