據(jù)集工業(yè)視覺(jué)缺陷檢測(cè)實(shí)戰(zhàn):鍋爐水冷壁管表面裂紋識(shí)別)
簡(jiǎn)介本資源是一個(gè)面向工業(yè)視覺(jué)檢測(cè)初學(xué)者與工程師的實(shí)戰(zhàn)項(xiàng)目聚焦鍋爐水冷壁管表面缺陷的自動(dòng)化識(shí)別問(wèn)題解決小樣本條件下高精度缺陷檢測(cè)的技術(shù)難點(diǎn)。項(xiàng)目完整提供數(shù)據(jù)增強(qiáng)策略、遷移學(xué)習(xí)微調(diào)流程及輕量CNN模型實(shí)現(xiàn)方案適用于智能制造、能源設(shè)備運(yùn)維等場(chǎng)景中的低標(biāo)注成本部署需求。壓縮包共824個(gè)文件28.48MB含800張標(biāo)注圖像jpg、9個(gè)核心訓(xùn)練與推理Python腳本、8個(gè)結(jié)構(gòu)化配置與標(biāo)簽JSON文件、3份說(shuō)明文檔md、2個(gè)CSV標(biāo)簽表及1個(gè)已訓(xùn)練模型權(quán)重h5覆蓋數(shù)據(jù)準(zhǔn)備、模型訓(xùn)練、評(píng)估與部署全流程。目前已有55人學(xué)習(xí)下載資源結(jié)構(gòu)清晰包含可直接運(yùn)行的訓(xùn)練代碼、預(yù)處理腳本、淺層CNN模型權(quán)重及l(fā)abel.csv標(biāo)注映射便于快速?gòu)?fù)現(xiàn)、調(diào)試與二次開(kāi)發(fā)是理解小數(shù)據(jù)集工業(yè)缺陷檢測(cè)落地路徑的優(yōu)質(zhì)實(shí)踐參考。1. 項(xiàng)目緣起當(dāng)工業(yè)質(zhì)檢遇上“數(shù)據(jù)荒”在工業(yè)視覺(jué)領(lǐng)域尤其是像鍋爐水冷壁管這類(lèi)特種設(shè)備的表面缺陷檢測(cè)一直是個(gè)老大難問(wèn)題。水冷壁管是鍋爐的核心部件長(zhǎng)期在高溫、高壓、腐蝕性煙氣環(huán)境下工作其表面一旦出現(xiàn)裂紋、凹坑、劃痕或腐蝕點(diǎn)就可能引發(fā)泄漏甚至爆管后果不堪設(shè)想。傳統(tǒng)的人工巡檢不僅效率低下依賴?yán)蠋煾档慕?jīng)驗(yàn)而且存在漏檢、誤檢的風(fēng)險(xiǎn)尤其是在光線不佳、管道密集的區(qū)域。所以用機(jī)器視覺(jué)來(lái)做自動(dòng)化缺陷檢測(cè)幾乎是行業(yè)發(fā)展的必然方向。但理想很豐滿現(xiàn)實(shí)卻很骨感。最大的攔路虎就是“數(shù)據(jù)”。你不可能為了訓(xùn)練一個(gè)模型就讓鍋爐停產(chǎn)然后人為制造出成百上千根帶各種缺陷的真實(shí)水冷壁管來(lái)拍照。真實(shí)的缺陷樣本極其稀少且形態(tài)多變收集成本極高。這就導(dǎo)致了一個(gè)典型的“小樣本”甚至“零樣本”學(xué)習(xí)場(chǎng)景。網(wǎng)上很多教程一上來(lái)就是COCO、ImageNet這種動(dòng)輒幾十萬(wàn)張圖片的數(shù)據(jù)集但在真實(shí)的工業(yè)現(xiàn)場(chǎng)你能有個(gè)幾百?gòu)垬?biāo)注好的缺陷圖都算是“富裕戶”了。這個(gè)項(xiàng)目“使用小數(shù)據(jù)集訓(xùn)練實(shí)現(xiàn)鍋爐水冷璧管表面視覺(jué)缺陷檢測(cè)”的核心挑戰(zhàn)和價(jià)值就在于此如何在數(shù)據(jù)極其有限的情況下構(gòu)建一個(gè)穩(wěn)定、可靠的缺陷檢測(cè)系統(tǒng)這不僅僅是調(diào)個(gè)參那么簡(jiǎn)單它涉及從數(shù)據(jù)策略、模型選型、訓(xùn)練技巧到工程部署的一整套組合拳。最近“halcon缺陷檢測(cè)”、“visionmaster缺陷檢測(cè)”這些工具和平臺(tái)的熱度很高它們提供了強(qiáng)大的底層算法和便捷的圖形化開(kāi)發(fā)環(huán)境確實(shí)能解決很多問(wèn)題。但對(duì)于水冷壁管這種特定場(chǎng)景尤其是小數(shù)據(jù)集條件直接套用模板往往效果不佳。我們需要深入理解缺陷的特性并針對(duì)性地設(shè)計(jì)解決方案。接下來(lái)我就結(jié)合這個(gè)實(shí)戰(zhàn)項(xiàng)目拆解一下從零到一構(gòu)建一個(gè)小數(shù)據(jù)集缺陷檢測(cè)系統(tǒng)的完整思路和實(shí)操細(xì)節(jié)。2. 核心問(wèn)題拆解水冷壁管缺陷檢測(cè)的特殊性在擼起袖子寫(xiě)代碼之前我們必須先搞清楚我們要檢測(cè)的對(duì)象到底是什么樣的。水冷壁管表面缺陷和常見(jiàn)的PCB缺陷、字符缺陷有本質(zhì)區(qū)別這直接決定了我們的技術(shù)路線。2.1 缺陷類(lèi)型與視覺(jué)特征分析水冷壁管的缺陷通常不是那種形狀規(guī)則、對(duì)比度高的目標(biāo)。我們可以將其大致分為幾類(lèi)裂紋這是最危險(xiǎn)也是最重要的檢測(cè)目標(biāo)。通常表現(xiàn)為細(xì)長(zhǎng)、曲折的深色線條可能伴有分支。其寬度可能只有幾個(gè)像素且與背景金屬表面的對(duì)比度受光照、氧化層影響極大。凹坑/腐蝕點(diǎn)由于高溫腐蝕或物料沖刷形成。形狀不規(guī)則多為近似圓形或橢圓形的局部凹陷在側(cè)向光照射下會(huì)形成特定的明暗區(qū)域。劃痕機(jī)械損傷導(dǎo)致呈直線或弧線狀比裂紋更寬、更淺邊緣相對(duì)清晰。焊縫缺陷在水冷壁管的對(duì)接焊縫處可能存在咬邊、未焊透、氣孔等。這類(lèi)缺陷與焊縫紋理混合識(shí)別難度大。這些缺陷的共同特點(diǎn)是尺度多變裂紋可能長(zhǎng)達(dá)幾十厘米在圖像中跨越很大區(qū)域腐蝕點(diǎn)可能只有毫米級(jí)。對(duì)比度低金屬表面反光氧化皮顏色不均缺陷與背景的灰度差可能很小。背景復(fù)雜管道表面有固有的軋制紋理、焊接紋理、氧化皮剝落本身不是缺陷但很像缺陷等干擾。形態(tài)不規(guī)則沒(méi)有固定的形狀模板。2.2 小數(shù)據(jù)集帶來(lái)的根本性挑戰(zhàn)假設(shè)我們只有200-300張標(biāo)注了缺陷的圖片這會(huì)給模型訓(xùn)練帶來(lái)哪些致命問(wèn)題過(guò)擬合Overfitting這是頭號(hào)敵人。模型會(huì)死死記住你這幾百?gòu)堄?xùn)練圖片里的每一個(gè)像素點(diǎn)包括噪聲和特定的背景紋理而無(wú)法學(xué)習(xí)到“缺陷”的本質(zhì)特征。導(dǎo)致在訓(xùn)練集上表現(xiàn)完美一換新圖片就“瞎了”。類(lèi)別不平衡Class Imbalance一張圖片里缺陷區(qū)域可能只占整圖的1%甚至更少。背景負(fù)樣本遠(yuǎn)多于缺陷正樣本。模型會(huì)傾向于把所有區(qū)域都預(yù)測(cè)為背景因?yàn)檫@樣它的損失函數(shù)值也能很低。特征表達(dá)不充分深度學(xué)習(xí)模型可以看作一個(gè)復(fù)雜的特征提取器。數(shù)據(jù)太少它無(wú)法見(jiàn)識(shí)到足夠多的缺陷變體不同粗細(xì)、長(zhǎng)短、朝向、對(duì)比度的裂紋因此學(xué)到的特征空間是稀疏和不完備的泛化能力弱。理解了這些我們的所有技術(shù)手段都將圍繞對(duì)抗過(guò)擬合、緩解類(lèi)別不平衡、增強(qiáng)特征表達(dá)這三個(gè)核心目標(biāo)展開(kāi)。3. 數(shù)據(jù)工程的“降龍十八掌”小數(shù)據(jù)集的煉金術(shù)在數(shù)據(jù)有限的情況下數(shù)據(jù)工程的質(zhì)量直接決定了模型性能的天花板。這里不能簡(jiǎn)單地調(diào)用一個(gè)ImageDataGenerator了事必須有針對(duì)性地進(jìn)行設(shè)計(jì)。3.1 數(shù)據(jù)采集與標(biāo)注的“心法”采集是第一環(huán)。對(duì)于水冷壁管光照方案必須使用可控光源。推薦使用低角度環(huán)形光或條形光這種打光方式能讓凹陷如裂紋、凹坑產(chǎn)生明顯的陰影增強(qiáng)邊緣對(duì)比度是凸顯表面微小起伏的利器。要避免正面直射光它會(huì)使表面反光過(guò)強(qiáng)淹沒(méi)缺陷信息。相機(jī)與分辨率根據(jù)檢測(cè)精度要求選擇相機(jī)。若要檢測(cè)0.1mm寬的裂紋結(jié)合視野大小計(jì)算出所需相機(jī)分辨率。通常需要較高的分辨率如500萬(wàn)像素以上以便在裁剪放大后仍能看清細(xì)節(jié)。背景多樣化盡管是在同一類(lèi)管道上拍攝也要盡可能變化拍攝角度、距離、以及管道表面的清潔程度有無(wú)灰塵、水漬增加背景的多樣性讓模型學(xué)會(huì)排除這些干擾。標(biāo)注是關(guān)鍵。使用LabelImg、CVAT等工具進(jìn)行精細(xì)標(biāo)注。對(duì)于裂紋由于其細(xì)長(zhǎng)特性用矩形框Bounding Box會(huì)包含大量背景建議使用多邊形Polygon或線段Line進(jìn)行精確勾勒。如果采用目標(biāo)檢測(cè)框架標(biāo)注成矩形框時(shí)需要評(píng)估其帶來(lái)的噪聲影響。統(tǒng)一標(biāo)注標(biāo)準(zhǔn)明確什么樣的劃痕算缺陷多深的凹坑需要被檢出。最好由多位標(biāo)注人員交叉檢查確保一致性。小數(shù)據(jù)集下每一個(gè)標(biāo)注錯(cuò)誤都會(huì)被模型放大。3.2 數(shù)據(jù)增強(qiáng)Data Augmentation的針對(duì)性策略數(shù)據(jù)增強(qiáng)是我們“創(chuàng)造”更多訓(xùn)練樣本的核心手段。但增強(qiáng)不能亂用必須貼合物理實(shí)際?;A(chǔ)幾何增強(qiáng)旋轉(zhuǎn)±5°以內(nèi)因?yàn)橄鄼C(jī)視角通常固定、平移、縮放。這些模擬了相機(jī)輕微的位姿變化。核心——光度增強(qiáng)這是針對(duì)低對(duì)比度缺陷的關(guān)鍵。對(duì)比度調(diào)整隨機(jī)輕微降低或提高對(duì)比度模擬光照強(qiáng)度變化。亮度調(diào)整模擬環(huán)境光變化。添加高斯噪聲模擬相機(jī)傳感器噪聲。模糊添加輕微的高斯模糊或運(yùn)動(dòng)模糊模擬相機(jī)對(duì)焦輕微不準(zhǔn)或抖動(dòng)。顏色擾動(dòng)在HSV空間輕微擾動(dòng)色相、飽和度模擬不同色溫光源或氧化層顏色變化。高級(jí)增強(qiáng)技術(shù)CutOut/Random Erasing隨機(jī)遮擋圖像的一部分強(qiáng)迫模型不只依賴最明顯的區(qū)域來(lái)判斷提升魯棒性。但要注意別把缺陷區(qū)域蓋住了。MixUp將兩張圖像以一定比例混合同時(shí)其標(biāo)簽也按比例混合。這能鼓勵(lì)模型學(xué)習(xí)更平滑的決策邊界是防止過(guò)擬合的強(qiáng)效手段。公式簡(jiǎn)單new_image λ * image1 (1-λ) * image2new_label λ * label1 (1-λ) * label2其中λ取自Beta分布。Copy-Paste對(duì)于凹坑、腐蝕點(diǎn)這類(lèi)局部缺陷可以從一張圖裁剪出缺陷區(qū)域粘貼到另一張圖的隨機(jī)位置注意邊緣融合。這能有效增加正樣本數(shù)量但對(duì)裂紋這種長(zhǎng)條狀、需要連貫性的缺陷需謹(jǐn)慎使用。注意所有增強(qiáng)操作必須在內(nèi)存中實(shí)時(shí)進(jìn)行而不是預(yù)先生成大量圖片存到硬盤(pán)。這既能節(jié)省空間也能保證每個(gè)epoch看到的增強(qiáng)樣本都不同。使用PyTorch的torchvision.transforms或Albumentations庫(kù)可以方便地實(shí)現(xiàn)流水線。3.3 解決類(lèi)別不平衡的采樣策略在數(shù)據(jù)加載時(shí)我們需要讓模型更多地看到“缺陷”。OHEMOnline Hard Example Mining在線難例挖掘。即在訓(xùn)練過(guò)程中不是對(duì)所有樣本的損失一視同仁而是重點(diǎn)關(guān)注那些被當(dāng)前模型分錯(cuò)難例的樣本給它們更高的權(quán)重。這對(duì)于讓模型學(xué)會(huì)分辨那些與背景相似的模糊缺陷非常有效。許多現(xiàn)代檢測(cè)框架如MMDetection已內(nèi)置了OHEM模塊。Focal Loss這是目標(biāo)檢測(cè)中解決類(lèi)別不平衡的經(jīng)典損失函數(shù)。它通過(guò)減少易分類(lèi)樣本的權(quán)重讓模型更專注于難分的樣本。其公式為FL(pt) -αt(1-pt)^γ log(pt)其中pt是模型預(yù)測(cè)該類(lèi)別的概率α是平衡因子γ是調(diào)制因子。當(dāng)γ0時(shí)對(duì)于預(yù)測(cè)概率很高的易分樣本(1-pt)^γ會(huì)很小從而降低其損失貢獻(xiàn)。在實(shí)際應(yīng)用中γ2.0α0.25是一個(gè)不錯(cuò)的起點(diǎn)。4. 模型選型與架構(gòu)優(yōu)化輕量化與高精度博弈面對(duì)小數(shù)據(jù)集我們選擇的模型不能太復(fù)雜參數(shù)過(guò)多易過(guò)擬合但也不能太簡(jiǎn)單能力不足。這是一個(gè)平衡的藝術(shù)。4.1 骨干網(wǎng)絡(luò)Backbone的選擇骨干網(wǎng)絡(luò)負(fù)責(zé)從圖像中提取多層次的特征。對(duì)于工業(yè)缺陷檢測(cè)特別是小目標(biāo)如細(xì)裂紋我們需要一個(gè)能保留豐富空間細(xì)節(jié)信息的網(wǎng)絡(luò)。ResNet家族經(jīng)典之選。ResNet18或ResNet34在速度和精度上取得了很好的平衡。其殘差結(jié)構(gòu)緩解了深層網(wǎng)絡(luò)的梯度消失問(wèn)題易于訓(xùn)練。對(duì)于小數(shù)據(jù)集ResNet18通常是更安全的選擇。輕量化網(wǎng)絡(luò)如果部署在邊緣設(shè)備如工控機(jī)、嵌入式AI相機(jī)可以考慮MobileNetV2/V3、ShuffleNetV2。它們通過(guò)深度可分離卷積大幅減少參數(shù)量和計(jì)算量。但要注意輕量化可能以犧牲一些特征提取能力為代價(jià)在小數(shù)據(jù)集上可能需要更精細(xì)的調(diào)優(yōu)。HRNetHigh-Resolution Network這是一個(gè)非常適合密集預(yù)測(cè)任務(wù)如分割、小目標(biāo)檢測(cè)的網(wǎng)絡(luò)。它始終保持高分辨率特征圖進(jìn)行融合而不是像典型金字塔結(jié)構(gòu)那樣不斷下采樣再上采樣。這對(duì)于檢測(cè)細(xì)長(zhǎng)的裂紋非常有利因?yàn)樗苊饬诵∧繕?biāo)在深層特征圖中“消失”的問(wèn)題。對(duì)于本項(xiàng)目的水冷壁管裂紋檢測(cè)HRNet是一個(gè)強(qiáng)烈推薦的備選方案。4.2 檢測(cè)頭Detection Head與框架選擇目標(biāo)檢測(cè)框架決定了我們?nèi)绾卫霉歉删W(wǎng)絡(luò)提取的特征來(lái)預(yù)測(cè)目標(biāo)框。單階段檢測(cè)器如YOLO系列、RetinaNet速度快結(jié)構(gòu)相對(duì)簡(jiǎn)單。YOLOv5/v8的社區(qū)生態(tài)好易于部署。RetinaNet原生設(shè)計(jì)了Focal Loss非常適合我們這種正負(fù)樣本極不平衡的場(chǎng)景。對(duì)于初學(xué)者或追求部署效率YOLOv5/v8是很好的起點(diǎn)。兩階段檢測(cè)器如Faster R-CNN精度通常更高但速度慢參數(shù)多。其Region Proposal Network (RPN)階段可以看作一個(gè)初步的缺陷區(qū)域篩選器對(duì)于復(fù)雜背景可能更有優(yōu)勢(shì)。但在小數(shù)據(jù)集上其更復(fù)雜的結(jié)構(gòu)可能更容易過(guò)擬合。Anchor-Free檢測(cè)器如FCOS、CenterNet免去了預(yù)設(shè)Anchor的麻煩直接預(yù)測(cè)目標(biāo)中心點(diǎn)或邊界。這類(lèi)模型設(shè)計(jì)更簡(jiǎn)潔可能在小數(shù)據(jù)集上泛化更好因?yàn)闇p少了對(duì)Anchor尺度和比例的先驗(yàn)假設(shè)這些假設(shè)可能不適合新奇的缺陷形狀。我的實(shí)戰(zhàn)建議從小數(shù)據(jù)集和快速驗(yàn)證的角度出發(fā)可以按這個(gè)順序嘗試YOLOv8使用其YOLOv8n或YOLOv8s納米或小模型版本。它集成了很多現(xiàn)代訓(xùn)練技巧文檔豐富容易上手。先把它作為一個(gè)強(qiáng)基線Baseline。RetinaNet如果YOLO對(duì)細(xì)小裂紋檢出率低換用RetinaNet以ResNet18或34為骨干利用其Focal Loss直接攻擊類(lèi)別不平衡問(wèn)題。FCOSHRNet如果追求更高精度特別是對(duì)小目標(biāo)可以嘗試FCOS這類(lèi)Anchor-Free方法并搭配HRNet作為骨干網(wǎng)絡(luò)。這個(gè)組合在學(xué)術(shù)論文中在小目標(biāo)檢測(cè)上表現(xiàn)優(yōu)異但實(shí)現(xiàn)和調(diào)參可能稍復(fù)雜。4.3 針對(duì)小數(shù)據(jù)集的模型微調(diào)技巧我們通常采用遷移學(xué)習(xí)Transfer Learning策略。即在一個(gè)大型通用數(shù)據(jù)集如ImageNet或COCO上預(yù)訓(xùn)練好的模型上用我們的小數(shù)據(jù)集進(jìn)行微調(diào)Fine-tuning。分層學(xué)習(xí)率Layer-wise Learning Rate模型的不同層對(duì)任務(wù)的貢獻(xiàn)不同。底層的卷積核學(xué)習(xí)的是通用邊緣、紋理特征這些特征對(duì)于任何圖像任務(wù)都有用應(yīng)該用較小的學(xué)習(xí)率微調(diào)避免破壞。高層的網(wǎng)絡(luò)負(fù)責(zé)組合這些特征進(jìn)行特定分類(lèi)/檢測(cè)需要更大的學(xué)習(xí)率來(lái)快速適應(yīng)新任務(wù)??梢栽O(shè)置兩組參數(shù)骨干網(wǎng)絡(luò)參數(shù)用較小的學(xué)習(xí)率如base_lr * 0.1檢測(cè)頭參數(shù)用較大的學(xué)習(xí)率base_lr。早停法Early Stopping持續(xù)監(jiān)控模型在驗(yàn)證集上的性能如mAP。當(dāng)性能在連續(xù)多個(gè)epoch如10-20個(gè)不再提升甚至下降時(shí)立即停止訓(xùn)練并回滾到驗(yàn)證集性能最好的那個(gè)模型權(quán)重。這是防止過(guò)擬合最簡(jiǎn)單有效的方法。權(quán)重衰減Weight Decay與Dropout權(quán)重衰減L2正則化通過(guò)在損失函數(shù)中添加模型權(quán)重的平方和懲罰大的權(quán)重值使模型更簡(jiǎn)單。Dropout在訓(xùn)練時(shí)隨機(jī)“關(guān)閉”一部分神經(jīng)元可以看作是一種模型平均能有效防止過(guò)擬合。在訓(xùn)練小數(shù)據(jù)集時(shí)可以適當(dāng)增大權(quán)重衰減系數(shù)如1e-4或在全連接層使用Dropout。5. 訓(xùn)練策略與超參數(shù)調(diào)優(yōu)讓每一份數(shù)據(jù)都發(fā)揮價(jià)值有了好的數(shù)據(jù)和模型架構(gòu)訓(xùn)練過(guò)程就是臨門(mén)一腳。5.1 損失函數(shù)組合拳單一的損失函數(shù)可能不夠。對(duì)于目標(biāo)檢測(cè)總損失通常是多個(gè)損失的加權(quán)和Total Loss L_classification λ1 * L_box_regression λ2 * L_objectnessL_classification分類(lèi)損失用于判斷框內(nèi)物體是缺陷還是背景。這里強(qiáng)烈推薦使用Focal Loss替代標(biāo)準(zhǔn)的交叉熵?fù)p失。L_box_regression邊界框回歸損失用于精修預(yù)測(cè)框的位置。常用Smooth L1 Loss或GIoU Loss。GIoU Loss考慮了框的重疊面積和包含關(guān)系比傳統(tǒng)的L1 Loss更符合檢測(cè)任務(wù)的評(píng)估指標(biāo)。L_objectness目標(biāo)性損失在YOLO等框架中存在判斷網(wǎng)格內(nèi)是否有物體。對(duì)于小目標(biāo)這個(gè)損失很重要。調(diào)整λ1和λ2的權(quán)重可以控制模型是更關(guān)注“找對(duì)位置”還是“分對(duì)類(lèi)別”。初期可以設(shè)為1.0后續(xù)根據(jù)驗(yàn)證集上框的定位精度和分類(lèi)精度來(lái)微調(diào)。5.2 學(xué)習(xí)率調(diào)度與優(yōu)化器選擇優(yōu)化器AdamWAdam with decoupled weight decay是目前的主流選擇。它結(jié)合了Adam的自適應(yīng)學(xué)習(xí)率優(yōu)點(diǎn)和正確的權(quán)重衰減實(shí)現(xiàn)通常比SGD更穩(wěn)定收斂更快。對(duì)于小數(shù)據(jù)集這是一個(gè)更安全的選擇。學(xué)習(xí)率調(diào)度不要使用固定學(xué)習(xí)率。Warmup訓(xùn)練開(kāi)始時(shí)學(xué)習(xí)率從一個(gè)很小的值如1e-6線性增加到初始學(xué)習(xí)率如1e-3持續(xù)幾個(gè)epoch。這有助于穩(wěn)定訓(xùn)練初期防止梯度爆炸。余弦退火Cosine Annealing這是我最喜歡用的調(diào)度策略。學(xué)習(xí)率隨著訓(xùn)練過(guò)程按照余弦函數(shù)從初始值衰減到接近0。它提供了平滑的下降曲線讓模型在后期也能進(jìn)行精細(xì)調(diào)優(yōu)。公式lr_t lr_min 0.5*(lr_max - lr_min)*(1 cos(T_cur/T_max * π))。其中T_cur是當(dāng)前epoch數(shù)T_max是總epoch數(shù)。OneCycleLR一種更激進(jìn)的策略學(xué)習(xí)率會(huì)先上升再下降像一個(gè)三角形。配合動(dòng)量Momentum的反向變化據(jù)說(shuō)能實(shí)現(xiàn)更快的收斂。但在小數(shù)據(jù)集上可能不夠穩(wěn)定需要謹(jǐn)慎嘗試。一個(gè)典型的訓(xùn)練配置可能是使用AdamW優(yōu)化器初始學(xué)習(xí)率3e-4權(quán)重衰減1e-4。采用5個(gè)epoch的Warmup然后進(jìn)行余弦退火總epoch數(shù)設(shè)為100-200根據(jù)早停決定實(shí)際停止點(diǎn)。5.3 驗(yàn)證與評(píng)估守住泛化的底線必須從有限的標(biāo)注數(shù)據(jù)中分出一部分作為驗(yàn)證集Validation Set絕對(duì)不能用于訓(xùn)練。通??梢园?:1:1或7:2:1劃分訓(xùn)練集、驗(yàn)證集、測(cè)試集。如果數(shù)據(jù)實(shí)在太少如少于100張可以考慮使用K折交叉驗(yàn)證。評(píng)估指標(biāo)至關(guān)重要mAPmean Average Precision這是目標(biāo)檢測(cè)的核心指標(biāo)。它計(jì)算了在不同置信度閾值下模型對(duì)每個(gè)類(lèi)別的平均精度AP然后對(duì)所有類(lèi)別取平均。對(duì)于缺陷檢測(cè)通常就“缺陷”一個(gè)類(lèi)別mAP就是AP。AP綜合考慮了查準(zhǔn)率Precision和查全率Recall是一個(gè)更全面的指標(biāo)。Precision-Recall曲線繪制P-R曲線觀察曲線下的面積即AP。一個(gè)健康的曲線應(yīng)該是凸起的靠近右上角。如果曲線很早就急劇下降說(shuō)明模型查準(zhǔn)率尚可但查全率低漏檢多如果曲線一直上不去說(shuō)明查準(zhǔn)率低誤檢多。針對(duì)業(yè)務(wù)的定制指標(biāo)在工業(yè)場(chǎng)景不同類(lèi)型的缺陷代價(jià)不同。例如漏檢一個(gè)裂紋的代價(jià)遠(yuǎn)高于誤檢一個(gè)劃痕。因此可以根據(jù)業(yè)務(wù)需求為不同缺陷類(lèi)型設(shè)定不同的權(quán)重計(jì)算一個(gè)加權(quán)的mAP或者在特定召回率下比較精度。6. 工程落地與后處理從模型輸出到可靠報(bào)警模型訓(xùn)練好mAP看起來(lái)不錯(cuò)但這只是萬(wàn)里長(zhǎng)征第一步。如何讓它在產(chǎn)線上穩(wěn)定運(yùn)行才是真正的考驗(yàn)。6.1 模型部署與加速格式轉(zhuǎn)換將訓(xùn)練好的PyTorch.pt或TensorFlow.h5模型轉(zhuǎn)換為適合部署的格式。ONNX一個(gè)開(kāi)放的模型交換格式。幾乎所有的推理框架OpenVINO, TensorRT, ONNX Runtime都支持它。將模型轉(zhuǎn)為ONNX是通用性最強(qiáng)的第一步。TensorRT如果部署在NVIDIA GPU上TensorRT能對(duì)模型進(jìn)行圖優(yōu)化、層融合、精度校準(zhǔn)INT8量化大幅提升推理速度。通常路徑是PyTorch - ONNX - TensorRT。OpenVINOIntel推出的工具套件用于在Intel CPU、集成顯卡、VPU上加速推理。同樣支持ONNX模型并能進(jìn)行量化。推理引擎集成在C/Python工程中調(diào)用TensorRT或OpenVINO的API來(lái)加載優(yōu)化后的模型進(jìn)行推理。對(duì)于工控環(huán)境C是更常見(jiàn)的選擇。6.2 后處理邏輯設(shè)計(jì)模型輸出的是一堆帶有置信度的預(yù)測(cè)框我們需要將其轉(zhuǎn)化為清晰的“通過(guò)/不通過(guò)”信號(hào)。非極大值抑制NMS消除同一個(gè)缺陷被重復(fù)預(yù)測(cè)的多個(gè)框。設(shè)置一個(gè)IoU閾值如0.5將重疊度高的框中只保留置信度最高的那個(gè)。置信度閾值過(guò)濾設(shè)定一個(gè)置信度閾值如0.6。低于此閾值的預(yù)測(cè)框被認(rèn)為是不可靠的直接過(guò)濾掉。這個(gè)閾值需要根據(jù)驗(yàn)證集上的P-R曲線來(lái)選取通常是在查準(zhǔn)率和查全率之間找一個(gè)業(yè)務(wù)可接受的平衡點(diǎn)。如果怕漏檢閾值可以設(shè)低點(diǎn)如0.3如果怕誤檢閾值就設(shè)高點(diǎn)如0.7。業(yè)務(wù)規(guī)則過(guò)濾尺寸過(guò)濾對(duì)于水冷壁管小于某個(gè)面積如10像素的缺陷點(diǎn)可能是噪聲可以忽略。位置過(guò)濾如果知道某些區(qū)域如焊縫附近的特定紋理容易誤報(bào)可以設(shè)置一個(gè)“忽略區(qū)域”ROI該區(qū)域內(nèi)的檢測(cè)結(jié)果不予報(bào)警。連續(xù)性判斷對(duì)于裂紋如果模型輸出的是多個(gè)離散的小段框可以通過(guò)判斷框之間的距離和方向?qū)⑺鼈冞B接成一條完整的裂紋并計(jì)算總長(zhǎng)度。長(zhǎng)度超過(guò)閾值的才報(bào)警。6.3 系統(tǒng)集成與誤報(bào)處理多幀融合對(duì)于安裝在移動(dòng)滑臺(tái)或機(jī)器人上的相機(jī)可以對(duì)同一段管道拍攝多張有重疊的圖片。檢測(cè)完成后可以將多張圖的結(jié)果進(jìn)行拼接和去重得到整段管道的缺陷分布圖。誤報(bào)學(xué)習(xí)與過(guò)濾系統(tǒng)運(yùn)行一段時(shí)間后會(huì)積累大量的“誤報(bào)”樣本模型預(yù)測(cè)為缺陷但人工復(fù)核不是。可以將這些樣本加入訓(xùn)練集作為“困難負(fù)樣本”重新訓(xùn)練模型這是提升模型在實(shí)際場(chǎng)景中性能的最有效手段之一。人機(jī)交互界面需要開(kāi)發(fā)一個(gè)界面用于顯示原始圖像、檢測(cè)結(jié)果框、置信度并提供人工復(fù)核和打標(biāo)簽的功能。這是閉環(huán)迭代不可或缺的一環(huán)。7. 項(xiàng)目復(fù)盤(pán)與避坑指南做完這個(gè)項(xiàng)目我踩過(guò)的坑比檢測(cè)出的裂紋還多。這里分享幾條血淚教訓(xùn)數(shù)據(jù)數(shù)據(jù)還是數(shù)據(jù)最初我們花了80%的時(shí)間在調(diào)模型和參數(shù)上收效甚微。后來(lái)把精力轉(zhuǎn)回?cái)?shù)據(jù)仔細(xì)清洗了標(biāo)注清除了大量模棱兩可的框并設(shè)計(jì)了更貼合物理實(shí)際的數(shù)據(jù)增強(qiáng)策略特別是光度增強(qiáng)模型性能立竿見(jiàn)影地提升了20%以上。在數(shù)據(jù)質(zhì)量面前算法技巧都是弟弟。不要盲目追求最潮的模型。我們一開(kāi)始就試了當(dāng)時(shí)最新的Transformer-based檢測(cè)器如DETR結(jié)果在小數(shù)據(jù)集上慘不忍睹收斂極慢。最后還是YOLOv5和RetinaNet這種經(jīng)典結(jié)構(gòu)最穩(wěn)。新技術(shù)往往需要大量數(shù)據(jù)才能發(fā)揮威力。驗(yàn)證集要“干凈”且“有代表性”。我們?cè)恍⌒陌岩恍┍尘疤貏e簡(jiǎn)單、缺陷特別明顯的圖片放進(jìn)了驗(yàn)證集導(dǎo)致訓(xùn)練時(shí)驗(yàn)證指標(biāo)虛高誤以為模型很好一上真實(shí)產(chǎn)線就崩了。驗(yàn)證集必須包含各種難度的樣本特別是那些背景復(fù)雜、缺陷模糊的“硬骨頭”。警惕“標(biāo)注泄露”。在做數(shù)據(jù)增強(qiáng)時(shí)尤其是Copy-Paste要確保粘貼的缺陷不會(huì)出現(xiàn)在另一張圖的同一絕對(duì)位置否則模型可能會(huì)記住這個(gè)位置特征而不是缺陷本身。增強(qiáng)時(shí)要進(jìn)行隨機(jī)的仿射變換。部署時(shí)的環(huán)境一致性。訓(xùn)練時(shí)用的圖像預(yù)處理歸一化均值、標(biāo)準(zhǔn)差必須和部署時(shí)完全一致。我們吃過(guò)一次虧訓(xùn)練時(shí)用了mean[0.485, 0.456, 0.406]部署時(shí)工程師忘了配置結(jié)果模型輸出全是亂碼。最好把預(yù)處理代碼封裝成與模型綁定的模塊。理解硬件限制。在工控機(jī)上部署時(shí)發(fā)現(xiàn)INT8量化后的模型速度確實(shí)快但某些細(xì)小裂紋的檢出率下降了。這是因?yàn)榱炕瘞?lái)了精度損失。最后我們根據(jù)實(shí)際性能要求選擇了FP16精度在速度和精度間取得了平衡。量化不是銀彈需要實(shí)測(cè)。這個(gè)項(xiàng)目讓我深刻體會(huì)到工業(yè)AI落地是一個(gè)系統(tǒng)工程算法只占其中一部分。對(duì)業(yè)務(wù)場(chǎng)景的深度理解缺陷的物理成因、成像特點(diǎn)、嚴(yán)謹(jǐn)?shù)臄?shù)據(jù)工程、穩(wěn)健的工程實(shí)現(xiàn)三者缺一不可。小數(shù)據(jù)集訓(xùn)練更像是一門(mén)“手藝”需要耐心、細(xì)心和對(duì)每一個(gè)環(huán)節(jié)的精心打磨。當(dāng)你看到系統(tǒng)成功捕捉到那條肉眼都難以察覺(jué)的細(xì)微裂紋時(shí)所有的折騰都值了。本文還有配套的精品資源點(diǎn)擊獲取