資料介紹
描述
基于 DeepSORT YOLOv4 的目標(biāo)跟蹤
隨著道路上的汽車、卡車和不同車輛的數(shù)量不斷增加,交通擁堵問題仍在日益嚴(yán)重。適當(dāng)?shù)募t綠燈控制可以減少交通并提高十字路口的通行能力,而十字路口往往是交通瓶頸。由于持續(xù)監(jiān)控十字路口的高成本和這項任務(wù)的基礎(chǔ)設(shè)施,更好的方法是使用無人機(jī),它可以監(jiān)控、跟蹤和通知車輛的數(shù)量和通過十字路口所需的時間。它可以更好地管理交通信號燈,尤其是在高峰時段或道路整修期間。對于此任務(wù),需要實時對象跟蹤算法來持續(xù)提供返回結(jié)果。所以該項目包含DeepSORT的實現(xiàn)基于 YOLOv4 檢測的目標(biāo)跟蹤算法,確保實時響應(yīng)。檢測器推理類在 TensorFlow、TensorFlow Lite、TensorRT、OpenCV 和 OpenVINO 等多個框架中實現(xiàn),以便對方法進(jìn)行基準(zhǔn)測試并將最佳方法用于邊緣定制解決方案。
步驟 0:多對象跟蹤簡介
MOT 算法作為當(dāng)前計算機(jī)視覺研究的相關(guān)部分,與自動駕駛和轉(zhuǎn)向、監(jiān)視和行為分析有關(guān)。MOT 問題主要分為多個子任務(wù),例如檢測多個對象(定位和分類)、添加和保持它們的身份,以及在連續(xù)幀中跟蹤它們的個體軌跡。
DeepSORT 算法是一種基于檢測器的方法,它使用具有恒定運(yùn)動速率的遞歸卡爾曼濾波器和線性觀察模型。重新識別任務(wù)使用匈牙利算法解決。為了提高分配算法的投影和性能,使用了加權(quán)度量,包括馬氏距離和余弦距離。第一個度量通過計算預(yù)測的卡爾曼狀態(tài)和新到達(dá)的測量值之間的距離來提供運(yùn)動信息。第二個指標(biāo)使用預(yù)訓(xùn)練的深度卷積網(wǎng)絡(luò)作為圖像特征描述符來提供外觀信息。
第 1 步:準(zhǔn)備檢測算法
作為目標(biāo)檢測器,由于其令人滿意的結(jié)果和實時處理速度,選擇了YOLOv4算法。神經(jīng)網(wǎng)絡(luò)模型使用Darknet框架和VisDrone 數(shù)據(jù)集進(jìn)行訓(xùn)練,其中包含從無人機(jī)視角捕獲的圖像。每個獨立對象都屬于 11 個類別之一。許多實例的圖像的小而被遮擋的部分被標(biāo)記為忽??略區(qū)域。
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 步:邊緣設(shè)備設(shè)置
系統(tǒng)設(shè)置。
出于評估目的,使用了NVIDIA Jetson Xavier NX和英特爾神經(jīng)計算棒 2等邊緣設(shè)備。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 版本的構(gòu)建指令可在此處獲得。
相機(jī)設(shè)置。
由于使用了 Jetson 相機(jī)驅(qū)動程序(e-CAM24_CUNX – 彩色全局快門相機(jī)),必須使用 4.4.1 版本的 JetPack。e-con Systems 作為制造商提供了適用于 NVIDIA Jetson Nano 和 Xavier NX 的攝像頭驅(qū)動程序和簡單的安裝說明。
第 3 步:邊緣定制的檢測器模型優(yōu)化和量化
使用 NVIDIA Jetson Xavier NX 的TensorRT 、英特爾神經(jīng)計算棒 2 的 OpenVINO 和基于 CPU 的解決方案的 TensorFlow Lite執(zhí)行優(yōu)化和量化過程。
TensorRT框架需要將模型轉(zhuǎn)換為一種受支持的格式,例如 ONNX 或 TensorFlow。在本項目中,使用了對 ONNX 格式的更改。為了將存儲庫中可用的腳本yolo_to_onnx.py與以下調(diào)用一起使用,其中 -c 描述了許多類-m輸入模型和-o輸出 ONNX 模型路徑。
python3 yolo_to_onnx.py -c 12 -m ./yolov4-608 -o ./yolov4.onnx
要將模型從 ONNX 更改為 TensorRT,使用了onnx_to_tensorrt.py腳本。模型的 TensorRT 表示以三種不同的數(shù)據(jù)類型呈現(xiàn):FP32 和量化的 FP16 和 INT8。
- 使用 float32 權(quán)重將 ONNX 轉(zhuǎn)換為 TensorRT 引擎
python3 onnx_to_tensorrt.py -v -c 12 -m ./yolov4 -q fp32 -o ./yolov4_fp32.trt
- 使用 float16 權(quán)重將 ONNX 轉(zhuǎn)換為 TensorRT 引擎
python3 onnx_to_tensorrt.py -v -c 12 -m ./yolov4 -q fp16 -o ./yolov4_fp16.trt
- 將 ONNX 轉(zhuǎn)換為具有 int8 權(quán)重的 TensorRT 引擎(需要校準(zhǔn)數(shù)據(jù)集的路徑 - 來自數(shù)據(jù)集的代表性圖像,下面標(biāo)記為“./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模型優(yōu)化器包和命令:
- FP32 數(shù)據(jù)格式:
python3 mo.py --input_model ./yolov4.onnx --model_name yolov4_fp32 --data_type FP32 --batch 1
- FP16 數(shù)據(jù)格式:
python3 mo.py --input_model ./yolov4.onnx --model_name yolov4_fp16 --data_type FP16 --batch 1
通過命令行界面使用 ONNX 模型和onnx-tensorflow包完成到TensorFlow Lite的轉(zhuǎn)換:
onnx-tf convert -i /path/to/input.onnx -o /path/to/output
它支持從 ONNX 格式更改為 TensorFlow SavedModel 表示。使用內(nèi)部 TensorFlow TFLiteConverter 可以轉(zhuǎn)換為 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 中獲取檢測結(jié)果,并使用遞歸卡爾曼濾波器和匈牙利算法將它們關(guān)聯(lián)起來。
。它是在 NVIDIA Jetson Xavier NX 上使用 TensorRT 在 FP32 模式下執(zhí)行的。
筆記
如果想要運(yùn)行推理,一臺支持 TensoRT 的 NVIDIA 設(shè)備需要取消注釋檢測器/__init__.py 中的TrtYOLO檢測器導(dǎo)入。同樣的問題是在英特爾硬件上使用OpenvinoYOLO類。
命令行參數(shù)
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 步:性能測試
基準(zhǔn)測試是在NVIDIA Jetson Xavier NX和英特爾神經(jīng)計算棒 2上執(zhí)行的。Jetson Xavier NX 處于模式 2 ( sudo nvpmodel -m 2
) 和風(fēng)扇,時鐘通過命令設(shè)置為最大頻率sudo jetson clocks --fan
。為了評估英特爾 INCS 2,使用了 Raspberry Pi 4B。評價結(jié)果如下所示。
第 6 步:功耗測試
在性能評估期間,檢查了基準(zhǔn)邊緣設(shè)備的能效。英特爾神經(jīng)計算棒 2 和樹莓派 4B 的功耗是使用 USB 多功能測試儀測量的,如下圖所示。
Jetson Xavier NX 的能源使用情況通過使用旨在監(jiān)控和控制 NVIDIA Jetson 設(shè)備的jetson-stats包進(jìn)行檢查。所進(jìn)行的測試的結(jié)果如下表所示。
相比之下,NVIDIA V100 或 RTX 3080 等云中心中用于推理和計算的顯卡的功耗分別為 300 和 320 瓦,如下所示。
跟蹤算法的用例
多對象跟蹤的可能用例是:
- 監(jiān)視監(jiān)控
- 十字路口流量跟蹤
- 不安全場所監(jiān)測預(yù)警
參考
非常感謝您的出色工作:
- 人工智能專家:yolov4-deepsort ,麻省理工學(xué)院許可證
- nwojke : deep_sort , MIT 許可證
- jkjung-avt : tensorrt_demos , MIT 許可證
- 在KV260上運(yùn)行Yolov4 tiny
- Nvidia Jetson Nano面罩Yolov4探測器
- 基于Tengine實現(xiàn)yolov4的cpu推理
- AAAI 2021 YOLObile:移動設(shè)備上的實時目標(biāo)檢測
- 基于多尺度自適應(yīng)權(quán)重的目標(biāo)跟蹤算法 7次下載
- 基于特征融合的LCT目標(biāo)跟蹤算法綜述 11次下載
- 基于YOLOv3的嵌入式設(shè)備視頻目標(biāo)檢測算法 7次下載
- 一種基于特定目標(biāo)提議框的自適應(yīng)跟蹤算法 8次下載
- 工業(yè)零件圖像的改進(jìn)YOLOv3目標(biāo)識別算法 11次下載
- 基于北京加權(quán)的多特征融合目標(biāo)跟蹤算法 4次下載
- 視覺目標(biāo)跟蹤相關(guān)算法、優(yōu)缺點及發(fā)展趨勢 14次下載
- 如何更好地實現(xiàn)視頻多目標(biāo)軌跡的連續(xù)跟蹤? 5次下載
- 基于神經(jīng)網(wǎng)絡(luò)的、改進(jìn)的YOLOv3目標(biāo)檢測算法 15次下載
- 基于YOLOV3算法的視頻監(jiān)控目標(biāo)檢測方法 13次下載
- 新型基于深度學(xué)習(xí)的目標(biāo)實時跟蹤算法 10次下載
- 視頻目標(biāo)跟蹤從0到1,概念與方法 414次閱讀
- 用OpenVINO C# API在intel平臺部署YOLOv10目標(biāo)檢測模型 1093次閱讀
- 多目標(biāo)跟蹤算法總結(jié)歸納 2064次閱讀
- OpenVINO? C# API部署YOLOv9目標(biāo)檢測和實例分割模型 937次閱讀
- 深入淺出Yolov3和Yolov4 819次閱讀
- 目標(biāo)跟蹤初探(DeepSORT) 963次閱讀
- 經(jīng)典多目標(biāo)跟蹤算法DeepSORT的基本原理和實現(xiàn) 3702次閱讀
- AI愛克斯開發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢測模型 1278次閱讀
- 目標(biāo)跟蹤新的建模方式 910次閱讀
- YOLOv8版本升級支持小目標(biāo)檢測與高分辨率圖像輸入 1.2w次閱讀
- 在AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8目標(biāo)檢測模型 1354次閱讀
- 最常見的目標(biāo)跟蹤算法 2787次閱讀
- 深度解析YOLOv7的網(wǎng)絡(luò)結(jié)構(gòu) 7659次閱讀
- 關(guān)于YOLOU中模型的測試 841次閱讀
- 計算機(jī)視覺中有哪些經(jīng)典的目標(biāo)跟蹤算法? 5597次閱讀
下載排行
本周
- 1A7159和A7139射頻芯片的資料免費(fèi)下載
- 0.20 MB | 55次下載 | 5 積分
- 2PIC12F629/675 數(shù)據(jù)手冊免費(fèi)下載
- 2.38 MB | 36次下載 | 5 積分
- 3PIC16F716 數(shù)據(jù)手冊免費(fèi)下載
- 2.35 MB | 18次下載 | 5 積分
- 4dsPIC33EDV64MC205電機(jī)控制開發(fā)板用戶指南
- 5.78MB | 8次下載 | 免費(fèi)
- 5STC15系列常用寄存器匯總免費(fèi)下載
- 1.60 MB | 7次下載 | 5 積分
- 6模擬電路仿真實現(xiàn)
- 2.94MB | 4次下載 | 免費(fèi)
- 7PCB圖繪制實例操作
- 2.92MB | 2次下載 | 免費(fèi)
- 8零死角玩轉(zhuǎn)STM32F103—指南者
- 26.78 MB | 1次下載 | 1 積分
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 452次下載 | 免費(fèi)
- 2免費(fèi)開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 141次下載 | 1 積分
- 3基于STM32單片機(jī)智能手環(huán)心率計步器體溫顯示設(shè)計
- 0.10 MB | 137次下載 | 免費(fèi)
- 4A7159和A7139射頻芯片的資料免費(fèi)下載
- 0.20 MB | 55次下載 | 5 積分
- 5PIC12F629/675 數(shù)據(jù)手冊免費(fèi)下載
- 2.38 MB | 36次下載 | 5 積分
- 6如何正確測試電源的紋波
- 0.36 MB | 19次下載 | 免費(fèi)
- 7PIC16F716 數(shù)據(jù)手冊免費(fèi)下載
- 2.35 MB | 18次下載 | 5 積分
- 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統(tǒng)EMC試驗方法及要求
- 1.97 MB | 8次下載 | 10 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論
查看更多