張育敬,陶青川
(四川大學電子信息學院,成都 610065)
水利在現代社會的發展過程中扮演了重要的角色,是經濟建設、農業建設和環境改善不可或缺的一部分,它對水資源的保護和監管具有重要意義。傳統水利的監管方法主要是通過人工進行監管,組織巡查隊進行24 小時輪崗監管,這樣的方式比較耗費人力物力,監管的范圍也比較小,不適合河道全方位、全天候的統一實時管理。隨著信息化時代的發展,信息化建設滲透到社會的各個領域,水利信息化也逐漸替代傳統水利,成為我國水利現代化的基礎支撐和重要標志。目前,很多地區的水利部門都在進行智能視頻監控建設,在各自關注的重點河道都架起了視頻監控點,智能監控系統逐步投入使用。智能監控包括視頻采集、視頻分析和信息反饋,其中最重要的就是對水利視頻進行分析,識別并提取出水利場景中的各種必要的信息。
目前,對水利場景進行分析的算法大多基于傳統的機器視覺,例如幀間差分法、邊緣檢測算法、形態學分析等,這些傳統方法適用于簡單、固定的場景,但水利場景比較復雜,包含多種類、多尺度的目標,例如水域、水尺、漂浮物等,傳統方法難以適用,算法精確度較低。隨著深度學習的發展,目標檢測和語義分割技術逐漸應用于水利場景中。在水利場景中,水域往往覆蓋面很廣,目標檢測雖然能檢測出目標的種類,但是很難展現出水域的輪廓信息,而語義分割從像素級別對圖像進行解釋,給每個像素或者分組像素提供不同的語義類別,輸入一張圖像通過語義分割網絡得到一張逐像素標注的圖像。語義分割不僅能識別出目標,還可以標記出目標的邊界,滿足水利場景分析的要求。近年來,涌現了許多優秀的語義分割網絡,例如FCN、SegNet、DeepLab v3+等,它們大多是編碼器-解碼器結構,擁有不俗的分割效果,但模型較大,不夠輕量,實時性不強。
2018 年,曠視科技提出了一個可實現實時語義分割的雙向網絡BiSeNet(bilateral segmentation network),不同于一般語義分割的編碼器-解碼器結構,采用了雙向路徑來保留空間信息和擴大感受野,相比于SegNet、DeepLab v3+等網絡在速度和計算量方面都有不小的提升。針對水利場景的特點,本文在BiSeNet 基礎上進行結構化改進,將上下文路徑替換成更加輕量的MobileNet v2,并嵌入SE 通道注意力機制,減小了模型的計算量;然后在主干網絡末端引入金字塔 池化模塊(pyramid pooling module,PPM),通過聚合不同區域、不同尺度的特征信息來獲取增強的上下文信息特征;最后對空間路徑進行優化,復用上下文路徑的淺層特征信息來替換原版的空間路徑,減少因為引入額外路徑所造成的不必要耗時。改進后的BiSeNet 網絡在水利樣本集上取得了不錯的分割效果。
BiSeNet 是曠視科技在ECCV 2018 提出的一個實時雙邊語義分割網絡,它不同于一般語義分割網絡的編碼器-解碼器結構,而是采用雙邊分割結構,包含兩個部分:空間路徑(spatial path)和上下文路徑(context path),這兩個部分分別用來解決空間信息缺失和感受野不足的問題。對于Spatial Path,BiSeNet 設計了三個帶有小步長的卷積層,使用較多通道數和較淺的網絡來保留圖像的空間信息,生成高分辨率的feature map;對于Context Path,BiSeNet 采用ResNet 或者Xception 作為主干,使用較少通道數和較深的網絡進行快速下采樣來獲取最大的感受野。此外,BiSeNet 還設計了注意力優化模塊(attention refinement module,ARM)和特征融合模塊(feature fusion module,FFM)來優化和融合兩個路徑的輸出。具體網絡結構如圖1所示。

圖1 BiSeNet網絡結構示意圖
1.1.1 注意力優化模塊(ARM)
ARM 用于優化Context Path 下采樣階段的feature map。Context Path 最后一層使用全局平均池化(GAP,global average pooling)來融合每個階段經過ARM 的輸出特征,將底層和較深層的語義信息進行拼接。具體結構如圖2所示。

圖2 ARM結構示意圖
ARM 屬于通道注意力機制,先使用GAP 來得到全局語義信息,歸一化之后用sigmoid 激活層計算注意力特征向量,指導特征學習。該模塊對下采樣中每個階段的輸出特征進行優化,而且無需上采樣就可以集成全局特征信息,計算成本可以忽略不計。
1.1.2 特征融合模塊(FFM)
FFM 用于融合Spatial Path 的淺層空間信息和Context Path 的深層語義信息。具體結構如圖3所示。

圖3 FFM結構示意圖
由于兩個路徑表達的信息在不同的層次,Spatial Path 主要捕獲低層級的空間信息,其編碼了絕大多數的細節信息,而Context Path 的輸出特征主要編碼高層次語境信息,二者在全局特征中占有的權重不一樣,因此不能簡單相加。所以在雙邊路徑層級給定的情況下,首先將兩個部分的feature map通過concat方式疊加,然后通過卷積歸一化平衡特征的尺度。接著,將融合的特征進行GAP,計算出每個通道的權重向量,并跟原始特征進行加權求和。通過計算權重向量的方式,可以重新對兩個路徑的feature map進行加權,起到特征選擇和組合的作用。
Context Path 采用ResNet 或者Xception 作為特征提取網絡,提取特征的能力很強大,但不夠輕量,而且額外增加卷積層作為Spatial Path也無疑降低了算法的效率。此外,雖然Context Path 多次使用GAP 來融合全局上下文信息,但是其對信息的融合和提取能力有限,而且簡單地使用GAP 將信息壓縮為一個通道很容易損失很多有用的信息。因此為了保證精度和滿足嵌入式邊緣設備的運行要求,本文采用的改進方法是,首先將主干特征提取網絡替換成MobileNet v2,并嵌入SE 注意力機制模塊,然后在末端增加一個金字塔池化層,得到多尺度的深層特征,然后用MobileNet v2 的淺層特征來替代原Spatial Path,最后將淺層特征和深層特征送入到FFM,進行最終的分割。改進后的網絡結構如圖4所示。

圖4 改進后的BiSeNet網絡模型
1.2.1 MobileNet v2嵌入SE注意力機制
MobileNet v2 是一個輕量級的卷積神經網絡,它使用深度可分離卷積(depthwise separable convolution)來減少運算量以及倒殘差結構(inverted resdiual block)來加強特征的提取。SE(squeeze-and-excitation)屬于注意力機制,它根據feature map 不同通道的重要程度,計算各自的注意力權重向量,從而增強有用特征,抑制無用特征。本文在主干網絡的最后一層嵌入SE 模塊,由于SE 模塊比較輕量,幾乎不會增加額外的參數。
為了便于分辨和復用低層次特征信息,將主干網絡分為4個下采樣階段,分別是(Stage 1,…,Stage 4),其中將Stage1 產生的高分辨率feature map作為新的Spatial Path的輸出。整體結構如表1所示,其中為倒殘差結構的擴張率,為輸出通道數,為重復次數,為步長。

表1 主干網絡結構
1.2.2 金字塔池化
本文在改進的主干網絡末端使用一個金字塔池化模塊(PPM)對深層特征進行處理,如圖5所示。具體流程是使用不同尺寸的池化核對深層特征進行池化,得到不同的特征區域,然后通過上采樣與原特征進行concat,利用1x1 conv調整通道數。

圖5 PPM結構示意圖
PPM 是一種獲取上下文信息比較好的方式,這種多尺度的池化可以在不同的尺度下保留全局信息,比起普通的單一池化結構更能保留全局上下文信息。
為了保證樣本的多樣性,本研究的樣本集數據通過網上爬取、成都九眼橋河道拍攝和成都河長制水利局拍攝得到,采集的樣本圖片包含不同地點、不同天氣的水利場景,并通過對圖片進行加噪、裁剪等操作對樣本進行擴充,一共得到2321 張圖像。使用Labelme 軟件對原始圖像進行標注,生成對應的json 文件,并通過腳本將同一類的圖像區域標記為同一顏色,類別與RGB值的映射關系如表2所示。

表2 映射關系表
通過上述步驟后,將樣本集以9 ∶1劃分訓練集和驗證集,有2089 張訓練集和232 張驗證集。原圖和標注圖如圖6所示。

圖6 人工標注
由于采集的樣本分辨率不等,所以先對圖像進行不失真的resize,壓縮到512×512,然后再送入網絡進行訓練。訓練分為兩個部分,一是主干凍結訓練,二是整體解凍訓練。第一個階段使用MobileNet v2 在ImageNet 數據集的預訓練權值來初始化主干網絡參數,在該階段主干的權值參數不更新。第二階段更新整體網絡的參數,進行解凍訓練。整個流程如圖7所示。

圖7 訓練流程
訓練使用的優化算法是Adam(adaptive moment estimation),權重衰減率設置為2e,初始學習率設置為5e,根據迭代次數的增大逐漸減小學習率,如公式(1)所示。

其中,是當前的迭代次數,max_是總迭代次數,設置為0.9。
訓練采用的loss 由Cross Entropy Loss 和Dice Loss 組成。Cross Entropy Loss 是普通的交叉熵損失,Dice Loss 將語義分割的評價指標作為Loss,Dice Loss = 1-Dice,其中Dice 系數是一種集合相似度度量函數,通常用于計算兩個樣本的相似度,取值范圍在[0,1],如公式(2)所示。

其中是預測結果,為真實結果。訓練過程中的總loss隨epoch的變化曲線如圖8所示。

圖8 loss曲線
本文實驗環境為Pytorch1.8.0、 Cuda11.1、Python3.8、Ubuntu18.04LTS;處理器為英特爾酷睿I5-7400;CPU 頻率為3.0 GHz;內存8 GB;GPU 顯卡為NVIDIA GTX 1080TI,顯存11 GB。
本實驗對BiSeNet、DeepLab v3+、以及本文基于BiSeNet 改進的網絡進行性能和效果的對比。測試集的分割效果如圖9所示。

圖9 分割結果對比
實驗采用平均交并比MIoU(mean intersection overunion)來評價兩個模型在量化后的分割效果。在語義分割任務中,計算真實值和預測值兩個集合的交集和并集之比,將每一類累加并取平均。如公式(3)所示。

其中為分割的類別數,P為預測為第類且與真實值相同的像素點,P為預測為第類但真實值為第類的像素點,P為預測為第類但真實值為第類的像素點,在求并集時P區域多加了一次,所以要減掉一次。對驗證集分別計算、、模型大小等指標,如表3所示。

表3 分割性能對比
表3 和圖9 給出了BiSeNet、DeepLab v3+和改進后BiSeNet 網絡在水利數據集上的表現和分割情況。從分割性能表可以看出,改進后的BiSeNet 能夠達到72.12% 的,比原版的BiSeNet 高了4.66%,也比DeepLab v3+網絡高了2.67%,同時模型的參數量大大減少,速度雖稍低于原BiSetNet網絡,但也滿足了水利場景實時性的要求。從分割效果圖可以看出,改進后的BiSeNet 網絡解決了原網絡中對于目標物體邊緣細節分割不太準確的問題,在水利數據集上的分割效果更好。
本文針對水利場景語義分割任務中,場景復雜多樣、傳統算法難以適應、常見語義分割網絡不夠輕量的問題,在BiSeNet 網絡基礎上,對主干結構進行針對性改進。先將原有主干的特征提取網絡替換成更加輕量的MobileNet v2 網絡,并嵌入SE 注意力機制,接著在網絡末端增加一個金字塔池化層,通過聚合不同區域的上下文,得到多尺度的深層特征,然后與優化后的空間路徑進行特征融合進行最終的分割。實驗結果表明,改進后的BiSeNet 網絡相比于原網絡的提升了4.66%,平均精度更高,大大減少了模型的參數量,在水利數據集的表現效果更好。