资料介绍
描述
基于 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次下载
- 用OpenVINO C# API在intel平台部署YOLOv10目标检测模型 746次阅读
- 多目标跟踪算法总结归纳 1111次阅读
- OpenVINO™ C# API部署YOLOv9目标检测和实例分割模型 610次阅读
- 深入浅出Yolov3和Yolov4 581次阅读
- 目标跟踪初探(DeepSORT) 679次阅读
- 经典多目标跟踪算法DeepSORT的基本原理和实现 2959次阅读
- AI爱克斯开发板上使用OpenVINO加速YOLOv8目标检测模型 1067次阅读
- 目标跟踪新的建模方式 748次阅读
- YOLOv8版本升级支持小目标检测与高分辨率图像输入 1.1w次阅读
- 在AI爱克斯开发板上用OpenVINO™加速YOLOv8目标检测模型 1134次阅读
- 复杂野外环境下油茶果快速鲁棒检测算法 875次阅读
- 最常见的目标跟踪算法 2544次阅读
- 深度解析YOLOv7的网络结构 7281次阅读
- 关于YOLOU中模型的测试 741次阅读
- 计算机视觉中有哪些经典的目标跟踪算法? 5416次阅读
下载排行
本周
- 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次下载 | 免费
评论
查看更多