語義分割江湖的那些事兒:從曠視說起
我愛計算機視覺 標星,更快獲取CVML新技術
本文來自知乎 Face++ Detection組 專欄,52CV獲作者ycszen授權轉載。
https://zhuanlan.zhihu.com/p/55263898
今天的主題是 Face++ Detection 組近兩年持續在做的 Semantic Segmentation相關工作,代表性成果主要有 1)GCN (CVPR2017)、2)DFN (CVPR2018)、3)BiSeNet (ECCV2018)。
我們先來看一段演示 Demo:
回顧
介紹演算法之前,我們先簡單回顧一下語義分割(semantic segmentation)的歷史。眾所周知,計算機視覺有三大核心任務——分類、檢測、分割,三者號稱是深度學習煉丹師的“三大浪漫”。分類針對整張圖片,檢測針對圖片的區域性,語義分割則如圖1所示,旨在給輸入圖片上的每個畫素賦予一個正確的語義標籤。

傳統的分割演算法我們先按下不表。時間撥回到 2015 年,語義分割江湖之中,FCN 橫空出世,自此 DL/NN 方法席捲了整個語義分割領域。短短几年,各個 Benchmark 的 state-of-the-art 不斷重新整理,成果喜人。
FCN 前期階段,研究重點主要是解決“網路逐漸衰減的特徵尺寸和需要原圖尺寸的預測之間的矛盾”,換言之,就是如何解決網路不斷 downsample 造成的資訊損失;期間百家爭鳴,百花齊放,湧現了希望儲存或者恢復資訊的 unpool、deconv 等方法,也出現了進行結構預測的各種花式 CRF 方法。
“大道之爭”之中,碰撞出了兩個最重要的設計:U-shape Structure 和 Dilation Conv,據此形成當下語義分割領域網路設計最常見的兩大派系:1)U-shape 聯盟以 RefineNet、GCN、DFN 等演算法為代表;2)Dilation 聯盟以 PSPNet、Deeplab 系列方法為代表;隨著 Base Model 效能不斷提升,語義分割任務的主要矛盾也逐漸漸演變為“如何更有效地利用 context”;這中間又是一番腥風血雨,我們今天介紹的 3 位主角也在其中貢獻了一份力量。
介紹
語義分割任務同時需要 Spatial Context 和 Spatial Detail 。今天我們介紹的三種演算法都將從這兩方面分別提出各自對應的解決方案。整體對比如下:

Global Convolutional Network
第一位主角是 CVPR2017 演算法 Global Convolutional Network(GCN),江湖人送外號“Large Kernel”。論文 Arxiv 連結請見: arxiv.org/abs/1703.0271 。
——Motivation——
GCN 主要將 Semantic Segmentation分解為:Classification 和 Localization兩個問題。但是,這兩個任務本質對特徵的需求是矛盾的,Classification需要特徵對多種Transformation具有不變性,而 Localization需要對 Transformation比較敏感。但是,普通的 Segmentation Model大多針對 Localization Issue設計,正如圖2(b)所示,而這不利於 Classification。

所以,為了兼顧這兩個 Task,本文提出了兩個 Principle:
-
從 Localization 來看,我們需要全卷積網路,而且不能有全連線或者全域性池化等操作丟失位置資訊。
-
從 Classification 來看,我們需要讓 Per-pixel Classifier 或者 Feature Map 上每個點的連線更稠密一些,也就需要更大的 Kernel Size,如圖 2(c) 所示。
——網路結構——
根據這兩條 Principle,本文提出了Global Convolutional Network(GCN)。如圖3所示,這個方法整體結構正是背景介紹中提到的U-shape結構,其核心模組主要包括:GCN 和 BR。

此處主要介紹GCN設計。正如圖3(b)所示,它採用了較大 Kernel Size的卷積核,來同時解決上述的兩個 Issue;然後根據矩陣分解,利用1 x k + k x 1 和k x 1 + 1 x k 的卷積來替代原來的k x k 大核卷積。相對於原本的大核卷積,該設計能明顯降低引數量和計算量。圖4可視化了 Large Kernel Conv 和 普通 Conv網路有效感受野的對比。

可以看到,Large Kernel Conv 的有效感受野顯著增大。
——實驗——
文中為了驗證 Large Kernel Conv的有效性,對比了不同 Size的 Kernel,可以看到Kernel Size=15時比 Base Network整整高了 5.5% mean IoU.

此外,文中還對 Large Kernel Conv 進行了一系列討論。
-
GCN 的有效是否得益於更多的引數?
在GCN中,隨著 Kernel Size的增加,網路引數也隨之增長,那麼網路效能的提升是否得益於使用了更多的引數?為了證明提升來自於設計的有效性而不是增加了複雜度,文中設計了不同 Kernel Size的GCN和普通Conv的對比實驗。

通過實驗結果可知,隨著 Kernel Size的增加,普通 Conv的引數量遠大於GCN,但是GCN的效能卻持續地優於普通 Conv。
-
GCN使用 Large Kernel Size增大了感受野,是否可以通過堆疊多個 Small Kernel Size的 Conv來替代?
文章為此設計了實驗對比兩者的結果。

可以看到 GCN 依然優於普通 Conv 的堆疊,尤其是在較大 Kernel Size 的情況下。筆者認為這是一個很有價值的實驗,可以啟發我們去思考關於網路感受野的問題。我們以往認為,通過堆疊多個小核 Conv 可以達到和大核 Conv 一樣的感受野,同時計算量還更少。最常見的應用比如 VGG-Net。但是,實際上並非如此。
隨著網路深度的提升,理論上網路的感受野大多可以直接覆蓋全圖,但是實際有效感受野卻遠小於此。筆者的理解是對同一個 Feature Map 進行卷積,邊緣區域進行計算的次數會小於中心區域,所以隨著 Conv 的不斷堆疊,實際上會導致邊緣感受野的衰減,即有效感受野會遠小於理論感受野。
最後文中給出了在 PASCAL VOC 2012 和 Cityscapes 上完整的 Training Strategy,這在當時還是很良心的,之前的一些 Paper 對此都語焉不詳。具體詳細的 Training 過程請參考原文。
最終 GCN 在 PASCAL VOC 2012 和 Cityscapes 上都取得了不錯的結果。
——PASCAL VOC 2012——

——Cityscapes——

Discriminative Feature Network
接下來出場的是 CVPR2018 演算法 Discriminative Feature Network(DFN)。論文Arxiv連結請見: arxiv.org/abs/1804.0933 。詳細解讀請見:CVPR 2018 | 曠視科技Face++提出用於語義分割的判別特徵網路DFN(https://zhuanlan.zhihu.com/p/36540674)。
——Motivation——
本文總結了現有語義分割方法仍然有待解決的兩類 Challenge(如圖 5 所示):
-
Intra-class Inconsistency(具有相同的語義標籤,不同的表觀特徵的區域)
-
Inter-class Indistinction(具有不同的語義標籤,相似的表觀特徵的區域)

所以,本文從巨集觀角度出發重新思考語義分割任務,提出應該將同一類的 Pixel考慮成一個整體,也就需要增強類內一致性,增大類間區分性。總結而言,我們需要更具有判別力的特徵。
——網路結構——
本文提出的DFN主要包括兩部分:Smooth Network 和 Border Network,如圖6所示。

Smooth Network 主要解決類內不一致性問題。文中認為類內不一致性問題主要來自Context 的缺乏。進而,我們需要引入 Multi-scale Context 和 Global Context;但是,不同 Stage 的特徵雖然帶來了 Multi-scale Context,與此同時也帶來了不同的判別能力;因此,我們需要對這些具有不同判別力的特徵進行篩選,這就誕生了其中核心的設計——Channel Attention Block(CAB)。
CAB 利用相鄰 Stage 的特徵計算 Channel Attention 然後對 Low-stage 的特徵進行篩選,如圖 7 所示。因為文中認為,High-stage 的特徵語義資訊更強,更具有判別力。

此外,本文首次在 U-shape 結構中採用 Global Average Pooling,這個設計非常有效。ParseNet 首次在語義分割中使用 Global Average Pooling 提取 Global Context,而之後的 PSPNet,Deeplab V3 將其在 Dilation 陣營發揚光大。而本文將其應用 U-shape 的High-stage,並命名為“V-shape”。我們嘗試將其遷移到 Detection 中的 FPN 結構,結果證明同樣有效。
Border Network 主要解決類間低區分性的問題。文中認為具有相似表觀特徵的不同區域很容易被網路混淆,尤其是相鄰之時。所以,需要增大特徵之間的區分性。為此文章顯式地引入了 Semantic Boundary 來引導特徵學習。因為 Low-stage 主要關注一些細節邊緣區域,而隨著語義的增強,High-stage 的特徵才是更多關注語義邊界,所以 Border Network 採用了“反 U-shape”結構。
——實驗——
文中進行了豐富的消融實驗和視覺化分析。
首先是對 Smooth Network 各部分的消融實驗分析。可以看到Smooth Network非常有效,在PASCAL VOC 2012 Validation Set上可以達到 Single Scale 79.54% mean IoU。

而通過視覺化輸出,可以看到Smooth Network確實可以將類內區域變得更加一致,如圖8所示。

同時,文中還對 Smooth Network 和 Border Network 進行了消融實驗分析。

通過視覺化Border Network的輸出,可以看到Border Network確實可以很好地關注到Semantic Boundary區域,如圖9所示。

最終,DFN在PASCAL VOC 2012和 Cityscapes上效能都達到了當時的state-of-the-art。


BiSeNet
最後出場的主角是 ECCV 2018 演算法 Bilateral Segmentation Network(BiSeNet)。前面兩個演算法主要關注 Accuracy,探索 mean IoU 的極限;而 BiSeNet 關注於做出一個既快又好的實時語義分割演算法。最終該演算法在 Cityscapes 上能取得 68.4% mean IoU 105 FPS (NVIDIA Titan XP)的好成績。當然,我們希望這篇工作能拋磚引玉,嘗試探討到底什麼架構才更適合 Segmentation 任務,什麼框架才能很好地同時獲得充足的 Context 和豐富的空間資訊?論文 Arxiv 連結請見: arxiv.org/abs/1808.0089 。
詳細解讀請見:ECCV 2018 | 曠視科技提出雙向網路BiSeNet:實現實時語義分割(https://zhuanlan.zhihu.com/p/41475332)。
——Motivation——
本文對之前的實時性語義分割演算法進行了總結,發現當前主要有三種加速方法:1) 通過 Crop 或者 Resize 限制輸入圖片進而減少計算量;2) 減少網路通道數,尤其是 Early Stage;3) 還有像 ENet 類似的方法直接丟掉最後一個 Stage,如圖10(a)所示。
這些提速的方法會丟失很多 Spatial Details 或者犧牲 Spatial Capacity,從而導致精度大幅下降。為了彌補空間資訊的丟失,有些演算法會採用 U-shape 的方式恢復空間資訊。但是,U-shape 會降低速度,同時很多丟失的資訊並不能簡單地通過融合淺層特徵來恢復,如圖 10(b) 所示。

總結而言,實時性語義分割演算法中,加速的同時也需要重視空間資訊。基於這些觀察,本文提出了一種新的解決方案Bilateral Segmentation Network(BiSeNet)。
——網路結構——
BiSeNet區別於 U-shape 和 Dilation 結構,嘗試一種新的方法同時保持 Spatial Context 和 Spatial Detail 。所以,我們設計了Spatial Path和Context Path兩部分。顧名思義,Spatial Path使用較多的 Channel、較淺的網路來保留豐富的空間資訊生成高解析度特徵;Context Path使用較少的 Channel、較深的網路快速 downsample來獲取充足的 Context。基於這兩路網路的輸出,文中還設計了一個Feature Fusion Module(FFM)來融合兩種特徵,如圖11所示。

Spatial Path 只包含三個stride = 2 的 Conv+BN+Relu,輸出特徵圖的尺寸為原圖的1/8。為了訪存比考慮,此處並沒有設計 Residual結構。
Context Path 可以替換成任意的輕量網路,比如 Xception,ShuffleNet 系列,MobileNet 系列。本文主要採用 Xception39 和 ResNet-18 進行實驗。可以看到,為了準確率考慮,Context Path 這邊使用了類似 U-shape 結構的設計。不過,不同於普通的 U-shape,此處只結合了最後兩個 Stage,這樣設計的原因主要是考慮速度。此外,和 DFN 類似,Context Path 依然在最後使用了 Global Average Pooling 來直接獲取Global Context。
最後,文章中提到因為兩路網路關注的資訊不同,屬於 Different Level 的特徵,所以文中設計了一個 FFM 結構來有效融合兩路特徵。
——實驗——
本文從精度和速度兩個維度,進行了豐富的分析實驗。
首先文中分析了 Context Path 這邊使用不同變體的 U-shape 結構的速度和精度的對比。

此處,U-shape-8s 就是文中所展示的結構,U-shape-4s 則是普通的 U-shape 設計,即融合了更多 stage 特徵。可以看到,U-shape-4s 的速度會明顯慢於 U-shape-8s.
文中還對 BiSeNet 的各個部分進行了消融分析實驗。

文中還給出了 BiSeNet 的 GFLOPS、引數量等資訊,以及在不同硬體平臺不同解析度下的速度對比。


文中給出了 BiSeNet 分別與實時性演算法和非實時性演算法比較的結果。
與實時性演算法比較:

雖然 BiSeNet 是實時性演算法,但是它的精度甚至比一些非實時性演算法還高。
與非實時性演算法比較:

可以看到,BiSeNet 是一種很有效的設計。當替換上大模型之後,精度甚至高於 PSPNet 等演算法。另外,需要注意的是,為了和非實時性演算法進行比較,在關注精度這部分實驗 BiSeNet 使用的不同於關注速度部分的 Setting,具體細節詳見論文。
BiSeNet 演算法對實時性語義分割演算法提出了新的思考,在提升速度的同時也需要關注空間資訊。同時,該設計也是一次對 Segmentation Backbone 的思考,希望設計一個對 Segmentation 任務友好的框架,當然現在還存在許多需要改進的地方。此外,該方法不僅僅可應用於實時性語義分割演算法,也可應用於其他領域,尤其是在對 Spatial Detail 和 Context 同時有需求的情況下。據筆者瞭解,已有研究將其應用於 Potrait Segmentation.
重要的事情
-
我們的 DFN 和 BiSeNet 均已開源,後續將有更多的語義分割演算法復現開源出來,歡迎大家 Star 和 Contribute:
https://github.com/ycszen/TorchSeg
-
歡迎各位同學加入曠視科技 Face++ Detection Team,簡歷可以投遞給 Detection 組負責人俞剛 ( [email protected] )
Reference
[1] Peng, C., Zhang, X., Yu, G., Luo, G., & Sun, J. (2017). Large kernel matters—improve semantic segmentation by global convolutional network. In Computer Vision and Pattern Recognition (CVPR), 2017 IEEE Conference on (pp. 1743-1751). IEEE.
[2] Yu, C., Wang, J., Peng, C., Gao, C., Yu, G., & Sang, N. (2018). Learning a Discriminative Feature Network for Semantic Segmentation. arXiv preprint arXiv:1804.09337 .
[3] Yu, C., Wang, J., Peng, C., Gao, C., Yu, G., & Sang, N. (2018, September). Bisenet: Bilateral segmentation network for real-time semantic segmentation. In European Conference on Computer Vision (pp. 334-349). Springer, Cham.
[4] Long, J., Shelhamer, E., & Darrell, T. (2015). Fully convolutional networks for semantic segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 3431-3440).
[5] Ronneberger, O., Fischer, P., & Brox, T. (2015, October). U-net: Convolutional networks for biomedical image segmentation. In International Conference on Medical image computing and computer-assisted intervention (pp. 234-241). Springer, Cham.
---------解讀者介紹-------
餘昌黔,華中科技大學自動化系在讀博士,曠視科技研究院演算法實習生,語義分割演算法DFN、BiSeNet 第一作者,研究方向涵蓋語義分割、全景分割、快速分割、視訊分割等,並在上述方向有著長期深入的研究;2018 年,參加計算機視覺頂會 ECCV 挑戰賽 COCO+Mapillary,分獲全景分割(Panoptic Segmentation)兩項冠軍,並受邀作現場口頭報告。
個人網頁:
http://changqianyu.me/
加入語義分割專業群
加入52CV-語義分割專業討論群,掃碼新增52CV君(your-word)拉你入群:
( 請務必註明:語義分割 )
喜歡在QQ交流的童鞋,可以加52CV官方 QQ群 :928997753。
(不會時時線上,如果沒能及時通過驗證還請見諒)
更多技術乾貨,詳見:
長按關注 我愛計算機視覺
給我一個好看吧 !