境下道路目標(biāo)檢測算法優(yōu)化與實踐)
1. 霧霾環(huán)境下的道路目標(biāo)檢測挑戰(zhàn)在智能交通和自動駕駛領(lǐng)域道路目標(biāo)檢測是最基礎(chǔ)也最關(guān)鍵的環(huán)節(jié)。但當(dāng)我們把檢測場景放到霧霾天氣下時問題就變得復(fù)雜起來。我做過不少實際項目最頭疼的就是遇到能見度不足100米的霧霾天——傳統(tǒng)檢測算法在這種環(huán)境下準(zhǔn)確率能掉到50%以下。霧霾對圖像質(zhì)量的影響主要體現(xiàn)在三個方面一是大氣散射導(dǎo)致圖像整體對比度下降就像給鏡頭蒙了一層紗二是光照不均造成局部過曝或欠曝三是色彩失真特別是遠(yuǎn)處物體幾乎與背景融為一體。去年在河北某地的實測數(shù)據(jù)顯示普通YOLOv5模型在PM2.5超過300時的漏檢率高達(dá)42%這對自動駕駛系統(tǒng)來說絕對是災(zāi)難性的。2. 算法整體設(shè)計思路2.1 雙階段處理架構(gòu)經(jīng)過多次實地測試我最終采用了預(yù)處理檢測的雙階段架構(gòu)。這個方案最大的優(yōu)勢是既能保留YOLOv5的實時性又能針對性解決霧霾干擾。第一階段使用改進(jìn)的暗通道先驗算法進(jìn)行圖像增強(qiáng)第二階段才是目標(biāo)檢測。這里有個關(guān)鍵設(shè)計取舍為什么不直接用端到端網(wǎng)絡(luò)實測發(fā)現(xiàn)將去霧和檢測分開處理在保持95%以上準(zhǔn)確率的情況下推理速度比端到端方案快23%。這對于需要實時響應(yīng)的車載系統(tǒng)至關(guān)重要。2.2 圖像增強(qiáng)模塊優(yōu)化2.2.1 改進(jìn)的暗通道先驗算法傳統(tǒng)暗通道算法在處理濃霧圖像時容易產(chǎn)生光暈效應(yīng)。我的改進(jìn)主要在三個方面采用引導(dǎo)濾波替代軟摳圖速度提升15倍自適應(yīng)大氣光估計避免固定窗口導(dǎo)致的估計偏差引入透射率修正因子公式如下t(x) 1 - ω * min(min(I^c(y)/A^c))其中ω取值0.65-0.85效果最佳需要根據(jù)霧濃度動態(tài)調(diào)整。實測這個改進(jìn)使PSNR指標(biāo)平均提高了2.3dB。2.2.2 多尺度融合增強(qiáng)單一尺度的增強(qiáng)會丟失細(xì)節(jié)我采用了金字塔分解策略對原圖進(jìn)行高斯金字塔分解3層對不同層級分別進(jìn)行增強(qiáng)處理使用拉普拉斯金字塔重構(gòu)這種方法特別適合處理遠(yuǎn)近景混合的交通場景遠(yuǎn)處車牌等小目標(biāo)的清晰度提升明顯。3. YOLOv5模型專項優(yōu)化3.1 數(shù)據(jù)集的特殊處理3.1.1 霧霾數(shù)據(jù)合成收集真實霧霾數(shù)據(jù)成本太高我使用以下方法合成訓(xùn)練集基于NYU Depth數(shù)據(jù)集生成深度圖應(yīng)用大氣散射模型I(x) J(x)t(x) A(1-t(x))添加噪聲模擬真實傳感器噪聲關(guān)鍵是要控制霧濃度梯度我開發(fā)了一個參數(shù)化合成工具可以精確控制PM2.5在50-500μg/m3范圍內(nèi)的合成效果。3.1.2 困難樣本挖掘針對霧霾場景的特殊性我增加了三類困難樣本半遮擋車輛被霧部分遮擋低對比度行人與背景相似遠(yuǎn)處小目標(biāo)小于32×32像素這些樣本要占訓(xùn)練集的至少30%否則模型在真實場景表現(xiàn)會大幅下降。3.2 網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)3.2.1 注意力機(jī)制引入在YOLOv5的Backbone末端添加CBAM模塊class CBAM(nn.Module): def __init__(self, c): super().__init__() self.channel_attention nn.Sequential( nn.AdaptiveAvgPool2d(1), nn.Conv2d(c, c//8, 1), nn.ReLU(), nn.Conv2d(c//8, c, 1), nn.Sigmoid()) self.spatial_attention nn.Sequential( nn.Conv2d(2, 1, 7, padding3), nn.Sigmoid())這個改進(jìn)使小目標(biāo)檢測AP提升了4.7%。3.2.2 特征融合優(yōu)化將原來的PANet結(jié)構(gòu)改進(jìn)為BiFPN增加跨尺度連接引入可學(xué)習(xí)的特征權(quán)重使用深度可分離卷積降低計算量實測在保持速度不變的情況下mAP提升2.1%。4. 工程實現(xiàn)關(guān)鍵細(xì)節(jié)4.1 部署優(yōu)化技巧4.1.1 TensorRT加速在Jetson Xavier上部署時這幾個優(yōu)化點很關(guān)鍵使用FP16精度速度提升3倍設(shè)置opt_profile_num3以適應(yīng)不同霧濃度啟用sparse convolution加速最終在1080p輸入下能達(dá)到35FPS完全滿足實時性要求。4.1.2 內(nèi)存優(yōu)化處理高分辨率圖像時容易OOM我的解決方案使用動態(tài)batch size將圖像增強(qiáng)模塊移到GPU上執(zhí)行采用分塊處理策略這樣在8GB顯存的設(shè)備上也能處理4K輸入。4.2 實際應(yīng)用中的調(diào)參經(jīng)驗4.2.1 動態(tài)參數(shù)調(diào)整霧霾濃度是動態(tài)變化的我開發(fā)了一個濃度估計模塊基于暗通道強(qiáng)度估計濃度等級根據(jù)濃度自動調(diào)整圖像增強(qiáng)參數(shù)檢測閾值NMS參數(shù)這個設(shè)計使系統(tǒng)在霧濃度變化時也能保持穩(wěn)定表現(xiàn)。4.2.2 后處理優(yōu)化標(biāo)準(zhǔn)NMS在霧天容易誤合并改用Soft-NMSdef soft_nms(dets, sigma0.5, thresh0.3): keep [] while dets: max_idx np.argmax(dets[:, 4]) keep.append(max_idx) ious bbox_iou(dets[max_idx], dets) dets[:, 4] * np.exp(-(ious**2)/sigma) dets dets[dets[:, 4] thresh] return keep這樣處理重疊目標(biāo)時更符合霧天的實際情況。5. 實測效果與對比分析5.1 定量評估在自建的FoggyCity數(shù)據(jù)集上測試結(jié)果方法mAP0.5推理時間(ms)內(nèi)存占用(MB)原始YOLOv558.3%281200本文方法82.7%351450其他SOTA79.5%522100特別是在濃霧場景PM2.5300下行人檢測AP達(dá)到76.3%比基準(zhǔn)方法高31.5%。5.2 典型場景分析5.2.1 遠(yuǎn)距離小目標(biāo)在300米外的車輛檢測場景原始方法漏檢率63%本方法漏檢率22% 關(guān)鍵改進(jìn)在于多尺度特征融合和注意力機(jī)制。5.2.2 高密度遮擋早高峰擁堵路段原始方法誤檢率18%本方法誤檢率7.5% Soft-NMS和困難樣本挖掘起了主要作用。6. 常見問題與解決方案6.1 圖像增強(qiáng)過度癥狀增強(qiáng)后圖像出現(xiàn)偽影或噪聲放大 解決方法限制透射率下限t_min0.1添加后處理降噪動態(tài)調(diào)整ω參數(shù)6.2 雨天誤識別霧霾和雨天的光學(xué)特性不同容易誤判增加雨天數(shù)據(jù)增強(qiáng)開發(fā)天氣分類模塊使用不同的增強(qiáng)參數(shù)組6.3 邊緣設(shè)備部署在樹莓派等設(shè)備上的優(yōu)化技巧量化到INT8裁剪非必要算子使用Tiny版本的YOLOv5將增強(qiáng)模塊改為CPU執(zhí)行7. 實際項目經(jīng)驗分享在山西某智慧高速項目中我們遇到了幾個教科書上沒寫的坑隧道出入口的亮度突變會導(dǎo)致增強(qiáng)算法失效最后通過添加光照估計模塊解決冬季霧霾常伴隨雪花需要在數(shù)據(jù)增強(qiáng)時加入雪花噪聲大貨車卷起的塵土?xí)斐啥虝焊蓴_開發(fā)了基于時序的濾波算法另一個重要發(fā)現(xiàn)是不同地區(qū)的霧霾光學(xué)特性其實有差異。比如北方霧霾更多是干燥顆粒物南方則是濕潤氣溶膠這對透射率模型的影響能達(dá)到15%左右。最好的辦法是在目標(biāo)地區(qū)采集本地數(shù)據(jù)做微調(diào)。