分割知識點總結
1 什么是分割
原始圖像,(b)語義分割,(c)實例分割和(d)全景分割。
盡管FCN意義重大,在當時來講效果也相當驚人,但是FCN本身仍然有許多局限。比如:
1)沒有考慮全局信息;
2)無法解決實例分割問題;
3)速度遠不能達到實時;
4)不能夠應對諸如3D點云等不定型數據基于此。
下圖給出了部分研究成果與FCN的關系。
2 FCN
目前在圖像分割領域比較成功的算法,有很大一部分都來自于同一個先驅:Long等人提出的Fully Convolutional Network(FCN),FCN用卷積層和池化層替代了分類網絡中的全連接層,從而使得網絡結構可以適應像素級的稠密估計任務。
全連接層轉換成卷積層
連接不同尺度下的層
FCN可以與大部分分類網絡有效結合,下表中給出了在PASCAL VOC 2011數據庫下,FCN與AlexNet、FCN-VGG16和FCN-GoogLeNet結合的結果。
分割任務中的編碼器encode與解碼器decode;
分割任務中的編碼器結構比較類似,大多來源于用于分類任務的網絡結構,比如VGG。解碼器的不同在很大程度上決定了一個基于編解碼結構的分割網絡的效果。
2)SegNet
SegNet的編碼器結構與解碼器結構是一一對應的,即一個decoder具有與其對應的encoder相同的空間尺寸和通道數。對于基礎SegNet結構,二者各有13個卷積層,其中編碼器的卷積層就對應了VGG16網絡結構中的前13個卷積層。SegNet與FCN的對應結構相比,體量要小很多。這主要得益于SegNet中為了權衡計算量而采取的操作:用記錄的池化過程的位置信息替代直接的反卷積操作。
3)解碼器變體
4、感受野與分辨率的控制術—空洞卷積
1)緒論
分割任務是一個像素級別的任務,因此需要在輸入的空間尺寸下對每個像素都有分割的結果。換句話說,如果輸入的空間尺寸是HxW,那么輸出也需要是HxW的。為了提高網絡性能,許多結構采用了池化或striding操作來增加感受野,同時提升遠程信息的獲取能力。但是這樣的結構也帶來了空間分辨率的下降。比如之前提到的編解碼結構中的編碼器。
在空洞卷積提出以前,大部分的空間尺寸恢復工作都是由上采樣或反卷積實現的。前者通常是通過線性或雙線性變換進行插值,雖然計算量小,但是效果有時不能滿足要求;后者則是通過卷積實現,雖然精度高,但是參數計算量增加了。
空洞卷積:調整感受野(多尺度信息)的同時控制分辨率的神器。
(1) 控制感受野
下圖是空洞卷積結構的示意圖,從左到右比率(rate)分別為1、6和24,比率可以粗暴理解為卷積核內相鄰兩個權重之間的距離。從圖中可以看出,當比率為1的時候,空洞卷積退化為常見的卷積。
(2) 控制分辨率
除了維持空間分辨率,空洞卷積也可以像標準卷積一樣通過設置輸出步長(output_stride)實現輸出特征圖分辨率的控制。
3)網絡結構
(1) 網絡結構介紹
從左到右分別是金字塔結構、編解碼結構、空洞卷積結構和空間金字塔池化結構。
4)實驗及分析
(1)卷積核的有效權重
當空洞卷積的區域與特征圖實際空間尺寸相近的時候,實際有效的卷積核權重是非常有限的。在極端條件下,當空洞卷積的比率接近特征圖空間尺寸時,一個3x3的卷積核就退化成了1x1的卷積核。
為了克服這個問題,DeepLabv3中采用的做法是對最后一層特征圖應用全局池化(global pooling),再將其送入一個1x1的卷積層中,最后,通過雙線性上采樣實現希望的空間分辨率。
(2) 實驗總結
DeepLabv3給出了諸多條件下的剝離實驗,首先給出整體結論:
輸出步長為8時效果比更大的步長要好;
基于ResNet-101的結構比基于ResNet-50的要好;
用變化的比率比11的比率要好;
加上多尺度輸入和左右翻折數據效果更好;
用MS COCO下預訓練的模型效果更好。
4、快速道路場景分割—ENet
(1)緒論
雖然深度神經網絡在計算機視覺領域的有效性已經是毋容置疑的了,但是大部分神經網絡仍然受限于計算量、存儲空間、運算速度等因素,無法應用于實際的計算機視覺任務。
以圖像分割為例,前面提到的SegNet的速度已經相當快了,但是仍然遠不能達到實時分割的目的。比如道路場景分割任務,至少需要達到10fps,而SegNet的速度只能實現1fps左右。
(2) 實時,該考慮什么?
特征圖分辨率
為了減小計算量、增大感受野,許多網絡都采用縮小特征圖分辨率的結構(比如前面提到的SegNet)。但是,過度縮小特征圖分辨率則會造成嚴重的信息丟失,從而造成分割精度的下降。因此,要盡可能約束下采樣的比率。目前被廣泛接受的下降比率不超過1/8。那么還要繼續增大感受野該怎么辦呢?沒錯,就是用到空洞卷積了。
提前下采樣
解碼器規模
非線性操作
分解卷積層
考慮到卷積層權重其實有相當大的冗余,可以用nx1和1xn的兩個卷積層級聯(對稱卷積)來替代一個nxn的卷積層來縮小計算量。具體地,用n=5的對稱卷積的計算量近似于一個3x3的普通卷積,但是由于引入了非線性,這樣的操作還能夠增加函數的多樣性。
(6) 空洞卷積
引入空洞卷積可以減小計算量、增大感受野,同時維護了特征圖的分辨率。為了使空洞卷積發揮最大的作用,ENet中穿插地使用了普通卷積、對稱卷積和空洞卷積。
(3)網絡結構
ENet主要由兩種類型的網絡結構構成,如下圖所示:
其中,圖(a)對應的是ENet的初始模塊,也就是前文提到的縮小輸入圖像分辨率,從而去除視覺冗余、減小計算量的部分;圖(b)對應的則是重復使用,從而構建網絡主體的bottleneck模塊。
5、以RNN形式做CRF后處理—CRFasRNN
(1)條件隨機場(CRF或CRFs)與隱馬爾科夫模型有著千絲萬縷的聯系。
馬爾科夫鏈是指具有馬爾可夫性質且存在于離散指數集合狀態空間內的隨機過程,之前走過的每一步之間是條件獨立的,即上一步走的方向不會影響這一步的方向。由于存在的選擇只有四個(舉例:上下左右),即選擇離散,所以我們稱這個過程為馬爾科夫鏈。當選擇連續時,稱為馬爾科夫過程(Markov Process)。
(2)
隱式馬爾科夫模型(HMM,Hidden Markov Model)是關于時序的概率模型,描述由一個隱藏的馬爾科夫鏈隨機生成的不可觀測的狀態隨機序列,再由各個狀態生成一個觀測而產生觀測序列的過程。隱藏的部分稱為狀態序列;生成的觀測組成的隨機序列稱為觀測序列。
什么是CRF?
CRF是一種判別式概率模型,是隨機場的一種,結合了最大熵模型和隱式馬爾科夫模型的特點;CRF是一種無向圖模型,圖中的頂點代表隨機變量,頂點間的連線代表隨機變量間的相依關系。其條件概率分布模型可以表述為P(Y|X),即給定一組隨機變量的條件下,隨機變量Y的馬爾科夫隨機場(MRF,Markov Random Field)。
(3)網絡結構
那么,如果用一個FCN模型完成第一階段的分割任務,用RNN形式的CRF完成第二階段的后處理(CRF-RNN),則可以搭建如下形式的端到端分割網絡結構模型:
6、多感受野的金字塔結構—PSPNet
(1)為什么要用金字塔結構提取特征
由于金字塔結構并行考慮了多個感受野下的目標特征,從而對于尺寸較大或尺寸過小的目標有更好的識別效果。
(2)金字塔池化模型
下圖是論文中提出的基于金字塔池化模型的網絡結構。其中,虛線框出來的部分屬于金字塔池化模型。
實驗中分別用了1x1、2x2、3x3和6x6四個尺寸,最后用1x1的卷積層計算每個金字塔層的權重,再通過雙線性恢復成原始尺寸。
最終得到的特征尺寸是原始圖像的1/8。最后在通過卷積將池化得到的所有上下文信息整合,生成最終的分割結果。
7、全局特征與局部特征的交響曲—ParseNet
(1)理論感受野是真的嗎?
大家已經能夠體會到感受野對于分割網絡效果的影響有多么巨大了。簡單來說,感受野越大,網絡所能“看見”的區域就越大,從而能夠用于分析的信息就更多。由此,分割的效果也很有可能更好。
基于這種考慮,許多算法嘗試通過改變自身網絡結構設計來增大網絡的理論感受野,認為這樣就能夠為網絡帶來更多的信息。盡管理論感受野的增大的確能夠增加網絡所獲取的上下文信息,但是,理論感受野難道真的就代表了算法實際看見的區域嗎?
網絡實際上能夠覆蓋的區域也就能達到整圖的1/4左右,遠遠沒有達到理論感受野的尺寸。那么究竟該如何利用全部的圖像上下文信息呢?ParseNet提出了一種融合全局信息與局部信息的方法,下面來具體介紹一下。
(2)全局特征的提取與融合
如下圖所示,ParseNet通過全局池化提取圖像的全局特征,并將其與局部特征融合起來。這種融合在過程中需要考慮兩個主要問題:融合的時機與尺度的歸一化。
融合時機
全局特征與局部特征的融合可以發生在兩個節點:分別是訓練分類器之前(early fusion)和訓練分類器之后(late fusion)。其中,前者是將兩個特征融合后,作為一個整體共同送入分類網絡,訓練分類器;后者則是以兩個特征為輸入,分別訓練其對應的分類器,最后再將分類的結果整合。
歸一化
8、多分辨率特征融合—RefineNet
(1)恢復空間分辨率
在分割任務中,為了提取更復雜的特征、構建更深的神經網絡,許多算法往往會以犧牲空間分辨率的方式,在盡量少地增加計算量的前提下,換取特征通道數的增加。雖然這種方式有諸多優點,但是也有一個明顯的缺陷——空間分辨率的下降。
下面我們具體聊一下RefineNet的網絡結構和設計思想。
(2)全局特征的提取與融合
RefineNet總共包括三大模塊:殘差卷積模塊(RCU,Residual Convolution Unit)、多分辨率融合模塊(Multi-Resolution Fusion)和串聯殘差池化模塊(Chained Residual Pooling)。
RCU模塊
RCU模塊的結構如下圖所示:
每個RCU模塊包括一個ReLU層和一個卷積層,網絡結構中,每個分辨率下應用兩個串聯的RCU模塊,用于提取該分辨率下的分割結果的殘差,最后以相加的形式校正該分辨率下的原始分割結果。
多分辨率融合
下圖是多分辨率融合部分的詳細結構:
在給定了多分辨率下經過處理的分割結果后,各個結果將依次通過一個卷積層和一個上采樣層,形成空間分辨率統一的分割結果圖。
具體而言,網絡首先通過一個卷積層處理輸入進來的不同分辨率下的分割結果,從而學習得到各通道下的適應性權重。隨后,應用上采樣,統一所有通道下的分割結果,并將各通道結果求和。求和結果送入下一個模塊。
串聯殘差池化
下圖是這一模塊的結構圖:
這個模塊主要由一個殘差結構、一個池化層和一個卷積層組成。其中,池化層加卷積層用來習得用于校正的殘差。值得注意的是,RefineNet在這里用了一個比較巧妙的做法:用前一級的殘差結果作為下一級的殘差學習模塊的輸入,而非直接從校正后的分割結果上再重新習得一個獨立的殘差。
這樣做的目的,RefineNet的作者是這樣解釋的:可以使得后面的模塊在前面殘差的基礎上,繼續深入學習,得到一個更好的殘差校正結果。
最后,網絡又經過一個一個RCU模塊,平衡所有的權重,最終得到與輸入空間尺寸相同的分割結果。
(3)網絡結構變種
單個RefineNet
2次級聯的RefineNet
4次級聯2倍RefineNet
除了語義分割,RefineNet還可以用于目標理解(object parsing)。下圖是RefineNet在目標理解上的直觀結果:
9、用BRNN做分割—ReSeg
(1)簡單說說BRNN
什么是循環神經網絡?
不同于卷積神經網絡(CNN,Convolutional Neural Network)通常以圖塊(patches)為輸入,循環神經網絡(RNN,Recurrent Neural Network)的輸入是序列形式的。即使在處理圖像時,通常也需要對圖像矩陣進行展開(flatten)操作,再應用RNN。輸入序列數據后,RNN在序列的演進方向遞歸所有節點,并將其定向鏈式連接。
下圖是一個簡單的RNN單元示意圖:
為什么要用RNN?
什么是BRNN?
BRNN是雙向循環神經網絡(Bi-directional RNN)的縮寫,屬于循環神經網絡的一種。基礎RNN只能依據之前時刻的時序信息來預測下一時刻的輸出,但是有些問題中需要聯系上之前和未來狀態,共同進行預測。BRNN由兩個方向不同的RNN堆疊而成,同時處理過去和未來信息。下圖是BRNN的示意圖:
(2)ReSeg:用BRNN做分割
ReSeg是基于圖像分割模型ReNet提出的。因此,我們首先來看一下ReNet。
10、BRNN下的RGB-D分割—LSTM-CF
(1)RGB-D分割
RGB-D分割中的D指的是“Depth”,即“深度”,也就是相機到物體在實際空間中的距離。
引入深度信息后,其提供的額外結構信息能夠有效輔助復雜和困難場景下的分割。比如,與室外場景相比,由于語義類別繁雜、遮擋嚴重、目標外觀差異較大等原因,室內場景的分割任務要更難實現。此時,在結合深度信息的情況下,能夠有效降低分割的難度。
11、實例分割模型—DeepMask
(1)實例分割
實例分割任務有其自己的任務需求與度量矩陣。簡單來講,語義分割只分割視野內目標的類型,而實例分割則不僅分割類型,同時還需要分割同類型的目標是否為同一個實例。
(2)DeepMask
DeepMask網絡其實實現了三個任務:前背景分割、前景語義分割與前景實例分割。這三個任務是基于同一個網絡結構進行的,只是各自有單獨的分支。下圖是DeepMask的網絡模型概況:
與大部分分割網絡相同,DeepMask同樣應用了VGG模型作為特征提取的主要模塊,在訓練中也用了ImageNet下訓練得到的VGG參數初始化這一部分模型。DeepMask用兩條分支來分別實現分割任務和前景目標識別任務。
分割部分
分割部分要實現的是對圖塊內場景的類別的識別,由一個1x1卷積層后接分類層實現。這里的分類是稠密的,也就是對每一個像素都有其對應的標注。
前景Score部分
網絡的第二個分支要完成的任務是,判斷一個圖塊是否滿足下面兩個要求:
目標位于圖塊的正中心附近
目標完整存在于圖塊中(在某一尺度范圍內)
12、全景分割是什么?
(1)全景分割
與之前介紹的語義分割與實例分割不同,全景分割任務(Panoptic Segmentation)要求圖像中的每個像素點都必須被分配給一個語義標簽和一個實例id。其中,語義標簽指的是物體的類別,而實例id則對應同類物體的不同編號。
全景分割的實現也面臨著其他難題。比如,與語義分割相比,全景分割的困難在于要優化全連接網絡的設計,使其網絡結構能夠區分不同類別的實例;而與實例分割相比,由于全景分割要求每個像素只能有一個類別和id標注,因此不能出現實例分割中的重疊現象。
全景分割的具體分割形式有以下兩點要求:
圖像中的每個像素點都有一個對應的語義類別和一個實例id,如果無法確定可以給予空標注。
所有語義類別要么屬于stuff,要么屬于things,不能同時屬于二者;且stuff類別沒有實例id(即id統一為一個)。
全景分割與語義分割的關系:
如果所有的類別都是stuff,那么全景分割除了度量與語義分割不同外,其它相同。
全景分割與實例分割的關系:
全景分割中不允許重疊,但實例分割可以;此外,實例分割需要每個分割的置信概率,但全景分割不需要。盡管如此,全景分割內為了輔助機器的辨識,也是可以引入置信概率的概念的。
(2)度量矩陣
為了將stuff類別和things類別統一在一個分割任務下,全景分割的度量應當具有以下三個性質:
完整性:對stuff和things類別一視同仁,包含任務中的所有方面。
可解釋性:度量需要具有能夠可定義、可理解、可交流的性質。
簡單:有效的度量應當簡潔、可復現。
基于此,全景分割的度量被分為了分割匹配(segment matching)和全景質量計算(panoptic quality computation)兩個部分。
分割匹配:要求IoU(Intersection over Union)嚴格大于0.5才算匹配,且不可以有重疊區域,限制一個像素只能對應一個標簽。
全景質量計算:對每個類別的全景分割質量的單獨計算結果取平均,從而保證分割結果對類別不敏感。
審核編輯:劉清
-
編解碼器
+關注
關注
0文章
258瀏覽量
24235 -
圖像分割
+關注
關注
4文章
182瀏覽量
18000 -
計算機視覺
+關注
關注
8文章
1698瀏覽量
45993 -
FCN
+關注
關注
0文章
9瀏覽量
8760 -
深度神經網絡
+關注
關注
0文章
61瀏覽量
4527
原文標題:圖像分割知識點總結
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論