【深度聚類】Superpixel Sampling Networks

Superpixel Sampling Networks

image.png

原始文檔:https://www.yuque.com/lart/papers/ssnhtml

本文的思想很簡單,傳統的超像素算法是一種有效的低/中級的圖像數據的表達,極大地下降了後續圖像任務的基元(image primitives)數量。可是現存的超像素算法因爲使用的是最鄰近算法,通常都是不可微的,這就致使很難將它們集成到端到端的深度網絡中,因此文章就改進提出了一種可微分的超像素算法,也就是文章提出的超像素採樣網絡(Superpixel Sampling Network),這能夠學習任務特定的有着靈活的損失函數的超像素,而且具備快速運行時間(runtime)。git

工做介紹

超像素是經過基於低級圖像屬性對圖像像素進行分組而造成的圖像的過度割。它們提供了圖像內容感知上有意義的細分,從而減小了後續圖像處理的圖像基元的數量。因爲它們的表明性和計算效率,超像素已經成爲一種既定的低/中級圖像表示,並普遍應用於計算機視覺算法,如物體檢測,語義分割,顯着性估計,光流估計,深度估計,跟蹤等等。超像素尤爲普遍用於傳統的能量最小化框架,其中少許圖像基元極大地下降了優化複雜度。github

近年來,普遍的計算機視覺問題都開始採用深度學習。除了一些方法(例如,[Superpixel convolutional networks using bilateral inceptions,SuperCNN: A superpixelwise convolutional neural network for salient object detection,Recursive context propagation network for semantic scene labeling]),超像素幾乎不與現代深度網絡結合使用。這有兩個主要緣由。算法

  1. 造成大多數深層結構基礎的標準卷積運算一般在規則網格上定義,而且當在不規則超像素晶格上操做時變得低效。
  2. 現有的超像素算法是不可微分的,所以在深度網絡中使用超像素使得在端到端的可訓練網絡架構中引入了不可微分的模塊。

這項工做經過提出一種新的深度可擴展的超像素分割算法來緩解第二個問題。網絡

首先從新討論普遍使用的簡單線性迭代聚類(SLIC)超像素算法,並經過放鬆SLIC中存在的最近鄰居約束將其轉換爲可微分算法。這種新的可微分算法容許端到端訓練,使得可以利用強大的深度網絡來學習超像素,而不是使用傳統的手工設計特徵。這種深度網絡與可微分SLIC的結合造成了超像素採樣網絡(SSN) 的端到端可訓練超像素算法。架構

image.png

圖1顯示了所提出的SSN的概述。框架

  1. 給定的輸入圖像首先經過深度網絡產生更爲有效的特徵。
  2. 而後將這些深度特徵傳遞到可微分SLIC上
  3. SLIC執行迭代聚類
  4. 從而產生所需的超像素

整個網絡是端到端的可訓練的。SSN的可微分性容許使用靈活的損失函數來學習特定於任務的超像素。圖1顯示了一些SSN生成的超像素樣本。ide

與現有的超像素算法相比,所提出的SSN具備如下有利特性:函數

  1. 可端到端訓練
  2. 靈活且任務特定: SSN容許學習靈活的損失函數,從而學習特定於任務的超像素
  3. 當前最佳的超像素算法
  4. 有利的運行時間:SSN在運行時方面也優於當前優異的超像素算法,使其適合在大型數據集上學習,而且對實際應用也有效

相關工做

超像素算法

傳統的超像素算法能夠被大體分爲基於圖的和基於聚類的方法。性能

  • 基於圖的方法將超像素分割問題表達爲圖劃分問題。圖的節點爲像素,圖的邊表示鄰接像素之間的鏈接強度。一般,經過解決離散優化問題來進行圖劃分。一些普遍使用的算法包括下面幾種,但因爲離散優化涉及離散變量,優化目標一般是不可微分的,所以難以在基於圖的方法中利用深度網絡。
    • 歸一化切割[Normalized-Cuts]
    • Felzenszwalb和Huttenlocher(FH)
    • 熵率超像素(ERS)
  • 基於聚類的方法利用傳統的聚類技術,例如用於超像素分割的k均值。普遍使用的算法包括下面幾種,這些方法主要進行k均值聚類,但其特徵表示不一樣。雖然這些聚類算法須要迭代更新,但在SNIC方法[2]中提出了一種用於超像素分割的非迭代聚類方案
    • SLIC:SLIC將每一個像素表示爲5維特徵(位置和Lab顏色 XY Lab特徵)
    • LSC:LSC方法將這些5維特徵投影到10維空間並在投影空間中執行聚類
    • Manifold-SLIC:使用二維流形特徵空間進行超像素聚類

本文提出的方法也是基於聚類的方法。可是,與現有技術不一樣,這裏利用深度網絡經過端到端的訓練框架來學習超像素聚類的功能。

正如最近的一篇調查論文[36]所詳述的,其餘技術被用於超像素分割,包括分水嶺變換,幾何流,圖形切割,均值漂移和登山算法(watershed transform, geometric flows, graph-cuts, mean-shift, and hill-climbing)。然而,這些方法都依賴於手工設計的特徵,將深度網絡融入這些技術並不是易事。最新的SEAL技術[Learning superpixels with segmentation-aware affinity loss]提出了一種不可微的超像素算法經過繞過梯度來爲超像素分割學習深度特徵的方法。與咱們的SSN框架不一樣,SEAL不是端到端可微分的。

深度聚類

受到監督任務深度學習成功的啓發,有幾種方法研究了深度網絡在無監督數據聚類中的應用。

  • 最近,Greff等人提出神經指望最大化框架,他們使用深度網絡模擬聚類標籤的後驗分佈,並展開EM程序中的迭代步驟以進行端到端訓練
  • 在另外一項工做中,梯形網絡用於建模用於聚類的分層潛變量模型
  • Hershey等人提出了一種基於深度學習的聚類框架,用於分離和分割音頻信號
  • Xie等人提出了一個深度嵌入式聚類框架,用於同時學習特徵表示和聚類分配
  • 在最近的一份調查報告中,Aljalbout等人給出了基於深度學習的聚類方法的分類

在本文提出了一種基於深度學習的聚類算法。與之前的工做不一樣,本文的算法是針對超像素分割任務而定製的,其中使用特定於圖像的約束。此外,該框架能夠輕鬆地結合其餘視覺目標函數來學習任務特定的超像素表示。

基礎知識

SSN方法核心是一種可微分的聚類方法,受SLIC超像素算法啓發。這裏簡單介紹下SLIC算法。SLIC算法是最簡單最普遍使用的超像素算法之一,它很容易實現,有着較高的運行時(runtime),而且能夠生成較爲緊湊和均勻的超像素。儘管已經有數種SLIC算法的變體,在SLIC的原始形式中,SLIC是一種K均值聚類算法,針對圖像像素的五維特徵空間(XY LAB)進行聚類。

對於超像素計算的任務而言,其最終目的是要對每一個像素分配一個超像素標號,假設要分紅m個超像素,且給定一個圖像I,它是一個nx5的集合,有n個像素,每一個像素是5維(XY LAB)向量,SLIC算法的主要操做流程以下所述。

採樣初始的m個聚類中心(超像素中心)S0,其是mx5的集合。該採樣一般在像素網格上均勻地進行,而且基於圖像梯度進行一些局部擾動。給定這些初始的超像素中心後,SLIC算法能夠開始反覆迭代下面的兩步:

image.pngimage.png

  1. 像素-超像素關聯上一次迭代肯定的超像素中心Hp=Si**,如上1式,這裏的D計算的是歐式距離的平方image.png。實際上就是一個聚成簇的過程。
  2. 超像素中心更新:對每一個超像素簇中全部的像素的特徵進行平均,得到簇中心,進而獲得此次迭代後的聚類中心。如上式2,表示的就是這個過程。其中Zi表示第i個簇中包含的像素數量。

這兩個步驟構成了SLIC算法的核心,而且一直重複直到收斂或者達到固定次數的迭代。由於在全部像素和超像素之間計算公式1中的距離D是耗時的,該計算一般被約束到每一個超像素中心周圍的固定鄰域。最後,根據應用,有一個可選步驟,強制每一個超像素簇中的像素之間的空間鏈接。[SLIC superpixels compared to state-of-the-art superpixel methods]

SSN(Superpixel Sampling Networks)

網絡結構

途中的箭頭是雙線性插值上採樣,多個輸入會被拼接起來送入卷積。卷積使用的都是3x3卷積,每一層輸出爲64通道,除了最後一層的輸出爲k-5,由於要和原圖像的XYLab特徵向量進行拼接,一塊兒生成一個k維的特徵張量集合。
k微特徵被送入兩個可微的SLIC模塊,迭代更新關聯與聚類中心v步,整個網絡端到端訓練。

可微分的SLIC

首先分析爲何SLIC不能夠微分。仔細觀察SLIC中的全部計算,_像素-超像素關聯_的計算產生不可微分性,其涉及不可微分的最近鄰操做。這個最近鄰計算也構成了SLIC超像素聚類的核心,所以沒法避免這種操做。

可微分的SLIC的關鍵在於轉換這種不可微分的最近鄰操做爲可微分的計算。因爲前面的SLIC算法中的這種硬性關聯H存在不可微的特性,那麼就將其軟化,這裏有點相似於階躍函數和Sigmoid函數的關係。後者也能夠看作是前者的一個軟化

這裏提出一種計算soft-associations Q(nxm)的方法。對於迭代過程當中第t步的像素p和超像素i,這裏替換最近鄰操做用如下的關於距離的鐘型函數權重的形式來表達:

image.png

由於這裏對於超像素與像素的關聯實際上就是一中距離上的關係,本來是直接限定了最近的,至關於直接截斷了整圖像素與超像素中心的距離關聯。這裏不用截斷操做。

image.png

式子4經過1加權的形式計算了新的超像素中心。這裏的image.png是一個歸一化約束,實際上就是對於Q的列歸一化,表示爲image.png,因而式子4能夠寫做image.png((mxn)x(nx5))。由於對於計算全部的像素和超像素之間的距離仍然是一件計算昂貴的事情,因此這裏進行了約束,只計算像素和9個周圍的像素,以下圖中的紅色和綠色框所示。

image.png

對於綠色框中的像素,在計算關聯的時候只考慮紅色框裏周圍的超像素。這將Q從nxm變爲了nx9,必定程度上下降了計算和存儲的消耗。在Q計算中的近似有些類似於SLIC中的最近鄰搜索。

如今,每一個SLIC迭代中的計算都是徹底可微分的,將這種修改後的算法稱爲可微分SLIC(_ differentiable SLIC_)。根據經驗,觀察到用可微分SLIC中的軟關聯替換SLIC中的硬關聯不會致使任何性能降低。因爲這種新的超像素算法是可微分的,所以能夠輕鬆地集成到任何深度網絡架構中。

Superpixel Sampling Network

能夠利用深度特徵提取器而不是手工設計的超像素特徵Ip,而且端到端的對整個網絡進行訓練。換句話說,將上面的式3和4中的圖像特徵Ip替換爲深度網絡獲得的k維像素特徵Fp(nxk)。將深度網絡與可微分SLIC的耦合稱爲超像素採樣網絡(SSN)。


算法1概述了SSN中的全部計算步驟。

  1. 從使用CNN的深度圖像特徵提取開始(第1行)
  2. 使用初始常規超像素網格中的平均像素特徵來初始化超像素中心(第2行)(圖2)
  3. 對於v次迭代,使用上述計算(第3-6行)迭代地更新像素-超像素關聯超像素中心**。
    1. 雖然能夠直接使用軟關聯Q來執行多個下游任務,但根據應用需求,能夠選擇將軟關聯轉換爲硬關聯(第7行)。
    2. 此外,與原始SLIC算法同樣,能夠選擇強制跨每一個超像素集羣內的像素進行空間鏈接。這是經過將小於特定閾值的超像素與周圍的超像素合併,而後爲每一個空間鏈接的組件分配惟一的簇ID來實現的。
    3. 請注意,這兩個可選步驟(第7,8行)不可微分

像素和超像素表示之間的映射

對於使用超像素的一些下游應用程序,像素表示被映射到超像素表示,以及反過來。

  1. 利用提供硬聚類的傳統超像素算法,這種從像素到超像素表示的映射是經過在每一個聚類內部進行平均來完成的(方程2)。
  2. 從超像素到像素表示的逆映射是經過將相同的超像素特徵分配給屬於該超像素的全部像素來完成的。咱們可使用與SSN超像素相同的像素-超像素映射,這使用了從SSN得到的硬聚類(算法1中的第7行)。然而,因爲這種硬關聯的計算是_不可微分_的,所以在集成到端到端可訓練系統時可能不但願使用硬聚類。

值得注意的是,由SSN生成的軟像素-超像素關聯也能夠容易地用於像素和超像素表示之間的映射。

  1. 式4描述了從像素到超像素表示的映射。
  2. 從超像素到像素的逆映射經過乘以行歸一化的Q來計算,表示爲:image.png

所以像素-超像素特徵映射關係可使用簡單的矩陣乘法來進行描述,而且這是可微的。

學習任務特定的超像素

端到端可訓練SSN的主要優勢之一是損失函數的靈活性,可使用它來學習任務特定的超像素表示。

與任何CNN同樣,能夠將SSN與任何特定於任務的損失函數相結合,從而學習針對下游計算機視覺任務進行優化的超像素。

在這裏,專一於優化超像素的表現效率,即學習能夠有效地表示場景特徵的超像素,例如語義標籤,光流,深度等。例如,若是想要學習超像素用於下游語義分割任務,指望產生遵循語義邊界的超像素。爲了優化表示效率,做者發現任務特定的重建損失和緊湊性損失的組合表現良好。

任務特定的重建損失

用超像素表示咱們想要有效表示的像素屬性爲R(n×l)。例如,R能夠是語義標籤(獨熱編碼後的)或光流圖。重要的是要注意,咱們在測試時是不能沒法獲取R,即SSN僅使用圖像數據來預測超像素。只用R來訓練,以便SSN能夠學習預測適合的表示R的超像素。可使用列標準化關聯矩陣Q,image.png將像素屬性映射到超像素上。而後使用行標準化關聯矩陣Q,image.png將獲得的超像素表示映射回像素表示R*(n×1)。能夠獲得重建損失爲:

image.png

而這裏的L表示的是任務特定的損失函數,針對分割任務使用交叉熵函數來做爲L,使用L1範數損失來應對光流任務。這裏的Q表示的是可微分SLIC的最終迭代以後關聯矩陣Qv。爲了方便,忽略了v。

緊湊性損失

除了上面的損失,也使用了一個緊湊性損失來鼓勵超像素實現空間上的緊湊性。也就是在超像素簇內部有着更低的空間方差。

  1. 使用Ixy表示位置像素特徵。
  2. 首先將這些位置特徵使用Q映射到超像素表示。
  3. 而後使用硬關聯H替代軟關聯Q來逆映射到像素表示。
    1. 這裏經過將相同超像素位置的特徵賦給屬於該超像素的像素。

緊湊損失可使用以下的L2損失表示:

image.png

這個損失鼓勵超像素有着更低的空間方差。

SSN的靈活性容許使用許多其餘的損失函數。這份工做中使用了前面的重建損失與這裏的緊湊性損失的組合損失:

image.png

其中的係數lambda爲1e-5。

實驗細節

  1. 使用放縮過的XYLab特徵做爲SSN的輸入,其中位置和色彩特徵尺寸表示爲ypos和ycolor。
    1. ycolor的值獨立於超像素的數量,被設置爲0.26,顏色值被放縮到0~255。
    2. ypos的值依賴於超像素數量,image.png,這裏的m和n分別表示超像素和像素沿着圖像的寬和高的數量。實際中設置eta爲2.5。
  2. 訓練中使用201x201大小的圖像patch和100個超像素。
  3. 數據加強使用了左右反轉,對於小的BSDS500數據集,使用了額外的圖像patch隨機放縮的加強方式。
  4. 全部實驗都是用Adam優化器,batch爲8,學習率爲0.0001
  5. 除非特別說起,訓練模型500K次迭代,並基於驗證集準確率來選擇最終的訓練模型。
  6. 消融研究中,訓練改變了參數的模型200K次迭代。
  7. 須要注意的是,使用一個訓練好的SSN模型,經過縮放上面描述的輸入位置特徵來估計不一樣數量的超像素。
  8. 在訓練的時候,可微分的SLIC使用五次迭代,也就是v=5,而測試的時候,v=10。由於觀察到,隨着迭代次數的提高,性能增益不大(only marginal performance gains with more iterations)。

超像素

BSDS500數據集:BSDS500 consists of 200 train, 100 validation, and 200 test images. Each image is annotated with ground-truth (GT) segments from multiple annotators. We treat each annotation as as a separate sample resulting in 1633 training/validation pairs and 1063 testing pairs.

爲了學習附着到真值分割的超像素,在重建損失(式子5)中使用真值分割標籤,也就是將真值分割標籤表達爲one-hot編碼向量,而且使用其做爲像素屬性R,用在重建損失中。在式子5中使用交叉熵損失做爲L,注意這裏與真值標籤具備意義的語義分割任務不一樣,這個數據集裏的真值標籤並不帶有什麼語義信息。這對網絡的學習設置沒有任何問題,由於SSN和重建損失都與像素屬性R的含義無關(agnostic)。重建損失使用給定輸入信號R及其重建版本R*生成損失值,並不考慮是否在圖像中保留了R的含義。

評估指標

超像素在各類視覺任務中都頗有用,而且存在用於評估超像素的若干度量。

在這項工做中,將可實現的分割準確度(Achievable Segmentation Accuracy,ASA)視爲主要指標,同時還報告邊界指標,如邊界召回(BR)和邊界精度(BP)指標。

  • ASA得分表示經過在超像素上執行的任何分割步驟可實現的準確度的上限。
  • 另外一方面,邊界精度和召回率測量超像素邊界與GT邊界的對齊程度。

在補充材料中更詳細地解釋了這些指標。這些得分越高,分割結果越好。經過改變生成的超像素的平均數量來報告平均ASA和邊界度量。對邊界精度和召回的公平評估指望超像素在空間上鍊接。所以,爲了進行無偏比較,遵循計算硬聚類的可選後處理,並在SSN超像素上實施空間連通性(算法1中的第7-8行)。

消融實驗

  • 參考圖3所示的主模型,在深網絡中有7個卷積層,做爲SSNdeep。
  • 做爲基線模型,評估使用可微分SLIC生成的超像素,該像素採用像素XYLab特徵做爲輸入。這與標準SLIC算法相似,將其稱爲SSNpix,而且沒有可訓練的參數。
  • 做爲另外一個基線模型,替換深度網絡用一個簡單的卷積層來學習輸入XYLab特徵的線性變換,這個表示爲SSNlinear。

image.png

圖4中能夠看出來,SSNlinear就已經實現了遠高於基線的ASA和BR得分,這顯示了損失函數和經過超像素算法反向傳播損失信號的重要性。SSNdeep進一步提高了ASA和BR得分。能夠看到,k越高,每每也就有着更高的得分,v也是這樣。

出於計算的考慮,這裏以後的SSNdeep都指代k=20和v=10。

比較

圖上能夠看到,SSNpix效果接近於SLIC算法,這也反映出來當放鬆最近鄰約束的時候SLIC的性能並不會損失。

image.png

請注意,SSNdeep超像素平滑地跟隨對象邊界,而且也更集中在對象邊界附近。

語義分割

使用的數據集:Cityscapes和Pascal VOC。

  • Cityscpes:We train SSN with the 2975 train images and evaluate on the 500 validation images. For the ease of experimentation, we experiment with half-resolution(512 × 1024) images.
  • Pascal VOC:We train SSN with 1464 train images and validate on 1449 validation images.

Cityscapes

image.png

image.png

咱們使用NVIDIA Tesla V100 GPU計算GPU運行時。SSNpix和SSNdeep之間的運行時比較代表SSN計算時間的很大一部分是因爲可微分SLIC。運行時代表SSN比幾個超像素算法的實現快得多。

這裏與上一部分的差別主要在於語意標籤的使用和重建損失。鼓勵SSN學習附着於語義分割的超像素。

Pascal VOC

image.png

圖8中a的曲線顯示了不一樣技術的ASA得分,這裏沒有分析在這個數據集上的邊界得分,由於真值語義邊界被用忽略標籤給擴展了。這裏同時評估了使用BSDS訓練的模型,也就是圖中的SSNdeep-BSDS模型,能夠看出,相較於當前數據集訓練的模型,只有少許的得分損失。這也體現出了SSN在不一樣數據集上的泛化能力和魯棒性。

圖7中有些圖片示例。

額外實驗

進行了一個額外的實驗,將SSN插入到[Superpixel convolutional networks using bilateral inceptions]的下游語義分割網絡中,[Superpixel convolutional networks using bilateral inceptions]中的網絡具備雙邊inception層(bilateral inception layer),利用超像素進行遠程數據自適應信息傳播,跨過中間CNN表示。

image.png

表2顯示了在測試數據上評估的該聯合模型的IoU得分。與這篇論文中使用的原始SLIC超像素相比,IoU的改進代表SSN還能夠爲使用超像素的下游任務網絡帶來性能改進

光流

使用的數據集是MPI-Sintel:The MPI-Sintel dataset consists of 23 video sequences, which we split intodisjoint sets of 18 (836 frames) training and 5 (205 frames) validation sequences.

To this end, we experiment on the MPI-Sintel dataset and use SSN to predict superpixels** given a pair of input frames**.

爲了證實SSN對迴歸任務的適用性,進行了概念驗證明驗,學習了遵循光流邊界的超像素。使用真值光流做爲像素屬性R,用在重建損失中,使用L1損失做爲L,鼓勵SSN來生成有效表示光流的超像素。

image.png

這裏使用相同的方法來計算ASA得分。對於每一個超像素內部的像素,指定平均真值光流來產生一個分割光流,圖9中顯示了一些分割光流的結果。以後計算真值光流和分割光流的歐氏距離,這稱爲終點偏差(end-point error EPE)。該值越低,超像素越能更好的表示光流。

圖9中的結果代表,SSNdeep超像素相比其餘超像素,對於真值光流的變化更好地對齊。圖8b顯示了現有超像素技術的平均EPE值,能夠看出SSNdeep相較於現存的超像素技術表現出色。這顯示了SSN在學習任務特定的超像素中的有用性

總結

提出了一種新穎的超像素採樣網絡(SSN),它利用經過端到端訓練學到的深層特徵來估計任務特定的超像素。這是第一個端到端可訓練的深度超像素預測技術。

  • 實驗的幾個基準測試代表,SSN始終如一地在表現出色,同時也更快。
  • 將SSN集成到語義分割網絡中還能夠提升性能,顯示SSN在下游計算機視覺任務中的實用性。
  • SSN快速,易於實施,能夠輕鬆集成到其餘深層網絡中,具備良好的實證性能。
  • SSN解決了將超像素歸入深度網絡的主要障礙之一,這是現有超像素算法的不可微分性質。
  • 在深度網絡中使用超像素能夠具備幾個優勢。
    • 超像素能夠下降計算複雜度,尤爲是在處理高分辨率圖像時
    • 超像素也可用於增強區域常量假設(enforce piece-wise constant assumptions)
    • 也有助於遠程信息傳播

相信這項工做開闢了利用深層網絡中的超像素的新途徑,並激發了使用超像素的新深度學習技術。

相關鏈接

相關文章
相關標籤/搜索