日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DeepStream5.0系列之yolov5使用

發布時間:2023/12/14 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DeepStream5.0系列之yolov5使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0 背景
本文旨在對 deepstream 中使用 yolov5 的方法做一介紹

測試環境: Ubuntu 18.04, CUDA 10.2, T4, jetpack4.4

軟件版本:yolov5:3.0,3.1

項目地址:https://github.com/DanaHan/Yolov5-in-Deepstream-5.0

1 安裝流程

1.1 創建 conda 環境
Tips:如果是在 jetson 設備上,可以不用創建 conda 虛擬環境

conda create -n yolov5 python=3.6

1.2 下載源碼

mkdir deepstream_yolov5 cd deepstream_yolov5 git clone https://github.com/DanaHan/Yolov5-in-Deepstream-5.0.git git clone https://github.com/wang-xinyu/tensorrtx.git git clone https://github.com/ultralytics/yolov5.git

1.3 安裝環境
注意:這塊實測 3.0 版本和 3.1 版本的沒有問題,最新的 4.0 版本可能會有檢測框問題

cd yolov5 git checkout v3.1 #切換到3.1版本 pip install scikit-build pip install -r requirements.txt

2 模型準備

2.1 下載預訓練模型
在 yolov5 界面下載預訓練模型(3.1版本模型),這里我們以 YOLOv5x 為例介紹
地址:https://github.com/ultralytics/yolov5
下載好模型后放到 yolov5/weights 目錄下

2.2 生成 engine

cd yolov5 cp ../tensorrtx/yolov5/gen_wts.py ./

修改 gen_wts.py 中的模型名稱,需要根據自己用的模型做對應修改,主要是第8行和第11行

import torch import struct from utils.torch_utils import select_device# Initialize device = select_device('cpu') # Load model model = torch.load('weights/yolov5x.pt', map_location=device)['model'].float() # load to FP32 model.to(device).eval()f = open('yolov5x.wts', 'w') f.write('{}\n'.format(len(model.state_dict().keys()))) for k, v in model.state_dict().items():vr = v.reshape(-1).cpu().numpy()f.write('{} {} '.format(k, len(vr)))for vv in vr:f.write(' ')f.write(struct.pack('>f',float(vv)).hex())f.write('\n')

運行后會在本地生成 yolov5x.wts 文件,然后拷貝到 Yolov5-in-Deepstream-5.0 文件夾中

cp yolov5x.wts ../Yolov5-in-Deepstream-5.0 cd ../Yolov5-in-Deepstream-5.0

修改 yolov5.cpp 文件,將 NET 宏改成自己對應的模型

#define NET x // s m l x
然后編譯

mkdir build cd build cmake .. make sudo ./yolov5 -s

運行后會生成 yolov5x.engine 和 libmyplugin.so 文件,首先檢查下engine運行結果是否正確

創建測試圖片

mkdir …/samples

網上下載兩張 coco 數據集圖片

sudo ./yolov5 -d ../samples

輸出如下

[11/02/2020-15:08:27] [W] [TRT] Current optimization profile is: 0. Please ensure there are no enqueued operations pending in this context prior to switching profiles
9ms
8ms
并且可以在build目錄下生成檢測結果圖片,格式是_name.jpg,打開圖片可以看到檢測框正常

驗證完畢后,將生成的模型和動態庫拷貝到 deepstream 目錄中

cp yolov5x.engine ../Deepstream\ 5.0/ cp libmyplugins.so ../Deepstream\ 5.0/

3 deepstream部署
在 Deepstream 5.0/nvdsinfer_custom_impl_Yolo 目錄中運行 make 編譯,生成 libnvdsinfer_custom_impl_Yolo.so 文件

返回上一級,修改 config_infer_primary_yoloV5.txt 文件,總共有以下幾處需要修改

model-engine-file=yolov5s.engine --> model-engine-file=yolov5x.engine
custom-lib-path=objectDetector_Yolo_V5/nvdsinfer_custom_impl_Yolo/libnvdsinfer_custom_impl_Yolo.so --> custom-lib-path=nvdsinfer_custom_impl_Yolo/libnvdsinfer_custom_impl_Yolo.so
原工程中缺少 labels.txt 文件,把 coco 數據集的 80 類 labels 拷貝過來即可

然后根據自己的需求,修改 deepstream_app_config_yoloV5.txt 即可

然后載入定制化的動態庫,并運行即可

LD_PRELOAD=./libmyplugins.so deepstream-app -c deepstream_app_config_yoloV5.txt

會重新生成 engine 文件,并可以看到運行結果

注意,engine 文件要在 Yolov5-in-Deepstream-5.0 工程中生成,在 tensorrtx 工程中生成 engine 再導過來運行會出現一大堆框

————————————————
版權聲明:本文為CSDN博主「ZONG_XP」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zong596568821xp/article/details/109444343

附相關資源文件(包含labels.txt、yolov5s.wts、libmyplugins.so、yolov5s.engine):
https://download.csdn.net/download/qq_42393859/16061529

總結

以上是生活随笔為你收集整理的DeepStream5.0系列之yolov5使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。