精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

在DeepStream上使用自己的Pytorch模型

jf_cVC5iyAO ? 來源:易心Microbit編程 ? 作者:易心Microbit編程 ? 2022-11-25 16:08 ? 次閱讀

DeepStream是NVIDIA專為處理多個串流影像,并進行智能辨識而整合出的強大工具。開發語言除了原先的C++,從DeepStream SDK 5.1也支持基于原先安裝,再掛上Python套件的方式,讓較熟悉Python程序語言的使用者也能使用DeepStream。

本文主要將其應用在Jetson Nano上,并于DeepStream導入自己的模型執行辨識。

c8987b76-6c97-11ed-8abf-dac502259ad0.png

在Jetson Nano上面安裝DeepStream

筆者使用的硬件為Jetson Nano 2GB/4GB,參照官方提供的步驟與對應的版本,幾乎可以說是無痛安裝。對比同樣采用干凈映像檔,使用源碼或是Docker安裝的JetBot與Jetson Inference要快上許多。

c8b97b00-6c97-11ed-8abf-dac502259ad0.png

執行官方范例

DeepStream有提供不少范例,不論是從CSIUSB接口的攝影機取得畫面,或是多影像辨識結果顯示,都能經由查看這些范例,學習如何設定。

c8e2d50e-6c97-11ed-8abf-dac502259ad0.png

透過下列指令執行一個配置文件,查看DeepStream是否安裝成功,這個配置文件會開啟一部mp4影片,并模擬產生8個輸入來源,經模型推論處理過后于同一個畫面顯示,點擊單一個區塊可以顯示該來源的詳細信息。實際應用上可以將各部攝影機的畫面同時輸出并進行處理。

deepstream-app -c source8_1080p_dec_infer-resnet_tracker_tiled_display_fp16_nano.txt

c917e2bc-6c97-11ed-8abf-dac502259ad0.png

使用自己的模型

如果您與筆者一樣是NVIDIA官方課程小粉絲,從擁有Jetson Nano開始,就按部就班的跟著課程學習,那您一定看過下列三種不同主題的課程。

c94d3020-6c97-11ed-8abf-dac502259ad0.png

從入門的Section 1開始,到執行Section 2的JetBot自駕車項目,最后Section 3 Hello AI World。經過三個Section,您應該稍微熟悉Pytorch,并且也訓練了不少自己的模型,特別是在Hello AI World有訓練了Object Detection模型。既然都有自己的模型,何不放到DeepStream上面制作專屬的串流辨識項目,針對想要辨識的項目導入適合的模型。

在Hello AI World項目訓練Object Detection模型的時候,我們使用的是SSD-Mobilenet,在DeepStream的對象辨識范例中有提供使用自己的SSD模型方法,可在下列路徑找到參考文件,文件中使用的例子是使用coco數據集預訓練的SSD-Inception。

/opt/nvidia/deepstream/deepstream-5.1/sources/objectDetector_SSD

可惜的是文件中使用的是從Tensorflow訓練的模型,經由轉換.uff再喂給DeepStream,與官方課程使用的Pytorch是不同路線。筆者在網上尋找解決方法,看是否有DeepStream使用Pytorch模型的方案,也于NVIDIA開發者論壇找到幾個同樣的提問,但最終都是導到上述提到的參考文件。

從Hello AI World訓練的Object Detection模型,經過執行推論的步驟,您應該會有三個與模型有關的檔案,分別是用Pytorch訓練好的.pth,以及為了使用TensorRT加速而將.pth轉換的.onnx,最后是執行過程中產生的.engine。既然Pytorch模型找不到解決方案,那就從ONNX模型下手吧,所幸經過一番折騰,終于讓筆者找到方法。

https://github.com/neilyoung/nvdsinfer_custom_impl_onnx

neilyoung提供的方法主要是能產生動態函式庫,以便我們能在DeepStream使用ONNX模型,除了準備好自己訓練的ONNX模型檔案與Labels檔案,只要再新增設定模型路徑與類型的config檔案,與deepstream配置文件就能實現使用自己的模型進行推論啰!

STEP 1:

首先于以下路徑底下新增執行ONNX項目的文件夾,筆者命名為objectDetector_ONNX。

/opt/nvidia/deepstream/deepstream-5.1/sources

c9758192-6c97-11ed-8abf-dac502259ad0.png

STEP 2:

新增專案文件夾后,請clone方才的nvdsinfer_custom_impl_onnx專案到文件夾內。

c9a19570-6c97-11ed-8abf-dac502259ad0.png

STEP 3:

打開Terminal進到nvdsinfer_custom_impl_onnx項目里面,透過sudo make指令產生動態函式庫。

c9d524d0-6c97-11ed-8abf-dac502259ad0.png

STEP 4:

接著將自己從Hello AI World項目訓練的Object Detection模型與卷標復制到objectDetector_ONNX項目文件夾。

ca257f5c-6c97-11ed-8abf-dac502259ad0.png

STEP 5:

從別的項目文件夾復制config檔案與deepstream配置文件到我們的文件夾內,這邊復制objectDetector_SSD,因為模型類型相近,只要稍微修改即可。

ca5449e0-6c97-11ed-8abf-dac502259ad0.png

STEP 6:

首先修改config檔案,如下圖所示,將模型路徑與卷標路徑,修正為自己的模型與卷標名稱,engine檔案的部份與Hello AI World項目一樣,在執行ONNX檔案進行TensorRT加速時會自動產生,只需給路徑與名稱即可。對于classes的部份,切記在Hello AI World項目訓練的模型會加上BACKGROUND這一個類別,所以若是您辨識的對象有三種,就得在classes這邊填上3+1。

下方三項的設定則依照nvdsinfer_custom_impl_onnx項目github上的說明,記得動態函式庫的路徑請改成自己的路徑。

output-blob-names="boxes;scores"

parse-bbox-func-name="NvDsInferParseCustomONNX"

custom-lib-path="/path/to/lib/libnvdsinfer_custom_impl_onnx.so"

接著依照個人需求設定辨識的參數,例如希望信心指數達多少%才認定對象類別,可以修改threshold。

ca7cc0be-6c97-11ed-8abf-dac502259ad0.png

STEP 7:

接著修改deepstream配置文件,筆者在這邊設定為USB Webcam輸入,并輸出單一窗口顯示,除了正常調整輸入與輸出之外,請將config檔案與Labels檔案導引至自己的路徑,engine的部份與config設定相同即可,如下圖所示。

caaf0092-6c97-11ed-8abf-dac502259ad0.png

完成上述7步驟后,就能執行配置文件查看是否有正確執行我們的ONNX模型,第一次執行會較久,過程會產生engine檔案,一旦有了engine檔,之后執行就不會再重復產生。

cad82972-6c97-11ed-8abf-dac502259ad0.png

成功執行自定義模型的結果。

cb1ae4ec-6c97-11ed-8abf-dac502259ad0.png

結論

原官方范例大多執行車流檢測,若是想執行別的應用就得自己研究。本篇透過將自己訓練好的Pytorch模型轉換為ONNX,經7步驟后讓DeepStream可以使用我們自己的模型進行辨識,使其能應用在交通以外的場景,例如室內監控、多機臺管控…等。

審核編輯 :李倩

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

    關注

    22

    文章

    2104

    瀏覽量

    73503
  • pytorch
    +關注

    關注

    2

    文章

    803

    瀏覽量

    13152

原文標題:在DeepStream上使用自己的Pytorch模型

文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    PyTorch 數據加載與處理方法

    PyTorch 是一個流行的開源機器學習庫,它提供了強大的工具來構建和訓練深度學習模型構建模型之前,一個重要的步驟是加載和處理數據。 1. Py
    的頭像 發表于 11-05 17:37 ?319次閱讀

    如何在 PyTorch 中訓練模型

    PyTorch 是一個流行的開源機器學習庫,廣泛用于計算機視覺和自然語言處理等領域。它提供了強大的計算圖功能和動態圖特性,使得模型的構建和調試變得更加靈活和直觀。 數據準備 訓練模型
    的頭像 發表于 11-05 17:36 ?275次閱讀

    使用PyTorch英特爾獨立顯卡訓練模型

    PyTorch 2.5重磅更新:性能優化+新特性》中的一個新特性就是:正式支持英特爾獨立顯卡訓練模型
    的頭像 發表于 11-01 14:21 ?242次閱讀
    使用<b class='flag-5'>PyTorch</b><b class='flag-5'>在</b>英特爾獨立顯卡<b class='flag-5'>上</b>訓練<b class='flag-5'>模型</b>

    基于Pytorch訓練并部署ONNX模型TDA4應用筆記

    電子發燒友網站提供《基于Pytorch訓練并部署ONNX模型TDA4應用筆記.pdf》資料免費下載
    發表于 09-11 09:24 ?0次下載
    基于<b class='flag-5'>Pytorch</b>訓練并部署ONNX<b class='flag-5'>模型</b><b class='flag-5'>在</b>TDA4應用筆記

    pytorch怎么pycharm中運行

    第一部分:PyTorch和PyCharm的安裝 1.1 安裝PyTorch PyTorch是一個開源的機器學習庫,用于構建和訓練神經網絡。要在PyCharm中使用PyTorch,首先需
    的頭像 發表于 08-01 16:22 ?1268次閱讀

    PyTorch中搭建一個最簡單的模型

    PyTorch中搭建一個最簡單的模型通常涉及幾個關鍵步驟:定義模型結構、加載數據、設置損失函數和優化器,以及進行模型訓練和評估。
    的頭像 發表于 07-16 18:09 ?1794次閱讀

    pytorch如何訓練自己的數據

    本文將詳細介紹如何使用PyTorch框架來訓練自己的數據。我們將從數據準備、模型構建、訓練過程、評估和測試等方面進行講解。 環境搭建 首先,我們需要安裝PyTorch。可以通過訪問
    的頭像 發表于 07-11 10:04 ?459次閱讀

    pytorch中有神經網絡模型

    處理、語音識別等領域取得了顯著的成果。PyTorch是一個開源的深度學習框架,由Facebook的AI研究團隊開發。它以其易用性、靈活性和高效性而受到廣泛歡迎。PyTorch中,有許多預訓練的神經網絡
    的頭像 發表于 07-11 09:59 ?651次閱讀

    PyTorch神經網絡模型構建過程

    PyTorch,作為一個廣泛使用的開源深度學習庫,提供了豐富的工具和模塊,幫助開發者構建、訓練和部署神經網絡模型神經網絡模型中,輸出層是尤為關鍵的部分,它負責將
    的頭像 發表于 07-10 14:57 ?462次閱讀

    解讀PyTorch模型訓練過程

    PyTorch作為一個開源的機器學習庫,以其動態計算圖、易于使用的API和強大的靈活性,深度學習領域得到了廣泛的應用。本文將深入解讀PyTorch模型訓練的全過程,包括數據準備、
    的頭像 發表于 07-03 16:07 ?959次閱讀

    PyTorch如何訓練自己的數據集

    PyTorch是一個廣泛使用的深度學習框架,它以其靈活性、易用性和強大的動態圖特性而聞名。訓練深度學習模型時,數據集是不可或缺的組成部分。然而,很多時候,我們可能需要使用自己的數據集
    的頭像 發表于 07-02 14:09 ?1381次閱讀

    如何使用PyTorch建立網絡模型

    PyTorch是一個基于Python的開源機器學習庫,因其易用性、靈活性和強大的動態圖特性,深度學習領域得到了廣泛應用。本文將從PyTorch的基本概念、網絡模型構建、優化方法、實際
    的頭像 發表于 07-02 14:08 ?370次閱讀

    使用PyTorch搭建Transformer模型

    Transformer模型自其問世以來,自然語言處理(NLP)領域取得了巨大的成功,并成為了許多先進模型(如BERT、GPT等)的基礎。本文將深入解讀如何使用PyTorch框架搭建T
    的頭像 發表于 07-02 11:41 ?1483次閱讀

    請問電腦端Pytorch訓練的模型如何轉化為能在ESP32S3平臺運行的模型

    由題目, 電腦端Pytorch訓練的模型如何轉化為能在ESP32S3平臺運行的模型? 如何把這個Pytorch模型燒錄到ESP32S3上去?
    發表于 06-27 06:06

    PyTorch安裝教程超詳細

    PyTorch是一個用于機器學習和深度學習的開源庫,它提供了豐富的工具和接口,幫助開發者快速構建深度學習模型。本文將介紹如何在不同操作系統安裝PyTorch,并詳細講解每個步驟。 W
    的頭像 發表于 12-07 11:19 ?2158次閱讀