張榮星,張 果,謝智峰,劉銘輝
(昆明理工大學(xué) 信息工程與自動化學(xué)院,云南 昆明 650500)
水位是水文監(jiān)測工作中重點(diǎn)關(guān)注的問題,隨著機(jī)器視覺技術(shù)的發(fā)展,為了提高水文監(jiān)測的工作效率,將圖像法應(yīng)用于水位檢測成為一個重要的研究方向[1].仲志遠(yuǎn)[2]對水尺圖像進(jìn)行灰度變換、中值濾波等預(yù)處理,對預(yù)處理后的圖像進(jìn)行邊緣檢測,通過K-means 聚類對獲得的刻度線進(jìn)行分析進(jìn)而換算出水位值.黃林等[3]將水尺圖像轉(zhuǎn)換至色調(diào)、飽和度和明度(Hue Saturation Value,HSV)顏色空間中,在HSV 顏色空間中提取顏色進(jìn)而完成水尺分割,利用仿射變換對分割后的水尺圖像進(jìn)行矯正,根據(jù)水尺圖像中的連通區(qū)域獲取水尺刻度完成水位值計(jì)算.Chen 等[4]使用多模板匹配算法識別水尺上的字符,并根據(jù)字符序列驗(yàn)證算法對識別結(jié)果進(jìn)行校驗(yàn),將識別結(jié)果與水位計(jì)算公式結(jié)合獲得水位值.張振等[5]根據(jù)匹配對位置結(jié)合攝影測量學(xué)構(gòu)建水尺圖像與標(biāo)準(zhǔn)水尺模板之間的關(guān)系,利用閾值分割后水尺圖像的水平投影曲線確定水位線位置,將水位線位置轉(zhuǎn)換至標(biāo)準(zhǔn)水尺模板中獲得水位值.Bruinink 等[6]利用隨機(jī)森林分類的方法確定水尺圖像中的水尺區(qū)域與水體區(qū)域,將兩者區(qū)域的共同邊界位置設(shè)定為水位線位置,通過動態(tài)映射確定實(shí)際距離與像素距離的關(guān)系式并完成水位值的計(jì)算.Kim 等[7]在水位線附近選取感興趣區(qū)域(Region of Interest,ROI),在選取的ROI 區(qū)域中利用直方圖投影找到水位線位置,建立水尺像素映射表將檢測到的水位線像素位置轉(zhuǎn)換成實(shí)際水位值.
上述文獻(xiàn)基于圖像處理的方法在對水位檢測時,前期對圖像預(yù)處理環(huán)節(jié)要求較高,同時利用水尺的邊緣特征、顏色信息等分割水尺和提取水位線時,易受到現(xiàn)場復(fù)雜環(huán)境的影響.此外,通過深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型提取圖像特征,并利用提取的特征分割水尺和獲取水位線時可以增強(qiáng)水位檢測算法的環(huán)境適應(yīng)性.但在整幅圖像中利用深度學(xué)習(xí)的語義分割算法對水尺目標(biāo)進(jìn)行分割時,由于水尺目標(biāo)在圖像中的占比相對較小,水位邊緣的信息特征不明顯,使分割后的水尺邊緣較毛糙,影響了水尺底部邊緣的分割精度,降低了水位線的檢測精度,導(dǎo)致水位值換算出錯,檢測結(jié)果準(zhǔn)確性較差.
為了解決上述問題,需要增強(qiáng)水尺底部與水面交界處邊緣特征的識別,提高水位線的檢測精度.本文將改進(jìn)的YOLOv4 算法和改進(jìn)的DeepLabv3+算法相結(jié)合,研究在小區(qū)域內(nèi)對水尺的水位線圖像檢測,以期提高水位檢測準(zhǔn)確度.首先,利用改進(jìn)的YOLOv4[8]算法定位水尺上“E”字符的位置坐標(biāo)來分割小區(qū)域;其次,在得到的水尺小區(qū)域內(nèi)使用改進(jìn)DeepLabv3+[9]算法對水尺進(jìn)行分割;再次,利用Canny 邊緣檢測算法提取水面邊緣線;然后,通過統(tǒng)計(jì)邊緣檢測后的像素坐標(biāo)計(jì)算得到水位線;最后,使用線性插值法換算出水位值.實(shí)驗(yàn)結(jié)果表明本文改進(jìn)的網(wǎng)絡(luò)準(zhǔn)確率和平均交縱都有所提高,檢測的水位線平均像素更低,測量準(zhǔn)確度更高,對環(huán)境具有更強(qiáng)的適應(yīng)性.
1.1 YOLOv4 網(wǎng)絡(luò)模型相較于YOLOv3,YOLOv4 在數(shù)據(jù)處理、提取網(wǎng)絡(luò)特征等方面進(jìn)行了相應(yīng)的優(yōu)化與改進(jìn).YOLOv4 主干部分的網(wǎng)絡(luò)提取特征時采用CSPDarknet53 結(jié)構(gòu),加強(qiáng)部分的網(wǎng)絡(luò)提取特征時使用PANet 與SPP 結(jié)構(gòu),目標(biāo)檢測器head 沿用YOLOv3 的結(jié)構(gòu).主干網(wǎng)絡(luò)(Backbone Network) CSPDarknet53 引入CSPnet 結(jié)構(gòu),通過基礎(chǔ)層面劃分特征的映射,減少了相應(yīng)計(jì)算并確保了模型檢測的準(zhǔn)確率.加強(qiáng)特征提取網(wǎng)絡(luò)引入SPP 結(jié)構(gòu)使主干特征范圍在一定程度上得到擴(kuò)大,保證網(wǎng)絡(luò)運(yùn)行速度,同時使用PANet 對特征由上往下提取,再對其進(jìn)行相反的操作,依次對特征進(jìn)行反復(fù)提取增加其特征信息提取的能力.YOLOv4 結(jié)構(gòu)如圖1 所示.
圖1 YOLOv4 的網(wǎng)絡(luò)結(jié)構(gòu)模型Fig.1 The network structure model of YOLOv4
1.2 DeepLabv3+網(wǎng)絡(luò)模型DeepLabv3+采用編碼器-解碼器的結(jié)構(gòu)模式,網(wǎng)絡(luò)模型的編碼器由空洞金字塔((Atrous Spatial Pyramid Pooling,ASPP)模塊和改進(jìn)的骨干網(wǎng)絡(luò)Xception 組成.先利用主干網(wǎng)絡(luò)CSPDarknet53 提取原圖特征信息,接著ASPP對得到特征信息進(jìn)行多尺度采樣,同時解碼器模塊對解碼器輸出特征用4 倍上采樣處理,然后將采樣特征圖和卷積特征圖兩者融合,最后對其進(jìn)行3×3的卷積以及4 倍的上采樣得到分割后的結(jié)果圖.DeepLabv3+引入解碼器模塊,將底層特征與高層特征進(jìn)行融合,并采用空洞卷積對多尺度信息進(jìn)行提取,有效緩解了邊界處相關(guān)信息缺失的問題并提升了網(wǎng)絡(luò)的感受野.
2.1 基于改進(jìn)YOLOv4 的水尺小區(qū)域定位
2.1.1 YOLOv4 模型的改進(jìn) YOLOv4 算法模型中的融合特征網(wǎng)絡(luò)在經(jīng)過卷積層的多次融合后,直接將融合的特征送入了目標(biāo)檢測器head,并沒有對其進(jìn)行劃分,會導(dǎo)致信息冗余,影響目標(biāo)檢測中需要重點(diǎn)關(guān)注信息的訓(xùn)練.使用注意力機(jī)制可以增加對不同通道信息的關(guān)注度,所以可以在該模型每個目標(biāo)檢測器head 前都加入CBAM(Convolutional Block Attention Module)[10]注意力機(jī)制模塊.該模塊包含通道和空間注意力兩部分,通道注意力模塊CAM(Channel Attention Module)將輸入的特征圖像P按通道進(jìn)行整體的平均及最大池化操作,得到兩個特征映射.再將其送進(jìn)前饋神經(jīng)網(wǎng)絡(luò)(Multi-Layer Perceptron,MLP)處理,得到通道注意力映射;然后對其進(jìn)行相應(yīng)的加和與激活操作,產(chǎn)生通道注意力MC,將其與特征輸入P相乘,最終得到包含空間注意力的特征圖像F.空間注意力模塊SAM(Spatial Attention Module)將生成特征圖像F按空間進(jìn)行整體的平均及最大池化,得到特征映射.對其進(jìn)行通道連接,再經(jīng)卷積與激活處理后,產(chǎn)生的空間注意力MS,然后將其與特征輸入F相乘,最終得到包含特征的圖像M.具體的流程過程見圖2,CBAM 的注意力生成描述過程如下:
圖2 CBAM 中通道注意力和空間注意力結(jié)構(gòu)Fig.2 The channel attention and spatial attention structure in CBAM
式中:?為元素對應(yīng)位置的相乘.
CBAM 結(jié)合了通道與空間的注意力機(jī)制模塊,聚焦于特征圖的局部信息,從通道和空間上按權(quán)重對其進(jìn)行分配,使計(jì)算資源可以更加準(zhǔn)確地定位到需要重點(diǎn)關(guān)注信息,而忽視無關(guān)的干擾信息.相比單一的注意力機(jī)制,該模塊獲得了更好的效果.通過引進(jìn)該模塊增強(qiáng)了模型對“E”字符的特征提取能力,進(jìn)而提高YOLOv4 對水尺上“E”字符的檢測準(zhǔn)確率.
2.1.2 水尺小區(qū)域定位 將水尺圖片放入訓(xùn)練好的模型進(jìn)行預(yù)測,“E”字符識別結(jié)果如圖3 所示,將識別“E”字符左上角、右上角、左下角、右下角的位置坐標(biāo)記為(xij,yij),其中i={lu,ru,ld,rd},表示左上角、右上角、左下角、右下角,j=1,···,H表示識別的“E”字符數(shù)量.將得到的左上角、左下角位置坐標(biāo)進(jìn)行統(tǒng)計(jì)并求取平均根據(jù)均值畫出一條均值線,同理對右上角、右下角位置坐標(biāo)進(jìn)行相同操作,過程如圖4(a)所示,均值方程如下:
圖3 “E”字符識別結(jié)果Fig.3 The results of recognition "E" character
圖4 水尺小區(qū)域定位過程Fig.4 The small area positioning process of water gauge
式中:xm為均值,H為“E”字符檢測數(shù).
利用均值線將水尺上左右兩側(cè)“E”字符的左上角、左下角的坐標(biāo)劃分開,在均值線左邊為左側(cè)“E”字符的坐標(biāo),右邊為右側(cè)“E”字符的坐標(biāo),將均值線左側(cè)坐標(biāo)保留并刪除右側(cè)坐標(biāo).同理將水尺上左右兩側(cè)“E”字符的右上角、右下角的坐標(biāo)劃分開,將均值線右側(cè)坐標(biāo)保留并刪除左側(cè)坐標(biāo).對保留的左側(cè)“E”字符左上角、左下角坐標(biāo)(xlu,ylu),(xld,yld).利用梯度下降法擬合出水尺的左邊界線yl.同理對保留的右側(cè)“E”字符右上角、右下角坐標(biāo)用梯度下降法擬合出水尺的右邊界線yr.左、右邊界線如圖4(b)所示,邊界線方程為:
式中:al、ar為該擬合邊界直線的斜率,bl、br為該直線的截距.
為了讓小區(qū)域盡可能多地包含水尺與水的特征信息,同時使區(qū)域盡可能小,對保留的左、右兩側(cè)“E”字符坐標(biāo)以y值為基準(zhǔn)按從小到大的順序排序,各自篩選出最后兩個坐標(biāo)記為(xloa,yloa),(xlba,ylba),(xroc,yroc),(xrbc,yrbc),比較yloa與yroc的大小選取兩者小的記為min(yloa,yroc),取兩條均值線的中點(diǎn)記為xoav,中點(diǎn)計(jì)算公式為:
以點(diǎn)[xoav,min(yloa,yroc)]為中心向左右兩邊延伸交左右兩邊界的點(diǎn)分別記為[xlav,min(yloa,yroc)]、[xrav,min(yloa,yroc)].上述兩點(diǎn)為小區(qū)域的左上角、右上角坐標(biāo),然后以篩選出的倒數(shù)第2 個“E”字符的高yh為邊,yh計(jì)算公式如下:
得到小區(qū)域的左下角、右下角坐標(biāo)記為(xlav,yh),(xrav,yh).根據(jù)得到坐標(biāo)位置自動裁剪出水尺小區(qū)域并記錄下該4 個點(diǎn)的位置坐標(biāo),裁剪原理圖如圖4(c)、(d)所示.
2.2 改進(jìn)的DeepLabv3+水尺水位線檢測改進(jìn)的DeepLabv3+網(wǎng)絡(luò)模型結(jié)構(gòu)如圖5 所示.該網(wǎng)絡(luò)仍然采用編碼塊-解碼塊結(jié)構(gòu),為降低該模型的計(jì)算復(fù)雜度,提升其對小區(qū)域內(nèi)水尺與水的分割性能.將該模型的主干特征提取網(wǎng)絡(luò)替換成MobileNetv2[11],并對網(wǎng)絡(luò)提取出的低級語義特征信息引入金字塔切分注意力機(jī)制PSA(Pyramid Squeeze Attention)[12].該機(jī)制可以捕獲不同尺度的空間信息豐富空間特征,提升網(wǎng)絡(luò)的分割精度.
圖5 改進(jìn)的DeepLabV3+的網(wǎng)絡(luò)模型結(jié)構(gòu)Fig.5 The improved network model structure of DeepLabv3+
2.2.1 改進(jìn)的DeepLabv3+網(wǎng)絡(luò)模型 實(shí)驗(yàn)采用結(jié)合了MobileNetv2 的DeepLabv3+網(wǎng)絡(luò)模型,由于水尺與水在小區(qū)域水尺圖片上只劃分為兩類,語義信息較為簡單,且邊緣交界處細(xì)節(jié)信息較為豐富,這要求語義分割網(wǎng)絡(luò)對細(xì)節(jié)處的特征提取能力較高.傳統(tǒng)圖像處理的方法受光照及水面倒影等因素影響較大,很難精準(zhǔn)地定位水尺水位線的位置.但原始DeepLabv3+及其他語義分割網(wǎng)絡(luò)模型的提出往往針對物體種類及特征較多、數(shù)據(jù)量較大的數(shù)據(jù)集,因此所采用的骨干特征提取網(wǎng)絡(luò)更為繁雜,例如原本的DeepLabv3+網(wǎng)絡(luò)利用Xception 做主干網(wǎng)絡(luò)提取特征信息,但該模型參量較大、結(jié)構(gòu)復(fù)雜,不適合用于分割物體種類少的情況,并帶來了計(jì)算量大、訓(xùn)練難等問題,因此不適合用于小區(qū)域水尺水位線的提取.
本文將原始DeepLabv3+中的主干網(wǎng)絡(luò)Xception替換成MobileNetv2,將其作為該結(jié)構(gòu)的編碼器提取特征信息,因?yàn)镸obileNetv2 模型參數(shù)量較小,其相較于Xception 有收斂速度快、訓(xùn)練簡單、參數(shù)量少的優(yōu)點(diǎn).此外,繼續(xù)沿用MobileNetv1 網(wǎng)絡(luò)模型中的深度可分離卷積,其計(jì)算量公式如下:
式中:卷積核的尺寸為DK×DK,輸入、輸出特征圖像的尺寸分別為DF×DF×M、DF×DF×N.
同時引入倒殘差模塊,提高圖像檢測和分類的精度.適用于小區(qū)域圖片中水尺與水的分類任務(wù),選擇MobileNetv2 作為骨干網(wǎng)絡(luò).圖6為MobileNetv2 的網(wǎng)絡(luò)結(jié)構(gòu)圖.
圖6 MobileNetV2 的網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 The network structure of MobileNetv2
由于小區(qū)域內(nèi)水尺水位線提取的關(guān)鍵在于水尺與水的分類精度,為提升兩者邊緣分割精度,選用特征金字塔分割注意力機(jī)制模塊.該模塊是一種融合了通道和多尺度空間的注意力機(jī)制,可以更加有效地對空間的多尺度信息進(jìn)行提取,同時可以讓通道依賴關(guān)系的距離變得更長,有效提升了水尺與水面邊緣的分割精度.該模型的網(wǎng)絡(luò)結(jié)構(gòu)如圖7 所示,模型先利用SPC 模塊構(gòu)建圖像的多尺度特征,然后通過SE 模塊獲取多尺度特征圖像的注意力權(quán)值,再使用Softmax 對其進(jìn)行重矯正,最后按元素對得到的特征圖像與校準(zhǔn)后的權(quán)值進(jìn)行點(diǎn)乘,輸出多尺度特征圖像.該過程的計(jì)算公式如下:
圖7 PSA 注意力網(wǎng)絡(luò)結(jié)構(gòu)Fig.7 The network structure of PSA
式中:i=1,2,···,S-1,S為輸入量在通道上的分組,Conv 為卷積提取特征,Cat 為對特征進(jìn)行拼接,SEWeight 為提取特征的注意權(quán)值,Softmax 為歸一化注意力權(quán)值,⊕為級聯(lián)運(yùn)算,⊙為通道乘法運(yùn)算,F(xiàn)i為多尺度特征圖像生成函數(shù),F(xiàn)為對其進(jìn)行拼接計(jì)算,Zi為Fi的注意力權(quán)值,Z為多尺度注意力權(quán)值向量,Ai為重新校準(zhǔn)的多尺度通道注意力權(quán)值,F(xiàn)i為多尺度通道注意力加權(quán)之后的特征圖,F(xiàn)out多尺度信特征圖.
2.2.2 水尺水位線提取 從小區(qū)域水尺圖片的分割結(jié)果中提取水尺水位線,具體步驟如下:首先利用顏色信息剔除分類結(jié)果中的水尺,只保留對水的分割;再利用Canny 算子對得到結(jié)果圖進(jìn)行檢測,提取小區(qū)域內(nèi)水面的邊緣線;然后對Canny 邊緣檢測圖中值為255 像素點(diǎn)進(jìn)行統(tǒng)計(jì),記錄該像素的位置坐標(biāo)并對其求平均值;最后根據(jù)得到的平均值以及之前記錄的分割前小區(qū)域的坐標(biāo)位置,在原圖中畫出水尺的水位線,為了讓原圖的水位線粗一點(diǎn)方便觀察,對其進(jìn)行膨脹處理.水尺水位線檢測過程如圖8 所示.
圖8 水尺水位線檢測過程Fig.8 The process of water gauge water level line detection
2.3 水位值的換算在對水尺的水位進(jìn)行測量前,首先要固定好攝像頭的位置,使水尺盡可能清晰地出現(xiàn)在攝像頭的視野中;然后標(biāo)定水尺圖片,根據(jù)水尺圖片的像素坐標(biāo)與實(shí)際空間坐標(biāo)的對應(yīng)位置關(guān)系利用線性插值法[13]建立對應(yīng)的相機(jī)標(biāo)定模型.在水尺圖中每隔2 個“E”字符的間距選擇一點(diǎn),同時記下該點(diǎn)像素縱向位置坐標(biāo)的數(shù)值Yi以及該點(diǎn)在實(shí)際水尺中對應(yīng)的長度值Hi,相應(yīng)地選取出X個點(diǎn),得到X-1 像素區(qū)間.根據(jù)得到的相機(jī)標(biāo)定數(shù)學(xué)模型可以計(jì)算出該水尺圖像中水位線像素點(diǎn)對應(yīng)的實(shí)際水位值.實(shí)際水位值計(jì)算公式如下:
2.4 算法整體流程算法流程如圖9 所示.
圖9 小區(qū)域引導(dǎo)下的水尺水位檢測流程Fig.9 The process of water gauge level detection under small area guidance
步驟 1首先利用改進(jìn)的YOLOv4 目標(biāo)檢測算法對水尺上的“E”字符進(jìn)行識別,得到“E”字符的坐標(biāo)位置信息;然后按相應(yīng)的規(guī)則對坐標(biāo)進(jìn)行篩選、排序;最后根據(jù)得到的坐標(biāo)位置信息裁剪出包含水尺與水交界的小區(qū)域圖片.
步驟 2先對步驟1 裁剪得到的小區(qū)域圖片分成水尺與水兩類制作數(shù)據(jù)集,并將其作為輸入放進(jìn)改進(jìn)的DeepLabv3+模型中訓(xùn)練;然后通過訓(xùn)練完的模型預(yù)測給出分割結(jié)果,接著對分割結(jié)果進(jìn)行Canny 邊緣檢測提取水面區(qū)域邊緣線;最后對統(tǒng)計(jì)255 像素值求平均值,根據(jù)得到均值畫出水位線.
步驟 3通過線性插值像素比例換算的方法將步驟2 得到的水尺水位線像素坐標(biāo)轉(zhuǎn)化成實(shí)際水尺長度,進(jìn)而讀取出水尺水位值.
用于實(shí)驗(yàn)的電腦硬件配置為E5-2620v4,NVIDIA 1080Ti(12 GB GDDR5X),32 GB DDR4;軟件配置為Windows 10 系統(tǒng),Python 3.8.0 編程語言,Pytorch 1.2.0 深度模型框架.
3.1 數(shù)據(jù)集目標(biāo)檢測模型訓(xùn)練采用了某水文局4 個水文站水尺圖像樣本,從中選取450 幅圖片作為訓(xùn)練集,50 幅作為驗(yàn)證集.語義分割模型訓(xùn)練時使用YOLOv4 裁剪出的小區(qū)域水尺圖像制作數(shù)據(jù)集,數(shù)據(jù)集中獲取了4 個水文站不同時段、不同日照環(huán)境的水尺圖片數(shù)據(jù),共1 241 幅,并對這1 241幅圖片以9∶1 的比例分為訓(xùn)練集與驗(yàn)證集.利用labellmg 標(biāo)注工具對選取現(xiàn)場水尺圖片中的“E”字符進(jìn)行標(biāo)注,制作水尺“E”字符數(shù)據(jù)集,使用labelme 工具對小區(qū)域水尺圖像中的水尺與水進(jìn)行標(biāo)注,利用標(biāo)注好的數(shù)據(jù)集對網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,并在訓(xùn)練時利用行翻轉(zhuǎn)、縮放、裁剪等數(shù)據(jù)增強(qiáng)方法對原始圖像進(jìn)行增強(qiáng).
3.2 模型訓(xùn)練改進(jìn)的目標(biāo)檢測及語義分割網(wǎng)絡(luò)模型在訓(xùn)練前,對其參數(shù)值的進(jìn)行了設(shè)定.目標(biāo)檢測模型選用Adam 優(yōu)化器對整個網(wǎng)絡(luò)進(jìn)行優(yōu)化迭代,初始的學(xué)習(xí)速率為1 ×10-3,動量為0.937,衰減權(quán)值為 5 ×10-4,選取目標(biāo)類別的損失值、置信度的損失值、位置坐標(biāo)的損失值作為該模型的損失函數(shù).語義分割模型選也選Adam 作優(yōu)化器,初始的學(xué)習(xí)速率為 7×10-3,動量為0.9,衰減權(quán)值為1×10-4,選取普通的交叉熵?fù)p失值和相似度度量函數(shù)值作為該模型的損失函數(shù),同時都采用余弦退火的方式對學(xué)習(xí)率進(jìn)行更新.為了避免訓(xùn)練的過擬合,該模型在訓(xùn)練時設(shè)定200 個epoch,并凍結(jié)前1/4的epoch 進(jìn)行訓(xùn)練,以縮短模型的訓(xùn)練時長,避免權(quán)值在訓(xùn)練前期遭到破壞.
損失函數(shù)能對水尺“E”字符檢測模型和水尺與水分類模型的穩(wěn)定性作出評估,損失值的大小代表了模型穩(wěn)定性的好壞,越小越穩(wěn)定,預(yù)測得到的結(jié)果越準(zhǔn)確.圖10 為兩模型訓(xùn)練后的損失函數(shù)曲線圖,從圖10 可以看出,隨著訓(xùn)練迭代層數(shù)的增加,兩模型Loss 逐漸衰減,最終趨向于穩(wěn)定狀態(tài),說明模型對水尺圖像中“E”字符進(jìn)行檢測和小區(qū)域圖像中的水尺與水進(jìn)行分類時會有較好的識別結(jié)果.
圖10 該模型訓(xùn)練的損失函數(shù)曲線Fig.10 The loss function of model trains curve
3.3 實(shí)驗(yàn)結(jié)果及分析
3.3.1 目標(biāo)檢測模塊對比及分析 本文采用準(zhǔn)確率A、召回率R、精確度P及F1 評估網(wǎng)絡(luò)的性能.計(jì)算公式如下:
式中:N為檢測類別數(shù),AP為對應(yīng)類別的平均檢測精度,F(xiàn)P為分錯的正樣本數(shù),F(xiàn)N為分錯的負(fù)樣本數(shù),TP為分對的正樣本數(shù).
為了定量地分析改進(jìn)后YOLOv4 算法的檢測效果,將該算法與目前比較先進(jìn)的目標(biāo)檢測算法在制作的水尺“E”字符數(shù)據(jù)集上進(jìn)行了對比.對比的結(jié)果如表1 所示.從表1 中可以看出,改進(jìn)的YOLOv4 算法識別“E”字符的準(zhǔn)確率分別比YOLOv4、YOLOv3、SSD 提 高0.76、3.82 和7.61個百分點(diǎn),F(xiàn)1 提高0.01、0.02 和0.17,召回率提高1.73、3.25 和29.44 個百分點(diǎn),其精確度雖低于SSD[14],但是仍高于YOLOv4 和YOLOv3[15].因此,改進(jìn)后YOLOv4 算法整體的性能更優(yōu)異,提高了對水尺“E”字符的識別準(zhǔn)確率.
表1 不同目標(biāo)檢測算法的性能Tab.1 The performance of different target detection algorithms
3.3.2 語義分割模塊對比及分析 本文采用平均交并比I及精確率D評估該網(wǎng)絡(luò)的性能.I為真實(shí)值與預(yù)測值所構(gòu)成的兩個集合交集與并集之比,常根據(jù)類計(jì)算交并比再對其求平均.計(jì)算方法如下:
D為每個類別像素點(diǎn)正確分類數(shù)占該類像素點(diǎn)的比例,之后對所有類取平均.具體計(jì)算公式如下:
式中:pii表 示真正的數(shù)量,pij表 示真實(shí)值為i、被預(yù)測為j的數(shù)量,k為類別數(shù).
為了定量地分析方法的分割效果,實(shí)驗(yàn)對比了本文方法與FCN、U-Net、PSPNet[16]、DeepLabv3+等幾種常見的語義分割網(wǎng)絡(luò)在小區(qū)域水尺圖像中水尺與水的分割量化結(jié)果,結(jié)果如表2 所示.從表2 可以看出,本文方的平均交并比為82.17%,準(zhǔn)確度為87.31%,均優(yōu)于其他網(wǎng)絡(luò),說明該方法提高了網(wǎng)絡(luò)效能,其中水尺平均交并比、水平均交并比為單獨(dú)計(jì)算水尺類別和水類別時的交并比.
表2 不同網(wǎng)絡(luò)小區(qū)域水尺圖像的分割量化結(jié)果Tab.2 The segmentation and quantification results of water gauge images in small areas of different networks %
圖11 為不同網(wǎng)絡(luò)模型的語義分割結(jié)果對比圖.為了驗(yàn)證改進(jìn)的DeepLabv3+網(wǎng)絡(luò)模型的性能,在預(yù)先訓(xùn)練好的不同模型中放入相同的圖像進(jìn)行測試.從圖11 中可以得到,本文改進(jìn)的DeepLabv3+網(wǎng)絡(luò)在小區(qū)域水尺圖像的分割效果要優(yōu)于其他3種網(wǎng)絡(luò),該網(wǎng)絡(luò)分割結(jié)果中水尺與水交界處的邊緣線更清晰,位置也更加準(zhǔn)確,很少有不正常缺失與凸出部分,可以更加準(zhǔn)確定位水尺水位線的位置.使用U-Net 分割時容易有獨(dú)立的分割錯誤區(qū)域出現(xiàn),部分區(qū)域也未能準(zhǔn)確分割,使用PSPNet 和DeepLabv3+進(jìn)行分割時改善了獨(dú)立的分割錯誤區(qū)域出現(xiàn)的情況,但水尺與水交界處分割的效果依舊不好,在水尺與水交界處容易有不正常缺失與凸出部分.
圖11 不同網(wǎng)絡(luò)模型的語義分割結(jié)果Fig.11 The semantic segmentation results of different network models
3.3.3 水位線檢測對比分析 為了檢驗(yàn)水尺水位線的提取效果,實(shí)驗(yàn)使用平均像素誤差作為評價指標(biāo)[17],計(jì)算公式如下:
式中:n為待檢測照片數(shù),Yi為檢測到的水位線的像素縱坐標(biāo),為實(shí)際水位線的像素縱坐標(biāo).
對比了本文算法在原圖中提取水位線的檢測效果,如圖12 所示.計(jì)算了4 種方法的像素誤差,像素誤差是提取水位線與實(shí)際水位線像素坐標(biāo)差的絕對值,誤差越小說明準(zhǔn)確度越高,計(jì)算結(jié)果如表3 所示.
表3 平均像素誤差Tab.3 The error of average pixel
圖12 不同算法的水位線檢測效果Fig.12 The water level detection effect of different algorithms
圖12(a)為水尺原圖,(b)為參考文獻(xiàn)[18]提供的算法利用YOLOv3 直接框圖中的水尺提取水位線得到圖像,該方法的平均像素誤差為36.270.由圖12 可以看出,由于水尺倒影的存在,導(dǎo)致水尺檢測異常,影響了水尺水位線的檢測.圖12(c)為參考文獻(xiàn)[19]提供的算法利用DeepLabv3+直接在原圖中分割水尺后提取水位線得到圖像,該方法的平均像素誤差為6.465.由圖12 可以看出,由于水尺目標(biāo)在圖像中的占比相對較小,水尺底部邊緣的信息特征不明顯,導(dǎo)致分割后的水尺邊緣較為毛糙,且水尺底部存在異物時會將其錯誤分割,影響了水尺底部邊緣的分割精度,導(dǎo)致水尺水位線的位置檢測不準(zhǔn)確.圖12(d)為參考文獻(xiàn)[20]提供的算法利用傳統(tǒng)圖像處理的方法,通過水尺上的顏色信息對其二值化處理分割出水尺后提取水尺水位線得到的圖像,該方法的平均像素誤差為4.046.由圖12 可以看出,受光照影響水尺的顏色信息變化較大,在對顏色進(jìn)行提取時,閾值不能自適應(yīng),影響了水尺的分割,導(dǎo)致水位線檢測異常.圖12(e)為本文算法利用YOLOv4 目標(biāo)檢測算法分割水尺小區(qū)域,然后在小區(qū)域的引導(dǎo)下利用改進(jìn)的DeepLabv3+分割該區(qū)域內(nèi)的水尺與水后提取水位線得到圖像,該方法的平均像素誤差為3.030,誤差小于上述算法.
從圖12 可以看出,在小區(qū)域的引導(dǎo)下增強(qiáng)了水尺底部與水交界處的邊緣特征信息,同時利用改進(jìn)的DeepLabv3+分割該區(qū)域內(nèi)水尺與水可以減少交界處邊緣的粗糙程度,提高了水尺底部邊緣的分割精度,使水位線位置識別更準(zhǔn)確.
3.3.4 水位值讀數(shù)分析 本文選用了4 個水文站在1 個月不同時間內(nèi)的一些水尺圖像,并對該算法得到的一些水位數(shù)據(jù)進(jìn)行測試,對比了本文算法得到的水位值與人工讀取的水位值,如圖13 所示.從圖13 中可以看出,兩條曲線較為擬合,說明本文算法準(zhǔn)確率較高.同時繪制了兩者的誤差曲線,如圖14 所示,可以看出,該算法得到的水位值與人工讀取的水位值之間的誤差小于1 cm,滿足水位監(jiān)測要求.
圖13 水位值對比圖Fig.13 The comparison of water level values
圖14 水位誤差對比圖Fig.14 The comparison of water level values
本文提出了小區(qū)域引導(dǎo)下的水尺水位檢測方法,先利用改進(jìn)的YOLOv4 算法定位并分割小區(qū)域,接著在小區(qū)域內(nèi)利用改進(jìn)的DeepLabv3+進(jìn)行分割,再利用Canny 算法提取水面邊緣線,最后統(tǒng)計(jì)邊緣線像素坐標(biāo)得到水位線.實(shí)驗(yàn)表明改進(jìn)的YOLOv4 的準(zhǔn)確率為94.13%,檢測精度高于其他網(wǎng)絡(luò),改進(jìn)的DeepLabv3+網(wǎng)絡(luò)在水尺驗(yàn)證集上平均交并比為82.17%,分割精度高于其他網(wǎng)絡(luò),小區(qū)域引導(dǎo)下的水位線平均像素為3.030,相比直接分割水尺的算法更能精確定位水尺水位線的位置.現(xiàn)場測試表明,本方法能準(zhǔn)確計(jì)算出水尺水位值,水位的檢測精度達(dá)到1 cm,滿足水尺水位檢測要求.未來將對模型進(jìn)行輕量化處理,以減小參數(shù)量,提高其檢測速度.