呂 兵,劉玉賢,葉紹澤,閆 臻
(深圳市勘察研究院有限公司,廣東 深圳 518026)
排水管網(wǎng)是城市的重要基礎(chǔ)設(shè)施之一,也是城市地下空間的重要組成部分。排水管網(wǎng)的安全運行直接關(guān)系到城市的公共安全和環(huán)境保護。排水管網(wǎng)的長期運行,會造成管道的結(jié)構(gòu)性和功能性等缺陷,從而造成道路的塌陷,地下水污染,城市內(nèi)澇等重大安全隱患。如2010年5月7日,廣州因暴雨引起內(nèi)澇,導(dǎo)致全市重大經(jīng)濟損失,6人因洪澇次生災(zāi)害死亡。因此有必要對排水管道內(nèi)部信息進行定期測繪,對測繪信息中檢測到的缺陷進行實時記錄及維護維修。
如圖1所示,管道閉路電視(closed circuit television,CCTV)機器人是一種廣泛使用的排水管道內(nèi)部信息測繪及缺陷檢測技術(shù)。CCTV管道機器人對排水管道缺陷的檢測作業(yè)分為外業(yè)和內(nèi)業(yè)。首先外業(yè)作業(yè)人員通過控制器,控制機器人在排水管道內(nèi)爬行,同時控制攝像頭的旋轉(zhuǎn)、變焦及燈光照明燈,使用閉路電視拍攝排水管道內(nèi)部視頻圖像,并通過有線傳輸方式,將拍攝到的視頻傳入存儲設(shè)備記錄下來;同時視頻每一幀記錄有管道地址、拍攝時間、機器人移動距離等信息。對于外業(yè)作業(yè)拍攝到的排水管道內(nèi)視頻,由內(nèi)業(yè)作業(yè)人員通過觀看視頻,判讀管道中的缺陷,記錄缺陷在管道中的位置及缺陷在視頻中發(fā)生的時間等信息,并生成排水管道檢測報告。然而該人工判讀方式的內(nèi)業(yè)作業(yè)方法,需要耗費大量人力,如對于錄制的80 h視頻,即使8倍播放速度,也需要10 h。另外,該內(nèi)業(yè)作業(yè)方法的結(jié)果主觀性較強,其依賴內(nèi)業(yè)作業(yè)人員的經(jīng)驗及工作狀態(tài),對于經(jīng)驗不豐富或疲勞的作業(yè)人員容易出現(xiàn)誤檢、漏檢等情況。
盡管目前也有許多專家和學(xué)者提出使用圖像處理的方法來自動識別CCTV視頻中的管道缺陷,如文獻(xiàn)[1]使用形態(tài)學(xué)方法來檢測管道裂縫;文獻(xiàn)[2]除了使用形態(tài)學(xué)方法檢測裂縫外,還使用Gabor濾波和亮度矯正分別用來檢測沉積物和錯位。但是這類傳統(tǒng)的圖像處理方法目前仍不能滿足管道缺陷檢測的自動化需求。一方面是由于管道缺陷種類繁多,單種算法很難有效解決多類缺陷的檢測。如果集成多種算法同時檢測,勢必會降低檢測效率,并導(dǎo)致開發(fā)運維與成本過高。另一方面是由于管道環(huán)境復(fù)雜,基于傳統(tǒng)圖像處理的檢測方法的精度有限。
為了解決CCTV視頻中的管道缺陷自動化檢測,本文提出了基于卷積神經(jīng)網(wǎng)絡(luò)的CCTV視頻中排水管道缺陷的智能檢測方法。自2012年基于大規(guī)模數(shù)據(jù)驅(qū)動的深度卷積神經(jīng)網(wǎng)絡(luò)AlexNet[3]在圖像識別中取得了巨大成功之后,基于深度學(xué)習(xí)的人工智能技術(shù)得到了廣泛深入的研究,取得了巨大進步,推動了目標(biāo)檢測[4]、語義分割[5]、視頻行為識別[6]等各個領(lǐng)域的發(fā)展,也提高了工業(yè)生產(chǎn)的自動化和智能化。本文結(jié)合排水管道的CCTV作業(yè)流程及拍攝到的視頻缺陷特點,提出了一種基于深度學(xué)習(xí)的排水管道缺陷檢測方法,最后通過試驗證明了該算法的有效性,其在缺陷的識別率和召回率,以及識別速度上均滿足了排水管道缺陷智能檢測的需要,同時基于該方法開發(fā)的軟件已經(jīng)在深圳市的排水管道檢測中得到廣泛的應(yīng)用和驗證。
卷積神經(jīng)網(wǎng)絡(luò)[7](convolutional neural network,CNN)是一種前饋神經(jīng)網(wǎng)絡(luò),在神經(jīng)網(wǎng)絡(luò)中引入了局部感受野、卷積、池化等思想[8]。圖2所示為一個典型的卷積神經(jīng)網(wǎng)絡(luò),由卷積層,全連接層,池化層等組成。
卷積層的參數(shù)是由一些可學(xué)習(xí)的卷積核集合構(gòu)成的。每個卷積核在空間上(寬度和高度)都比較小。在每個卷積層上,會有多個卷積核,在前向傳播時,讓每個卷積核都在輸入數(shù)據(jù)的寬度和高度上滑動,然后計算整個卷積核和輸入數(shù)據(jù)任一處的內(nèi)積。當(dāng)卷積核沿著輸入數(shù)據(jù)的寬度和高度滑過后,再經(jīng)過激活函數(shù),會生成一個二維的特征圖(feature map)。在第i層,第j個卷積核在深度為N的輸入的(x,y)位置上,該卷積和激活的操作可表示為
(1)
式中,φ為激活函數(shù);P和Q為卷積核的高度和寬度。經(jīng)過卷積和激活后生成的特征圖給出了在每個空間位置處卷積核的反應(yīng),每個卷積核都會生成一個不同的二維特征圖。將每個卷積核生成的不同特征圖映射在深度方向上層疊起來就生成了輸出數(shù)據(jù)。池化層用于降低數(shù)據(jù)體的空間尺寸,減少網(wǎng)絡(luò)中參數(shù)的數(shù)量,使得計算資源耗費變少,也能有效控制過擬合。全連接層同卷積層一樣,與激活層一起形成神經(jīng)元結(jié)構(gòu)。不同于卷積層的局部連接,池化層與前后兩層的神經(jīng)元是完全成對連接的。損失層在網(wǎng)絡(luò)參數(shù)訓(xùn)練的過程中,放在網(wǎng)絡(luò)的最后一層,用來計算前向傳播的誤差。Softmax層則是在測試過程中,放在網(wǎng)絡(luò)的最后一層,用于獲得最終的預(yù)測得分。
卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練或?qū)W習(xí),是指卷積層和全連接層的參數(shù)優(yōu)化,其有信號前向傳播和誤差反向傳播[9]組成。在網(wǎng)絡(luò)的學(xué)習(xí)過程中,信號由輸入層進入神經(jīng)網(wǎng)絡(luò),通過隱藏層神經(jīng)元的計算,由輸出層輸出結(jié)果,并計算輸出與期望的誤差。再將誤差由輸出層向輸出層反向傳播,計算獲得的每層的梯度,以目標(biāo)的負(fù)梯度方向,根據(jù)一定的策略來對各層神經(jīng)元的連接權(quán)重和偏置進行更新。這種基于信號正向傳播與誤差反向傳播的各層參數(shù)更新,是迭代進行的,此迭代一直進行到誤差減小到可接受的程度或進行到預(yù)先設(shè)定的學(xué)習(xí)迭代次數(shù)為止,這個迭代過程就是神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程。其中的參數(shù)更新策略即網(wǎng)絡(luò)的優(yōu)化算法,常用的優(yōu)化算法有SGD[10],Adam[11]等。
采集到的CCTV視頻圖像,分為非作業(yè)場景和作業(yè)場景,同時作業(yè)場景中,根據(jù)鏡頭角度,又分為全局圖像和局部圖像。全局圖像是指CCTV機器人的攝像頭朝著前進方向獲取的完整管道圖像,局部圖像則是CCTV機器人的攝像頭旋轉(zhuǎn)獲取的管道局部圖像。全局作業(yè)圖像和局部作業(yè)圖像中均可能拍攝到管道缺陷,因此本文將CCTV視頻圖像分為如圖3所示的5種類別:非作業(yè)圖,全局缺陷圖,全局正常圖,局部缺陷圖,局部正常圖。因此本文將排水管道缺陷識別問題設(shè)計為一個有監(jiān)督的圖像分類問題。通過大量收集這5類圖像,構(gòu)建大規(guī)模數(shù)據(jù)集,將卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練為圖像分類器,對CCTV中的圖像進行分類,如果圖像被卷積神經(jīng)網(wǎng)絡(luò)識別為全局缺陷圖或局部缺陷圖,則說明該圖像幀中包含管道缺陷。
本文選取了牛津大學(xué)可視化幾何實驗室設(shè)計的VGG結(jié)構(gòu)[12]的卷積神經(jīng)網(wǎng)絡(luò),并對其進行改進,用于排水管道視頻中的缺陷圖像識別。VGG卷積神經(jīng)網(wǎng)絡(luò)獲得了2014年ILSVRC圖像識別大賽的亞軍,是一種重要的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),具有較強的泛化能力,且具有結(jié)構(gòu)簡單、容易訓(xùn)練等特點。VGG包括VGG-16、VGG-19等網(wǎng)絡(luò)結(jié)構(gòu)。相對于VGG-19,VGG-16的網(wǎng)絡(luò)層數(shù)少三層,因此網(wǎng)絡(luò)參數(shù)也相應(yīng)較少。原生VGG-16結(jié)構(gòu)包含16個卷積層或全連接層,卷積層分為5組,前兩個組包含兩個卷積層,后三組包含3個卷積層,所有卷積層均使用3×3大小的卷積核,5組卷積層的卷積數(shù)量分別為64、128、256、512、512,每組之后加入一個池化層,用于低數(shù)據(jù)的空間尺寸,在經(jīng)過卷積和池化之后,有3個全連接層。前兩個全連階層有4096個神經(jīng)元,VGG最初用于1000類的圖像的分類任務(wù),因此最后一個全連接層具有10 000個神經(jīng)元。如前所述,本文對于排水管道缺陷的識別問題設(shè)計為一個5中類別的圖像分類任務(wù),因此需要將最后一個全連接層設(shè)置為5個神經(jīng)元,這樣數(shù)據(jù)經(jīng)過最后兩個全連階層,圖像特征直接從4096維降到5維,本文在最后兩個全連接層之間加入一個具有1024個神經(jīng)元的新的全連階層,使特征維度下降的過程中有個過渡,以保留更有效的信息,從而提高分類器的能力。本文將用于管道檢測的改進后的VGG-16稱為VGG-Sewer。
對于新建的具有1024個神經(jīng)元的全連階層,該層每個神經(jīng)元的輸出用MP神經(jīng)元模型表示為
式中,fc7i為前一全連階層的輸出,即該層輸入;wi則為對應(yīng)的輸入權(quán)重;φ是激活函數(shù),在全連階層和式(1)表示的卷積層中,激活函數(shù)均使用修正線性單元激活函數(shù)ReLU[13](rectified linear unit),表示為
對于修改后的最后一個全連階層,具有5個神經(jīng)元,該層每個神經(jīng)元的輸出用MP神經(jīng)元模型表示為
式中,fcnewi為新建全連階層的輸出,即該層輸入;wi為對應(yīng)的輸入權(quán)重。
卷積神經(jīng)網(wǎng)絡(luò)的輸入圖像最終獲得的得分為
VGG網(wǎng)絡(luò)修改后最終獲得的排水管道缺陷檢測網(wǎng)絡(luò)VGG-Sewer可視化如圖4所示,使用改網(wǎng)絡(luò)進行訓(xùn)練和作業(yè)的流程如圖5所示。
本文基于卷積神經(jīng)網(wǎng)絡(luò)的有監(jiān)督圖像識別任務(wù),需要構(gòu)建大規(guī)模的標(biāo)注圖像用于網(wǎng)絡(luò)的訓(xùn)練。在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中一般需要準(zhǔn)備均勻的訓(xùn)練樣本,即訓(xùn)練樣本中各類別的圖像比例相等。在管道缺陷識別的需求中,希望不遺漏缺陷圖片,即提高缺陷的召回率,因此在訓(xùn)練樣本中提高缺陷圖像的比例,使全局缺陷圖、全局正常圖、局部缺陷圖、局部正常圖和非作業(yè)圖的比例約為2∶1∶2∶1∶1,以使卷積神經(jīng)網(wǎng)絡(luò)能夠?qū)θ毕莞用舾?,具有更強的對缺陷特征激活的能力。最終使用深圳市近5年的管道檢測圖像構(gòu)建了數(shù)據(jù)庫,包含22 444張全局缺陷圖,11 255張全局正常圖,22 362張局部缺陷圖,11 581張局部正常圖以及10 395張非作業(yè)圖。其中每一類圖像選擇2000張作為測試集,剩余的作為訓(xùn)練集用于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。
對VGG-Sewer的訓(xùn)練,使用預(yù)訓(xùn)練模型微調(diào)的方法。使用牛津大學(xué)提供的VGG-16在大規(guī)模圖像數(shù)據(jù)庫ImageNet[14]上預(yù)訓(xùn)練模型對所有卷積層和前兩個全連階層進行初始化,對最后一個全連階層以及新加入的1024個神經(jīng)元的全連階層進行隨機初始化。使用SGD優(yōu)化算法對本文的VGG-Sewer網(wǎng)絡(luò)進行訓(xùn)練。
使用加州伯克利大學(xué)開發(fā)的深度學(xué)習(xí)平臺Caffe[15]對本文的VGG-Sewer網(wǎng)絡(luò)進行訓(xùn)練,將學(xué)習(xí)率設(shè)置為0.000 01,經(jīng)過每2萬次迭代將學(xué)習(xí)率下降為原來的1/10,在10萬次迭代時停止學(xué)習(xí)。圖6是訓(xùn)練過程中的損失函數(shù)結(jié)果。
本文的排水管道缺陷檢測設(shè)計為一個分類任務(wù),分類任務(wù)常用卷積準(zhǔn)確率來評估算法模型。如前所述,排水管道缺陷中更關(guān)注缺陷的召回率,因此本文使用準(zhǔn)確率和缺陷召回率來對本文方法進行評估,其分別定義如下
識別率=正確識別的樣本數(shù)/所有的樣本數(shù)
缺陷召回率=正確識別的缺陷樣本數(shù)/所有缺陷樣本數(shù)
其中,缺陷樣本包括全局缺陷樣本和局部缺血樣本。對于使用訓(xùn)練樣本完成訓(xùn)練的VGG-Sewer,在如前所述的10 000張測試樣本上進行測試,使用識別率和缺陷召回率進行評估。如圖7所示的排水管網(wǎng)中三四級缺陷比一二級缺陷更容易造成危害且急需維修,因此需對其更加關(guān)注,試驗中也對測試樣本中的634張三四級缺陷進行了單獨評估,試驗結(jié)果見表1,缺陷樣本的召回率高于所有樣本的準(zhǔn)確率1.93%,這也符合前述設(shè)計:通過增加缺陷樣本在訓(xùn)練集中的比例,以使卷積神經(jīng)網(wǎng)絡(luò)對缺陷特征具有更強的激活能力來提高缺陷的召回率。同時也可以看到缺陷的召回率達(dá)到了87.26%,其中三四級缺陷的召回率達(dá)到了95.11%。
表1 VGG-Sewer模型評估值 (%)
本文提出的基于卷積神經(jīng)網(wǎng)絡(luò)的排水管道檢測,除了讀取CCTV視頻所需要的內(nèi)存之外,VGG-Sewer網(wǎng)絡(luò)模型對GPU內(nèi)存消耗很大,VGG-Sewer網(wǎng)絡(luò)模型中共計150 MB個參數(shù),需要消耗600 MB的GPU的內(nèi)存。本文方法在計算速度上,試驗測得在Nvidia GTX 1050顯卡上可達(dá)20 ms/幀的速度。
基于本文算法開發(fā)了一套智能排水管道缺陷識別軟件,如圖8所示。該軟件已經(jīng)在深圳的排水管道缺陷檢測中得到了應(yīng)用,本文以龍崗區(qū)布吉河項目為例對本文識別算法進行評估,不同于3.2節(jié)中的測試集圖像樣本的評估,在生成作業(yè)采集到的視頻中,一個缺陷在視頻中會持續(xù)多幀,對于一個缺陷的多幀,檢測到一幀為缺陷,則該缺陷即被認(rèn)為成功召回,為了區(qū)分3.2結(jié)中的缺陷召回率,本節(jié)的召回率稱為缺陷實例的召回率。在布吉河項目中,采集到的367段視頻,通過人工標(biāo)注,共計209個缺陷,其中三四級缺陷48個,通過該智能識別軟件召回到177個缺陷,缺陷實例的召回率達(dá)到84.6%,其中三四級缺陷召回45個,缺陷實例的召回率達(dá)到93.75%。
本文結(jié)合排水管道的CCTV測繪作業(yè)流程及拍攝到的視頻缺陷特點,提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的CCTV視頻中排水管道缺陷的檢測方法,對網(wǎng)絡(luò)的選型和改進,網(wǎng)絡(luò)的訓(xùn)練等均進行了研究。該方法極大地提高了排水管道缺陷檢測的智能化和自動化,節(jié)省了內(nèi)業(yè)作業(yè)的人力,同時滿足城市排水管道缺陷檢測的需求?;谠摍z測方法開發(fā)的軟件,在深圳市的排水管網(wǎng)缺陷檢測中得到了使用,獲得了驗證和認(rèn)可。雖然該方法取得了一定的進展,但仍有很多改進工作可以開展:目前的訓(xùn)練集包含一些老舊設(shè)備采集到的圖像,這些設(shè)備提取到的圖片特征與近些年的新設(shè)備提取到的圖片特征差別較大,而這些老設(shè)備已經(jīng)淘汰不再使用,老設(shè)備提取的圖片在訓(xùn)練集中已經(jīng)成為噪聲,需要去除。同時在以后的作業(yè)中,將收集該法識別錯誤的圖片加入訓(xùn)練集對網(wǎng)絡(luò)模型進行再訓(xùn)練,以提高模型的識別性能。