數(shù)據(jù)集實(shí)戰(zhàn):從語(yǔ)義分割到智慧城市落地)
收到一套人行道檢測(cè)數(shù)據(jù)集總共3819張圖片覆蓋了城市街道、交叉口、商業(yè)步行區(qū)、住宅小區(qū)周邊等常見(jiàn)場(chǎng)景。數(shù)量不算大但在智慧城市管理、自動(dòng)駕駛輔助系統(tǒng)、無(wú)障礙導(dǎo)航應(yīng)用、城市規(guī)劃與設(shè)計(jì)、智能監(jiān)控系統(tǒng)、移動(dòng)機(jī)器人導(dǎo)航這些方向里已經(jīng)足夠撐起一輪完整的算法驗(yàn)證和工程落地。最近我在某個(gè)智慧城市項(xiàng)目中做人行道區(qū)域分析把這套數(shù)據(jù)的結(jié)構(gòu)、標(biāo)注方式和訓(xùn)練流程完整走了一遍想把里面的關(guān)鍵經(jīng)驗(yàn)和踩過(guò)的坑整理出來(lái)。如果你是做視覺(jué)感知、道路語(yǔ)義分割或者無(wú)障礙產(chǎn)品研發(fā)的這篇內(nèi)容應(yīng)該能幫你少走不少?gòu)澛贰?. 人行道檢測(cè)為什么突然成為剛需五大場(chǎng)景逐一拆解很多人覺(jué)得人行道檢測(cè)不就是拿一個(gè)語(yǔ)義分割模型把圖像里的“人行道”像素標(biāo)出來(lái)有什么好講的但一旦放到真實(shí)應(yīng)用里你會(huì)發(fā)現(xiàn)不同場(chǎng)景對(duì)人行道檢測(cè)的需求差別非常大。下面這幾個(gè)方向是我實(shí)際接觸過(guò)的每個(gè)方向?qū)Ψ指罱Y(jié)果的“消耗方式”完全不一樣。1.1 智慧城市管理先有“人行道底圖”后續(xù)分析才有意義城市管理者最關(guān)心的是人行道有沒(méi)有破損、有沒(méi)有被機(jī)動(dòng)車(chē)占用、有沒(méi)有被攤販堵住。過(guò)去靠人工巡邏一條路一條路看效率非常低?,F(xiàn)在很多地方裝了智能攝像頭但如果只做通用目標(biāo)檢測(cè)返回一堆“機(jī)動(dòng)車(chē)”“行人”框其實(shí)很難判斷這些目標(biāo)是不是占用了人行道。關(guān)鍵思路是先用分割模型把人行道區(qū)域完整提取出來(lái)生成一張“人行道底圖”再在這個(gè)底圖范圍內(nèi)做二次識(shí)別。人行道形狀不規(guī)則檢測(cè)框會(huì)混入大量非人行道區(qū)域?qū)е抡`報(bào)率飆升。我實(shí)際試過(guò)一套占道經(jīng)營(yíng)識(shí)別系統(tǒng)先分割人行道再在mask內(nèi)部檢測(cè)攤販車(chē)輛誤檢率比直接用檢測(cè)框縮小了接近一半。對(duì)智慧城市管理來(lái)說(shuō)人行道檢測(cè)不是終點(diǎn)而是所有后續(xù)分析的空間基座。1.2 自動(dòng)駕駛輔助系統(tǒng)路緣邊界是行駛決策的關(guān)鍵參照自動(dòng)駕駛輔助系統(tǒng)關(guān)注的可不是“這段路人行道漂亮不漂亮”它關(guān)心的是可行駛區(qū)域的邊界在哪里。人行道通常由路緣石和車(chē)道隔開(kāi)識(shí)別出人行道等于知道了路緣的大致位置這對(duì)靠邊停車(chē)、低速避讓、混行路段路徑規(guī)劃都非常重要。這個(gè)場(chǎng)景對(duì)人行道檢測(cè)有兩點(diǎn)特殊要求。第一遠(yuǎn)距離檢測(cè)能力車(chē)輛在行駛中需要提前幾十米判斷邊界遠(yuǎn)處的人行道在畫(huà)面里可能只占十幾個(gè)像素模型要能抓住微弱的邊緣線索。第二邊界穩(wěn)定性路徑規(guī)劃算法最怕邊界一幀一個(gè)樣哪怕mIoU很高邊界抖動(dòng)也會(huì)讓控制模塊無(wú)所適從。所以自動(dòng)駕駛輔助系統(tǒng)通常不會(huì)單獨(dú)用一個(gè)人行道分割模型而是把行人、車(chē)道線、路緣石、人行道放在一個(gè)多任務(wù)模型里聯(lián)合輸出。1.3 無(wú)障礙導(dǎo)航應(yīng)用精度要求比想象中高一個(gè)數(shù)量級(jí)無(wú)障礙導(dǎo)航面向的是輪椅用戶(hù)和視障用戶(hù)。普通步行導(dǎo)航只到道路級(jí)別但輪椅用戶(hù)需要知道的是這段路有沒(méi)有連續(xù)人行道路緣坡道在不在人行道寬度夠不夠轉(zhuǎn)向盲道有沒(méi)有被占用。這些問(wèn)題靠GPS根本答不了只能靠視覺(jué)感知實(shí)時(shí)回答。我在某個(gè)無(wú)障礙導(dǎo)航項(xiàng)目里測(cè)試過(guò)初期模型mIoU做到了90%以上但真正跑起來(lái)發(fā)現(xiàn)完全不可用。問(wèn)題出在邊界連續(xù)性預(yù)測(cè)出來(lái)的人行道邊緣在某幾個(gè)關(guān)鍵位置斷開(kāi)路徑規(guī)劃算法直接認(rèn)為前方無(wú)路可走。后來(lái)我們引入了邊緣損失函數(shù)對(duì)mask邊界附近的像素單獨(dú)加權(quán)訓(xùn)練邊界連續(xù)性才明顯改善。所以做無(wú)障礙導(dǎo)航的同學(xué)不要只盯著mIoU邊緣質(zhì)量和連通性往往才是生死線。1.4 城市規(guī)劃與設(shè)計(jì)用街道語(yǔ)義數(shù)據(jù)算“空間賬”規(guī)劃部門(mén)需要知道一個(gè)片區(qū)的人行道覆蓋率、寬度分布、斷點(diǎn)位置這些指標(biāo)直接關(guān)系到一個(gè)街區(qū)適不適合步行、適不適合殘障人士獨(dú)立出行。過(guò)去規(guī)劃人員都是抽樣踏勘一條街一條街量花費(fèi)大周期長(zhǎng)。有了大規(guī)模街景圖像加人行道分割模型就能相對(duì)快速地算出統(tǒng)計(jì)數(shù)據(jù)一張圖里人行道面積占道路總面積的比例通過(guò)透視圖和相機(jī)姿態(tài)還能粗略估算寬度。這種應(yīng)用不要求毫秒級(jí)推理但對(duì)統(tǒng)計(jì)無(wú)偏性要求很高因?yàn)榻=Y(jié)果要支撐規(guī)劃決策。初期我用分割結(jié)果直接做統(tǒng)計(jì)發(fā)現(xiàn)系統(tǒng)性地少算了被樹(shù)冠遮蔽的人行道后來(lái)加入多時(shí)段圖像融合誤差才降到可接受范圍。1.5 智能監(jiān)控系統(tǒng)與移動(dòng)機(jī)器人導(dǎo)航實(shí)時(shí)性壓倒一切最后說(shuō)兩個(gè)實(shí)時(shí)性要求最高的場(chǎng)景。移動(dòng)機(jī)器人要在人行道上和人共享空間首先得保證自己不上機(jī)動(dòng)車(chē)道。通過(guò)實(shí)時(shí)分割只要前方一定范圍內(nèi)不是人行道機(jī)器人就減速重新規(guī)劃。這樣的規(guī)則約束非常簡(jiǎn)單可靠但要求模型每一幀都要在幾十毫秒內(nèi)出結(jié)果。智能監(jiān)控系統(tǒng)同樣受益于人行道區(qū)域限定。把行人重識(shí)別、跌倒檢測(cè)、徘徊檢測(cè)的ROI限定在人行道區(qū)域內(nèi)能大幅減少對(duì)機(jī)動(dòng)車(chē)道上無(wú)關(guān)目標(biāo)的誤報(bào)。實(shí)測(cè)下來(lái)用輕量級(jí)骨干網(wǎng)絡(luò)加ASPP分割頭在中端嵌入式設(shè)備上處理512x512分辨率圖像可以跑到20到30毫秒一幀基本滿(mǎn)足實(shí)時(shí)需求。但這個(gè)場(chǎng)景最容易出問(wèn)題的是畫(huà)面抖動(dòng)和邊界閃爍機(jī)器人判斷“是否在人行道上”時(shí)如果邊界來(lái)回跳會(huì)頻繁觸發(fā)錯(cuò)誤剎車(chē)。應(yīng)用場(chǎng)景核心關(guān)注點(diǎn)實(shí)時(shí)性要求邊界要求主要輸出形態(tài)智慧城市管理區(qū)域面積、占道情況中中統(tǒng)計(jì)mask、二次識(shí)別ROI自動(dòng)駕駛輔助與車(chē)道、路緣的相對(duì)關(guān)系高高可行駛區(qū)域、道路拓?fù)錈o(wú)障礙導(dǎo)航可通行性、邊界連通高極高可通行路徑語(yǔ)義城市規(guī)劃設(shè)計(jì)面積、寬度、網(wǎng)絡(luò)指標(biāo)低較高大范圍分割統(tǒng)計(jì)結(jié)果智能監(jiān)控與機(jī)器人區(qū)域約束與安全行走高高實(shí)時(shí)地面語(yǔ)義分割2. 3819張圖片的數(shù)據(jù)集里子到底是什么2.1 數(shù)量只是標(biāo)簽分布和場(chǎng)景多樣性才是核心3819張圖說(shuō)多不多說(shuō)少不少。如果全是晴天正午的標(biāo)準(zhǔn)街景模型一遇到陰雨天就崩。真正有價(jià)值的是場(chǎng)景分布?jí)虿粔驅(qū)挵滋旌鸵雇?、晴天和陰天、直道和交叉口、帶坡道的路口、有?shù)影遮擋的街道。拿到底層數(shù)據(jù)后第一件事是統(tǒng)計(jì)每張圖片的時(shí)間、地點(diǎn)、天氣屬性畫(huà)出分布圖再看自己的目標(biāo)場(chǎng)景是否被覆蓋到。我遇到過(guò)一個(gè)典型情況數(shù)據(jù)集里高清近景占了七成遠(yuǎn)景和俯拍圖很少模型訓(xùn)練完在近景上效果不錯(cuò)一部署到監(jiān)控?cái)z像頭的俯視角畫(huà)面就明顯掉點(diǎn)。這類(lèi)問(wèn)題在數(shù)據(jù)分布統(tǒng)計(jì)階段就能發(fā)現(xiàn)但很多人偷懶跳過(guò)這一步直接訓(xùn)練后面再回頭補(bǔ)數(shù)據(jù)成本高得多。2.2 標(biāo)注方式多邊形掩碼、檢測(cè)框與格式轉(zhuǎn)換人行道檢測(cè)數(shù)據(jù)集最常用的標(biāo)注形式是像素級(jí)分割掩碼。標(biāo)注人員沿著人行道邊緣畫(huà)多邊形保存成JSON或COCO格式訓(xùn)練時(shí)把多邊形渲染成mask。也有一些數(shù)據(jù)集附帶檢測(cè)框把每一段連續(xù)的人行道用一個(gè)矩形框包起來(lái)。兩類(lèi)標(biāo)注各有用途掩碼適合做分割和后續(xù)的幾何分析檢測(cè)框適合做快速定位和ROI限定。COCO格式是目前最通用的它在工程上的便利性非常突出。mask可以用RLE壓縮存儲(chǔ)極大減少磁盤(pán)占用同時(shí)主流深度學(xué)習(xí)框架都有現(xiàn)成的數(shù)據(jù)加載器不需要自己啃格式解析的坑。拿到數(shù)據(jù)后建議第一時(shí)間確認(rèn)格式如果只有多邊形可以用開(kāi)源工具把多邊形轉(zhuǎn)成RLE整個(gè)流程相當(dāng)成熟。提示拿到mask后先統(tǒng)計(jì)類(lèi)別像素占比。我用一個(gè)中等城市的街景數(shù)據(jù)做過(guò)快速統(tǒng)計(jì)人行道像素在全圖中的占比通常在15%到35%之間。如果占比小于10%說(shuō)明圖像里人行道區(qū)域很小訓(xùn)練損失大概率被背景主導(dǎo)必須在訓(xùn)練階段做類(lèi)別重加權(quán)。2.3 標(biāo)注質(zhì)量控制看不見(jiàn)的參數(shù)決定模型上限對(duì)于像素級(jí)標(biāo)注不同標(biāo)注員畫(huà)出來(lái)的邊界經(jīng)常差1到2個(gè)像素復(fù)雜場(chǎng)景下差到5個(gè)像素也不奇怪。一個(gè)合格的數(shù)據(jù)集要經(jīng)過(guò)交叉審核同一張圖由多人標(biāo)注后計(jì)算一致性mIoU通常要穩(wěn)定在90%左右才算達(dá)標(biāo)。我踩過(guò)一次很深的坑。某外包團(tuán)隊(duì)標(biāo)注的mask在人行道邊緣普遍向外擴(kuò)了2到3個(gè)像素肉眼根本看不出來(lái)但模型學(xué)到的邊界整體系統(tǒng)性偏移下游測(cè)量寬度時(shí)出現(xiàn)了固定偏差。當(dāng)時(shí)檢查了很久才定位到根因?,F(xiàn)在我的習(xí)慣是先抽幾十張圖把mask半透明疊加到原圖上人眼快速掃一遍邊緣對(duì)齊情況再開(kāi)始訓(xùn)練。2.4 這套數(shù)據(jù)能做什么不能做什么先說(shuō)能做什么。3819張圖足夠支撐一個(gè)語(yǔ)義分割模型的微調(diào)訓(xùn)練也適合做遷移學(xué)習(xí)的起點(diǎn)如果數(shù)據(jù)里包含多個(gè)類(lèi)別還可以聯(lián)合訓(xùn)練道路、車(chē)輛、行人等場(chǎng)景理解任務(wù)。數(shù)據(jù)量不大但對(duì)驗(yàn)證算法思路、跑通工程鏈路完全夠用。不能做什么也很明確。第一單張靜態(tài)圖像訓(xùn)練出的模型沒(méi)有時(shí)序一致性做視頻流應(yīng)用時(shí)幀間抖動(dòng)需要額外處理。第二2D圖像無(wú)法直接推算路緣石高度做無(wú)障礙坡道檢測(cè)需要補(bǔ)充深度信息來(lái)源。第三這個(gè)量級(jí)的數(shù)據(jù)覆蓋不了極端天氣和稀有遮擋場(chǎng)景落地時(shí)大概率需要額外采集少量真實(shí)場(chǎng)景數(shù)據(jù)做補(bǔ)充。3. 人行道檢測(cè)到底難在哪技術(shù)挑戰(zhàn)與模型選型3.1 邊界模糊和材質(zhì)接近最容易被低估的問(wèn)題人行道大多是水泥材質(zhì)路面是瀝青兩者在顏色上通常有區(qū)別但一旦碰上逆光、陰影、夜間路燈偏色RGB圖像里幾乎拉不開(kāi)差距。模型真正依賴(lài)的是紋理差異和上下文結(jié)構(gòu)而這些特征在強(qiáng)光或夜景里非常脆弱。所以人行道檢測(cè)不會(huì)像檢測(cè)一輛紅色汽車(chē)那么簡(jiǎn)單。你可以在預(yù)處理階段做顏色歸一化和光照增強(qiáng)但更重要的是讓模型學(xué)會(huì)利用結(jié)構(gòu)線索——比如路緣石的高度突變、人行道磚縫的紋理周期、行道樹(shù)的位置關(guān)系。這些都是人類(lèi)一眼能看出來(lái)的但模型需要大量數(shù)據(jù)才能內(nèi)化。3.2 多尺度與透視同一個(gè)物體遠(yuǎn)近完全兩個(gè)樣人行道在近處占畫(huà)面很大面積紋理清晰到遠(yuǎn)處只剩一兩條像素寬的色帶。同一個(gè)模型要同時(shí)處理這兩種尺度的目標(biāo)就需要較強(qiáng)的多尺度特征提取能力。經(jīng)典的解決方案是FPN特征金字塔或者ASPP空洞空間金字塔池化兩者都能讓網(wǎng)絡(luò)在多個(gè)感受野上同時(shí)觀察目標(biāo)。訓(xùn)練時(shí)也要注意輸入分辨率。512x512是最常用的平衡點(diǎn)太低容易丟失遠(yuǎn)處細(xì)節(jié)太高對(duì)顯存和推理速度壓力大。如果條件允許訓(xùn)練時(shí)可以用1024x1024推理時(shí)降回512x512但要記得訓(xùn)練和推理的分辨率差異會(huì)影響最終效果差距太大會(huì)導(dǎo)致精度下降。3.3 類(lèi)別不平衡與難度不平衡一張街景圖里背景像素?cái)?shù)量遠(yuǎn)超人行道像素直接用交叉熵?fù)p失訓(xùn)練模型會(huì)選擇“躺平”把背景全預(yù)測(cè)對(duì)人行道區(qū)域則無(wú)所謂。這個(gè)問(wèn)題靠單純的類(lèi)別權(quán)重就能緩解但更好的做法是引入Dice Loss。Dice Loss直接優(yōu)化預(yù)測(cè)區(qū)域和真實(shí)區(qū)域的相似度天然對(duì)類(lèi)別不平衡不敏感。我實(shí)測(cè)過(guò)同樣的數(shù)據(jù)和模型把損失函數(shù)從純交叉熵改成0.5倍的交叉熵加0.5倍的Dice Loss驗(yàn)證集mIoU能漲3到5個(gè)百分點(diǎn)尤其在邊界區(qū)域提升明顯。另一個(gè)有效技巧是訓(xùn)練時(shí)把圖像裁剪成patch讓每個(gè)人行道區(qū)域在patch中的占比更均衡相當(dāng)于做了難例挖掘。3.4 模型選型先定場(chǎng)景再定模型很多初學(xué)者上來(lái)就問(wèn)哪個(gè)模型最強(qiáng)其實(shí)脫離場(chǎng)景談模型沒(méi)有意義。下面是幾條我自己用過(guò)覺(jué)得靠譜的選型路線。模型方案特點(diǎn)適用場(chǎng)景備注U-Net ResNet50精度不錯(cuò)、顯存友好快速驗(yàn)證、小團(tuán)隊(duì)起步最適合第一個(gè)基線DeepLabV3 ResNet101精度高、多尺度能力強(qiáng)離線統(tǒng)計(jì)、規(guī)劃分析參數(shù)量大推理慢SegFormer-B2精度與速度均衡多場(chǎng)景通用研究Transformer結(jié)構(gòu)顯存占用略高M(jìn)obileNetV3-Lite ASPP速度快、模型小嵌入式部署、移動(dòng)端邊緣質(zhì)量可能需要額外優(yōu)化我的建議是先用U-Net加ResNet50跑通整個(gè)流程確認(rèn)數(shù)據(jù)沒(méi)有大問(wèn)題再根據(jù)部署目標(biāo)切換網(wǎng)絡(luò)。直接上大模型的風(fēng)險(xiǎn)在于一旦數(shù)據(jù)里有標(biāo)注錯(cuò)位之類(lèi)的問(wèn)題你會(huì)在調(diào)模型上浪費(fèi)大量時(shí)間最后發(fā)現(xiàn)根因根本不在模型。4. 從數(shù)據(jù)到可落地區(qū)域分割模型一整套實(shí)操流程4.1 數(shù)據(jù)檢查與劃分別讓同一條街泄漏到測(cè)試集第一步永遠(yuǎn)是數(shù)據(jù)清洗。分辨率過(guò)低的、嚴(yán)重模糊的、標(biāo)注明顯缺失的直接刪掉。接著做mask對(duì)齊檢查把mask半透明疊加到原圖上看邊緣抽幾十張掃描一遍就行。數(shù)據(jù)集劃分比很多人想的更重要。如果同一條街道的多張圖既出現(xiàn)在訓(xùn)練集又出現(xiàn)在測(cè)試集模型的泛化指標(biāo)會(huì)虛高部署到新場(chǎng)景立刻現(xiàn)原形。正確做法是按拍攝區(qū)域或場(chǎng)景劃分保證同一條街的所有圖片都只落在同一個(gè)集合里。建議按8:1:1劃分訓(xùn)練、驗(yàn)證、測(cè)試測(cè)試集盡量保留300張以上確保評(píng)估結(jié)果穩(wěn)定。4.2 數(shù)據(jù)增強(qiáng)針對(duì)光照、天氣、鏡頭的組合拳人行道分割的增強(qiáng)策略不能只做隨機(jī)翻轉(zhuǎn)。空間增強(qiáng)方面隨機(jī)水平翻轉(zhuǎn)、小角度旋轉(zhuǎn)15度以?xún)?nèi)、隨機(jī)縮放0.8到1.25倍、隨機(jī)裁剪到512x512都是基礎(chǔ)操作。顏色增強(qiáng)方面亮度、對(duì)比度、色相的隨機(jī)擾動(dòng)能顯著提升模型對(duì)光照變化的魯棒性。針對(duì)人行道場(chǎng)景我強(qiáng)烈建議加兩類(lèi)特化增強(qiáng)。一類(lèi)是隨機(jī)合成樹(shù)影用黑色半透明多邊形隨機(jī)遮擋圖像局部模擬真實(shí)樹(shù)蔭和建筑陰影另一類(lèi)是模擬鏡頭臟污加高斯模糊和運(yùn)動(dòng)模糊因?yàn)椴渴瓞F(xiàn)場(chǎng)經(jīng)常碰到鏡頭上有水漬或者雨滴的模糊情況。增強(qiáng)比例一般控制在常規(guī)增強(qiáng)50%、特化增強(qiáng)30%、原圖20%。4.3 損失函數(shù)與訓(xùn)練配置下面這套配置我在多個(gè)項(xiàng)目里驗(yàn)證過(guò)可以作為起步參考預(yù)訓(xùn)練骨干ResNet50使用ImageNet預(yù)訓(xùn)練權(quán)重輸入分辨率512x512Batch size16顯存不足時(shí)降到8學(xué)習(xí)率也要對(duì)應(yīng)調(diào)低優(yōu)化器AdamW初始學(xué)習(xí)率1e-4weight decay 1e-4學(xué)習(xí)率調(diào)度poly策略lr base_lr × (1 - iter/total_iter)^0.9或者用余弦退火Warmup前3個(gè)epoch從1e-5線性升到1e-4損失函數(shù)0.5×CrossEntropy 0.5×Dice Loss人行道類(lèi)別占比太低時(shí)可以把Dice權(quán)重提高到0.6訓(xùn)練輪數(shù)60到80個(gè)epoch用驗(yàn)證集mIoU挑選最優(yōu)權(quán)重不要盲目用最后一個(gè)epoch這里最關(guān)鍵的是遷移學(xué)習(xí)。3819張圖從零訓(xùn)練很容易過(guò)擬合用ImageNet預(yù)訓(xùn)練權(quán)重通常能穩(wěn)定提升10個(gè)百分點(diǎn)以上的mIoU這比換任何花哨的網(wǎng)絡(luò)結(jié)構(gòu)都管用。4.4 訓(xùn)練過(guò)程監(jiān)控什么才不踩坑訓(xùn)練過(guò)程中需要同時(shí)盯訓(xùn)練loss和驗(yàn)證mIoU兩條曲線。規(guī)律的訓(xùn)練現(xiàn)象是前幾個(gè)epoch訓(xùn)練loss下降很快驗(yàn)證mIoU上升也快到20到30個(gè)epoch后曲線逐漸平穩(wěn)后期提升變得緩慢。如果訓(xùn)練loss穩(wěn)定下降但驗(yàn)證mIoU震蕩不收斂先懷疑學(xué)習(xí)率太高或者數(shù)據(jù)劃分泄漏。如果兩個(gè)指標(biāo)都上不去先檢查數(shù)據(jù)標(biāo)注質(zhì)量不要急著換模型。如果驗(yàn)證mIoU尚可但邊界區(qū)域差考慮加邊界損失或者對(duì)mask邊緣區(qū)域采樣加權(quán)。訓(xùn)練全程建議開(kāi)啟EMA指數(shù)移動(dòng)平均用EMA權(quán)重做驗(yàn)證集評(píng)估能有效減少后期權(quán)重抖動(dòng)對(duì)選模型的影響。4.5 評(píng)估指標(biāo)與可視化分析mIoU是所有人都會(huì)看的指標(biāo)但只看mIoU遠(yuǎn)遠(yuǎn)不夠。實(shí)際應(yīng)用里邊界偏移才是致命問(wèn)題我建議額外計(jì)算一個(gè)“邊界IoU”做法是把真實(shí)mask邊界向內(nèi)收縮1到2個(gè)像素后再算IoU專(zhuān)門(mén)衡量預(yù)測(cè)邊界和真實(shí)邊界的貼合程度。這個(gè)指標(biāo)和路徑規(guī)劃、寬度測(cè)量類(lèi)應(yīng)用的體驗(yàn)高度相關(guān)。可視化分析比數(shù)字更有說(shuō)服力。把預(yù)測(cè)結(jié)果和真實(shí)mask疊加用紅色標(biāo)注假陽(yáng)性、用藍(lán)色標(biāo)注假陰性一眼就能看出錯(cuò)誤是集中在陰影區(qū)域、遠(yuǎn)距離區(qū)域還是邊界區(qū)域。這個(gè)步驟比盯著十來(lái)個(gè)指標(biāo)來(lái)回算更直觀也更方便向非技術(shù)背景的同事解釋。4.6 部署與推理優(yōu)化模型訓(xùn)練好之后要落地通常會(huì)走ONNX導(dǎo)出加推理加速的路線。ONNX導(dǎo)出時(shí)要注意輸入輸出的動(dòng)態(tài)維度固定batch size和分辨率能減少很多部署兼容性問(wèn)題。INT8量化是嵌入式部署的關(guān)鍵手段。實(shí)測(cè)中量化后mIoU通常下降2到3個(gè)百分點(diǎn)但推理速度可以提升一倍以上對(duì)實(shí)時(shí)性要求高的監(jiān)控和機(jī)器人場(chǎng)景非常劃算。后處理也不要忽略mask二值化用0.45閾值按面積剔除小于全圖0.5%的小連通域再做一次3x3中值濾波讓邊界平滑。這些簡(jiǎn)單操作對(duì)下游規(guī)劃模塊非常有價(jià)值因?yàn)榭刂扑惴ú幌矚g邊界閃爍和孤立噪點(diǎn)。5. 我在實(shí)際項(xiàng)目中踩過(guò)的坑與排查技巧5.1 案例一數(shù)據(jù)標(biāo)注錯(cuò)位模型兩個(gè)月原地打轉(zhuǎn)某個(gè)智慧城市項(xiàng)目里外包標(biāo)注的數(shù)據(jù)模型mIoU一直卡在72%左右怎么調(diào)損失、換網(wǎng)絡(luò)都上不去。后來(lái)抽了幾十張圖做可視化檢查把mask半透明疊加到原圖才發(fā)現(xiàn)標(biāo)注邊緣普遍向外擴(kuò)了2到3個(gè)像素尤其是遠(yuǎn)處區(qū)域偏移更明顯。原因出在標(biāo)注團(tuán)隊(duì)用了預(yù)處理縮略圖而不是原圖尺寸坐標(biāo)縮放沒(méi)對(duì)齊。這種問(wèn)題在數(shù)據(jù)清洗階段就能發(fā)現(xiàn)但當(dāng)時(shí)為了趕工期跳過(guò)了這一步結(jié)果浪費(fèi)了更多時(shí)間。如果遇到類(lèi)似情況又沒(méi)有條件重新標(biāo)注可以用一個(gè)“邊緣收縮1像素”的操作做表面補(bǔ)償?shù)螛?biāo)不治本。我現(xiàn)在所有項(xiàng)目都強(qiáng)制要求訓(xùn)練前做mask對(duì)齊抽查寧可晚兩天開(kāi)工也不能把一個(gè)有系統(tǒng)性錯(cuò)誤的訓(xùn)練集跑上兩周。5.2 案例二樹(shù)影和路燈陰影讓模型“六親不認(rèn)”人行道在樹(shù)影下的顏色和旁邊柏油路接近到幾乎無(wú)法區(qū)分模型在晴天上午和下午的預(yù)測(cè)結(jié)果差異巨大。排查時(shí)我把預(yù)測(cè)錯(cuò)誤按位置畫(huà)了熱力圖發(fā)現(xiàn)錯(cuò)誤高度集中在陰影區(qū)域這才意識(shí)到是光照分布問(wèn)題。當(dāng)時(shí)間題不是數(shù)據(jù)量的鍋而是數(shù)據(jù)集里的亮度范圍太窄。我在數(shù)據(jù)增強(qiáng)里加入了“隨機(jī)陰影塊”處理用黑色半透明多邊形隨機(jī)遮擋圖像局部模擬樹(shù)影和建筑陰影同時(shí)加大了亮度擾動(dòng)范圍。處理后陰影區(qū)域的誤檢明顯下降。如果陰影問(wèn)題仍然嚴(yán)重可以考慮在訓(xùn)練時(shí)對(duì)圖像做局部亮度均衡降低陰影和非陰影區(qū)域的對(duì)比度差異。5.3 案例三雨天部署后邊界全碎模型在晴天測(cè)試表現(xiàn)正常一下雨就邊界破碎、檢測(cè)區(qū)域忽大忽小。原因是真實(shí)雨天的雨水、反光、鏡頭水漬對(duì)圖像質(zhì)量的影響非常大而訓(xùn)練數(shù)據(jù)基本是晴天和無(wú)雨天場(chǎng)景。我嘗試在增強(qiáng)中加入高斯模糊、運(yùn)動(dòng)模糊、低對(duì)比度組合效果有一點(diǎn)但不明顯。最后是實(shí)拍了幾分鐘雨天場(chǎng)景視頻抽了100多幀補(bǔ)到訓(xùn)練集里微調(diào)模型才真正穩(wěn)住。所以這里要給個(gè)實(shí)在建議合成增強(qiáng)能解決一部分問(wèn)題但真實(shí)場(chǎng)景數(shù)據(jù)的小批量補(bǔ)充往往比大規(guī)模人工增強(qiáng)更有效。條件允許的話部署前務(wù)必收集少量現(xiàn)場(chǎng)數(shù)據(jù)做驗(yàn)證。5.4 案例四換一個(gè)城市掉點(diǎn)10個(gè)百分點(diǎn)同一個(gè)模型在甲城市測(cè)試mIoU有88%拿到乙城市直接掉到78%。兩座城市的建筑風(fēng)格、人行道材質(zhì)、樹(shù)冠密度差異很大圖像顏色分布完全不同。排查第一步先做直方圖匹配把測(cè)試圖顏色分布強(qiáng)行對(duì)齊到訓(xùn)練集分布看看精度能回升多少。如果回升明顯說(shuō)明問(wèn)題主要是圖像域差異。長(zhǎng)期方案是收集目標(biāo)城市少量圖片做測(cè)試再?zèng)Q定是微調(diào)還是保留原模型。短期部署時(shí)可以用目標(biāo)場(chǎng)景的幾十張圖片對(duì)模型做小規(guī)模微調(diào)只解凍最后兩三個(gè)stage通常比在源域數(shù)據(jù)上加增強(qiáng)更直接有效。5.5 排查速查表現(xiàn)象可能原因快速驗(yàn)證手段解決方案訓(xùn)練loss不降學(xué)習(xí)率過(guò)高、標(biāo)簽大量錯(cuò)誤看前10個(gè)batch的預(yù)測(cè)輸出降低學(xué)習(xí)率或修復(fù)標(biāo)簽驗(yàn)證mIoU虛高但實(shí)拍差數(shù)據(jù)劃分泄漏、測(cè)試集過(guò)簡(jiǎn)單檢查同一區(qū)域是否跨集合按區(qū)域重新劃分預(yù)測(cè)邊界碎、不連續(xù)缺少邊界約束、無(wú)后處理可視化FP/FN分布加邊緣損失、形態(tài)學(xué)閉運(yùn)算換場(chǎng)景掉點(diǎn)嚴(yán)重圖像域差異大直方圖匹配看能否回升目標(biāo)場(chǎng)景微調(diào)或圖像歸一化推理速度不達(dá)標(biāo)模型過(guò)大、分辨率過(guò)高分析各層耗時(shí)分布換輕量骨干或INT8量化這套3819張圖片的人行道檢測(cè)數(shù)據(jù)集我整體跑下來(lái)最大的體會(huì)是數(shù)據(jù)集的構(gòu)造比想象中更影響結(jié)果。不要急著上大模型先把數(shù)據(jù)分布摸清楚把標(biāo)注質(zhì)量核驗(yàn)一遍遠(yuǎn)勝過(guò)盲目堆算力。人行道檢測(cè)很少是終點(diǎn)的模型更多時(shí)候是中間層后面還得接路徑規(guī)劃、統(tǒng)計(jì)報(bào)表或者控制指令所以結(jié)果的可解釋性、邊界穩(wěn)定性往往比單純刷高mIoU更重要。最后分享一個(gè)我常用的擴(kuò)展思路如果后續(xù)要減少標(biāo)注成本可以先拿低分辨率遙感影像或者城市模型做一次粗分割再用這類(lèi)街景圖像精修邊緣相當(dāng)于“粗標(biāo)簽加局部精修”兩段式訓(xùn)練實(shí)際標(biāo)注工作量能減少不少。這個(gè)方向后續(xù)值得試一試。