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