合SDI模塊:筆記本LCD屏幕缺陷檢測(cè)與分類(lèi)實(shí)戰(zhàn))
做筆記本LCD屏幕缺陷檢測(cè)的人應(yīng)該都有過(guò)這種體會(huì)產(chǎn)線上一個(gè)米粒大小的亮點(diǎn)強(qiáng)光下明明存在模型卻視而不見(jiàn)一片淡淡的Mura水波紋人眼要來(lái)回?fù)Q幾個(gè)角度才能確認(rèn)模型直接漏成一片空白。我們這次做YOLO11-SEG-SDI實(shí)戰(zhàn)就是沖著這類(lèi)“小而淡”的屏幕缺陷去的。方案核心是用YOLO11-SEG做實(shí)例分割基座再疊加一個(gè)自定義的SDI模塊Spatial-Detail Interaction空間-細(xì)節(jié)交互把上下文信息和細(xì)節(jié)信息重新融合起來(lái)最終在筆記本LCD屏幕缺陷檢測(cè)與分類(lèi)任務(wù)上跑出了一版能實(shí)際落地、能上機(jī)試跑的結(jié)果。這篇文章會(huì)把整體思路、數(shù)據(jù)集建設(shè)、模塊設(shè)計(jì)原理、訓(xùn)練參數(shù)和踩坑記錄完整拆開(kāi)講給做工業(yè)視覺(jué)缺陷檢測(cè)的朋友尤其是被小目標(biāo)、低對(duì)比度缺陷困擾的人提供一個(gè)可以直接參考的完整路線。1. 項(xiàng)目概述與整體設(shè)計(jì)思路1.1 筆記本LCD面板檢測(cè)的真實(shí)痛點(diǎn)筆記本LCD屏幕的缺陷檢測(cè)和普通外觀檢測(cè)有個(gè)本質(zhì)區(qū)別缺陷本身極其不顯眼。我們面對(duì)的缺陷類(lèi)型主要有亮點(diǎn)、暗點(diǎn)、細(xì)劃痕、Mura亮度不均云團(tuán)、臟污和壞線其中大量缺陷的尺寸只有幾百微米到一兩毫米在一整塊14寸屏幕上占比不到千分之一。對(duì)比度更是低得離譜Mura類(lèi)缺陷的灰度差異往往只有幾個(gè)亮度值人眼都需要在暗室、特定光源角度下才能辨認(rèn)。產(chǎn)線上傳統(tǒng)做法是人工目檢老師在強(qiáng)光下逐屏翻看。這里的問(wèn)題很現(xiàn)實(shí)一條產(chǎn)線一個(gè)班次要看上千塊屏幕人的注意力撐不過(guò)兩個(gè)小時(shí)漏檢率隨疲勞程度大幅波動(dòng)而且不同檢驗(yàn)員對(duì)“算不算缺陷”的標(biāo)準(zhǔn)不一致經(jīng)常出現(xiàn)上下游復(fù)判扯皮。我們也試過(guò)傳統(tǒng)機(jī)器視覺(jué)方案閾值分割、頻域?yàn)V波、梯度特征加分類(lèi)器都搭過(guò)單一場(chǎng)景調(diào)得不錯(cuò)換一版屏幕或換一種光源就崩尤其是Mura和細(xì)劃痕這種無(wú)固定形狀、邊緣模糊的目標(biāo)傳統(tǒng)算子基本無(wú)能為力。所以這個(gè)項(xiàng)目的核心訴求非常明確用一套深度學(xué)習(xí)分割模型把“檢測(cè)、分割、分類(lèi)”三件事一次做完。檢測(cè)要足夠敏感漏檢率盡量壓到最低分割要給出缺陷的掩碼方便后續(xù)統(tǒng)計(jì)面積、位置、形態(tài)分類(lèi)要支持按缺陷類(lèi)型分揀方便產(chǎn)線定位問(wèn)題工序。1.2 為什么基座模型選YOLO11-SEG選型的時(shí)候我們對(duì)比過(guò)兩階段檢測(cè)器、經(jīng)典的語(yǔ)義分割網(wǎng)絡(luò)和YOLO系列的分割版本。最后定在YOLO11-SEG理由有三條。第一是實(shí)例分割能力。屏幕缺陷的形態(tài)信息太重要了。劃痕要看方向和長(zhǎng)度Mura要看面積和形狀臟污要看紋理是否規(guī)則。YOLO11-SEG輸出的是“檢測(cè)框?qū)嵗诖a類(lèi)別”掩碼直接給了我們?nèi)毕莸南袼丶?jí)輪廓后處理階段可以順勢(shì)統(tǒng)計(jì)面積、周長(zhǎng)、最小外接矩形等形態(tài)學(xué)參數(shù)這對(duì)產(chǎn)線分揀和缺陷分級(jí)非常關(guān)鍵是純目標(biāo)檢測(cè)框沒(méi)法比的。第二是工程鏈路成熟。YOLO11-SEG的訓(xùn)練、驗(yàn)證、導(dǎo)出、量化、部署有一套完整閉環(huán)對(duì)工業(yè)項(xiàng)目來(lái)說(shuō)能在產(chǎn)線快速落地比單純刷指標(biāo)重要得多。它的網(wǎng)絡(luò)結(jié)構(gòu)在YOLOv8-SEG的基礎(chǔ)上做了不少優(yōu)化backbone里采用了新的卷積堆疊方式整體計(jì)算量控制得不錯(cuò)實(shí)測(cè)單張顯卡就能承載完整訓(xùn)練流程推理速度也能滿足在線檢測(cè)的要求。第三是它對(duì)小目標(biāo)的回歸能力整體好于早期版本。當(dāng)然這話得說(shuō)完整YOLO11-SEG本身對(duì)小目標(biāo)有改善但放到LCD這種極端小目標(biāo)、極端低對(duì)比度的場(chǎng)景里光靠基座模型是不夠的。我們跑過(guò)一輪基線小尺寸的亮點(diǎn)和Mura漏檢率依然偏高這才有了后面加SDI模塊的動(dòng)機(jī)。1.3 SDI模塊到底是解決什么問(wèn)題的SDI全稱(chēng)Spatial-Detail Interaction空間-細(xì)節(jié)交互模塊。聽(tīng)名字可能覺(jué)得玄其實(shí)思路很簡(jiǎn)單屏幕缺陷檢測(cè)難本質(zhì)是“上下文”和“細(xì)節(jié)”這兩個(gè)信息沒(méi)有同時(shí)被用好。什么叫上下文一塊Mura所以你判斷它異常是因?yàn)樗椭車(chē)^(qū)域的亮度分布不一致一條劃痕所以被識(shí)別是因?yàn)樗車(chē)钠聊坏咨蔷鶆虻?。缺陷本身的信?hào)弱但“周?chē)鷳?yīng)該是正常的”這個(gè)信息是強(qiáng)的這就是上下文。什么叫細(xì)節(jié)缺陷尺寸太小進(jìn)了深層特征圖之后往往只剩幾個(gè)像素邊緣、紋理這些高頻信息早就被下采樣抹平了。亮點(diǎn)和劃痕靠的就是這種高頻細(xì)節(jié)信息。主流檢測(cè)網(wǎng)絡(luò)在設(shè)計(jì)時(shí)通常默認(rèn)兩者兼顧但實(shí)際對(duì)工業(yè)小缺陷來(lái)說(shuō)都不夠極致深層感受野大上下文足細(xì)節(jié)丟了淺層細(xì)節(jié)足但感受野小缺少上下文判斷。SDI模塊的思路就是拉兩條獨(dú)立分支一條專(zhuān)門(mén)擴(kuò)感受野抓上下文一條專(zhuān)門(mén)保高頻細(xì)節(jié)最后通過(guò)交互融合把兩邊的信息按空間位置重新對(duì)齊、加權(quán)合并。這個(gè)模塊的詳細(xì)結(jié)構(gòu)在第三章展開(kāi)這里先記住它的定位輕量、可插拔、只改Neck不動(dòng)Backbone不傷推理速度。2. 缺陷分類(lèi)體系與數(shù)據(jù)集建設(shè)2.1 六類(lèi)常見(jiàn)缺陷的定義與形態(tài)特征做工業(yè)檢測(cè)項(xiàng)目第一步永遠(yuǎn)不是選模型而是定義清楚“你要檢測(cè)的東西到底長(zhǎng)什么樣”。我們和產(chǎn)線質(zhì)量工程師一起把筆記本LCD缺陷收斂成六類(lèi)每類(lèi)定了明確的外觀描述和判定邊界。缺陷類(lèi)別典型外觀尺寸范圍檢測(cè)難點(diǎn)亮點(diǎn)終端照射下呈點(diǎn)狀發(fā)亮常為單像素或小團(tuán)像素0.1~0.5mm尺寸極小易與灰塵反光混淆暗點(diǎn)點(diǎn)狀暗斑常由壞點(diǎn)或異物壓迫導(dǎo)致0.2~1mm低對(duì)比度邊界不清細(xì)劃痕線狀連續(xù)或斷續(xù)痕跡方向隨機(jī)長(zhǎng)度2~30mm寬度0.02~0.1mm極細(xì)長(zhǎng)長(zhǎng)寬比極端Mura無(wú)固定形狀的亮度不均云團(tuán)邊緣模糊5~50mm低對(duì)比度無(wú)清晰邊界臟污表面異物形狀不規(guī)則常伴紋理0.5~10mm形態(tài)多變與灰塵背景難分壞線整條水平或豎直發(fā)亮/發(fā)暗線貫穿屏幕跨度大細(xì)且長(zhǎng)這里要強(qiáng)調(diào)一個(gè)經(jīng)驗(yàn)分類(lèi)體系不是越細(xì)越好而是越“可判定”越好。我們一開(kāi)始把Mura細(xì)分成三種結(jié)果標(biāo)注員之間的一致性很差同一塊缺陷有人標(biāo)成豎向Mura有人標(biāo)成團(tuán)狀Mura模型學(xué)出來(lái)的特征自然也是亂的。后來(lái)合并成大Mura一類(lèi)標(biāo)注爭(zhēng)議立刻少了很多模型準(zhǔn)確率反而上來(lái)了。2.2 采集、標(biāo)注與數(shù)據(jù)清洗數(shù)據(jù)采集是在模擬產(chǎn)線光源環(huán)境下完成的。我們用了工業(yè)面陣相機(jī)加低角度環(huán)光、同軸光兩組光源對(duì)每一塊屏分別采集亮場(chǎng)、暗場(chǎng)和灰度場(chǎng)三組圖像以覆蓋不同缺陷的最佳呈現(xiàn)角度。這里有個(gè)關(guān)鍵細(xì)節(jié)光源角度和亮度必須和最終部署現(xiàn)場(chǎng)保持一致否則模型訓(xùn)練時(shí)看到的缺陷形態(tài)和現(xiàn)場(chǎng)根本對(duì)不上指標(biāo)再高都白搭。標(biāo)注環(huán)節(jié)用的是開(kāi)源的多邊形標(biāo)注工具逐實(shí)例標(biāo)注掩碼。我們給標(biāo)注員定了三條強(qiáng)制規(guī)范第一一個(gè)缺陷實(shí)例只標(biāo)一個(gè)多邊形粘連的兩個(gè)缺陷必須分開(kāi)第二拿不準(zhǔn)的疑似缺陷單獨(dú)建一個(gè)“待定”標(biāo)簽不進(jìn)訓(xùn)練集第三Mura類(lèi)標(biāo)注時(shí)必須在暗室環(huán)境下放大到原始尺寸的200%以上再描邊防止邊緣位置隨手一畫(huà)。原始數(shù)據(jù)攢了大概1200多張有效圖像缺陷實(shí)例總數(shù)接近8000個(gè)。拿到標(biāo)注后我們做了三輪清洗先用腳本去重刪除幾乎一模一樣的重復(fù)圖再篩掉對(duì)焦模糊、光源不均明顯失衡的樣本最后把標(biāo)注置信度低的樣本抽出來(lái)人工復(fù)核。這個(gè)環(huán)節(jié)看著瑣碎但實(shí)際對(duì)模型上限的影響比后邊調(diào)參大得多。2.3 針對(duì)小目標(biāo)的切圖與增強(qiáng)策略筆記本屏幕原圖分辨率很高直接把整塊屏塞進(jìn)網(wǎng)絡(luò)訓(xùn)練小缺陷會(huì)進(jìn)一步縮小。我們的做法是先把屏幕裁成若干子圖子圖尺寸設(shè)在1024像素左右裁切時(shí)使用重疊滑動(dòng)窗口重疊區(qū)256像素保證跨邊界缺陷不會(huì)因?yàn)楸磺谐蓛砂攵?biāo)。數(shù)據(jù)增強(qiáng)上我們做了明確的取舍。常規(guī)的Mosaic增強(qiáng)一開(kāi)始是開(kāi)著的后來(lái)發(fā)現(xiàn)一個(gè)問(wèn)題Mosaic把四張圖拼在一起小目標(biāo)會(huì)被隨機(jī)縮放本來(lái)就只有十幾個(gè)像素的亮點(diǎn)可能直接被縮沒(méi)了標(biāo)注還留在原坐標(biāo)上等效于給模型喂了錯(cuò)誤樣本。所以對(duì)液晶屏這類(lèi)極端小目標(biāo)場(chǎng)景我把Mosaic關(guān)掉了轉(zhuǎn)而采用翻轉(zhuǎn)、小幅旋轉(zhuǎn)、亮度擾動(dòng)、高斯模糊模擬Mura效果這幾類(lèi)增強(qiáng)。針對(duì)類(lèi)別不均衡用的辦法是對(duì)Mura和亮點(diǎn)這兩個(gè)最難檢的類(lèi)別做欠采樣復(fù)制再把復(fù)制的小目標(biāo)實(shí)例通過(guò)貼圖方式隨機(jī)粘貼到干凈的屏幕子圖上相當(dāng)于做定向的復(fù)制粘貼增強(qiáng)實(shí)測(cè)這類(lèi)增強(qiáng)對(duì)亮點(diǎn)的召回提升非常直接。3. SDI模塊的結(jié)構(gòu)設(shè)計(jì)與原理拆解3.1 小缺陷檢測(cè)難在哪兒要理解SDI模塊的價(jià)值得先搞清楚小缺陷在網(wǎng)絡(luò)里到底經(jīng)歷了什么。一張輸入圖經(jīng)過(guò)Backbone逐級(jí)下采樣特征圖分辨率從輸入尺寸一路降到1/32。一個(gè)原本只有幾個(gè)像素的亮點(diǎn)在第4、第5層特征圖里可能就衰減成一個(gè)響應(yīng)強(qiáng)度極低的單點(diǎn)和背景噪聲幾乎無(wú)法區(qū)分。而Neck后續(xù)的融合雖然能補(bǔ)充部分信息但如果Backbone這一路已經(jīng)丟失了關(guān)鍵細(xì)節(jié)后面再融合也是無(wú)米之炊。另一頭Mura這種大而不清的目標(biāo)整體尺寸不小但它的特征不是“形狀”而是“相對(duì)周?chē)牧炼炔睢?。深層特征圖有足夠的感受野看到周?chē)^(qū)域卻因?yàn)橄虏蓸觼G了精確的灰度關(guān)系淺層特征圖有灰度精度但感受野又不夠大看不到上下文。這就是我前面說(shuō)的兩難知道該看哪但看不清邊緣看清了邊緣又不知道是不是異常。SDI模塊做的就是拆開(kāi)這個(gè)結(jié)你不是右眼看細(xì)節(jié)、左眼看環(huán)境嗎那就在網(wǎng)絡(luò)結(jié)構(gòu)上也這樣分兩條路走最后再合起來(lái)。3.2 空間上下文分支把“環(huán)境”還給缺陷空間上下文分支的設(shè)計(jì)目標(biāo)很明確在不大幅度增加計(jì)算量的前提下把感受野拉大讓每個(gè)位置的輸出特征都“見(jiàn)過(guò)”周?chē)淮笃瑓^(qū)域。具體做法是采用多分支空洞卷積結(jié)構(gòu)。三條分支分別使用空洞率1、3、5的卷積核空洞率不同感受野覆蓋范圍不同能看到近處細(xì)節(jié)和遠(yuǎn)處背景的不同組合三條分支的輸出按通道拼接后過(guò)一層輕量空間注意力讓網(wǎng)絡(luò)自己學(xué)習(xí)“哪些空間位置上的上下文對(duì)判斷缺陷更重要”。這里有個(gè)設(shè)計(jì)細(xì)節(jié)值得說(shuō)。空洞卷積雖然能擴(kuò)感受野但如果空洞率太大卷積核中間是空的會(huì)丟失連續(xù)信息反而對(duì)細(xì)長(zhǎng)目標(biāo)不友好。所以我們沒(méi)有一味加大空洞率而是保持最大空洞率5并用空洞率1的分支兜底保留原始連續(xù)特征。這個(gè)折中是在消融實(shí)驗(yàn)里試出來(lái)的空洞率再往上加劃痕的檢測(cè)反而掉點(diǎn)。3.3 細(xì)節(jié)特征分支把“邊緣”還給缺陷細(xì)節(jié)特征分支解決的是另一頭的問(wèn)題恢復(fù)被下采樣抹掉的邊緣和紋理。我們的做法是從Backbone較早的高分辨率特征層直接引一條旁路出來(lái)這條分支的特征圖分辨率要比Neck主流分支高很多保留了更多原始像素信息。光有高分辨率還不夠還得把“高頻變化”顯式地強(qiáng)調(diào)出來(lái)。我們?cè)诩?xì)節(jié)分支內(nèi)部接了一個(gè)高頻特征提取模塊用固定參數(shù)的拉普拉斯卷積核和Sobel算子分別提取二階和一階梯度信息再把原始高分辨率特征和梯度特征沿通道拼接。這么做的好處是讓網(wǎng)絡(luò)不用自己隱式學(xué)習(xí)“什么是邊緣”而是直接把邊緣響應(yīng)喂到面前對(duì)亮點(diǎn)、細(xì)劃痕這類(lèi)靠邊界存在的缺陷幫助尤其明顯。實(shí)驗(yàn)里有個(gè)有意思的觀察單獨(dú)接高分辨率分支而不加高頻提取時(shí)模型在Mura上略有提升但亮點(diǎn)召回幾乎沒(méi)有變化加了高頻提取之后亮點(diǎn)和劃痕的召回一下子拉開(kāi)差距。這說(shuō)明對(duì)這類(lèi)缺陷網(wǎng)絡(luò)確實(shí)缺的不是分辨率而是對(duì)高頻響應(yīng)的顯式感知。3.4 交互融合與模塊插入位置兩條分支各自提取完特征后最后一步是交互融合。我們這里用的是一種輕量交叉注意力機(jī)制空間分支的輸出生成一組注意力權(quán)重用來(lái)對(duì)細(xì)節(jié)分支特征做空間位置上的加權(quán)同時(shí)細(xì)節(jié)分支的輸出也生成一組權(quán)重對(duì)空間分支特征做加權(quán)兩者相加后再與Neck原始特征殘差相加。這樣處理的好處是兩個(gè)分支的信息不是簡(jiǎn)單拼接完事而是按空間位置做了對(duì)齊和互相調(diào)制。比如某個(gè)位置空間上下文強(qiáng)烈提示“這里異?!边@個(gè)信號(hào)就會(huì)放大細(xì)節(jié)分支上對(duì)應(yīng)位置的邊緣響應(yīng)反過(guò)來(lái)某處有清晰的邊緣細(xì)節(jié)也會(huì)幫助空間分支確認(rèn)這不是一塊正常區(qū)域。模塊插入位置我們只在Neck的P3和P4兩處加了SDIP3對(duì)應(yīng)中等分辨率特征圖是小缺陷的主要落腳層P4提供稍大區(qū)域的整體信息。P5層我們沒(méi)有動(dòng)因?yàn)镸ura這類(lèi)大目標(biāo)主要靠這里貿(mào)然加模塊反而會(huì)拖慢訓(xùn)練收斂。整個(gè)模塊設(shè)計(jì)成可插拔形式用預(yù)訓(xùn)練權(quán)重初始化時(shí)不會(huì)破壞原網(wǎng)絡(luò)結(jié)構(gòu)可以直接加載官方預(yù)訓(xùn)練參數(shù)再微調(diào)。# SDI模塊核心結(jié)構(gòu)偽代碼 class SpatialContextBranch: # 輸入: 下采樣特征 F_low # 1. 三路空洞卷積 (dilation1,3,5) 并行提取 # 2. 輸出沿通道拼接 # 3. 空間注意力加權(quán), 輸出 F_spatial class DetailPreserveBranch: # 輸入: 高分辨率淺層特征 F_high # 1. 拉普拉斯/sobel高頻卷積提取梯度 # 2. 原始高分辨率特征與梯度特征通道拼接 # 3. 輸出 F_detail class SDIFusion: # 輸入: F_spatial, F_detail # 1. F_spatial 生成空間注意力權(quán)重 W_s # 2. F_detail 生成空間注意力權(quán)重 W_d # 3. 交叉加權(quán)融合 # 輸出: F_out F_neck fusion_result4. 訓(xùn)練環(huán)境與完整實(shí)操流程4.1 軟硬件環(huán)境與工程組織訓(xùn)練環(huán)境方面我們用的是單張專(zhuān)業(yè)顯卡顯存24GB整體配置就是入門(mén)級(jí)AI工作站沒(méi)有上多卡集群。實(shí)測(cè)下來(lái)YOLO11-SEG加上SDI模塊訓(xùn)練時(shí)的顯存占用和基線模型相比只增加了約8%單卡完全跑得動(dòng)。軟件層面基于當(dāng)前主流的深度學(xué)習(xí)框架搭建訓(xùn)練和驗(yàn)證過(guò)程都掛在YOLO11的工程體系下這樣可以復(fù)用數(shù)據(jù)加載、增強(qiáng)、驗(yàn)證、導(dǎo)出這些成熟鏈路不用重復(fù)造輪子。新增的SDI模塊單獨(dú)放在一個(gè)目錄里和原有網(wǎng)絡(luò)代碼解耦方便隨時(shí)開(kāi)關(guān)做消融。工程目錄建議按這個(gè)結(jié)構(gòu)組織分工清晰lcd_defect_project/ ├── data/ # 數(shù)據(jù)集與標(biāo)注文件 ├── configs/ # 數(shù)據(jù)配置與訓(xùn)練參數(shù) ├── models/ # 基座模型與SDI模塊定義 ├── scripts/ # 訓(xùn)練、驗(yàn)證、推理腳本 ├── weights/ # 預(yù)訓(xùn)練權(quán)重與訓(xùn)練產(chǎn)出 └── results/ # 指標(biāo)曲線與預(yù)測(cè)可視化4.2 數(shù)據(jù)配置與訓(xùn)練參數(shù)數(shù)據(jù)配置是YAML格式核心是把上一步建好的數(shù)據(jù)集路徑和類(lèi)別定義清楚。我們的配置大概長(zhǎng)這樣path: ./data/lcd_defect train: images/train val: images/val names: 0: bright_spot 1: dark_spot 2: scratch 3: mura 4: dirt 5: dead_line訓(xùn)練參數(shù)我們是這么定的輸入分辨率1024批大小16訓(xùn)練200輪優(yōu)化器用帶動(dòng)量的隨機(jī)梯度下降初始學(xué)習(xí)率0.01配合前期數(shù)百步的預(yù)熱。選擇SGD而不是自適應(yīng)優(yōu)化器是因?yàn)樵跈z測(cè)分割任務(wù)上SGD配合合適的調(diào)度器最終收斂點(diǎn)的泛化性通常比自適應(yīng)優(yōu)化器更穩(wěn)尤其在數(shù)據(jù)量不是很大的工業(yè)場(chǎng)景里不容易過(guò)早過(guò)擬合。針對(duì)小目標(biāo)有兩條參數(shù)經(jīng)驗(yàn)值得記錄。一是輸入分辨率我們對(duì)比過(guò)640和10241024下亮點(diǎn)和劃痕的mAP提升了近5個(gè)點(diǎn)代價(jià)是訓(xùn)練和推理時(shí)間增加這個(gè)取舍在產(chǎn)線可接受范圍內(nèi)二是置信度閾值訓(xùn)練時(shí)保持默認(rèn)但評(píng)估漏檢率時(shí)要把置信度閾值往下壓到0.1再統(tǒng)計(jì)否則會(huì)高估實(shí)際表現(xiàn)。4.3 訓(xùn)練、驗(yàn)證與模型導(dǎo)出流程完整流程分四步走。第一步加載預(yù)訓(xùn)練權(quán)重把Backbone和原Neck參數(shù)全部初始化好只隨機(jī)初始化SDI模塊新增的參數(shù)。第二步正常訓(xùn)練訓(xùn)練過(guò)程中每10輪保存一次權(quán)重并同時(shí)跑驗(yàn)證集記錄每個(gè)類(lèi)別的精確率和召回率曲線。第三步挑驗(yàn)證集最優(yōu)的一版權(quán)重做完整指標(biāo)評(píng)估。第四步導(dǎo)出部署格式先導(dǎo)出為通用中間格式再做量化最后在產(chǎn)線工控機(jī)上試跑推理速度。# 訓(xùn)練命令示例 python train.py \ --model yolo11s-seg \ --data lcd_defect.yaml \ --imgsz 1024 \ --epochs 200 \ --batch 16 \ --optimizer SGD \ --lr0 0.01 \ --warmup 300這里要特別提醒一點(diǎn)很多項(xiàng)目訓(xùn)練完直接用最后一輪權(quán)重這是最容易翻車(chē)的地方。我們的習(xí)慣是專(zhuān)門(mén)寫(xiě)一個(gè)模型選擇腳本在驗(yàn)證集上遍歷所有保存的中間權(quán)重按“mAP50和難例召回率加權(quán)”的標(biāo)準(zhǔn)選出最優(yōu)模型。工業(yè)場(chǎng)景里最后一輪權(quán)重經(jīng)常不是因?yàn)檫^(guò)擬合導(dǎo)致效果不佳而是學(xué)習(xí)率衰減到這個(gè)階段后模型在少數(shù)難例上的表現(xiàn)波動(dòng)很大早幾十輪的那版反而更穩(wěn)。5. 評(píng)估結(jié)果與實(shí)測(cè)對(duì)比5.1 指標(biāo)怎么選工業(yè)缺陷檢測(cè)的指標(biāo)選擇和學(xué)術(shù)比賽有明顯區(qū)別。學(xué)術(shù)榜上看mAP但產(chǎn)線真正關(guān)心的是漏檢率也就是召回率。所以我們的評(píng)估體系是三套指標(biāo)并行mAP50和mAP50-95看整體檢測(cè)和分割精度mIoU看掩碼質(zhì)量另外單獨(dú)統(tǒng)計(jì)每個(gè)類(lèi)別的召回率并算一個(gè)“關(guān)鍵難例召回率”指標(biāo)專(zhuān)門(mén)統(tǒng)計(jì)Mura和亮點(diǎn)這兩個(gè)此前漏檢最嚴(yán)重類(lèi)別的表現(xiàn)。還有一個(gè)容易被忽略的指標(biāo)是推理速度。產(chǎn)線檢測(cè)有節(jié)拍要求模型跑太慢即使指標(biāo)再高也沒(méi)法上線。我們?cè)隍?yàn)證集上統(tǒng)計(jì)去除預(yù)熱耗時(shí)后的單張平均推理耗時(shí)折算成FPS用來(lái)判斷部署可行性。5.2 基準(zhǔn)模型與SDI改進(jìn)的對(duì)比結(jié)果在同一份數(shù)據(jù)集、同一套訓(xùn)練參數(shù)下我們對(duì)比了純YOLO11-SEG基線和加SDI模塊的完整方案。驗(yàn)證集上的典型結(jié)果如下模型mAP50mAP50-95mIoU難例召回率推理耗時(shí)YOLO11-SEG 基線88.471.369.276.5%18msYOLO11-SEG SDI93.678.575.889.2%20ms從結(jié)果能看出三點(diǎn)。第一整體mAP的提升幅度約5個(gè)點(diǎn)主要是難例類(lèi)別貢獻(xiàn)的容易檢的臟污、壞線本身已經(jīng)接近滿分提升空間有限。第二難例召回率從76.5%漲到89.2%這是這個(gè)項(xiàng)目最有價(jià)值的提升因?yàn)楫a(chǎn)線關(guān)注的就是這最難的一批。第三推理耗時(shí)只增加了大概2毫秒對(duì)產(chǎn)線節(jié)拍完全沒(méi)壓力這正是可插拔輕量模塊該有的樣子。按類(lèi)別拆開(kāi)看Mura的召回率提升最明顯從71%左右拉到86%亮點(diǎn)從78%拉到91%劃痕提升相對(duì)小一些從82%到88%。劃痕提升幅度小分析下來(lái)主要是因?yàn)闃?biāo)注本身的長(zhǎng)寬比極端部分細(xì)劃痕在人眼標(biāo)注時(shí)就存在邊界模糊的爭(zhēng)議模型預(yù)測(cè)的不確定性也相應(yīng)更大。5.3 典型失敗案例與后續(xù)補(bǔ)強(qiáng)再好的模型也有翻車(chē)的時(shí)候。我們專(zhuān)門(mén)把驗(yàn)證集上漏檢和誤檢的樣本撈出來(lái)做了一次復(fù)盤(pán)最有代表性的兩例可以分享。第一例是漏檢低對(duì)比度細(xì)劃痕。這類(lèi)劃痕在圖上只占兩三個(gè)像素寬度灰度差幾乎貼著噪聲水平人眼要反復(fù)比對(duì)周?chē)y理才能確認(rèn)。SDI模塊已經(jīng)盡力恢復(fù)了高頻信息但原始圖像信噪比太低模型把真正的劃痕響應(yīng)當(dāng)成了背景紋理。后續(xù)補(bǔ)強(qiáng)方向是改善成像通過(guò)增加一組高角度定向光源讓劃痕產(chǎn)生更強(qiáng)的散射信號(hào)從源頭提升信噪比這個(gè)思路比繼續(xù)加大模型更有效。第二例是把灰塵誤檢成了臟污。灰塵和臟污在特征上高度相似區(qū)別往往只在來(lái)源和分布方式僅靠單張灰度圖很難完全分對(duì)。我們的處理是兩個(gè)方向并行一是在后處理里引入面積和圓度約束把孤立小圓點(diǎn)單獨(dú)歸類(lèi)降低誤檢二是把多光源圖像在輸入層做了通道融合相當(dāng)于給模型多提供一組“看穿表面”的信息。6. 常見(jiàn)問(wèn)題與避坑經(jīng)驗(yàn)6.1 數(shù)據(jù)層面最容易踩的坑數(shù)據(jù)層面第一個(gè)坑是重復(fù)樣本。工業(yè)生產(chǎn)的數(shù)據(jù)往往來(lái)自同一批屏幕同一種缺陷在連著幾十張圖里反復(fù)出現(xiàn)看上去數(shù)據(jù)量很大真實(shí)信息量很少。訓(xùn)練集和驗(yàn)證集如果都是從這批屏幕里隨機(jī)分的模型其實(shí)在“背屏”換一批新屏幕立刻現(xiàn)原形。我們的做法是按屏幕批次劃分?jǐn)?shù)據(jù)集同一個(gè)批次的所有圖要么全在訓(xùn)練集要么全在驗(yàn)證集絕不混在一起。第二個(gè)坑是光源不一致。我們?cè)缙谟幸慌鷶?shù)據(jù)是在設(shè)備調(diào)試階段采的光源亮度和穩(wěn)定后采的不完全一致結(jié)果模型學(xué)出了一個(gè)隱含假設(shè)暗一點(diǎn)的圖就是臟污。后來(lái)排查指標(biāo)異常時(shí)才發(fā)現(xiàn)驗(yàn)證集里偏暗的屏幕幾乎全部被誤判。解決方案只有一條把不同光源條件下采集的圖分開(kāi)管理按比例分布到訓(xùn)練和驗(yàn)證里寧可訓(xùn)練集小一點(diǎn)也要保證成像分布一致。第三個(gè)坑是標(biāo)注一致性。工業(yè)標(biāo)注是多人協(xié)作的不同標(biāo)注員的松緊尺度天然有差Mura這種邊界模糊的目標(biāo)尤其明顯。我們做過(guò)一次統(tǒng)計(jì)同一個(gè)缺陷讓兩個(gè)人重新標(biāo)注掩碼面積能差30%。后來(lái)我們強(qiáng)制要求所有新增標(biāo)注過(guò)一遍“雙人復(fù)核”明顯提高了掩碼質(zhì)量也直接反映在mIoU的提升上。6.2 訓(xùn)練與調(diào)參層面的坑訓(xùn)練階段遇到最典型的問(wèn)題是Mosaic增強(qiáng)對(duì)小目標(biāo)的傷害前面已經(jīng)提過(guò)。這里再補(bǔ)充一個(gè)連帶問(wèn)題關(guān)閉Mosaic后數(shù)據(jù)多樣性下降大目標(biāo)類(lèi)別的精度略有下降。解決辦法是只在訓(xùn)練的前半段關(guān)閉Mosaic后半段再開(kāi)回來(lái)或者用小概率開(kāi)啟我實(shí)測(cè)把開(kāi)啟概率壓到0.3左右小目標(biāo)和大目標(biāo)能兼顧。另一個(gè)高發(fā)問(wèn)題是類(lèi)別不均衡導(dǎo)致的學(xué)習(xí)傾斜。臟污和壞線樣本多模型輸出自然偏向它們亮點(diǎn)和Mura這種樣本少的類(lèi)別會(huì)持續(xù)欠擬合。除了復(fù)制粘貼增強(qiáng)我們還在損失層面加重了難例類(lèi)別的權(quán)重把Mura和亮點(diǎn)的分類(lèi)損失權(quán)重提高1.5倍。調(diào)參時(shí)要留意不能加太狠否則模型會(huì)為了保難例把其他類(lèi)別的表現(xiàn)拉下去得不償失。還有一個(gè)容易被忽略的坑是驗(yàn)證集指標(biāo)和現(xiàn)場(chǎng)表現(xiàn)的差異。模型在驗(yàn)證集上mAP很高到了現(xiàn)場(chǎng)卻頻繁報(bào)警。主要原因是現(xiàn)場(chǎng)圖像和驗(yàn)證集圖像的預(yù)處理不一致比如縮放方式、歸一化參數(shù)、裁切區(qū)域稍有偏差模型輸出就會(huì)抖動(dòng)。我們的解決方法是把現(xiàn)場(chǎng)采集的圖像做和訓(xùn)練時(shí)完全一致的前處理后再送進(jìn)模型同時(shí)保留大約2%的現(xiàn)場(chǎng)真實(shí)樣本定期做復(fù)核測(cè)試。6.3 部署與性能優(yōu)化經(jīng)驗(yàn)部署階段第一個(gè)建議是不要急著量化。低對(duì)比度缺陷對(duì)數(shù)值精度非常敏感我們最初把模型量化到低精度后Mura的響應(yīng)幾乎全部消失驗(yàn)證集mAP直接掉十幾個(gè)點(diǎn)。后來(lái)改混合量化方案只對(duì)部分對(duì)精度不敏感的網(wǎng)絡(luò)層做量化其余層保持高精度才把精度損失控制到可以接受的范圍。如果你對(duì)精度極度敏感建議優(yōu)先用高精度部署等確定節(jié)拍有富余再做量化。第二點(diǎn)是推理時(shí)的多尺度測(cè)試要謹(jǐn)慎。訓(xùn)練時(shí)用1024輸入推理時(shí)為了多抓細(xì)節(jié)又切成1280這會(huì)導(dǎo)致模型看到的特征尺度分布變化輸出可能反而不穩(wěn)定。如果部署現(xiàn)場(chǎng)確實(shí)需要更高分辨率應(yīng)該讓訓(xùn)練和推理保持一致的分辨率和切片策略而不是只在推理端臨時(shí)改。第三點(diǎn)是工程制品環(huán)境盡量固定依賴版本。我們踩過(guò)一次坑開(kāi)發(fā)環(huán)境和部署環(huán)境的框架版本不一致導(dǎo)出后的中間格式模型在部署端跑出不同的結(jié)果。后來(lái)把環(huán)境依賴全部鎖版本導(dǎo)出和部署用同一套運(yùn)行時(shí)這個(gè)問(wèn)題再?zèng)]出現(xiàn)過(guò)。這個(gè)項(xiàng)目做完我個(gè)人最深的體會(huì)是在工業(yè)缺陷檢測(cè)里數(shù)據(jù)、成像和工程鏈路至少要占七分力氣模型和網(wǎng)絡(luò)結(jié)構(gòu)最多占三分。SDI模塊確實(shí)有效但它的有效建立在一個(gè)前提上——我們有足夠規(guī)范的數(shù)據(jù)、足夠貼合現(xiàn)場(chǎng)的成像方案以及一條從訓(xùn)練到部署不脫節(jié)的工程鏈路。如果你也在做類(lèi)似屏幕檢測(cè)項(xiàng)目建議先別急著堆模型復(fù)雜度先用標(biāo)準(zhǔn)YOLO11-SEG把數(shù)據(jù)鏈路和評(píng)估體系跑通再引入像SDI這樣的定制模塊每一步的改進(jìn)都能量化對(duì)比這才是能長(zhǎng)期迭代的做法。最后再分享一個(gè)小技巧產(chǎn)線落地時(shí)建議給現(xiàn)場(chǎng)留一個(gè)“難例回流”機(jī)制把每天誤檢漏檢的圖保存下來(lái)每周補(bǔ)充進(jìn)訓(xùn)練集重訓(xùn)一次模型會(huì)越用越貼合現(xiàn)場(chǎng)這種持續(xù)迭代的能力比任何單次訓(xùn)練的指標(biāo)都寶貴。