chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于DL Streamer與YOLOv8模型實現(xiàn)多路視頻流實時分析

英特爾物聯(lián)網(wǎng) ? 來源:英特爾物聯(lián)網(wǎng) ? 2023-10-20 11:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:楊亦誠英特爾AI軟件工程師

作為眾多 AI 應(yīng)用場景的基座,基于流媒體的視覺分析一直是傳統(tǒng) AI 公司的核心能力之一。但想要搭建一套完整的視頻分析系統(tǒng)其實并不容易,其中會涉及多個圖像處理環(huán)節(jié)的開發(fā)工作,例如視頻流拉取、圖像編解碼、AI 模型前后處理、AI 模型推理,以及視頻流推送等常見任務(wù)模塊。其中每一個模塊都需要領(lǐng)域?qū)<以谥付ǖ挠布脚_進行開發(fā)和優(yōu)化,并且如何高效地將他們組合起來也是一個問題。在這篇文章中,我們將探討如何利用 Intel 的 DL Streamer 工具套件打造一套支持多路視頻流接入的視頻分析系統(tǒng),利用 OpenVINO 部署并加速 YOLOv8 推理任務(wù)。

(復(fù)制鏈接到瀏覽器打開)

7e3321e2-6ea0-11ee-939d-92fbcf53809c.png

圖1:典型的視頻分析系統(tǒng)流水線

Intel DL Streamer 工具套件

DL Streamer 是一套開源的流媒體分析系統(tǒng)框架,它基于著名的 GStreamer 多媒體框架所打造,可以幫助開發(fā)者快速構(gòu)建復(fù)雜的媒體分析流水線。開發(fā)者只需要通過命令行的方式就可以輕松完成一套支持多路的分析系統(tǒng)搭建。此外,在這個過程中,DL Streamer 會幫助我們將每個模塊部署在指定的硬件加速平臺,以獲得更好的性能與更高的資源利用率。

7e3f46d4-6ea0-11ee-939d-92fbcf53809c.png

圖2:DL Streamer 架構(gòu)圖

01Intel DL Streamer Pipeline Framework 用于構(gòu)建最基礎(chǔ)的視頻分析流水線,其中利用 VA-API 庫提升 GPU 的硬件編解碼能力,基于 OpenVINO 實現(xiàn)對于 AI 推理任務(wù)的加速。此外還支持 C++Python API 接口調(diào)用方式,便于開發(fā)者與自有系統(tǒng)進行集成。

02Intel DL Streamer Pipeline Server 可以將構(gòu)建好的視頻分析流水線以微服務(wù)的方式部署在多個計算節(jié)點上,并提供對外的 REST APIs 接口調(diào)用。

03Intel DL Streamer Pipeline Zoo 則被作為性能評估與調(diào)式的工具,其中集成了一些即開即用的示例,方便開發(fā)者測試。

本文中分享的 demo 是一個基于 DL Streamer 的最小化示例,僅使用Intel DL Streamer Pipeline Framework 進行任務(wù)開發(fā)。

開發(fā)流程

1、YOLOv8 模型優(yōu)化與轉(zhuǎn)換

首先我們需要對模型進行性能優(yōu)化,這里我們才利用量化技術(shù)來壓縮模型體積。由于目前 Ultralytics 庫已經(jīng)直接支持 OpenVINO IR 格式的模型導(dǎo)出,所以我們可以直接調(diào)用以下接口將 YOLOv8 預(yù)訓(xùn)練權(quán)轉(zhuǎn)化為OpenVINO IR,并通過 NNCF 工具進行后訓(xùn)練量化。

det_model = YOLO(f"../model/{DET_MODEL_NAME}.pt")
out_dir = det_model.export(format="openvino", dynamic=True, half=True)

左滑查看更多

此外由于我們需要使用 vaapi-surface-sharing backend,來實現(xiàn)從解碼-前處理-推理在 GPU 設(shè)備上的 zero-copy,標(biāo)準(zhǔn) YOLOv8 模型的部分前處理任務(wù)沒有辦法支持 vaapi-surface-sharing

因此我們需要將部分前處理任務(wù)以模型算子的形式提前集成到模型結(jié)構(gòu)中,這里可以利用 OpenVINO 的 Preprocessing API 來進行前處理任務(wù)中轉(zhuǎn)置歸一化操作的集成。具體方法如下:

input_layer = model.input(0)
model.reshape({input_layer.any_name: PartialShape([1, 3, 640, 640])})
ppp = PrePostProcessor(model)
ppp.input().tensor().set_color_format(ColorFormat.BGR).set_layout(Layout("NCHW"))
ppp.input().preprocess().convert_color(ColorFormat.RGB).scale([255, 255, 255])
model = ppp.build()

左滑查看更多

2、 集成 YOLOv8 后處理任務(wù)

由于 DLStreamer 目前沒有直接支持 YOLOv8 的后處理任務(wù),所以我們需要在其源碼中新增 YOLOv8 后處理任務(wù)的 C++ 實現(xiàn)。

并重新編譯 DLStreamer 源碼。相較之前 YOLO 系列的模型,YOLOv8 模型的原始輸出會一些特殊,他的輸出數(shù)據(jù)結(jié)構(gòu)為(1, 84, 8400),其中8400代表識別對象的數(shù)量,84 代表 4 個坐標(biāo)信息 +80 種類別,而通常情況下坐標(biāo)信息和類別信息都是在最后一個維度里,所以為了在 C++ 應(yīng)用中更方便的地模型輸出進行遍歷,我們首先需要做一個維度轉(zhuǎn)置的操作,將其輸出格式變?yōu)?strong>(1, 8400, 84),接下來就可以通過常規(guī) YOLO 模型的后處理方式,來解析并過濾 YOLOv8 模型輸出。

cv::Mat outputs(object_size, max_proposal_count, CV_32F, (float *)data);
cv::transpose(outputs, outputs);

左滑查看更多

3、構(gòu)建 DL Streamer Pipeline

其實 DL Streamer Pipeline 的構(gòu)建非常簡單,我們只需要記住每一個 element 模塊的功能,并按從“輸入 -> 解碼 -> 推理 -> 編碼/輸出”的次序?qū)⑺麄兘M合起來就可以了,以下就是一個單通道的示例。

gst-launch-1.0 filesrc location=./TownCentreXVID.mp4 ! decodebin ! video/x-raw(memory:VASurface) ! gvadetect model=./models/yolov8n_int8_ppp.xml model_proc=./dlstreamer_gst/samples/gstreamer/model_proc/public/yolo-v8.json pre-process-backend=vaapi-surface-sharing device=GPU ! queue ! meta_overlay device=GPU preprocess-queue-size=25 process-queue-size=25 postprocess-queue-size=25 ! videoconvert ! fpsdisplaysink video-sink=ximagesink sync=false

左滑查看更多

除推理部分的任務(wù)外,DL Streamer 中大部分的模塊都是復(fù)用 GStreamer 的element,這里需要特別注意的是,為了實現(xiàn)在 GPU 硬解碼和推理任務(wù)之間的 zero-copy,解碼的輸出需要為video/x-raw(memory:VASurface)格式,并且推理的任務(wù)的前處理任務(wù)需要調(diào)用 vaapi-surface-sharing backend ,以此來將前處理的任務(wù)負載通過 GPU 來進行加速。

此外這邊也會用到 DL Streamer 2.0 API 中新增的meta_overlay 模塊將結(jié)果信息,以 bounding box 的形態(tài)添加在原始視頻流中,并利用 fpsdisplaysink 模塊統(tǒng)計實時 FPS 性能后,一并作為結(jié)果可視化進行輸出展示。如果本機不支持可視化播放,我們也可以通過拼接以下指令:

vaapih264enc ! h264parse ! mpegtsmux ! rtpmp2tpay ! udpsink host=192.168.3.9 port=5004

將結(jié)果畫面編碼后,通過 udp 協(xié)議推流,并用例如 VLC 這樣的工具,在另一臺設(shè)備播放。

如果不需要可視化呈現(xiàn),我們也可以通過 gvametapublish 模塊將原始結(jié)果輸出到一個 json 文件中,或通過 MQTT 協(xié)議推送這些原始的結(jié)果數(shù)據(jù)。gvametapublish模塊的使用方法可以查詢:

https://dlstreamer.github.io/elements/gvametapublish.html(復(fù)制鏈接到瀏覽器打開)

4、多通道 Pipeline 優(yōu)化

為了方便多通道任務(wù)同屏展示,我們通過 compositor模塊將多個通道的檢測結(jié)果進行拼接。在多路推理性能優(yōu)化方面,可以利用以下指令,將多個同一時刻內(nèi)的多個 stream 輸入,打包為一個 batch,送入 GPU 進行推理,以激活 GPU 在吞吐量上的優(yōu)勢,而 infer request 的數(shù)量則會根據(jù)接入視頻的通道數(shù)動態(tài)調(diào)整。

nireq=$((${STREAM}*2)) gpu-throughput-streams=${STREAM} batch-size=${NUM_PANES} model-instance-id=1

左滑查看更多

此外,為了避免重復(fù)創(chuàng)建模型對象,可以將每個通道里的model-instance-id都設(shè)為統(tǒng)一值,這樣 OpenVINO 只會為我們初始化一個模型對象。

如何運行示例

為了方便在不同硬件平臺進行移植,同時降低部署門檻,這里我們已經(jīng)將所有的示例代碼打包進了 docker 鏡像內(nèi),大家可以通過以下幾條簡單的指令,快速復(fù)現(xiàn)整個方法。

1、初始化環(huán)境

這一步主要為了可以在容器內(nèi)訪問 host 的 GPU 資源,以及開啟視頻流展示的權(quán)限,如果當(dāng)前硬件中存在多個 GPU 設(shè)備,我們可以通過修改 GPU driver 的編號來調(diào)整映射到容器內(nèi)的 GPU 資源,例如這可以把renderD128修改為 renderD129

$ xhost local:root
$ setfacl -m user:1000:r ~/.Xauthority
$ DEVICE=${DEVICE:-/dev/dri/renderD128}
$ DEVICE_GRP=$(ls -g $DEVICE | awk '{print $3}' | xargs getent group | awk -F: '{print $3}')

左滑查看更多

2、拉取 docker 鏡像

$ docker pull snake7gun/dlstreamer-yolov8-2023.0:latest

左滑查看更多

3、運行容器

將之前設(shè)置 host 環(huán)境映射到容器內(nèi),并初始化容器內(nèi)環(huán)境。

$ docker run -it --rm --net=host -e no_proxy=$no_proxy -e https_proxy=$https_proxy -e socks_proxy=$socks_proxy -e http_proxy=$http_proxy -v ~/.Xauthority:/home/dlstreamer/.Xauthority -v /tmp/.X11-unix -e DISPLAY=$DISPLAY --device $DEVICE --group-add $DEVICE_GRP snake7gun/dlstreamer-yolov8-2023.0 /bin/bash
$ source /home/dlstreamer/dlstreamer_gst/scripts/setup_env.sh

左滑查看更多

4、執(zhí)行多路示例

運行示例,這里可以將 shell 腳本后的視頻文件替換為 IP 攝像頭 RTSP 地址,或是 webcam 的編號。由于gvawatermark模塊在 iGPU 上的性能表現(xiàn)要優(yōu)于meta_overlay ,而在 dGPU 上則相反,因此這里準(zhǔn)備了兩套 pipeline,分別為pipeline-igpu.sh 以及pipeline-dgpu.sh ,大家可以根據(jù)自己的硬件環(huán)境進行切換。

$ cd dlstreamer_gst/demo/
$ ./pipeline-igpu.sh ~/TownCentreXVID.mp4 ~/TownCentreXVID.mp4 ~/TownCentreXVID.mp4 ~/TownCentreXVID.mp4 ~/TownCentreXVID.mp4 ~/TownCentreXVID.mp4 ~/TownCentreXVID.mp4 ~/TownCentreXVID.mp4 ~/TownCentreXVID.mp4

左滑查看更多

效果展示

本方案已經(jīng)在2023 年度的 Intel Innovation 大會上進行了展示,該 demo 基于英特爾第 12 代酷睿 處理器的 iGPU 平臺,在 9 路 1080p h.265 攝像頭輸入的情況下,保證每路的實時分析性能可以達到 15fps,也就是大部分?jǐn)z像頭的幀率上限。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 英特爾
    +關(guān)注

    關(guān)注

    61

    文章

    10245

    瀏覽量

    178167
  • 視頻
    +關(guān)注

    關(guān)注

    6

    文章

    1993

    瀏覽量

    74468
  • AI
    AI
    +關(guān)注

    關(guān)注

    88

    文章

    37050

    瀏覽量

    290147
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3611

    瀏覽量

    51435
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    116

    瀏覽量

    650

原文標(biāo)題:基于 DL Streamer 與 YOLOv8 模型實現(xiàn)多路視頻流實時分析 | 開發(fā)者實戰(zhàn)

文章出處:【微信號:英特爾物聯(lián)網(wǎng),微信公眾號:英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    基于YOLOv8實現(xiàn)自定義姿態(tài)評估模型訓(xùn)練

    Hello大家好,今天給大家分享一下如何基于YOLOv8姿態(tài)評估模型,實現(xiàn)在自定義數(shù)據(jù)集上,完成自定義姿態(tài)評估模型的訓(xùn)練與推理。
    的頭像 發(fā)表于 12-25 11:29 ?4804次閱讀
    基于<b class='flag-5'>YOLOv8</b><b class='flag-5'>實現(xiàn)</b>自定義姿態(tài)評估<b class='flag-5'>模型</b>訓(xùn)練

    單板挑戰(zhàn)4路YOLOv8!米爾瑞芯微RK3576開發(fā)板性能實測

    運算。使用YOLOv8模型時也是手到擒來,接下來隨著步伐看看它表現(xiàn)如何。YOLO簡介YOLO(You Only Look Once)是當(dāng)前業(yè)界領(lǐng)先的實時目標(biāo)檢測算法系列,以其速度和精度的完美平衡而聞名
    發(fā)表于 09-12 17:52

    使用YOLOv8做目標(biāo)檢測和實例分割的演示

    YOLOv8是來自Ultralytics的最新的基于YOLO的對象檢測模型系列,提供最先進的性能。
    的頭像 發(fā)表于 02-06 10:11 ?8711次閱讀

    YOLOv8自定義數(shù)據(jù)集訓(xùn)練到模型部署推理簡析

    如果你只是想使用而不是開發(fā),強烈推薦通過pip安裝方式獲取YOLOv8包!YOLOv8安裝命令行
    的頭像 發(fā)表于 03-24 09:27 ?9144次閱讀

    在AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8目標(biāo)檢測模型

    《在 AI 愛克斯開發(fā)板上用 OpenVINO 加速 YOLOv8 分類模型》介紹了在 AI 愛克斯開發(fā)板上使用 OpenVINO 開發(fā)套件部署并測評 YOLOv8 的分類模型,本文將
    的頭像 發(fā)表于 05-12 09:08 ?2041次閱讀
    在AI愛克斯開發(fā)板上用OpenVINO?加速<b class='flag-5'>YOLOv8</b>目標(biāo)檢測<b class='flag-5'>模型</b>

    YOLOv8版本升級支持小目標(biāo)檢測與高分辨率圖像輸入

    YOLOv8版本最近版本又更新了,除了支持姿態(tài)評估以外,通過模型結(jié)構(gòu)的修改還支持了小目標(biāo)檢測與高分辨率圖像檢測。原始的YOLOv8模型結(jié)構(gòu)如下。
    的頭像 發(fā)表于 05-16 11:14 ?1.5w次閱讀
    <b class='flag-5'>YOLOv8</b>版本升級支持小目標(biāo)檢測與高分辨率圖像輸入

    AI愛克斯開發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢測模型

    《在AI愛克斯開發(fā)板上用OpenVINO加速YOLOv8分類模型》介紹了在AI愛克斯開發(fā)板上使用OpenVINO 開發(fā)套件部署并測評YOLOv8的分類模型,本文將介紹在AI愛克斯開發(fā)板
    的頭像 發(fā)表于 05-26 11:03 ?2109次閱讀
    AI愛克斯開發(fā)板上使用OpenVINO加速<b class='flag-5'>YOLOv8</b>目標(biāo)檢測<b class='flag-5'>模型</b>

    教你如何用兩行代碼搞定YOLOv8各種模型推理

    大家好,YOLOv8 框架本身提供的API函數(shù)是可以兩行代碼實現(xiàn) YOLOv8 模型推理,這次我把這段代碼封裝成了一個類,只有40行代碼左右,可以同時支持
    的頭像 發(fā)表于 06-18 11:50 ?4420次閱讀
    教你如何用兩行代碼搞定<b class='flag-5'>YOLOv8</b>各種<b class='flag-5'>模型</b>推理

    三種主流模型部署框架YOLOv8推理演示

    深度學(xué)習(xí)模型部署有OpenVINO、ONNXRUNTIME、TensorRT三個主流框架,均支持Python與C++的SDK使用。對YOLOv5~YOLOv8的系列模型,均可以通過C+
    的頭像 發(fā)表于 08-06 11:39 ?3627次閱讀

    YOLOv8實現(xiàn)任意目錄下命令行訓(xùn)練

    當(dāng)你使用YOLOv8命令行訓(xùn)練模型的時候,如果當(dāng)前執(zhí)行的目錄下沒有相關(guān)的預(yù)訓(xùn)練模型文件,YOLOv8就會自動下載模型權(quán)重文件。這個是一個正常
    的頭像 發(fā)表于 09-04 10:50 ?3435次閱讀
    <b class='flag-5'>YOLOv8</b><b class='flag-5'>實現(xiàn)</b>任意目錄下命令行訓(xùn)練

    基于YOLOv8的自定義醫(yī)學(xué)圖像分割

    YOLOv8是一種令人驚嘆的分割模型;它易于訓(xùn)練、測試和部署。在本教程中,我們將學(xué)習(xí)如何在自定義數(shù)據(jù)集上使用YOLOv8。但在此之前,我想告訴你為什么在存在其他優(yōu)秀的分割模型時應(yīng)該使用
    的頭像 發(fā)表于 12-20 10:51 ?1443次閱讀
    基于<b class='flag-5'>YOLOv8</b>的自定義醫(yī)學(xué)圖像分割

    基于OpenCV DNN實現(xiàn)YOLOv8模型部署與推理演示

    基于OpenCV DNN實現(xiàn)YOLOv8推理的好處就是一套代碼就可以部署在Windows10系統(tǒng)、烏班圖系統(tǒng)、Jetson的Jetpack系統(tǒng)
    的頭像 發(fā)表于 03-01 15:52 ?3076次閱讀
    基于OpenCV DNN<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>YOLOv8</b>的<b class='flag-5'>模型</b>部署與推理演示

    使用NVIDIA JetPack 6.0和YOLOv8構(gòu)建智能交通應(yīng)用

    進行視頻數(shù)據(jù)的接收與存儲;借助 YOLOv8 和 DeepStream AI 感知服務(wù)實現(xiàn)實時目標(biāo)檢測和車輛追蹤;車輛移動的時空分析。在構(gòu)建好這一流程后,將利用 API 生成
    的頭像 發(fā)表于 08-23 16:49 ?1292次閱讀
    使用NVIDIA JetPack 6.0和<b class='flag-5'>YOLOv8</b>構(gòu)建智能交通應(yīng)用

    RK3576 yolov8訓(xùn)練部署教程

    本章展示yolov8模型的在EASY EAI Orin nano的部署過程。
    的頭像 發(fā)表于 04-02 16:04 ?1271次閱讀
    RK3576 <b class='flag-5'>yolov8</b>訓(xùn)練部署教程

    使用ROCm?優(yōu)化并部署YOLOv8模型

    ://github.com/ultralytics/ultralytics/tree/main YOLOv8模型的卓越性能使其在多個領(lǐng)域具有廣泛的應(yīng)用前景,如自動駕
    的頭像 發(fā)表于 09-24 18:32 ?200次閱讀
    使用ROCm?優(yōu)化并部署<b class='flag-5'>YOLOv8</b><b class='flag-5'>模型</b>