圖像分割綜述


  本篇隨筆參考https://blog.csdn.net/electech6/article/details/95242875https://cloud.tencent.com/developer/article/1526189

  圖像分割是計算機視覺研究中的一個經典難題,已經成為圖像理解領域關注的一個熱點,圖像分割是圖像分析的第一步,是計算機視覺的基礎,是圖像理解的重要組成部分,同時也是圖像處理中最困難的問題之一。圖像分割是指根據灰度、彩色、空間紋理、幾何形狀等特征把圖像划分成若干個互不相交的區域,使得這些特征在同一區域內表現出一致性或相似性,而在不同區域間表現出明顯的不同。近些年來隨着深度學習技術的逐步深入,圖像分割技術有了突飛猛進的發展,該技術相關的場景物體分割、人體前背景分割、人臉人體Parsing、三維重建等技術已經在無人駕駛、增強現實、安防監控等行業都得到廣泛的應用。到目前為止,還不存在一個通用的完美的圖像分割的方法,但是對於圖像分割的一般性規律則基本上已經達成的共識,已經產生了相當多的研究成果和方法。

一、傳統分割方法

  傳統的分割方法利用數字圖像處理、拓撲學、數學等方面的知識來進行圖像分割。隨着算力的增加以及深度學習的不斷發展,一些傳統的分割方法在效果上已經不能與基於深度學習的分割方法相比,但是一些經典的分割方法依然有適用性和實用性,也值得我們去借鑒。

1、基於閾值的分割方法

  閾值法的基本思想是基於圖像的灰度特征來計算一個或多個灰度閾值,並將圖像中每個像素的灰度值與閾值作比較,最后將像素根據比較結果分到合適的類別中。因此,該方法最為關鍵的一步就是按照某個准則函數來求解最佳灰度閾值。

  閾值法特別適用於目標和背景占據不同灰度級范圍的圖。
  圖像若只有目標和背景兩大類,那么只需要選取一個閾值進行分割,此方法成為單閾值分割;但是如果圖像中有多個目標需要提取,單一閾值的分割就會出現作物,在這種情況下就需要選取多個閾值將每個目標分隔開,這種分割方法相應的成為多閾值分割

閥值分割方法的優缺點:

  • 計算簡單,效率較高;
  • 只考慮像素點灰度值本身的特征,一般不考慮空間特征,因此對噪聲比較敏感,魯棒性不高。

  閾值分割方法的最關鍵就在於閾值的選擇。若將智能遺傳算法應用在閥值篩選上,選取能最優分割圖像的閥值,這可能是基於閥值分割的圖像分割法的發展趨勢。

2、基於區域的圖像分割方法

  基於區域的分割方法是以直接尋找區域為基礎的分割技術,基於區域提取方法有兩種基本形式:一種是區域生長,從單個像素出發,逐步合並以形成所需要的分割區域;另一種是從全局出發,逐步切割至所需的分割區域。

區域增長

  區域生長是從一組代表不同生長區域的種子像素開始,接下來將種子像素鄰域里符合條件的像素合並到種子像素所代表的生長區域中,並將新添加的像素作為新的種子像素繼續合並過程,知道找不到符合條件的新像素為止。

該方法的關鍵是選擇合適的初始種子像素以及合理的生長准則。

區域生長算法需要解決的三個問題:

(1)選擇或確定一組能正確代表所需區域的種子像素;
(2)確定在生長過程中能將相鄰像素包括進來的准則;
(3)指定讓生長過程停止的條件或規則。

區域分裂合並

  區域生長是從某個或者某些像素點出發,最終得到整個區域,進而實現目標的提取。而分裂合並可以說是區域生長的逆過程,從整幅圖像出發,不斷的分裂得到各個子區域,然后再把前景區域合並,得到需要分割的前景目標,進而實現目標的提取。其實如果理解了上面的區域生長算法這個區域分裂合並算法就比較好理解啦。
四叉樹分解法就是一種典型的區域分裂合並法,基本算法如下:

(1)對於任一區域,如果H(Ri)=FALSE就將其分裂成不重疊的四等分;
(2)對相鄰的兩個區域Ri和Rj,它們也可以大小不同(即不在同一層),如果條件H(RiURj)=TURE滿足,就將它們合並起來;
(3)如果進一步的分裂或合並都不可能,則結束。
其中R代表整個正方形圖像區域,P代表邏輯詞。
區域分裂合並算法優缺點:
(1)對復雜圖像分割效果好;
(2)算法復雜,計算量大;
(3)分裂有可能破怪區域的邊界。

  在實際應用當中通常將區域生長算法和區域分裂合並算法結合使用,該類算法對某些復雜物體定義的復雜場景的分割或者對某些自然景物的分割等類似先驗知識不足的圖像分割效果較為理想。

分水嶺算法

  分水嶺分割方法,是一種基於拓撲理論的數學形態學的分割方法,其基本思想是把圖像看作是測地學上的拓撲地貌,圖像中每一點像素的灰度值表示該點的海拔高度,每一個局部極小值及其影響區域稱為集水盆,而集水盆的邊界則形成分水嶺。分水嶺的概念和形成可以通過模擬浸入過程來說明。在每一個局部極小值表面,刺穿一個小孔,然后把整個模型慢慢浸入水中,隨着浸入的加深,每一個局部極小值的影響域慢慢向外擴展,在兩個集水盆匯合處構築大壩,即形成分水嶺。
  分水嶺對微弱邊緣具有良好的響應,圖像中的噪聲、物體表面細微的灰度變化都有可能產生過度分割的現象,但是這也同時能夠保證得到封閉連續邊緣。同時,分水嶺算法得到的封閉的集水盆也為分析圖像的區域特征提供了可能

3、基於邊緣檢測的分割方法

  基於邊緣檢測的圖像分割算法試圖通過檢測包含不同區域的邊緣來解決分割問題。它可以說是人們最先想到也是研究最多的方法之一。通常不同區域的邊界上像素的灰度值變化比較劇烈,如果將圖片從空間域通過傅里葉變換到頻率域,邊緣就對應着高頻部分,這是一種非常簡單的邊緣檢測算法。
  邊緣檢測技術通常可以按照處理的技術分為串行邊緣檢測和並行邊緣檢測。串行邊緣檢測是要想確定當前像素點是否屬於檢測邊緣上的一點,取決於先前像素的驗證結果。並行邊緣檢測是一個像素點是否屬於檢測邊緣高尚的一點取決於當前正在檢測的像素點以及與該像素點的一些臨近像素點。
  最簡單的邊緣檢測方法是並行微分算子法,它利用相鄰區域的像素值不連續的性質,采用一階或者二階導數來檢測邊緣點。近年來還提出了基於曲面擬合的方法、基於邊界曲線擬合的方法、基於反應-擴散方程的方法、串行邊界查找、基於變形模型的方法。

 

 

 邊緣檢測的優缺點:
(1)邊緣定位准確;
(2)速度快;
(3)不能保證邊緣的連續性和封閉性;
(4)在高細節區域存在大量的碎邊緣,難以形成一個大區域,但是又不宜將高細節區域分成小碎片;

  由於上述的(3)(4)兩個難點,邊緣檢測只能產生邊緣點,而非完整意義上的圖像分割過程。這也就是說,在邊緣點信息獲取到之后還需要后續的處理或者其他相關算法相結合才能完成分割任務。
  在以后的研究當中,用於提取初始邊緣點的自適應閾值選取、用於圖像的層次分割的更大區域的選取以及如何確認重要邊緣以去除假邊緣將變得非常重要。

4、結合特定工具的圖像分割算法

基於小波分析和小波變換的圖像分割方法

  小波變換是近年來得到的廣泛應用的數學工具,也是現在數字圖像處理必學部分,它在時間域和頻率域上都有量高的局部化性質,能將時域和頻域統一於一體來研究信號。而且小波變換具有多尺度特性,能夠在不同尺度上對信號進行分析,因此在圖像分割方面的得到了應用,

二進小波變換具有檢測二元函數的局部突變能力,因此可作為圖像邊緣檢測工具。圖像的邊緣出現在圖像局部灰度不連續處,對應於二進小波變換的模極大值點。通過檢測小波變換模極大值點可以確定圖像的邊緣小波變換位於各個尺度上,而每個尺度上的小波變換都能提供一定的邊緣信息,因此可進行多尺度邊緣檢測來得到比較理想的圖像邊緣。

 

 

   上圖左圖是傳統的閾值分割方法,右邊的圖像就是利用小波變換的圖像分割。可以看出右圖分割得到的邊緣更加准確和清晰。
  另外,將小波和其他方法結合起來處理圖像分割的問題也得到了廣泛研究,比如一種局部自適應閾值法就是將Hilbert圖像掃描和小波相結合,從而獲得了連續光滑的閾值曲線。

基於遺傳算法的圖像分割

  遺傳算法(Genetic Algorithms,簡稱GA)是1973年由美國教授Holland提出的,是一種借鑒生物界自然選擇和自然遺傳機制的隨機化搜索算法。是仿生學在數學領域的應用。其基本思想是,模擬由一些基因串控制的生物群體的進化過程,把該過程的原理應用到搜索算法中,以提高尋優的速度和質量。此算法的搜索過程不直接作用在變量上,而是在參數集進行了編碼的個體,這使得遺傳算法可直接對結構對象(圖像)進行操作。整個搜索過程是從一組解迭代到另一組解,采用同時處理群體中多個個體的方法,降低了陷入局部最優解的可能性,並易於並行化。搜索過程采用概率的變遷規則來指導搜索方向,而不采用確定性搜索規則,而且對搜索空間沒有任何特殊要求(如連通性、凸性等),只利用適應性信息,不需要導數等其他輔助信息,適應范圍廣。

  遺傳算法擅長於全局搜索,但局部搜索能力不足,所以常把遺傳算法和其他算法結合起來應用。將遺傳算法運用到圖像處理主要是考慮到遺傳算法具有與問題領域無關且快速隨機的搜索能力。其搜索從群體出發,具有潛在的並行性,可以進行多個個體的同時比較,能有效的加快圖像處理的速度。但是遺傳算法也有其缺點:搜索所使用的評價函數的設計、初始種群的選擇有一定的依賴性等。要是能夠結合一些啟發算法進行改進且遺傳算法的並行機制的潛力得到充分的利用,這是當前遺傳算法在圖像處理中的一個研究熱點。

基於主動輪廓模型的分割方法

​   主動輪廓模型(active contours)是圖像分割的一種重要方法,具有統一的開放式的描述形式,為圖像分割技術的研究和創新提供了理想的框架。在實現主動輪廓模型時,可以靈活的選擇約束力、初始輪廓和作用域等,以得到更佳的分割效果,所以主動輪廓模型方法受到越來越多的關注。
  該方法是在給定圖像中利用曲線演化來檢測目標的一類方法,基於此可以得到精確的邊緣信息。其基本思想是,先定義初始曲線C,然后根據圖像數據得到能量函數,通過最小化能量函數來引發曲線變化,使其向目標邊緣逐漸逼近,最終找到目標邊緣。這種動態逼近方法所求得的邊緣曲線具有封閉、光滑等優點。

  傳統的主動輪廓模型大致分為參數主動輪廓模型幾何主動輪廓模型。參數主動輪廓模型將曲線或曲面的形變以參數化形式表達,Kass等人提出了經典的參數活動輪廓模型即“Snake”模型,其中Snake定義為能量極小化的樣條曲線,它在來自曲線自身的內力和來自圖像數據的外力的共同作用下移動到感興趣的邊緣,內力用於約束曲線形狀,而外力則引導曲線到特征此邊緣。參數主動輪廓模型的特點是將初始曲線置於目標區域附近,無需人為設定曲線的的演化是收縮或膨脹,其優點是能夠與模型直接進行交互,且模型表達緊湊,實現速度快;其缺點是難以處理模型拓撲結構的變化。比如曲線的合並或分裂等。而使用水平集(level set)的幾何活動輪廓方法恰好解決了這一問題。

5、基於圖論的分割方法

  此類方法基於圖論的方法利用圖論領域的理論和方法,將圖像映射為帶權無向圖,把像素視作節點,將圖像分割問題看作是圖的頂點划分問題,利用最小剪切准則得到圖像的最佳分割。此類方法把圖像分割問題與圖的最小割(MIN-CUT)[1]問題相關聯,通常做法是將待分割的圖像映射為帶權無向圖G=(V,E),其中,V={v1,…,vn}是頂點的集合,E為邊的集合。圖中每個節點N∈V對應於圖像中的每個像素,每條邊∈E連接着一對相鄰的像素,邊的權值w(vi,vj),其中 (vi,vj)∈E,表示了相鄰像素之間在灰度、顏色或紋理方面的非負相似度。而對圖像的一個分割S就是對圖的一個剪切,被分割的每個區域C∈S對應着圖中的一個子圖。

  分割的原則就是使划分后的子圖在內部保持相似度最大,而子圖之間的相似度保持最小。我們以一個兩類的分割為例,把G = (V,E) 分成兩個子集A,B,另:A ∪ B = V, A ∩ B = ∅,

 

其中,

 

 

 

 

 是權重(weight), 最小割就是讓上式的值最小的分割。

 

 

 基於圖論的代表有NormalizedCut,GraphCut和GrabCut等方法

5.1 NormalizedCut[2]

  想要理解Normalized Cut 需要先理解什么是分割(CUT)與最小化分割(MIN-CUT),我們拿下圖做例子,我們把圖一看成一個整體G,現在需要把它分成兩個部分。顯然中間的紅色虛線切割的邊就是最小化分割。

 

 

  最小化分割解決了把權重圖G分成兩部分的任務,但是問題來了,如下圖所示,想要的結果是中間實線表示的分割,但是最小化切割卻切掉了最邊緣的角。這種情況很容易理解,因為最小化切割就是讓CUT(A,B)的值最小的情況,而邊緣處CUT值確實是最小,因此我們輸最小化切割時會有偏差的(bias)。如何去除這種偏差就要引入Normalized Cut算法了。

 

 

  思路很簡單,將Cut normalize一下,除以表現頂點集大小的某種量度(如 vol A = 所有A中頂點集的度之和,含義是A中所有點到圖中所有點的權重的和), 也就是NormalizeCut(A, B) = Cut(A, B) / volA + Cut(A, B) / volB,通過公式可以很清晰的看到NormalizeCut在追求不同子集間點的權重最小值的同時也追求同一子集間點的權重和最大值。

5.2 GraphCut[3]

  Graph Cuts圖是在普通圖的基礎上多了2個頂點,這2個頂點分別用符號”S”和”T”表示,稱為終端頂點。其它所有的頂點都必須和這2個頂點相連形成邊集合中的一部分,所以Graph Cuts中有兩種頂點,也有兩種邊,第一種普通頂點對應於圖像中的每個像素。每兩個鄰域頂點的連接就是一條邊。這種邊也叫n-links。除圖像像素外,還有另外兩個終端頂點,叫S源點和T匯點。每個普通頂點和這2個終端頂點之間都有連接,組成第二種邊,這種邊也叫t-links,如下圖所示。

  Graph Cuts中的Cuts是指這樣一個邊的集合,這些邊集合包括了上面定義的2種邊,該集合中所有邊的斷開會導致殘留“S”和“T”圖的分開,所以就稱為“割”。如果一個割,它的邊的所有權值之和最小,那么這個就稱為最小割,也就是圖割的結果。根據網絡中最大流和最小割等價的原理,將圖像的最優分割問題轉化為求解對應圖的最小割問題。由Boykov和Kolmogorov發明的max-flow/min-cut算法[1,4]就可以用來獲得S-T圖的最小割,這個最小割把圖的頂點划分為兩個不相交的子集S和T,其中s ∈S,t∈ T和S∪T=V 。這兩個子集就對應於圖像的前景像素集和背景像素集,那就相當於完成了圖像分割。

5.3  GrabCut[5]

  Graph Cuts 算法利用了圖像的像素灰度信息和區域邊界信息,代價函數構建在全局最優的框架下,保證了分割效果。但Graph Cuts 是NP 難問題,且分割結果更傾向於具有相同的類內相似度。Rother 等人提出了基於迭代的圖割方法,稱為Grab Cut 算法。該算法使用高斯混合模型對目標和背景建模,利用了圖像的RGB 色彩信息和邊界信息,通過少量的用戶交互操作得到非常好的分割效果。

 

 

 6、基於聚類的分割方法

機器學習中的聚類方法也可以用於解決圖像分割問題,其一般步驟是:

1、初始化一個粗糙的聚類

2、使用迭代的方式將顏色、亮度、紋理等特征相似的像素點聚類到同一超像素,迭代直至收斂,從而得到最終的圖像分割結果。

 

 

 基於像素聚類的代表方法有K-means(K均值),譜聚類,Meanshift和SLIC等。

6.1 K-means

K-means算法是輸入聚類個數k,以及包含 n個數據對象的數據庫,輸出滿足方差最小標准k個聚類的一種算法。K-means 算法接受輸入量 k,然后將N個數據對象划分為 k個聚類以便使得所獲得的聚類滿足:同一聚類中的對象相似度較高;而不同聚類中的對象相似度較小。

算法過程如下:

(1)從N個數據文檔(樣本)隨機選取K個數據文檔作為質心(聚類中心)。

本文在聚類中心初始化實現過程中采取在樣本空間范圍內隨機生成K個聚類中心。

(2)對每個數據文檔測量其到每個質心的距離,並把它歸到最近的質心的類。

(3)重新計算已經得到的各個類的質心。

(4)迭代(2)~(3)步直至新的質心與原質心相等或小於指定閾值,算法結束。

5.2 譜聚類

  譜聚類(Spectral Clustering, SC)是一種基於圖論的聚類方法——將帶權無向圖划分為兩個或兩個以上的最優子圖,使子圖內部盡量相似,而子圖間距離盡量距離較遠,以達到常見的聚類的目的。與 K-means 算法相比不容易陷入局部最優解,能夠對高維度、非常規分布的數據進行聚類。與傳統的聚類算法相比具有明顯的優勢,該算法能在任意形狀的樣本空間上執行並且收斂於全局最優,這個特點使得它對數據的適應性非常廣泛。為了進行聚類,需要利用高斯核計算任意兩點間的相似度以此構成相似度矩陣。

譜聚類方法缺點:

  1. 譜聚類對參數非常敏感;
  2. 時間復雜度和空間復雜度大。

對於 k-way 譜聚類算法,一般分為以下步驟:

  1. 構建相似度矩陣 W;
  2. 根據相似度矩陣 W 構建拉普拉斯矩陣 L(不同的算法有不同的 L 矩陣);
  3. 對 L 進行特征分解,選取特征向量組成特征空間;
  4. 在特征空間中利用 K 均值算法,輸出聚類結果;

5.3 Meanshift[6]

  Meanshift 算法的原理是在d 維空間中,任選一點作為圓心,以h為半徑做圓.圓心和圓內的每個點都構成一個向量。將這些向量進行矢量加法操作,得到的結果就是Meanshift 向量。繼續以Meanshift 向量的終點為圓心做圓,得到下一個Meanshift 向量.通過有限次迭代計算,Meanshift 算法一定可以收斂到圖中概率密度最大的位置,即數據分布的穩定點,稱為模點。利用Meanshift做圖像分割,就是把具有相同模點的像素聚類到同一區域的過程,其形式化定義為:

 

 

  其中,xi表示待聚類的樣本點,yk代表點的當前位置,yk+1代表點的下一個位置,h表示帶寬。Meanshift 算法的穩定性、魯棒性較好,有着廣泛的應用。但是分割時所包含的語義信息較少,分割效果不夠理想,無法有效地控制超像素的數量,且運行速度較慢,不適用於實時處理任務。

5.4 SLIC[7]

  SLIC(simple linear iterativeclustering),是Achanta 等人2010年提出的一種思想簡單、實現方便的算法,將彩色圖像轉化為CIELAB顏色空間和XY坐標下的5維特征向量,然后對5維特征向量構造距離度量標准,對圖像像素進行局部聚類的過程。SLIC算法能生成緊湊、近似均勻的超像素,在運算速度,物體輪廓保持、超像素形狀方面具有較高的綜合評價,比較符合人們期望的分割效果。

 

 

  SLIC 算法的實質是將K-means 算法用於超像素聚類,眾所周知,K-means 算法的時間復雜度為O(NKI),其中, N 是圖像的像素數,K 是聚類數, I 是迭代次數. 

SLIC具體實現的步驟:

(1)將圖像轉換為CIE Lab顏色空間

(2)初始化k個種子點(聚類中心),在圖像上平均撒落k個點,k個點均勻的占滿整幅圖像。

(3)對種子點在內的n*n(一般為3*3)區域計算每個像素點梯度值,選擇值最小(最平滑)的點作為新的種子點,這一步主要是為了防止種子點落在了輪廓邊界上。

(4)對種子點周圍 2S*2S的方形區域內的所有像素點計算距離度量(計算方法在后文),對於K-means算法是計算整張圖的所有像素點,而SLIC得計算范圍是2S*2S,所以SLIC算法收斂速度很快。其中S = sqrt(N/k),N是圖像像素個數。

(5)每個像素點都可能被幾個種子點計算距離度量,選擇其中最小的距離度量對應的種子點作為其聚類中心。

 

 

二、基於深度學習的分割

1、基於特征編碼(feature encoder based)

   在特征提取領域中VGGnet和ResNet是兩個非常有統治力的方法,接下來的一些篇幅會對這兩個方法進行簡短的介紹

1.1 VGGNet
  由牛津大學計算機視覺組合和Google DeepMind公司研究員一起研發的深度卷積神經網絡。它探索了卷積神經網絡的深度和其性能之間的關系,通過反復的堆疊33的小型卷積核和22的最大池化層,成功的構建了16~19層深的卷積神經網絡。VGGNet獲得了ILSVRC 2014年比賽的亞軍和定位項目的冠軍,在top5上的錯誤率為7.5%。目前為止,VGGNet依然被用來提取圖像的特征。

​ VGGNet的優缺點

  1. 由於參數量主要集中在最后的三個FC當中,所以網絡加深並不會帶來參數爆炸的問題;
  2. 多個小核卷積層的感受野等同於一個大核卷積層(三個3x3等同於一個7x7)但是參數量遠少於大核卷積層而且非線性操作也多於后者,使得其學習能力較強。
  3. VGG由於層數多而且最后的三個全連接層參數眾多,導致其占用了更多的內存(140M)。

1.2 ResNet
​ 隨着深度學習的應用,各種深度學習模型隨之出現,雖然在每年都會出現性能更好的新模型,但是對於前人工作的提升卻不是那么明顯,其中有重要問題就是深度學習網絡在堆疊到一定深度的時候會出現梯度消失的現象,導致誤差升高效果變差,后向傳播時無法將梯度反饋到前面的網絡層,使得前方的網絡層的參數難以更新,訓練效果變差。這個時候ResNet恰好站出來,成為深度學習發展歷程中一個重要的轉折點。
​ ResNet是由微軟研究院的Kaiming He等四名華人提出,他們通過自己提出的ResNet Unit成功訓練出來152層的神經網絡並在ILSVRC2015比賽中斬獲冠軍。ResNet語義分割領域最受歡迎且最廣泛運用的神經網絡.ResNet的核心思想就是在網絡中引入恆等映射,允許原始輸入信息直接傳到后面的層中,在學習過程中可以只學習上一個網絡輸出的殘差(F(x)),因此ResNet又叫做殘差網絡。

使用到ResNet的分割模型:

  • Efficient Neural Network(ENet):該網絡類似於ResNet的bottleNeck方法;
  • ResNet-38:該網絡在訓練or測試階段增加並移除了一些層,是一種淺層網絡,它的結構是ResNet+FCN;
  • full-resolution residual network(FRRN):FRRN網絡具有和ResNet相同優越的訓練特性,它由殘差流和池化流兩個處理流組成;
  • AdapNey:根據ResNet-50的網絡進行改進,讓原本的ResNet網絡能夠在更短的時間內學習到更多高分辨率的特征;

ResNet的優缺點:

  1. 引入了全新的網絡結構(殘差學習模塊),形成了新的網絡結構,可以使網絡盡可能地加深;
  2. 使得前饋/反饋傳播算法能夠順利進行,結構更加簡單;
  3. 恆等映射地增加基本上不會降低網絡的性能;
  4. 建設性地解決了網絡訓練的越深,誤差升高,梯度消失越明顯的問題;
  5. 由於ResNet搭建的層數眾多,所以需要的訓練時間也比平常網絡要長。

2.基於區域選擇(regional proposal based)

  Regional proposal 在計算機視覺領域是一個非常常用的算法,尤其是在目標檢測領域。其核心思想就是檢測顏色空間和相似矩陣,根據這些來檢測待檢測的區域。然后根據檢測結果可以進行分類預測。
在語義分割領域,基於區域選擇的幾個算法主要是由前人的有關於目標檢測的工作漸漸延伸到語義分割的領域的,接下來小編將逐步介紹其個中關系。

Stage Ⅰ: R-CNN
  伯克利大學的Girshick教授等人共同提出了首個在目標檢測方向應用的深度學習模型:Region-based Convolutional Neural Network(R-CNN)。該網絡模型如下圖所示,其主要流程為:先使用selective search算法提取2000個候選框,然后通過卷積網絡對候選框進行串行的特征提取,再根據提取的特征使用SVM對候選框進行分類預測,最后使用回歸方法對區域框進行修正。

R-CNN的優缺點:

  • 是首個開創性地將深度神經網絡應用到目標檢測的算法;
  • 使用Bounding Box Regression對目標檢測的框進行調整;
  • 由於進行特征提取時是串行,處理耗時過長;
  • Selective search算法在提取每一個region時需要2s的時間,浪費大量時間
Stage Ⅱ:Fast R-CNN

  由於R-CNN的效率太低,2015年由Ross等學者提出了它的改進版本:Fast R-CNN。其網絡結構圖如下圖所示(從提取特征開始,略掉了region的選擇)Fast R-CNN在傳統的R-CNN模型上有所改進的地方是它是直接使用一個神經網絡對整個圖像進行特征提取,就省去了串行提取特征的時間;接着使用一個RoI Pooling Layer在全圖的特征圖上摘取每一個RoI對應的特征,再通過FC進行分類和包圍框的修正。

Fast R-CNN的優缺點

  • 節省了串行提取特征的時間;
  • 除了selective search以外的其它所有模塊都可以合在一起訓練;
  • 最耗時間的selective search算法依然存在。
Stage Ⅲ:Faster R-CNN

  2016年提出的Faster R-CNN可以說有了突破性的進展(雖然還是目標檢測哈哈哈),因為它改變了它的前輩們最耗時最致命的部位:selective search算法。它將selective search算法替換成為RPN,使用RPN網絡進行region的選取,將2s的時間降低到10ms,其網絡結構如下圖所示:

Faster R-CNN優缺點:

  • 使用RPN替換了耗時的selective search算法,對整個網絡結構有了突破性的優化;
  • Faster R-CNN中使用的RPN和selective search比起來雖然速度更快,但是精度和selective search相比稍有不及,如果更注重速度而不是精度的話完全可以只使用RPN;
Stage Ⅳ:Mask R-CNN

  Mask R-CNN(終於到分割了!)是何愷明大神團隊提出的一個基於Faster R-CNN模型的一種新型的分割模型,此論文斬獲ICCV 2017的最佳論文,在Mask R-CNN的工作中,它主要完成了三件事情:目標檢測,目標分類,像素級分割。
愷明大神是在Faster R-CNN的結構基礎上加上了Mask預測分支,並且改良了ROI Pooling,提出了ROI Align。其網絡結構真容就如下圖所示啦:

Mask R-CNN的優缺點:

  • 引入了預測用的Mask-Head,以像素到像素的方式來預測分割掩膜,並且效果很好;
  • 用ROI Align替代了ROI Pooling,去除了RoI Pooling的粗量化,使得提取的特征與輸入良好對齊;
  • 分類框與預測掩膜共享評價函數,雖然大多數時間影響不大,但是有的時候會對分割結果有所干擾。
Stage Ⅴ:Mask Scoring R-CNN

  最后要提出的是2019年CVPR的oral,來自華中科技大學的研究生黃釗金同學提出的
MS R-CNN,這篇文章的提出主要是對上文所說的Mask R-CNN的一點點缺點進行了修正。他的網絡結構也是在Mask R-CNN的網絡基礎上做了一點小小的改進,添加了Mask-IoU。
  黃同學在文章中提到:愷明大神的Mask R-CNN已經很好啦!但是有個小毛病,就是評價函數只對目標檢測的候選框進行打分,而不是分割模板(就是上文提到的優缺點中最后一點),所以會出現分割模板效果很差但是打分很高的情況。所以黃同學增加了對模板進行打分的MaskIoU Head,並且最終的分割結果在COCO數據集上超越了愷明大神,下面就是MS R-CNN的網絡結構啦~

MS R-CNN的優缺點:

  • 優化了Mask R-CNN中的信息傳播,提高了生成預測模板的質量;
  • 未經大批量訓練的情況下,就拿下了COCO 2017挑戰賽實例分割任務冠軍;
  • 要說缺點的話。。應該就是整個網絡有些龐大,一方面需要ResNet當作主干網絡,另一方面需要其它各種Head共同承擔各種任務。

3.基於RNN的圖像分割

  Recurrent neural networks(RNNs)除了在手寫和語音識別上表現出色外,在解決計算機視覺的任務上也表現不俗,在本篇文章中我們就將要介紹RNN在2D圖像處理上的一些應用,其中也包括介紹使用到它的結構或者思想的一些模型。
  RNN是由Long-Short-Term Memory(LSTM)塊組成的網絡,RNN來自序列數據的長期學習的能力以及隨着序列保存記憶的能力使其在許多計算機視覺的任務中游刃有余,其中也包括語義分割以及數據標注的任務。接下來的部分我們將介紹幾個使用到RNN結構的用於分割的網絡結構模型:

3.1 ReSeg模型
ReSeg可能不被許多人所熟知,在百度上搜索出的相關說明與解析也不多,但是這是一個很有效的語義分割方法。眾所周知,FCN可謂是圖像分割領域的開山作,而RegNet的作者則在自己的文章中大膽的提出了FCN的不足:沒有考慮到局部或者全局的上下文依賴關系,而在語義分割中這種依賴關系是非常有用的。所以在ReSeg中作者使用RNN去檢索上下文信息,以此作為分割的一部分依據。

 

 

該結構的核心就是Recurrent Layer,它由多個RNN組合在一起,捕獲輸入數據的局部和全局空間結構。
優缺點:

  • 充分考慮了上下文信息關系;
  • 使用了中值頻率平衡,它通過類的中位數(在訓練集上計算)和每個類的頻率之間的比值來重新加權類的預測。這就增加了低頻率類的分數,這是一個更有噪聲的分割掩碼的代價,因為被低估的類的概率被高估了,並且可能導致在輸出分割掩碼中錯誤分類的像素增加。

3.2 MDRNNs(Multi-Dimensional Recurrent Neural Networks)模型
傳統的RNN在一維序列學習問題上有着很好的表現,比如演講(speech)和在線手寫識別。但是 在多為問題中應用卻並不到位。MDRNNs在一定程度上將RNN拓展到多維空間領域,使之在圖像處理、視頻處理等領域上也能有所表現。
該論文的基本思想是:將單個遞歸連接替換為多個遞歸連接,相應可以在一定程度上解決時間隨數據樣本的增加呈指數增長的問題。以下就是該論文提出的兩個前向反饋和反向反饋的算法。 

4.基於上采樣/反卷積的分割方法

卷積神經網絡在進行采樣的時候會丟失部分細節信息,這樣的目的是得到更具特征的價值。但是這個過程是不可逆的,有的時候會導致后面進行操作的時候圖像的分辨率太低,出現細節丟失等問題。因此我們通過上采樣在一定程度上可以不全一些丟失的信息,從而得到更加准確的分割邊界。
接下來介紹幾個非常著名的分割模型:

4.1 FCN(Fully Convolutional Network)
是的!講來講去終於講到這位大佬了,FCN!在圖像分割領域已然成為一個業界標桿,大多數的分割方法多多少少都會利用到FCN或者其中的一部分,比如前面我們講過的Mask R-CNN。
在FCN當中的反卷積-升采樣結構中,圖片會先進性上采樣(擴大像素);再進行卷積——通過學習獲得權值。FCN的網絡結構如下圖所示:

當然最后我們還是需要分析一下FCN,不能無腦吹啦~
優缺點:

  • FCN對圖像進行了像素級的分類,從而解決了語義級別的圖像分割問題;
  • FCN可以接受任意尺寸的輸入圖像,可以保留下原始輸入圖像中的空間信息;
  • 得到的結果由於上采樣的原因比較模糊和平滑,對圖像中的細節不敏感;
  • 對各個像素分別進行分類,沒有充分考慮像素與像素的關系,缺乏空間一致性

4.2 SetNet
SegNet是劍橋提出的旨在解決自動駕駛或者智能機器人的圖像語義分割深度網絡,SegNet基於FCN,與FCN的思路十分相似,只是其編碼-解碼器和FCN的稍有不同,其解碼器中使用去池化對特征圖進行上采樣,並在分各種保持高頻細節的完整性;而編碼器不使用全連接層,因此是擁有較少參數的輕量級網絡:

SetNet的優缺點:

  • 保存了高頻部分的完整性;
  • 網絡不笨重,參數少,較為輕便;
  • 對於分類的邊界位置置信度較低;
  • 對於難以分辨的類別,例如人與自行車,兩者如果有相互重疊,不確定性會增加。

以上兩種網絡結構就是基於反卷積/上采樣的分割方法,當然其中最最最重要的就是FCN了,哪怕是后面大名鼎鼎的SegNet也是基於FCN架構的,而且FCN可謂是語義分割領域中開創級別的網絡結構。

5.基於提高特征分辨率的分割方法

  在這一個模塊中我們主要給大家介紹一下基於提升特征分辨率的圖像分割的方法。換一種說法其實可以說是恢復在深度卷積神經網絡中下降的分辨率,從而獲取更多的上下文信息。這一系列我將給大家介紹的是Google提出的DeepLab 。
  DeepLab是結合了深度卷積神經網絡和概率圖模型的方法,應用在語義分割的任務上,目的是做逐像素分類,其先進性體現在DenseCRFs(概率圖模型)和DCNN的結合。是將每個像素視為CRF節點,利用遠程依賴關系並使用CRF推理直接優化DCNN的損失函數。
  在圖像分割領域,FCN的一個眾所周知的操作就是平滑以后再填充,就是先進行卷積再進行pooling,這樣在降低圖像尺寸的同時增大感受野,但是在先減小圖片尺寸(卷積)再增大尺寸(上采樣)的過程中一定有一些信息損失掉了,所以這里就有可以提高的空間。
  接下來我要介紹的是DeepLab網絡的一大亮點:Dilated/Atrous Convolution,它使用的采樣方式是帶有空洞的采樣。在VGG16中使用不同采樣率的空洞卷積,可以明確控制網絡的感受野。

 

 

 

圖a對應3x3的1-dilated conv,它和普通的卷積操作是相同的;圖b對應3x3的2-dilated conv,事跡卷積核的尺寸還是3x3(紅點),但是空洞為1,其感受野能夠達到7x7;圖c對應3x3的4-dilated conv,其感受野已經達到了15x15.寫到這里相信大家已經明白,在使用空洞卷積的情況下,加大了感受野,使每個卷積輸出都包含了較大范圍的信息。
這樣就解決了DCNN的幾個關於分辨率的問題:
  1)內部數據結構丟失;空間曾計划信息丟失;
  2)小物體信息無法重建;
當然空洞卷積也存在一定的問題,它的問題主要體現在以下兩方面:
  1)網格效應
加入我們僅僅多次疊加dilation rate 2的 3x3 的卷積核則會出現以下問題

我們發現卷積核並不連續,也就是說並不是所有的像素都用來計算了,這樣會喪失信息的連續性;
2)小物體信息處理不當
我們從空洞卷積的設計背景來看可以推測出它是設計來獲取long-ranged information。然而空洞步頻選取得大獲取只有利於大物體得分割,而對於小物體的分割可能並沒有好處。所以如何處理好不同大小物體之間的關系也是設計好空洞卷積網絡的關鍵。

6.基於特征增強的分割方法

  基於特征增強的分割方法包括:提取多尺度特征或者從一系列嵌套的區域中提取特征。在圖像分割的深度網絡中,CNN經常應用在圖像的小方塊上,通常稱為以每個像素為中心的固定大小的卷積核,通過觀察其周圍的小區域來標記每個像素的分類。在圖像分割領域,能夠覆蓋到更大部分的上下文信息的深度網絡通常在分割的結果上更加出色,當然這也伴隨着更高的計算代價。多尺度特征提取的方法就由此引進。
  在這一模塊中我先給大家介紹一個叫做SLIC,全稱為simple linear iterative cluster的生成超像素的算法。
  首先我們要明確一個概念:啥是超像素?其實這個比較容易理解,就像上面說的“小方塊”一樣,我們平常處理圖像的最小單位就是像素了,這就是像素級(pixel-level);而把像素級的圖像划分成為區域級(district-level)的圖像,把區域當成是最基本的處理單元,這就是超像素啦。
  算法大致思想是這樣的,將圖像從RGB顏色空間轉換到CIE-Lab顏色空間,對應每個像素的(L,a,b)顏色值和(x,y)坐標組成一個5維向量V[l, a, b, x, y],兩個像素的相似性即可由它們的向量距離來度量,距離越大,相似性越小。
算法首先生成K個種子點,然后在每個種子點的周圍空間里搜索距離該種子點最近的若干像素,將他們歸為與該種子點一類,直到所有像素點都歸類完畢。然后計算這K個超像素里所有像素點的平均向量值,重新得到K個聚類中心,然后再以這K個中心去搜索其周圍與其最為相似的若干像素,所有像素都歸類完后重新得到K個超像素,更新聚類中心,再次迭代,如此反復直到收斂。
  有點像聚類的K-Means算法,最終會得到K個超像素。
  Mostahabi等人提出的一種前向傳播的分類方法叫做Zoom-Out就使用了SLIC的算法,它從多個不同的級別提取特征:局部級別:超像素本身;遠距離級別:能夠包好整個目標的區域;全局級別:整個場景。這樣綜合考慮多尺度的特征對於像素或者超像素的分類以及分割來說都是很有意義的。
  接下來的部分我將給大家介紹另一種完整的分割網絡:PSPNet:Pyramid Scene Parsing Network
  論文提出在場景分割是,大多數的模型會使用FCN的架構,但是FCN在場景之間的關系和全局信息的處理能力存在問題,其典型問題有:1.上下文推斷能力不強;2.標簽之間的關系處理不好;3.模型可能會忽略小的東西。
本文提出了一個具有層次全局優先級,包含不同子區域時間的不同尺度的信息,稱之為金字塔池化模塊。
該模塊融合了4種不同金字塔尺度的特征,第一行紅色是最粗糙的特征–全局池化生成單個bin輸出,后面三行是不同尺度的池化特征。為了保證全局特征的權重,如果金字塔共有N個級別,則在每個級別后使用1×1 1×11×1的卷積將對於級別通道降為原本的1/N。再通過雙線性插值獲得未池化前的大小,最終concat到一起。其結構如下圖:

 

 

最終結果就是,在融合不同尺度的feature后,達到了語義和細節的融合,模型的性能表現提升很大,作者在很多數據集上都做過訓練,最終結果是在MS-COCO數據集上預訓練過的效果最好。

 

 

  為了捕捉多尺度特征,高層特征包含了更多的語義和更少的位置信息。結合多分辨率圖像和多尺度特征描述符的優點,在不丟失分辨率的情況下提取圖像中的全局和局部信息,這樣就能在一定程度上提升網絡的性能。

7.使用CRF/MRF的方法

  首先讓我們熟悉熟悉到底啥是MRF的CRF的。
  MRF全稱是Marcov Random Field,馬爾可夫隨機場,其實說起來筆者在剛讀碩士的時候有一次就有同學在匯報中提到了隱馬爾可夫、馬爾可夫鏈啥的,當時還啥都不懂,小白一枚(現在是准小白hiahia),覺得馬爾可夫這個名字賊帥,后來才慢慢了解什么馬爾科夫鏈呀,馬爾可夫隨機場,並且在接觸到圖像分割了以后就對馬爾科夫隨機場有了更多的了解。
  MRF其實是一種基於統計的圖像分割算法,馬爾可夫模型是指一組事件的集合,在這個集合中,事件逐個發生,並且下一刻事件的發生只由當前發生的事件決定,而與再之前的狀態沒有關系。而馬爾可夫隨機場,就是具有馬爾可夫模型特性的隨機場,就是場中任何區域都只與其臨近區域相關,與其他地方的區域無關,那么這些區域里元素(圖像中可以是像素)的集合就是一個馬爾可夫隨機場。
  CRF的全稱是Conditional Random Field,條件隨機場其實是一種特殊的馬爾可夫隨機場,只不過是它是一種給定了一組輸入隨機變量X的條件下另一組輸出隨機變量Y的馬爾可夫隨機場,它的特點是埃及設輸出隨機變量構成馬爾可夫隨機場,可以看作是最大熵馬爾可夫模型在標注問題上的推廣。
  在圖像分割領域,運用CRF比較出名的一個模型就是全連接條件隨機場(DenseCRF),接下來我們將花費一些篇幅來簡單介紹一下。
  CRF在運行中會有一個問題就是它只對相鄰節點進行操作,這樣會損失一些上下文信息,而全連接條件隨機場是對所有節點進行操作,這樣就能獲取盡可能多的臨近點信息,從而獲得更加精准的分割結果。

在Fully connected CRF中,吉布斯能量可以寫作:

 

我們重點關注二元部分:

 

其中k(m)為高斯核,寫作:

 

  該模型的一元勢能包含了圖像的形狀,紋理,顏色和位置,二元勢能使用了對比度敏感的的雙核勢能,CRF的二元勢函數一般是描述像素點與像素點之間的關系,鼓勵相似像素分配相同的標簽,而相差較大的像素分配不同標簽,而這個“距離”的定義與顏色值和實際相對距離有關,這樣CRF能夠使圖像盡量在邊界處分割。全連接CRF模型的不同就在於其二元勢函數描述的是每一個像素與其他所有像素的關系,使用該模型在圖像中的所有像素對上建立點對勢能從而實現極大地細化和分割。
在分割結果上我們可以看看如下的結果圖:

可以看到它在精細邊緣的分割比平常的分割方法要出色得多,而且文章中使用了另一種優化算法,使得本來需要及其大量運算的全連接條件隨機場也能在很短的時間里給出不錯的分割結果。
優缺點:

  • 在精細部位的分割非常優秀;
  • 充分考慮了像素點或者圖片區域之間的上下文關系;
  • 在粗略的分割中可能會消耗不必要的算力;
  • 可以用來恢復細致的局部結構,但是相應的需要較高的代價。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM