国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

帶你玩轉(zhuǎn)Jetson之Deepstream簡明教程(四)DeepstreamApp如何使用以及用于工程驗證。

這篇具有很好參考價值的文章主要介紹了帶你玩轉(zhuǎn)Jetson之Deepstream簡明教程(四)DeepstreamApp如何使用以及用于工程驗證。。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1.DeepstreamApp是什么?

????????如果你安裝完畢deepstream整體框架,會在你的系統(tǒng)執(zhí)行目錄內(nèi)有可執(zhí)行文件,文件名字是deepstream-app。這是一個可執(zhí)行腳本文件,通過deepstream框架中的代碼在安裝的時候編譯后install到系統(tǒng)根目錄內(nèi)。

? ? ? ? 此腳本文件可以通過終端命令行使用,使用的同時必須使用txt文本文件作為配置文件。此腳本可以通過txt配置一個“相當(dāng)簡單的”deepstream管道,管道中的視頻源可以通過txt文本設(shè)置為各種輸入,包括但不限于本地視頻文件,網(wǎng)絡(luò)上的rtsp推流等等。管道中的堆疊,一級、二級推理、跟蹤、OSD等也可以通過txt文本文件進(jìn)行相當(dāng)簡單快速的配置。

? ? ? ? 使用終端輸入deepstream-app -h即可查看如何使用此腳本。

帶你玩轉(zhuǎn)Jetson之Deepstream簡明教程(四)DeepstreamApp如何使用以及用于工程驗證。

????????這個deepstream-app程序是安裝deepstream的時候就已經(jīng)編譯好安裝在系統(tǒng)里,可以在任意位置的命令終端進(jìn)行調(diào)用。App分為deepstream-app和deepstream-test5-app兩種。兩者功能上的差別就是tset5支持類型設(shè)置為6的sink,也就是向kafka服務(wù)器收發(fā)數(shù)據(jù)的組件。其余二者大致相同。英偉達(dá)也附贈了兩個app的源代碼,基于C++的源代碼的位置位于:(可以學(xué)習(xí)參考)

opt/nvidia/deepstream/deepstream-5.1/sources/apps/sample_apps/deepstream-app
opt/nvidia/deepstream/deepstream-5.1/sources/apps/sample_apps/deepstream-test5

?2.Deepstream-App存在的意義?

????????deepstream-app腳本存在主要有兩個意義。

? ? ? ? 首先第一個,用于工程快速驗證性開發(fā)。因為deepstream-app是一個通過文本文件就能配置的管道,因此可以在您視頻應(yīng)用的早期階段進(jìn)行深度學(xué)習(xí)網(wǎng)絡(luò)性能和設(shè)備硬件性能的快速測試。譬如您設(shè)計、訓(xùn)練了一個網(wǎng)絡(luò),要部署到nx上面,需要實時處理8路視頻。此時您對nx的性能沒有底,或者是并不知道這個網(wǎng)絡(luò)在nx上能不能跑八路。這時候總不能現(xiàn)用c++或者python開發(fā)個系統(tǒng)再去測試吧。代碼的時間是寶貴的,為了快速驗證可行性,通常會先把網(wǎng)絡(luò)設(shè)計訓(xùn)練完畢,然后通過deepstream-app腳本裝載到簡單管道里做一下壓力測試。這樣可以快速驗證項目可行性。

? ? ? ? 其次第二個,deepstream-app可以驗證網(wǎng)絡(luò)性能瓶頸和輔助排除Bug。我之前遇到過一個大學(xué)的學(xué)生設(shè)計制作礦井安全監(jiān)控,他們在3090上面跑了20多路1080p的視頻流,開到22個視頻流就開始卡頓,無推理結(jié)果,他們使用了c++腳本二次開發(fā)。因為他們的代碼揉合了自己的代碼和deepstream官方代碼,有很多自定義的方法和類,短時間摸透他們的代碼并不容易,且代碼風(fēng)格一團(tuán)糟。也沒有注釋,這時候就開始把他們的網(wǎng)絡(luò)通過deepstream-app配置一個22路視頻同時輸入的管道,通過配置發(fā)現(xiàn)deepstream-app本身工作正常,并沒有出現(xiàn)卡頓無推理的情況。所以基本排除了deepstream本身的關(guān)鍵組件出現(xiàn)問題的可能。將問題鎖定在了他們自己的代碼位置。最后通過排查發(fā)現(xiàn)他們是版本控制太亂,有個學(xué)生在管道內(nèi)通過tee組件插了一個支路,這個支路導(dǎo)致了線程崩潰。再者說,如果您的deepstream工程出現(xiàn)了卡頓、性能瓶頸等,完全可以把網(wǎng)絡(luò)模型單獨(dú)拿出來用txt寫個簡單管道,挨個排查deepstream每個單元可能的問題。如果deepstream-app都沒問題,就需要自己排查自己寫的部分代碼。

3.Deepstream-app怎么用?

????????Deepstream-app的用法非常簡潔。即腳本+配置文件。具體寫法如下所示:

deepstream-app -c 您的配置文件.txt

? ? ? ? 腳本會自動解析您配置文件里面的內(nèi)容然后組成管道。所以我們的重點(diǎn)應(yīng)該放在這個配置文件如何寫。下面,我貼出來一份以YoloV5m為范例的配置文件,逐行進(jìn)行分析。

################################################################################
# Copyright (c) 2018-2020, NVIDIA CORPORATION. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
################################################################################

[application]
enable-perf-measurement=1
perf-measurement-interval-sec=5
#gie-kitti-output-dir=streamscl

[tiled-display]
enable=1
rows=1
columns=1
width=1920
height=1080

[source0]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
type=3
uri=rtsp://admin:HuaWei123@113.128.197.19:54388/LiveMedia/ch1/Media1
#uri=file:///home/jetson/vedio/1.mp4
num-sources=1
gpu-id=0
# (0): memtype_device   - Memory type Device
# (1): memtype_pinned   - Memory type Host Pinned
# (2): memtype_unified  - Memory type Unified
cudadec-memtype=0

[sink0]
enable=1
#Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming 5=Overlay 6=send message to cloud(only enable in test5-app)
type=6
msg-conv-config=./MsgConfig/config.txt
msg-conv-payload-type=0
#(0): PAYLOAD_DEEPSTREAM - Deepstream schema payload
#(1): PAYLOAD_DEEPSTREAM_MINIMAL - Deepstream schema payload minimal
#(256): PAYLOAD_RESERVED - Reserved type
#(257): PAYLOAD_CUSTOM   - Custom schema payload
msg-broker-proto-lib=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_kafka_proto.so
#msg-broker-conn-str=127.0.0.1;9092;RawData
msg-broker-conn-str=192.168.1.104;9092;RawData
topic=RawData

[sink1]
enable=1
#Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming 5=Overlay
type=4
#1=h264 2=h265
codec=1
#encoder type 0=Hardware 1=Software
enc-type=0
sync=0
bitrate=4000000
#H264 Profile - 0=Baseline 2=Main 4=High
#H265 Profile - 0=Main 1=Main10
profile=0
# set below properties in case of RTSPStreaming
rtsp-port=8554
udp-port=5400


[osd]
enable=1
border-width=2
text-size=15
text-color=1;1;1;1;
text-bg-color=0.3;0.3;0.3;1
font=Serif
show-clock=0
clock-x-offset=800
clock-y-offset=820
clock-text-size=12
clock-color=1;0;0;0

[streammux]
##Boolean property to inform muxer that sources are live
live-source=0
batch-size=1
##time out in usec, to wait after the first buffer is available
##to push the batch even if the complete batch is not formed
batched-push-timeout=40000
## Set muxer output width and height
width=1920
height=1080
## If set to TRUE, system timestamp will be attached as ntp timestamp
## If set to FALSE, ntp timestamp from rtspsrc, if available, will be attached
# attach-sys-ts-as-ntp=1

# config-file property is mandatory for any gie section.
# Other properties are optional and if set will override the properties set in
# the infer config file.

[primary-gie]
enable=1
bbox-border-color0=1;0;0;1
bbox-border-color1=0;1;1;1
bbox-border-color2=0;0;1;1
bbox-border-color3=0;1;0;1
gie-unique-id=1
config-file=./Models/config.txt

[tracker]
enable=1
# For the case of NvDCF tracker, tracker-width and tracker-height must be a multiple of 32, respectively
tracker-width=640
tracker-height=384
ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_mot_iou.so
#ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_nvdcf.so
#ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_mot_klt.so
#ll-config-file required for DCF/IOU only
#ll-config-file=tracker_config.yml
#ll-config-file=iou_config.txt
gpu-id=0
#enable-batch-process and enable-past-frame applicable to DCF only
enable-batch-process=1
enable-past-frame=0
display-tracking-id=1

[tests]
file-loop=0

? ? ? ? 讓我們逐組件逐行來進(jìn)行翻譯和解釋。說在最前面,這份配置文件是通過“#”字符來進(jìn)行注釋的,如果有不需要的設(shè)置或者需要更改設(shè)置,建議使用“#”來進(jìn)行無效化,不建議直接刪,否則可能會記不住刪除了那些東西。

[application]
enable-perf-measurement=1
perf-measurement-interval-sec=5

????????首先來看application總體配置。enable-perf-measurement的意思是開啟每秒幀數(shù)測試。是否開啟fps幀率檢測,0代表不開啟1代表開始,下面的perf-measurement-interval-sec參數(shù)是多少幀率計算一次用來做數(shù)據(jù)平滑。

[source0]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
type=3
uri=rtsp://admin:HuaWei123@113.128.197.19:54388/LiveMedia/ch1/Media1
#uri=file:///home/jetson/vedio/1.mp4
num-sources=1
gpu-id=0
# (0): memtype_device   - Memory type Device
# (1): memtype_pinned   - Memory type Host Pinned
# (2): memtype_unified  - Memory type Unified
cudadec-memtype=0

? ? ? ? 然后來看source0,這個是deepstream的輸入源,您可以在這個source組件進(jìn)行視頻流輸入的配置。如果您有一個視頻流就寫[source0],如果有多個就[source1],[source2],[source3]依次往下遞增序號即可。enable不用說了還是一個使能設(shè)置,0則關(guān)閉1則開啟。type類型是告訴deepstream-app大概是什么類型的輸入,1是V4L2也就是linux硬件設(shè)備樹上面的攝像頭,2是網(wǎng)絡(luò)URI,3是萬能設(shè)置,比2更好,可以讀取本地文件。4是指定的RTSP視頻流。我一般直接用3即可。

? ? ? ? 然后是Uri鏈接,如果是網(wǎng)絡(luò)連接或者是ip攝像頭,直接把rtsp地址copy過來即可。就如同上面的:uri=rtsp://admin:HuaWei123@113.128.197.19:54388/LiveMedia/ch1/Media1。如果是本地的視頻文件,需要特定的寫法。這個我也是論壇查了好久才查到的,具體寫法就是uri:///加上文件在系統(tǒng)內(nèi)的絕對路徑加上文件名字。這樣寫deepstream-app就能直接讀取本地視頻流進(jìn)行推理。

[streammux]
##Boolean property to inform muxer that sources are live
live-source=0
batch-size=1
##time out in usec, to wait after the first buffer is available
##to push the batch even if the complete batch is not formed
batched-push-timeout=40000
## Set muxer output width and height
width=1920
height=1080
## If set to TRUE, system timestamp will be attached as ntp timestamp
## If set to FALSE, ntp timestamp from rtspsrc, if available, will be attached
# attach-sys-ts-as-ntp=1

? ? ? ? Streammux插件是deepstream的混流插件,比如你輸入是30路視頻流,需要通過Streammux插件將視頻流混流到一起,組成一個視頻流。這里需要注意的是batch-size改成了1,還有輸入輸出的尺寸需要設(shè)計好。

[primary-gie]
enable=1
bbox-border-color0=1;0;0;1
bbox-border-color1=0;1;1;1
bbox-border-color2=0;0;1;1
bbox-border-color3=0;1;0;1
gie-unique-id=1
config-file=./Models/config.txt

????????[primary-gie]插件就是我們需要用到的推理插件,這個插件在deepstream-app的txt配置文件中需要寫的東西不多,上面的幾個參數(shù)分別是使能,bbox框顏色,bbox框是否生成唯一id。后面這個config-file目錄才是重點(diǎn)。這里文件目錄采用的是和終端命令行相似的相對目錄,在deepstream-app的txt配置文件的同級目錄下的Models的文件夾內(nèi)的config文件。這個目錄和文件名到時候根據(jù)您的項目來隨意寫。網(wǎng)絡(luò)推理的相關(guān)參數(shù)都在這個config文本內(nèi)。接下來我們看一下這個config.txt文本內(nèi)到底是什么。

################################################################################
# Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
################################################################################

# Following properties are mandatory when engine files are not specified:
#   int8-calib-file(Only in INT8), model-file-format
#   Caffemodel mandatory properties: model-file, proto-file, output-blob-names
#   UFF: uff-file, input-dims, uff-input-blob-name, output-blob-names
#   ONNX: onnx-file
#
# Mandatory properties for detectors:
#   num-detected-classes
#
# Optional properties for detectors:
#   cluster-mode(Default=Group Rectangles), interval(Primary mode only, Default=0)
#   custom-lib-path
#   parse-bbox-func-name
#
# Mandatory properties for classifiers:
#   classifier-threshold, is-classifier
#
# Optional properties for classifiers:
#   classifier-async-mode(Secondary mode only, Default=false)
#
# Optional properties in secondary mode:
#   operate-on-gie-id(Default=0), operate-on-class-ids(Defaults to all classes),
#   input-object-min-width, input-object-min-height, input-object-max-width,
#   input-object-max-height
#
# Following properties are always recommended:
#   batch-size(Default=1)
#
# Other optional properties:
#   net-scale-factor(Default=1), network-mode(Default=0 i.e FP32),
#   model-color-format(Default=0 i.e. RGB) model-engine-file, labelfile-path,
#   mean-file, gie-unique-id(Default=0), offsets, process-mode (Default=1 i.e. primary),
#   custom-lib-path, network-mode(Default=0 i.e FP32)
#
# The values in the config file are overridden by values set through GObject
# properties.

[property]
gpu-id=0
net-scale-factor=0.0039215697906911373
#0=RGB, 1=BGR
model-color-format=0
custom-network-config=yolov5s
model-file=yolov5s.wts
model-engine-file=yolov5s_fp16.engine
labelfile-path=labels.txt
int8-calib-file=yolov5s.trt.calib.table
## 0=FP32, 1=INT8, 2=FP16 mode
network-mode=2
num-detected-classes=2
gie-unique-id=1
network-type=0
is-classifier=0
## 0=Group Rectangles, 1=DBSCAN, 2=NMS, 3= DBSCAN+NMS Hybrid, 4 = None(No clustering)
cluster-mode=2
maintain-aspect-ratio=1
parse-bbox-func-name=NvDsInferParseCustomYoloV5
custom-lib-path=libnvdsinfer_custom_impl_yolov5.so
engine-create-func-name=NvDsInferYoloCudaEngineGet
#scaling-filter=0
#scaling-compute-hw=0

? ? ? ? 首先,前面的大段都是nvidia的版權(quán)聲明,從poperty這里開始是推理引擎的配置。gpu-id是指定相關(guān)gpu,單卡就是0,多卡依次按序號指定。net-scale-factor一般是默認(rèn)數(shù)據(jù)。需要注意的是,這里的:

custom-network-config=yolov5s
model-file=yolov5s.wts
model-engine-file=yolov5s_fp16.engine
parse-bbox-func-name=NvDsInferParseCustomYoloV5
custom-lib-path=libnvdsinfer_custom_impl_yolov5.so
engine-create-func-name=NvDsInferYoloCudaEngineGet

幾行要合起來看,因為我這里使用的是deepstream的第三方網(wǎng)絡(luò)也就是yolov5m,deepstream并不能直接加載且解析網(wǎng)絡(luò)、構(gòu)建網(wǎng)絡(luò)的加速引擎、并且對網(wǎng)絡(luò)推理的后處理bbox進(jìn)行解析,所以需要你自己編寫一個.so來進(jìn)行上述工作。parse-bbox-func-name就是指出bbox解析的api名稱,custom-lib-path是你的.so庫名字,engine-create-func-name是你庫的解析yolov5模型創(chuàng)建引擎的api名稱。需要注意的是,如果你使用的英偉達(dá)TAO或者TLT遷移學(xué)習(xí),深度學(xué)習(xí)網(wǎng)絡(luò)模型是從nvidia官網(wǎng)上下載的resnet19等訓(xùn)練好的etlt模型,可以無縫接入Deepstream不用做這個第三方庫。直接就可以簡化為:

model-file=resnet19.etlt
model-engine-file=resnet19_fp16.engine

? ? ? ? 剩下的關(guān)于深度學(xué)習(xí)網(wǎng)絡(luò)的配置我就不一一介紹了,基本都是推理相關(guān),我等會會把每一條都是什么的官網(wǎng)查詢文檔貼出來。

????????接著來看跟蹤器相關(guān)設(shè)置。

[tracker]
enable=1
# For the case of NvDCF tracker, tracker-width and tracker-height must be a multiple of 32, respectively
tracker-width=640
tracker-height=384
ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_mot_iou.so
#ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_nvdcf.so
#ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_mot_klt.so
#ll-config-file required for DCF/IOU only
#ll-config-file=tracker_config.yml
#ll-config-file=iou_config.txt
gpu-id=0
#enable-batch-process and enable-past-frame applicable to DCF only
enable-batch-process=1
enable-past-frame=0
display-tracking-id=1

????????Tracker組件用于對推理目標(biāo)進(jìn)行跟蹤,譬如一個攝像頭30FPS,但是推理性能不夠只有15FPS,需要跳幀推理的時候,中間沒有進(jìn)行推理的幀就通過跟蹤器進(jìn)行追蹤,確保不會丟失bbox。或者是針對目標(biāo)進(jìn)行單一id化,確保目標(biāo)識別出來后在畫面內(nèi)始終保持同一個id。在車船人員計數(shù)方面還是有一定作用,防止bbox推理丟失后產(chǎn)生多重計數(shù)等。

? ? ? ? nvidia這邊提供了三種跟蹤方式,分別是iou、nvdcf、klt光流。iou最簡單算力使用最低,但是效果最差勁,klt光流法最好但是最吃算力。nvdcf是英偉達(dá)自己開發(fā)的算法,通過概率去預(yù)測。是一個比較均衡的。此Tracker組件需要根據(jù)選用的算法指定具體.so,追蹤寬高基本是默認(rèn)的。

? ? ? ? 需要注意的是上述追蹤算法在jetson平臺默認(rèn)自動運(yùn)行于VIC內(nèi),會減少CPU占用。

[osd]
enable=1
border-width=2
text-size=15
text-color=1;1;1;1;
text-bg-color=0.3;0.3;0.3;1
font=Serif
show-clock=0
clock-x-offset=800
clock-y-offset=820
clock-text-size=12
clock-color=1;0;0;0

????????OSD插件適用于bbox可視化,基本就是線寬,是否展示id,顏色等等,不做過多贅述。此插件也是在jetson平臺用VIC進(jìn)行硬件加速的,會減少cpu占用。

[sink0]
enable=1
#Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming 5=Overlay 6=msgbroker(only enable in test5-app)
type=6
msg-conv-config=./MsgConfig/config.txt
msg-conv-payload-type=0
#(0): PAYLOAD_DEEPSTREAM - Deepstream schema payload
#(1): PAYLOAD_DEEPSTREAM_MINIMAL - Deepstream schema payload minimal
#(256): PAYLOAD_RESERVED - Reserved type
#(257): PAYLOAD_CUSTOM   - Custom schema payload
msg-broker-proto-lib=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_kafka_proto.so
#msg-broker-conn-str=127.0.0.1;9092;RawData
msg-broker-conn-str=192.168.1.104;9092;RawData
topic=RawData

????????sink是管道最后的sink接受終端,enable-1代表開啟,type種類非常豐富。1就是假的sink,啥也不干。算法純在后臺運(yùn)行不做任何顯示或者處理。2是圖像顯示,格式是EGL。3是文件sink,在接收到視頻流后直接在本地存文件。4是RTSP推流。5是全屏直接顯示,6是服務(wù)器收發(fā)消息組件,僅在deepstream-test5-app有效。此處選擇了6。

????????msg-conv-config參數(shù)是配置攝像頭位置信息的,僅僅在360度扭曲變換那個例子有用,這里直接抄過來了怕出錯。不過里邊的東西沒用。msg-conv-payload-type就是每一幀發(fā)送什么樣的消息,0就是所有的都發(fā),1簡短一些,256 257是自定義和預(yù)留的參數(shù)。msg-broker-proto-lib是選擇底層用什么通訊,這里選用了kafka。msg-broker-conn-str參數(shù)是服務(wù)參數(shù)配置,這里nx代表了kafka的producer,需要給一個broker發(fā)送消息。Kafka的broker就相當(dāng)于是個托管服務(wù)器,消費(fèi)者和生產(chǎn)者的消息都要過這個broker中間人。第一個是broker服務(wù)的地址,第二個是端口,第三個是Topic。下面的Topic參數(shù)和上面的寫一致即可。

? ? ? ? 上面這個主要是為了給kafka服務(wù)器發(fā)送數(shù)據(jù),如果只是做本地顯示,改成如下即可。

[sink0]
enable=1
#Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming 5=Overlay 6=msgbroker(only enable in test5-app)
type=2

? ? ? ? 如果你想通過deepstream-app推流,也可以如下設(shè)置sink組件來達(dá)到推流效果:

[sink1]
enable=1
#Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming 5=Overlay
type=4
#1=h264 2=h265
codec=1
#encoder type 0=Hardware 1=Software
enc-type=0
sync=0
bitrate=4000000
#H264 Profile - 0=Baseline 2=Main 4=High
#H265 Profile - 0=Main 1=Main10
profile=0
# set below properties in case of RTSPStreaming
rtsp-port=8554
udp-port=5400

????????sink1是rtsp的推流sink,可以接受管道數(shù)據(jù)然后在局域網(wǎng)轉(zhuǎn)推出來。Codec是選擇編碼格式,默認(rèn)h264。Enc-type是編碼器選擇,這里肯定選硬件編碼器。Sync是同步選擇,就是視頻源頭推送一幀我這個sink就推送一幀,是同步且實時的,但是有點(diǎn)不好的就是讀取帶有延遲的網(wǎng)絡(luò)視頻流,經(jīng)過網(wǎng)絡(luò)的傳輸實時延遲已經(jīng)很大了,就會造成sync報錯視頻卡頓,所以sync還是不開了,給關(guān)掉了。Bitrate是編碼比特率,默認(rèn)參數(shù)。Profile暫時沒搞懂,默認(rèn)的參數(shù)。Rtsp port和udp port都是網(wǎng)絡(luò)端口信息。這倆都是默認(rèn)即可,可以根據(jù)網(wǎng)絡(luò)環(huán)境更改。最后管道在運(yùn)行的時候就可以得到一個實時推流地址。

4.實機(jī)演示

? ? ? ? 驗證平臺:Jetson NX 8 GB 、yolov5m 、deeepstream 5.1

帶你玩轉(zhuǎn)Jetson之Deepstream簡明教程(四)DeepstreamApp如何使用以及用于工程驗證。

????????運(yùn)行效果如上圖所示。 如果你還增加了rtsp推流,將結(jié)果推出,腳本會輸出rtsp地址以供查看。

帶你玩轉(zhuǎn)Jetson之Deepstream簡明教程(四)DeepstreamApp如何使用以及用于工程驗證。

5.概括Deepstream-app腳本優(yōu)缺點(diǎn)

????????優(yōu)點(diǎn)1.快速搭建用于驗證的管道模型。

????????優(yōu)點(diǎn)2.通過控制關(guān)鍵組件enable的0、1來排查bug或者性能瓶頸。

????????缺點(diǎn):基本就是個直腸子,只能組建source-mux混流-gie推理-(gie二級推理)-tracker-osd-sink這樣的簡單管道,至于您要想搞什么tee插件分流,搞什么opencv掛探針取圖,基本不可能,只能靠二次開發(fā)。如果您的管道設(shè)計非常簡單,甚至不用二次開發(fā)用deepstream-app腳本掛管道就行了。但是如果您的設(shè)計較為復(fù)雜,此腳本遠(yuǎn)遠(yuǎn)無法滿足。還是得搞開發(fā)環(huán)境二次開發(fā)。

6.相關(guān)資料

????????上述配置文件中各種眼花繚亂的配置有些很重要有些是次要的,好多都沒寫,我只寫了主要的。但是要查這些組件的配置去哪里查呢?英偉達(dá)doc文檔中心有deepstream的設(shè)置參數(shù)手冊,里邊羅列了非常詳細(xì)的參數(shù)列表和建議參數(shù)還有參數(shù)含義。在這里將地址掛出來您自行查詢。

帶你玩轉(zhuǎn)Jetson之Deepstream簡明教程(四)DeepstreamApp如何使用以及用于工程驗證。

帶你玩轉(zhuǎn)Jetson之Deepstream簡明教程(四)DeepstreamApp如何使用以及用于工程驗證。

?????????地址在這里:

https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_deepstream.html

? ? ? ? 感謝您的閱讀!文章來源地址http://www.zghlxwxcb.cn/news/detail-401106.html

到了這里,關(guān)于帶你玩轉(zhuǎn)Jetson之Deepstream簡明教程(四)DeepstreamApp如何使用以及用于工程驗證。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SAP報表簡明教程

    SAP報表簡明教程

    SAP 報表簡明教程 ? 一、 報表需求,根據(jù)物料編碼和物料類型 查詢報表。用戶輸入界面要求如下: ? ? 二、 開始寫代碼。先進(jìn)入 TCODE:SE38 ,新建一個程序。 ? ?? 點(diǎn)擊創(chuàng)建按鈕,如下圖:? ? ? 輸入標(biāo)題,寫明 此程序的功能 作者,創(chuàng)建時間,點(diǎn)保存, ? ? 輸入自己事先建

    2024年02月04日
    瀏覽(18)
  • Husky使用簡明教程

    Husky 是一個流行的 Git 鉤子工具,用于在不同的 Git 操作(如提交和推送)前自動運(yùn)行腳本。比如代碼格式化、靜態(tài)檢查等。這有助于保持代碼庫的質(zhì)量和一致性。本教程將詳細(xì)介紹 Husky 的原理、使用方式、配置方法以及如何在開發(fā)中集成 Husky。 Husky 原理 安裝 Husky 配置 Hus

    2024年04月10日
    瀏覽(21)
  • SSH 隧道簡明教程

    SSH 隧道簡明教程

    本章主要介紹了什么是 SSH 隧道以及如何使用 SSH 隧道,包括 SSH 隧道加密數(shù)據(jù)傳輸以及繞過防火墻。 SSH 隧道是 SSH 中的一種機(jī)制,它能夠?qū)⑵渌?TCP 端口的網(wǎng)絡(luò)數(shù)據(jù)通過 SSH 連接來轉(zhuǎn)發(fā),并且自動提供了相應(yīng)的加密及解密服務(wù)。因為 SSH 為其他 TCP 鏈接提供了一個安全的通道來

    2024年02月06日
    瀏覽(20)
  • dig 簡明教程

    dig 簡明教程

    哈嘍大家好,我是咸魚 不知道大家在日常學(xué)習(xí)或者工作當(dāng)中用 dig 命令多不多 dig 是 Domain Information Groper 的縮寫,對于網(wǎng)絡(luò)管理員和在域名系統(tǒng)(DNS)領(lǐng)域工作的小伙伴來說,它是一個非常常見且有用的工具。 無論是簡單的 DNS 解析查找還是更高級的故障排除和分析, dig 都能夠

    2024年02月08日
    瀏覽(47)
  • mpack簡明教程

    mpack簡明教程

    本文先簡單介紹MessagePack的基本概念。 然后,介紹一個MessagePack C API - MPack的通常使用。 接著嘗試對MPack截斷數(shù)據(jù)的讀取。 注:本文完整代碼見倉庫。 如果你使用過C/C++的json庫,那么上手MessagePack是比較容易的。關(guān)于C/C++ Json庫的使用可見:C++ JSON庫的一般使用方法-CSDN博客。

    2024年02月20日
    瀏覽(39)
  • HuggingFace簡明教程

    HuggingFace簡明教程

    視頻鏈接:HuggingFace簡明教程,BERT中文模型實戰(zhàn)示例.NLP預(yù)訓(xùn)練模型,Transformers類庫,datasets類庫快速入門._嗶哩嗶哩_bilibili 什么是huggingface?huggingface是一個開源社區(qū),它提供了先進(jìn)的NLP模型,數(shù)據(jù)集,以及其他便利的工具。 數(shù)據(jù)集:Hugging Face – The AI community building the future.? 這

    2024年01月25日
    瀏覽(30)
  • AI繪畫工具簡明教程

    AI繪畫工具簡明教程

    官方地址 首先需要郵箱注冊,等待邀請(可能需要等待一兩天) 能成功登錄后會進(jìn)入這樣一個界面 https://app.scenario.com/generators 創(chuàng)建模型 提供的圖片集上傳的時候得是jpg,還需要裁剪成正方形。批量修改圖片在線網(wǎng)站:https://www.birme.net/ 根據(jù)圖集生成圖片 官方網(wǎng)址:https://

    2024年02月11日
    瀏覽(27)
  • 電商3D產(chǎn)品渲染簡明教程

    電商3D產(chǎn)品渲染簡明教程

    3D 渲染讓動作電影看起來更酷,讓建筑設(shè)計變得栩栩如生,現(xiàn)在還可以幫助營銷人員推廣他們的產(chǎn)品。 從最新的《阿凡達(dá)》電影到 Spotify 的上一次營銷活動,3D 的應(yīng)用讓一切變得更加美好。 在營銷領(lǐng)域,3D 產(chǎn)品渲染可幫助品牌創(chuàng)建產(chǎn)品的高分辨率圖像和視頻,這些圖像和視

    2024年02月13日
    瀏覽(19)
  • shell簡明教程3函數(shù)

    shell簡明教程3函數(shù)

    在本章中,您將了解為什么以及何時需要使用函數(shù)。 你將學(xué)習(xí)如何創(chuàng)建函數(shù)以及如何使用函數(shù)。 我們將討論變量及其作用域。 學(xué)習(xí)如何使用參數(shù)訪問傳遞給函數(shù)的參數(shù)。 最后,您還將學(xué)習(xí)如何使用函數(shù)處理退出狀態(tài)和返回代碼。 計算機(jī)編程和應(yīng)用程序開發(fā)中有一個概念叫

    2024年02月11日
    瀏覽(28)
  • WebGPU開發(fā)簡明教程【2023】

    WebGPU開發(fā)簡明教程【2023】

    WebGPU 是一種全新的現(xiàn)代 API,用于在 Web 應(yīng)用程序中訪問 GPU 的功能。 在 WebGPU 之前,有 WebGL,它提供了 WebGPU 功能的子集。 它啟用了新一類豐富的網(wǎng)絡(luò)內(nèi)容,開發(fā)人員用它構(gòu)建了令人驚嘆的東西。 然而,它基于 2007 年發(fā)布的 OpenGL ES 2.0 API,而該 API 又基于更舊的 OpenGL API。

    2024年02月16日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包