利用 YOLOv8 和 NVIDIA JetPack 6.0 生成交通洞察
智能交通系統(tǒng) (ITS) 在現(xiàn)代城市環(huán)境中的應(yīng)用正變得越來越有價(jià)值和普遍。使用 ITS 應(yīng)用的優(yōu)點(diǎn)包括:
提高交通效率:通過分析實(shí)時(shí)交通數(shù)據(jù),ITS 可以優(yōu)化交通流、緩解擁堵并縮短行車時(shí)間。
提高安全性:ITS 可以檢測潛在危險(xiǎn)、監(jiān)視交通違法行為,并更有效地管理突發(fā)事件,從而使道路變得更加安全。
提高環(huán)境可持續(xù)性:高效的交通管理可減少燃油消耗與尾氣排放,促進(jìn)環(huán)境的可持續(xù)發(fā)展。
重要的是,這些系統(tǒng)需要在邊緣處理信息,以實(shí)現(xiàn)可靠的帶寬、保護(hù)隱私、進(jìn)行實(shí)時(shí)分析等更多功能。
本文將介紹如何使用 NVIDIA JetPack 6.0 中的全新 Jetson 平臺(tái)服務(wù),來構(gòu)建一個(gè)適用于邊緣的端到端交通分析解決方案。該系統(tǒng)集成了多個(gè)功能:使用視頻存儲(chǔ)工具包 (VST) 服務(wù)進(jìn)行視頻數(shù)據(jù)的接收與存儲(chǔ);借助 YOLOv8 和 DeepStream AI 感知服務(wù)實(shí)現(xiàn)實(shí)時(shí)目標(biāo)檢測和車輛追蹤;車輛移動(dòng)的時(shí)空分析。在構(gòu)建好這一流程后,將利用 API 生成分析報(bào)告。
Jetson 平臺(tái)服務(wù)的優(yōu)勢
利用 Jetson 平臺(tái)服務(wù)與 NVIDIA Jetpack 構(gòu)建和部署的 AI 應(yīng)用具有以下優(yōu)勢:
快速、高效:這一豐富且經(jīng)過優(yōu)化的 API 驅(qū)動(dòng)的微服務(wù)集合,可以顯著縮短解決問題的時(shí)間。
可擴(kuò)展:該微服務(wù)架構(gòu)實(shí)現(xiàn)了各種組件的獨(dú)立擴(kuò)展,根據(jù)需求優(yōu)化資源利用率。
模塊化:將應(yīng)用拆分為更小、更易管理的服務(wù),簡化了更新、維護(hù)和故障排除的過程。
靈活性:這些服務(wù)能以多種方式進(jìn)行配置和部署,為智能交通系統(tǒng) (ITS) 提供定制化解決方案,針對交通監(jiān)控、交叉路口管理以及行人安全保障等方面。
應(yīng)用概述
ITS 應(yīng)用主要采用了三項(xiàng)核心服務(wù):視頻存儲(chǔ)工具包 (VST)、AI 感知和 AI 分析。此外,它還運(yùn)用 Redis 消息總線、API 網(wǎng)關(guān)、IoT 網(wǎng)關(guān)等幾項(xiàng)基礎(chǔ)服務(wù)。
圖 1. ITS 應(yīng)用的服務(wù)和連接
VST 是視頻數(shù)據(jù)的入口。它能在基于 Jetson 的平臺(tái)上高效地管理攝像頭和視頻流,提供從多個(gè)視頻源進(jìn)行的硬件加速視頻解碼、流式傳輸和存儲(chǔ)。在該設(shè)置中,視頻輸入文件通過 RTSP 協(xié)議流式傳輸?shù)?VST。有關(guān)使用 VST 和添加 RTSP 流的更多信息,請參見 VST 文檔:
https://docs.nvidia.com/moj/VST_Toc.html
接下來,視頻數(shù)據(jù)流進(jìn)入利用 NVIDIA DeepStream SDK 的 AI 感知服務(wù),其先采用 YOLOv8 物體檢測模型實(shí)現(xiàn)高吞吐量,隨后使用 NvDCF 追蹤器進(jìn)行物體追蹤。該流程基于 NVIDIA Metropolis 架構(gòu)生成元數(shù)據(jù),捕獲場景中檢測到的各種物體的類別和坐標(biāo)信息。
緊接著生成的元數(shù)據(jù)和事件被發(fā)布到 Redis 消息總線,該總線是系統(tǒng)內(nèi)部消息傳遞的骨干。AI 分析服務(wù)訂閱了該總線,接收執(zhí)行詳細(xì)交通分析所需的信息。
這種基于服務(wù)的架構(gòu)確保從視頻輸入到分析的數(shù)據(jù)流暢且高效,充分利用了 NVIDIA Jetson 設(shè)備的處理能力。該方法提高了處理速度和響應(yīng)能力,非常適合需要實(shí)時(shí)數(shù)據(jù)解釋和即時(shí)行動(dòng)的 ITS 應(yīng)用。
用于物體檢測的 YOLOv8
YOLOv8 作為最先進(jìn)的物體檢測模型脫穎而出,以其無與倫比的速度和準(zhǔn)確性著稱。其輕量級(jí)架構(gòu)特別適合部署在 NVIDIA Jetson 等邊緣設(shè)備上。在 ITS 應(yīng)用中,YOLOv8 能夠?qū)崟r(shí)檢測和分類車輛、行人、交通標(biāo)志等對象。這為管理和優(yōu)化交通流量、加強(qiáng)道路安全以及支持自動(dòng)化交通系統(tǒng)提供關(guān)鍵數(shù)據(jù)。有關(guān)各種 YOLO 模型的更多信息,請參閱計(jì)算機(jī)視覺中的 YOLO 架構(gòu)綜述:
https://arxiv.org/abs/2304.00501
下載和準(zhǔn)備 YOLOv8
開始使用前,請先在 GitHub 的 ultralytics 資源庫下載 YOLOv8 模型。本文使用 YOLOv8 發(fā)布版本所訓(xùn)練的 COCO 數(shù)據(jù)集中轎車、公交車和卡車三類作為示例。請注意,用戶有責(zé)任驗(yàn)證每個(gè)數(shù)據(jù)集許可證是否符合預(yù)定用途。
接下來,需要將該模型轉(zhuǎn)換成 NVIDIA TensorRT 執(zhí)行引擎,以針對 NVIDIA Jetson 的硬件能力對其進(jìn)行優(yōu)化。DeepStream 微服務(wù)容器附帶的腳本可幫助簡化這一轉(zhuǎn)換過程。
要運(yùn)行 YOLOv8 安裝腳本,首先要確保您已按照 Jetson 平臺(tái)服務(wù)文檔中的“快速入門”部分所述的步驟安裝了微服務(wù)、參考應(yīng)用以及 NVStreamer。此時(shí),您還可以配置 NVStreamer 以通過 RTSP 傳輸以下文件,該文件將作為輸入使用。
opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
要執(zhí)行腳本,請運(yùn)行針對您的硬件提供的以下命令。
Jetson AGX Orin:
Jetson Orin NX16:
設(shè)置腳本執(zhí)行的任務(wù)包括:
-
硬件特定配置:根據(jù) NVIDIA 硬件(AGX 或 NX16)調(diào)整諸如批量大小等參數(shù),以優(yōu)化性能。
-
依賴性管理:下載 YOLOv8 模型文件和 COCO 數(shù)據(jù)集,安裝所需庫,并準(zhǔn)備用于量化的校準(zhǔn)圖像。
-
INT8 校準(zhǔn):將浮點(diǎn)模型量化為 INT8,以獲得最佳推理性能。
-
模型轉(zhuǎn)換:將模型從 PyTorch 轉(zhuǎn)換成 onNX 格式,并生成 TensorRT 引擎。
這個(gè)過程大約需要 15 到 30 分鐘,并生成部署 YOLO 所需的以下文件:
-
./yolov8s/calib.table
-
./yolov8s/model_b4_gpu0_int8.engine 或 (依據(jù)設(shè)備類型的不同)
./yolov8s/model_b8_gpu0_int8.engine
-
./yolov8s/yolov8s-dependencies/yolov8s.onnx
自定義 AI 感知服務(wù)
用于 AI 感知的 DeepStream 容器還集成了一個(gè)程序庫。該庫包含自定義函數(shù),用于從 YOLOv8 模型中創(chuàng)建優(yōu)化后的 NVIDIA TensorRT 引擎,并解析該模型輸出結(jié)果。這個(gè)轉(zhuǎn)換腳本和程序庫均來自 GitHub 上的 marcoslucianops/DeepStream-Yolo 資源庫(遵循 MIT 許可):
https://github.com/marcoslucianops/DeepStream-Yolo
這些自定義函數(shù)用于配置 DeepStream 推理插件:

運(yùn)行應(yīng)用程序
設(shè)置完成后,就可以運(yùn)行應(yīng)用了。AI-NVR 堆棧中包含了該應(yīng)用程序的 Docker Compose 配置。請使用下方提供的與您硬件配置相匹配的命令來運(yùn)行。
Jetson AGX Orin:
Jetson Orin NX16:
利用 AI 分析服務(wù)進(jìn)行車輛數(shù)據(jù)分析
利用 AI 分析服務(wù)的絆線(或越線)和軌跡功能進(jìn)行車流量分析。您可以通過 REST API 配置這些分析功能,包括:
1. 在給定的時(shí)間范圍內(nèi)統(tǒng)計(jì)穿越預(yù)設(shè)線段的車輛總數(shù)(包括轎車、公交車和卡車)。
2. 在給定時(shí)間范圍內(nèi)的車流量趨勢分析,可縮短時(shí)間窗口進(jìn)行深入研究。
3. 在給定時(shí)間范圍內(nèi)的車流量熱力圖展示。
概念
絆線(或越線)是指在攝像頭平面上繪制的虛擬線條,用于統(tǒng)計(jì)雙向穿越該線條的物體數(shù)量。
軌跡指車輛實(shí)際行駛的路徑,由系統(tǒng)逐幀追蹤并記錄。AI 感知服務(wù)會(huì)為每輛車分配一個(gè)唯一 ID。系統(tǒng)中的“軌跡”概念代表車輛行駛的總路徑。
API 規(guī)范
有關(guān)以下部分中提到的 API 詳細(xì)信息,請參閱 AI 分析服務(wù)規(guī)范:
https://docs.nvidia.com/jetson/jps/emdx_API/index.html
絆線配置
絆線分析可以針對給定的傳感器,通過以下 API 進(jìn)行配置。請注意,下面使用的值應(yīng)與通過 sensor/add API 向 VST 添加流時(shí)設(shè)置的 name 相同??梢允褂?cURL 或 Postman 等工具發(fā)出 HTTP post 請求。
HTTP POST 請求端點(diǎn):
http://{jetson-device-ip}:30080/api/emdx/api/config/tripwire?sensorId=
請注意,必須將 jetson-device-ip 替換為 Jetson 設(shè)備正確的 IP 地址。
請求:

生成絆線時(shí)間序列分析
可通過絆線計(jì)數(shù) API 檢索給定時(shí)間范圍內(nèi)不同車輛類型(由 YOLOv8 模型檢測)的總穿越次數(shù)。
一旦絆線創(chuàng)建完成,您可以使用以下示例查詢來檢索在 2024 年 5 月 15 日格林威治時(shí)間上午 11 點(diǎn)至中午 12 點(diǎn)期間,傳感器 ID ExpressWay 上配置的 ID 為 road-tw 的絆線處各類物體的總穿越次數(shù)。此外,該查詢還請求對轎車、公交車和卡車這三類對象的穿越次數(shù)進(jìn)行細(xì)分。
HTTP GET 查詢:

請注意,與前面一樣,必須將 jetson-device-ip 替換成 Jetson 設(shè)備正確的IP地址。
響應(yīng):

交通趨勢直方圖可視化
還可以使用絆線計(jì)數(shù)直方圖 API 將之前的總計(jì)數(shù)匯總到更小的時(shí)間窗口中。
使用以下示例查詢來檢索在格林威治標(biāo)準(zhǔn)時(shí)間 2024 年 5 月 15 日上午 11 點(diǎn)到中午 12 點(diǎn)之間,傳感器 ID 為 ExpressWay 上配置的 ID 為 road-tw 的絆線處物體(所有類型)穿越次數(shù)的直方圖,并將其細(xì)分到 1 分鐘的時(shí)間窗口。
HTTP GET 查詢:

這將轉(zhuǎn)儲(chǔ)每個(gè) 1 分鐘間隔的 JSON 輸出與 1 分鐘窗口中的匯總計(jì)數(shù)。您可以將這些信息繪制成堆疊直方圖,以表示計(jì)數(shù)隨時(shí)間變化的趨勢(圖 2)。
圖 2. 以 1 分鐘為間隔的交通流量計(jì)數(shù)直方圖
車輛軌跡熱力圖可視化
本部分將介紹如何使用 AI 分析服務(wù)中的行為 API 生成熱力圖。熱力圖是通過累積運(yùn)動(dòng)軌跡并將它們映射到區(qū)域空間中生成的,它提供了一種可視化方式幫助呈現(xiàn)交通流隨時(shí)間的變化趨勢。
圖 3. 移動(dòng)交通熱力圖
熱力圖生成邏輯
根據(jù)給定時(shí)間范圍內(nèi)所有物體的軌跡行為坐標(biāo) [x, y],通過 numpy.histogram2d. 計(jì)算出直方圖。然后應(yīng)用高斯濾波器對結(jié)果進(jìn)行平滑處理。請?jiān)L問 GitHub 上的 NVIDIA-AI-IOT/jetson-platform-services 資源庫,查看與此邏輯相關(guān)的函數(shù)筆記。使用 VST API 獲取傳感器圖像快照。在圖 3 中,平滑后的直方圖被可視化成熱力圖。
GitHub:
https://github.com/NVIDIA-AI-IOT/jetson-platform-services/tree/main/notebooks/traffic-analytics
VST API:
https://docs.nvidia.com/moj/vst_API/index.html#/v1/getLiveStreamPicture
使用下面的示例,查詢檢索傳感器 ID ExpressWay 在給定時(shí)間內(nèi)對象類型為轎車、公交車和卡車的軌跡行為。
HTTP GET 查詢:
響應(yīng):
響應(yīng)了一個(gè)給定對象隨時(shí)間變化的軌跡項(xiàng)數(shù)組,其中每個(gè)項(xiàng)都是由兩個(gè)元素構(gòu)成的。第一個(gè)元素是以毫秒為單位的視頻幀時(shí)間戳(1708598580297,Unix 時(shí)間),第二個(gè)元素是位置坐標(biāo)數(shù)組 [x,y],例如 [291, 590],表示該圖像平面上 x=291,y=590。
交通分析文件
請?jiān)L問 GitHub 上的 NVIDIA-AI-IOT/jetson-platform-services 資源庫,并下載文件在您的本地系統(tǒng)上運(yùn)行。請按照步驟說明嘗試使用您自己的視頻文件或攝像頭進(jìn)行操作。
總結(jié)
本文介紹了如何使用 NVIDIA JetPack 6.0 中的 Jetson 平臺(tái)服務(wù)和 YOLOv8 物體檢測模型來構(gòu)建智能交通應(yīng)用。Jetson 平臺(tái)服務(wù)是一組功能豐富的微服務(wù),可用于邊緣構(gòu)建 AI 應(yīng)用。開發(fā)者可以使用這些 API 快速、高效地開發(fā)應(yīng)用,并生成車輛計(jì)數(shù)、交通熱力圖等洞察。這些微服務(wù)具有可替換性,并且可以擴(kuò)展到多種邊緣 AI 應(yīng)用中。
廣告 編輯推薦
最新資訊
-
“汽車爬坡試驗(yàn)方法”將有國家標(biāo)準(zhǔn)
2026-03-03 12:44
-
十年耐久監(jiān)管時(shí)代:電池系統(tǒng)開發(fā)策略將如何
2026-03-03 12:44
-
聯(lián)合國法規(guī)R59對機(jī)動(dòng)車備用消聲系統(tǒng)的工程
2026-03-03 12:08
-
聯(lián)合國法規(guī)R58對后下部防護(hù)裝置的工程化約
2026-03-03 12:07
-
聯(lián)合國法規(guī)R57對摩托車前照燈配光性能的工
2026-03-03 12:07





廣告


























































