張惠良
(蘇州市水利工程管理處,江蘇 蘇州 215000)
隨著內(nèi)河工業(yè)化以及河流沿岸人口數(shù)量飆升,向內(nèi)河排放的工業(yè)廢棄物量增加,河邊農(nóng)業(yè)活動以及亂丟生活垃圾都使得內(nèi)河異物增加。為了實(shí)現(xiàn)智能識別內(nèi)河河面上異物,有必要提取出準(zhǔn)確清晰的內(nèi)河河道線,精準(zhǔn)的內(nèi)河河道線能夠較大程度提升河面異物的識別正確率。由于內(nèi)河多有閘壩控制河流的流量,導(dǎo)致內(nèi)河的河面會隨閘壩的開閉情況上下起伏,因此需要一種實(shí)時(shí)性好、效果穩(wěn)健的河道線提取算法。
傳統(tǒng)圖像算法中,圖像分割指的是根據(jù)圖像中各區(qū)域的灰度特征、色彩差異、紋理形狀的不同,將圖像劃分為不同的區(qū)域,各區(qū)域內(nèi)的像素特征呈現(xiàn)一定的規(guī)律性,使每個(gè)區(qū)域成為一個(gè)完整的背景或物體。圖像分割算法大體包括基于像素閾值的圖像分割、基于邊緣的圖像分割、基于區(qū)域的圖像分割、基于能量泛函的分割方法。2013年6月,彭明陽等通過研究水域與河岸的飽和度、亮度特征上的差異,提取出基底圖像并進(jìn)行區(qū)域分割,最終通過邊緣檢測算子處理后提取出水岸線[1]。2013年12月,李春娟等結(jié)合形態(tài)學(xué)與hough直線檢測算法,實(shí)現(xiàn)了水岸線提取[2]。2018年7月,余加俊等根據(jù)城鄉(xiāng)河道的直線特征,使用Fitline直線擬合算法,在直線河道的提取上獲得了較好的結(jié)果[3-4]。2019年5月,鄭又能等根據(jù)圖像lab模型中水域與河岸的l、a、b三分量的差異,粗略提取出水域roi,并基于最優(yōu)化理論計(jì)算出最佳種子點(diǎn),使用區(qū)域生長最終提取出河岸線[5]。
綜上所述,經(jīng)典圖像算法對于復(fù)雜環(huán)境下的河道線提取效果無法達(dá)到河道線實(shí)際應(yīng)用的要求。實(shí)際的內(nèi)河河道大多包含許多的彎曲處,使直線檢測算法無法提取出準(zhǔn)確的河道;河道光照以及反射使河面表現(xiàn)出巨大的差異,使用經(jīng)典圖像算法自適應(yīng)地將其準(zhǔn)確分割。因此,本文引入HED神經(jīng)網(wǎng)絡(luò)算法,以實(shí)現(xiàn)更迅速、更魯棒的內(nèi)河河道線提取。
邊緣檢測的目的是提取出圖像中目標(biāo)區(qū)域與無關(guān)區(qū)域的邊界,剔除與任務(wù)無關(guān)的圖像信息,從而大幅提升圖像運(yùn)算任務(wù)的實(shí)時(shí)性。邊緣在圖像中大都存在于兩個(gè)不同區(qū)域的交界處,由于不同區(qū)域交界處的像素值發(fā)生了劇烈的跳變,從而表現(xiàn)為邊緣。
實(shí)際的邊緣檢測方法一般基于邊緣處像素值變化劇烈的特征,定義各種差分算子來計(jì)算得到圖像的邊緣圖像。常用的邊緣算子大多是一階和二階的,之所以不使用更高階的算子是因?yàn)閷?dǎo)數(shù)操作對噪聲十分敏感,使得三階以上的算子失去了實(shí)際使用的意義。低階算子往往可以在使用前對圖像進(jìn)行平滑濾波,從而消除部分噪聲的影響。
Sobel算子是典型的基于一階導(dǎo)數(shù)的邊緣檢測算子,由于該算子中引入了類似局部平均的運(yùn)算,因此對噪聲具有平滑作用,能很好地消除噪聲的影響。Sobel算子對于象素位置的影響作了加權(quán),與Prewitt算子、Roberts算子相比,其效果更好[6-8]。
Laplace算子是一種二階微分算子,算子本身具有各向同性和旋轉(zhuǎn)不變性。若只關(guān)心邊緣點(diǎn)的位置而不需要了解其周圍的實(shí)際灰度差時(shí),一般選擇該算子提取圖像的邊緣。由于其對噪聲比較敏感,所以很少用該算子檢測邊緣,而是用來判斷邊緣像素是位于圖像的明區(qū)還是暗區(qū)[9]。
Canny邊緣檢測算法不是簡單的圖像運(yùn)用算子卷積而已,它包含濾波平滑、計(jì)算梯度、非極大值抑制、雙閾值抑制偽邊緣4部分的圖像運(yùn)算。首先使用高斯算子模板對圖像進(jìn)行平滑模糊,濾除部分噪聲。隨后使用Sobel算子計(jì)算平滑后圖像的邊緣圖像,并將非極大值點(diǎn)設(shè)置為背景,從而剔除一部分并非邊緣的灰度跳變點(diǎn)。此時(shí)還存在偽邊緣,通過雙閾值限定并判斷其像素連接特征得到較好結(jié)果。Canny方法不容易受噪聲干擾,使用兩種不同的閾值分別檢測強(qiáng)邊緣和弱邊緣,并且當(dāng)弱邊緣和強(qiáng)邊緣相連時(shí),才將弱邊緣包含在輸出圖像中,能夠檢測到真正的弱邊緣[10]。
區(qū)域生長法是一種常用的區(qū)域分割方法,若能分割出河道區(qū)域,則可以很方便地提取出河道輪廓線。區(qū)域生長法是一種根據(jù)像素點(diǎn)某種屬性的相似性進(jìn)行聚類的分割方法,要進(jìn)行區(qū)域生長首先要找到合適的生長種子點(diǎn),種子點(diǎn)需要具備屬于河道像素點(diǎn)最大程度的特征,隨后根據(jù)指定的生長法則判斷種子點(diǎn)與其周圍點(diǎn)是否滿足生長法則進(jìn)行區(qū)域生長。區(qū)域生長法的關(guān)鍵在于最優(yōu)種子點(diǎn)的篩選,以及選擇一個(gè)較好的生長法則[11]。
目前,基于深度學(xué)習(xí)的邊緣檢測算法主要通過卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征的提取、選擇和分類,以替換傳統(tǒng)方法中的人工特征提取與分類,常見的用于邊緣檢測的深度學(xué)習(xí)網(wǎng)絡(luò)有CASENet、DeepEdge、HED等。
CASENet將每個(gè)邊緣像素與多于一個(gè)的邊緣類相關(guān)聯(lián),是一種基于ResNet的端到端深度語義邊緣學(xué)習(xí)的架構(gòu),同時(shí)也是一種跳層(skip-layer)架構(gòu),其中頂層卷積層的類別邊緣激活共享并與底層特征的同一集融合,這里利用一種多標(biāo)簽損失函數(shù)來監(jiān)督激活的融合[12-13]。
DeepEdge利用目標(biāo)相關(guān)特征作為輪廓的高級線索檢測,這點(diǎn)不同于大多使用紋理或顯著性等低級特征來檢測輪廓的網(wǎng)絡(luò)。DeepEdge是多級深度網(wǎng)絡(luò),由5個(gè)卷積層和1個(gè)分叉全連接子網(wǎng)絡(luò)組成。分叉子網(wǎng)絡(luò)包含一個(gè)學(xué)習(xí)預(yù)測輪廓似然的分支,以及一個(gè)訓(xùn)練學(xué)習(xí)在給定點(diǎn)輪廓分支[14]。
HED 是一個(gè)整體嵌套邊緣檢測的深度學(xué)習(xí)邊緣提取算法,HED能使用整體圖像進(jìn)行訓(xùn)練和預(yù)測,且能進(jìn)行多尺度、多層特征學(xué)習(xí)。該深度學(xué)習(xí)模型利用全卷積網(wǎng)絡(luò),自動學(xué)習(xí)豐富的分層表示,并基于側(cè)面響應(yīng)進(jìn)行深層監(jiān)督指導(dǎo)[15-16]。
由于河道大多存在于野外,采集到的河道圖像必然受到野外環(huán)境、天氣等多重影響,因此有必要先對采集圖像進(jìn)行預(yù)處理,去除部分干擾邊緣提取的因素[17-19]。觀察野外相機(jī)采集的河道圖像,風(fēng)吹過水面會產(chǎn)生水波,同時(shí)光線照射會使水波一側(cè)產(chǎn)生陰影,從而在河面產(chǎn)生新的偽邊緣。使用傳統(tǒng)的平滑濾波方法,可以平滑偽邊緣,但同時(shí)圖像的模糊可能會使得河道線丟失,綜合考慮使用一種改進(jìn)的方差濾波器[20-21]。
Papari濾波是一種非線性濾波,比一般的線性濾波器和非線性濾波器效果要好,能夠在保持邊緣和角落的情況下平滑圖像。圖1為原圖與幾種濾波方法的對比。其中,圖1(a)為原圖;圖1(b)為均值濾波,可明顯看出河道邊緣存在嚴(yán)重模糊且水波平滑效果不佳;圖1(c)為高斯濾波,邊緣保存但水面平滑未達(dá)到預(yù)期;圖1(d)為Papari濾波,可以看到保存了明顯的角落和邊緣,且河面區(qū)域?yàn)V波效果較好。

圖1 濾波效果對比圖
HED神經(jīng)網(wǎng)絡(luò)是一個(gè)基于VGG16網(wǎng)絡(luò)改進(jìn)而來的網(wǎng)絡(luò),VGG16本身是多個(gè)卷積池化層連接上全連接層和softmax層,HED神經(jīng)網(wǎng)絡(luò)則在此基礎(chǔ)上刪除了VGG16的全連接層和softmax層,僅保留卷積池化層。
輸入圖片經(jīng)過多次卷積和最大池化,取每次卷積的最后一層作為該網(wǎng)絡(luò)的外側(cè)輸出,這樣一共得到5個(gè)外側(cè)輸出。但是外側(cè)輸出的尺寸不一致,因此在網(wǎng)絡(luò)中對每個(gè)外側(cè)輸出進(jìn)行反卷積,使其擴(kuò)大到輸入的尺寸大小,并將這5層輸出進(jìn)行融合,得到融合層,則HED神經(jīng)網(wǎng)絡(luò)一共有6層輸出[15]。見圖2。

圖2 HED神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
由于邊緣提取中邊緣與非邊緣的像素點(diǎn)在數(shù)目上存在巨大差異,因此HED神經(jīng)網(wǎng)絡(luò)改進(jìn)了傳統(tǒng)的損失函數(shù),對邊緣與非邊緣的損失計(jì)算進(jìn)行相應(yīng)的加權(quán)。
HED神經(jīng)網(wǎng)絡(luò)的外側(cè)總損失函數(shù)為:
(1)

(2)
其中:β和1-β為加權(quán)參數(shù);Y-為ground truth中標(biāo)記為邊緣的像素集合;Y+為非邊緣的像素集合;Pr為由側(cè)邊輸出通過sigmoid函數(shù)計(jì)算得到的響應(yīng)值。
融合層的損失之計(jì)算為:
(3)
最終的優(yōu)化目標(biāo)函數(shù)為:
argmin(Lfuse(W,w,h)+Lside(W,w))
(4)
實(shí)驗(yàn)中使用的硬件平臺為64位 windows 10 操作系統(tǒng),內(nèi)存為32GB,GPU為VIDIA GeForce GTX 1080 Ti,編程語言為python,深度學(xué)習(xí)框架為TensorFlow,監(jiān)控?cái)z像機(jī)為海康威視智能球型攝像機(jī)。
本文使用BSDS500數(shù)據(jù)集訓(xùn)練了用于提取通用邊緣的HED模型。并通過在蘇州某河道上架設(shè)監(jiān)控?cái)z像頭來獲取河面的監(jiān)控視頻,以獲取不同環(huán)境、時(shí)間下的真實(shí)河道圖像,圖像的尺寸為1920*1080像素,數(shù)據(jù)集包含有6 546張圖像.
由于截取的圖像中存在眾多的類似圖像,因此從圖像數(shù)據(jù)集中挑選273張河道圖像進(jìn)行檢測試驗(yàn)。見圖3。

圖3 河道線檢測效果比較圖
對比canny算子、區(qū)域生長法、HED的檢測結(jié)果圖可以得出,邊緣檢測算子對于復(fù)雜環(huán)境下的邊緣檢測效果不佳,存在大量的偽邊緣;區(qū)域生長法的區(qū)域生長準(zhǔn)則需要人為調(diào)整,否則可能會產(chǎn)生生長失敗或者生長區(qū)域蔓延的河岸;而HED產(chǎn)生的結(jié)果圖相對清晰完整,易于提取出準(zhǔn)確的河道線,同時(shí)無需逐個(gè)站點(diǎn)調(diào)整參數(shù),能夠基本實(shí)現(xiàn)自適應(yīng)。
針對經(jīng)典圖像算法在河道邊緣檢測中河道線提取不準(zhǔn)確、實(shí)時(shí)性不高、魯棒性不強(qiáng)的情況,本文提出一種基于改進(jìn)HED提取河道線的方法。通過比較不同算法在不同場景采集的內(nèi)河河道圖像上河道線提取的效果可知,本文算法相比傳統(tǒng)算法具有更高的準(zhǔn)確性和魯棒性。本文算法在蘇州各河道圖像組成的驗(yàn)證集上達(dá)到正確率96.3%,平均每張圖像耗時(shí)220 ms。而且河道線短時(shí)間變化不大,滿足實(shí)時(shí)性要求,同時(shí)正確率較高。