【nvidia jetson xavier】Deepstream Yolox,Yolov4,Yolov5模型部署

简介: 【nvidia jetson xavier】Deepstream Yolox,Yolov4,Yolov5模型部署

Deepstream YoloX 模型部署

https://github.com/Megvii-BaseDetection/YOLOX

https://github.com/nanmi/YOLOX-deepstream

Deepstream Yolov4 模型部署

https://github.com/NVIDIA-AI-IOT/yolov4_deepstream

Deepstream Yolov5 模型部署

https://github.com/DanaHan/Yolov5-in-Deepstream-5.0

https://blog.csdn.net/zong596568821xp/article/details/109444343

这里主要以yolov5为例,其他两个可以是同样的流程。

Geneate yolov5 engine model

1.在Jetson 平台安装Yolov5环境

https://www.runoob.com/w3cnote/python-pip-install-usage.html

安装pip

sudo apt-get install python-pip

升级pip

pip install -U pip

【报错】python 2.7版本不符合requirements.txt中包的版本

ubuntu 修改python默认版本,系统级修改

https://blog.csdn.net/White_Idiot/article/details/78240298

基于软链接:

先删除默认的Python软链接:

sudo rm /usr/bin/python

然后创建一个新的软链接指向需要的Python版本:

sudo ln -s /usr/bin/python3.5 /usr/bin/python

安装requirements.txt遇到报错,重新安装pip:

sudo apt-get install python-pip

根据安装提示卸载多余包

sudo apt autoremove

再次尝试还是失败,尝试卸载pip重装:

sudo apt remove python-pip

仍然报错:

ImportError: No module named pip

尝试:

sudo apt-get install python3-pip

成功安装pip3,然后执行:

pip3 install -r requirements.txt

配置yolov5运行环境

【报错】matplotlab无法安装:

更换yolov5配置方法:

https://github.com/marcoslucianops/DeepStream-Yolo/blob/master/YOLOv5-5.0.md

配置yolov5 Requirements

Matplotlib (for Jetson plataform)

sudo apt-get install python3-matplotlib

PyTorch (for Jetson plataform)

wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.8.0-cp36-cp36m-linux_aarch64.whl 
#如果因为网络问题无法下载,可以先下载好torch-1.8.0-cp36-cp36m-linux_aarch64.whl,然后复制过去
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
pip3 install Cython
pip3 install numpy torch-1.8.0-cp36-cp36m-linux_aarch64.whl

TorchVision (for Jetson platform)

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.9.0
python3 setup.py install --user

Convert PyTorch model to wts file

  1. Download repositories
git clone https://github.com/wang-xinyu/tensorrtx.git
git clone https://github.com/ultralytics/yolov5.git
  1. Download latest YoloV5 (YOLOv5s, YOLOv5m, YOLOv5l or YOLOv5x) weights to yolov5 folder (example for YOLOv5s)
wget https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt -P yolov5/
  1. Copy gen_wts.py file (from tensorrtx/yolov5 folder) to yolov5 (ultralytics) folder
cp tensorrtx/yolov5/gen_wts.py yolov5/gen_wts.py
  1. Generate wts file
cd yolov5
python3 gen_wts.py yolov5s.pt

yolov5s.wts file will be generated in yolov5 folder

【错误】No module named tqdm

pip install tqdm

【错误】No module named seaborn

pip3 install seaborn

因matplotlib无法正常安装导致seaborn无法安装,尝试:

python --version
python -m pip install seaborn

再次因matplotlib失败

尝试:

https://toptechboy.com/

https://blog.csdn.net/LYiiiiiii/article/details/119052823

sudo apt-get install python3-seaborn

再次执行

python3 gen_wts.py yolov5s.pt

成功!

Convert wts file to TensorRT model

根据https://github.com/DanaHan/Yolov5-in-Deepstream-5.0的说明,在Build tensorrtx/yolov5之前还需要:

Important Note:

You should replace yololayer.cu and hardswish.cu file in tensorrtx/yolov5

  1. Build tensorrtx/yolov5
cd tensorrtx/yolov5
mkdir build
cd build
cmake ..
make
  1. Move generated yolov5s.wts file to tensorrtx/yolov5 folder (example for YOLOv5s)
cp yolov5/yolov5s.wts tensorrtx/yolov5/build/yolov5s.wts
  1. Convert to TensorRT model (yolov5s.engine file will be generated in tensorrtx/yolov5/build folder)
sudo ./yolov5 -s yolov5s.wts yolov5s.engine s
  1. Create a custom yolo folder and copy generated file (example for YOLOv5s)
mkdir /opt/nvidia/deepstream/deepstream-5.1/sources/yolo
cp yolov5s.engine /opt/nvidia/deepstream/deepstream-5.1/sources/yolo/yolov5s.engine

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

#define USE_FP16  // set USE_INT8 or USE_FP16 or USE_FP32
#define DEVICE 0  // GPU id
#define NMS_THRESH 0.4
#define CONF_THRESH 0.5
#define BATCH_SIZE 1

Edit yolov5.cpp file before compile if you want to change this parameters.

We can get ‘yolov5s.engine’ and ‘libmyplugin.so’ here for the future use.

【!】切换使用https://github.com/DanaHan/Yolov5-in-Deepstream-5.0的deepstream配置进行之后的nvdsinfer_custom_impl_yolo plugin等操作(也可以按https://github.com/marcoslucianops/DeepStream-Yolo/blob/master/YOLOv5-5.0.md继续)

在Yolov5-in-Deepstream-5.0/Deepstream 5.0下执行

CUDA_VER=10.2 make -C nvdsinfer_custom_impl_Yolo

并将deepstream_app_config_yoloV5.txt文件中的deepstream-5.0全部修改为deepstream-5.1

Testing model

【报错】无labels.txt文件

在/opt/nvidia/deepstream/deepstream-5.1/sources/objectDetector_Yolo文件夹下找到labels.txt文件复制到Yolov5-in-Deepstream-5.0/Deepstream 5.0

【报错】原因config_infer_primary_yoloV5.txt中出现路径错误

修改config_infer_primary_yoloV5.txt中的custom-lib-path,删除 ‘objectDetector_Yolo_V5/’

执行

deepstream-app -c deepstream_app_config_yoloV5.txt

【报错】有关engine文件

将之前生成的yolov5s.engine文件复制到Yolov5-in-Deepstream-5.0/Deepstream 5.0

仍然报错…

【报错】关于config_infer_primary_yoloV5.txt文件:NVDSINFER_CONFIG_FAILED

未知错误,不知道如何修改,更换部署方法:

【更换部署方法】https://github.com/marcoslucianops/DeepStream-Yolo/blob/master/YOLOv5-5.0.md

Compile nvdsinfer_custom_impl_Yolo

  1. Run command
sudo chmod -R 777 /opt/nvidia/deepstream/deepstream-5.1/sources/
  1. Donwload my external/yolov5-5.0 folder and move files to created yolo folder
  2. Compile lib
  • x86 platform
cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolo
CUDA_VER=11.1 make -C nvdsinfer_custom_impl_Yolo
  • Jetson platform
cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolo
CUDA_VER=10.2 make -C nvdsinfer_custom_impl_Yolo

Testing model

Use my edited deepstream_app_config.txt and config_infer_primary.txt files available in my external/yolov5-5.0 folder

Run command

deepstream-app -c deepstream_app_config.txt

YoloV5部署成功!


AIEarth是一个由众多领域内专家博主共同打造的学术平台,旨在建设一个拥抱智慧未来的学术殿堂!【平台地址:https://devpress.csdn.net/aiearth】 很高兴认识你!加入我们共同进步!

目录
相关文章
|
芯片 异构计算 内存技术
关于SPI协议,看这一篇文章就够了!
关于SPI协议,看这一篇文章就够了!
2081 0
关于SPI协议,看这一篇文章就够了!
|
Linux
百度搜索:蓝易云【Centos7配置webrtc-streamer环境教程。】
请注意,webrtc-streamer还有其他配置选项和功能,您可以参考其官方文档或访问其项目页面以获取更多信息和用法示例。
751 0
|
Oracle 关系型数据库 数据库
|
存储 并行计算 安全
【Qt 线程】探索Qt线程编程的奥秘:多角度深入剖析(二)
【Qt 线程】探索Qt线程编程的奥秘:多角度深入剖析
887 0
|
监控 Linux C++
【实战指南】4步实现C++插件化编程,轻松实现功能定制与扩展(2)
本文是《4步实现C++插件化编程》的延伸,重点介绍了新增的插件“热拔插”功能。通过`inotify`接口监控指定路径下的文件变动,结合`epoll`实现非阻塞监听,动态加载或卸载插件。核心设计包括`SprDirWatch`工具类封装`inotify`,以及`PluginManager`管理插件生命周期。验证部分展示了插件加载与卸载的日志及模块状态,确保功能稳定可靠。优化过程中解决了动态链接库句柄泄露问题,强调了采纳用户建议的重要性。
491 99
【实战指南】4步实现C++插件化编程,轻松实现功能定制与扩展(2)
|
10月前
|
人工智能 安全 虚拟化
企业级Win11纯净部署指南|VMware虚拟机安装+GPT分区优化+绕过限制详解(小白必看)
Windows 11 是微软推出的新一代操作系统,以其直观交互和 AI 技术为核心升级亮点。界面采用圆角设计与居中任务栏布局,支持多窗口贴靠分屏、虚拟桌面功能,大幅提升多任务处理效率。系统深度集成了 Copilot 智能助手,提供语音写作、照片编辑等便捷功能,并通过 DirectStorage 和 DirectX 12 Ultimate 技术优化游戏体验。本文详细介绍 Windows 11 的下载、U盘制作及安装步骤,帮助用户快速上手全新系统。
2034 37
|
SQL 存储 关系型数据库
(九)MySQL之MVCC机制:为什么你改了的数据我还看不见?
在《MySQL锁机制》这篇文章中,咱们全面剖析了MySQL提供的锁机制,对于并发事务通常可以通过其提供的各类锁,去确保各场景下的线程安全问题,从而能够防止脏写、脏读、不可重复读及幻读这类问题出现。
578 0
|
数据采集 PyTorch 算法框架/工具
sam模型迁移昇腾训练loss不收敛问题的解决办法
在将SAM模型迁移到昇腾平台时,遇到了精度问题。具体表现为NPU训练的loss图从一开始就未收敛,而GPU则正常收敛。通过使用Ascend开源仓的msprobe工具进行精度对比,发现NPU丢失了image_embedding的梯度,原因在于torch_npu版本与PyTorch不匹配,导致`repeat_interleave_backward_tensor`函数调用失败。最终通过选择与PyTorch配套的torch_npu版本解决了问题,loss图恢复正常。
|
存储 算法 NoSQL
Zstandard (zstd)压缩算法在JAVA上的使用
Zstandard (zstd)压缩算法在JAVA上的使用
2521 0
|
安全 网络安全 SDN
网络安全中的蜜罐技术与威胁诱捕:主动防御的新篇章
【7月更文挑战第6天】随着网络安全威胁的日益严峻,蜜罐技术与威胁诱捕技术作为主动防御的重要手段,正逐步成为网络安全领域的新宠。通过不断的技术创新和实践应用,我们有理由相信,在未来的网络安全战争中,蜜罐与威胁诱捕技术将发挥越来越重要的作用,为我们的网络安全保驾护航。
1077 6

热门文章

最新文章