首页 > 其他分享 >【jetson nano】yolov5环境配置tensorrt部署加速

【jetson nano】yolov5环境配置tensorrt部署加速

时间:2024-06-02 15:21:35浏览次数:24  
标签:yolov5 wts nano sudo tensorrt dev install yolov5s

安装pytorch

Nano上预装的Jetpack版本为4.6.1,Python为3.6.9,CUDA环境为10.2。在PyTorch for Jetson中可以下载不同版本的torch,torch<=1.10.0。

1 安装torch1.8.0

# substitute the link URL and wheel filename from the desired torch version above
wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.8.0-cp36-cp36m-linux_aarch64.whl
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev
pip3 install 'Cython<3'
pip3 install numpy torch-1.8.0-cp36-cp36m-linux_aarch64.whl

如果安装numpy时报错,可以先更新pip

pip3 install --upgrade pip

2 编译torchvision0.9.0

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libopenblas-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  # the torchvision version  
python3 setup.py install --user
cd ../  # attempting to load torchvision from build dir will result in import error

配置yolov5环境

1 下载yolov5-6.0的代码及权重yolov5s.pt

由于yolov5的最新版本中要安装包ultralytics,总是报错,没有版本,所以选择yolov5-6.0。

2 替换清华镜像源

创建.pip文件夹

mkdir ~/.pip

使用vim打开pip.conf配置文件

vim ~/.pip/pip.conf

修改pip.conf配置文件

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
按ESC,然后输入:wq即可保存修改

3 安装包

pip3 install -r requirements.txt

4 运行程序

python3 detect.py

如果出现了killed程序终止,可以关掉一些不用的程序,或者设置交换分区

设置交换分区

1 安装Jtop监控运行

执行安装命令

sudo pip3 install jetson-stats

安装完成后,终端运行

sudo jtop

2 增加Swap分区大小

创建swap文件

sudo fallocate -l 4G swapfile

锁定文件的root权限,防止普通用户能够访问该文件,以免造成重大的安全隐患:

sudo chmod 600 swapfile

将文件标记为交换空间

sudo mkswap swapfile

启用该交换文件

sudo swapon swapfile

这时,我们可以通过jtop再次查看swp增加了4g,Dsk也少了4g空间。


如果我们重新启动,服务器不会自动保留swap设置,但是dsk的空间已经减少了,我们可以通过以下指令还原

sudo rm -rf swapfile

我们可以通过将swap文件添加到/etc/fstab文件中来永久保存。备份/etc/fstab文件以防出错:

sudo cp /etc/fstab /etc/fstab.bak

将swap文件信息添加到/etc/fstab文件的末尾:

echo 'swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

这样就保留了swap文件。

配置cuda10.2环境

vim打开配置文件

sudo vim ~/.bashrc

在此文件中添加以下信息

export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_ROOT=/usr/local/cuda

更新

source ~/.bashrc

此时使用 “nvcc -V” 命令,就可以看到 cuda 的版本号了。

安装tensorrtx

下载yolov5权重和tensorrtx

git clone -b v6.0 https://github.com/ultralytics/yolov5.git
git clone https://github.com/wang-xinyu/tensorrtx.git

拷贝tensorrtx项目中的gen_wts.py到yolov5项目中,利用gen_wts.py生成.wts权重

// clone code according to above #Different versions of yolov5
// download https://github.com/ultralytics/yolov5/releases/download/v6.0/yolov5s.pt
cp {tensorrtx}/yolov5/gen_wts.py {ultralytics}/yolov5
cd {ultralytics}/yolov5
python gen_wts.py -w yolov5s.pt -o yolov5s.wts
// a file 'yolov5s.wts' will be generated.

方法1:使用tensorrt c++推理:build tensorrtx/yolov5然后运行

cd {tensorrtx}/yolov5/
// update CLASS_NUM in yololayer.h if your model is trained on custom dataset
mkdir build
cd build
cp {ultralytics}/yolov5/yolov5s.wts {tensorrtx}/yolov5/build
cmake ..
make
sudo ./yolov5 -s [.wts] [.engine] [n/s/m/l/x/n6/s6/m6/l6/x6 or c/c6 gd gw]  // serialize model to plan file
sudo ./yolov5 -d [.engine] [image folder]  // deserialize and run inference, the images in [image folder] will be processed.
// For example yolov5s
sudo ./yolov5 -s yolov5s.wts yolov5s.engine s
sudo ./yolov5 -d yolov5s.engine ../samples
// For example Custom model with depth_multiple=0.17, width_multiple=0.25 in yolov5.yaml
sudo ./yolov5 -s yolov5_custom.wts yolov5.engine c 0.17 0.25
sudo ./yolov5 -d yolov5.engine ../samples

方法2:使用tensorrt python推理

// install python-tensorrt, pycuda, etc.
// ensure the yolov5s.engine and libmyplugins.so have been built
python yolov5_trt.py

// Another version of python script, which is using CUDA Python instead of pycuda.
python yolov5_trt_cuda_python.py

 

 

参考

1. jeston nano 刷机及开发环境搭建(二)

2. 在Pi和Jetson nano上运行深度网络,程序被Killed

 

标签:yolov5,wts,nano,sudo,tensorrt,dev,install,yolov5s
From: https://www.cnblogs.com/Fish0403/p/18218385

相关文章

  • Ubuntu22.04安装YOLOv5,anaconda,cuda,pycharm步骤
     主要是牛马打工人最近突然接到通知,说要做一个人脸识别的功能,然后我作为“nm”就被迫接了,有一说一,这玩意儿真是ex,因为我笨,看不懂,而且大多数都是因为,真nm服了,为了以后的打工牛,少走弯路,我就想着做一个步骤一.先准备准备(在主目录下)因为看教程时总是纠结安装的路径,之前看教......
  • 【jetson nano】烧录系统
    烧录固件 烧录固件是为了让板子用tf卡作为系统启动(非板载启动),一般来说只需要刷写一遍。安装vm,找到虚拟机镜像,解压part01就能获取镜像。 打开vm,打开此虚拟机镜像,账号clb,密码为123456短接23脚进入烧录模式,使用Micro-USB连接线连接Nano和电脑,然后DC电源上电。可以看到电源......
  • YOLOv5改进策略|实战应用案例|YOLOv5苹果成熟度检测 ,准确率提升4.6%
       本⽂提出了⼀种基于YOLOv5s-BC的苹果检测实时检测⽅法。通过添加新的检测头并结合CA和BiFPN模块优化YOLOv5s⽹络模型,可以有效提取⽬标苹果的图像特征,增强对较⼩⽬标苹果的检测能⼒。详细结论总结如下。        YOLOv5-BC模型在测试集上的mAP性能达到88.7%,⽐......
  • YOLOv5改进策略|实战应用案例|YOLOv5机场安全围栏检查,破损围栏检测,YOLOv5平均精度 (AP
            为了确保机场的安全,必须保护空侧免受未经授权的访问。为此,通常使⽤安全围栏,但需要定期检查以发现损坏情况。然⽽,由于⼈类专家⽇益短缺以及⼤量的⼈⼯⼯作,因此需要⾃动化⽅法。⽬的是在⾃主机器⼈的帮助下⾃动检查围栏是否损坏。在这项⼯作中,我们探索对......
  • YOLOv5改进 | 注意力机制 | 添加全局注意力机制 GcNet【附代码+小白必备】
    ......
  • 【Yolov5】简单使用
    训练部分配置训练集目录(可以是从标注平台标注后生成的标签与图片):|--car/--images/--train#训练集的图片--val #验证集的图片,只要有图片就可以--lables/#特征标签--train#txt特征文件--val #txt特征文件...cache文件#......
  • Yolov5——训练目标检测模型详解(含完整源码)
    项目的克隆打开yolov5官网(GitHub-ultralytics/yolov5atv5.0),下载yolov5的项目:环境的安装(免额外安装CUDA和cudnn)打开anaconda的终端,创建新的名为yolov5的环境(python选择3.8版本):condacreate-nyolov5python=3.8执行如下命令,激活这个环境:condaactivateyolov5......
  • YOLOv5/v7 引入 YOLOv8 的 C2f 模块
    1.介绍YOLOv8是Ultralytics团队于2022年10月发布的最新一代目标检测模型。YOLOv8在YOLOv7的基础上进行了多项改进,包括引入C2f模块、改进PathAggregationNetwork(PAN)结构、优化LabelAssigning算法等。C2f模块是YOLOv8中引入的主要创新之一。C2f模块......
  • YOLOv5/v7 引入 RepVGG 重参数化模块
    YOLOv5/v7中引入RepVGG重参数化模块1.介绍RepVGG是由MegviiResearch团队于2021年提出的深度卷积神经网络架构,它通过重参数化VGGNet架构,显著提高了模型的性能和效率。RepVGG架构在YOLOv5和YOLOv7等目标检测模型中得到了广泛应用,进一步提升了模型的精度和速度......
  • 基于YOLOv5+LPRNet进行车牌检测及识别
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景随着智能交通系统的不断发展,车牌检测与识别技术成为了其中不可或缺的一部分。准确、快速地识别车牌信息对于交通......