林 杰,陳春梅,劉桂華,祝禮佳
(西南科技大學信息工程學院,四川綿陽621000)
場景分割是指對圖像中的所有像素進行分類,是自動駕駛和機器人感知領域中一項重要的前置任務。受現有閾值分割算法[1-2]啟發,基于閾值的二值分割方法被大量應用于移動服務機器人,如文獻[3]設計一種基于直方圖的閾值分割方法用于足球機器人,文獻[4]利用閾值提取邊緣并基于邊緣信息對圖像進行分割,文獻[5]利用Otsu 閾值和炭疽孢子的連通特性及形狀特征實現對炭疽孢子的分割,文獻[6]設計一種YUV 色彩空間下的閾值分割方法用于番茄機器人。然而,基于傳統圖像處理技術的分割方法存在較大的局限性,適用的分割場景也較為簡單。因此,研究者提出基于聚類的方法,如文獻[7]通過結合mean-shift 和Ncut 算法減少計算量和噪聲的干擾,使分割速度大幅提升,文獻[8]使用mean-shift 算法結合深度信息實現復雜度較高的場景分割。
近年來,隨著GPU 算力增長,基于深度學習的語義分割算法飛速發展,圖像分割技術水平得到大幅提高。文獻[9]提出了全卷積網絡(Fully Convolutional Network,FCN)用于實現端到端的逐像素分類,后續深度學習語義分割算法大都以該網絡結構為基礎改進。SegNet[10]在解碼器部分使用上池化操作進行上采樣,保留了高頻細節的完整性,實現了更精細的分割。UNet[11]在編/解碼器間加入了若干跳躍連接,融合了編/解碼器不同層次的特征,通過減少信息丟失來提升精度。文獻[12]在FCN 的特征提取網絡的輸出端添加了條件隨機場(Conditional Random Field,CRF)模塊,進而提出了DeepLab 方法,也大幅提高了分割的精度。上述算法雖然都有效提升了精度,但由于特征提取網絡的感受野是固定的,因此沒有獲得圖像全局的一些特征。文獻[13]提出了DeepLab-V2 網絡,通過引入空洞空間金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)模塊增加了感受野,提高了針對小目標的分割精度。文獻[14]對DeepLab-V2 中的ASPP 模塊進行改進,提出了DeepLabV3+網絡。該網絡融合了更多尺度特征,大幅提升了細節分割準確率。PSPNet[15]網絡則選用大量的池化金字塔獲得更多的全局信息。文獻[16]考慮樣本不均衡因素設計了焦點約束損失(Constrained Focal Loss,CFL)函數,大幅提升了樣本量不均衡時模型的分割精度。后續高準確度的分割算法大多致力于增加模型參數量和復雜度,如HRNet[17]。該網絡在特征提取時不壓縮特征圖尺寸,利用巨大的模型參數量和計算量換來了很大的圖像感受野,并且充分融合了多尺度特征,在多項任務上都能達到較高的精度。但對于實際工程應用而言,部署算法不僅要考慮精度,同時也要考慮算力成本,自動駕駛無人車、服務機器人的移動端嵌入式計算設備應價格、功耗低且體積小,因此,參數量大且計算復雜度高的分割算法不適合部署在此類設備上。
對于室內服務機器人的應用場景,在算力有限的平臺完成高準確度且快速的室內場景分割是一項重要任務。本文在現有語義分割模型的基礎上,參考輕量化網絡設計方法,提出一種基于輕量級串聯特征提取網絡的實時語義分割算法。通過深度可分離卷積、膨脹卷積和通道注意力機制設計輕量級的高準確度特征提取瓶頸結構模塊,以此為基礎構建輕量特征提取骨干網絡,使用2 個輕量型的網絡級聯增加網絡深度,同時融合多尺度、多層次的語義特征,在保證算法高精度的前提下,基于TensorRT 技術在NVIDIA Jetson XavierNX 嵌入式平臺實現實時室內場景分割。
設計高準確率的輕量化特征提取網絡,需要考慮如何在減少模型參數量的前提下提升精度。本文通過深度可分離卷積、感受野控制和注意力機制來提升準確率并降低模型復雜度。
深度可分離卷積是很多輕量級網絡的關鍵技術,其將常規的卷積計算分解成兩步操作:首先對各個通道進行卷積提取特征,然后使用1×1 卷積進行特征層融合或者特征層的擴充,從而有效地減少卷積計算中的參數量并保留常規卷積相似的性能。
對卷積核的參數量進行分析。如圖1所示,假設輸入圖像的尺寸為w×h×c,w、h、c分別表示圖像的寬、高和通道數。若卷積后想要得到b個通道的特征圖,使用原始卷積方法,卷積核的參數量為k×k×c×d,其中k為卷積核的邊長。深度可分離卷積則先單獨對通道卷積,參數量為k×k×c,再使用逐點卷積法將特征圖通道擴張到b個,參數量為c×d。因此,總參數量為k×k×c+c×d。

圖1 深度可分離卷積的計算過程Fig.1 Calculation process of depth separable convolution
相比傳統卷積,深度可分離卷積的參數量大幅減少。傳統卷積的計算量為w×h×c×d×k×k,深度可分離卷積的計算量為w×h×c×k×k+w×h×c×d,這2 種方法的參數量之比和計算量之比均為可見無論是參數量還是計算量,通過可分離卷積都得到了很大幅度的壓縮,使網絡更加輕量化。對于邊緣計算設備及無GPU 的移動設備,深度可分離卷積可使CPU 在不需要龐大算力的情況下完成卷積計算。因此,輕量級網絡設計大多使用深度可分離卷積,如Xception[18]、GhostNet[19]等,本文也使用深度可分離卷積來實現輕量級的特征提取網絡。
感受野直接影響著網絡精度,網絡的感受野越大,獲取到的圖像的全局特征也就越多,這在HRNet上得到了充分驗證。HRNet 精度之所以很高,就是因為它有一個固定的、具有極大感受野的特征提取分支。在該分支上,特征圖尺寸不會縮小,在特征提取過程中幾乎沒有丟失信息。但是這種提升感受野的方式會帶來巨大的參數量,使模型推理時間大幅增加,對于速度優先級較高的網絡并不適用,而膨脹卷積在提升感受野的同時并不會增加參數量,適合用于輕量級網絡設計。
膨脹卷積是指在常規的卷積核中添加空洞,此操作可以在計算量不變的情況下增大卷積核的大小和卷積操作的感受野。如圖2所示,對于一個3×3 的卷積核,當設置膨脹率為2 時,會在每一對相鄰卷積核之間添加一個值為0 的點,從而使卷積核大小變為5×5。

圖2 膨脹卷積感受野Fig.2 Receptive field of expanded convolution
膨脹后卷積核大小的計算公式如下:

其中:kdw為膨脹后卷積核的邊長;r為膨脹率;kc為未膨脹卷積核的邊長。卷積核膨脹后感受野范圍得到了擴大,而更大感受野的卷積操作能夠提取出更大尺度的圖像特征,這對準確的場景理解和分割精度提升非常有效。高精度的分割算法如DeepLab 也大量使用了膨脹卷積,并且并聯不同膨脹率的特征圖設計了ASPP 模塊,以此融合不同尺度的空間特征。但是,膨脹卷積存在特征圖稀疏的問題:膨脹率變大,卷積核之間的空洞隨之增大,而當膨脹率過大時,卷積核會變得非常離散,也就不能提取到更多全局特征的信息,從而導致特征圖非常稀疏,提取到的特征會缺少細節信息,影響圖像分割精度。
隨著SE-Net[20]嘗試使用基于通道的注意力機制,在圖像分類中實現了較好的分割性能,注意力機制便成為深度神經網絡的有力工具[21]。它可以利用特征圖的通道特征和空間特征約束網絡訓練,從而學習到有效特征,提升對于細節的分割精度。由于通道注意力機制在提升特征有效性的同時幾乎不增加參數量,因此本文在設計編碼模塊時使用通道注意力機制模塊提升模型的準確率。
為減少模型的參數計算量同時達到高分割精度,本文在網絡中添加一個殘差瓶頸結構作為網絡的基礎模塊。殘差瓶頸結構如圖3所示。

圖3 殘差瓶頸結構Fig.3 Residual bottleneck structure
瓶頸編碼模塊包括2 個調整特征通道的1×1 卷積、1 個深度可分離卷積、1 個通道注意力模塊和1 條殘差連接,具體設計目的和思路如下:
1)為降低模型的計算量和參數量,使用降維-升維的瓶頸結構。先使用1×1 卷積對通道數進行壓縮,壓縮后使用3×3 深度可分離卷積提取特征,再使用1×1 卷積進行特征升維。為提升感受野,提取不同尺度的特征信息,3×3 深度可分離卷積帶有膨脹系數。
2)進行深度可分離卷積操作后,在升維卷積操作前加入SE-Net 網絡使用的通道注意力機制模塊。該模塊的計算過程如圖4所示。首先對特征通道進行全局平均池化操作,然后連接全連接層學習每個通道的權重值,并利用sigmoid 函數歸一化到[0,1],最后對特征層進行通道加權,從而篩選特征的每個通道的信息,以此進一步提高分割準確度。

圖4 通道注意力模塊計算流程Fig.4 Calculation procedure of channel attention module
3)為緩解膨脹卷積引起的稀疏化問題,在瓶頸結構中加入殘差邊連接,將特征層的輸入和提取后的特征層相加,從而補充因膨脹卷積稀疏化而在特征提取時丟失的信息,同時殘差連接也可以有效避免由網絡深度增加帶來的梯度消失問題。
本文網絡模型使用的是編碼器-解碼器網絡框架,在編碼器端獲取上下文信息和語義信息,在解碼器端對提取的特征進行上采樣和圖像分割。為實現實時分割,本文沒有對解碼器進行復雜設計,而是使用高效的特征上采樣模塊。此外,由于網絡越深獲取的語義特征越豐富,但是空間信息丟失也越多,因此本文設計的網絡在解碼階段對不同層次的特征進行重利用,以高級語義特征融合低級圖像特征,從而豐富模型特征,提高模型分割精度。
本文模型結構如圖5所示,其中,c 代表concat操作,模型輸入圖像尺寸為512 像素×512 像素。為有效提取深層語義特征,編碼器級聯2 個特征提取網絡。第1 級主干網絡使用7 個殘差瓶頸結構模塊作為基礎單元構成特征提取的主干網絡,每一個瓶頸結構模塊的參數不同,相同通道數的瓶頸結構模塊的膨脹率不同,以此獲得不同感受野與不同尺度的特征。經實驗驗證,當膨脹率在8 以上時,特征圖的稀疏化非常嚴重,嚴重影響精度。因此,設置膨脹率為2、4 或8。經過7 個瓶頸結構模塊提取深層特征以后,對特征圖進行上采樣送入第2 級特征提取網絡,第2 級特征提取網絡由4 個瓶頸結構模塊和1 個平均池化層構成,4 個瓶頸結構模塊在提取特征的同時融合第1 個主干網絡特征提取時相同尺度的特征圖,減小特征提取時丟失的信息,之后使用平均池化對特征進行多尺度融合,再送入解碼器模塊。在解碼過程中,融合第2 個特征提取網絡中相同層次的特征,補充特征圖細節,最后進行場景分割結果輸出。

圖5 本文網絡模型結構Fig.5 Structure of the proposed network model
使用NYUDv2 數據集[22]對本文提出的網絡模型進行訓練和評估。NYUDv2 是針對室內場景專門制作的語義分割數據集,最細分類可以達到895 類。為簡化分類任務、增大類間距離以降低分類難度,本文使用的為類別縮減映射后的40 類數據集。該數據集共包括1 448 張精細標注的樣本,圖像尺寸為640 像素×480 像素。為模擬室內環境變化,本文對1 348 張室內場景圖像進行數據增強,對原始圖像做小幅度的隨機色相和明度偏移,在隨機裁剪、縮放、翻轉、平移數據增強后進行模型訓練,使用400 張未預處理的原始圖像進行驗證測試。為進一步測試本文模型性能,在CamVid 數據集上進行測試,CamVid數據集是針對道路街景制作的分割數據集,其中采集了50 個城市不同天氣的行車視角街景,包括行人、車輛、道路等11 個類別,共1 402 幅精細標注的復雜街景圖像。本文使用1 169 幅圖像進行訓練,在233 張的測試集上進行驗證測試。
本文實驗的軟件環境為Ubuntu18.04 64 bit 操作系統,深度學習軟件框架為Pytorch,硬件環境為Intel?Xeon?CPU E5-2620 v4 2.1 GHz 處理器,64 GB內存,GPU 為NVIDIA GTX TITAN XP 12G。
為使網絡模型達到較高的準確率,目前在訓練網絡時一般會使用該模型在ImageNet 數據集訓練的參數初始化網絡。但是本文網絡為自己設計,如果使用遷移學習,需要在ImageNet 數據集上做預訓練。考慮到ImageNet 數據集龐大,如果沒有大型GPU 集群,訓練耗時會非常長,并且Facebook 的AI 實驗室的驗證[23]表明,即使不做預訓練,最終模型精度也會達到接近預訓練效果的水平,因此,本文使用多階段參數調整的訓練策略,如圖6所示。

圖6 訓練策略示意圖Fig.6 Schematic diagram of training strategy
在第1個階段,隨著迭代次數的上升,學習率降低,模型較好地收斂,之后加大學習率進入第2 個階段的訓練,反復這個過程,能夠使模型跳出前一訓練階段損失收斂的局部最小值,使模型找到一個更大范圍內的最優參數。訓練的損失值變化曲線如圖7所示。可以看出,損失值的4 次波動下降狀態分別代表著4 個階段的訓練過程,損失值的大小在經歷4 個階段的訓練后比第1 個階段結束時降低較多。

圖7 訓練損失值變化曲線Fig.7 The training loss change curve
對于優化器,選擇Adam[24]優化器來優化模型參數,批樣本量設置為16,Dropout 失活率設置為0.5。對于損失函數,使用像素級交叉熵函數作為目標函數,其函數定義如下:

其中:M為類別數量;yic為指示變量,若樣本i的分類結果與標簽類別c相同,則為1,否則為0;pic代表樣本i屬于類別c的概率。
為全面地評價模型性能,本文使用像素準確率(Accuracy,ACC)、平均交并比(Mean Intersection over Union,MIoU)和頻率加權交并比(Frequency Weight Intersection over Union,FWIoU)這3 個指標來體現分割精度。像素準確率的計算公式如下:

其中:pt代表分類正確的像素數;psum代表像素總數。在平均交并比指標中,IoU 表示預測結果與真實值交集的面積比上他們并集的面積,MIoU 為所有類別IoU 的平均值。頻率加權交并比即使用每一類像素出現的頻率對IoU 加權計算得到的值,其評價樣本分布不均衡的數據更科學,計算公式如式(4)所示:

其中:r為類別數;pn為第n個類別所有的像素數,將其比上psum即可求出該類別樣本數量在數據集中的比例,再與該類別的交并比IIoUn相乘即完成加權。
同時,為更全面地評價模型的復雜度,本文使用模型參數衡量模型的空間復雜度,并且使用每秒浮點計算次數(Floating Point Operations,FLOPs)與幀率(FPS)這2 個指標衡量模型的時間復雜度。FLOPs 的計算公式[25]如式(5)所示:

其中:H、W為卷積輸入特征圖的高和寬;KH、KW為卷積核的長和寬;Cin和Cout為卷積層輸入和輸出的通道數;pparams為該卷積層的所有參數。
3.4.1 NYUDv2 數據集上的實驗結果分析
本文在NYUDv2 數據集上使用40 類分類標準進行訓練及測試,并對比了經典、常用的分割算法,精度對比結果如表1所示。可以看出:本文算法總體分割精度,大幅領先于SegNet 和UNet,略低于DeepLabv3+ 和PSPNet,這主要是因為UNet 和SegNet 網絡的感受野固定而本文網絡使用膨脹卷積,提升了感受野,并且本文多層次特征融合較多,而UNet 與SegNet 較少,而PSPNet 與DeepLabv3+則使用不同的金字塔結構獲得了更大的感受野,從而融合了更多全局特征,使得分割更為精準。

表1 在NYDUv2 數據集上的精度對比Table 1 Accuracy comparison on NYDUv2 dataset %
為更全面地對比5 種算法分割準確度,統計各算法針對NYUDv2 數據集不同類別的IoU,結果如表2所示。從表2 可知,本文算法在各類別的分割精度上均處在一個較高的水平,在一些UNet 與SegNet分割效果不好的類別(windows、bookshelf、mirror等)上得到了很高的準確率,并且與DeepLabV3+和PSPNet 精度差距不大,充分驗證了感受野提升和特征融合對精度提升的效果,并且各類之間的分割精準度總體也比較均衡,魯棒性較好。

表2 針對NYUDv2 數據集不同類別的分割結果對比Table 2 Segmentation result comparison for different object categories on NYUDv2 dataset %
5 種算法的復雜度對比如表3所示,可以看出,本文算法無論是計算復雜度、參數量還是推理速度(即幀率)都大幅優于其他算法,再次證明使用深度可分離卷積構建輕量級主干網絡可降低參數量與計算復雜度。對比DeepLabV3+與PSPNet 這2 個高精度、高模型復雜度的算法,本文算法計算力僅為其1%,而在PC 端GPU 推理速度是它們的10 倍以上。

表3 復雜度對比Table 3 Complexity comparison
綜上所述,本文提出算法在保證較高分割精度的同時,對設備計算力要求不高,十分利于邊緣計算設備部署。
5 種算法室內場景分割的視覺效果如圖8所示。由圖8(c)~圖8(d)可以看出:UNet 與SegNet對于大目標的分割還是出現了一些類別混淆,如門、櫥柜、鏡子等,其他3 個算法對大目標分割都比較精準,得到的大目標的邊緣輪廓部分也十分清晰;而對于小目標分割,DeeplabV3+的效果是最好的。對比圖8 第4 行圖像中櫥柜上杯子的真實標簽及分割效果可知,除了DeepLabV3+外,其他算法都出現了程度不一的分類混淆。對于小目標的邊緣輪廓,如圖8 中第1 行、第2 行圖像的床頭燈、盥洗臺等物品,各個算法的分割效果均不太理想,主要原因是數據集小目標樣本分布不均衡會導致模型分割效果偏向樣本量更多的類別,另外一個原因就是小尺度目標在圖像中占像素量少,提取特征時經過幾次下采樣后,小目標的特征圖尺寸已經被壓縮到非常小了,提取的特征較為有限,從而導致小目標及其邊緣的分割效果不佳。
結合表2所示的精度指標和圖8所示的分割效果可知,本文算法對復雜室內場景的分割準確度較高,非常接近PSPNet 及DeepLabV3+的分割精度和效果,可滿足室內服務機器人場景理解的基礎要求。

圖8 NYDUv2 場景分割視覺效果Fig.8 Scene segmentation visual effects on NYUDv2 dataset
3.4.2 CamVid 數據集上的實驗結果分析
在CamVid 數據集上的精度分割實驗結果如表4所示。可以看出,在非室內場景下,本文算法的分割準確度也是相對較高的,FWIoU 和MIoU 差異相較于NYUDv2 的結果大一些,這是由CamVid 的數據分布不均衡造成的,僅道路、天空、建筑和樹等4 個類別樣本量就占了數據集的73%,所以,各個算法的加權IoU 都處于較高的水平。從MIoU 的指標可以看出,面對樣本分布不太均衡的數據集,本文算法即使不針對均衡樣本做處理,分割準確度也優于SegNet和UNet 算法。

表4 在CamVid 數據集上的精度對比Table 4 Accuracy comparison on CamVid dataset %
各個類別的詳細分類IoU 如表5所示。可以看出各算法在建筑、天空、道路等大目標上的分割準確度都較高。在車輛這類中型目標上,本文算法大幅領先于SegNet 和UNet,與DeepLabV3+和PSPNet精度非常接近。在標志牌,電線桿這類小目標的分割精度上,本文算法也與DeepLabV3+和PSPNet 在同一水平。

表5 針對CamVid 數據集不同類別的分割結果對比Table 5 Segmentation result comparison for different object categories on CamVid dataset %
在CamVid 數據集上5 種算法分割的視覺效果如圖9所示。可以看出,本文算法的分割效果較好,車輛、建筑的邊緣清晰。從圖9(g)第1 行可以看出,即使在光照效果不佳的情況下,本文算法的分割效果也很好,而Unet 和Segnet 在同場景時,右下角的車輛出現了類別混淆。

圖9 CamVid 場景分割視覺效果Fig.9 Scene segmentation visual results on CamVid dataset
綜上,本文算法相較常用的先進分割算法取得了較優的效果,從而再次驗證了算法的優秀性能,其能有效地學習到圖像的語義特征,并準確地表達物體的語義信息,從而大幅提升了場景解析的效果。
本文使用機器人平臺計算核心板為NVIDIA Jetson XavierNX。XavierNX 為NVIDIA 發布的嵌入式GPU平臺,在15 W 的低功耗環境下,可以有6.8 TFLOPs 的單精度計算能力,如果以INT8 模式進行計算,則有高達21 TOPs 的計算能力。在PC 端訓練模型后,將模型導出并使用NVIDIA 的推理加速引擎TensorRT 對模型進行合并層、并行優化等操作,將其序列化為TensorRT的引擎,將模型從FP32 量化為FP16,從而既壓縮了模型大小,又避免了INT8 量化時精度損失較多的問題。在未量化及TensorRT 加速時,模型在嵌入式端對512 像素×512 像素的圖像推理速度為19 frame/s,經過TensorRT 加速和量化后,嵌入式端的推理速度提升到42 frame/s,加速比約為2.2,加速后可實現在嵌入式平臺上的實時室內場景分割。
本文針對室內服務機器人的場景分割任務,提出一種基于輕量級網絡的實時語義分割算法,結合深度可分離卷積、膨脹卷積和通道注意力機制,設計以殘差瓶頸結構為基礎模塊的級聯特征提取網絡。該網絡的參數量較少,能夠在保證低時間復雜度的同時提取到更深層的語義信息,并融合多尺度特征得到較高的MIoU 分割精度。實驗結果表明,與SegNet、UNet、PSPNet 等先進分割算法相比,本文算法具有優異的預測速度,對移動設備的算力要求不高,可實現實時準確的室內場景分割,滿足實際的機器人場景理解需求。然而該算法存在小目標分割和邊緣分割不準確的問題,下一步將對此進行改進,通過結合多尺度及邊緣分割方法,實現對室內場景更高準確率的精準分割。