黃繼爽,張 華,李永龍,趙 皓,王皓冉,馮春成
(1.西南科技大學信息工程學院,四川綿陽 621010;2.特殊環境機器人技術四川省重點實驗室(西南科技大學),四川綿陽 621010;3.清華四川能源互聯網研究院,成都 610213;4.水沙科學與水利水電工程國家重點實驗室(清華大學),北京 100084)
水工隧洞作為水利樞紐工程關鍵構筑物,具備水力發電、農業灌溉和泄洪等綜合效能,在我國各大水電站中發揮著重要作用。由于水工隧洞洞徑大、洞線長、地質環境復雜和施工技術難等特點,水工隧洞易產生裂縫、脫落和滲漏等高危缺陷[1]。因此,高精度、低延時的缺陷識別是水工隧洞工程安全運行的有力保障。
目前的水工隧洞缺陷識別以人工巡檢為主,主要采用鉆芯法、回彈法、紅外成像法和探地雷達法等[2],人工巡檢模式不僅受工況制約,而且巡檢結果具有較強主觀性與經驗依賴性,檢測周期往往以年為單位,很可能導致嚴重的隧洞運維事故。于是,有研究者提出使用圖像處理技術取代人工巡檢來對混凝土建筑物進行缺陷識別。姚學練等[3]基于色調、飽和度和亮度顏色空間對麻面圖像進行分析,根據分析結果繪制飽和度分量的灰度波動曲線,計算波峰波谷部分高度差的標準差得到用于圖像分割的最佳閾值,實現麻面的識別;王永會等[4]通過分數階傅里葉變換將裂縫圖像轉換為頻譜圖,在對頻譜圖進行增強處理后逆變換為增強的裂縫圖像,再使用Canny邊緣檢測算子實現路面裂縫識別。但傳統的圖像處理方法進行缺陷識別時需要手動設計特征及參數,計算步驟復雜,在更換背景后容易降低準確率,缺乏泛化能力。近年來,隨著機器人和人工智能等技術的迅速發展,具有高自動化、智能化水平的水利樞紐工程巡檢系統已成為新一代水利智能化的主要研究方向[5]。其中,以深度卷積神經網絡(Deep Convolutional Neural Network,DCNN)為代表的特征自動提取技術被廣泛應用于建筑物缺陷識別應用。王森等[6]將深度卷積神經網絡引入裂縫圖像識別中,通過增大圖像分辨率、加深網絡深度和添加更高尺度的反卷積層來補充局部細節,相比傳統圖像處理算法有更高的精度;陳波等[7]提出一種誤識別圖像再訓練的壩面裂縫識別網絡,該方法將原始數據給專家進行第一次標注,經第一輪訓練好后出現的誤識別圖像再由專家進行第二次細致標注,再次訓練優化后,取得較第一次更好的壩面裂縫識別效果;梁雪慧等[8]將傳統的圖像處理方法與深度卷積神經網絡相結合,使用雙邊濾波和Retinex圖像增強算法處理橋梁裂縫在特殊天氣和建筑物遮擋時光照不足的情況,再采用歸一化的卷積核改進深度卷積神經網絡,能夠區分橋梁裂縫和正常背景。Dung等[9]選取多種經典深度卷積神經網絡對校園建筑物裂縫圖像進行預訓練,將識別效果最好的網絡作為骨干網絡,在骨干網絡的基礎上增加編碼和解碼結構,實現裂縫進一步的精細識別。Feng等[10]提出一種基于殘差網絡的壩面裂縫識別方法,該方法在殘差網絡的基礎上增加四個跳躍分支用于連接網絡的淺層和深層,補充了部分語義信息,在壩面裂縫識別任務上取得了一定效果。然而,現有深度卷積神經網絡在混凝土建筑物缺陷識別應用上大都識別種類單一,面對水工隧洞低照度的復雜環境下缺陷多分類任務,特征提取能力依然不足,同時,現有深度模型在提升識別準確率時往往會成倍地增加卷積核數量,巨大的參數量導致了模型推理時間長的問題,限制了工程應用。
針對上述問題,本文提出一種水工隧洞動態特征蒸餾模型(Tunnel Network based on Dynamic Feature Distillation,TunnelNet-DFD)。在知識蒸餾框架下,根據水工隧洞缺陷圖像特點設計教師網絡TunnelNet-50(Tunnel Network of 50 layers)和 學 生 網 絡TunnelNet-18(Tunnel Network of 18 layers),采用深度曲線估計模塊、動態卷積模塊和動態特征蒸餾損失三種改進方法,主要工作如下:
1)將深度曲線估計網絡應用于水工隧洞場景,針對場景特點設計深度曲線估計模塊,優化不同光照情況下的隧洞缺陷圖片,借助深度曲線估計網絡的特征自動提取能力,避免了人工設定特征導致的背景依賴問題,能夠有效改善低照度數據質量且具有一定泛化能力。
2)設計一種加入注意力機制的動態卷積模塊,改進傳統靜態卷積,用于訓練教師網絡,能夠根據水工隧洞六類缺陷的不同特點對模型參數進行動態調整,提升了模型對水工隧洞缺陷特征的提取能力。
3)構造動態特征蒸餾損失,增加了知識蒸餾框架中的指導知識,通過鑒別器結構度量教師網絡和學生網絡動態卷積模塊輸出之間的動態特征距離,再經知識蒸餾后,作為學生網絡訓練損失函數時的動態特征先驗知識,使得最終模型克服了模型參數量過大導致推理時間過長的缺陷,同時獲得了更好的圖像語義表達能力。
4)搭建水工隧洞動態特征蒸餾模型,在同一數據集上,將本文方法與主流知識蒸餾方法進行比較,實驗結果表明,本文方法能夠在大幅降低模型參數量的同時保持高識別準確率,比現有方法更適用于水工隧洞應用場景下的裂縫、麻面、脫落、露筋、鈣化和滲漏六類缺陷的識別任務。
本文提出的水工隧洞動態特征蒸餾模型如圖1所示,主要包括深度曲線估計模塊、動態卷積模塊和動態特征蒸餾損失三部分。原始缺陷圖片首先通過深度曲線估計模塊進行低照度增強,然后動態卷積模塊對增強后的圖片進行特征提取,得到動態特征,最后在知識蒸餾框架下,通過動態特征蒸餾損失將教師網絡中的動態特征知識蒸餾到學生網絡中,提升了學生網絡的圖像語義特征表達能力且降低了模型參數量。動態特征蒸餾結構中的教師網絡TunnelNet-50、學生網絡TunnelNet-18基 于 殘 差 網 絡ResNet-50(Residual Network of 50 layers)、ResNet-18(Residual Network of 18 layers)[11]進行改進,并在殘差模塊中集成了壓縮和激勵網絡(Squeeze-and-Excitation Network,SENet)[12]中的注意力模塊。教師網絡和學生網絡之間的鑒別器結構用于度量兩者動態卷積模塊輸出之間的Wasserstein距離[13],該距離作為動態特征蒸餾損失增加了學生網絡的指導知識。訓練過程結合動態卷積模塊特點,將批次歸一化(Batch Normalization,BN)替換成實例歸一化(Instance Normalization,IN),以此提升動態卷積的特征提取性能。

圖1 水工隧洞動態特征蒸餾模型整體結構Fig.1 Overall structure of dynamic feature distillation model of hydraulic tunnel
水工隧洞內水體渾濁、附著淤積和光線昏暗導致缺陷圖像質量不足,通過如圖2所示深度曲線估計模塊能有效改善缺陷圖片的低照度情況。

圖2 深度曲線估計模塊結構Fig.2 Deep curveestimation module structure
在深度曲線估計網絡(Deep Curve Estimation Network,DCENet)[14]中加入了3個跳躍結構連接卷積層,用于補償語義信息,增強對光照特征的學習能力。區別于一般神經網絡圖像到圖像的映射,深度曲線估計模塊將任務重新定義為圖像特定曲線的估計問題,以弱光圖像為輸入、以高階曲線為輸出,所得曲線用于在輸入的動態范圍上進行逐像素調整,調整后獲得光線均勻且充足的圖像。深度曲線形式采取二次曲線以保證在梯度反向傳播過程中可微,將前一次得到的二次曲線輸出作為后一次的輸入,可得像素級光線增強曲線(Light-Enhancement curve,LE-curve)具體定義如下:

其中:x是像素坐標;n是用于控制曲率的迭代次數,使得LEn(x)能在增強后的LEn-1(x)基礎上繼續優化;A是與給定圖像大小一致的估計曲線參數圖,所包含的可訓練曲線參數能夠對每一個像素進行調整。
傳統靜態卷積對于所有樣本參數共享,而動態卷積針對單個樣本,具有數據依賴性[15]。通過在動態卷積中引入注意力機制,使得并行的卷積核以非線性方式聚合,具備更強的表示能力。動態卷積中的注意力機制關注不同卷積核對特征提取的貢獻程度,能通過訓練學習到相應權重。注意力動態聚合的過程定義如下:


所設計的動態卷積模塊基于注意力機制動態地聚合3個并行卷積核,從而生成對圖像內容自適應的動態卷積,則聚合權重函數定義如下:

其中:i(x)是3×3常規卷積所對應的注意力權重;j(x)是采用膨脹系數為1的空洞卷積所對應的注意力權重;k(x)是采用膨脹系數為2的空洞卷積所對應的注意力權重。三個并行的卷積核作用于圖像不同位置,但卷積核尺寸、輸入和輸出維度一致。
同理,偏差函數定義如下:

基于注意力機制的動態卷積模塊首先通過全局平均池化(Global Average Pooling,GAP)壓縮全局空間信息,然后通過兩層由激活函數ReLU連接的全連接層(Fully Connected layer,FC),緊接著通過激活函數Sigmoid增加非線性,之后的Softmax函數用于對3個并行卷積核的注意力權重進行歸一化,通過1次乘加運算得到一個表示能力更強的動態卷積,用于取代特征提取能力不足的傳統靜態卷積。因為動態卷積模塊針對不同的樣本會產生特異性的注意力權重,故而訓練過程不采用BN,而采用IN進行訓練,可得傳統靜態卷積模塊和動態卷積模塊結構對比如圖3所示。

圖3 傳統靜態卷積模塊和動態卷積模塊的結構對比Fig.3 Structure comparison of traditional statistic convolution moduleand dynamic convolution module
傳統知識蒸餾框架中,學生網絡缺乏對教師網絡淺層的學習,損失大量特征信息。本文提出的動態特征蒸餾損失引入位于教師網絡淺層的動態特征,使學生網絡獲得更多特異性的語義信息,通過師生網絡動態卷積模塊間的Wasserstein距離度量,定義如下:

由于卷積神經網絡難以直接計算式(5),將式(5)中d(x,y)看作成本函數,代表從x運輸到y的成本,即要在所有運輸方案中,找到式(5)中?γ(x,y)d(x,y)dxdy這一總運輸成本的最小方案。看作線性規劃問題后,根據對偶定理將求下界的問題轉換為等價的求上界問題,可得式(5)的一個對偶形式如下:

根據f(x)+g(x)≤d(x,y)可以得到:

即g(x)≤f(x),于是有:

由式(8)知,當g(x)=-f(x)時,式(6)的最大值不會小于原來的最大值,可令g(x)=-f(x),從而:

由于p和q都是概率分布,可以將式(9)寫成采樣形式如下:

至此,式(10)已符合卷積神經網絡的計算要求,再通過圖1中的鑒別器來實現動態特征的傳遞。在鑒別器最后softmax層中引入軟目標,得到動態特征的蒸餾形式如下:

其中:qi是預測屬于第i類的概率;zi是第i類通過網絡最后一層的輸出值;zj是第j類通過網絡最后一層的輸出值;n是缺陷類別總數;T是溫度系數,設置為經驗值3[16]。
本文提出的損失函數包括學生網絡分類損失、師生網絡最末層知識蒸餾損失、師生網絡動態特征蒸餾損失和一個防止過擬合的L2正則化項,定義如下:


相比傳統知識蒸餾結構,動態特征蒸餾結構在增加深度曲線估計模塊和動態卷積模塊的基礎上,通過鑒別器傳遞教師網絡的動態特征知識給學生網絡,增加特征提取能力更強的指導知識。動態特征知識由動態卷積提取圖像的特征得到,教師網絡動態特征知識傳遞的方法采用知識蒸餾算法,學生網絡接受的指導知識即動態特征蒸餾損失,該損失在動態特征蒸餾模型訓練過程中作為損失函數的一部分優化模型的特征表達能力,可得傳統知識蒸餾結構和動態特征蒸餾結構對比如圖4所示。

圖4 傳統知識蒸餾結構和動態特征蒸餾結構對比Fig.4 Comparison of traditional knowledge distillation structureand dynamic feature distillation structure
為驗證本文提出水工隧洞缺陷識別方法的有效性,設計一系列消融實驗分別評估深度曲線估計模塊、動態卷積模塊和動態特征蒸餾損失的性能,再與相關主流方法進行對比實驗,最后進行參數分析。
實驗所選取的缺陷數據集由清華四川能源互聯網研究院提供,通過搭載多種傳感器的機器人在四川某水電站水工隧洞內進行采集[17]。該數據集共12 000張分辨率為224×224的RGB(Red-Green-Blue color mode)圖像,涉及裂縫、麻面、脫落、露筋、鈣化和滲漏六個缺陷類別,每個類別包含2 000張圖像樣本,所有樣本均由水利專家標注制作,數據集具體類別示例如圖5所示。實驗過程中訓練集、驗證集和測試集的選取比例為6∶2∶2,其中訓練集和驗證集不放回隨機抽取,剩余為測試集。

圖5 水工隧洞缺陷數據集具體類別示例Fig.5 Specific type samples in hydraulic tunnel defect dataset
為評估本文方法的有效性,所有實驗的硬件設備和軟件環境均保持一致。硬件設備中,中央處理器(Central Processing Unit,CPU)和圖像處理器(Graphics Processing Unit,GPU)分別選用的型號為Intel Core i5-8400和NVIDIA GTX 1060Ti;軟件環境中,本文實驗在Windows 10操作系統上進行,基于Pytorch 1.5框架搭建深度學習模型,統一計算設備架構(Compute Unified Device Architecture,CUDA)和編程語言分別選用CUDA 10.1和Python 3.8。
實驗中缺陷識別性能選取準確率、宏查準率(macro-P)、宏查全率(macro-R)和宏F1分數(macro-F1)作為評價指標[18],具體定義分別如下:

其中:n為缺陷類別總數;TPi是將第i類中正類預測為正類的正確數;FPi是將第i類中負類預測為正類的誤報數;FNi是將第i類中正類預測為負類的漏報數。
實驗的實時性通過浮點運算次數(FLoating-point OPerations,FLOPs)[19]和表示測試集單個樣本平均耗時的推理時間來進行評估,在卷積層中,FLOPs的計算如下:

其中:H、W和Cin是輸入特征圖的高度、寬度和通道數;K是卷積核的尺寸;Cout是輸出通道數。
在全連接層中,FLOPs的計算如下:

其中:I是輸入維度;O是輸出維度。
TunnelNet-DFD模型的訓練過程通過損失值和準確率變化來進行評估,分別如圖6(a)和圖6(b)所示。

圖6 訓練過程損失值與準確率變化趨勢Fig.6 Trends of loss and accuracy during training
從圖6中可看出,隨著迭代輪數增加,損失值快速下降并在50輪后基本達到收斂,準確率最高達到96.15%,整體上,驗證集效果略低于訓練集,沒有發生過擬合的現象,說明模型具備良好的泛化能力和穩定的識別能力。
為進一步分析每個類別的識別情況,如圖7采用混淆矩陣直觀地呈現每個類別缺陷識別的預測情況,橫軸表示預測類別、縱軸表示真實類別,矩陣單元值表示識別該類別的準確率,顏色越深表示準確率越高。從圖7可以觀察到模型能有效區分水工隧洞缺陷的6個類別。對露筋的缺陷識別能力最強,所預測的400張露筋對象全部正確;鈣化和麻面分別僅有1張和2張圖像被識別錯誤;裂縫和脫落存在少量的誤分現象,主要原因是機器人在采集數據過程中對部分圖像局部補光過度,而補光過度的圖像在訓練樣本中所占數量較少;滲漏的識別率相對較低,主要原因是滲漏的發生往往源于裂縫,存在交疊現象。

圖7 缺陷識別混淆矩陣Fig.7 Confusion matrix of defect recognition
為驗證本文所提出的各項改進措施對模型性能的影響,在改進前的ResNet-50基礎上添加全部措施得到最終的本文方法,通過控制變量去掉各項措施設計消融實驗,具體如表1所示。
從表1中可看出,對于評價指標macro-P、macro-R和macro-F1,深度曲線估計模塊分別提升2.46、1.93和2.2個百分點;動態特征蒸餾損失分別提升3.34、4.61和3.98個百分點;動態卷積模塊和動態特征蒸餾損失的共同作用對模型性能貢獻最大,分別提升8.27、7.01和7.64個百分點。整體上,本文方法的macro-F1比改進前的殘差網絡提升了8.99個百分點,達到96.11%,充分說明本文提出的各項改進措施對水工隧洞缺陷識別任務性能有針對性的提升。

表1 不同改進措施對模型性能影響評估Tab.1 Evaluation of impact of different improvement measures on model performance
在對比主流識別網絡中,為更客觀地比較所設計教師網絡TunnelNet-50與主流方法的性能,DyNet(Dynamic convolution neural Network)[20]和SENet均基于ResNet-50骨架網絡進行搭建,同時,非動態卷積方法采用更利于其性能提升的BN方法,具體實驗結果如表2所示。

表2 不同圖像識別方法量化指標比較 單位:%Tab.2 Comparison of quantitative indicators of different image recognition methods unit:%
從表2可看出:針對ResNet網絡的改進帶來明顯的效果提升,學生網絡TunnelNet-18和教師網絡TunnelNet-50相較改進前macro-F1分別提升5.42和10.43個百分點,本文設計的教師網絡在macro-P、macro-R和macro-F1評價指標上與前沿圖像識別網絡對比中,相比DyNet分別提升2.9、4.87和3.88個百分點,相比SENet分別提升1.57、3.09和2.33個百分點,結果表明本文設計的教師網絡相對其他主流圖像識別網絡更有優勢。
在對比主流知識蒸餾模型中,除使用正則化表達的自學習知識蒸餾(Teacher-free Knowledge Distillation,Tf-KD)[21],所有蒸餾的教師網絡均選用TunnelNet-50,學生網絡均選用TunnelNet-18,其中,傳統知識蒸餾(Knowledge Distillation,KD)方法僅對卷積層末層知識進行蒸餾,互信息知識蒸餾(Variational Information Distillation,VID)[22]增加對常規卷積層的中間特征值進行蒸餾。在選用的比較算法中,KD是最早提出知識蒸餾概念的算法,能夠作為評估本文方法性能的基準,而VID和Tf-KD是近年知識蒸餾領域最新的研究成果,這三種算法作為目前知識蒸餾結構的典型方法,與本文方法進行比較時具有一定的代表性。本文方法使用動態卷積中間特征值取代VID中的靜態卷積中間特征值,相比Tf-KD減少指導知識的做法反而增加動態特征指導知識,具體實驗結果如表3所示。

表3 不同知識蒸餾方法量化指標比較 單位:%Tab.3 Comparison of quantitative indicatorsof different know ledge distillation methods unit:%
由表3可知,本文提出的水工隧洞缺陷識別動態特征蒸餾模型TunnelNet-DFD在macro-P、macro-R和macro-F1評價指標上比傳統知識蒸餾算法KD分別高出3.09、4.79和3.95個百分點,說明本文方法在傳統知識蒸餾算法上已經有很大提升。在macro-F1上相比最新蒸餾算法VID和Tf-KD分別高出3.17和1.6個百分點,具有最優結果。
為驗證本文方法的模型壓縮性能,從模型容量、計算量、推理時間三方面進行評估。實驗結果如表4所示,本文方法的模型參數量和推理時間為原有殘差網絡的1/2和1/6,FLOPs降至1.83×109,同時優于其他主流教師網絡,能適應對實時性要求較高的工程應用場景。

表4 不同主流教師網絡模型壓縮性能對比Tab.4 Comparison of model compression performanceof different mainstream teacher networks
針對卷積神經網絡“黑盒”模型難以解釋的問題,本文采用如圖8所示的類激活熱力圖Grad-CAM++(Gradient-based Class Activation Mapping++)[23]對水工隧洞缺陷識別結果進行可視化并對比相關主流算法,通過溫度值高低反映模型對圖像特征的敏感程度。
從圖8中可看出,DyNet網絡識別到的特征過于單一,SENet對于裂縫和脫落缺陷的特征提取能力較差,其余效果良好,而VID和Tf-KD沒有抓住缺陷的直觀特征。本文提出的TunnelNet-DFD模型能有效提取每一種缺陷類別的關鍵特征,符合專家評判標準,相比其他圖像識別主流方法具有明顯優勢。

圖8 不同缺陷識別方法的可視化結果Fig.8 Visualization results of different defect recognition methods
本文提出的損失函數中,超參數(α、β、γ)沿用傳統知識蒸餾方法中認為學生網絡分類損失與師生網絡最末層知識蒸餾損失同等重要的思想,在三者總和為1的前提下設置(α=0.1、β=0.1、γ=0.8)、(α=0.2、β=0.2、γ=0.6)、(α=0.3、β=0.3、γ=0.4)和(α=0.4、β=0.4、γ=0.2)四組不同的參數實驗,用于驗證不同參數設置對缺陷識別模型性能的影響。
四組參數實驗的具體情況如圖9所示。

圖9 不同參數設置對模型性能的影響Fig.9 Influenceof different parameter settingson model performance
當α和β權重小于0.2時,模型整體性能偏低,隨著兩者權重增大,模型性能逐漸提升,當γ達到0.2時最優,結合表1可知,進一步降低γ值導致的動態卷積模塊和動態特征蒸餾損失失效會降低模型性能,這也說明動態卷積模塊和動態特征蒸餾損失對模型性能具有重要影響。綜合圖9結果,本文參數(α、β、γ)選擇第四組(α=0.4、β=0.4、γ=0.2),此時模型達到最好效果。
本文對主流圖像識別網絡ResNet進行改進,提出一種基于動態特征蒸餾的缺陷識別方法,并應用于水工隧洞環境下的缺陷識別任務。主要創新點包括:深度曲線估計模塊、動態卷積模塊和動態特征蒸餾損失,分別用于改善低照度圖像質量、提升特征提取能力和降低模型推理時間。本文方法在四川某水電站水工隧洞缺陷數據集上的準確率、macro-P、macro-R和macro-F1分別達到96.15%、96.08%、96.14%和96.11%,能夠有效提取水工隧洞場景中的缺陷特征,同時實時性高,優于其他主流圖像識別算法,具有重要的工程應用價值。最后,由于實際場景中缺陷種類繁多和交疊等問題,在未來的工作中,將擴充水工隧洞缺陷類別,探索模型剪枝和多任務學習等優化方法,進一步提高水工隧洞缺陷識別模型的準確率、實時性和泛化能力。