表現優良的卷積神經網路往往需要大量計算,這在移動和嵌入式裝置以及實時應用上是一個很不利的因素。近日,開羅大學和阿爾伯塔大學的研究者提出了一種能實現實時形義分割的框架 ShuffleSeg。這種方法能在保證分割準確度的同時顯著降低對計算資源的需求。機器之心在本文中對該專案進行了簡要編譯介紹,相關研究的 TensorFlow 程式碼已釋出在 GitHub 上。
論文地址:https://arxiv.org/abs/1803.03816
專案程式碼:https://github.com/MSiam/TFSegmentation
構建計算高效的卷積神經網路(CNN)仍然還是一個懸而未決的研究問題。在提升 CNN 的計算效率方面存在兩種主要機制。第一種機制側重於設計高效的模型,比如 GoogleNet、Xception、MobileNet 和近期的 ShuffleNet。另一種機制則是針對模型加速,具體方法包括對網路連線或通道進行剪枝或進行網路量化(network quantization)。之前在提升計算效率方面的研究主要側重於影像分類和目標檢測等最終任務。但以實時形義分割網路為目標的研究很少,儘管形義分割在機器人相關的應用中有許多益處。對計算高效的形義分割的需求是很顯著的。
我們在本論文中提出了一種實時的形義分割網路,該網路基於 [4] 中提出的 ShuffleNet 單元。我們在本論文中將其稱為 ShuffleSeg。ShuffleSeg 在其解碼器中整合了 skip 連線來改善分割結果。我們的網路需要 2.03 GFLOPs,在計算效率上的表現優於之前最佳的需要 3.83 GFLOPs 的分割網路。儘管如此,ShuffleSeg 還是在 CityScapes 測試集基準上實現了可與最佳表現媲美的平均交併比(IoU)——58.2%。因此,我們的網路在速度和準確度之間實現了很好的平衡。這有望實現在嵌入式裝置中的進一步部署應用。
實時形義分割在近期開始得到關注。Paszke et. al. [13] 引入了 ENet,這是帶有一個瓶頸模組(bottleneck module)的高效輕量級分割網路。Chaurasia et. al. [14] 提出了 LinkNet 架構,其使用 ResNet18 作為編碼器。LinkNet 實現了比 ENet 更優的平均 IoU。但 ENet 在計算效率上的表現更好。SegNet 和 FCN8s 等其它網路也沒有重點關注計算效率,但在分割相關文獻中被廣泛使用。Badrinarayanan et. al. [15] 提出的 SegNet 是使用編碼器-解碼器架構進行端到端形義分割的早期嘗試。Long et. al. [16] 首次嘗試了以端到端的方式訓練全卷積分割網路(FCN)。他還提出了 skip-net 方法,以在 FCN16s 和 FCN8s 架構的分割中使用更高解析度的特徵圖。
就我們所知,之前在實時形義分割上的研究都沒有利用分組卷積和通道混洗(channel shuffling)。我們在本研究中提出的 ShuffleSeg 是一種計算高效的分割網路。該網路的設計靈感源自 ShuffleNet,這是一種高效的分類和檢測網路。ShuffleNet 單元使用了分組卷積來提升效能,而沒有使用 1x1 卷積。只使用分組卷積對網路準確度不利,所以我們還使用了通道混洗來維持優良的準確度。這與 skip 架構組合在一起,可透過使用更高解析度的特徵圖來改善我們的分割結果。ShuffleSeg 的程式碼將會公開發布。
方法
這一節將詳細介紹我們提出的用於形義分割的網路架構。該架構將分成兩個主要模組進行解釋:負責提取特徵的編碼模組,負責在網路中進行上取樣以計算最終類別的機率圖的解碼模組。
解碼器架構
我們提出的架構中所使用的編碼器基於 ShuffleNet。我們主要從其中使用的分組卷積和通道混洗中受到了啟發。[4,2,3] 表明深度上可分的卷積或分組卷積可以在降低計算成本的同時維持優良的表徵能力。分組卷積的堆疊可能會導致出現一大主要瓶頸。輸出通道將從有限的輸入通道中匯出。為了解決這個問題,[4] 中引入了通道混洗,這種方法也在 ShuffleSeg 的編碼和解碼部分都得到了良好的應用。
圖 1:ShuffleSeg 網路架構
編碼器架構
該分割網路的解碼部分要執行轉置卷積,以便上取樣到輸入的解析度。受 UNet、FCN8s 和 Dilation Frontend 研究的啟發,我們使用了不同的解碼方法。我們比較的四種不同的解碼方法為 (1) UNet、(2) SkipNet、(3) Dilation Frontend 8s、(4) Dilation 4s
實驗
表 1:不同解碼方法在分類(class)層面上的準確度和計算效率比較
表 2:表 1:不同解碼方法在大類(category)層面上的準確度比較
表 3:ShuffleSeg 與當前最佳的實時分割網路的比較
圖 2:ShuffleSeg 在 CityScapes 上的定性影像。(a) 原影像,(b) 使用粗略標註預訓練後的 SkipNet,(b) UNet,(c) Dilation 8s
論文:ShuffleSeg:實時形義分割網路(ShuffleSeg: Real-time Semantic Segmentation Network)
實時形義分割對移動和機器人相關的應用而言非常重要。我們提出了一種計算高效的分割網路,我們稱之為 ShuffleSeg。我們提出的架構基於其編碼器中的分組卷積和通道混洗(channel shuffling),可用於提升效能。我們對不同的解碼方法進行了剝離研究(ablation study),比較了 Skip 架構、UNet 和 Dilation Frontend。我們討論了在速度和準確度權衡上的有趣見解。研究表明在解碼方法中的 skip 架構能為實時效能目標提供最好的折中,同時還能透過為更準確的分割使用更高解析度的特徵圖來提供足夠的準確度。我們在 CityScapes 上評估了 ShuffleSeg,並且將其與當前最佳的實時分割網路進行了比較。它在 CityScapes 測試集上實現了可與其它方法媲美的 58.3% 的交併比(IoU),同時 GFLOPs 降低了 1 倍。ShuffleSeg 在 NVIDIA Jetson TX2 上的執行速度為每秒 15.7 幀,這讓它在實時應用上有很大的應用潛力。