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

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

3天內不再提示

DeepStream Samples版的操作環(huán)境調試過程

NVIDIA英偉達企業(yè)解決方案 ? 來源:NVIDIA英偉達企業(yè)解決方案 ? 作者:NVIDIA英偉達企業(yè)解 ? 2022-08-03 10:18 ? 次閱讀

NVIDIA的DeepStream是目前業(yè)界最好開發(fā)而且功能強大的AI視頻分析工具,在NGC上https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstream-l4t為 Jetson 提供 4 個可使用的版本,分別如下:

  • Base 版(deepstream-l4t:6.1-base):作為 DeepStream SDK 一部分的插件、庫以及依賴項,如 CUDA、TensorRT、GStreamer 等,希望為自己創(chuàng)建 Docker 版的 DeepStream 應用程序用戶,建議使用此映像。請注意,這個鏡像不包含示例內容。

  • Samples 版(deepstream-l4t:6.1-samples):在 Base 版的基礎上添加范例的內容,包括 C/C++ 開源代碼、deepstream-app 范例配置文件、模型文件與測試視頻等,適合體驗與學習用途的初學者使用。

  • IoT 版(deepstream-l4t:6.1-iot):在 Base 版上擴充 IoT 應用所需的環(huán)境,包括 Kafka、Azure IoT、REDIS 和 MQTT 等協議、DeepStream test5 應用程序以及相關配置和模型,可啟用多視頻流應用程序,并將各種消息傳遞到服務器端進行統(tǒng)計分析。

  • Triton 部署版(deepstream-l4t:6.1-triton):這是配合 Triton 推理服務器使用的環(huán)境,開發(fā)者可以直接使用 TensorFlow、TensorFlow-TensorRT 與 ONNX-RT 等方式進行推理計算。

從上面的描述中可以看出 Samples 版本鏡像適合絕大部分初學者的使用,現在就以這個鏡像來做說明。

1、下載鏡像:

這里使用 JetPack 5.0 版的 Jetson Orin 開發(fā)套件,可以使用 DeepStream-6.1 版的容器,可以從 https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstream-l4t網頁右上角 “Pull Tag” 按鈕中,選擇 “6.1-samples” 選項,這時就已經將執(zhí)行指令復制到緩沖區(qū),然后粘貼在 Jetson 上的命令終端,指令內容如下:

docker  pull  nvcr.io/nvidia/deepstream-l4t:6.1-samples

這樣就能從 NGC 服務器將 deepstream-l4t:6.1-samples 鏡像文件下載到 Jetson 設備上。下載完畢之后,執(zhí)行以下指令看看結果:

docker  images

如下圖 TAG 欄中顯示 “6.1-samples” 就表示鏡像文件下載成功。

d27eddbc-1263-11ed-ba43-dac502259ad0.png

到此只是將鏡像文件下載到本地,但還不是可執(zhí)行的容器狀態(tài),接著就要使用 Docker 指令來創(chuàng)建工作容器。

如果是使用 JetPack 4.6.x 版的其他 Jetson 設備時,目前只能使用 DeepStream-6.0.1 版本,請使用以下指令下載鏡像文件到 Jetson 設備上:

docker  pull  nvcr.io/nvidia/deepstream-l4t:6.0.1-samples

2、創(chuàng)建臨時容器的指令:

以下是 NVIDIA 官方所提供的創(chuàng)建容器指令,由于指令內容較長,建議寫入 .sh 腳本中會比較方便執(zhí)行:

# 允許外部應用程序連接到主機的X顯示器:xhost +# 允許外部應用程序連接到主機的X顯示器:dockerrun-it--rm--net=host--runtimenvidia-eDISPLAY=$DISPLAY-w/opt/nvidia/deepstream/deepstream-6.1-v/tmp/.X11-unix/:/tmp/.X11-unixnvcr.io/nvidia/deepstream-l4t:6.1-samples

以下對這段指令進行基本說明:

  • 使用 “docker run” 組合指令來創(chuàng)建容器;

  • 中間的參數可以用 “docker run --help” 查看,這里使用以下幾個參數:

-it:啟動互動式(-i)的終端(-t);

--rm:退出容器之后自動移除;

--net:讓容器內網絡使用指定網絡,這里指定 “host” 表示共用 Jetson 設備網絡;

--runtime:指定執(zhí)行時的方式,這里指定為 “nvidia” 其實可以省略;

-e:配置環(huán)境變量,這里指定容器內 DISPLAY 變量為設備的 $DISPLAY 變量內容;

-w:指定容器內的工作目錄,進入容器就會直接進入到這個工作目錄下;

-v:將容器內的目錄與容器外的目錄形成映射;

  • 鏡像的完整路徑(nvcr.io/nvidia/deepstream-l4t:6.1-samples),放在最后面。

這樣的指令有個最大的缺點,就是每次啟動都只能是個臨時用途的容器,一旦退出之后就會刪除工作容器,表示過程中所有執(zhí)行修改與步驟都將付之一炬,因此這樣指令適合做簡單的測試用途,但并不適合作為開發(fā)階段的使用,必須做些調整。

3、將源代碼與范例復制到容器外:

在容器中的 DeepStream 源代碼有兩個部分:

  • Sources:在容器內 /opt/nvidia/deepstream/deepstream/sources

  • Samples:在容器內 /opt/nvidia/deepstream/deepstream/samples

我們先將這兩個部分的內容復制到容器外,然后啟動容器的時候再用 “-v” 進行路徑映射,這樣過程中修改的內容就會保存在容器外,即便退出后銷毀容器也沒關系。不過這個復制的過程必須在 “容器啟動” 的狀態(tài)下執(zhí)行,可以先執(zhí)行下面最簡單的容器啟動指令:

# 在第一個命令終端dockerrun-it--rmnvcr.io/nvidia/deepstream-l4t:6.1-samples

現在進入容器之內,可能看到以下的顯示信息

root@1c03f4d7628a:/opt/nvidia/deepstream/deepstream-6.1#

“1c03f4d7628a” 是這個容器目前的編號,現在需要開啟一個指令終端進行操作,這個過程是在容器外進行處理,請執(zhí)行以下指令列出執(zhí)行中的容器編號與狀態(tài):

# 在第二個命令終端dockerps

下圖顯示目前有個正在執(zhí)行的容器,其編號(CONTAINER ID)為 1c03f4d7628a,正好是上面看到容器內所顯示的編號。

d2aaaabe-1263-11ed-ba43-dac502259ad0.png

現在執(zhí)行以下指令,將容器內的 sources 與 samples 目錄內容,復制到容器外的指定路徑之下,例如 ~/deepstream/sources~/deepstream/samples

# 在第二個命令終端mkdir  -p  ~/deepstream export  CONTAINER_ID=’根據實際編號’docker  cp  $CONTAINER_ID:/opt/nvidia/deepstream/deepstream/sources ~/deepstream/sourcesdockercp$CONTAINER_ID:/opt/nvidia/deepstream/deepstream/samples~/deepstream/samples

現在看看在 Jetson 設備上 ~/deepstream 目錄下是否多了 sources 與 samples 兩個目錄?比對一下里面的內容是否與容器內的一致。

接下來就可以調整一下執(zhí)行的指令,讓所有的代碼與配置文件的修改部分,保留在容器外面,這樣過程中的修改就不會白白浪費。請執(zhí)行以下指令創(chuàng)建另一容器:

# 在第二個命令終端sudo  xhost +docker  run  -it  --rm  --net=host  --runtime  nvidia  -e  DISPLAY=$DISPLAY -w  /opt/nvidia/deepstream/deepstream  -v /tmp/.X11-unix/:/tmp/.X11-unix -v  ~/deepstream/sources:/opt/nvidia/deepstream/deepstream/sources -v  ~/deepstream/samples:/opt/nvidia/deepstream/deepstream/samples nvcr.io/nvidia/deepstream-l4t:6.1-samples

現在再開啟一個指令窗口,執(zhí)行以下指令檢查以下容器的狀態(tài):

# 在第三個命令終端dockerps

應該會看到類似下面截屏中的兩個 “執(zhí)行中容器” 的信息:

d2cfcace-1263-11ed-ba43-dac502259ad0.png

在容器外試著在 ~/deepstream/sources 目錄下添加個子目錄:

# 在第三個命令終端mkdir-p~/deepstream/sources/outsideContainer

然后到第二個終端里執(zhí)行以下指令,看看是否也多了 “outsideContainer” 目錄?

# 在第二個命令終端ls/opt/nvidia/deepstream/deepstream/sources

如果能對應的上,就表示后面在容器內修改的代碼文件,都存放在容器外面的指定路徑下,這樣就不用擔心每次退出容器之后的問題。

4、在容器內執(zhí)行范例

現在就在第二個終端里執(zhí)行 DeepStream 的標準范例,請執(zhí)行以下指令:

# 在第二個命令終端cd  /samples/configs/deepstream-appdeepstream-app-csource4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt

就能看到下面這個大家相當熟悉的執(zhí)行結果。

以上就完成 DeepStream Samples 版的操作環(huán)境調試過程,開發(fā)人員可以在容器外用編輯器去修改配置文件或 C/C++ 源代碼,然后在容器內執(zhí)行編譯或操作,這樣就會非常方便。

審核編輯:湯梓紅


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

    關注

    14

    文章

    4816

    瀏覽量

    102633
  • 容器
    +關注

    關注

    0

    文章

    490

    瀏覽量

    22014
  • 鏡像
    +關注

    關注

    0

    文章

    159

    瀏覽量

    10678

原文標題:NVIDIA Jetson 系列文章(6):使用容器版DeepStream

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    初步掌握嵌入式程序的編譯和調試過程

    實驗一 嵌入式開發(fā)環(huán)境的建立 一、實驗目的1,掌握嵌入式軟件開發(fā)環(huán)境的建立過程;2,初步掌握嵌入式程序的編譯和調試過程。二、實驗步驟1,安裝集成開發(fā)
    發(fā)表于 11-05 08:51

    最小系統(tǒng)板的調試過程

    關鍵字:NXP LPC1768 最小系統(tǒng) Keil MDK 開發(fā)環(huán)境 J-Link 仿真器概述:以 MDK4.74版本配合 J-Link 仿真器為例演示一下最小系統(tǒng)板的調試過程。首先運行
    發(fā)表于 11-25 06:56

    簡化Xilinx和Altera FPGA調試過程

    簡化Xilinx和Altera FPGA調試過程:通過FPGAViewTM 解決方案,如混合信號示波器(MSO)和邏輯分析儀,您可以在Xilinx 和Altera FPGA 內部迅速移動探點,而無需重新編譯設計方案。能夠把內部FPGA
    發(fā)表于 11-20 17:46 ?27次下載

    電源設計調試過程中的異?,F象分析

    調試過程中所看到的一些異?,F象,以及后來的解決辦法。其實很多工程師認為設計電源是非常重經驗的一門技術,要見多識廣。這種經
    發(fā)表于 10-09 10:49 ?1681次閱讀

    APM四軸 初級安裝調試過程

    ACM四軸 安裝調試過程 此教程主要講解軟件調試 首先要確認自己想飛哪種模式,X還是十模式 根據自己的飛行模式插好線 本章以X模式為例
    發(fā)表于 11-03 10:23 ?6次下載

    單片機驅動DM9000網卡芯片詳細調試過程

    單片機驅動DM9000網卡芯片詳細調試過程
    發(fā)表于 11-02 11:03 ?0次下載

    單片機調試過程中的調試組件導致的問題

    單片機調試過程中,經常會遇到類似第3只眼的問題。何謂第3只眼呢?
    的頭像 發(fā)表于 12-30 17:12 ?7323次閱讀
    單片機<b class='flag-5'>調試過程</b>中的<b class='flag-5'>調試</b>組件導致的問題

    淺析STM32調試過程中的幾個相關問題

    總的來講,單片機調試是單片機開發(fā)工作必不可少的環(huán)節(jié)。不管你愿不愿意,調試過程中總會有各種不期而遇的問題出現在我們面前來磨礪我們。這里分享幾點STM32調試過程中與開發(fā)工具及IDE有關的幾個常見問題,以供參考。
    的頭像 發(fā)表于 01-21 13:50 ?5325次閱讀

    GT9271觸控屏芯片移植調試過程的詳細教程說明

    本文檔的主要內容詳細介紹的是GT9271觸控屏芯片移植調試過程的詳細教程說明
    發(fā)表于 08-05 17:34 ?49次下載
    GT9271觸控屏芯片移植<b class='flag-5'>調試過程</b>的詳細教程說明

    直接阻抗匹配的調試過程

    直接匹配阻抗,天線與射頻芯片在同一塊板子,調試步驟與50歐姆阻抗匹配調試天線參數差不多,多了一部分射頻芯片端的濾波部分的參數計算。下面介紹調試過程
    的頭像 發(fā)表于 10-03 16:18 ?9427次閱讀
    直接阻抗匹配的<b class='flag-5'>調試過程</b>

    S7-1200系列PLC調試過程小結

    S7-1200系列PLC調試過程小結
    發(fā)表于 12-20 09:25 ?3次下載

    配置Python開發(fā)環(huán)境DeepStream容器

    范例,并不適用于 DeepStream 的 Python 環(huán)境,因為還需要安裝 Gstreamer 的 Gst-Python 與 DeepStream 的 PyBinding 與兩個元件。
    的頭像 發(fā)表于 08-12 11:05 ?1488次閱讀

    DeepStream容器執(zhí)行Python的開發(fā)操作

    前面一篇文章已經帶著大家將 DeepStream 容器配置 Python 使用環(huán)境,本文的重點就是繼續(xù)執(zhí)行實際的開發(fā)操作。
    的頭像 發(fā)表于 08-17 10:22 ?1810次閱讀

    電磁流量計調試過程中存在的問題以及解決措施

    跟其他類型的儀表調試相比,電磁流量計的調試方法存在很大的差異性,它的復雜程度會更高,稍不注意,調試過程中就會出現人工失誤操作問題,影響電磁流量計的正常運行。進行電磁流量計
    的頭像 發(fā)表于 10-27 09:08 ?1391次閱讀

    單片機基本io功能調試過程

    單片機基本IO功能的調試過程涉及多個步驟,旨在確保IO口能夠正確地執(zhí)行輸入和輸出操作。以下是一個調試過程,涵蓋了從準備階段到實際測試的關鍵步驟: 一、準備階段 確定單片機型號和IO口 : 首先,明確
    的頭像 發(fā)表于 09-14 14:38 ?323次閱讀