臨近中國的春節,Google 團隊也從不休假,趁著中國人每年一度大遷徙,他們在 arXiv 放出了 DeepLabv3+,雖然這個技術已經出現很久,但是其在語義分割領域取得新的 state-of-the-art 水平,以及典型的改進型讓大家都能夠熟知。那今天計算機視覺戰隊開始好好說說這一系列的操作,有興趣的同學,我們一起去進行深入學習討論!
今天先講講DeepLab v1的那些知識。
原文地址:Semantic image segmentation with deep convolutional nets and fully connected CRFs
收錄:ICLR 2015 (International Conference on Learning Representations)
DeepLab是結合了深度卷積神經網絡(DCNNs)和概率圖模型(DenseCRFs)的方法。在實驗中發現DCNNs做語義分割時精度不夠的問題,根本原因是DCNNs的高級特徵的平移不變性(即高層次特徵映射)。DeepLab解決這一問題的方法是通過將DCNNs層的響應和全連接的條件隨機場(CRF)結合。同時模型創新性的將Hole(即空洞卷積)算法應用到DCNNs模型上,在現代GPU上運行速度達到了8FPS。
相比於傳統的視覺算法(SIFT或HOG),DCNN以其end-to-end(端到端)方式獲得了很好的效果。這樣的成功部分可以歸功於DCNN對圖像轉換的平移不變性,這根本是源於重複的池化和下採樣組合層。平移不變性增強了對數據分層抽象的能力,但同時可能會阻礙部分視覺任務,例如姿態估計、語義分割等,在這些任務中我們傾向於精確的定位而不是抽象的空間關係。
DCNN在圖像標記任務中存在兩個技術障礙:
第一個問題涉及到:在DCNN中重複最大池化和下採樣帶來的解析度下降問題,解析度的下降會丟失細節。DeepLab是採用的atrous(帶孔)算法擴展感受野,獲取更多的上下文信息。
第二個問題涉及到:分類器獲取以對象中心的決策是需要空間變換的不變性,這天然的限制了DCNN的定位精度,DeepLab採用全連接的條件隨機場(DenseCRF)提高模型捕獲細節的能力。
主要貢獻:
速度:帶atrous算法的DCNN可以保持8FPS的速度,全連接CRF平均推斷只需要0.5s;
準確:在當年PASCAL語義分割挑戰中獲得了第二的成績;
簡單:DeepLab是由兩個非常成熟的模塊(DCNN和CRFs)級聯而成。
相關工作:
DeepLab系統應用在語義分割任務上,目的是做逐像素分類的,這與使用two-stages的DCNN方法形成鮮明對比(指R-CNN等系列的目標檢測工作),R-CNN系列的做法是原先圖片上獲取候選區域,再送到DCNN中獲取結果。雖然這種方法明確地嘗試處理前段分割算法的本質,但在仍沒有明確的利用DCNN的預測圖。
今天提出的算法框架與其他先進模型的主要區別在於DenseCRFs和DCNN的結合。是將每個像素視為CRF節點,利用遠程依賴關係,並使用CRF推理直接優化DCNN的損失函數。Koltun(2011)的工作表明全連接的CRF在語義分割下非常有效。
也有其他研究者採取非常相似的方向,將DCNN和密集的CRF結合起來,作者團隊已經更新提出了DeepLab新框架(此處具體指的是DeepLabV2)。
密集分類下的卷積神經網絡
這裡先描述一下DCNN如何設計,調整VGG16模型,轉為一個可以有效提取特徵的語義分割框架。具體來說,先將VGG16的FC層轉為卷積層,模型變為全卷積的方式,在圖像的原始解析度上產生非常稀疏的計算檢測分數(步幅32,步幅=輸入尺寸/輸出特徵尺寸),為了以更密集(步幅8)的計算得分,我們在最後的兩個最大池化層不下採樣(padding到原大小),再通過2或4的採樣率的空洞卷積對特徵圖做採樣擴大感受野,縮小步幅。
空洞卷積的使用
簡單介紹下空洞卷積在卷積神經網絡的使用(在後期分享的DeepLabv3中有更詳細的討論)。在1-D的情況下,我們擴大輸入核元素之間的步長,如下圖Input stride:
如果不是很直觀,看下面的在二維圖像上應用空洞卷積:
藍色部分是輸入:7×7的圖像;
青色部分是輸出:3×3的圖像;
空洞卷積核:3×3,採樣率(擴展率)為2,無padding。
這種帶孔的採樣又稱atrous算法,可以稀疏的採樣底層特徵映射,該方法具有通常性,並且可以使用任何採樣率計算密集的特徵映射。在VGG16中使用不同採樣率的空洞卷積,可以讓模型在密集的計算時,明確控制網絡的感受野。保證DCNN的預測圖可靠的預測圖像中物體的位置。
訓練時將預訓練的VGG16的權重做fine-tune,損失函數是輸出的特徵圖與ground truth下採樣8倍做交叉熵和;測試時取輸出圖雙線性上採樣8倍得到結果。但DCNN的預測物體的位置是粗略的,沒有確切的輪廓。在卷積網絡中,因為有多個池化層和下採樣的重複組合層使得模型具有平移不變性,我們在其輸出的high-level的基礎上做定位是比較難的。這需要做分類精度和定位精度之間是有一個自然的折中。
解決這個問題的工作,主要分為兩個方向:
第一種是利用卷積網絡中多個層次的信息;
第二種是採樣超像素表示,實質上是將定位任務交給底級的分割方法。
DeepLab是結合了DCNNs的識別能力和全連接的CRF的細粒度定位精度,尋求一個結合的方法,結果證明能夠產生準確的語義分割結果。
CRF在語義分割上的應用
傳統上,CRF已被用於平滑噪聲分割圖。通常,這些模型包含耦合相鄰節點的能量項,有利於相同標籤分配空間近端像素。定性的說,這些短程的CRF主要功能是清除在手工特徵基礎上建立的弱分類器的虛假預測。
與這些弱分類器相比,現代的DCNN體系產生質量不同的預測圖,通常是比較平滑且均勻的分類結果(即以前是弱分類器預測的結果,不是很靠譜,現在DCNN的預測結果靠譜多了)。在這種情況下,使用短程的CRF可能是不利的,因為我們的目標是恢復詳細的局部結構,而不是進一步平滑。而有工作證明可用全連接的CRF來提升分割精度。
CRF在語義分割上的應用:
對於每個像素位置i具有隱變量xi(這裡隱變量就是像素的真實類別標籤,如果預測結果有21類,則(i∈1,2,..,21),還有對應的觀測值yi(即像素點對應的顏色值)。以像素為節點,像素與像素間的關係作為邊,構成了一個條件隨機場(CRF)。通過觀測變量yi來推測像素位置i對應的類別標籤xi。條件隨機場示意圖如下:
多尺度預測
論文還探討了使用多尺度預測提高邊界定位效果。具體的,在輸入圖像和前四個最大池化層的輸出上附加了兩層的MLP(第一層是128個3×3卷積,第二層是128個1×1卷積),最終輸出的特徵映射送到模型的最後一層輔助預測,合起來模型最後的softmax層輸入特徵多了5×128=640個通道,實驗表示多尺度有助於提升預測結果,但是效果不如CRF明顯。
Experiment
測試細節:
項目
設置
數據集
PASCAL VOC 2012 segmentation benchmark
DCNN模型
權重採用預訓練的VGG16
DCNN損失函數
交叉熵
訓練器
SGD,batch=20
學習率
初始為0.001,最後的分類層是0.01。每2000次迭代乘0.1
權重
0.9的動量, 0.0005的衰減
DeepLab由DCNN和CRF組成,訓練策略是分段訓練,即DCNN的輸出是CRF的一元勢函數,在訓練CRF時是固定的。在對DCNN做了fine-tune後,對CRF做交叉驗證。具體參數請參考論文。
CRF和多尺度的表現
在驗證集上的表現:
可以看到帶CRF和多尺度的(MSc)的DeepLab模型效果明顯上升了。
多尺度的視覺表現:
第一行是普通輸出,第二行是帶多尺度的輸出,可以看出多尺度輸出細節部分要好點。
空洞卷積的表現
在使用空洞卷積的過程中,可控制空洞卷積的採樣率來擴展特徵感受野的範圍,不同配置的參數如下:
同樣的實驗結果:
帶FOV的即不同空洞卷積的配置,可以看到大的空洞卷積效果會好一點。
與其他模型相比
與其他先進模型相比,DeepLab捕獲到了更細節的邊界。
DeepLab創造性的結合了DCNN和CRF產生一種新的語義分割模型,模型有準確的預測結果同時計算效率高。在PASCAL VOC 2012上展現了先進的水平。DeepLab是卷積神經網絡和概率圖模型的交集,後續可考慮將CNN和CRF結合到一起做end-to-end訓練。
後續我們將進一步討論DeepLabv2~3,他們都是DeepLabv1的升級版,並進一步討論空洞卷積和CRF的使用。