• 【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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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";
    }
    
    • 1
    • 2
    • 3
    • 4

    执行如下进行更新

    sudo apt-get update
    sudo apt-get full-upgrade
    
    • 1
    • 2

    显示错误

    Errors were encountered while processing:
     nvidia-l4t-bootloader
     nvidia-l4t-xusb-firmware
     nvidia-l4t-initrd
    
    • 1
    • 2
    • 3
    • 4

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

    cd /var/lib/dpkg
    sudo mv info info.bak
    sudo mkdir info
    sudo apt-get upgrade
    
    • 1
    • 2
    • 3
    • 4

    安装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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    查看
    在这里插入图片描述

    三、启动、环境配置

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    import torch
    torch.cuda.is_available()
    
    • 1
    • 2
    • 其它包
      首先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()
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在我的机子上执行结果如下,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}
    
    • 1
    • 2

    重启或执行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”
    在这里插入图片描述

  • 相关阅读:
    23062C++&QTday3
    JSP旅馆房间预订管理系统myeclipse定制开发mysql数据库网页模式java编程jdbc
    SpringBoot2.7.9 Profiles配置详解
    SaaSBase:AlphaFlow RPA是什么?
    【论文翻译】分布式数据库系统中的并发控制
    【NI-DAQmx入门】构建应用程序案例2(经典界面配置、流盘)(建议大家学习)
    c++/win32实现模拟windows鼠标键盘操作
    Linux三级等保基本设置
    MytatisP详解
    一次GC暂停时间过长的排查与优化
  • 原文地址:https://blog.csdn.net/qq_39165617/article/details/127658321