瀝青路面裂縫的目標檢測與圖像分類任務

文章題目是《A grid‐based classification and box‐based detection fusion model for asphalt pavement crack》

于2023年發表在《Computer‐Aided Civil and Infrastructure Engineering》

論文采用了一種基于網格分類和基于框的檢測(GCBD),其中基于網格分類的部分主要用于對裂縫區域進行細粒度劃分,是同時進行分類和檢測的。

📌文章針對目前存在的問題:

  • 網格的局部感受野無法提取裂縫的整體特征難以對橫向裂縫、縱向裂縫的宏觀特征進行判斷
  • 目標檢測容易產生大量冗余預測框,并且裂縫獨特的拓撲結構會干擾通用的非極大值抑制算法的篩選過濾,造成裂縫檢測性能的劣化

?論文的主要貢獻:

  1. 構建了大規模高質量標注瀝青路面病害圖像雙標記數據集
  2. 模型同時實現分類與檢測
  3. 提出了基于網格的圖像分類策略,一次性識別整張圖像所有的網格
  4. 基于改進YOLOv5框的檢測
  5. 構建了一個集成GCBD的融合模型
  6. 達到工業級的應用性能水平,符合工程標準(《公路技術狀況評定標準JTG5210-2018》)(基于grid和box都可以計算路面病害的面積)
  7. 輸出結果可直接用于計算路面狀況指數(PCI)

🧠整體的網絡結構非常清晰明了,一共就是四步,其中NMS-ARS和MaM是文章提出的后處理方法,分類頭和檢測頭共享骨干網絡的參數。

?🔢關于數據集

  • 圖像大小為2048×204820000張,按6:2:2劃分
  • 在自上而下的相機視圖中,地面采樣距離約為1毫米
  • 圖像來自北京、湖南、廣東、新疆
  • 包含多個復雜的場景(如樹葉、沙子、水、陰影)
  • 所有圖像都使用所提出的融合模型的雙重方法進行注釋
  • 基于網格的方法將圖像分為20 × 20個單元格,那么對于2048*2048大小的圖像來說的話每個單元格就是102.4*102.4像素的,resize到640*640每個單元格就是32*32像素的

🔔grid和box標注的規范

🔁左圖中橙色是修補Repair,LC是縱向裂縫,TC是橫向裂縫,AC是龜裂,SR是條狀修補,TM就是交通標線了,就是道路上的那兩條白色線條

💡Preprocessing-Data Augmentation?

  • 將圖像調整為640×640,像素值在01之間進行歸一化
  • 圖像增強僅在水平和垂直翻轉,概率為50%
  • 色調、飽和度和值 (HSV) 顏色空間中的 HS V 通道中添加擾動來執行顏色抖動
  • 路面裂縫圖像的色調相對單一,而飽和度和值隨環境因素(如光照)顯著變化。因此,色調H的干擾系數較小(0.015, 但飽和度S和值V較大(分別為 0.7 0.4
  • Mosaic增強用于通過四個圖像來豐富上下文
  • 不能使用翻轉,這樣的話會混淆TC和LC的

?💡Preprocessing-Dimension Cluster

  • 采用K-Means聚類和遺傳算法生成自適應錨點
  • anchor box影響預測框的規模和質量
  • p1000 代進化錨點后,錨點的大小為 (53, 65)(206, 48)(49, 228)(52, 621)(496, 73)(80, 576)(55, 141)(201, 543) (405, 577),最好的可能召回率為 99.3%,也就是說可以使用上述錨點檢測到最多 99.3% 的對象

?💡Preprocessing-Coordinate Transformation

? ? ? ?🥇這一步就是將網格標簽和檢測標簽建立在同一坐標系上,換句話說就是,網格標簽也采用目標檢測的標簽形式,只不過網格的類別用負數標記,從-1開始。?

3 0.797297 0.350000 0.405405 0.100000
-4 0.851351 0.325000 0.027027 0.050000
-4 0.878378 0.325000 0.027027 0.050000
-4 0.905405 0.325000 0.027027 0.050000
-4 0.932432 0.325000 0.027027 0.050000
-4 0.959459 0.325000 0.027027 0.050000
-4 0.986486 0.325000 0.027027 0.050000
-4 0.608108 0.375000 0.027027 0.050000
-4 0.635135 0.375000 0.027027 0.050000
-4 0.662162 0.375000 0.027027 0.050000
-4 0.689189 0.375000 0.027027 0.050000
-4 0.716216 0.375000 0.027027 0.050000
-4 0.743243 0.375000 0.027027 0.050000
-4 0.770270 0.375000 0.027027 0.050000
-4 0.797297 0.375000 0.027027 0.050000
-4 0.824324 0.375000 0.027027 0.050000
-4 0.851351 0.375000 0.027027 0.050000?

🧶Training

  • 共享骨干網絡聯合訓練的多視覺任務模型
  • 骨干網絡提取高維深度特征
  • 網絡分類分支和標框檢測分支分別整合微觀和宏觀特征

CBS: Conv、BNsigmoid linear unit(SiLU)對圖像進行五次下采用,最終的特征圖大小是20×20

C3T塊由三個卷積塊和一個瓶頸T_N塊組成,集成了特征映射,消耗的計算資源更少

🎨loss function?

🧱網格和框損失函數的分配系數是0.2,也就是α是0.2,這可以設置為一個超參數。

? ? ? ?在進行計算損失的時候,box就按照BBR的損失正常計算就行,grid是先將真實標簽的box轉換為grid網格的形式,用一個常數標記,比如1。基于grid的分類方法可以一次性對一幅圖像上的所有網格單元進行分類。

? ? ? ?📝grid的預測值是一個思維張量,形狀為[B,C,H,W],B就是batch size,C是grid的類別數,H和W是特征圖的高寬。預測張量中的每個值表示對應位置的grid單元屬于特定類別的概率(經過sigmoid激活后)。

🎨超參數

  • 模型采用遷移學習和多任務學習。檢測網絡在COCO數據集中的常見對象上進行了預訓練
  • 分類網絡和檢測網絡聯合訓練小批量大小為 64
  • 100 epoch
  • SGD優化器,學習率是0.01,動量為0.9
  • Weight decay0.0005,學習率采用warm-upcosine decay

?Postprocessing-ARS

? ? ? ?NMS 以高置信度提出了三個預測框 AB C。任意兩個框之間的空隙低于通常的閾值,因此預測的裂紋被計數兩次。如果IoU值過低,其他裂紋將被錯誤地過濾掉。

  • 針對裂縫自相似性等分形幾何拓撲結構,模型改進了標框目標檢測后處理的NMS算法
  • 提出一種面積減少抑制(ARS)增強NMS保留高置信度的預測框,抑制具有高重疊區域的預測框的置信度
  • 先要進行NMS,后再進行ARS

# prediction是經過NMS處理以后預測框的Tensor
def ras(self, prediction):ars_threshold = 0.5 # ars的閾值imgs = 640 # 輸入圖像resize大小output = [torch.zeros((0, 6), device=prediction[0].device)] * len(prediction)for xi, x in enumerate(prediction):n = x.shape[0]_, order = torch.sort(x[:, 4])x = x[order]classes = x[:, 5:6].clone()classes[(classes == torch.tensor(self.crack_classes, device=x.device)).any(1)] = self.crack_classes[0]bias = classes * imgs boxes = x[:, :4] + biasioa = box_ioa(boxes, boxes)mask = torch.arange(n).repeat(n, 1) <= torch.arange(n).view(-1, 1)  # mask low conf boxesioa[mask] = 0x = x[ioa.sum(1) < ars_threshold ]output[xi] = xreturn outputdef box_ioa(box1, box2):area = (box1[:, 2] - box1[:, 0]) * (box1[:, 3] - box1[:, 1])return inter(box1, box2) / area.view(-1, 1) 

?Postprocessing-MaM

  • 提出了MaM過濾噪聲并確定每個網格單元中捕獲的裂紋類型
  • 將檢測盒外的單元格作為噪聲濾除,將檢測盒內的單元格分類為相應的類

  • 第一步計算單元格和所有框之間的IoA,如果最大值為零,則該單元格是噪聲過濾。否則,為單元格分配與網格最大值對應的box
  • 當網格和多個方框的IoA變量同時達到最大值時,按照AC優先級最高、LC優先級最低的原則確定單元格的類別

# ratio 列表用于存儲原始圖像與預處理后(調整大小和填充后的)圖像之間的寬高比
# class_grid2box 這個就是grid類別要匹配的box類別
class_grid2box = {0: (0,), 1: (1,), 2: (2,), 3: (3,)}
for i, (d, g, r) in enumerate(zip(box_pred, grid_pred, ratio)):d[:, :4:2] *= r[0]d[:, 1:4:2] *= r[1]g[:, :4:2] *= r[0]g[:, 1:4:2] *= r[1]g_class = g[:, 5]# change crack classesnew_g = []for gc, v in class_grid2box.items():for bc in v:g_tmp = g[g_class == gc].clone()g_tmp[:, 5:] = bcnew_g.append(g_tmp)g = torch.cat(new_g)if g.numel() > 0 and self.match:d_class = d[:, 5:]d_boxes = d[:, :4] + d_class * 4096g_boxes = g[:, :4] + g[:, 5:] * 4096iou = box_ioa(g_boxes, d_boxes)index = iou.max(1)[0] > 0 if d.numel() > 0 else torch.zeros(g.shape[0], device=self.device).bool()g = g[index]box_pred[i] = dgrid_pred[i] = g

🥯Results

  • 使用兩張內存為80GNVIDIA A100顯卡
  • 在測試集上驗證了GCBD模型的有效性

mAP_{grid-box}中的mAP是grid分類的指標,mAP_{50}是box檢測的指標,考慮到分類和檢測任務的學習難度,mAP與mAP50的比例為1:9。這里的\beta取值為0.1。

  • 對于分類來說,最大F1分數的置信度超過0.8,并且相對接近
  • 過擬合階段的網絡主要關注了學習置信度
  • 分類混淆矩陣中分別有28%9%4%的裂紋、修復和標記與背景沒有區別

  • 對于檢測來說,所有類別的最高F1分數表明置信度較低
  • 從背景中分別錯誤地檢測到0.31LC0.28TC,這表明線性裂紋的特征與背景相似。需要一個強大的特征提取網絡來解決這個問題

分析聯合損失函數下圖像分類和目標檢測的分配系數,結果表明多視覺任務學習具有較強的魯棒性,在保證精度不損失甚至略微增長的前提下有效提高裂縫識別的效率?

改進的NMS能夠有效過濾目標檢測的冗余預測框,改進模型性能,并且緩解不同非極大值抑制算法之間的差距?

  • 基于網格的分類網絡的性能高于基于補丁的分類
  • 基于網格的分類方法具有較大的感受野,可以使用帶有注釋裂紋的數據集來訓練直接識別不同類型裂紋的分類網絡
  • 檢測網絡有效地對裂紋進行分類和定位。在裂縫中,AC最容易識別,而LC最難識別
  • 多任務學習和聯合訓練提高了路面裂縫識別的準確性
  • NMS-ARS考慮了裂縫拓撲結構,有效地過濾了冗余的預測框

🔦但是對于一個非常細小的裂縫進行檢測和分類依舊有些困難,再者就是橫向裂縫和縱向裂縫的判斷也應該還有另外一個標準!!!?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81843.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81843.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81843.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Flask】ORM模型以及數據庫遷移的兩種方法(flask-migrate、Alembic)

ORM模型 在Flask中&#xff0c;ORM&#xff08;Object-Relational Mapping&#xff0c;對象關系映射&#xff09;模型是指使用面向對象的方式來操作數據庫的編程技術。它允許開發者使用Python類和對象來操作數據庫&#xff0c;而不需要直接編寫SQL語句。 核心概念 1. ORM模型…

C/C++滑動窗口算法深度解析與實戰指南

C/C滑動窗口算法深度解析與實戰指南 引言 滑動窗口算法是解決數組/字符串連續子序列問題的利器&#xff0c;通過動態調整窗口邊界&#xff0c;將暴力解法的O(n)時間復雜度優化至O(n)。本文將系統講解滑動窗口的核心原理、C/C實現技巧及經典應用場景&#xff0c;助您掌握這一高…

Vuex使用指南:狀態管理

一、什么是狀態管理&#xff1f;為什么需要 Vuex&#xff1f; 1. 狀態管理的基本概念 在 Vue 應用中&#xff0c;狀態指的是應用中的數據。例如&#xff1a; 用戶登錄狀態購物車中的商品文章列表的分頁信息 狀態管理就是對這些數據的創建、讀取、更新和刪除進行有效管理。 …

【信息系統項目管理師-論文真題】2007下半年論文詳解(包括解題思路和寫作要點)

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 試題1:大型項目的計劃與監控1、寫作要點2、解題思路大型信息系統項目的組織制訂大型信息系統項目進度計劃的方法試題2:組織級項目管理的績效考核1、寫作要點2、解題思路在項目考核過程中會遇到哪些問題項目的…

項目管理學習-CSPM(1)

01引言 最近在學習CSPM的課程&#xff0c;有部分的內容自己還是受益匪淺的&#xff0c;建議有需要提升項目管理能力的同學可以以考促學的方式進行學習&#xff0c;下面整理了一部分內容和大家分享和學習。CSPM全稱 China Standards Project Management&#xff0c;中文名項目管…

介紹分治、動態規劃、回溯分別是什么?有什么聯系和區別?給出對象的場景和java代碼?

一、分治算法&#xff08;Divide and Conquer&#xff09; 概念&#xff1a; 分治算法是將一個復雜問題分成若干個子問題&#xff0c;每個子問題結構與原問題類似&#xff0c;然后遞歸地解決這些子問題&#xff0c;最后將子問題的結果合并得到原問題的解。 特點&#xff1a;…

解鎖DeepSeek模型微調:從小白到高手的進階之路

目錄 一、DeepSeek 模型初相識二、探秘微調原理2.1 遷移學習基礎2.2 微調的參數更新機制 三、數據準備3.1 數據收集3.2 數據標注3.3 數據預處理 四、模型選擇與加載4.1 選擇合適的預訓練模型4.2 加載模型 五、微調訓練實戰5.1 確定微調策略5.2 設置訓練參數5.3 訓練過程 六、模…

端到端觀測分析:從前端負載均衡到后端服務

前言 我們在做系統運維保障的時候&#xff0c;關注從前端負載均衡到后端服務的流量情況是很有必要的&#xff0c;可以了解每個后端服務實例接收的流量大小&#xff0c;這有助于確定資源分配是否合理&#xff0c;能夠幫助找出后端服務中的性能瓶頸。同時&#xff0c;當系統出現…

Ubuntu下OCC7.9+Qt5 快速搭建3D可視化框架

Ubuntu下OCC7.9+Qt5搭建簡易的項目框架 近兩年國產CAD替代如日中天,而幾何內核作為CAD軟件的核心組件之一,當前有且僅有唯一開源的幾何內核庫即OCCT;這里為各位自立于投入CAD開發或正在學習OCC庫的小伙伴們奉獻上一個快速搭建QT+OCC的項目框架; 本文介紹了Qt5+Occ 顯示幾何…

C++類與對象—下:夯實面向對象編程的階梯

9. 賦值運算符重載 9.1 運算符重載 在 C 里&#xff0c;運算符重載能夠讓自定義類型的對象像內置類型那樣使用運算符&#xff0c;這極大地提升了代碼的可讀性與可維護性。運算符重載本質上是一種特殊的函數&#xff0c;其函數名是 operator 加上要重載的運算符。 下面是運算…

【深度學習-Day 6】掌握 NumPy:ndarray 創建、索引、運算與性能優化指南

Langchain系列文章目錄 01-玩轉LangChain&#xff1a;從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊&#xff1a;四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain&#xff1a;從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

工程師 - 汽車分類

歐洲和中國按字母對汽車分類&#xff1a; **軸距**&#xff1a;簡單來說&#xff0c;就是前輪中心點到后輪中心點之間的距離&#xff0c;也就是前輪軸和后輪軸之間的長度。根據軸距的大小&#xff0c;國際上通常把轎車分為以下幾類&#xff08;德國大眾汽車習慣用A\B\C\D分類&a…

[低代碼 + AI] 明道云與 Dify 的三種融合實踐方式詳解

隨著低代碼平臺和大語言模型工具的不斷發展,將企業數據與智能交互能力融合,成為提高辦公效率與自動化水平的關鍵一步。明道云作為一款成熟的低代碼平臺,Dify 則是一個支持自定義工作流的開源 LLM 應用框架。兩者結合,可以實現靈活、高效的智能化業務處理。 本文將詳解明道…

鼠標懸浮特效:常見6種背景類懸浮特效

鼠標懸浮特效&#xff1a;常見6種背景類懸浮特效 前言背景閃現效果預覽代碼展示 元素陰影效果預覽代碼展示 元素懸浮陰影效果預覽代碼展示 元素上浮陰影效果預覽代碼展示 元素邊框陰影效果預覽代碼展示 元素卷角效果預覽代碼展示 結語 前言 在之前的文章中&#xff0c;我們介紹…

[人機交互]理解與概念化交互

零.本章重點&#xff08;理解和分析用戶問題&#xff09; – 解釋“問題空間”的概念和含義 – 解釋如何概念化交互 – 描述什么是概念模型 – 討論將界面隱喻作為概念模型的利弊 – 討論界面具體化和抽象化各自的優缺點 – 概述概念設計和實際設計的關系 一.理解問題空間 簡單…

9.城市基礎設施更新工程

9.1 道路改造施工 9.1.1 道路改造施工內容 瀝青、水泥混凝土、砌塊路面、人行步道、綠化照明、附屬設施、交通標志、瀝青路面材料的再生利用 9.1.2 道路改造施工技術 1.瀝青路面病害及微表處理 1.病害處理 裂縫處理 10mm以內專業灌縫材料或熱瀝青灌縫、潮濕時乳化瀝青灌封…

Milvus(11):動態字段、可歸零和默認值

1 動態字段 Collections 的 Schema 中定義的所有字段都必須包含在要插入的實體中。如果希望某些字段是可選的&#xff0c;可以考慮啟用動態字段。 1.1 概述 在 Milvus 中&#xff0c;可以通過設置 Collections 中每個字段的名稱和數據類型來創建 Collections Schema。向 Schem…

LeetCode41?缺失的第一個正數

關聯LeetCode題號41 本題特點 數組&#xff0c;哈希表 本題思路 找缺失的最小正數&#xff0c;看舉例說明缺失的正數&#xff0c;一種情況是連續的最小的正數&#xff0c;一種是缺失連續但不是最小的正數驗證數組內數組是否連續&#xff0c;可以通過 nums[i]1 是否存nums組…

補題( Convolution, 二維卷積求輸出矩陣元素和最大值)

來源&#xff1a;https://codeforces.com/gym/105231/problem/H 題目描述&#xff1a; 一、題目分析 本題涉及深度學習中的二維卷積操作。給定一個nm的二維輸入矩陣I和一個kl的核矩陣K &#xff0c;通過特定公式計算得到(n - k 1)(m - l 1)的輸出矩陣O &#xff0c;要求在…

【Java ee初階】多線程(7)

一、線程池 線程池的一些參數&#xff1a; corePoolSize&#xff1a;核心線程數量 maximumPoolSize:核心線程數量臨時線程數量 上述是“java 的線程池策略”&#xff08;其他語言&#xff0c;其他庫的線程池可能不同&#xff09; keepAliveTime :臨時線程的存活時間.臨時線程…