全球計算機視覺三大頂會之一 ECCV 2018 (European Conference on Computer Vision)即將於9月8 -14日在德國慕尼黑拉開帷幕。屆時,曠視首席科學家孫劍博士將帶領團隊遠赴盛會,助力計算機視覺技術的交流與落地。而在此之前,曠視科技將陸續推出 ECCV 2018 接收論文系列解讀。本文是第 6 篇,一個可實現實時語義分割的雙向網路 BiSeNet。
論文名稱:BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation
論文連結:https://arxiv.org/abs/1808.00897
導語
機器看懂世界,目前一個主要的途徑是透過影像,而要理解一張影像,就要對其組成的每一個基本元素——畫素有準確瞭解。從畫素層面為一張影像打上語義標籤,這就是語義分割,它是計算機視覺的主要任務之一,但在實際落地之時,往往還有實時處理的場景需求。本文中,基於三種主流的實時語義分割模型加速方法,曠視科技創新性地提出雙向網路 BiSeNet,不僅實現了實時語義分割,還在特徵融合模組和注意力最佳化模組的幫助之下,把語義分割的效能推進到一個新高度,從而為該技術的相關落地進一步鋪平了道路。
背景
語義分割是計算機視覺領域的一項基本任務,旨在為一張影像之中的每個畫素打上語義標籤,可應用於擴增實境、自動駕駛、安防監控等領域,並在使用過程中能夠實時響應快速執行。最近,實時語義分割模型的加速取得一定進展,主要有以下三種方法:
1.透過剪裁或 resize 來限定輸入大小,以降低計算複雜度。儘管這種方法簡單而有效,空間細節的損失還是讓預測打了折扣,尤其是邊界部分,導致度量和視覺化的精度下降;
2.透過減少網路通道數量加快處理速度,尤其是在骨幹模型的早期階段,但是這會弱化空間資訊。
3.為追求極其緊湊的框架而丟棄模型的最後階段(比如ENet)。該方法的缺點也很明顯:由於 ENet 拋棄了最後階段的下采樣,模型的感受野不足以涵蓋大物體,導致判別能力較差。
總之,上述三個方法都是折中精度以求速度,難以付諸實踐。圖 1(a) 是其圖示。為解決上述空間資訊缺失問題,研究者普遍採用 U 形結構。透過融合 backbone 網路不同層級的特徵,U 形結構逐漸增加了空間解析度,並填補了一些遺失的細節。
但是,這一技術有兩個弱點:1)由於高解析度特徵圖上額外計算量的引入,完整的 U 形結構拖慢了模型的速度。2)更重要的是,如圖 1(b) 所示,絕大多數由於裁剪輸入或者減少網路通道而丟失的空間資訊無法透過引入淺層而輕易復原。換言之,U 形結構頂多是一個備選方法,而不是最終的解決方案。
設計思想
基於上述觀察,本文提出了雙向分割網路(Bilateral Segmentation Network/BiseNet),它包含兩個部分:Spatial Path (SP) 和 Context Path (CP)。顧名思義,這兩個元件分別用來解決空間資訊缺失和感受野縮小的問題,其設計理念也非常清晰。
對於 Spatial Path,本文只疊加三個卷積層以獲得 1/8 特徵圖,其保留著豐富的空間細節。對於 Context Path,本文在 Xception 尾部附加一個全域性平均池化層,其中感受野是 backbone 網路的最大值。圖 1(c) 展示了這兩個元件的結構。
圖 1:不同模型加速方法的圖示
在追求更快、更好模型的過程中,本文也研究了兩個元件的融合,以及最後預測的最佳化,並分別提出特徵融合模組(Feature Fusion Module/FFM)和注意力最佳化模組(Attention Refinement Module/ARM)。在 Cityscapes,CamVid 和 COCO-Stuff 資料集上的實驗表明,這兩個模組進一步從整體上提升了語義分割的精度。
BiSeNet
在本節中,首先詳細介紹 BiSeNet 網路及其兩路網路 Spatial Path 和 Context Path;接著,分別證明其有效性;最後,展示如何利用特徵融合模組整合這兩路網路的特徵以及 BiSeNet 的整體架構。
Spatial Path
在語義分割任務中,空間解析度和感受野很難兩全,尤其是在實時語義分割的情況下,現有方法通常是利用小的輸入影像或者輕量主幹模型實現加速。但是小影像相較於原影像缺失了很多空間資訊,而輕量級模型則由於裁剪通道而損害了空間資訊。
基於這一觀察,本文提出 Spatial Path 以保留原輸入影像的空間尺度,並編碼豐富的空間資訊。Spatial Path 包含三層,每層包含一個步幅(stride)為 2 的卷積,隨後是批歸一化和 ReLU。因此,該路網路提取相當於原影像 1/8 的輸出特徵圖。由於它利用了較大尺度的特徵圖,所以可以編碼比較豐富的空間資訊。圖 2(a) 給出了這一結構的細節。
圖 2:BiSeNet 概覽
Context Path
在語義分割任務中,感受野對於效能表現至關重要。為增大感受野,一些方法利用金字塔池化模組,金字塔型空洞池化(ASPP)或者 “large kernel”,但是這些操作比較耗費計算和記憶體,導致速度慢。出於較大感受野和較高計算效率兼得的考量,本文提出 Context Path,它充分利用輕量級模型與全域性平均池化以提供大感受野。
在本工作中,輕量級模型,比如 Xception,可以快速下采樣特徵圖以獲得大感受野,編碼高層語義語境資訊。接著,本文在輕量級模型末端新增一個全域性平均池化,透過全域性語境資訊提供一個最大感受野。在輕量級模型中,本文藉助 U 形結構融合最後兩個階段的特徵,但這不是一個完整的 U 形結構。圖 2(c) 全面展示了 Context Path。
注意力最佳化模組(ARM):在 Context Path 中,本文提出一個獨特的注意力最佳化模組,以最佳化每一階段的特徵。如圖 2(b) 所示,ARM 藉助全域性平均池化捕獲全域性語境並計算注意力向量以指導特徵學習。這一設計可以最佳化 Context Path 中每一階段的輸出特徵,無需任何上取樣操作即可輕易整合全域性語境資訊,因此,其計算成本幾乎可忽略。
網路架構
在 Spatial Path 和 Context Path 的基礎上,本文提出 BiSeNet,以實現實時語義分割,如圖 2(a) 所示。本文把預訓練的 Xception 作為 Context Path 的 backbone,把帶有步幅的三個卷積層作為 Spatial Path;接著本文融合這兩個元件的輸出特徵以做出最後預測,它可以同時實現實時效能與高精度。
首先,本文聚焦於實際的計算方面。儘管 Spatial Path 有大感受野,但只有三個卷積層。因此,它並非計算密集的。對於 Context Path,本文藉助一個輕量級模型快速下采樣。進而,這兩個元件平行計算,極大地提升了效率。第二,本文還討論了網路的精度方面。Spatial Path 編碼豐富的空間資訊,Context Path 提供大感受野,兩者相輔相成,從而實現更高效能。
特徵融合模組:在特徵表示的層面上,兩路網路的特徵並不相同。因此不能簡單地加權這些特徵。由 Spatial Path 捕獲的空間資訊編碼了絕大多數的豐富細節資訊。而 Context Path 的輸出特徵主要編碼語境資訊。換言之,Spatial Path 的輸出特徵是低層級的,Context Path 的輸出特徵是高層級的。因此,本文提出一個獨特的特徵融合模組以融合這些特徵。
在特徵的不同層級給定的情況下,本文首先連線 Spatial Path 和 Context Path 的輸出特徵;接著,透過批歸一化平衡特徵的尺度。下一步,像 SENet 一樣,把相連線的特徵池化為一個特徵向量,並計算一個權重向量。這一權重向量可以重新加權特徵,起到特徵選擇和結合的作用。圖 2(c) 展示了這一設計的細節。
損失函式:本文透過輔助損失函式監督模型的訓練,透過主損失函式監督整個 BiSeNet 的輸出。另外,還透過新增兩個特殊的輔助損失函式監督 Context Path 的輸出,就像多層監督一樣。上述所有損失函式都是 Softmax。最後藉助引數 α 以平衡主損失函式與輔助損失函式的權重。
實驗
本文采用修改版的 Xception39 處理實時語義分割任務,並在 Cityscapes,CamVid 和 COCO-Stuff 三個資料集上對 BiSeNet 進行了評估,對比其他同類方法,給出了自己的結果。
本節還對演算法的速度與精度進行了著重分析。
速度分析
本文實驗在不同設定下做了完整的對比。首先給出的是 FLOPS 和引數的狀態(見表 4)。
表 4:基礎模型 Xception39 和 Res18 在 Cityscapes 驗證集上的精度與引數分析
FLOPS 和引數表明在給定解析度下處理影像所需要的運算元量。出於公平對比的考慮,本文選擇 640×360 作為輸入影像的解析度。同時,表 5 給出了不同輸入影像解析度和不同硬體基準下本方法與其他方法的速度對比。
表 5:本文方法與其他方法的速度結果對比。1和2分別代表backbone是Xception39和Res18網路
最後,本文給出了該方法在 Cityscapes 測試資料集上的速度及相應的精度結果。從表 6 可以看出,該方法相較於其他方法在速度和精度方面的巨大進展。
表 6:Cityscapes 測試集上本文方法與其他方法的精度與速度對比
在評估過程中,本文首先把輸入影像的解析度從 2048×1024 縮至 1536×768,以測試速度和精度;同時,透過 online bootstrap 的策略計算損失函式。整個過程中本文不採用任何測試技巧,比如多尺度或多次裁剪測試。
精度分析
事實上,BiSeNet 也可以取得更高的精度結果,甚至於可以與其他非實時語義分割演算法相比較。這裡將展示 Cityscapes,CamVid 和 COCO-Stuff 上的精度結果。同時,為驗證該方法的有效性,本文還將其用在了不同的骨幹模型上,比如標準的 ResNet18 和 ResNet101。
結果
Cityscapes:如表 7 所示,該方法在不同模型上都取得了出色的結果。為提升精度,本方法首先隨機裁切 1024x1024 大小的圖作為輸入。圖 4 給出了一些視覺化結果例項。
圖 4:Cityscapes 資料集上基於 Xception39,Res18 和 Res101 的結果例項
表 7:Cityscapes 測試集上本方法與其他方法的精度結果對比
CamVid:表 8 給出了 CamVid 資料集上統計的精度結果。對於測試,本文透過訓練資料集和測試資料集訓練模型。這裡訓練和評估使用的解析度是 960×720。
表 8:CamVid 測試集上的精度結果
COCO-Stuff:表 9 給出了 COCO-Stuff 驗證集上的精度結果。在訓練和驗證過程中,本文把輸入解析度裁剪為 640×640。出於公平對比,本文不採用多尺度測試。
表 9:COCO-Stuff 驗證集上的精度結果。注:這裡的COCO-Stuff是官方新公佈的16萬張圖片的資料集
結論
BiSeNet 旨在同時提升實時語義分割的速度與精度,它包含兩路網路:Spatial Path 和 Context Path。Spatial Path 被設計用來保留原影像的空間資訊,Context Path 則利用輕量級模型和全域性平均池化快速獲取大感受野。由此,在 105 fps 的速度下,該方法在 Cityscapes 測試集上取得了 68.4% mIoU 的結果。
參考文獻
lChollet, F.: Xception: Deep learning with depthwise separable convolutions. IEEE Conference on Computer Vision and Pattern Recognition (2017)
lBadrinarayanan, V., Kendall, A., Cipolla, R.: SegNet: A deep convolutional encoder-decoder architecture for image segmentation. IEEE Transactions on Pat- tern Analysis and Machine Intelligence 39(12), 2481–2495 (2017)
lPaszke, A., Chaurasia, A., Kim, S., Culurciello, E.: Enet: A deep neural network architecture for real-time semantic segmentation. arXiv (2016)
lWu, Z., Shen, C., Hengel, A.v.d.: Real-time semantic image segmentation via spatial sparsity. arXiv (2017)
lRonneberger, O., Fischer, P., Brox, T.: U-net: Convolutional networks for biomedical image segmentation. In: International Conference on Medical Image Computing and Computer-Assisted Intervention (2015)
lYu, C., Wang, J., Peng, C., Gao, C., Yu, G., Sang, N.: Learning a discriminative feature network for semantic segmentation. In: IEEE Conference on Computer Vision and Pattern Recognition (2018)