張育敬,陶青川
(四川大學(xué)電子信息學(xué)院,成都 610065)
水利在現(xiàn)代社會的發(fā)展過程中扮演了重要的角色,是經(jīng)濟(jì)建設(shè)、農(nóng)業(yè)建設(shè)和環(huán)境改善不可或缺的一部分,它對水資源的保護(hù)和監(jiān)管具有重要意義。傳統(tǒng)水利的監(jiān)管方法主要是通過人工進(jìn)行監(jiān)管,組織巡查隊進(jìn)行24 小時輪崗監(jiān)管,這樣的方式比較耗費人力物力,監(jiān)管的范圍也比較小,不適合河道全方位、全天候的統(tǒng)一實時管理。隨著信息化時代的發(fā)展,信息化建設(shè)滲透到社會的各個領(lǐng)域,水利信息化也逐漸替代傳統(tǒng)水利,成為我國水利現(xiàn)代化的基礎(chǔ)支撐和重要標(biāo)志。目前,很多地區(qū)的水利部門都在進(jìn)行智能視頻監(jiān)控建設(shè),在各自關(guān)注的重點河道都架起了視頻監(jiān)控點,智能監(jiān)控系統(tǒng)逐步投入使用。智能監(jiān)控包括視頻采集、視頻分析和信息反饋,其中最重要的就是對水利視頻進(jìn)行分析,識別并提取出水利場景中的各種必要的信息。
目前,對水利場景進(jìn)行分析的算法大多基于傳統(tǒng)的機器視覺,例如幀間差分法、邊緣檢測算法、形態(tài)學(xué)分析等,這些傳統(tǒng)方法適用于簡單、固定的場景,但水利場景比較復(fù)雜,包含多種類、多尺度的目標(biāo),例如水域、水尺、漂浮物等,傳統(tǒng)方法難以適用,算法精確度較低。隨著深度學(xué)習(xí)的發(fā)展,目標(biāo)檢測和語義分割技術(shù)逐漸應(yīng)用于水利場景中。在水利場景中,水域往往覆蓋面很廣,目標(biāo)檢測雖然能檢測出目標(biāo)的種類,但是很難展現(xiàn)出水域的輪廓信息,而語義分割從像素級別對圖像進(jìn)行解釋,給每個像素或者分組像素提供不同的語義類別,輸入一張圖像通過語義分割網(wǎng)絡(luò)得到一張逐像素標(biāo)注的圖像。語義分割不僅能識別出目標(biāo),還可以標(biāo)記出目標(biāo)的邊界,滿足水利場景分析的要求。近年來,涌現(xiàn)了許多優(yōu)秀的語義分割網(wǎng)絡(luò),例如FCN、SegNet、DeepLab v3+等,它們大多是編碼器-解碼器結(jié)構(gòu),擁有不俗的分割效果,但模型較大,不夠輕量,實時性不強。
2018 年,曠視科技提出了一個可實現(xiàn)實時語義分割的雙向網(wǎng)絡(luò)BiSeNet(bilateral segmentation network),不同于一般語義分割的編碼器-解碼器結(jié)構(gòu),采用了雙向路徑來保留空間信息和擴(kuò)大感受野,相比于SegNet、DeepLab v3+等網(wǎng)絡(luò)在速度和計算量方面都有不小的提升。針對水利場景的特點,本文在BiSeNet 基礎(chǔ)上進(jìn)行結(jié)構(gòu)化改進(jìn),將上下文路徑替換成更加輕量的MobileNet v2,并嵌入SE 通道注意力機制,減小了模型的計算量;然后在主干網(wǎng)絡(luò)末端引入金字塔 池化模塊(pyramid pooling module,PPM),通過聚合不同區(qū)域、不同尺度的特征信息來獲取增強的上下文信息特征;最后對空間路徑進(jìn)行優(yōu)化,復(fù)用上下文路徑的淺層特征信息來替換原版的空間路徑,減少因為引入額外路徑所造成的不必要耗時。改進(jìn)后的BiSeNet 網(wǎng)絡(luò)在水利樣本集上取得了不錯的分割效果。
BiSeNet 是曠視科技在ECCV 2018 提出的一個實時雙邊語義分割網(wǎng)絡(luò),它不同于一般語義分割網(wǎng)絡(luò)的編碼器-解碼器結(jié)構(gòu),而是采用雙邊分割結(jié)構(gòu),包含兩個部分:空間路徑(spatial path)和上下文路徑(context path),這兩個部分分別用來解決空間信息缺失和感受野不足的問題。對于Spatial Path,BiSeNet 設(shè)計了三個帶有小步長的卷積層,使用較多通道數(shù)和較淺的網(wǎng)絡(luò)來保留圖像的空間信息,生成高分辨率的feature map;對于Context Path,BiSeNet 采用ResNet 或者Xception 作為主干,使用較少通道數(shù)和較深的網(wǎng)絡(luò)進(jìn)行快速下采樣來獲取最大的感受野。此外,BiSeNet 還設(shè)計了注意力優(yōu)化模塊(attention refinement module,ARM)和特征融合模塊(feature fusion module,F(xiàn)FM)來優(yōu)化和融合兩個路徑的輸出。具體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 BiSeNet網(wǎng)絡(luò)結(jié)構(gòu)示意圖
1.1.1 注意力優(yōu)化模塊(ARM)
ARM 用于優(yōu)化Context Path 下采樣階段的feature map。Context Path 最后一層使用全局平均池化(GAP,global average pooling)來融合每個階段經(jīng)過ARM 的輸出特征,將底層和較深層的語義信息進(jìn)行拼接。具體結(jié)構(gòu)如圖2所示。
圖2 ARM結(jié)構(gòu)示意圖
ARM 屬于通道注意力機制,先使用GAP 來得到全局語義信息,歸一化之后用sigmoid 激活層計算注意力特征向量,指導(dǎo)特征學(xué)習(xí)。該模塊對下采樣中每個階段的輸出特征進(jìn)行優(yōu)化,而且無需上采樣就可以集成全局特征信息,計算成本可以忽略不計。
1.1.2 特征融合模塊(FFM)
FFM 用于融合Spatial Path 的淺層空間信息和Context Path 的深層語義信息。具體結(jié)構(gòu)如圖3所示。
圖3 FFM結(jié)構(gòu)示意圖
由于兩個路徑表達(dá)的信息在不同的層次,Spatial Path 主要捕獲低層級的空間信息,其編碼了絕大多數(shù)的細(xì)節(jié)信息,而Context Path 的輸出特征主要編碼高層次語境信息,二者在全局特征中占有的權(quán)重不一樣,因此不能簡單相加。所以在雙邊路徑層級給定的情況下,首先將兩個部分的feature map通過concat方式疊加,然后通過卷積歸一化平衡特征的尺度。接著,將融合的特征進(jìn)行GAP,計算出每個通道的權(quán)重向量,并跟原始特征進(jìn)行加權(quán)求和。通過計算權(quán)重向量的方式,可以重新對兩個路徑的feature map進(jìn)行加權(quán),起到特征選擇和組合的作用。
Context Path 采用ResNet 或者Xception 作為特征提取網(wǎng)絡(luò),提取特征的能力很強大,但不夠輕量,而且額外增加卷積層作為Spatial Path也無疑降低了算法的效率。此外,雖然Context Path 多次使用GAP 來融合全局上下文信息,但是其對信息的融合和提取能力有限,而且簡單地使用GAP 將信息壓縮為一個通道很容易損失很多有用的信息。因此為了保證精度和滿足嵌入式邊緣設(shè)備的運行要求,本文采用的改進(jìn)方法是,首先將主干特征提取網(wǎng)絡(luò)替換成MobileNet v2,并嵌入SE 注意力機制模塊,然后在末端增加一個金字塔池化層,得到多尺度的深層特征,然后用MobileNet v2 的淺層特征來替代原Spatial Path,最后將淺層特征和深層特征送入到FFM,進(jìn)行最終的分割。改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 改進(jìn)后的BiSeNet網(wǎng)絡(luò)模型
1.2.1 MobileNet v2嵌入SE注意力機制
MobileNet v2 是一個輕量級的卷積神經(jīng)網(wǎng)絡(luò),它使用深度可分離卷積(depthwise separable convolution)來減少運算量以及倒殘差結(jié)構(gòu)(inverted resdiual block)來加強特征的提取。SE(squeeze-and-excitation)屬于注意力機制,它根據(jù)feature map 不同通道的重要程度,計算各自的注意力權(quán)重向量,從而增強有用特征,抑制無用特征。本文在主干網(wǎng)絡(luò)的最后一層嵌入SE 模塊,由于SE 模塊比較輕量,幾乎不會增加額外的參數(shù)。
為了便于分辨和復(fù)用低層次特征信息,將主干網(wǎng)絡(luò)分為4個下采樣階段,分別是(Stage 1,…,Stage 4),其中將Stage1 產(chǎn)生的高分辨率feature map作為新的Spatial Path的輸出。整體結(jié)構(gòu)如表1所示,其中為倒殘差結(jié)構(gòu)的擴(kuò)張率,為輸出通道數(shù),為重復(fù)次數(shù),為步長。
表1 主干網(wǎng)絡(luò)結(jié)構(gòu)
1.2.2 金字塔池化
本文在改進(jìn)的主干網(wǎng)絡(luò)末端使用一個金字塔池化模塊(PPM)對深層特征進(jìn)行處理,如圖5所示。具體流程是使用不同尺寸的池化核對深層特征進(jìn)行池化,得到不同的特征區(qū)域,然后通過上采樣與原特征進(jìn)行concat,利用1x1 conv調(diào)整通道數(shù)。
圖5 PPM結(jié)構(gòu)示意圖
PPM 是一種獲取上下文信息比較好的方式,這種多尺度的池化可以在不同的尺度下保留全局信息,比起普通的單一池化結(jié)構(gòu)更能保留全局上下文信息。
為了保證樣本的多樣性,本研究的樣本集數(shù)據(jù)通過網(wǎng)上爬取、成都九眼橋河道拍攝和成都河長制水利局拍攝得到,采集的樣本圖片包含不同地點、不同天氣的水利場景,并通過對圖片進(jìn)行加噪、裁剪等操作對樣本進(jìn)行擴(kuò)充,一共得到2321 張圖像。使用Labelme 軟件對原始圖像進(jìn)行標(biāo)注,生成對應(yīng)的json 文件,并通過腳本將同一類的圖像區(qū)域標(biāo)記為同一顏色,類別與RGB值的映射關(guān)系如表2所示。
表2 映射關(guān)系表
通過上述步驟后,將樣本集以9 ∶1劃分訓(xùn)練集和驗證集,有2089 張訓(xùn)練集和232 張驗證集。原圖和標(biāo)注圖如圖6所示。
圖6 人工標(biāo)注
由于采集的樣本分辨率不等,所以先對圖像進(jìn)行不失真的resize,壓縮到512×512,然后再送入網(wǎng)絡(luò)進(jìn)行訓(xùn)練。訓(xùn)練分為兩個部分,一是主干凍結(jié)訓(xùn)練,二是整體解凍訓(xùn)練。第一個階段使用MobileNet v2 在ImageNet 數(shù)據(jù)集的預(yù)訓(xùn)練權(quán)值來初始化主干網(wǎng)絡(luò)參數(shù),在該階段主干的權(quán)值參數(shù)不更新。第二階段更新整體網(wǎng)絡(luò)的參數(shù),進(jìn)行解凍訓(xùn)練。整個流程如圖7所示。
圖7 訓(xùn)練流程
訓(xùn)練使用的優(yōu)化算法是Adam(adaptive moment estimation),權(quán)重衰減率設(shè)置為2e,初始學(xué)習(xí)率設(shè)置為5e,根據(jù)迭代次數(shù)的增大逐漸減小學(xué)習(xí)率,如公式(1)所示。
其中,是當(dāng)前的迭代次數(shù),max_是總迭代次數(shù),設(shè)置為0.9。
訓(xùn)練采用的loss 由Cross Entropy Loss 和Dice Loss 組成。Cross Entropy Loss 是普通的交叉熵?fù)p失,Dice Loss 將語義分割的評價指標(biāo)作為Loss,Dice Loss = 1-Dice,其中Dice 系數(shù)是一種集合相似度度量函數(shù),通常用于計算兩個樣本的相似度,取值范圍在[0,1],如公式(2)所示。
其中是預(yù)測結(jié)果,為真實結(jié)果。訓(xùn)練過程中的總loss隨epoch的變化曲線如圖8所示。
圖8 loss曲線
本文實驗環(huán)境為Pytorch1.8.0、 Cuda11.1、Python3.8、Ubuntu18.04LTS;處理器為英特爾酷睿I5-7400;CPU 頻率為3.0 GHz;內(nèi)存8 GB;GPU 顯卡為NVIDIA GTX 1080TI,顯存11 GB。
本實驗對BiSeNet、DeepLab v3+、以及本文基于BiSeNet 改進(jìn)的網(wǎng)絡(luò)進(jìn)行性能和效果的對比。測試集的分割效果如圖9所示。
圖9 分割結(jié)果對比
實驗采用平均交并比MIoU(mean intersection overunion)來評價兩個模型在量化后的分割效果。在語義分割任務(wù)中,計算真實值和預(yù)測值兩個集合的交集和并集之比,將每一類累加并取平均。如公式(3)所示。
其中為分割的類別數(shù),P為預(yù)測為第類且與真實值相同的像素點,P為預(yù)測為第類但真實值為第類的像素點,P為預(yù)測為第類但真實值為第類的像素點,在求并集時P區(qū)域多加了一次,所以要減掉一次。對驗證集分別計算、、模型大小等指標(biāo),如表3所示。
表3 分割性能對比
表3 和圖9 給出了BiSeNet、DeepLab v3+和改進(jìn)后BiSeNet 網(wǎng)絡(luò)在水利數(shù)據(jù)集上的表現(xiàn)和分割情況。從分割性能表可以看出,改進(jìn)后的BiSeNet 能夠達(dá)到72.12% 的,比原版的BiSeNet 高了4.66%,也比DeepLab v3+網(wǎng)絡(luò)高了2.67%,同時模型的參數(shù)量大大減少,速度雖稍低于原BiSetNet網(wǎng)絡(luò),但也滿足了水利場景實時性的要求。從分割效果圖可以看出,改進(jìn)后的BiSeNet 網(wǎng)絡(luò)解決了原網(wǎng)絡(luò)中對于目標(biāo)物體邊緣細(xì)節(jié)分割不太準(zhǔn)確的問題,在水利數(shù)據(jù)集上的分割效果更好。
本文針對水利場景語義分割任務(wù)中,場景復(fù)雜多樣、傳統(tǒng)算法難以適應(yīng)、常見語義分割網(wǎng)絡(luò)不夠輕量的問題,在BiSeNet 網(wǎng)絡(luò)基礎(chǔ)上,對主干結(jié)構(gòu)進(jìn)行針對性改進(jìn)。先將原有主干的特征提取網(wǎng)絡(luò)替換成更加輕量的MobileNet v2 網(wǎng)絡(luò),并嵌入SE 注意力機制,接著在網(wǎng)絡(luò)末端增加一個金字塔池化層,通過聚合不同區(qū)域的上下文,得到多尺度的深層特征,然后與優(yōu)化后的空間路徑進(jìn)行特征融合進(jìn)行最終的分割。實驗結(jié)果表明,改進(jìn)后的BiSeNet 網(wǎng)絡(luò)相比于原網(wǎng)絡(luò)的提升了4.66%,平均精度更高,大大減少了模型的參數(shù)量,在水利數(shù)據(jù)集的表現(xiàn)效果更好。