資料介紹
描述
基于 DeepSORT YOLOv4 的目標跟蹤
隨著道路上的汽車、卡車和不同車輛的數量不斷增加,交通擁堵問題仍在日益嚴重。適當的紅綠燈控制可以減少交通并提高十字路口的通行能力,而十字路口往往是交通瓶頸。由于持續監控十字路口的高成本和這項任務的基礎設施,更好的方法是使用無人機,它可以監控、跟蹤和通知車輛的數量和通過十字路口所需的時間。它可以更好地管理交通信號燈,尤其是在高峰時段或道路整修期間。對于此任務,需要實時對象跟蹤算法來持續提供返回結果。所以該項目包含DeepSORT的實現基于 YOLOv4 檢測的目標跟蹤算法,確保實時響應。檢測器推理類在 TensorFlow、TensorFlow Lite、TensorRT、OpenCV 和 OpenVINO 等多個框架中實現,以便對方法進行基準測試并將最佳方法用于邊緣定制解決方案。
步驟 0:多對象跟蹤簡介
MOT 算法作為當前計算機視覺研究的相關部分,與自動駕駛和轉向、監視和行為分析有關。MOT 問題主要分為多個子任務,例如檢測多個對象(定位和分類)、添加和保持它們的身份,以及在連續幀中跟蹤它們的個體軌跡。

DeepSORT 算法是一種基于檢測器的方法,它使用具有恒定運動速率的遞歸卡爾曼濾波器和線性觀察模型。重新識別任務使用匈牙利算法解決。為了提高分配算法的投影和性能,使用了加權度量,包括馬氏距離和余弦距離。第一個度量通過計算預測的卡爾曼狀態和新到達的測量值之間的距離來提供運動信息。第二個指標使用預訓練的深度卷積網絡作為圖像特征描述符來提供外觀信息。
第 1 步:準備檢測算法
作為目標檢測器,由于其令人滿意的結果和實時處理速度,選擇了YOLOv4算法。神經網絡模型使用Darknet框架和VisDrone 數據集進行訓練,其中包含從無人機視角捕獲的圖像。每個獨立對象都屬于 11 個類別之一。許多實例的圖像的小而被遮擋的部分被標記為忽??略區域。
ignored_regions
pedestrian
people
bicycle
car
van
truck
tricycle
awning_tricycle
bus
motor
others
YOLOv4 文件在鏈接存儲庫中,配置文件在data/darknet/yolov4_visdrone.cfg中,類文件在data/classes/visdrone.names中,錨框的計算大小在data/anchors/visdrone_anchors.txt中。
第 2 步:邊緣設備設置
系統設置。
出于評估目的,使用了NVIDIA Jetson Xavier NX和英特爾神經計算棒 2等邊緣設備。Jetson Xavier NX 使用JetPack SDK 4.4.1 刷新,Raspberry Pi 4B 的 SD 卡使用Raspberry Pi OS Lite 5.10刷新。完整的 TensorFlow 庫用于 Raspberry Pi 4B,2.2.0 版本的構建指令可在此處獲得。
相機設置。
由于使用了 Jetson 相機驅動程序(e-CAM24_CUNX – 彩色全局快門相機),必須使用 4.4.1 版本的 JetPack。e-con Systems 作為制造商提供了適用于 NVIDIA Jetson Nano 和 Xavier NX 的攝像頭驅動程序和簡單的安裝說明。
第 3 步:邊緣定制的檢測器模型優化和量化
使用 NVIDIA Jetson Xavier NX 的TensorRT 、英特爾神經計算棒 2 的 OpenVINO 和基于 CPU 的解決方案的 TensorFlow Lite執行優化和量化過程。
TensorRT框架需要將模型轉換為一種受支持的格式,例如 ONNX 或 TensorFlow。在本項目中,使用了對 ONNX 格式的更改。為了將存儲庫中可用的腳本yolo_to_onnx.py與以下調用一起使用,其中 -c 描述了許多類-m輸入模型和-o輸出 ONNX 模型路徑。
python3 yolo_to_onnx.py -c 12 -m ./yolov4-608 -o ./yolov4.onnx
要將模型從 ONNX 更改為 TensorRT,使用了onnx_to_tensorrt.py腳本。模型的 TensorRT 表示以三種不同的數據類型呈現:FP32 和量化的 FP16 和 INT8。
- 使用 float32 權重將 ONNX 轉換為 TensorRT 引擎
python3 onnx_to_tensorrt.py -v -c 12 -m ./yolov4 -q fp32 -o ./yolov4_fp32.trt
- 使用 float16 權重將 ONNX 轉換為 TensorRT 引擎
python3 onnx_to_tensorrt.py -v -c 12 -m ./yolov4 -q fp16 -o ./yolov4_fp16.trt
- 將 ONNX 轉換為具有 int8 權重的 TensorRT 引擎(需要校準數據集的路徑 - 來自數據集的代表性圖像,下面標記為“./calib_images” )
python3 onnx_to_tensorrt.py -v -c 12 -m ./yolov4 -i ./calib_images -q int8 -o ./yolov4_int8.trt

OpenVINO使用了從tensorrt/README.md的指令生成的 ONNX 文件,然后使用 OpenVINO模型優化器包和命令:
- FP32 數據格式:
python3 mo.py --input_model ./yolov4.onnx --model_name yolov4_fp32 --data_type FP32 --batch 1
- FP16 數據格式:
python3 mo.py --input_model ./yolov4.onnx --model_name yolov4_fp16 --data_type FP16 --batch 1

通過命令行界面使用 ONNX 模型和onnx-tensorflow包完成到TensorFlow Lite的轉換:
onnx-tf convert -i /path/to/input.onnx -o /path/to/output
它支持從 ONNX 格式更改為 TensorFlow SavedModel 表示。使用內部 TensorFlow TFLiteConverter 可以轉換為 TF Lite。

- FP32 格式
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(MODEL_PATH)
tflite_model = converter.convert()
# Save the model.
with open(OUTPUT_PATH, 'wb') as f:
f.write(tflite_model)
- FP16 格式
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(MODEL_PATH)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_types = [tf.float16]
tflite_model = converter.convert()
# Save the model.
with open(OUTPUT_PATH, 'wb') as f:
f.write(tflite_model)
第 4 步:如何使用 DeepSORT 跟蹤器
DeepSORT 算法從 YOLOv4 中獲取檢測結果,并使用遞歸卡爾曼濾波器和匈牙利算法將它們關聯起來。

。它是在 NVIDIA Jetson Xavier NX 上使用 TensorRT 在 FP32 模式下執行的。
筆記
如果想要運行推理,一臺支持 TensoRT 的 NVIDIA 設備需要取消注釋檢測器/__init__.py 中的TrtYOLO檢測器導入。同樣的問題是在英特爾硬件上使用OpenvinoYOLO類。
命令行參數
Usage: object_tracker.py [OPTIONS]
Options:
-f, --framework TEXT Inference framework: {tf, tflite, trt, opencv,
openvino}
-m, --model_path TEXT Path to detection model
-n, --yolo_names TEXT Path to YOLO class names file
-s, --size INTEGER Model input size
-v, --video_path TEXT Path to input video
-o, --output TEXT Path to output, inferenced video
--output_format TEXT Codec used in VideoWriter when saving video to
file
--tiny BOOLEAN If YOLO tiny architecture
--model_type TEXT yolov3 or yolov4
--iou FLOAT IoU threshold
--score_threshold FLOAT Confidence score threshold
--opencv_dnn_target TEXT Precision of OpenCV DNN model
--device TEXT OpenVINO inference device, available: {MYRIAD,
CPU, GPU}
--dont_show BOOLEAN Do not show video output
--info BOOLEAN Show detailed info of tracked objects
--count BOOLEAN Count objects being tracked on screen
--help Show this message and exit.
第 5 步:性能測試
基準測試是在NVIDIA Jetson Xavier NX和英特爾神經計算棒 2上執行的。Jetson Xavier NX 處于模式 2 ( sudo nvpmodel -m 2
) 和風扇,時鐘通過命令設置為最大頻率sudo jetson clocks --fan
。為了評估英特爾 INCS 2,使用了 Raspberry Pi 4B。評價結果如下所示。

第 6 步:功耗測試
在性能評估期間,檢查了基準邊緣設備的能效。英特爾神經計算棒 2 和樹莓派 4B 的功耗是使用 USB 多功能測試儀測量的,如下圖所示。


Jetson Xavier NX 的能源使用情況通過使用旨在監控和控制 NVIDIA Jetson 設備的jetson-stats包進行檢查。所進行的測試的結果如下表所示。

相比之下,NVIDIA V100 或 RTX 3080 等云中心中用于推理和計算的顯卡的功耗分別為 300 和 320 瓦,如下所示。
跟蹤算法的用例
多對象跟蹤的可能用例是:
- 監視監控
- 十字路口流量跟蹤
- 不安全場所監測預警
參考
非常感謝您的出色工作:
- 人工智能專家:yolov4-deepsort ,麻省理工學院許可證
- nwojke : deep_sort , MIT 許可證
- jkjung-avt : tensorrt_demos , MIT 許可證
- 在KV260上運行Yolov4 tiny
- Nvidia Jetson Nano面罩Yolov4探測器
- 基于Tengine實現yolov4的cpu推理
- AAAI 2021 YOLObile:移動設備上的實時目標檢測
- 基于多尺度自適應權重的目標跟蹤算法 7次下載
- 基于特征融合的LCT目標跟蹤算法綜述 11次下載
- 基于YOLOv3的嵌入式設備視頻目標檢測算法 7次下載
- 一種基于特定目標提議框的自適應跟蹤算法 8次下載
- 工業零件圖像的改進YOLOv3目標識別算法 11次下載
- 基于北京加權的多特征融合目標跟蹤算法 4次下載
- 視覺目標跟蹤相關算法、優缺點及發展趨勢 14次下載
- 如何更好地實現視頻多目標軌跡的連續跟蹤? 5次下載
- 基于神經網絡的、改進的YOLOv3目標檢測算法 15次下載
- 基于YOLOV3算法的視頻監控目標檢測方法 13次下載
- 新型基于深度學習的目標實時跟蹤算法 10次下載
- 視頻目標跟蹤從0到1,概念與方法 414次閱讀
- 用OpenVINO C# API在intel平臺部署YOLOv10目標檢測模型 1093次閱讀
- 多目標跟蹤算法總結歸納 2064次閱讀
- OpenVINO? C# API部署YOLOv9目標檢測和實例分割模型 937次閱讀
- 深入淺出Yolov3和Yolov4 819次閱讀
- 目標跟蹤初探(DeepSORT) 963次閱讀
- 經典多目標跟蹤算法DeepSORT的基本原理和實現 3702次閱讀
- AI愛克斯開發板上使用OpenVINO加速YOLOv8目標檢測模型 1278次閱讀
- 目標跟蹤新的建模方式 910次閱讀
- YOLOv8版本升級支持小目標檢測與高分辨率圖像輸入 1.2w次閱讀
- 在AI愛克斯開發板上用OpenVINO?加速YOLOv8目標檢測模型 1354次閱讀
- 最常見的目標跟蹤算法 2787次閱讀
- 深度解析YOLOv7的網絡結構 7659次閱讀
- 關于YOLOU中模型的測試 841次閱讀
- 計算機視覺中有哪些經典的目標跟蹤算法? 5597次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論