18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

作者:楊亦誠(chéng)英特爾AI軟件工程師

作為眾多 AI 應(yīng)用場(chǎng)景的基座,基于流媒體的視覺(jué)分析一直是傳統(tǒng) AI 公司的核心能力之一。但想要搭建一套完整的視頻分析系統(tǒng)其實(shí)并不容易,其中會(huì)涉及多個(gè)圖像處理環(huán)節(jié)的開發(fā)工作,例如視頻流拉取、圖像編解碼、AI 模型前后處理、AI 模型推理,以及視頻流推送等常見任務(wù)模塊。其中每一個(gè)模塊都需要領(lǐng)域?qū)<以谥付ǖ挠布脚_(tái)進(jìn)行開發(fā)和優(yōu)化,并且如何高效地將他們組合起來(lái)也是一個(gè)問(wèn)題。在這篇文章中,我們將探討如何利用 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ā)者只需要通過(guò)命令行的方式就可以輕松完成一套支持多路的分析系統(tǒng)搭建。此外,在這個(gè)過(guò)程中,DL Streamer 會(huì)幫助我們將每個(gè)模塊部署在指定的硬件加速平臺(tái),以獲得更好的性能與更高的資源利用率。

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

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

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

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

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

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

開發(fā)流程

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

首先我們需要對(duì)模型進(jìn)行性能優(yōu)化,這里我們才利用量化技術(shù)來(lái)壓縮模型體積。由于目前 Ultralytics 庫(kù)已經(jīng)直接支持 OpenVINO IR 格式的模型導(dǎo)出,所以我們可以直接調(diào)用以下接口將 YOLOv8 預(yù)訓(xùn)練權(quán)轉(zhuǎn)化為OpenVINO IR,并通過(guò) NNCF 工具進(jìn)行后訓(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,來(lái)實(shí)現(xiàn)從解碼-前處理-推理在 GPU 設(shè)備上的 zero-copy,標(biāo)準(zhǔn) YOLOv8 模型的部分前處理任務(wù)沒(méi)有辦法支持 vaapi-surface-sharing

因此我們需要將部分前處理任務(wù)以模型算子的形式提前集成到模型結(jié)構(gòu)中,這里可以利用 OpenVINO 的 Preprocessing API 來(lái)進(jìn)行前處理任務(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 目前沒(méi)有直接支持 YOLOv8 的后處理任務(wù),所以我們需要在其源碼中新增 YOLOv8 后處理任務(wù)的 C++ 實(shí)現(xiàn)。

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

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

左滑查看更多

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

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

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,這里需要特別注意的是,為了實(shí)現(xiàn)在 GPU 硬解碼和推理任務(wù)之間的 zero-copy,解碼的輸出需要為video/x-raw(memory:VASurface)格式,并且推理的任務(wù)的前處理任務(wù)需要調(diào)用 vaapi-surface-sharing backend ,以此來(lái)將前處理的任務(wù)負(fù)載通過(guò) GPU 來(lái)進(jìn)行加速。

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

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

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

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

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

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

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

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

左滑查看更多

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

如何運(yùn)行示例

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

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

這一步主要為了可以在容器內(nèi)訪問(wèn) host 的 GPU 資源,以及開啟視頻流展示的權(quán)限,如果當(dāng)前硬件中存在多個(gè) GPU 設(shè)備,我們可以通過(guò)修改 GPU driver 的編號(hào)來(lái)調(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、運(yùn)行容器

將之前設(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í)行多路示例

運(yùn)行示例,這里可以將 shell 腳本后的視頻文件替換為 IP 攝像頭 RTSP 地址,或是 webcam 的編號(hào)。由于gvawatermark模塊在 iGPU 上的性能表現(xiàn)要優(yōu)于meta_overlay ,而在 dGPU 上則相反,因此這里準(zhǔn)備了兩套 pipeline,分別為pipeline-igpu.sh 以及pipeline-dgpu.sh ,大家可以根據(jù)自己的硬件環(huán)境進(jì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 大會(huì)上進(jìn)行了展示,該 demo 基于英特爾第 12 代酷睿 處理器的 iGPU 平臺(tái),在 9 路 1080p h.265 攝像頭輸入的情況下,保證每路的實(shí)時(shí)分析性能可以達(dá)到 15fps,也就是大部分?jǐn)z像頭的幀率上限。

審核編輯:湯梓紅

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

    關(guān)注

    61

    文章

    10247

    瀏覽量

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

    關(guān)注

    6

    文章

    1995

    瀏覽量

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

    關(guān)注

    88

    文章

    37138

    瀏覽量

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

    關(guān)注

    1

    文章

    3616

    瀏覽量

    51499
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    116

    瀏覽量

    680

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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