当前位置:   article > 正文

Jetson nano配置环境、部署yolov5-seg全过程_jetsonyolov5

jetsonyolov5

目录

Jetson nano配置环境和部署yolov5-seg全过程:

 一、Jetson nano环境配置

 1.下载Jetpack镜像

 2.镜像烧录

3.安装jtop

4.配置中 文输入法

5.CUDA配置

6.修改nano的Swap内存

7.管理python 

 二、部署自己的yolov5-seg项目

 1.配置pytorch1.7、torchvision0.8 

2.配置yolov5环境 

 3.使用tensorrtx进行加速推理


Jetson nano配置环境和部署yolov5-seg全过程:

  1. 准备SD卡:Jetson nano要求最低配置16G的SD卡,整个系统刷完SD卡后被用了大概13G,后期还需要安装一些其他的机器学习框架,所以最低需要32G的SD卡,建议使用64G的SD卡。
  2. 烧写镜像:在烧写镜像前,需要先备份好SD卡中的数据,格式化SD卡后烧写镜像。
  3. 配置nano环境: 设置CUDA、修改显存、配置torch等。
  4. 配置yolov5环境,下载各种依赖包。
  5. 使用trnsorrts进行推理加速。

        文件下载

      (1)本文使用的jetpack包(4.6)和烧写软件:

        链接:https://pan.baidu.com/s/1ae8Iz7FoRTlRyE3yUJwpmg?pwd=ie8n 
        提取码:ie8n 

      (2)本文使用的torch、torchvision、matplotlib包:

        链接:https://pan.baidu.com/s/1R2eHjwkM1z7olhevoNw7eA 
        提取码:cdo7

 一、Jetson nano环境配置

 1.下载Jetpack镜像

        可以在官网选择所需的Jetpack版本镜像进行下载:JetPack Archive | NVIDIA Developericon-default.png?t=N7T8https://developer.nvidia.com/embedded/jetpack-archive

本文选择的是jetpack4.6版本进行试验(4.61-4.64版本未在官网上找到版本对应的torch包)

 2.镜像烧录

        准备工具:SD卡,读卡器。

        使用balenaEtcher软件进行镜像烧写(烧写前需要格式化),打开软件后选择文件和插了SD卡的读卡器即可进行烧写,该过程需要十几分钟左右。烧写成功后将SD卡直接插入到nano上,配置一些基本信息即可正常使用。

3.安装jtop

        Jtop可以实时监控jetson相关硬件使用情况的详情信息。在界面中可以显示CPU、GPU、内存、CUDA、Jetpack等的相关信息。

  1. sudo apt install python3-pip
  2. sudo -H pip3 install jetson-stats -i https://pypi.douban.com/simple/ 
  3. sudo jtop 

4.配置中 文输入法

        (1)安装中文输入法软件

  1. sudo apt-get update
  2. sudo apt-get install fcitx fcitx-goolepinyin

        (2)配置中文输入法

  1.   im-config -n fcitx # 配置
  2.   sudo reboot # 重启

        (3)输入法设置:语言设置上选择goole拼音作为中文输入法(ctrl+空格切换中英文)

5.CUDA配置

        Jetson nano在烧录镜像的时候使用的jetpack包中已经包含了CUDA、CUDNN、TensorRT环境,但是还需要我们将CUDA信息写入环境变量中。

  1.  sudo gedit ~/.bashrc
  2.  #文档末尾添加(cuda后面数字为cuda对应版本)
  3.  export CUDA_HOME=/usr/local/cuda-10.2
  4.  export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
  5.  export PATH=/usr/local/cuda-10.2/bin:$PATH
  6.  #保存退出 (配置成功可看出cuda版本信息)
  7. source ~/.bashrc
  8.  nvcc  -V

6.修改nano的Swap内存

  1. #(1)打开nvzramconfig.sh文件
  2. sudo gedit /etc/systemd/nvzramconfig.sh
  3. #(2)修改nvzramconfig.sh文件内容 ( / 2 ==> * 2)
  4. 修改mem = $((("${totalmem}"/2/"${NRDEVICES}")*1024))为mem = $((("${totalmem}"*2/"${NRDEVICES}")*1024))
  5. sudo reboot
  6. free -h # swap已经变为7.7G

7.管理python 

         Jetpack自带了两个python版本,jetpack4.6版本自带的python版本是2.7和3.6,但是默认使用2.7版本,所以我们需要管理系统使用的python版本。

  1. #(1)查看jetson自带python版本 (系统默认使用python2.7版本)
  2. ls /usr/bin/python*
  3. #(2)查看是否配置过python相关信息
  4. update-alternatives --list python
  5. #(3)配置python相关信息
  6. sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
  7. sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
  8. #(4)查看配置信息
  9. update-alternatives --list python
  10. #(5)切换python版本
  11. sudo update-alternatives --config python

 二、部署自己的yolov5-seg项目

 1.配置pytorch1.7、torchvision0.8 

        Jetson nano安装可使用cuda的torch需要在官方下载对应jetpack版本的torch文件包,如果版本不对应会安装不上(torch版本也需要和torchvision版本相对应)。由于属于境外网站,所以下载难度较大,且容易在安装过程出现文件包损坏的情况,这边通过网盘提供torch1.7和torchvision0.8版本的whl文件。

官方网址:

PyTorch for Jetson - Jetson & Embedded Systems / Announcements - NVIDIA Developer Forumsicon-default.png?t=N7T8https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048

  1. #(1)安装
  2. sudo apt-get install libopenblas-base libopenmpi-dev libomp-dev
  3. pip install Cython
  4. pip install numpy xxx.whl
  5. #(2)验证
  6. import torch
  7. print(torch.__version__)
  8. print(torch.version.cuda)
  9. print(torch.backends.cudnn.version())

2.配置yolov5环境 

        (1)修改下载镜像

  1. mkdir ~/.pip
  2. sudo gedit ~/.pip/pip.conf

         (2)在空白文件中输入如下内容保存并退出:

  1. [global]
  2. index-url=http://mirrors.aliyun.com/pypi/simple/
  3. [install]
  4. trusted-host=mirrors.aliyun.com

        (3) 本文推荐将yolov5项目直接拉到Jetson nano中,然后安装yolov5的各种依赖包。有一些安装包会出现暗转失败的问题,可以直接下载符合版本的whl文件进行安装。笔者在实验过程中出现类似torch等一些文件已经安装的库在执行下面的指令后还会下载其他版本的包。解决方法注释掉requirements.txt中已经安装的包。

  1. cd yolov5
  2. pip3 install -r requirements.txt
  3. python3 detect.py --source data/images/bus.jpg --weights yolov5n.pt --img 640 #图片测试

        (4)出现 “Illegal instruction(core dumped)”问题

  1. sudo gedit ~/.bashrc
  2. #末尾添加
  3. export OPENBLAS_CORETYPE=ARMV8
  4. #保存关闭
  5. source ~/.bashrc

 3.使用tensorrtx进行加速推理

 (1)github官网下载的tensorrtx源码(注意:yolov5-v7版本的也需要选择tensorrtx中yolov5-v7版本进行下载,否则后续会报错,无法构建模型)

wang-xinyu/tensorrtx: Implementation of popular deep learning networks with TensorRT network definition API (github.com)icon-default.png?t=N7T8https://github.com/wang-xinyu/tensorrtx

(2) 将xxx.pt权重文件转化为xxx.wts文件

                将下载的tensorrtx项目中的yolov5/gen_wts.py复制到自己yolov5项目的文件下。打开终端:

  1. #1 生成wts文件,把自己的权重文件xxx.pt文件放至此处执行
  2. python3 gen_wts.py -w yolov5n.pt -o yolov5n.wts

(3) 编译 

        1.回到tensorrtx/yolov5目录下

  1. cd ~/tensorrts/yolov5/
  2. mkdir build
  3. cd build

        2.将生成的wts文件移动到刚创建的build目录 

  1. cmake ..
  2. make -j4

        3.如果是自己的项目需要修改config文件的参数 ,将类别数修改自己项目的类别数

        4. 生成engine文件

        ./yolov5为前面指令生成的可执行文件,可能是yolov5_seg/yolov5_cls/yolov5_det        -s为序列化, n 代表yolov5n,s 为yolov5s。

sudo ./yolov5 -s xxx.wts xxx.engine n

        5.测试图片查看效果

          ./yolov5解释同上,-d为检查,../samples为待检查的图片路径, xx.txt为你的模型参数解释

sudo ./yolov5 -d xxx.engine ../samples  xx.txt

         执行结果如下所示,推理基本可以做到42ms一张图片。

 参考连接:

  1.   Jetson学习笔记(一):jetson 系列镜像下载、烧写、设置散热风扇、中文包、pip、中转英目录、软件源、显示CSI摄像头_jetsonxuexibiji-CSDN博客
  2. Jetson Nano配置YOLOv5并实现FPS=25_jetson nano 25fps实时检测-CSDN博客
  3. tensorrt中采用YOLOv5的pt文件生成engine中遇到问题_yolov5生成engine报错: [e] [trt] (unnamed layer* 18) [c-CSDN博客
  4. Jetson Nano刷机教程_jetson nano 刷机官方教程-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/275805
推荐阅读
相关标签
  

闽ICP备14008679号