劉 超, 許木南, 曹思嫻, 牛圣堯, 朱安琪
(同濟大學(xué) 土木工程學(xué)院,上海 200092)
隨著中國基建的高速發(fā)展,很多建筑、橋梁等基礎(chǔ)設(shè)施不可避免地出現(xiàn)裂縫病害。裂縫識別向來是結(jié)構(gòu)檢測的重要內(nèi)容[1]。隨著計算機技術(shù)的普及與發(fā)展,傳統(tǒng)人工巡檢的弊端逐漸顯露[2],基于人工智能的裂縫檢測技術(shù)逐漸成為研究熱點。苑瑋琦等[3]和周穎等[1]基于計算機視覺的裂縫檢測技術(shù),提出利用計算機視覺技術(shù)與消費級照相機,在識別裂縫區(qū)域的同時,測量裂縫寬度。深度學(xué)習(xí)的發(fā)展更使得計算機檢測裂縫的準確率得到了大幅提升。Cha等[4]和Gibb 等[5]先后使用卷積神經(jīng)網(wǎng)絡(luò)對混凝土裂縫進行檢測,成功解決了裂縫檢測的定位問題,諸多團隊對該檢測方法進行了研究驗證與算法優(yōu)化。其中,李良福等[6]結(jié)合滑動窗口算法建立的裂縫分類模型,其識別準確率高達97.9%。但這樣的技術(shù)發(fā)展也為深度學(xué)習(xí)前期所需的數(shù)據(jù)集標(biāo)注提出了更高的要求。
深度學(xué)習(xí)的準確性往往依托于海量訓(xùn)練數(shù)據(jù),但人工標(biāo)注的主流數(shù)據(jù)集標(biāo)注方式需要巨大的人工成本[7]?,F(xiàn)階段,土木工程領(lǐng)域的相關(guān)成果多采用自行標(biāo)注數(shù)據(jù)集的方式,且標(biāo)注結(jié)果不公開。為減少研究前期因數(shù)據(jù)集標(biāo)注而產(chǎn)生的時間和人力投入,融入人工智能并逐步提高其占比是必然的發(fā)展趨勢[8]。而數(shù)據(jù)標(biāo)注在計算機領(lǐng)域的測試都是基于已公開的數(shù)據(jù)集,目前數(shù)據(jù)集快速標(biāo)注算法主要為半自動標(biāo)注與弱監(jiān)督學(xué)習(xí)兩大方面。半自動數(shù)據(jù)標(biāo)注的模式大多需要兩次人工介入[9]。而弱監(jiān)督學(xué)習(xí)無法獲得逐像素點的標(biāo)注信息[10],且標(biāo)注效果也不甚理想,Wang等[11]提出的弱監(jiān)督語義分割精度只有65.7%。同時,鑒于現(xiàn)有標(biāo)注任務(wù)不夠細化[5]且受不同領(lǐng)域圖像標(biāo)注專業(yè)性和復(fù)雜性的影響,此類成果在土木工程領(lǐng)域的應(yīng)用存在明顯的滯后性。
考慮到現(xiàn)有的裂縫識別算法大多基于理想狀況,缺乏對復(fù)雜環(huán)境的適應(yīng)性,難以滿足工程應(yīng)用的實際需求,故對裂縫數(shù)據(jù)集的標(biāo)注算法進行探究,提出將人工檢測與計算機視覺相融合的低監(jiān)督快速標(biāo)注方法。
計算機視覺對裂縫的識別是減少裂縫標(biāo)注過程中人工工作量的重要基礎(chǔ),同樣對裂縫檢測的精度起決定性作用,其框架流程如圖1所示。
圖1 基于計算機視覺的裂縫檢測流程Fig. 1 Procedures of crack detection based on computer vision
因裂縫及其背景的像素值多呈現(xiàn)黑、白、灰3種顏色[12],圖像各顏色通道對裂縫檢測的影響不大,故先將圖像轉(zhuǎn)化為灰度圖像以減少計算機工作量,再通過Binary 閾值化操作將灰度圖像轉(zhuǎn)換為二值圖像,其公式為
式中:dst(x,y)為輸出圖像像素點坐標(biāo);src(x,y)為輸入灰度圖像像素點坐標(biāo);maxV為設(shè)置的最大值,常為255,以得到黑白輸出圖像。
如圖2 所示,為減小圖像拍攝亮度和對比度對裂縫檢測的影響,采用自適應(yīng)閾值二值化算法。在灰度圖像的直方圖中遍歷閾值0~255,小于等于該閾值的像素點設(shè)為背景,大于該閾值的像素點設(shè)為前景;分別計算背景和前景像素個數(shù)所占總像素個數(shù)的比例w1(t)、w2(t)和像素平均值,得到像素標(biāo)準差σ1、σ2;最后計算類間方差,使類間方差最大的閾值即為最佳閾值。圖2b為其二值化結(jié)果。其中,類間方差計算公式為
圖2 基于計算機視覺的裂縫檢測結(jié)果Fig. 2 Result of crack detection based on computer vision
而后通過圖像模糊,在保存裂縫特征的前提下盡可能地消除背景噪聲對裂縫檢測的影響。圖像卷積運算是常用的去噪方法之一[1]。其中,中值濾波可將每一像素點的灰度值設(shè)置為該點某鄰域窗口內(nèi)的所有像素點灰度值的中值,不涉及最值問題,不受噪聲影響,對消除椒鹽噪聲的處理效果較好,在處理邊緣特征時也具有優(yōu)勢,如圖2c所示。其公式為
式中:f(x,y)、g(x,y)分別為原始圖像和處理后圖像;W為二維模板,可采用常見的5×5區(qū)域。
形態(tài)學(xué)操作的基本內(nèi)容為腐蝕與膨脹。腐蝕是將核覆蓋區(qū)域內(nèi)的像素最小值賦給錨點,膨脹則取像素最大值。通過先腐蝕后膨脹的開運算,可以消除目標(biāo)外的孤立點,使標(biāo)注所得的裂縫更為連續(xù),如圖2d所示。
為增強局部的對比度,對圖像直方圖均衡化處理。將圖像各點像素值較為平均地分散至0~255的范圍,并將直方圖歸一化;按式(4)計算出累計直方圖后,通過式(5)的映射得到輸出結(jié)果,如圖2e所示。
式中:H(j)為原始圖像的統(tǒng)計直方圖;H'(i)為原始圖像的累計直方圖。
在裂縫標(biāo)注的基礎(chǔ)上,利用Canny 邊緣檢測算子提取裂縫邊界。利用高斯濾波進行降噪處理后,計算每個像素點4 個方向的梯度值,以梯度值最大的方向為邊緣方向,再將保留的梯度值與設(shè)定的高、低閾值比較,處于高、低閾值之間的梯度作為最終梯度保留。經(jīng)過以上步驟所得的如圖2f所示的二值圖像,即為裂縫的邊界。
為提高整體標(biāo)注的魯棒性與泛化能力,減少計算機視覺檢測中的誤差,在計算機標(biāo)注后可設(shè)置適當(dāng)?shù)娜斯⑴c進程。
通過基于計算機視覺的裂縫標(biāo)注,38%的圖像可以預(yù)期的精度輸出,而62%的圖像精度都有進一步提升的空間。對于后者而言,約有84%的圖像是因其背景存在噪聲點,對計算機視覺標(biāo)注產(chǎn)生干擾;而剩余16%圖像存在的標(biāo)注問題,一部分為主要裂縫(即圖像中長度較長、寬度較寬的裂縫)邊緣標(biāo)注準確度不高,另一部分為次要裂縫(即圖像中長度較短、寬度較細的裂縫)無法完整識別。針對以上存在獨立噪聲點、主要裂縫標(biāo)注效果不佳、次要裂縫標(biāo)注效果不佳3 種情況,提出采用標(biāo)注干涉和簡單人工標(biāo)注的融合處理方式,標(biāo)注流程如圖3所示。
圖3 裂縫快速標(biāo)注流程Fig. 3 Procedures of fast crack detection
因噪聲點具有顏色與背景差異明顯、邊界像素梯度變化較大等與裂縫相同的特征,噪聲點被誤判為裂縫是最常見的檢測錯誤之一,且難以通過模糊或銳化等分割操作進行有效處理??芍苯釉谙鄳?yīng)標(biāo)注窗口中,通過畫筆等工具將噪聲涂抹為背景顏色,從而將其在標(biāo)注后的圖像中去除,如圖4所示。
圖4 圖像標(biāo)注干涉結(jié)果Fig. 4 Result of crack detection with interference
主要裂縫標(biāo)注效果不佳的可能原因為裂縫與背景差異性不大、裂縫周圍存在較嚴重的環(huán)境干擾、裂縫過于細小等,可采用弱化背景噪聲并加強裂縫區(qū)域的思路進行標(biāo)注。
為實現(xiàn)分區(qū)域處理,可以白色粗略地涂抹背景區(qū)域,如圖5c所示。對涂抹出的背景區(qū)域進行模糊處理;對未涂抹的裂縫及其周圍區(qū)域進行銳化處理,以使裂縫邊界更為明晰,如圖5d所示。同時,通過算法提取涂抹邊界,通過定點模糊避免像素替換中產(chǎn)生干擾裂縫檢測的邊界,如圖5e所示。后利用計算機視覺重新標(biāo)注,即圖3流程中的“簡單人工標(biāo)注方式1”,其標(biāo)注結(jié)果對比如圖5b和5f所示。該方法可解決絕大多數(shù)僅存在一條裂縫的圖像的標(biāo)注問題。
圖5 簡單人工標(biāo)注方式1標(biāo)注結(jié)果Fig. 5 Result of crack detection with simple manual detection method 1
對于次要裂縫因過于細小、不連續(xù)性較強等原因而無法完整檢測出的情況,采用“簡單人工標(biāo)注方式1”的標(biāo)注結(jié)果如圖6c所示,次要裂縫的銳化增強效果并不明顯,仍可能被處理為背景噪聲,故考慮將其作為單一裂縫的處理方案,即圖3流程中的“簡單人工標(biāo)注方式2”。通過涂抹分別將主要、次要裂縫忽略,對主要、次要裂縫單獨進行如“簡單人工標(biāo)注方式1”的處理,如圖6d 和6e 所示;然后將標(biāo)注后的圖像疊加,最終標(biāo)注結(jié)果如圖6f所示。
圖6 簡單人工標(biāo)注方式2標(biāo)注結(jié)果Fig. 6 Result of crack detection with simple manual detection method 2
對于是否需要在計算機視覺標(biāo)注后引入人工參與、標(biāo)注結(jié)果是否理想的判斷,通過人工與計算機并行的方式進行。人工判斷可以直觀且準確地分析出標(biāo)注結(jié)果不理想的原因,便于直接選擇相應(yīng)的處理方式。但為進一步提高圖像標(biāo)注中的銜接效率,可將標(biāo)注結(jié)果先交予計算機進行判斷,判斷流程如圖7所示。
圖7 檢測進程的計算機判斷流程Fig. 7 Procedures of detection process judgment with computer
圖像直方圖通常包含兩個峰值,分別對應(yīng)裂縫與背景的像素集,但第一峰值通常較低,少數(shù)圖像直方圖較低峰值不明顯,如圖8所示。另外,高斯混合模型擬合所需參數(shù)和迭代次數(shù)較多,需預(yù)先選擇合理的初始參數(shù)以便完成迭代,難度較大。因此,改用正態(tài)分布擬合與3σ原則相結(jié)合的方式,即假設(shè)背景區(qū)域像素點呈正態(tài)分布,可得擬合正態(tài)函數(shù)的均值μ和均方差σ,而背景部分像素值在μ±3σ范圍外的概率僅為0.002 7,可認為該范圍外均為裂縫區(qū)域像素點。由此可大致估算出裂縫區(qū)域面積,以對計算機標(biāo)注和簡單人工標(biāo)注后的裂縫面積進行初步校核,避免出現(xiàn)較大裂縫遺漏或較多噪聲誤判的現(xiàn)象。
圖8 數(shù)據(jù)集圖像直方圖示意Fig. 8 Histogram of dataset image
對標(biāo)注后的二值化圖像進行連通域分析,可獲取各部分裂縫的面積值。如該輸出的面積數(shù)值結(jié)果較多或存在較小值,均可能為背景噪聲所致。
考慮到簡單人工標(biāo)注后的涂抹邊界,在模糊后仍有被檢測出的可能,而由圖5d 可以看出,涂抹邊界處的像素梯度往往與裂縫邊界處有著較大差異。在裂縫檢測獲取裂縫邊緣像素點坐標(biāo)的基礎(chǔ)上,以式(6)和式(7)所示的Scharr算子的卷積操作求得裂縫邊緣像素梯度,并取均值。
式中:Gx和Gy分別為Scharr算子用于檢測水平方向上和豎直方向上的邊緣的卷積核模板。
將計算機標(biāo)注和簡單人工標(biāo)注后的結(jié)果相比,如二者相差過大,則存在檢測有誤的可能性,因而以其相對誤差作為是否在簡單人工標(biāo)注環(huán)節(jié)引入干擾因素的判斷依據(jù)。通過上述對裂縫總標(biāo)注面積和預(yù)估面積的差值、裂縫各部分標(biāo)注面積、簡單人工標(biāo)注前后裂縫邊緣像素梯度差值的分析判斷,設(shè)定合理的閾值或參數(shù),可在一定程度上協(xié)助分析裂縫標(biāo)注結(jié)果是否可靠。
以Dorafshan等[13]制作的裂縫數(shù)據(jù)集為例,進行實驗驗證,部分圖像的原圖及對應(yīng)標(biāo)注結(jié)果如圖9所示。其中圖9a、9c、9e 為原始對象,圖9b、9d、9f 分別為圖9a、9c、9e 對應(yīng)的標(biāo)注結(jié)果。圖9e、9f 為該算法在工程實際圖片中的應(yīng)用,從中可以看出,該方法對斑點、坑洞及材料本身顏色的不均勻性等干擾均可進行一定的排除。
圖9 裂縫標(biāo)注結(jié)果Fig. 9 Results of crack detection
實驗結(jié)果表明,絕大多數(shù)圖像可通過計算機視覺與人工結(jié)合的標(biāo)注方式得到很好的輸出。由于目前對數(shù)據(jù)集標(biāo)注精度沒有有效的評判標(biāo)準,故以純?nèi)斯?biāo)注圖像作為對照,引入深度學(xué)習(xí)中檢測評價函數(shù)交并比(IoU)和平均交并比(MIoU)的概念,進行標(biāo)注精度分析。
IoU 為真實標(biāo)簽和預(yù)測值的交和并的比值,MIoU 是該數(shù)據(jù)集中的每一個類的交并比的平均。在裂縫標(biāo)注任務(wù)中,裂縫與背景為兩類標(biāo)簽,其計算公式如下:
式中:TP 表示所提算法標(biāo)注為正例、手動標(biāo)注為正例的像素數(shù);FP 表示所提算法標(biāo)注為正例、手動標(biāo)注是反例的像素數(shù);FN 表示所提算法標(biāo)注為反例、手動標(biāo)注是正例的像素數(shù)。
設(shè)t1、t2分別為手動標(biāo)注和所提算法標(biāo)注所用的時間,時間縮短率rt的計算公式如下:
在Windows 10 系統(tǒng)、Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz(12CPUs)處理器的配置下,以Python語言得到的時間統(tǒng)計,以及標(biāo)注像素值對比情況匯總?cè)绫?所示。
表1 部分裂縫標(biāo)注結(jié)果對比Tab. 1 Comparison of partial crack detection results
由表1可知,圖像標(biāo)注精度均可達84%以上,而Wang 等[11]以MIoU 為精度評價指標(biāo)得出的語義分割精度只有64.5%。考慮到人工標(biāo)注同樣存在主觀疲勞、判斷尺度等因素的影響[7],所提算法的標(biāo)注精度理想。像素點對比情況見圖10。
圖10 裂縫標(biāo)注像素點對比Fig. 10 Comparison of crack detection pixels
對從圖像導(dǎo)入至圖像存儲完成所用的時間進行統(tǒng)計。計算機標(biāo)注與標(biāo)注干涉兩種途徑的統(tǒng)計結(jié)果表明,標(biāo)注圖像的最短時間為0.88 s,最長時間為13.64 s,平均時長為6.13 s,約70%的圖像可在此環(huán)節(jié)輸出;兩種簡單人工標(biāo)注方式的統(tǒng)計結(jié)果表明,圖像標(biāo)注的最短時間為15.07 s,最長時間為67.60 s,平均時長為33.67 s,其余30%的圖像基本均可在此環(huán)節(jié)輸出。以所用時間為變量繪制的頻率直方圖如圖11所示。
圖11 裂縫標(biāo)注時長頻率直方圖Fig. 11 Frequency histogram of crack detection time
以上結(jié)果顯示,整體標(biāo)注平均時長僅為14.00 s。而純手動對一張尺寸224×224 的圖像進行像素級的裂縫標(biāo)注,卻需花費2~5 min不等的時間,若換用圖像尺寸更大的數(shù)據(jù)集,該時間會成倍增加。相比之下,本文標(biāo)注算法可節(jié)省85%甚至99%以上的時間,而參與機理決定了該算法標(biāo)注時間與圖像尺寸的關(guān)系不大,且受標(biāo)注人員主觀影響較小,基本不存在工作疲勞、缺乏經(jīng)驗等可能影響標(biāo)注結(jié)果的情況。
傳統(tǒng)計算機標(biāo)注方式只能對圖像進行整體的模糊或銳化操作,背景中存在的噪聲會因與裂縫的處理變化同步,難以得到有效處理。本文算法通過簡單人工標(biāo)注,以最簡方式對裂縫與背景進行分區(qū),通過不同操作與邊界處理,解決復(fù)雜背景對裂縫標(biāo)注的干擾問題。極少量圖像無法合理標(biāo)注的主要原因為,裂縫過于細小,寬度僅有1~3 個像素點,在圖像模糊或形態(tài)學(xué)操作的過程中易被忽略;裂縫中存在碎石顆粒的填充,裂縫識別時產(chǎn)生多個邊界等。
選取利用本文算法標(biāo)注的331 張圖像,70%作為訓(xùn)練集,30%作為測試集,利用Ronneberger 等提出的U-Net深度學(xué)習(xí)模型[14]進行應(yīng)用。測試集標(biāo)注結(jié)果如圖12所示。
圖12 深度學(xué)習(xí)的訓(xùn)練結(jié)果Fig. 12 Results of deep learning model training
訓(xùn)練過程的損失值變化情況如圖13 所示。裂縫區(qū)域的IoU為0.82,背景區(qū)域的IoU為0.98,兩個區(qū)域的平均交并比MIoU為0.90。
圖13 裂縫標(biāo)注模型訓(xùn)練損失Fig. 13 Training loss of crack detection model
將訓(xùn)練模型應(yīng)用于實際拍攝的工程照片,效果如圖14所示??紤]到此次訓(xùn)練所用數(shù)據(jù)較少,深度學(xué)習(xí)模型存在很大的優(yōu)化空間,本文算法可用于裂縫標(biāo)注的深度學(xué)習(xí)模型,提高前期數(shù)據(jù)集處理效率。
圖14 實際工程圖像測試結(jié)果Fig. 14 Testing results of engineering images
提出低監(jiān)督快速標(biāo)注的概念,通過將計算機視覺與人工標(biāo)注緊密結(jié)合、優(yōu)勢互補,進行裂縫檢測。研究內(nèi)容包括基于計算機視覺的裂縫檢測,和將人工標(biāo)注與計算機視覺相融合的多層次標(biāo)注框架。通過標(biāo)注像素點精度與標(biāo)注時長的對比,以及U-Net深度學(xué)習(xí)模型的訓(xùn)練,對本文算法進行了結(jié)果分析與驗證,得出了以下結(jié)論:
(1)與人工逐像素標(biāo)注的結(jié)果對比,本文算法標(biāo)注結(jié)果精度均為84%以上,可至少節(jié)省85%的時間。本文算法可在保證準確率的同時,提升數(shù)據(jù)集標(biāo)注效率,降低人工監(jiān)督成本。
(2)本文算法通過簡單人工標(biāo)注,可以有效處理背景中存在的噪聲。
(3)對于裂縫過于細小,以及裂縫中存在碎石顆粒填充的情況,所提算法無法合理標(biāo)注。
本文算法仍有進一步提升的空間。如何在標(biāo)注進程判斷與方式選擇中提高計算機所起的作用,是否能夠通過可變參數(shù)的思想優(yōu)化裂縫檢測效果,進而提升標(biāo)注的精度與穩(wěn)定性,將在后續(xù)工作中進一步研究。所提低監(jiān)督快速標(biāo)注算法,也可在充分的驗證分析后,嘗試應(yīng)用于車道、路標(biāo)等其他類型目標(biāo)的標(biāo)注中。
作者貢獻聲明:
劉 超:提出研究主題,監(jiān)督指導(dǎo),論文修改。
許木南:研究框架構(gòu)建,算法研究,數(shù)據(jù)分析,論文寫作與修改。
曹思嫻:算法研究與驗證,論文寫作。
牛圣堯:算法研究與驗證。
朱安琪:算法研究與驗證。