周宇浩,陳錫愛*,葉 開
(中國計量大學,浙江 杭州 310018)
河岸線是水陸生態(tài)系統(tǒng)的中間地帶,對維系河流生態(tài)系統(tǒng)健康起著很重要的作用,同時也是河流沿岸經(jīng)濟發(fā)展的基礎。河岸線的生態(tài)健康遭到破壞源自于河岸線的自然演變以及不合理的、盲目的開發(fā)利用。因此,加強河岸線的保護與利用,要從規(guī)劃、管理、研究、治理等方面采取措施。當前國內(nèi)河道巡檢方式主要有人工徒步巡檢和汽艇巡查。近年來,隨著無人機技術的快速發(fā)展,無人機巡檢技術也在興起。本文基于語義分割算法進行河岸線識別,并通過無人機進行河道巡檢,從而降低人工成本。
語義分割算法是計算機視覺領域中的基礎性算法之一,通過對圖像中各個像素點進行語義識別,得到各個類別在圖像中所屬的區(qū)域。近些年,隨著深度學習技術的日漸成熟,圖像語義分割算法取得了很大的成績。2014年提出的全卷積網(wǎng)絡(FCN)是將成型的卷積神經(jīng)網(wǎng)絡模型經(jīng)過結(jié)構(gòu)改造后形成的端到端,像素到像素的深度神經(jīng)網(wǎng)絡結(jié)構(gòu)。FCN將傳統(tǒng)卷積神經(jīng)網(wǎng)絡(CNN)中的全連接層全部轉(zhuǎn)化為卷積層。然而,F(xiàn)CN上采樣時的結(jié)構(gòu)相比于CNN下采樣時的結(jié)構(gòu)相對凌亂。因此,2015年提出了由編碼器和解碼器構(gòu)成的SegNet分割網(wǎng)絡,其分割精度和識別效率都得到了提高。SegNet網(wǎng)絡中,編碼器是由卷積層和池化層構(gòu)成來提取圖像特征,解碼器是由卷積層和上采樣層構(gòu)成來恢復原始圖像的大小,以此實現(xiàn)端到端的網(wǎng)絡結(jié)構(gòu)。通過圖像語義分割算法的不斷發(fā)展,Deeplabv3+算法中加入了多孔空間金字塔池化(ASPP)網(wǎng)絡模塊。在ASPP模塊中加入了不同尺度的卷積,獲取更多的上下文特征信息,實現(xiàn)了圖像魯棒分割。
Deeplabv算法采用膨脹卷積來保證感受野大小不受影響的同時,設置VGG網(wǎng)絡的池化層步長來緩解特征圖尺寸縮小的問題。在Deeplabv1基礎上,Deeplabv2采用ASPP模塊結(jié)構(gòu),獲得了多尺度的特征。但是,Deeplabv2使用相同膨脹率的膨脹卷積來提取圖像特征,所以只能提取圖像上離散點的特征;而且在ASPP結(jié)構(gòu)中,由于過大的膨脹率卷積,會縮小提取特征的有效范圍。因此,Deeplabv3在相鄰膨脹卷積中使用不同膨脹率;同時,用全局平均池化層替代ASPP結(jié)構(gòu)中膨脹率較大的膨脹卷積。為了更精確恢復特征圖尺寸,在Deeplabv3+網(wǎng)絡結(jié)構(gòu)中增加Decoder模塊,整體結(jié)構(gòu)變成Encoder-Decoder模塊。
針對河道場景河岸線的識別問題,為了得到更為精準的識別結(jié)果,本文基于Deeplabv3+語義分割算法,對ASPP模塊進行剪枝加速以及優(yōu)化擴張卷積。
語義分割是像素級別的分類任務,對圖片中各個像素預測其類別。實現(xiàn)語義分割首先要對采集到的河道圖像制作圖像標簽。圖像標簽是像素值和目標類別相互對應的灰度圖,且其尺寸與原圖像一致。本文基于Labelme軟件對無人機采集的河道圖像進行了精確標注,其標注界面如圖1所示。

圖1 河道語義標注界面圖

圖2 數(shù)據(jù)集增強
為了防止過擬合和提升網(wǎng)絡的泛化能力,對河道圖像進行數(shù)據(jù)增強操作。本文通過旋轉(zhuǎn)、裁剪、椒鹽噪聲、高斯噪聲、調(diào)節(jié)亮度和對比度等方式進行了數(shù)據(jù)集擴充。樣本增廣完成后,將9000幅圖像用于訓練,2250幅圖像作為驗證集,剩余的2250幅圖像作為測試集。河道數(shù)據(jù)集增強結(jié)果如圖2所示。
Deeplabv3+是Google公司在2018年最新推出的語義分割算法,該算法在Deeplabv1-3基礎上發(fā)展。該算法編碼器是以Xception網(wǎng)絡作為主干。Xception網(wǎng)絡是由Inception結(jié)構(gòu)加上Depthwise Separable Convlution,再加上殘差網(wǎng)絡結(jié)構(gòu)改進而來。最后的分類和識別效果很大程度上取決于深度學習網(wǎng)絡的深度。常規(guī)的網(wǎng)絡在層數(shù)較深的時候,識別效果反而不好。因為梯度消失的現(xiàn)象隨網(wǎng)絡層數(shù)的加深會更加明顯,導致訓練效果不是很好。但是現(xiàn)在網(wǎng)絡深度較淺的又無法明顯提升識別效果。訓練一個神經(jīng)網(wǎng)絡采用梯度下降算法,若沒有殘差,訓練誤差會隨著網(wǎng)絡的加深先減少后增加,導致識別效果不是很好。而對于殘差網(wǎng)絡來講,訓練誤差會隨著網(wǎng)絡的加深而越來越小。這有助于解決梯度爆炸和梯度消失的問題,在網(wǎng)絡加深的同時又能達到良好的識別效果。采用Depthwise Separable Convolution也可以帶來準確率的提升。
Deeplabv3+網(wǎng)絡編碼器ASPP模塊采用多尺度卷積及全局平均池化處理河道圖像,其網(wǎng)絡結(jié)構(gòu)如圖3所示。改進后網(wǎng)絡編碼器中ASPP模塊僅含有單尺度卷積進行特征提取,其網(wǎng)絡結(jié)構(gòu)如圖4所示。

圖3 Deeplabv3+網(wǎng)絡結(jié)構(gòu)

圖4 Deeplabv3+改進網(wǎng)絡結(jié)構(gòu)
MIoU是用于評估語義分割算法性能的標準指標。假設圖像中有+1個類(從到,其中包含背景類),表示本屬于類但被識別為類的像素數(shù)量。、則為假正例和假負例,而表示識別正確的像素數(shù)量。則MIoU可表示為

(1)
模型的精確程度是指使并集盡可能重合。目標的捕獲程度是指使預測標簽與標注盡可能重合。通過計算以上評價指標即可判斷模型的精確程度和目標的捕獲程度。

圖5 ASPP模塊剪枝加速
本文基于Linux系統(tǒng)搭建了深度學習的系統(tǒng)環(huán)境。使用Tensorflow深度學習框架。為了加速計算,使用NVIDIA GPU作為訓練時的硬件加速器。系統(tǒng)的軟硬件環(huán)境配置如表1所示。

表1
ASPP模塊使用不同采樣率的空洞卷積對輸入特征圖并行采樣,捕捉到更多的圖像上下文信息。ASPP結(jié)構(gòu)中包含3×3擴張率分別為{6,12,18}的卷積和一個全局平局池化層。
在Deeplabv3+算法基礎上,本文通過保留ASPP模塊中不同卷積個數(shù)作為網(wǎng)絡結(jié)構(gòu)進行實驗。通過計算測試集中河道圖片平均測試時間和MIoU,得出算法測試效果如表2、圖5所示,其中ASPP模塊中保留3*3擴張率為6的卷積和全局平均池化卷積的網(wǎng)絡模型在MIoU可接受的情況下,單張測試時間最短。

表2 ASPP模塊剪枝加速
在傳統(tǒng)分類網(wǎng)絡中,一般通過連續(xù)的池化或者其它下采樣操作來獲取多尺度上下文信息。如果刪除池化層并擴大卷積核,會加大計算量。但是如果不加入池化層,則會因感受野變小而學不到全局的特征。因此提出了空洞卷積,它在不損失分辨率的前提下支持感受野指數(shù)級增長。

圖6 ASPP模塊卷積擴張率優(yōu)化
空洞卷積可根據(jù)特征圖的大小調(diào)整擴張率,并在不增加參數(shù)數(shù)量的情況下增加了更大的上下文信息。但是當擴張率非常接近特征圖大小時,常規(guī)的3×3空洞卷積充當了標準的1×1卷積。因此,擴張率的選擇情況決定了空洞卷積的效率。在Deeplabv3+算法基礎上,保留ASPP模塊中全局平均池化層,采用不同擴張率的3×3空洞卷積進行對比實驗。通過計算測試集中河道圖片平均測試時間和MIoU,得出算法測試效果如表3、圖6所示,其中ASPP模塊中采用3*3擴張率為12的卷積和全局平均池化層的網(wǎng)絡模型在單張測試時間基本一致的情況下,MIoU最高。

表3 ASPP模塊卷積擴張率優(yōu)化
隨著機器學習領域的發(fā)展,深度學習在圖像處理方面取得了卓越的成績。在河道圖像處理領域,相比于傳統(tǒng)人工處理方法,擁有許多優(yōu)勢。本文基于無人機進行巡檢,并從檢測速度和精度兩方面考慮,對Deeplabv3+算法中ASPP模塊進行了優(yōu)化。最后在河道數(shù)據(jù)集進行實驗,通過對ASPP模塊采用合適擴張率單個卷積進行特征提取,做了一系列對比實驗。實驗結(jié)果從原先單張測試時間為3.79秒、MIoU為90.28%提高到單張測試時間為3.26秒、MIoU為90.77%,提升了0.49%的精度和16.26%的速度,證明了本實驗算法的可行性。