yolov5在jetson nano上的部署 deepstream

news/2024/7/11 1:18:36 标签: pytorch, 计算机视觉, YOLO, deepstream

文章目录

    • 前言
    • deepstream的安装
      • 1、SDKManager
      • 2. 命令行安装
    • yolov5项目克隆和安装(电脑上完成!)
      • 1)安装Anaconda和PyTorch
      • 2) 克隆yolov5项目
      • 3) 安装所需库
      • 4) 下载预训练权重文件
      • 5) 安装测试
      • 6)训练自己的数据集
    • 生成wts文件(在电脑上完成!)
      • 1) 克隆tensorrtx
      • 2) 生成yolov5s.wts文件
    • 生成yolov5s.engine文件(在开发板上完成!)
      • 1) 克隆tensorrtx
      • 2) 编译tensorrtx/yolov5
      • 3) copy文件'yolov5s.wts' 文件到tensorrtx/yolov5/build目录下
      • 4) 生成yolov5s.engine
    • 使用DeepStream部署yolov5s
      • 1)拷贝yolov5 deepstream文件
      • 2) 拷贝yolov5.engine
      • 3)编译
    • 部署测试
      • 1)测试视频文件推理
      • 2)USB摄像头视频测试
      • 3) CSI摄像头视频测试

最近用到deepstream,要将yolov5部署在开发板上,就总结了一下部署方法。

前言

deepstream 的安装网络上有很多教程,这里就简单说一下。我使用的安装方式就是用 NVIDIA 官方的一个软件 SDKManager,这个软件可以重刷系统,也可以在原有系统的前提下刷入相关依赖包,例如:CUDA,tensorr,deepstream等。

deepstream_5">deepstream的安装

1、SDKManager

最推荐的就是使用 SDKManager 刷,但是要注意开发板必须得先进入recovery模式。
这个方法其实很简单,就是无脑下一步

注意一:在选择刷入的东西时,如果你不打算重装系统,必须把Jestson OS取消勾选。

在这里插入图片描述
注意二:如果你要更换 jetpack 版本,必须重刷系统。

注意三:在这一步选择手动设置(Manual Setup)在这里插入图片描述
注意四:一定要选个可传输数据的 usb 线,不能是只充电的。要不然和PC端虚拟机连不上。

注意五:所有步骤都在PC端虚拟机上执行,只需要将开发板和PC通过 USB 连上就好。即输入 lsusb
会显示 Nvidia Crop 即可。

2. 命令行安装

1) Install Dependencies

sudo apt install \
libssl1.0.0 \
libgstreamer1.0-0 \
gstreamer1.0-tools \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstrtspserver-1.0-0 \
libjansson4=2.11-1

2) Install the DeepStream SDK

Using the DeepStream tar package

  1. 下载 DeepStream 5.1 Jetson tar package deepstream_sdk_v5.1.0_jetson.tbz2, 到 Jetson Nano.
  2. 输入以下命令以提取并安装DeepStream SDK:
sudo tar -xvf deepstream_sdk_v5.1.0_jetson.tbz2 -C /
cd /opt/nvidia/deepstream/deepstream-5.1
sudo ./install.sh
sudo ldconfig

3) DeepStream测试

执行命令

cd /opt/nvidia/deepstream/deepstream-5.1/sources/objectDetector_Yolo

执行编译命令:

CUDA_VER=10.2 make -C nvdsinfer_custom_impl_Yolo

编辑文件prebuild.sh,注释掉除yolov3-tiny的语句
执行:

./prebuild.sh

下载yolov3-tiny.cfg和yolov3-tiny.weights

执行命令

deepstream-app -c deepstream_app_config_yoloV3_tiny.txt

yolov5项目克隆和安装(电脑上完成!)

1)安装Anaconda和PyTorch

安装pytorch1.7以上版本

2) 克隆yolov5项目

克隆项目到本地

git clone https://github.com/ultralytics/yolov5.git

3) 安装所需库

使用清华镜像源:

在yolov5路径下执行:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

注意:simple 不能少, 是 https 而不是 http

4) 下载预训练权重文件

下载yolov5s.pt,yolov5m.pt,yolov5l.pt,yolov5x.pt权重文件,并放置在weights文件夹下

5) 安装测试

测试图片:

在yolov5路径下执行

python detect.py --source ./data/images/ --weights weights/yolov5s.pt --conf 0.4

6)训练自己的数据集

这个网上很多教程,也不算复杂,就不写啦。

生成wts文件(在电脑上完成!)

1) 克隆tensorrtx

git clone https://github.com/wang-xinyu/tensorrtx.git

2) 生成yolov5s.wts文件

// 下载权重文件yolov5s.pt // 将文件tensorrtx/yolov5/gen_wts.py 复制到ultralytics/yolov5 // ensure

python gen_wts.py -w yolov5s.pt -o yolov5s.wts

生成yolov5s.engine文件(在开发板上完成!)

1) 克隆tensorrtx

git clone https://github.com/wang-xinyu/tensorrtx.git

2) 编译tensorrtx/yolov5

mkdir build
cd build
cmake ..
make

注意: by default, yolov5 script generate model with batch size = 1, FP16 mode and s model.

#define USE_FP16 // comment out this if want to use FP32
#define DEVICE 0 // GPU id
#define NMS_THRESH 0.4
#define CONF_THRESH 0.5
#define BATCH_SIZE 1
#define NET s // s m l x

如果你需要改变上述默认参数,可在编译前修改文件 yolov5.cpp

另外,可改变yololayer.h中的参数

static constexpr int CLASS_NUM = 80;
static constexpr int INPUT_H = 608;
static constexpr int INPUT_W = 608;

3) copy文件’yolov5s.wts’ 文件到tensorrtx/yolov5/build目录下

4) 生成yolov5s.engine

// For example yolov5s
sudo ./yolov5 -s yolov5s.wts yolov5s.engine s
sudo ./yolov5 -d yolov5s.engine ../samples

使用DeepStream部署yolov5s

deepstream_168">1)拷贝yolov5 deepstream文件

sudo chmod -R 777 /opt/nvidia/deepstream/deepstream-5.1/sources/

拷贝yolov5 deepstream文件yolov5.zip到/opt/nvidia/deepstream/deepstream-5.1/sources/
然后,解压文件

cd /opt/nvidia/deepstream/deepstream-5.1/sources/
unzip yolov5.zip

2) 拷贝yolov5.engine

cp /home/nano/tensorrtx/yolov5/build/yolov5s.engine 
/opt/nvidia/deepstream/deepstream-5.1/sources/yolov5

备注:yolov5 deepstream文件yolov5.zip的来源 https://github.com/marcoslucianops/DeepStream-Yolo 修改了文件夹DeepStream-Yolo/external/yolov5/nvdsinfer_custom_impl_Yolo下的文 yololayer.h 和yololayer.cu使其可以在YOLOv5 V4.0上工作。

3)编译

cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolov5
CUDA_VER=10.2 make -C nvdsinfer_custom_impl_Yolo

注意: 针对自己的数据集

可修改config_infer_primary.txt中的参数

num-detected-classes=80

以及类别名称文件labels.txt
另外,
如要改变NMS_THRESH, 编辑文件nvdsinfer_custom_impl_Yolo/nvdsparsebbox_Yolo.cpp并重新编译

#define kNMS_THRESH 0.45

如要改变CONF_THRESH, 编辑文件config_infer_primary.txt

[class-attrs-all]
pre-cluster-threshold=0.25

部署测试

1)测试视频文件推理

cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolov5
deepstream-app -c deepstream_app_config.txt

2)USB摄像头视频测试

摄像头简单检测指令:

ls /dev/video*

安装v4l-utils工具:

sudo apt install v4l-utils

检测摄像头比较完整信息的指令:

v4l2-ctl --list-devices

摄像头更细致规格的查看指令:

v4l2-ctl --device=/dev/video0 --list-formats-ext
v4l2-ctl --device=/dev/video1 --list-formats-ext

YOLOv5 USB摄像头视频测试命令:

deepstream-app -c source1_usb_dec_infer_yolov5.txt

3) CSI摄像头视频测试

deepstream-app -c source1_csi_dec_infer_yolov5.txt

http://www.niftyadmin.cn/n/1223321.html

相关文章

游戏外挂设计技术探讨2(zz)

游戏外挂设计技术探讨2(转贴) 三、外挂技术综述 可以将开发游戏外挂程序的过程大体上划分为两个部分: 前期部分工作是对外挂的主体游戏进行分析,不同类型的外挂分析主体游戏的内容也不相同。如外挂为上述谈到的外挂类型中的第一类…

android科学计数法转换成数字_计算机基础知识: 信息数字化

计算机、数据与信息无符号位数的表示(一)、四种常用的数制及它们之间的相互转换:进制基数基数个数权进数规律十进制0、1、2、3、4、5、6、7、8、91010i逢十进一二进制0、122i逢二进一八进制0、1、2、3、4、5、6、788i逢八进一十六进制0、1、2、3、4、5、6、7、8、9、…

gstreamer安装(Windows + VS2022)

gstreamer安装(Windows VS2022)gstreamer的下载gstreamer的安装配置系统环境变量复制glibconfig.h文件检测是否安装成功vs2022配置gstreamer的下载 全部版本下载地址 https://gstreamer.freedesktop.org/data/pkg/windows/ 我使用的版本 runtime包&…

校园网络安全设计

校园网网络是一个分层次的拓扑结构,因此网络的安全防护也需采用分层次的拓扑防护措施。即一个完整的校园网网络信息安全解决方案应该覆盖网络的各个层次,并且与安全管理相结合。转载于:https://blog.51cto.com/405214606/143008

gstreamer---basic-tutorial-1

没有什么比在屏幕上打印“Hello World”更好的了&#xff01; 但是由于我们正在处理多媒体框架&#xff0c;因此我们将播放视频。 不要被下面的代码量吓到&#xff1a;只有4行可以做真正的工作&#xff0c;其余的是清理代码。 #include <gst/gst.h> #include<stdio…

三维空间长度温度数量_模温机是如何控制模具温度,必须要遵守的原则

模具温度对胶件的成型质量、成型效率有着较大的影响。在温度较高的模具里&#xff0c;熔融胶料的流动性较好&#xff0c;有利于胶料充填强&#xff0c;获取高质量的胶件外观表面&#xff0c;但会使胶料固化时间变长&#xff0c;顶出时易变形&#xff0c;对结晶性胶料而言&#…

也谈WINDOWS下分区类型变为RAW

作者&#xff1a;张宇&#xff0c;北亚硬盘数据恢复中心&#xff0c;转载请联系作者&#xff0c;如果实在不想联系作者&#xff0c;至少请保留版权&#xff0c;谢谢。看到网上有很多人提到&#xff0c;在正常使用电脑的情况下&#xff0c;分区类型变为RAW&#xff0c;双击时提示…

adb查看版本号_adb使用第4课(查找包名)

通过adb查询设备里面的包名1、先手动打开对应的APP应用2、输入&#xff1a;adb shell dumpsys window w |findstr / |findstr name这样就可以查看到酷我音乐的包名&#xff1a;cn.kuwo.kwmusiccar但是找到包名后想知道这个包名的版本信息和对应的安装位置&#xff0c;那该怎么办…