Jetson Nano\NX\AGX 学习笔记

news/2024/11/28 23:52:39/

Jetson Nano\NX\AGX 学习笔记

      • 1. jetson平台安装pytorch、torchvision
      • 2. yolov5模型部署deepstream,x86\jetson平台
        • 2.0. 下载 `deepstream6.1`
        • 2.1. 下载yolov5s模型或者训练自己的yolov5s模型
        • 2.2. 下载yolov5、DeepStream-Yolo代码,并把yolov5s.pt转换为yolov5s.engine文件(~~tensorrtx~~已过期)
        • 2.3. 运行
        • 2.4. 遇到错误
        • 2.5. 新的问题
        • 2.6. 参考
      • 3. NX配置-安装yolov5优化集成deepstram.doc
      • 5. jetson nx安装paddleocr
      • 6. jetson nx 安装 paddlepaddle_gpu
        • 6.1 编译安装paddlepaddle_gpu
      • 7. jetson平台安装cudnn
      • 8. 设置工作模式设置功率
      • AI on the Jetson Nano LESSON 1: Getting Started for Absolute Beginners
      • 解决报错:xhost: unable to open display ""
      • 给Ubuntu服务器安装图形化界面
      • 查看TensorRT版本:
      • 10 error jie jue
      • 50. 查询jetpack版本


1. jetson平台安装pytorch、torchvision

pytorch的aarch包
jetson平台的pytorch版本
注意这里的 v0.9.0 和pytorch版本1.8对应

  • 安装pytorch版本1.8:torch-1.8.0-cp36-cp36m-linux_aarch64.whl
  • 安装torchvision
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
# 注意这里的 v0.9.0 和pytorch版本1.8对应
git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.9.0
# 注意 pillow<7
pip install pillow==6.2.2
python3 setup.py install --user

出现错误

OSError: libmpi_cxx.so.20: cannot open shared object file

解决

apt-get install libopenblas-base libopenmpi-dev 

在Jetson Xavier NX上安装torchvision编译报错:fatal error: libavcodec/avcodec.h: No such file or directory

2. yolov5模型部署deepstream,x86\jetson平台

2.0. 下载 deepstream6.1

下载相应版本的deepstream
jetson平台安装deepstream5.1,参考:Install Jetson SDK components
x86平台安装deepstream6.1,参考:dGPU Setup for Ubuntu

2.1. 下载yolov5s模型或者训练自己的yolov5s模型

yolov5s_v5.0.pt
yolov5s_v6.1.pt
训练自己的模型

2.2. 下载yolov5、DeepStream-Yolo代码,并把yolov5s.pt转换为yolov5s.engine文件(tensorrtx已过期)

  1. DeepStream-Yolo 下载到 deepstream/source 目录下
git clone https://github.com/marcoslucianops/DeepStream-Yolo.git
git clone https://github.com/ultralytics/yolov5.git
# 切换到对应分支,这里以最新版v6.1分支为例
git checkout v6.1

DeepStream-Yolo/utils 中的 gen_wts_yoloV5.py 文件复制到 yolov5 项目根目录;并且把刚才下载好的 yolov5s_v6.1.pt yolov5s_v6.1.pt 或者自己训练的模型,复制进 yolov5 项目根目录,执行以下命令会生成对应的 .cfg 文件和 .wts 文件

python gen_wts_yoloV5.py -w yolov5s_v6.1.pt

把生成的yolov5s_v6.1.wts复制到 DeepStream-Yolo 项目根目录
执行命令生成 .so 文件

CUDA_VER=11.1 make -C nvdsinfer_custom_impl_Yolo
  1. 配置 DeepStream-Yolo
    修改 config_infer_primary_yoloV5.txt
[property]
...
custom-network-config=yolov5s.cfg
model-file=yolov5s.wts
......
[primary-gie]
...
config-file=config_infer_primary_yoloV5.txt

修改 config_infer_primary_yoloV5.txt

[property]
gpu-id=0
net-scale-factor=0.0039215697906911373
##0=RGB, 1=BGR
model-color-format=0
custom-network-config=yolov5sv6_fire.cfg
model-file=yolov5sv6_fire.wts
model-engine-file=model_b1_gpu0_fp32.engine
#int8-calib-file=calib.table
labelfile-path=labels.txt
batch-size=1
##0=FP32, 1=INT8, 2=FP16 mode
network-mode=0
##检测类别数
num-detected-classes=2
interval=0
gie-unique-id=1
process-mode=1
network-type=0
##1=DBSCAN, 2=NMS, 3= DBSCAN+NMS Hybrid, 4 = None(No clustering)
cluster-mode=4
maintain-aspect-ratio=1
parse-bbox-func-name=NvDsInferParseYolo
custom-lib-path=nvdsinfer_custom_impl_Yolo/libnvdsinfer_custom_impl_Yolo.so
engine-create-func-name=NvDsInferYoloCudaEngineGet[class-attrs-all]
##几项阈值
pre-cluster-threshold=0

配置相应的 labels 文件

2.3. 运行

deepstream-app -c deepstream_app_config.txt

运行成功的效果
deepstream_demo_001.jpg

2.4. 遇到错误

  • 1.error Deserialize yoloLayer plugin: (Unnamed Layer 269) [PluginV2IOExt]*
  • 1.解决 暂无办法

2.5. 新的问题

  1. deepstream不能发送kafka

2.6. 参考

  • Jetson Nano | DeepStream部署Yolov5(Pytorch模型–>wts 文件–>TensorRT模型)
  • DeepStream-Yolo
  • DeepStream-Yolo
  • 运行自己训练的模型异常
  • 分段错误(核心转储) #208

3. NX配置-安装yolov5优化集成deepstram.doc

cankao:Jetson Xavier NX使用yolov5对比GPU模型下的pt、onnx、engine 、 DeepStream 加速性能

NX上使用deepstream5.0框架运行yolov5检测视频
一、NX上运行yolov5步骤:1.基本命令
#set python Version 
#常用软件
#apt-get如何查看已安装的软件包
dpkg -l或dpkg --get-selections |less
#pip3 如何查看已安装的软件包pip3 list#驱动版本
head -n 1 /etc/nv_tegra_release
#内核版本
uname -r
#操作系统
lsb_release -i -r
#CUDA版本
nvcc -V
#cuDNN版本
dpkg -l libcudnn8
#opencv版本
dpkg -l libopencv / pkg-config opencv --modversion
#Tensorrt版本
dpkg -l tensorrt2.基本配置
#添加CUDA环境变量#cuda
sudo vi ~/.bashrc
#添加
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
#保存并刷新
source ~/.bashrc3换源#备份原有软件源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vi /etc/apt/sources.list 
#清华源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
#更新没问题
sudo apt-get update4 pip/python3#查看python版本是否最新
sudo apt-get install python3-pip python3-dev
python3 -m pip install --upgrade pip
Jetson-stats#查看系统使用情况,类似top
sudo -H pip3 install jetson-stats
#使用
jtop
5配置python环境sudo pip3 install -U pip testresources setuptools
sudo apt-get install libopenblas-base libopenmpi-dev
sudo pip3 install mpi4py
sudo pip3 install Cython
6安装pytorchysudo pip3 install torch-1.6.0-cp36-cp36m-linux_aarch64.whl7. torchvision安装
git clone --branch v0.7.0 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.7.0
sudo python3 setup.py install 8 配置YOLOv5开源代码(1) 代码仓库git clone https://github.com/ultralytics/yolov5 (慎重:下载权重文件,代码和权重我已经下载好了,在weights下)
***此处有一个坑:yolov5更新频繁,兼容torch1.6和torchvision0.7的是5-3.0版本,如果现在最新的yolov5会出现torchvision0.7版本不匹配等问题。(2) 安装依赖(torch和torchvision上面已经安装完成)
cd yolov5
sudo pip3 install  -r requirements.txt
***此处有一个坑:
对于PyYAML的更新问题:如果卸载不掉可以使用命令:直接安装新的版本
pip3 install PyYAML -i https://mirrors.aliyun.com/pypi/simple/ --ignore-installed
***此处还有一个更大的坑:
安装上边的依赖有可能会更显numpy到1.19.5版本,该版本再arm64的pyhon3.6下会出现:Illegal Instruction。解决方法是卸载后,重装1.19.3(3) 测试是否成功
sudo python3 detect.py --source inference/images/ --weights weights/yolov5s.pt --conf-thres 0.7
成功会在inference/output下生产检测结果(4) 使用自己的数据集二、 NX上使用tensorrt加速yolov5步骤:
# 参考网址:
# https://blog.csdn.net/m0_37426155/article/details/108254714
#https://github.com/wang-xinyu/tensorrtx/tree/master/yolov5
# 1.下载大牛的yolov5转换tensorrt的开源代码。
git clone  https://github.com/wang-xinyu/tensorrtx
#2.针对我的yolov5-2.0下载对应分支。
cd tensorrtx/yolov5
git checkout 5cfa444 #
# 3.先把 yolov5s.pt转换成yolov5s.wts
cd yolov5
cp ../tensorrtx/yolov5/gen_wts.py .
#ensure the file name is yolov5s.pt and yolov5s.wts in gen_wts.py
python gen_wts.py
#a file 'yolov5s.wts' will be generated.4.最后把yolov5s.wts 转化成yolov5.engine
mv yolov5s.wts ../tensorrtx/yolov5/
cd ../tensorrtx/yolov5
#ensure the macro NET in yolov5.cpp is s
mkdir build
cd build
cmake ..
make
sudo ./yolov5 -s             // serialize model to plan file i.e. 'yolov5s.engine'
sudo ./yolov5 -d  ../samples   // deserialize plan file and run inference, the images in samples will be processed.三、NX上使用deepstream集成yolov5步骤:

5. jetson nx安装paddleocr

源码编译安装,亲测通过

# 提前在jetson nx上编译安装opencv opencv-contrib-python 参考..
git clone https://github.com/PaddlePaddle/PaddleOCR.git
# opencv-contrib-python==4.4.0.46 版本
pip install -r requirements.txt
python setup install

参考:Jetson Xavier NX部署PaddleOCR

  1. 安装h5py
wget https://github.com/yihuajack/h5py-aarch64/raw/main/h5py-3.1.0-cp36-cp36m-linux_aarch64.whl

2. 安装onnx

sudo apt-get install protobuf-compiler libprotoc-dev
pip3 install onnx -i https://pypi.doubanio.com/simple/

如果安装失败,尝试下面的命令

sudo apt-get install protobuf-compiler libprotobuf-dev
pip install pybind11[global]
pip install onnx==1.9.0
  1. 安装sentencepiece
sudo apt-get install cmake build-essential pkg-config libgoogle-perftools-dev
git clone https://github.com/google/sentencepiece
cd sentencepiece/
mkdir build
cd build/
cmake ..
make -j4
sudo make install
sudo ldconfig -v
  1. 安装 nccl
git clone https://github.com/NVIDIA/nccl.git
cd nccl/
make -j4
sudo make install
  1. 升级cmake
# 卸载
sudo apt remove cmake
sudo apt purge --auto-remove cmake
# 安装
sudo pip install cmake
sudo cp /usr/local/bin/cmake /usr/bin/

6. jetson nx 安装 paddlepaddle_gpu

下载jetson平台的paddlepaddle_gpu,
paddlepaddle_gpu-2.2.1-cp36-cp36m-linux_aarch64.whl

pip install paddlepaddle_gpu-2.2.1-cp36-cp36m-linux_aarch64.whl

6.1 编译安装paddlepaddle_gpu

  • 1.编译前准备工作
    首先打开NX的性能模式:或者在右上角状态栏找英伟达图标选择15W 6CORE模式,开启最高性能。
    命令开启如下
sudo nvpmodel -m 2 && sudo jetson_clocks
    1. 编译安装NCCL
git clone https://github.com/NVIDIA/nccl.git
cd nccl/
make -j6
sudo make install
    1. 编译安装paddle
git clone https://github.com/paddlepaddle/paddle
cd Paddle
# 切换到对应分支,这里以最新版v6.1分支为例
git checkout v2.4.0-rc0
mkdir build
cd build
pip install cython wheel numpy
cmake .. \-DWITH_CONTRIB=OFF \-DWITH_MKL=OFF  \			#编译支持MKL的预测库-DWITH_MKLDNN=OFF \			#编译支持MKLDNN的预测库-DWITH_AVX=OFF \			#是否编译含有AVX指令集的飞桨二进制文件-DWITH_GPU=ON \			#编译支持GPU的预测库-DWITH_TESTING=OFF \			#是否开启单元测试-DCMAKE_BUILD_TYPE=Release \		#编译方式,仅使用预测库设为Release即可-DON_INFER=ON \			#预测时使用,必须设为ON-DWITH_PYTHON=ON  \			#是否内嵌PYTHON解释器并编译Wheel安装包-DPY_VERSION=3.6  \			#指定Python版本-DWITH_XBYAK=OFF  \			#使用XBYAK编译,在jetson硬件上编译需要设置为OFF-DWITH_NV_JETSON=ON			#在NV Jetson硬件上编译时需要设为ONmake -j6

最后编译生成的预测库位于build文件夹下:

7. jetson平台安装cudnn

参考Jetson AGX Xavier配置cuDNN流程

8. 设置工作模式设置功率

  1. Jetson Xavier nx
  • 设置 15W_4CORE
sudo nvpmodel -m 1
  • 设置 15W_6CORE
sudo nvpmodel -m 2

设置完后,都要运行

sudo /usr/bin/jetson_clocks

参考:Jetson 系列——jetson xavier nx和nano设置工作模式设置功率


AI on the Jetson Nano LESSON 1: Getting Started for Absolute Beginners

sudo apt-get update
sudo visudo
icir ALL=(ALL) NOPASSWD:ALL

首先 添加dns服务器

vi /etc/resolv.conf
#在文件中添加如下两行:nameserver 8.8.8.8
nameserver 8.8.4.4

更新系统时间

# 首先安装 ntpdate 命令:
sudo apt-get install -y ntpdate
# 接着执行如下命令开始同步:
sudo ntpdate 0.asia.pool.ntp.org
# 最后执行如下命令将系统时间同步到硬件,防止系统重启后时间被还原。
sudo hwclock --systohc

解决报错:xhost: unable to open display “”

export DISPLAY=:0
xhost +
xhost + 192.168.70.234

给Ubuntu服务器安装图形化界面

sudo apt-get update
#安装桌面软件
sudo apt-get install ubuntu-desktop 
#重启
reboot 

查看TensorRT版本:

dpkg -l | grep TensorRT

sudo apt-get update
sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-devsudo apt-get install libjson-glib-1.0-0 libjson-glib-dev

10 error jie jue

  1. Illegal instruction (core dumped)
# 临时修改
export OPENBLAS_CORETYPE=ARMV8
# 永久修改
将“export OPENBLAS_CORETYPE=ARMV8”加入到“~/.bashrc”中

error: libhdf5.so: cannot open shared object file: No such file or directory

sudo apt install libhdf5-dev

50. 查询jetpack版本

sudo apt-cache show nvidia-jetpack

http://www.ppmy.cn/news/459494.html

相关文章

【模型部署】Jetson Xavier NX(eMMC)部署YOLOv5-5.0

文章目录 前言NVIDIA JetsonJetson Xavier NX版本区别&#xff08;SD | eMMC&#xff09;规格参数 Jetpack4.6.1环境搭建烧录系统&#xff08;OS&#xff09;SSD启动SSD分区设置为启动项 深度学习环境搭建设置语言/地区等信息烧录SDK组件换清华源&#xff08;可选&#xff09; …

Jetson Xavier NX部署PaddlePaddle框架

文章目录 前言一、刷机、开机等基本环境配置可以参考如下文章我的环境信息 二、源码编译安装paddlepaddle1.编译前准备工作2.首先编译安装NCCL3.编译安装PaddlePaddle4.测试方法 三、Jetson Xavier NX安装paddlehub1.paddlehub无法直接pip安装&#xff0c;报错如下2.源码编译安…

Jetson Xavier NX 内核编译、源码编译流程

[NVIDIA] 从零入手 Jetson Xavier NX 内核编译、源码编译流程 – ***注明&#xff1a;感谢网友提醒&#xff0c;我当时买的时候nx套件还没开售&#xff0c;因为核心板兼容b01&#xff0c;先买了核心板和b01的板子合在一起用的&#xff0c;所以本文是基于jetson xavier nx模块 …

J-004 Jetson电路设计之HDMI设计--NANO XAVIER NX

HDMI电路设计 1 简介2 框图介绍3 原理图介绍 1 简介 NANO & XAVIER NX提供一路HDMI接口&#xff0c;DP接口与HDMI是兼容的&#xff0c;可用于扩展一路HDMI。其中引脚说明: PIN名称描述方向类型63HDMI_DP_TXDN0DisplayPort 1 Lane 0 or HDMI Lane 2输出HDMI/DP65HDMI_DP_T…

J-002 Jetson电路设计之电源设计--NANO XAVIER NX

Jetson电源设计 1 电源说明1.1 电源和系统引脚描述1.2 电源控制框图详情 2 上电的时许2.1 框图分析2.2 上电时序 3 GND引脚 1 电源说明 Jetson NANO和XAVIER NX核心板的电源为DC-5V。 1.1 电源和系统引脚描述 PIN名称描述方向类型251-260VDD_IN主电源输入5.0V235PMIC_BBATRT…

努比亚修复工具_努比亚 X6 救砖教程 努比亚 NX601J恢复救砖教程

努比亚 X6(NX601J) 恢复兼救砖 1.下载刷机工具及说明 努比亚 X6(NX601J)线刷工具:点击下载(下载后解压出三个文件夹) 适用范围: 1、手机刷错包导致变砖,重启即黑屏,数据线连接电脑没有反应; 2、刷机后卡logo,进不去系统或者开机直接进入recovery,而且双清不了的; 以上两…

关于nubia z9 NX508J notification 不显示的问题

这几天测试友盟推送功能&#xff0c;测试发现nubia z9 NX508J收不到消息 但是调试发现&#xff0c;log日志里面收的到消息&#xff0c;那就只能是notification没有发送成功了。 于是单独写了一个demo,发现真的notification显示不了。 想来肯定是系统设置了权限&#xff0c;于是…

J-001 Jetson硬件电路设计概论--NANO XAVIER NX

Jetson硬件设计概论 1 Jetson板卡简介2 Jetson产品组合3 模组对比4 电路分析4.1 电源设计4.1.1 原理图设计4.1.2 引脚描述4.1.3 电源框图4.1.4 上电时序 4.2 USB设计4.2.1 USB 2.0引脚描述4.2.2 USB 3.0引脚描述 4.3 PCIe4.4 千兆网口设计4.4.1 引脚描述4.4.2 设计案列 4.5 MIP…