余 欣,許益獎(jiǎng),李 薇,石 威,劉曉宇
(四川大學(xué) 機(jī)械工程學(xué)院,成都 610000)
隨著國家社會(huì)經(jīng)濟(jì)的高速發(fā)展,眾多關(guān)系到國民生產(chǎn)的各行業(yè)及人們的日常生活大型建筑物,如隧道、橋梁、水壩、大樓等的數(shù)量快速增長,而由于老化以及各種各樣的原因,建筑物很容易產(chǎn)生裂縫。裂縫不僅影響建筑外表的美觀,更影響建筑的安全使用壽命,存在較大的安全隱患,甚至可能會(huì)給社會(huì)造成重大的經(jīng)濟(jì)損失和人員傷亡。為了確保這些建筑物的使用安全,必須定期對其進(jìn)行裂縫識(shí)別及檢測,準(zhǔn)確評估建筑物的裂縫發(fā)展情況,從而制定科學(xué)合理的建筑修護(hù)方案。
傳統(tǒng)的裂縫檢測方式主要依靠人工近距離作業(yè)的方式,多利用傳感器(如超聲波傳感器)進(jìn)行裂縫檢測,超聲波檢測是利用超聲波的特性,通過檢測出脈沖波在被測物中的傳播時(shí)間以及接收波的振幅和頻率,從而確定建筑物表面裂縫的有無、大小和位置等信息[1]。這種方式由于硬件發(fā)展水平的限制,檢測精度難以進(jìn)一步提升,而且對于隧道和橫跨山河的橋梁等大型建筑,近距離作業(yè)使得檢測難度大、危險(xiǎn)系數(shù)高,故常常需要使用遠(yuǎn)距離檢測的方式。
目前,用傳統(tǒng)的人工作業(yè)的方式進(jìn)行裂縫檢測已經(jīng)越來越無法滿足工程的需求,同時(shí)隨著硬件設(shè)備性能的提升以及大規(guī)模數(shù)據(jù)集的出現(xiàn)使得深度學(xué)習(xí)技術(shù)在目標(biāo)檢測,實(shí)例分割等視覺領(lǐng)域已取得顯著成果[2-4],基于圖像處理的智能識(shí)別檢測的新方法應(yīng)運(yùn)而生。這種智能化裂縫檢測方法實(shí)現(xiàn)了數(shù)字化、自動(dòng)化,極大地提高了檢測精度與效率[5]。
此外,隨著深度學(xué)習(xí)技術(shù)在計(jì)算機(jī)視覺領(lǐng)域的蓬勃發(fā)展和在交通及工業(yè)生產(chǎn)等場景的廣泛適用,基于深度學(xué)習(xí)技術(shù)的裂縫智能檢測平臺(tái)為大勢所趨,選擇合適的深度學(xué)習(xí)平臺(tái)部署深度學(xué)習(xí)網(wǎng)絡(luò)模型進(jìn)行大型建筑物表面的裂縫圖像識(shí)別檢測至關(guān)重要,目前國內(nèi)外研究人員主要基于嵌入式[6-9]和微型PC終端[10-11]研發(fā)遠(yuǎn)距離裂縫檢測智能平臺(tái),然而由于大多數(shù)深度學(xué)習(xí)算法占用內(nèi)存大且運(yùn)算復(fù)雜度較高,而嵌入式、PC終端等邊緣設(shè)備資源空間、功耗和計(jì)算能力等受限,這為深度學(xué)習(xí)的部署開發(fā)帶來了一定的難度和局限性。因此,性能更加強(qiáng)大的裂縫智能檢測平臺(tái)的研發(fā)有待完善和發(fā)展。
近年來互聯(lián)網(wǎng)的云計(jì)算、云存儲(chǔ)等云端技術(shù)日益成熟,采用云服務(wù)器實(shí)現(xiàn)云數(shù)據(jù)的聚合和分析,可以最大程度地整合與裂縫相關(guān)的信息和數(shù)據(jù),實(shí)現(xiàn)資源的靈活擴(kuò)展[12]。
因此本項(xiàng)目以裂縫檢測領(lǐng)域迫切需求的對大型建筑物表面裂縫進(jìn)行遠(yuǎn)距離檢測為導(dǎo)向,基于圖像處理和深度學(xué)習(xí)搭建依托于微信小程序和云服務(wù)器的遠(yuǎn)距離裂縫智能檢測平臺(tái),可實(shí)現(xiàn)更方便、更快捷、更智能化的裂縫檢測。
首先利用遠(yuǎn)攝變焦鏡頭采集圖像并通過微信小程序上傳到云端服務(wù)器,其中微信小程序與云端服務(wù)器間的通信基于TCP/IP協(xié)議,以https通信方式進(jìn)行數(shù)據(jù)交互;然后進(jìn)行裂縫檢測;最后將分析結(jié)果及裂縫特征參數(shù)信息等存儲(chǔ)到云端,同時(shí)微信小程序?qū)⒃摲治鼋Y(jié)果進(jìn)行解析渲染展現(xiàn)給用戶。
方案原理如圖1所示。
圖1 基于云端的遠(yuǎn)距離裂縫檢測方案
1.2.1 展現(xiàn)層和通訊層
展現(xiàn)層實(shí)現(xiàn)用戶交互,負(fù)責(zé)圖像的輸入、渲染與展示。通訊層為系統(tǒng)前端(展現(xiàn)層)與后端(功能層、數(shù)據(jù)庫)的數(shù)據(jù)傳輸,基于HTTP/HTTPS協(xié)議和POST/GET請求。
1.2.2 業(yè)務(wù)層
通過調(diào)用業(yè)務(wù)數(shù)據(jù)接口,實(shí)現(xiàn)相應(yīng)的功能,包括裂縫檢測、數(shù)據(jù)存儲(chǔ)等。
業(yè)務(wù)層由服務(wù)類組成,并使用數(shù)據(jù)層提供的服務(wù)實(shí)現(xiàn)展現(xiàn)層所需業(yè)務(wù)數(shù)據(jù)的處理,為實(shí)現(xiàn)安全服務(wù)、接口服務(wù)、數(shù)據(jù)分析、數(shù)據(jù)處理、日志消息、狀態(tài)信息等提供支持[13]。
1.2.3 數(shù)據(jù)層
提供底層數(shù)據(jù),實(shí)現(xiàn)原始數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)緩存、數(shù)據(jù)分析讀寫以及文件存儲(chǔ)等功能。
圖2 遠(yuǎn)距離云端裂縫檢測智能平臺(tái)架構(gòu)
如今,智能手機(jī)全面普及,微信小程序是一種全新的連接用戶與服務(wù)的方式[14],其背靠微信用戶量大的優(yōu)勢,可共享微信生態(tài),同時(shí)具有優(yōu)秀的用戶體驗(yàn);微信云開發(fā)提供了原生 Serverless 云服務(wù),無需搭建服務(wù)器,降低了運(yùn)維成本[15-17];依托于微信小程序的開放接口,可以構(gòu)建移動(dòng)端的裂縫檢測應(yīng)用平臺(tái),同樣可實(shí)現(xiàn)與后臺(tái)算法的交互;用戶使用時(shí)無需下載,使用便捷,并且通過微信小程序自帶的云數(shù)據(jù)庫實(shí)現(xiàn)對用戶數(shù)據(jù)的存儲(chǔ)。
微信小程序采用wxml、wxss、JavaScript進(jìn)行開發(fā),本質(zhì)是一個(gè)單頁應(yīng)用,所有的頁面渲染和事件處理,都在一個(gè)頁面內(nèi)進(jìn)行,但又可以通過微信客戶端調(diào)用原生的各種接口。
1)程序結(jié)構(gòu)。微信小程序由js、json、wxss和wxml四個(gè)文件組成。.js是文件應(yīng)用程序是邏輯文件,.json文件應(yīng)用程序是配置文件,.wxss應(yīng)用程序是定義公共樣式,.wxml是用于定義.wxss公共樣式的外觀,比如大小、形狀和顏色等。通過配置這四個(gè)文件可以實(shí)現(xiàn)預(yù)期程序的產(chǎn)出。
2)小程序與云服務(wù)器交互。小程序端調(diào)用wx.uploadFile實(shí)現(xiàn)小程序向后端服務(wù)器發(fā)送一個(gè)POST請求,將用戶數(shù)據(jù)上傳至云服務(wù)器;云服務(wù)器收到數(shù)據(jù)后調(diào)用算法進(jìn)行檢測,之后返回相應(yīng)的值。由于返回的值微信小程序不能直接展示,需要通過JSON.parse將返回值轉(zhuǎn)換為可識(shí)別的值,之后微信小程序便可將轉(zhuǎn)換后的數(shù)據(jù)展示在界面上,實(shí)現(xiàn)前后端數(shù)據(jù)的交互。
3)程序界面設(shè)計(jì)。根據(jù)需求,本項(xiàng)目設(shè)計(jì)了登錄界面、初始界面、檢測界面、建議反饋界面以及作者介紹界面。在js、json頁面下定義相應(yīng)函數(shù)實(shí)現(xiàn)所需要的功能,再在wxss和wxml頁面設(shè)計(jì)各界面的樣式,以達(dá)到美觀效果。
4)程序主要功能。程序登陸界面用于獲取用戶的數(shù)據(jù),以便于實(shí)驗(yàn)統(tǒng)計(jì);授權(quán)后會(huì)進(jìn)入到初始界面,初始界面包含了三個(gè)功能按鈕,分別為“開始檢測”按鈕、“建議反饋”按鈕以及“關(guān)于我們”按鈕。點(diǎn)擊“開始檢測”按鈕便可進(jìn)入檢測界面,之后即可上傳裂縫圖片進(jìn)行檢測,小程序會(huì)跳轉(zhuǎn)到檢測結(jié)果界面;點(diǎn)擊“建議反饋”按鈕進(jìn)入到建議反饋界面,用戶可向開發(fā)者提供建議,以便開發(fā)者對程序的進(jìn)一步優(yōu)化;點(diǎn)擊“關(guān)于我們”按鈕進(jìn)入到團(tuán)隊(duì)介紹界面,可便捷地了解開發(fā)者團(tuán)隊(duì)。如圖3所示為微信小程序總體流程圖。
圖3 前端流程設(shè)計(jì)
云服務(wù)器(ECS,elastic compute service)是云計(jì)算服務(wù)的重要組成部分,是面向各類互聯(lián)網(wǎng)用戶提供綜合業(yè)務(wù)能力的服務(wù)平臺(tái),平臺(tái)整合了傳統(tǒng)意義上的互聯(lián)網(wǎng)應(yīng)用三大核心要素:計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)。由于云服務(wù)器屬于互聯(lián)網(wǎng)基礎(chǔ)設(shè)施的范疇,用戶可根據(jù)個(gè)人或群體的需求隨時(shí)、定量地使用其計(jì)算資源,做到高效、便捷地使用云服務(wù)器。與傳統(tǒng)服務(wù)器相比,用戶使用云服務(wù)器不僅無需購買硬件實(shí)體,降低了運(yùn)營成本,而且可在短時(shí)間內(nèi)依據(jù)需求創(chuàng)建或釋放多臺(tái)云服務(wù)器,實(shí)現(xiàn)性能擴(kuò)充,簡單高效[18]。
本項(xiàng)目的后端使用Python語言編程,采取Nginx+uWSGI+Flask應(yīng)用的方式部署,算法模型部署在Flask上。微信小程序向服務(wù)器發(fā)起https 請求,Nginx首先接收到請求并轉(zhuǎn)發(fā)給uWSGI,server(uWSGI服務(wù)器)根據(jù)自身的uwsgi和WSGI協(xié)議,找到對應(yīng)的Flask框架,F(xiàn)lask框架下的應(yīng)用進(jìn)行邏輯處理后,將返回值發(fā)送到uWSGI服務(wù)器,然后uWSGI服務(wù)器再返回給Nginx,最后Nginx將返回值返回給微信小程序進(jìn)行渲染顯示給用戶。云服務(wù)器部署流程如圖4所示。
圖4 云服務(wù)器部署流程
2.2.1 Web服務(wù)器配置
Nginx代理服務(wù)器處理靜態(tài)文件和索引文件效果非常高;其設(shè)計(jì)在保證較高效率的同時(shí)所占用內(nèi)存也較??;此外,Nginx不僅穩(wěn)定性高,而且配置簡潔。而uWSGI做為一款優(yōu)秀的Python應(yīng)用服務(wù)器,更擅長處理動(dòng)態(tài)請求。故從安全性和可擴(kuò)展性方面來講,使用Nginx+uWSGI是最佳方式。
其中Nginx服務(wù)器通過修改Nginx配置文件實(shí)現(xiàn)https訪問和反向代理,它可根據(jù)服務(wù)器的負(fù)載情況將請求分配給不同的服務(wù)器進(jìn)行處理,且在響應(yīng)處理過程中,客戶端無法得知真正服務(wù)器的IP地址,保證了服務(wù)器性能和安全。
uWSGI服務(wù)器實(shí)現(xiàn)uwsgi協(xié)議和WSGI協(xié)議,分別定義了傳輸信息的類型和保證了不同Web服務(wù)器可以和不同的Python程序之間相互通信。在WSGI中,Web服務(wù)器端被稱為server,會(huì)先收到用戶請求,依據(jù)一定的規(guī)范要求調(diào)用應(yīng)用程序端,即Web框架(如Flask),執(zhí)行結(jié)果會(huì)被封裝并返回到客戶端。
2.2.2 Flask框架
Flask 是一個(gè)輕量級(jí)Python Web 框架,因其簡潔、輕巧、擴(kuò)展性強(qiáng)等優(yōu)勢大受歡迎[19-20],由兩個(gè)依賴(Werkzeug和Jinja2)和第三方庫組成。Flask性能上基本滿足一般Web開發(fā)的需求, 并且靈活性以及可擴(kuò)展性上要優(yōu)于其他Web框架, 對各種數(shù)據(jù)庫的契合度都非常高。
主要功能:接受并處理小程序傳來的數(shù)據(jù);部署裂縫檢測算法模型;編寫POST類型請求的API;存儲(chǔ)裂縫檢測前后圖像及裂縫數(shù)據(jù)。
表1展示了Flask程序文件的目錄結(jié)構(gòu)。
表1 Flask程序文件目錄結(jié)構(gòu)
輸入圖像以后,首先使用卷積神經(jīng)網(wǎng)絡(luò)對圖像進(jìn)行分類,判斷是否存在裂縫目標(biāo)。對存在裂縫的圖像進(jìn)行預(yù)處理,再使用語義分割網(wǎng)絡(luò)進(jìn)行圖像分割,提取裂縫區(qū)域。最后使用傳統(tǒng)的圖像處理算法提取裂縫的像素?cái)?shù)據(jù)。根據(jù)鏡頭數(shù)據(jù)與測量距離計(jì)算像素解析度,將像素?cái)?shù)據(jù)與像素解析度相乘,便可以得到實(shí)際的裂縫數(shù)據(jù)。
裂縫檢測流程如圖5所示。
圖5 裂縫圖像處理流程
2.3.1 圖像采集及像素解析度計(jì)算
使用長焦鏡頭采集圖像,使用激光測距儀測出相機(jī)與裂縫區(qū)域的距離。
根據(jù)透鏡成像原理,有:
(1)
(2)
式中,L為物距;f為鏡頭焦距。設(shè)A為目標(biāo)實(shí)際尺寸,即裂縫實(shí)際物理尺寸,A′為成像尺寸,則有:
(3)
(4)
代入得:
(5)
成像尺寸A′為:
(6)
得到像素解析度為:
(7)
式中,A″為成像的像素?cái)?shù);d為圖像傳感器長邊物理尺寸;D為圖片傳感器長邊像素?cái)?shù)。
相機(jī)成像表面與裂縫表面若存在夾角θ,需要測出這個(gè)夾角,從而對像素解析度進(jìn)行修正。李清鑫等提出了一種測θ角的方法[21],使用三點(diǎn)激光測距儀,利用三束激光之間的幾何關(guān)系計(jì)算得到θ角。
修正后的像素解度:
(8)
θ為成像平面與裂縫表面的夾角。
2.3.2 圖像分類
2019年谷歌研究出了一種卷積神經(jīng)網(wǎng)絡(luò)模型—EfficientNet[22]。這個(gè)網(wǎng)絡(luò)模型創(chuàng)新地使用一個(gè)簡單而高效的復(fù)合系數(shù)從網(wǎng)絡(luò)深度、網(wǎng)絡(luò)寬度和輸入圖像分辨率三個(gè)維度來放大網(wǎng)絡(luò),網(wǎng)絡(luò)精度更高,參數(shù)量更少。
本文使用EfficientNet-B0作為圖像分類網(wǎng)絡(luò)。EfficientNet-B0包含16個(gè)移動(dòng)翻轉(zhuǎn)瓶頸卷積模塊(MBConv)、2個(gè)卷積層、1個(gè)全局平均池化層以及1個(gè)分類層[23]。與ResNet-50相比,該網(wǎng)絡(luò)速度提升了將近十倍,網(wǎng)絡(luò)參數(shù)僅有其大約五分之一。通過該圖像分類網(wǎng)絡(luò),可以對輸入的圖片進(jìn)行有效分類,判斷是否存在裂縫。
2.3.3 圖像預(yù)處理
對輸入的裂縫圖像進(jìn)行預(yù)處理,步驟主要有三步:圖像灰度化、圖像對比度增強(qiáng)、圖像濾波去噪[24]。
鏡頭采集得到的圖片是三通道的RGB圖像,需要通過灰度化將三通道變?yōu)閱瓮ǖ?。本文使用加?quán)均值平均值算法進(jìn)行灰度化,公式如下所示:
f(x,y)=WRR(x,y)+WGG(x,y)+WBB(x,y)
(9)
式中,f(x,y)是灰度圖像素值,R(x,y),G(x,y),B(x,y)分別為彩色圖像中的紅、綠、藍(lán)三種顏色通道中的像素分量,WR、WG、WB為R(x,y),G(x,y),B(x,y)的權(quán)值。權(quán)值選擇以人眼對色彩的敏感性為根據(jù),實(shí)驗(yàn)表明,當(dāng)WR=0.299、WG=587、WB=0.114時(shí),能獲得最符合人眼視覺感受的灰度圖圖像[25]。
采集到的圖像需要提高其對比度,以便表現(xiàn)圖像的細(xì)節(jié)。本文使用伽馬校正的方法增強(qiáng)對比度,通過對圖像像素值的非線性變換,可以放大局部低光區(qū)域,放大圖像細(xì)節(jié)。其數(shù)學(xué)表達(dá)式如下:
LOUT=I1/gamma
(10)
LOUT是輸出圖像,I是輸入圖像,gamma為伽馬指數(shù)[26]。
本文通過實(shí)驗(yàn),發(fā)現(xiàn)gamma指數(shù)小于1時(shí),圖像對比度增強(qiáng),gamma指數(shù)大于1時(shí),圖像對比度減弱。同時(shí),當(dāng)gamma指數(shù)較低時(shí),如gamma=0.1,圖像對比度較高,但同樣存在加強(qiáng)了背景噪聲的問題。通過對多張圖像進(jìn)行對比度增強(qiáng),發(fā)現(xiàn)在gamma從0.1逐漸增大至1.0的過程中,對比度增強(qiáng)的力度逐漸減弱,當(dāng)gamma=0.6時(shí),對比度較高,而噪聲目標(biāo)未明顯增強(qiáng),矯正效果最為理想。因此,本文中伽馬指數(shù)取0.6。
對比度增強(qiáng)后的圖像有各種噪聲包括椒鹽噪聲和高斯噪聲。使用中值濾波去除椒鹽噪聲,使用雙邊濾波去除高斯噪聲。中值濾波的公式如下:
f(x,y)=Med{h(m-p,m-q),(p,q∈M)}
(11)
式中,f(x,y)表示輸出像素,取鄰域內(nèi)像素像素灰度的中值;h(m,n)表示原始圖像中心位置像素點(diǎn)的灰度值;m表示鄰域窗口的大??;h(k-p,l-q)就是各個(gè)像素點(diǎn)的灰度值。
雙邊濾波的輸出像素值是鄰域像素值的加權(quán)和,其加權(quán)系數(shù)有兩部分,一部分是高斯距離權(quán)重,另一部分是高斯相似度權(quán)重,公式分別如下:
c(ξ,x)=e-1/2(d(ξ,x)/σd)2
(12)
s(ξ,x)=e-1/2(σ(f(),f(x))/σr)2
(13)
融合距離和亮度信息去濾波,得到最后的公式如下所示:
h(x)=k-1∑f(ξ)c(ξ,x)s(ξ,x)
(14)
其中:k(x)=∑c(ξ,x)s(ξ,x),∑表示用于濾波的鄰域矩陣的大小,f(ξ)表示原始像素點(diǎn),圖像預(yù)處理前后效果對比如圖6所示。
圖6 圖像預(yù)處理前后效果對比圖
使用雙邊濾波的好處是在去除了噪聲的同時(shí)保護(hù)了邊緣,有利于裂縫區(qū)域的分割。
2.3.4 圖像分割
本文使用SegNet[27]語義分割網(wǎng)絡(luò)進(jìn)行圖像分割,如圖7所示。
圖7 SegNet網(wǎng)絡(luò)分割效果
SegNet包含編碼(encoder)和解碼(decoder)兩個(gè)部分。在編碼器中,包含了 VGG16 中的 13 個(gè)卷積層.同時(shí)編碼器中存在5個(gè)最大池化層,其下采樣操作可以縮小圖像。同時(shí)存儲(chǔ)池化操作中最大值的索引位置。在解碼器中進(jìn)行上采樣操作。解碼器中也有 13 個(gè)卷積層。與編碼器不同,解碼器中有 5 個(gè)上采樣層,用于將特征圖還原至原來的大小。上采樣操作采用轉(zhuǎn)置卷積的方式。解碼器后是一個(gè)softmax分類層,接收最后一個(gè)卷積層的輸出,對每個(gè)像素獨(dú)立分類,輸出有K個(gè)通道,每個(gè)通道代表一個(gè)類別。最終實(shí)現(xiàn)圖像語義分割。
2.3.5 裂縫特征提取
通過圖像分割得到裂縫區(qū)域后,將圖像轉(zhuǎn)化為二值圖像,圖像中,白色區(qū)域就是裂縫區(qū)域。
圖像分割可能會(huì)使連續(xù)的裂縫邊緣發(fā)生斷裂,使用形態(tài)學(xué)運(yùn)算中的閉運(yùn)算對這些裂縫邊緣進(jìn)行連接,并使用開運(yùn)算去除毛刺。
同時(shí),二值圖像中可能存在一些噪聲,要想提取出完整的裂縫特征還需要對圖像進(jìn)行濾波。利用裂縫的圓度較低,面積較噪聲大的特點(diǎn)對噪聲進(jìn)行了濾除。
由于裂縫區(qū)域連通性較好,連通域面積較大,而噪聲區(qū)域多為孤立點(diǎn),面積較小,可以設(shè)立一個(gè)閾值,將低于此閾值的連通域視為噪聲區(qū)域,從而進(jìn)行初步去噪。然后利用連通域的圓度大小進(jìn)行進(jìn)一步去噪。
圓度用于描述區(qū)域接近圓形的程度,如果區(qū)域越接近圓形,則它的圓度越接近于1。
本文采用Halcon中關(guān)于圓度的定義來計(jì)算圓度,計(jì)算公式如下:
(15)
C為圓度,F(xiàn)為區(qū)域面積,max為區(qū)域中心點(diǎn)到輪廓點(diǎn)的最大值。
噪聲點(diǎn)的圓度一般較大,裂縫區(qū)域的圓度一般較小,通過對多張裂縫圖片進(jìn)行去噪處理發(fā)現(xiàn),將圓度大于0.1的白色連通域視為噪聲進(jìn)行濾除后,可以比較完整地提取出裂縫區(qū)域,提取效果如圖8所示。
圖8 裂縫特征提取效果
2.3.6 裂縫參數(shù)計(jì)算
經(jīng)過特征提取之后,所得白色連通域便是裂縫區(qū)域。統(tǒng)計(jì)所有像素值為255的像素點(diǎn)的個(gè)數(shù),便可以得到裂縫的像素面積。通過中軸變換算法,得到裂縫骨架,即一條只有一個(gè)像素點(diǎn)寬的直線,統(tǒng)計(jì)這條直線的像素點(diǎn)的個(gè)數(shù)便可以得到裂縫的像素長度。同時(shí),中軸變換過程中還會(huì)返回中軸線上的所有點(diǎn)與中間點(diǎn)的距離,可以利用此距離得到裂縫寬度的像素寬度。將以上數(shù)據(jù)乘以像素解析度便可以得到實(shí)際的裂縫數(shù)據(jù)。
3.1.1 數(shù)據(jù)預(yù)處理
數(shù)據(jù)集Concrete Crack Images for Classification中含有20 000張帶有裂縫的圖像和20 000張不帶有裂縫的圖像,每張圖像的大小為227×227,是裂縫檢測相關(guān)研究中使用較為廣泛的數(shù)據(jù)集。從此數(shù)據(jù)集中挑選出1 000張帶有裂縫的圖像和1 000張不帶有裂縫。在數(shù)據(jù)預(yù)處理階段,將數(shù)據(jù)集中的圖片進(jìn)行中心裁剪,裁剪至224×224。其中224×224是EfficientNet-B0的標(biāo)準(zhǔn)輸入尺寸[16],同時(shí),由于裂縫一般位于圖像中間,中心裁剪可以減少一部分背景噪聲。之后再通過歸一化、以0.5概率隨機(jī)翻轉(zhuǎn)等操作以增強(qiáng)數(shù)據(jù)。
3.1.2 模型訓(xùn)練
網(wǎng)絡(luò)模型使用EfficientNet的BO版本,訓(xùn)練的參數(shù)如下表所示,輸入圖像尺寸為224×224,每批數(shù)據(jù)量為32,學(xué)習(xí)率為0.001,epoch為100次,動(dòng)量參數(shù)設(shè)為0.9,權(quán)重衰減為0.000 1。使用SGD優(yōu)化器和交叉熵?fù)p失函數(shù)。
在模型訓(xùn)練過程中,損失函數(shù)值隨訓(xùn)練次數(shù)增加而衰減,當(dāng)訓(xùn)練至100次時(shí),模型基本收斂,損失函數(shù)值約為0.016 72。
3.1.3 實(shí)驗(yàn)指標(biāo)
本實(shí)驗(yàn)針對圖像分類模型進(jìn)行評估,衡量分類模型的性能。主要實(shí)驗(yàn)指標(biāo):精確率(precision)、召回率(recall)、F值[28]和FPS(frames per second) 指標(biāo)。計(jì)算精確率和召回率時(shí)還需使用以下參數(shù):TP(true positives) 表示裂縫樣本被正確分類為裂縫的樣本數(shù),TN(true negatives) 表示非裂縫樣本被正確分類為非裂縫的樣本數(shù),F(xiàn)P(false positives) 表示非裂縫樣本被錯(cuò)誤分類為裂縫的樣本數(shù),F(xiàn)N(false negatives)表示裂縫樣本被錯(cuò)誤分類為非裂縫的樣本數(shù)。
精確率表示被正確預(yù)測為裂縫的圖像占預(yù)測為裂縫的圖像的比例,定義如下:
(16)
召回率表示被正確預(yù)測為裂縫的圖像占全部裂縫圖像的比例,定義如下:
(17)
F值用于綜合反映整體的指標(biāo)。定義如下:
(18)
FPS表示每秒處理的圖片數(shù),用于衡量檢測算法的檢測速度。
3.1.4 測試結(jié)果
使用算法模型對250張帶有裂縫的圖像和250張不帶有裂縫的圖像進(jìn)行測試測試結(jié)果如表2所示。
表2 分類網(wǎng)測試結(jié)果
實(shí)驗(yàn)結(jié)果表明圖像分類模型精確率和召回率均比較高,算法模型精度較高,且每秒可以處理將近5張圖片,可以滿足實(shí)時(shí)分類的需求。
3.2.1 數(shù)據(jù)預(yù)處理
同樣從數(shù)據(jù)集Concrete Crack Images for Classification數(shù)據(jù)集中挑選出1 000張帶有裂縫的圖像,使用labelme工具標(biāo)注出圖像中的裂縫區(qū)域。
3.2.2 模型訓(xùn)練
訓(xùn)練的參數(shù)如表3所示,輸入圖像尺寸為256×256,每批數(shù)據(jù)量為32,學(xué)習(xí)率為0.001,epoch為100次,權(quán)重衰減為0.000 1。使用Adam優(yōu)化器和二值交叉熵?fù)p失函數(shù)。
表3 分割網(wǎng)MIoU值
在模型訓(xùn)練過程中,損失函數(shù)值隨訓(xùn)練次數(shù)增加而衰減,當(dāng)訓(xùn)練至100次時(shí),模型基本收斂,損失函數(shù)值約為0.043 24。
3.2.3 實(shí)驗(yàn)指標(biāo)
平均交并比MIoU值是一個(gè)衡量圖像分割精度的重要指標(biāo),定義是預(yù)測值和真實(shí)值的交集與并集之比的平均值。MIoU越接近于 1,說明分割模型分割效果越精確。計(jì)算公式如下:
(19)
其中:P表示預(yù)測值,G表示真實(shí)值,K表示總類別個(gè)數(shù)。
3.2.4 測試結(jié)果
對測試集的500張裂縫圖像使用labelme標(biāo)注出裂縫區(qū)域,并將它們分為5組,分別使用使用分割網(wǎng)模型對另外進(jìn)行分割,計(jì)算平均交并比MIoU。
如表3所示,測試集的MIoU穩(wěn)定在89.20%左右,裂縫分割效果較好。
3.3.1 長度計(jì)算實(shí)驗(yàn)
本文使用NikonD7500相機(jī)拍攝裂縫圖像,其CMOS傳感器的尺寸為23.5 mm×15.7 mm,鏡頭焦距范圍為18~140 mm,拍攝的照片尺寸均為5 568×3 712。拍攝時(shí),保持成像平面與裂縫表面平行,測量拍攝時(shí)的物距并記錄焦距。
同時(shí),對于這種尺寸較大的圖像,本文先將圖像縮小至原來的十分之一,圖像通過算法模型后,再將數(shù)據(jù)包括數(shù)值與圖像放大至10倍,從而加快圖像處理過程,并得到與原圖直接處理相一致的數(shù)據(jù)。其中,縮小和放大圖像時(shí),插值方法選擇OpenCV中的基于像素區(qū)域關(guān)系的插值算法(INTER_AREA),這種方法可以避免產(chǎn)生波紋現(xiàn)象,插值效果較好。實(shí)驗(yàn)數(shù)據(jù)如表4所示。
表4 裂縫長度計(jì)算 mm
計(jì)算的長度與實(shí)際長度的相對誤差平均值為7.83%,分析誤差產(chǎn)生的原因,一個(gè)主要原因是在提取裂縫骨架時(shí)會(huì)出現(xiàn)許多分叉,而在實(shí)際測量時(shí),測量的是主骨架的長度,不包括分叉,如圖9所示,因而產(chǎn)生了誤差。
圖9 長度計(jì)算實(shí)驗(yàn)
3.3.2 遠(yuǎn)距離裂縫區(qū)域提取
使用同樣的相機(jī)對遠(yuǎn)距離的建筑物表面裂縫進(jìn)行處理,提取裂縫區(qū)域。處理結(jié)果如圖10所示。
圖10 提取裂縫區(qū)域
拍攝時(shí),物距保持在10~20 m。經(jīng)過處理后,可以較為完整地從圖像中提取出裂縫區(qū)域。遠(yuǎn)距離裂縫圖像處理的精度受圖像采集設(shè)備的影響更大,使用焦距更高、性能更優(yōu)的采集設(shè)備可以采集到成像質(zhì)量更高的圖像,有利于提取裂縫區(qū)域與計(jì)算數(shù)據(jù)。
3.3.3 智能平臺(tái)效果展示
在“程序首頁”界面能夠直觀地了解本小程序的所能實(shí)現(xiàn)的功能,在“建議反饋”界面用戶可以上傳自己的建議到微信小程序自帶的云數(shù)據(jù)庫,在“開始檢測”界面用戶能夠上傳圖片進(jìn)行裂縫檢測,最后“檢測結(jié)果”界面展示所檢測到裂縫的形狀以及相關(guān)參數(shù)。如圖11所示。
圖11 智能平臺(tái)效果展示
本文針對目前市場緊缺大型建筑物遠(yuǎn)距離裂縫檢測智能儀器的現(xiàn)狀,開發(fā)了基于微信小程序和Python Flask的智能檢測平臺(tái),通過對裂縫特征的提取,得到裂縫圖像以及其長度、面積等相關(guān)信息,之后依據(jù)相關(guān)標(biāo)準(zhǔn)對其進(jìn)行綜合評價(jià),從而實(shí)現(xiàn)對大型建筑物健康狀況的評估,在一定程度上規(guī)避了較大安全隱患。同時(shí),以微信小程序?yàn)橐劳羞M(jìn)行人機(jī)交互,在保證高檢測精度、高工作效率的同時(shí)提高了該檢測平臺(tái)的智能化和市場競爭力。
通過對本項(xiàng)目程序進(jìn)行的實(shí)驗(yàn),可以看出由移動(dòng)端與部署了裂縫檢測算法的云服務(wù)器搭建的裂縫檢測智能平臺(tái)能夠以較高的精度實(shí)現(xiàn)對大型建筑物裂縫的檢測,并達(dá)到了以下效果。
1)簡便快速:基于微信小程序搭建的智能平臺(tái)無需下載,使用移動(dòng)設(shè)備即可登錄微信訪問,用戶上傳圖片即可進(jìn)行檢測。
2)效率高:微信小程序可以直接訪問用戶相冊,并且由于算法質(zhì)量高使得檢測時(shí)間短,用戶檢測一張裂縫圖后可以很快速地檢測下一張。
3)高精度:云服務(wù)器可實(shí)時(shí)檢測,并同步進(jìn)行圖像處理算法模型的在線訓(xùn)練,不斷提高檢測的精度,以適應(yīng)更加復(fù)雜的應(yīng)用場景。
4)云數(shù)據(jù)庫存儲(chǔ):調(diào)用微信小程序自帶的云數(shù)據(jù)庫可以實(shí)現(xiàn)對用戶檢測圖片的儲(chǔ)存以及收集用戶反饋信息。
5)實(shí)現(xiàn)長期裂縫數(shù)據(jù)跟蹤儲(chǔ)存:云服務(wù)器存儲(chǔ)空間可無限擴(kuò)容,因此通過云服務(wù)器可存儲(chǔ)不同時(shí)期裂縫檢測的數(shù)據(jù),形成連貫裂縫跟蹤,便于觀察裂縫是否繼續(xù)擴(kuò)大、擴(kuò)大的速度是怎樣的,從而更好預(yù)測什么時(shí)候該對裂縫進(jìn)行處理。
同時(shí),未來還將進(jìn)一步完善算法,并不局限于微信小程序,擴(kuò)展平臺(tái)類型如APP、網(wǎng)站等。當(dāng)前,工程方面對遠(yuǎn)距離的,能夠?qū)崟r(shí)檢測的、高精度的檢測設(shè)備的需求較大,這樣的設(shè)備能夠滿足對社會(huì)上建筑測量智能化的需求,本研究對于建筑物裂縫智能化檢測、鑒定、評估工作具有重大意義。