
BoxMOT 多目標追蹤教程5 分鐘跑通10 種追蹤器按場景選型【免費下載鏈接】boxmotBoxMOT: Pluggable Python and C SOTA multi-object tracking modules with support for axis-aligned and oriented bounding boxes項目地址: https://gitcode.com/GitHub_Trending/bo/boxmotBoxMOT 是一個插件式多目標追蹤框架任意能輸出邊界框的分割、目標檢測或姿態(tài)估計模型接上它就能給畫面里的每個目標分配穩(wěn)定 ID。本文帶你從安裝、首次追蹤到追蹤器選型、評估與調參一次走通。兩個繞不開的多目標追蹤痛點多目標追蹤落地時有兩件事最耗時間。第一追蹤算法和檢測模型是兩攤代碼換一個檢測器關聯(lián)、卡爾曼、外觀特征那套邏輯要么重寫要么重調。第二想對比 ByteTrack 和 BoT-SORT 誰更合適就得把兩套倉庫各自克隆、各自配環(huán)境。BoxMOT 的解法是把檢測器、ReID 編碼器、追蹤器拆成互不綁定的組件追蹤器統(tǒng)一接收同一份檢測輸入換算法只需改一個類名或一個命令行參數(shù)。十種追蹤器實現(xiàn)都在 boxmot/trackers/一次接入、任意切換。 BoxMOT 安裝與首次追蹤環(huán)境要求 Python 3.10 至 3.13。pip install boxmot # 安裝 BoxMOT 及依賴裝完先跑這條命令幾秒后就能看到帶 ID 的追蹤畫面# 用攝像頭實時追蹤yolo26n 檢測 lmbn_n_duke 外觀 occluboost 追蹤 boxmot track --detector yolo26n --reid lmbn_n_duke --tracker occluboost --source 0 --save --show--source接受四種寫法分別對應網(wǎng)絡攝像頭、圖片、視頻、目錄boxmot track --detector yolo26n --reid lmbn_n_duke --tracker occluboost --source 0 # 攝像頭 boxmot track --detector yolo26n --reid lmbn_n_duke --tracker occluboost --source img.jpg # 單張圖片 boxmot track --detector yolo26n --reid lmbn_n_duke --tracker occluboost --source vid.mp4 # 視頻文件 boxmot track --detector yolo26n --reid lmbn_n_duke --tracker occluboost --source path/ # 圖片目錄--show實時預覽--save把結果視頻寫到 runs 目錄--device可在cpu、mps、cuda:0之間切換。下面是 MOT17 測試幀上多目標追蹤的畫面效果 按場景挑選追蹤器MOT17 基準測試對照這張表回答一個問題十種追蹤器我該怎么選。以下數(shù)據(jù)來自 README.md 的 MOT17 消融基準官方消融檢測器分數(shù)越高越好追蹤器狀態(tài)HOTA↑MOTA↑IDF1↑occluboost?71.1078.5085.28botsort?69.6878.2382.33boosttrack?69.2575.9183.20strongsort?68.0576.1980.76deepocsort?67.9575.8380.54bytetrack?67.6878.0479.16hybridsort?67.3174.0978.87ocsort?66.4474.5577.90sfsort?62.6576.8769.18選型先分清兩種性能模式。純運動類bytetrack、ocsort只靠位置和速度關聯(lián)CPU 上幀率最高適合目標很少交叉遮擋的實時場景。運動外觀類botsort、occluboost、strongsort、deepocsort、boosttrack、hybridsort、sfsort會額外給每個目標拍一張身份照——外觀嵌入描述目標長什么樣目標被擋住或短暫丟失后仍能靠長相找回正確 ID代價是每幀多一次 ReID 推理。追求極限幀率選 bytetrack精度優(yōu)先尤其 IDF1 身份一致性選 occluboost平衡項看 botsort它的 IDF1 達 82.33也是評估命令的默認示例。 五個子命令逐個拆解boxmot --help列出的能力很多日常最常用的五個如下。# track對任意源攝像頭/圖片/視頻/目錄跑檢測追蹤 boxmot track --detector yolo26n --reid lmbn_n_duke --tracker occluboost --source 0 --save --show輸出帶 ID 框的實時畫面或視頻。# eval在 MOT17 消融集上評估檢測器ReID追蹤器組合的 HOTA/MOTA/IDF1 boxmot eval --dataset mot17 --split ablation --detector yolox-x-mot17 --reid lmbn-n-duke --tracker botsort首次運行會自動物化檢測結果與外觀嵌入之后換追蹤器直接復用詳見進階部分。# materialize一次性生成不可變的檢測嵌入構建供 eval/tune 反復復用 boxmot materialize --experiment mot17/ablation-yolox-lmbn.yaml --data-root datasets/mot --device mps檢測只算一次后續(xù)對比任意追蹤器都不用重跑檢測器。# tune用進化式搜索在 MOT17 上自動調追蹤器超參數(shù) boxmot tune --dataset mot17 --split ablation --detector yolox-x-mot17 --reid lmbn-n-duke --tracker botsort --n-trials 9最優(yōu)超參數(shù)集寫回 boxmot/configs/trackers/ 對應的配置。# export把 ReID 模型導出為部署格式 boxmot export --weights osnet_x0_25_msmt17.pt --include onnx --include engine --device cuda:0 --dynamic支持 TorchScript、ONNX、OpenVINO、TensorRT、Core ML、TFLite 等格式。兩個高頻參數(shù)ReID 模型選擇--reid決定外觀特征來源osnet_x0_25_msmt17輕量、適合實時lmbn_n_duke精度更高是 MOT17 基準的默認搭配。可選模型見 boxmot/configs/reid/。類別過濾默認追蹤全部 COCO 類別--classes只保留你要的索引# 只追蹤 COCO 第 16貓、17狗兩類 boxmot track --detector yolov8s --tracker botsort --source 0 --classes 16,17 Python 集成檢測器接追蹤器的最小閉環(huán)在代碼里BoxMOT 的追蹤器直接吃標準檢測數(shù)組x1, y1, x2, y2, 置信度, 類別 ID無需中間適配層import numpy as np from boxmot import OccluBoost # OccluBoost 為開箱即用的默認追蹤器含外觀 tracker OccluBoost() dets np.array([[100, 200, 300, 400, 0.9, 0]]) # x1,y1,x2,y2,score,class frame np.zeros((480, 640, 3), dtypenp.uint8) # BGR 圖像 tracks tracker.update(dets, frame) print(tracks[:, 4].astype(int)) # 每個目標的軌跡 ID想換其他算法只需換掉導入的類BoxMOT 包根導出了BoostTrack、BotSort、ByteTrack、DeepOcSort、HybridSort、MafHda、OccluBoost、OcSort、SFSORT、StrongSort、EagerMot接口保持一致。?? 進階玩法評估管線、調參、導出本地評估管線。評估的核心是檢測只算一次。boxmot eval首次運行會把檢測結果和 ReID 嵌入物化下來之后換追蹤器、甚至換 ReID 模型檢測推理都會跳過、直接復用已有構建跨 CPU/MPS/CUDA 同樣可復用。跑完想再打磨軌跡加后處理參數(shù)# 評估后先做 tracklet 關聯(lián)再做高斯平滑插值補洞 boxmot eval --dataset mot17 --split ablation --detector yolox-x-mot17 --reid lmbn-n-duke --tracker botsort \ --postprocessing gta --postprocessing gsi--postprocessing gsi用高斯平滑插值把軌跡斷點補成平滑軌跡--postprocessing gta先把碎片軌跡重新關聯(lián)再接 GSI處理后指標取新結果原始結果保留在輸出目錄的raw/下。一條命令完成調參。boxmot tune用進化式搜索自動試追蹤器超參數(shù)每個試驗重放同一份不可變構建結果按指標排序最優(yōu)參數(shù)組合寫回追蹤器配置下一輪直接用默認配置就是調過的版本。ReID 模型多格式導出。同一份外觀權重部署到哪就導到哪ONNX 給跨框架推理OpenVINO 給 Intel 硬件TensorRT 給 GPU 極致吞吐TorchScript/Core ML/TFLite 各有對應場景。--dynamic允許動態(tài)輸入批量導出時可用--batch-size指定批大小。 上手資源示例筆記本與文檔三個官方 notebook 演示現(xiàn)成 torchvision 模型 BoxMOT的完整寫法examples/det/torchvision_boxmot.ipynb邊界框檢測接追蹤examples/pose/torchvision_boxmot.ipynb姿態(tài)估計接追蹤examples/seg/torchvision_boxmot.ipynb分割接追蹤更多入口官方文檔完整指南與 API 參考、安裝指南、追蹤器總覽、評估與后處理指南以及項目 README。寫在最后BoxMOT 把多目標追蹤從每個算法一套環(huán)境變成了一個接口換參數(shù)檢測、ReID、追蹤器各自可插拔評估與調參共享同一份檢測結果。先跑通一條boxmot track再用 MOT17 基準對照表做選型剩下的交給tune和eval。核心鏈接README.md · docs/【免費下載鏈接】boxmotBoxMOT: Pluggable Python and C SOTA multi-object tracking modules with support for axis-aligned and oriented bounding boxes項目地址: https://gitcode.com/GitHub_Trending/bo/boxmot創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考