孔慧芳,馮 超,胡 杰
(合肥工業(yè)大學 電氣與自動化工程學院,安徽 合肥 230009)
近年來因為自動駕駛等應用需要目標識別和物體分類等信息準確及時的反饋,所以對可應用于移動端的語義分割網絡的需求十分迫切,也對語義分割結果的快速性和準確性提出了更高的要求。目前,語義分割結果的高精度大多是通過卷積層和特征通道的連續(xù)疊加來實現的,犧牲了網絡運行時間和內存占用,因此對需要極大計算資源的高精度分割網絡在移動端的實際應用中受到限制[1-2]。
文獻[3-5]研究了現有的實時語義分割工作,其中提高推理速度的技術主要如下3種:網絡壓縮[6-7]、卷積分解[8]以及丟棄特征后處理[6,9]。第1種技術應用于減少預訓練網絡的大小,如文獻[6]和文獻[10]所做的工作,修剪冗余通道,以實現更小的內存占用;第2種技術受到卷積因式分解的啟發(fā)[11],將標準卷積分解為深度可分離卷積和點向卷積減少計算資源消耗;對于最后一類網絡,通過刪除特征后處理階段,以追求一個非常輕量的框架來進一步減少網絡的運行時間。盡管這些已知的方法在實時性上取得了進展,但由于對象邊界周圍空間細節(jié)部分完全丟失,模型感受范圍變小而無法捕獲大物體對象全部信息等因素,影響了分割結果的準確性。
基于以上分析,本文提出一種基于特征上下文編碼的實時語義分割網絡(feature context encoder for real-time semantic segmentation network,FCENet),力求達到分割速度和精度的良好平衡。FCENet主要由上下文提取和特征后處理兩大模塊組成。
(1) 在上下文提取模塊中,通過卷積因式分解和通道混洗[12]等方法設計了非對稱瓶頸塊,用于提取淺層網絡下的密集特征上下文。
為更多地保留下采樣過程中的空間細節(jié),上下文提取模塊在構建方式上利用跳躍連接[13]的殘差結構。
(2) 為提高模型學習能力和分割精度,本文提出了編碼網絡的另一個基本模塊——特征后處理模塊。在此模塊中,對來自上下文提取模塊的特征信息進行不同范圍大小(全局、周圍、局部)的信息提取,并使用通道注意力塊作為溝通不同范圍信息的橋梁,利用較大范圍的特征指導較小范圍的特征改善上下文信息,即通過將較大范圍特征應用于通道上來重新加權較小范圍的周圍邊界信息,最終獲得優(yōu)化后的聯合特征上下文。
本文提出的特征上下文編碼網絡由上下文提取模塊和特征后處理模塊組成,如圖1所示。本節(jié)逐一介紹各模塊設計思路及方法,最后闡述編碼網絡的設計細節(jié)。
圖1 特征上下文編碼網絡FCENet的整體框架結構
一些實時語義分割的工作已經證明不同卷積運算的良好組合可以提升推理速度,同時殘差結構也被認為是聯結上下文信息的有效技術。本文在上下文提取模塊中設計的非對稱瓶頸塊結合了兩者的優(yōu)點。
為了盡可能多地獲取上下文信息同時減少參數,本文采用雙分支結構和通道混洗(channel shuffle)設計了非對稱瓶頸塊,和其他瓶頸塊的比較如圖2所示,包括ResNet[13]的瓶頸塊(圖2a)、ERFNet[8]的一維非瓶頸塊(圖2b)和ShuffleNet[12]的瓶頸塊(圖2c)、本文的非對稱瓶頸塊(圖2d)。其中,C為輸入卷積通道數。
圖2 不同瓶頸塊的比較
非對稱瓶頸塊的輸入首先通過1×1點向卷積處理特征通道數降為1/2,即將輸入分成雙分支結構,每個分支負責提取相應的信息。與使用其他標準卷積相比,這種點向卷積具有更少的參數。不僅如此,為了再次減少網絡計算負擔,2個分支均利用卷積因式分解的非對稱結構進行深度卷積,降低每個像素的卷積計算復雜度。更具體地說,一個分支用一組專門的一維濾波器(如1×3、3×1卷積)提取局部信息,另一個分支用1組帶有擴張速率因子的濾波器來增大感受范圍并提取周圍上下文信息。之后使用Concat級聯的方式來合并2個分支的輸出,恢復為輸入時的特征通道數。利用殘差結構特點將輸出與輸入做通道加和,增強特征,并將其作為Channel Shuffle的輸入,用于融合所有通道信息,輸入給下一個單元??梢钥闯?本文設計的非對稱瓶頸塊不僅是一個輕量級模塊,同時在特征上下文提取信息的能力方面也做了提升。
針對網絡參數量和推理速度,以往許多相關工作[5,9,14]對下采樣后的特征映射很少繼續(xù)進行后續(xù)處理,而是直接對包含的豐富特征上下文信息進行上采樣,犧牲部分精度以追求一個緊致輕量的框架結構。本文目的是整體權衡分割精度與推理速度,達到兩者的有機統一。為此,本文設計了FCENet的特征后處理模塊。對來自上下文提取模塊的信息做后續(xù)處理,處理單元是該模塊的核心部分,如圖3所示。
圖3 處理單元的結構
在處理單元中引入了通道注意力塊聯結不同層次的上下文信息,進一步細化提取到的上下文信息,結構如圖4所示,其中ReLu和Sigmoid為激活函數。它借助與SENET[15]一致的特征提取操作,顯示建模通道之間的相互依賴關系,開啟不同層級特征之間的信息通信。
圖4 通道注意力塊結構
具體來說,將上下文提取模塊輸出的特征映射作為處理單元的輸入,利用1×1卷積進行通道降維等待后續(xù)處理。
(1) 引用通道注意力塊獲得含有全局特征上下文信息的一維向量,與此同時,將3×3大小的擴張卷積和標準卷積應用于輸入特征映射,使其分別能夠擴大接收場來學習周圍的上下文和鄰域特征。
(2) 將全局特征向量作用于卷積通道上,通過通道乘法重新加權周圍上下文信息,得到優(yōu)化的周圍聯合特征。同理,繼續(xù)使用通道注意力塊得到加權向量,通過通道乘法來指導改善鄰域局部特征,從而強調有用的成分,抑制無用的成分。
(3) 將優(yōu)化的各層次信息級聯恢復原始的通道數,并使用BN[16]和PRELU[17]作為非線性函數。此外,處理單元還使用殘差學習在訓練過程中改進梯度反向傳播,即將輸入特征映射添加到級聯的特征上下文映射中,以促進網絡中的信息流。
基于本文提出的上下文提取模塊和特征后處理模塊,詳細設計了特征上下文編碼網絡FCENet,它是一種不對稱的編解碼結構,并且內嵌了豐富的特征上下文信息。為方便實現聚合策略和實時推理,網絡的解碼器通過雙線性插值(bilinear interpolation)上采樣來高效實現。FCENet的詳細結構見表1所列,其中d為擴張卷積速率。
表1 FCENet詳細結構
在網絡初始階段,首先使用下采樣單元downsampling unit,將步長為2的3×3卷積和最大池化兩者并行輸出疊在一起。最大池化的計算過程為:
Oc=max(Ic(i,j))
(1)
其中:i∈(1,h);j∈(1,w);c代表第c個該種下采樣單元可以加深網絡,方便地收集上下文而不需要太多的計算開銷。為了防止下采樣過程中空間信息丟失太快,在上下文提取模塊中只使用三次下采樣單元,得到了具有豐富特征上下文信息的特征映射,尺寸是原始輸入圖片的1/8,作為特征后處理模塊的輸入。引入注意力機制,在后處理部分捕獲更詳細的特征上下文,聚合不同層次的信息。最后采用直接上采樣來匹配輸入圖像的分辨率。
CityScapes[18]是一個大規(guī)模的語義分割數據集,包含2 975張用于訓練的精細注釋圖像和500張用于驗證的圖像。本文實驗將每個精細注釋的圖像的像素被預定義為19類。
在訓練中,使用批量大小(設置為8)、動量0.9和權重衰減1E-4的小批量隨機梯度下降,并采用“Poly”學習率策略[19],初始學習率設置為5e-3。FCENet沒有使用任何預先訓練,所有實驗都是在單個GTX1080Ti GPU、CUDA9.0和CuDNNV7上進行。
此外,本文采用平均交并比(mean IoU,mIoU)來評估分割精度,即計算真實值和預測值2個集合的交集和并集之比,即
(2)
其中:Pij為真實值為i,被預測為j的數量;k+1為類別個數(包含空類);Pii為真正的數量;Pij、Pji分別為假正和假負。mIoU一般基于類進行計算,將每一類的IoU計算之后累加,再進行平均,得到全局的評價。
此外,本文采用FPS(frame per second)對網絡的推理速度進行評價:
FPS=Nit/Tel
(3)
其中:Nit為迭代次數;Tel為迭代所需時間。
為進一步驗證本文最終設計的網絡結構的合理性及有效性,本節(jié)做了一系列有關FCENet結構設計的對比實驗。
2.3.1 不同卷積擴張速率的消融實驗與分析
上下文提取模塊是FCENet有效提取特征上下文的核心模塊。本文通過逐漸增大非對稱瓶頸塊中的卷積擴張速率獲取不同層次的空間信息,見表2所列。
表2 FCENet在CityScapes驗證集上的不同擴張速率比較
為突出對比,加入擴張速率全設置為2的對比實驗,結果顯示在分割精度上比FCENet低2.4%,說明了逐漸增大擴張速率的必要性,同樣另外2組擴張速率為{1,1,1,2,4,8}和{2,4,8,8,16,16}在分割精度上的表現也略低于FCENet,故需要對擴張速率進行合理的擇優(yōu)設置。
2.3.2 不同特征后處理模塊的消融實驗與分析
通過對比有無特征后處理模塊,說明該模塊設計對于提升分割精度的必要性,可以發(fā)現后處理部分僅僅犧牲了部分推理速度但分割精度提升了3.6%;通過對比處理單元數量的多少,表明堆疊處理單元對提升精度的幫助作用遞減。此外通過參數量的變化反映出特征后處理模塊是輕量級的模塊。
綜合考慮參數量和mIoU的變化,本文最終選擇疊加3個處理單元,見表3所列。
表3 FCENet在CityScapes驗證集上的不同特征后處理模塊比較
本文以CityScapes標準數據集為參照,從分割精度、參數量以及運行時間方面進行比較,所有實驗均在單卡GTX1080Ti GPU上運行,FCENet與其他先進網絡的對比見表4所列。實驗結果顯示FCENet僅具有0.6 M的參數量,卻取得了65.1%的mIoU和71 幀/s,表明本網絡在精度和速率方面達到了良好的平衡。
從表4可以看出,PSPNet[20]雖然取得了高分割精度,但龐大的參數量和運行時間使其很難部署到移動應用上,相比之下,FCENet只有其1%的參數量,在保證一定分割精度的前提下同樣取得了具有競爭性的表現。同其他輕量化的網絡相比,如ContextNet[21],其精度表現相似,但FCENet參數量更低;相比ESPNet[22],FCENet參數量略高但是顯著提升了分割精度。同樣地,FCENet在參數量上僅僅略高于CGNet[23]和ENet[5],但是在分割精度和速度上的表現都更加優(yōu)異。通過和其他方法比較,表明了FCENet保持著較高的競爭性。
表4 FCENet與其他先進方法的比較
FCENet在Cityscapes 驗證集上的預測如圖5所示。
圖5 FCENet在CityScapes驗證集上的預測表現
根據可視化結果以及表4的實驗結果可以看出本文網絡模型在取得65.1%的mIoU下,對于不同物體間的邊緣分割表現較為清晰準確。同時分割速度達到71 幀/s,在保證分割結果快速性的同時對于物體輪廓形狀的分割也較為平滑,優(yōu)化了分割結果的語義邊界,這對于物體邊緣信息以及分割速度有較高需求的自動駕駛汽車等移動應用具有良好的適用前景。
本文提出了一種基于特征上下文編碼的實時語義分割網絡結構FCENet,探討了編碼網絡如何獲取豐富的上下文信息而不引起過多的計算負擔的上下文提取模塊,并設計了利用提取的特征信息增強網絡性能的特征后處理模塊。實驗結果表明,FCENet在分割精度和推理速度之間達到了很好的平衡。此外,FCENet具有極少的參數量和內存占用,便于在移動端進行部署,在自動駕駛汽車、移動機器人等領域具有良好的應用前景。