博客專欄

EEPW首頁(yè) > 博客 > 使用深度學(xué)習(xí)檢測(cè)混凝土結(jié)構(gòu)中的表面裂縫

使用深度學(xué)習(xí)檢測(cè)混凝土結(jié)構(gòu)中的表面裂縫

發(fā)布人:AI科技大本營(yíng) 時(shí)間:2021-12-15 來(lái)源:工程師 發(fā)布文章

以下文章來(lái)源于小白學(xué)視覺(jué) ,作者小白

1.jpg

混凝土建筑裂縫

介紹

表面裂縫檢測(cè)是監(jiān)測(cè)混凝土結(jié)構(gòu)健康的一項(xiàng)重要任務(wù)。如果裂紋發(fā)展并繼續(xù)擴(kuò)展,它們會(huì)減少有效承載表面積,并且隨著時(shí)間的推移會(huì)導(dǎo)致結(jié)構(gòu)失效。裂紋檢測(cè)的人工過(guò)程費(fèi)時(shí)費(fèi)力,且受檢驗(yàn)人員主觀判斷的影響。在高層建筑和橋梁的情況下,手動(dòng)檢查也可能難以執(zhí)行。在這篇文章中,我們使用深度學(xué)習(xí)來(lái)構(gòu)建一個(gè)簡(jiǎn)單但非常準(zhǔn)確的裂縫檢測(cè)模型。此外,我們?cè)诂F(xiàn)實(shí)世界的數(shù)據(jù)上測(cè)試了模型,發(fā)現(xiàn)該模型在檢測(cè)混凝土和非混凝土結(jié)構(gòu)示例道路中的表面裂縫方面是準(zhǔn)確的。該代碼在Github上的鏈接上開(kāi)源。

數(shù)據(jù)集

在這篇文章中,我們使用了公開(kāi)可用的混凝土裂縫圖像數(shù)據(jù)集,該數(shù)據(jù)集由 20,000 張有裂縫的混凝土結(jié)構(gòu)圖像和 20,000 張無(wú)裂縫的圖像組成。該數(shù)據(jù)集由 458 張高分辨率圖像(4032x3024 像素)生成。數(shù)據(jù)集中的每個(gè)圖像都是 227 x 227 像素的 RGB 圖像。部分有裂紋和無(wú)裂紋的示例圖如下所示:

2.png

帶有裂紋的示例圖像

3.png

沒(méi)有裂紋的示例圖像

可以看出,數(shù)據(jù)集有各種各樣的圖像——不同顏色、不同強(qiáng)度和形狀的裂縫。

建立模型

對(duì)于這個(gè)問(wèn)題,讓我們?cè)?Pytorch 中構(gòu)建一個(gè)卷積神經(jīng)網(wǎng)絡(luò)(CNN)。由于我們的圖像數(shù)量有限,因此我們將使用預(yù)訓(xùn)練的網(wǎng)絡(luò)作為起點(diǎn),并使用圖像增強(qiáng)功能來(lái)進(jìn)一步提高準(zhǔn)確性。圖像增強(qiáng)使我們能夠進(jìn)行諸如垂直和水平翻轉(zhuǎn)、旋轉(zhuǎn)和亮度變化之類的轉(zhuǎn)換,從而顯著增加樣本并幫助模型泛化。

對(duì)于以下步驟,請(qǐng)參考我在 Github 上的代碼。

將輸入數(shù)據(jù)混洗并拆分為 Train 和 Val

下載的數(shù)據(jù)將有 2 個(gè)文件夾,一個(gè)用于正樣本文件夾,一個(gè)用于負(fù)樣本文件夾,我們需要將其拆分為 train 和 val。下面的代碼片段將為 train 和 val 創(chuàng)建新文件夾,并將 85% 的數(shù)據(jù)隨機(jī)混洗到 train 中,并將其余數(shù)據(jù)隨機(jī)放入 val 中。

4.png

拆分為 train 和 val

應(yīng)用轉(zhuǎn)換

Pytorch 可以輕松應(yīng)用數(shù)據(jù)轉(zhuǎn)換,這可以增強(qiáng)訓(xùn)練數(shù)據(jù)并幫助模型提高泛化性。我們選擇的轉(zhuǎn)換是隨機(jī)旋轉(zhuǎn)、隨機(jī)水平和垂直翻轉(zhuǎn)以及隨機(jī)顏色抖動(dòng)。此外,每個(gè)通道除以 255,然后歸一化,這有助于神經(jīng)網(wǎng)絡(luò)訓(xùn)練。

5.png

轉(zhuǎn)變

預(yù)訓(xùn)練模型

我們使用在 ImageNet 上經(jīng)過(guò)預(yù)訓(xùn)練的 Resnet 50 模型來(lái)快速啟動(dòng)模型。如下所示,ResNet50 模型由 5 個(gè)階段組成,每個(gè)階段都有一個(gè)卷積和 Identity 塊。每個(gè)卷積塊有 3 個(gè)卷積層,每個(gè)標(biāo)識(shí)塊也有 3 個(gè)卷積層。ResNet-50 有超過(guò) 2300 萬(wàn)個(gè)可訓(xùn)練參數(shù)。我們將凍結(jié)所有這些權(quán)重和 2 個(gè)全連接的層——第一層在輸出中有 128 個(gè)神經(jīng)元,第二層在輸出中有 2 個(gè)神經(jīng)元,這是最終的預(yù)測(cè)。

6.png

ResNet50 模型

7.png

ResNet 模型層

如模型摘要所示,該模型有 2300 萬(wàn)個(gè)不可訓(xùn)練參數(shù)和 262K 個(gè)可訓(xùn)練參數(shù)

8.png

模型參數(shù)

我們使用 Adam 作為優(yōu)化程序并訓(xùn)練模型 6 個(gè) epoch。

真實(shí)圖像上的模型訓(xùn)練和預(yù)測(cè)

我們用遷移學(xué)習(xí)訓(xùn)練,然后在訓(xùn)練數(shù)據(jù)集模型,同時(shí)在驗(yàn)證集上測(cè)量損失和準(zhǔn)確性。如下面的損失和準(zhǔn)確率數(shù)字所示,模型訓(xùn)練的非??臁T诘?1 個(gè) epoch 之后,訓(xùn)練準(zhǔn)確率為 87%,驗(yàn)證準(zhǔn)確率為 97%!這就是遷移學(xué)習(xí)的力量,我們的最終模型的驗(yàn)證準(zhǔn)確率為 98.4%。

9.png

模型訓(xùn)練統(tǒng)計(jì)

在真實(shí)圖像上測(cè)試模型

現(xiàn)在是最有趣的部分。是的,該模型適用于驗(yàn)證數(shù)據(jù),但我們希望確保它也適用于互聯(lián)網(wǎng)上看不見(jiàn)的數(shù)據(jù)。為了測(cè)試這一點(diǎn),我們隨機(jī)拍攝了混凝土開(kāi)裂結(jié)構(gòu)和路面裂縫的圖像,這些圖像比我們的訓(xùn)練圖像大得多。請(qǐng)記住,該模型是在 227,227 像素的切片上訓(xùn)練的。我們現(xiàn)在將輸入圖像分成小塊并對(duì)其進(jìn)行預(yù)測(cè)。如果模型預(yù)測(cè)有裂紋,我們將補(bǔ)丁涂成紅色(有裂紋),否則將補(bǔ)丁涂成綠色。以下代碼片段將執(zhí)行此操作。

10.png

切片預(yù)測(cè)

該模型在從未見(jiàn)過(guò)的圖像上效果非常好。如下圖所示,該模型能夠通過(guò)處理圖像上的 100 多個(gè)補(bǔ)丁來(lái)檢測(cè)混凝土中很長(zhǎng)的裂縫。

11.png

混凝土裂縫檢測(cè)。左原圖。右側(cè)紅色區(qū)域是有裂紋的預(yù)測(cè),綠色區(qū)域是無(wú)裂紋的預(yù)測(cè)

此外,也在道路裂縫上測(cè)試了該模型。這個(gè)模型沒(méi)有在路面數(shù)據(jù)集上訓(xùn)練過(guò),但在識(shí)別道路裂縫方面也做得很好!

12.png

道路裂縫檢測(cè)。左原圖。右側(cè)紅色區(qū)域是有裂紋的預(yù)測(cè),綠色區(qū)域是無(wú)裂紋的預(yù)測(cè)

在此項(xiàng)目的 github 鏈接上共享了更多現(xiàn)實(shí)世界圖像以及有關(guān)它們的模型預(yù)測(cè)。

結(jié)論

這篇文章展示了使用深度學(xué)習(xí)和開(kāi)源數(shù)據(jù)構(gòu)建現(xiàn)實(shí)世界的應(yīng)用程序變得多么容易。整個(gè)工作花了半天時(shí)間,輸出了一個(gè)實(shí)用的解決方案。我希望小伙伴們自己嘗試這個(gè)代碼,并在更多現(xiàn)實(shí)世界的圖像上進(jìn)行測(cè)試。

參考

2018 — ?zgenel, ?.F., G?nen? Sorgu?, A. “Performance Comparison of Pretrained Convolutional Neural Networks on Crack Detection in Buildings”, ISARC 2018, Berlin.

Good paper on importance of crack detection — https://www.hindawi.com/journals/ace/2018/3924120/

Good blog on Image Classification in Pytorch. Several of the code snippets used in the blog were from here.

Another good blog on Image Classification in Pytorch. Several of the code snippets used in the blog were from here.

Github代碼連接:

https://github.com/priya-dwivedi/Deep-Learning/tree/master/crack_detection

https://github.com/priya-dwivedi/Deep-Learning/blob/master/crack_detection/Crack%20Detection%20Model.ipynb

https://github.com/priya-dwivedi/Deep-Learning/tree/master/crack_detection/real_images

*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。

風(fēng)力發(fā)電機(jī)相關(guān)文章:風(fēng)力發(fā)電機(jī)原理


關(guān)鍵詞: 深度學(xué)習(xí)

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉