Jetson nano
- 一、u盘系统安装
- 1.1 烧录EMMC引导
- 1.2 烧录U盘系统
- 二、启动、环境配置
- 2.1 设置vnc分辨率
- 2.2. 更新软件
- 三、启动、环境配置
- 3.1 安装conda
- 3.2 安装python3.6版本torch1.8
- 3.3 配置yolov5 tensorrt加速
- 3.3.1 转换wts和engine
- 3.3.2使用python脚本运行engine
- 其它记录
- 安装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.whl
和torchvision-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安装时也出错了,因此
执行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目录下,而我是放置在其它文件夹中
步骤基本为,详细指令见教程
- 配置好环境,torch等(前面已安装)
- 从
github
下载ultralytics/yolov5
和wang-xinyu/tensorrtx
- 使用tensorrtx/yolov5中gen_wts.py脚本将
yolov5s.pt
转换为yolov5s.wts
- 进入tensorrtx/yolov5修改yololayer.h中CLASS_NUM值为你的类别值
- 在tensorrtx/yolov5新建build文件夹,将yolov5s.wts复制进去,编译,编译完成后如下
- 序列化模型,即将yolov5s.wts转为yolov5s.engine,注意
sudo ./yolov5 -s best.wts best.engine s
最后的s
是指示你的模型型号
- build文件夹同级有samples文件夹,内有图片,执行推理,将生成前面带下划线的检测图
3.3.2使用python脚本运行engine
pip install pycuda
- 执行
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”