資料介紹
描述
基于 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 算法是一種基于檢測器的方法,它使用具有恒定運動速率的遞歸卡爾曼濾波器和線性觀察模型。重新識別任務(wù)使用匈牙利算法解決。為了提高分配算法的投影和性能,使用了加權(quán)度量,包括馬氏距離和余弦距離。第一個度量通過計算預(yù)測的卡爾曼狀態(tài)和新到達(dá)的測量值之間的距離來提供運動信息。第二個指標(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í)行的。
筆記
如果想要運行推理,一臺支持 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上運行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次下載
- 用OpenVINO C# API在intel平臺部署YOLOv10目標(biāo)檢測模型 746次閱讀
- 多目標(biāo)跟蹤算法總結(jié)歸納 1111次閱讀
- OpenVINO? C# API部署YOLOv9目標(biāo)檢測和實例分割模型 610次閱讀
- 深入淺出Yolov3和Yolov4 581次閱讀
- 目標(biāo)跟蹤初探(DeepSORT) 679次閱讀
- 經(jīng)典多目標(biāo)跟蹤算法DeepSORT的基本原理和實現(xiàn) 2959次閱讀
- AI愛克斯開發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢測模型 1067次閱讀
- 目標(biāo)跟蹤新的建模方式 748次閱讀
- YOLOv8版本升級支持小目標(biāo)檢測與高分辨率圖像輸入 1.1w次閱讀
- 在AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8目標(biāo)檢測模型 1134次閱讀
- 復(fù)雜野外環(huán)境下油茶果快速魯棒檢測算法 875次閱讀
- 最常見的目標(biāo)跟蹤算法 2544次閱讀
- 深度解析YOLOv7的網(wǎng)絡(luò)結(jié)構(gòu) 7281次閱讀
- 關(guān)于YOLOU中模型的測試 741次閱讀
- 計算機(jī)視覺中有哪些經(jīng)典的目標(biāo)跟蹤算法? 5416次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 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十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多