目录
Jetson nano配置环境和部署yolov5-seg全过程:
Jetson nano配置环境和部署yolov5-seg全过程:
- 准备SD卡:Jetson nano要求最低配置16G的SD卡,整个系统刷完SD卡后被用了大概13G,后期还需要安装一些其他的机器学习框架,所以最低需要32G的SD卡,建议使用64G的SD卡。
- 烧写镜像:在烧写镜像前,需要先备份好SD卡中的数据,格式化SD卡后烧写镜像。
- 配置nano环境: 设置CUDA、修改显存、配置torch等。
- 配置yolov5环境,下载各种依赖包。
- 使用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 Developerhttps://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等的相关信息。
sudo apt install python3-pip
sudo -H pip3 install jetson-stats -i https://pypi.douban.com/simple/
sudo jtop
4.配置中 文输入法
(1)安装中文输入法软件
sudo apt-get update
sudo apt-get install fcitx fcitx-goolepinyin
(2)配置中文输入法
im-config -n fcitx # 配置
sudo reboot # 重启
(3)输入法设置:语言设置上选择goole拼音作为中文输入法(ctrl+空格切换中英文)
5.CUDA配置
Jetson nano在烧录镜像的时候使用的jetpack包中已经包含了CUDA、CUDNN、TensorRT环境,但是还需要我们将CUDA信息写入环境变量中。
sudo gedit ~/.bashrc
#文档末尾添加(cuda后面数字为cuda对应版本)
export CUDA_HOME=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.2/bin:$PATH
#保存退出 (配置成功可看出cuda版本信息)
source ~/.bashrc
nvcc -V
6.修改nano的Swap内存
#(1)打开nvzramconfig.sh文件
sudo gedit /etc/systemd/nvzramconfig.sh
#(2)修改nvzramconfig.sh文件内容 ( / 2 ==> * 2)
修改mem = $((("${totalmem}"/2/"${NRDEVICES}")*1024))为mem = $((("${totalmem}"*2/"${NRDEVICES}")*1024))
sudo reboot
free -h # swap已经变为7.7G
7.管理python
Jetpack自带了两个python版本,jetpack4.6版本自带的python版本是2.7和3.6,但是默认使用2.7版本,所以我们需要管理系统使用的python版本。
#(1)查看jetson自带python版本 (系统默认使用python2.7版本)
ls /usr/bin/python*
#(2)查看是否配置过python相关信息
update-alternatives --list python
#(3)配置python相关信息
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
#(4)查看配置信息
update-alternatives --list python
#(5)切换python版本
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文件。
官方网址:
#(1)安装
sudo apt-get install libopenblas-base libopenmpi-dev libomp-dev
pip install Cython
pip install numpy xxx.whl
#(2)验证
import torch
print(torch.__version__)
print(torch.version.cuda)
print(torch.backends.cudnn.version())
2.配置yolov5环境
(1)修改下载镜像
mkdir ~/.pip
sudo gedit ~/.pip/pip.conf
(2)在空白文件中输入如下内容保存并退出:
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
(3) 本文推荐将yolov5项目直接拉到Jetson nano中,然后安装yolov5的各种依赖包。有一些安装包会出现暗转失败的问题,可以直接下载符合版本的whl文件进行安装。笔者在实验过程中出现类似torch等一些文件已经安装的库在执行下面的指令后还会下载其他版本的包。解决方法注释掉requirements.txt中已经安装的包。
cd yolov5
pip3 install -r requirements.txt
python3 detect.py --source data/images/bus.jpg --weights yolov5n.pt --img 640 #图片测试
(4)出现 “Illegal instruction(core dumped)”问题
sudo gedit ~/.bashrc
#末尾添加
export OPENBLAS_CORETYPE=ARMV8
#保存关闭
source ~/.bashrc
3.使用tensorrtx进行加速推理
(1)github官网下载的tensorrtx源码(注意:yolov5-v7版本的也需要选择tensorrtx中yolov5-v7版本进行下载,否则后续会报错,无法构建模型)
(2) 将xxx.pt权重文件转化为xxx.wts文件
将下载的tensorrtx项目中的yolov5/gen_wts.py复制到自己yolov5项目的文件下。打开终端:
#1 生成wts文件,把自己的权重文件xxx.pt文件放至此处执行
python3 gen_wts.py -w yolov5n.pt -o yolov5n.wts
(3) 编译
1.回到tensorrtx/yolov5目录下
cd ~/tensorrts/yolov5/
mkdir build
cd build
2.将生成的wts文件移动到刚创建的build目录
cmake ..
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一张图片。
参考连接: