本文的思想很簡單,傳統的超像素算法是一種有效的低/中級的圖像數據的表達,極大地下降了後續圖像任務的基元(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]),超像素幾乎不與現代深度網絡結合使用。這有兩個主要緣由。算法
這項工做經過提出一種新的深度可擴展的超像素分割算法來緩解第二個問題。網絡
首先從新討論普遍使用的簡單線性迭代聚類(SLIC)超像素算法,並經過放鬆SLIC中存在的最近鄰居約束將其轉換爲可微分算法。這種新的可微分算法容許端到端訓練,使得可以利用強大的深度網絡來學習超像素,而不是使用傳統的手工設計特徵。這種深度網絡與可微分SLIC的結合造成了超像素採樣網絡(SSN) 的端到端可訓練超像素算法。架構
圖1顯示了所提出的SSN的概述。框架
整個網絡是端到端的可訓練的。SSN的可微分性容許使用靈活的損失函數來學習特定於任務的超像素。圖1顯示了一些SSN生成的超像素樣本。ide
與現有的超像素算法相比,所提出的SSN具備如下有利特性:函數
傳統的超像素算法能夠被大體分爲基於圖的和基於聚類的方法。性能
本文提出的方法也是基於聚類的方法。可是,與現有技術不一樣,這裏利用深度網絡經過端到端的訓練框架來學習超像素聚類的功能。
正如最近的一篇調查論文[36]所詳述的,其餘技術被用於超像素分割,包括分水嶺變換,幾何流,圖形切割,均值漂移和登山算法(watershed transform, geometric flows, graph-cuts, mean-shift, and hill-climbing)。然而,這些方法都依賴於手工設計的特徵,將深度網絡融入這些技術並不是易事。最新的SEAL技術[Learning superpixels with segmentation-aware affinity loss]提出了一種不可微的超像素算法經過繞過梯度來爲超像素分割學習深度特徵的方法。與咱們的SSN框架不一樣,SEAL不是端到端可微分的。
受到監督任務深度學習成功的啓發,有幾種方法研究了深度網絡在無監督數據聚類中的應用。
在本文提出了一種基於深度學習的聚類算法。與之前的工做不一樣,本文的算法是針對超像素分割任務而定製的,其中使用特定於圖像的約束。此外,該框架能夠輕鬆地結合其餘視覺目標函數來學習任務特定的超像素表示。
SSN方法核心是一種可微分的聚類方法,受SLIC超像素算法啓發。這裏簡單介紹下SLIC算法。SLIC算法是最簡單最普遍使用的超像素算法之一,它很容易實現,有着較高的運行時(runtime),而且能夠生成較爲緊湊和均勻的超像素。儘管已經有數種SLIC算法的變體,在SLIC的原始形式中,SLIC是一種K均值聚類算法,針對圖像像素的五維特徵空間(XY LAB)進行聚類。
對於超像素計算的任務而言,其最終目的是要對每一個像素分配一個超像素標號,假設要分紅m個超像素,且給定一個圖像I,它是一個nx5的集合,有n個像素,每一個像素是5維(XY LAB)向量,SLIC算法的主要操做流程以下所述。
採樣初始的m個聚類中心(超像素中心)S0,其是mx5的集合。該採樣一般在像素網格上均勻地進行,而且基於圖像梯度進行一些局部擾動。給定這些初始的超像素中心後,SLIC算法能夠開始反覆迭代下面的兩步:
這兩個步驟構成了SLIC算法的核心,而且一直重複直到收斂或者達到固定次數的迭代。由於在全部像素和超像素之間計算公式1中的距離D是耗時的,該計算一般被約束到每一個超像素中心周圍的固定鄰域。最後,根據應用,有一個可選步驟,強制每一個超像素簇中的像素之間的空間鏈接。[SLIC superpixels compared to state-of-the-art superpixel methods]
途中的箭頭是雙線性插值上採樣,多個輸入會被拼接起來送入卷積。卷積使用的都是3x3卷積,每一層輸出爲64通道,除了最後一層的輸出爲k-5,由於要和原圖像的XYLab特徵向量進行拼接,一塊兒生成一個k維的特徵張量集合。
k微特徵被送入兩個可微的SLIC模塊,迭代更新關聯與聚類中心v步,整個網絡端到端訓練。
首先分析爲何SLIC不能夠微分。仔細觀察SLIC中的全部計算,_像素-超像素關聯_的計算產生不可微分性,其涉及不可微分的最近鄰操做。這個最近鄰計算也構成了SLIC超像素聚類的核心,所以沒法避免這種操做。
可微分的SLIC的關鍵在於轉換這種不可微分的最近鄰操做爲可微分的計算。因爲前面的SLIC算法中的這種硬性關聯H存在不可微的特性,那麼就將其軟化,這裏有點相似於階躍函數和Sigmoid函數的關係。後者也能夠看作是前者的一個軟化。
這裏提出一種計算soft-associations Q(nxm)的方法。對於迭代過程當中第t步的像素p和超像素i,這裏替換最近鄰操做用如下的關於距離的鐘型函數權重的形式來表達:
由於這裏對於超像素與像素的關聯實際上就是一中距離上的關係,本來是直接限定了最近的,至關於直接截斷了整圖像素與超像素中心的距離關聯。這裏不用截斷操做。
式子4經過1加權的形式計算了新的超像素中心。這裏的是一個歸一化約束,實際上就是對於Q的列歸一化,表示爲,因而式子4能夠寫做((mxn)x(nx5))。由於對於計算全部的像素和超像素之間的距離仍然是一件計算昂貴的事情,因此這裏進行了約束,只計算像素和9個周圍的像素,以下圖中的紅色和綠色框所示。
對於綠色框中的像素,在計算關聯的時候只考慮紅色框裏周圍的超像素。這將Q從nxm變爲了nx9,必定程度上下降了計算和存儲的消耗。在Q計算中的近似有些類似於SLIC中的最近鄰搜索。
如今,每一個SLIC迭代中的計算都是徹底可微分的,將這種修改後的算法稱爲可微分SLIC(_ differentiable SLIC_)。根據經驗,觀察到用可微分SLIC中的軟關聯替換SLIC中的硬關聯不會致使任何性能降低。因爲這種新的超像素算法是可微分的,所以能夠輕鬆地集成到任何深度網絡架構中。
能夠利用深度特徵提取器而不是手工設計的超像素特徵Ip,而且端到端的對整個網絡進行訓練。換句話說,將上面的式3和4中的圖像特徵Ip替換爲深度網絡獲得的k維像素特徵Fp(nxk)。將深度網絡與可微分SLIC的耦合稱爲超像素採樣網絡(SSN)。
算法1概述了SSN中的全部計算步驟。
對於使用超像素的一些下游應用程序,像素表示被映射到超像素表示,以及反過來。
值得注意的是,由SSN生成的軟像素-超像素關聯也能夠容易地用於像素和超像素表示之間的映射。
所以像素-超像素特徵映射關係可使用簡單的矩陣乘法來進行描述,而且這是可微的。
端到端可訓練SSN的主要優勢之一是損失函數的靈活性,可使用它來學習任務特定的超像素表示。
與任何CNN同樣,能夠將SSN與任何特定於任務的損失函數相結合,從而學習針對下游計算機視覺任務進行優化的超像素。
在這裏,專一於優化超像素的表現效率,即學習能夠有效地表示場景特徵的超像素,例如語義標籤,光流,深度等。例如,若是想要學習超像素用於下游語義分割任務,指望產生遵循語義邊界的超像素。爲了優化表示效率,做者發現任務特定的重建損失和緊湊性損失的組合表現良好。
用超像素表示咱們想要有效表示的像素屬性爲R(n×l)。例如,R能夠是語義標籤(獨熱編碼後的)或光流圖。重要的是要注意,咱們在測試時是不能沒法獲取R,即SSN僅使用圖像數據來預測超像素。只用R來訓練,以便SSN能夠學習預測適合的表示R的超像素。可使用列標準化關聯矩陣Q,將像素屬性映射到超像素上。而後使用行標準化關聯矩陣Q,將獲得的超像素表示映射回像素表示R*(n×1)。能夠獲得重建損失爲:
而這裏的L表示的是任務特定的損失函數,針對分割任務使用交叉熵函數來做爲L,使用L1範數損失來應對光流任務。這裏的Q表示的是可微分SLIC的最終迭代以後關聯矩陣Qv。爲了方便,忽略了v。
除了上面的損失,也使用了一個緊湊性損失來鼓勵超像素實現空間上的緊湊性。也就是在超像素簇內部有着更低的空間方差。
緊湊損失可使用以下的L2損失表示:
這個損失鼓勵超像素有着更低的空間方差。
SSN的靈活性容許使用許多其餘的損失函數。這份工做中使用了前面的重建損失與這裏的緊湊性損失的組合損失:
其中的係數lambda爲1e-5。
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和邊界度量。對邊界精度和召回的公平評估指望超像素在空間上鍊接。所以,爲了進行無偏比較,遵循計算硬聚類的可選後處理,並在SSN超像素上實施空間連通性(算法1中的第7-8行)。
圖4中能夠看出來,SSNlinear就已經實現了遠高於基線的ASA和BR得分,這顯示了損失函數和經過超像素算法反向傳播損失信號的重要性。SSNdeep進一步提高了ASA和BR得分。能夠看到,k越高,每每也就有着更高的得分,v也是這樣。
出於計算的考慮,這裏以後的SSNdeep都指代k=20和v=10。
圖上能夠看到,SSNpix效果接近於SLIC算法,這也反映出來當放鬆最近鄰約束的時候SLIC的性能並不會損失。
請注意,SSNdeep超像素平滑地跟隨對象邊界,而且也更集中在對象邊界附近。
使用的數據集:Cityscapes和Pascal VOC。
咱們使用NVIDIA Tesla V100 GPU計算GPU運行時。SSNpix和SSNdeep之間的運行時比較代表SSN計算時間的很大一部分是因爲可微分SLIC。運行時代表SSN比幾個超像素算法的實現快得多。
這裏與上一部分的差別主要在於語意標籤的使用和重建損失。鼓勵SSN學習附着於語義分割的超像素。
圖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表示。
表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來生成有效表示光流的超像素。
這裏使用相同的方法來計算ASA得分。對於每一個超像素內部的像素,指定平均真值光流來產生一個分割光流,圖9中顯示了一些分割光流的結果。以後計算真值光流和分割光流的歐氏距離,這稱爲終點偏差(end-point error EPE)。該值越低,超像素越能更好的表示光流。
圖9中的結果代表,SSNdeep超像素相比其餘超像素,對於真值光流的變化更好地對齊。圖8b顯示了現有超像素技術的平均EPE值,能夠看出SSNdeep相較於現存的超像素技術表現出色。這顯示了SSN在學習任務特定的超像素中的有用性。
提出了一種新穎的超像素採樣網絡(SSN),它利用經過端到端訓練學到的深層特徵來估計任務特定的超像素。這是第一個端到端可訓練的深度超像素預測技術。
相信這項工做開闢了利用深層網絡中的超像素的新途徑,並激發了使用超像素的新深度學習技術。