【Linux】Jetson nano 使用记录,安装torch1.8、yolov5 tensorrt加速、java等

一、u盘系统安装

简介:购买的是4G版,板载16g emmc,但16g硬盘完全不够用,按照一开始的方案想着直接用但空间完全不足,因此将系统改装到64GU盘中启动
所有教程均在https://www.yahboom.com/study/jetson-nano中有

1.1 烧录EMMC引导

因为板载EMMC中已经有系统了,因此不需要再烧录系统了,但需要烧录EMMC引导,让其能够引导到U盘系统中

  • 安装VMware
    进入下载网址点击下载
    在这里插入图片描述
    按照 vmware安装教程进行安装
    注意如果开启了Hyper-V则需要点击自动安装WHP
    在这里插入图片描述

  • 安装引导
    按照 3.烧录EMMC引导这篇教程进行即可,这里无所谓用u盘还是移动硬盘都可以,我是使用的固态硬盘+usb3.0转接线装的系统,注意提供的64g udisk版镜像,写入系统后只有64g可用,如使用128G硬盘,需要使用分区工具(linux中下载gparted)进行扩容到128G,可参考5.U盘扩容进行

1.2 烧录U盘系统

按照4.烧录U盘系统教程进行

二、启动、环境配置

2.1 设置vnc分辨率

该镜像中vnc等均安装好了,连接显示屏查看板子的ip,后续即可通过vnc直接连接,密码同用户密码,但是不接显示屏分辨率较低,因此需要还要设置下启动分辨率
执行 sudo vi ~/.config/autostart/resolution.desktop,填入如下内容修改自启动分辨率为1366x768

[Desktop Entry]
Type=Application
Name=resolution
Exec=xrandr --fb 1366x768
NoDisplay=true

2.2. 更新软件

因为Jetson nano是arm64架构,国内源支持不好,因此不换源
如果自己有代理则可以设置代理,没有则继续后续步骤

sudo vi /etc/apt/apt.conf.d/proxy.conf
添加如下

Acquire {
  HTTP::proxy "http://192.168.1.38:7890";
  HTTPS::proxy "http://192.168.1.38:7890";
}

执行如下进行更新

sudo apt-get update
sudo apt-get full-upgrade

显示错误

Errors were encountered while processing:
 nvidia-l4t-bootloader
 nvidia-l4t-xusb-firmware
 nvidia-l4t-initrd

执行如下指令解决错误,再重新更新

cd /var/lib/dpkg
sudo mv info info.bak
sudo mkdir info
sudo apt-get upgrade

安装JTOP

sudo apt install curl
sudo apt install nano
cd ~
curl https://bootstrap.pypa.io/pip/3.6/get-pip.py -o get-pip.py
sudo python3 get-pip.py # 运行安装脚本
sudo pip3 install jetson-stats
sudo jtop
或重启后执行jtop

查看
在这里插入图片描述

三、启动、环境配置

3.1 安装conda

弃用
以下参考yolov5 部署jetson nano(通用) 保姆级教学
下载 https://github.com/Archiconda/build-tools/releases
bash Archiconda3-0.2.3-Linux-aarch64.sh

3.2 安装python3.6版本torch1.8

参考 Install PyTorch on Jetson Nano.
我是从Qengineering/PyTorch-Jetson-Nano下载的torch-1.8.0a0+37c1f4a-cp36-cp36m-linux_aarch64.whltorchvision-0.9.0a0+01dfa8e-cp36-cp36m-linux_aarch64.whl
还可以参考这里下载 https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048

# install the dependencies (if not already onboard)
$ sudo apt-get install python3-pip libjpeg-dev libopenblas-dev libopenmpi-dev libomp-dev
$ sudo -H pip3 install future
$ sudo pip3 install -U --user wheel mock pillow
$ sudo -H pip3 install testresources
# above 58.3.0 you get version issues
$ sudo -H pip3 install setuptools==58.3.0
$ sudo -H pip3 install Cython
# install PyTorch 1.8.0
$ sudo -H pip3 install torch-1.8.0a0+37c1f4a-cp36-cp36m-linux_aarch64.whl
 sudo -H pip3 install torchvision-0.9.0a0+01dfa8e-cp36-cp36m-linux_aarch64.whl

执行python3,再输入如下,显示为True即可

import torch
torch.cuda.is_available()
  • 其它包
    首先git clone https://github.com/ultralytics/yolov5下载yolov5包,如有代理可设置git config --global http.proxy 192.168.1.38:7890进行下载
    执行cd yolov5进入包内
    执行vi requirements.txt编辑
    如图注释掉torch和torchvision,由于我在psutil安装时也出错了,因此也注释了psutil
    在这里插入图片描述
    执行python3 detect.py --source data/images/bus.jpg --weights yolov5n.pt --img 640,得到结果

如报错
ImportError: /usr/lib/aarch64-linux-gnu/libgomp.so.1: cannot allocate memory in static TLS block
则在执行前脚本加 LD_PRELOAD=libgomp.so.1 python3 your_python_script或者在.bashrc中加export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1:$LD_PRELOAD

如不下载yolov5源码,可编写如下执行进行测试

import torch

if __name__ == "__main__":
    model = torch.hub.load("ultralytics/yolov5", "yolov5s")
    print(model)
    for i in range(10):
        img = "./bus.jpg"
        results = model(img)
        results.print()
    

在我的机子上执行结果如下,150余毫秒一张进行推理
在这里插入图片描述

3.3 配置yolov5 tensorrt加速

3.3.1 转换wts和engine

参考 https://wiki.seeedstudio.com/YOLOv5-Object-Detection-Jetson/#inference-on-jetson-device
教程中软件是放置在用户home目录下,而我是放置在其它文件夹中
步骤基本为,详细指令见教程

  1. 配置好环境,torch等(前面已安装)
  2. github下载ultralytics/yolov5wang-xinyu/tensorrtx
  3. 使用tensorrtx/yolov5中gen_wts.py脚本将yolov5s.pt转换为yolov5s.wts
    在这里插入图片描述
  4. 进入tensorrtx/yolov5修改yololayer.h中CLASS_NUM值为你的类别值
  5. 在tensorrtx/yolov5新建build文件夹,将yolov5s.wts复制进去,编译,编译完成后如下
    在这里插入图片描述
  6. 序列化模型,即将yolov5s.wts转为yolov5s.engine,注意sudo ./yolov5 -s best.wts best.engine s最后的s是指示你的模型型号
    在这里插入图片描述
  7. build文件夹同级有samples文件夹,内有图片,执行推理,将生成前面带下划线的检测图
    在这里插入图片描述
3.3.2使用python脚本运行engine
  1. pip install pycuda
  2. 执行python3 yolov5_trt.py
    在这里插入图片描述

其它记录

安装java

在这里插入图片描述
mkdir /home/nano/Soft/java
将文件复制过去
cd ~/Soft/java
tar -xvf jdk-8u351-linux-aarch64.tar.gz
在这里插入图片描述
vim ~/.bashrc 编辑bash配置,在最后面加入这两行

export JAVA_HOME=/home/nano/Soft/java/jdk1.8.0_351
export PATH=${JAVA_HOME}/bin:${PATH}

重启或执行source ~/.bashrc再执行 java -version,结果如下
在这里插入图片描述

备份,扩展

扩展硬盘:64g感觉还是一般般,后使用移动硬盘+usb硬盘盒当作系统盘,将系统写入了128g移动硬盘中,写入后是64g,因此需要用软件扩展,可以使用linux下的gparted或者windows下的DiskGenius将硬盘未分配空间扩展到系统分区

备份: 备份时可以在linux下使用dd命令进行备份,但是备份后文件大小将和硬盘的已分配空间大小一致,且恢复或写入别的硬盘时对应的硬盘大小必须要大于备份文件大小,因此可以先通过linux下的gparted或者windows下的DiskGenius将系统分区缩小,再备份

sudo fdisk -u -l /dev/sdc // 查看end最大的值,后面的count+1即可
sudo dd bs=512 count=117000192 if=/dev/sdc of=“/media/liang/Elements SE/jetson-nano-backup/nano.img”
在这里插入图片描述

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值