優(yōu)化錨框,快速提升檢測(cè)精度)
HybridNets AutoAnchor 指南用 K-Means 和遺傳算法自動(dòng)優(yōu)化錨框快速提升檢測(cè)精度【免費(fèi)下載鏈接】HybridNetsHybridNets: End-to-End Perception Network項(xiàng)目地址: https://gitcode.com/gh_mirrors/hy/HybridNetsHybridNets 是一款端到端感知網(wǎng)絡(luò)可同時(shí)完成交通目標(biāo)檢測(cè)、可行駛區(qū)域分割與車道線檢測(cè)任務(wù)。當(dāng)你在自己的數(shù)據(jù)集上訓(xùn)練時(shí)默認(rèn)錨框往往水土不服導(dǎo)致檢測(cè)精度上不去。本指南將帶你掌握HybridNets AutoAnchor的完整用法利用 K-Means 聚類與遺傳算法自動(dòng)優(yōu)化錨框一鍵獲得最適合你數(shù)據(jù)集的錨框參數(shù)快速提升檢測(cè)精度無(wú)需手工調(diào)參。什么是錨框?yàn)槭裁茨J(rèn)錨框會(huì)拖累檢測(cè)精度錨框Anchor Box是目標(biāo)檢測(cè)中預(yù)先定義的一組候選框模型通過預(yù)測(cè)錨框與真實(shí)目標(biāo)的偏移量來(lái)完成定位。HybridNets 在 BDD100K 數(shù)據(jù)集上預(yù)置了 9 組錨框例如projects/bdd100k.yml中的默認(rèn)配置anchors_scales: [2**0, 2**0.70, 2**1.32] anchors_ratios: [(0.62, 1.58), (1.0, 1.0), (1.58, 0.62)]問題在于錨框的形狀統(tǒng)計(jì)來(lái)自 COCO 或 BDD100K一旦你的數(shù)據(jù)集換成行人特寫、無(wú)人機(jī)航拍、工業(yè)質(zhì)檢等場(chǎng)景目標(biāo)的寬高比與尺寸分布截然不同默認(rèn)錨框就變成了錯(cuò)的起點(diǎn)。訓(xùn)練時(shí)模型需要花費(fèi)大量精力去糾正偏移收斂變慢檢測(cè)精度自然上不去。HybridNets AutoAnchor 工作原理K-Means 聚類 遺傳算法兩步走AutoAnchor 的核心實(shí)現(xiàn)位于 hybridnets/autoanchor.py整體思路清晰先統(tǒng)計(jì)你訓(xùn)練集里所有真實(shí)標(biāo)注框GT Box的寬高分布再用K-Means 聚類找出錨框的最佳起點(diǎn)最后用遺傳算法進(jìn)一步進(jìn)化出最優(yōu)組合。第一步K-Means 聚類尋找錨框最佳起點(diǎn)kmean_anchors()函數(shù)會(huì)從訓(xùn)練數(shù)據(jù)集中提取所有標(biāo)注框的寬高wh過濾掉小于 2 像素的極小目標(biāo)后先用標(biāo)準(zhǔn)差做白化處理再執(zhí)行 30 輪 K-Means 聚類把成千上萬(wàn)個(gè)真實(shí)框聚成 9 個(gè)簇每個(gè)簇的中心就是一個(gè)候選錨框。這一步保證錨框能覆蓋你數(shù)據(jù)集中最典型的目標(biāo)尺寸。第二步遺傳算法進(jìn)化持續(xù)逼近最優(yōu)解聚類只是起點(diǎn)。接下來(lái)代碼進(jìn)入遺傳算法階段默認(rèn) 1000 代每一代都對(duì)當(dāng)前錨框施加隨機(jī)變異變異概率 0.9、標(biāo)準(zhǔn)差 0.1并用anchor_fitness()計(jì)算適應(yīng)度——即錨框與真實(shí)框的最佳寬高比匹配率。只有適應(yīng)度更高的變異體會(huì)被保留逐代迭代直到收斂出最優(yōu)錨框組合。一鍵開啟 AutoAnchor 的最快配置方法好消息是你完全不需要手動(dòng)調(diào)用這些函數(shù)。HybridNets 在訓(xùn)練流程中內(nèi)置了開關(guān)只需兩步第一步在項(xiàng)目配置projects/bdd100k.yml中找到model段把need_autoanchor改為truemodel: image_size: - 640 - 384 need_autoanchor: true # 一鍵開啟自動(dòng)錨框優(yōu)化第二步正常啟動(dòng)訓(xùn)練即可。train.py會(huì)在構(gòu)建模型前自動(dòng)調(diào)用run_anchor()利用訓(xùn)練數(shù)據(jù)集生成專屬錨框if params.need_autoanchor: params.anchors_scales, params.anchors_ratios run_anchor(None, train_dataset)訓(xùn)練日志會(huì)輸出類似下面的信息包含best possible recall最優(yōu)召回率、每個(gè)錨框的具體寬高以及最終建議寫入配置的New scales與New ratiosthr0.25: 0.9824 best possible recall, 8.91 anchors past thr New scales: [1.0, 1.75, 3.02] New ratios: [(0.62, 1.58), (1.0, 1.0), (1.58, 0.62)] New anchors saved to model. Update model config to use these anchors in the future.如何把自動(dòng)生成的錨框?qū)懟嘏渲梅€(wěn)定提升檢測(cè)精度AutoAnchor 每次訓(xùn)練都會(huì)重新計(jì)算為了穩(wěn)定復(fù)現(xiàn)結(jié)果建議將日志輸出的New scales與New ratios手動(dòng)寫回projects/bdd100k.yml并把need_autoanchor改回falseanchors_scales: [1.0, 1.75, 3.02] anchors_ratios: [(0.62, 1.58), (1.0, 1.0), (1.58, 0.62)] need_autoanchor: false這些參數(shù)會(huì)通過backbone.py中的HybridNetsBackbone傳入模型ratios決定錨框?qū)捀弑萻cales決定錨框相對(duì)步長(zhǎng)的放大倍數(shù)兩者在utils/utils.py的Anchors類中組合生成金字塔各層級(jí)的完整錨框集合。寫回配置后后續(xù)訓(xùn)練與推理包括 ONNX 導(dǎo)出都會(huì)穩(wěn)定使用這套為你數(shù)據(jù)集量身定制的錨框檢測(cè)精度提升可復(fù)現(xiàn)。AutoAnchor 關(guān)鍵參數(shù)詳解n錨框數(shù)量默認(rèn) 9即 3 個(gè)尺度 × 3 個(gè)寬高比足夠覆蓋大多數(shù)場(chǎng)景thr寬高比閾值默認(rèn) 4.0決定錨框與真實(shí)框匹配的判定標(biāo)準(zhǔn)閾值越小要求越嚴(yán)格gen遺傳算法進(jìn)化代數(shù)默認(rèn) 1000代數(shù)越多搜索越充分通常 1000 代已足夠收斂img_size訓(xùn)練圖像尺寸應(yīng)與model.image_size保持一致避免錨框與訓(xùn)練分辨率錯(cuò)位。訓(xùn)練實(shí)測(cè)效果與可視化錨框優(yōu)化是提升檢測(cè)精度性價(jià)比最高的手段之一尤其適合與 BDD100K 分布差異較大的自建數(shù)據(jù)集。下圖展示了 HybridNets 在優(yōu)化錨框并完成端到端訓(xùn)練后的檢測(cè)效果配合模型同時(shí)輸出的可行駛區(qū)域與車道線分割一套模型即可完成完整的駕駛環(huán)境感知相關(guān)源碼文件導(dǎo)航hybridnets/autoanchor.pyAutoAnchor 核心實(shí)現(xiàn)包含kmean_anchors()、run_anchor()與錨框順序校驗(yàn)check_anchor_order()train.py訓(xùn)練入口need_autoanchor開關(guān)在此觸發(fā)自動(dòng)錨框生成projects/bdd100k.yml錨框配置與數(shù)據(jù)集路徑配置文件backbone.py模型主干接收anchors_scales與anchors_ratios構(gòu)建檢測(cè)頭utils/utils.pyAnchors類負(fù)責(zé)把尺度與寬高比展開為全部錨框結(jié)語(yǔ)錨框是目標(biāo)檢測(cè)的地基地基不對(duì)上層再?gòu)?qiáng)也事倍功半。HybridNets AutoAnchor 用 K-Means 聚類加遺傳算法把調(diào)錨框從玄學(xué)變成了科學(xué)開啟一個(gè)開關(guān)訓(xùn)練一次把結(jié)果寫回配置即可快速提升檢測(cè)精度。建議在更換數(shù)據(jù)集或檢測(cè)精度不達(dá)預(yù)期時(shí)第一時(shí)間檢查錨框是否適配這往往是最省時(shí)省力的優(yōu)化切入點(diǎn)?!久赓M(fèi)下載鏈接】HybridNetsHybridNets: End-to-End Perception Network項(xiàng)目地址: https://gitcode.com/gh_mirrors/hy/HybridNets創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考