當前位置:首頁 > 公眾號精選 > AI科技大本營
[導讀]作者|?小白來源|?小白學視覺混凝土建筑裂縫介紹表面裂縫檢測是監(jiān)測混凝土結構健康的一項重要任務。如果裂紋發(fā)展并繼續(xù)擴展,它們會減少有效承載表面積,并且隨著時間的推移會導致結構失效。裂紋檢測的人工過程費時費力,且受檢驗人員主觀判斷的影響。在高層建筑和橋梁的情況下,手動檢查也可能難以...


作者 | 小白來源 | 小白學視覺


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



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


帶有裂紋的示例圖像


沒有紋的示例圖像可以看出,數據集有各種各樣的圖像——不同顏色、不同強度和形狀的裂縫。


建立模型
對于這個問題,讓我們在 Pytorch 中構建一個卷積神經網絡(CNN)。由于我們的圖像數量有限,因此我們將使用預訓練的網絡作為起點,并使用圖像增強功能來進一步提高準確性。圖像增強使我們能夠進行諸如垂直和水平翻轉、旋轉和亮度變化之類的轉換,從而顯著增加樣本并幫助模型泛化。


對于以下步驟,請參考我在 Github 上的代碼。


將輸入數據混洗并拆分為 Train 和 Val


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


拆分為 train 和 val


應用轉換


Pytorch 可以輕松應用數據轉換,這可以增強訓練數據并幫助模型提高泛化性。我們選擇的轉換是隨機旋轉、隨機水平和垂直翻轉以及隨機顏色抖動。此外,每個通道除以 255,然后歸一化,這有助于神經網絡訓練。


轉變


預訓練模型


我們使用在 ImageNet 上經過預訓練的 Resnet 50 模型來快速啟動模型。如下所示,ResNet50 模型由 5 個階段組成,每個階段都有一個卷積和 Identity 塊。每個卷積塊有 3 個卷積層,每個標識塊也有 3 個卷積層。ResNet-50 有超過 2300 萬個可訓練參數。我們將凍結所有這些權重和 2 個全連接的層——第一層在輸出中有 128 個神經元,第二層在輸出中有 2 個神經元,這是最終的預測。


ResNet50 模型ResNet 模型層


如模型摘要所示,該模型有 2300 萬個不可訓練參數和 262K 個可訓練參數


模型參數


我們使用 Adam 作為優(yōu)化程序并訓練模型 6 個 epoch。
真實圖像上的模型訓練和預測
我們用遷移學習訓練,然后在訓練數據集模型,同時在驗證集上測量損失和準確性。如下面的損失和準確率數字所示,模型訓練的非??臁T诘?1 個 epoch 之后,訓練準確率為 87%,驗證準確率為 97%!這就是遷移學習的力量,我們的最終模型的驗證準確率為 98.4%。


模型訓練統(tǒng)計


在真實圖像上測試模型


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


切片預測


該模型在從未見過的圖像上效果非常好。如下圖所示,該模型能夠通過處理圖像上的 100 多個補丁來檢測混凝土中很長的裂縫。


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


此外,也在道路裂縫上測試了該模型。這個模型沒有在路面數據集上訓練過,但在識別道路裂縫方面也做得很好!


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



在此項目的 github 鏈接上共享了更多現實世界圖像以及有關它們的模型預測。


結論
這篇文章展示了使用深度學習和開源數據構建現實世界的應用程序變得多么容易。整個工作花了半天時間,輸出了一個實用的解決方案。我希望小伙伴們自己嘗試這個代碼,并在更多現實世界的圖像上進行測試。






本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉