赞
踩
本文是参考各位博客朋友的笔记做了实操整理勿喷。
硬件设备nvidia JETSON NX TX2_NX
软件版本BSP3273(Jetpack4.6.3)再次分享一下刷机指导
NVIDIA® Jetson Linux 驱动程序包是 Jetson™ 的主板支持包。它包括Linux内核,UEFI引导加载程序,NVIDIA驱动程序,闪存实用程序,基于Ubuntu的示例文件系统以及Jetson平台的更多内容。
Jetson Linux 32.7.3 是 Jetson Linux 32.7.1 之上的次要版本,包含安全修复。其余功能与 Jetson Linux 32.7.2 相同。它支持所有Jetson模块:Jetson AGX Xavier系列,Jetson Xavier NX系列,Jetson TX2系列,Jetson TX1和Jetson Nano。还支持所有 Jetson 开发人员工具包。
Jetson Linux 32.7.3 包含在 JetPack 4.6.3 中
有关详细文档,请参阅在线 Jetson Linux 开发人员指南。
要访问其他 Jetson Linux 发布页面,请访问 Jetson Linux 存档。
Previous Jetson Linux Versions版本查看
| JETSON LINUX VERSION | Jetson AGX Xavier | Jetson AGX Xavier Industrial | Jetson Xavier NX | Jetson TX2 NX | Jetson TX2 | Jetson TX2i | Jetson TX2 4GB | Jetson TX1 | Jetson Nano |
|---|---|---|---|---|---|---|---|---|---|
| 32.7.3 > November 2022 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| 32.7.2 > April 2022 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| 32.7.1 > February 2022 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| 32.6.1 > August 2021 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| 32.5.2 > July 2021 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
| 32.5.1 > February 2021 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
| 32.5 > January 2021 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
官方开发套件使用sdkmanger工具刷完对应的jetpack和OS镜像即可,第三方厂家的按照他们的指导手册刷机到此。
系统和jetaoack安装完查看cuda版本的命令nvcc -V无法输出,在~/.bashrc文件内添加如下内容即可。
- export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
- export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
- export CUDA_ROOT=/usr/local/cuda
保存退出后 source ~/.bashrc
使用可视化界面查看的方法如下
- sudo apt-get install python3-pip
- sudo -H pip3 install jetson-stats
- sudo jtop

二、安装pip3 并配置所需要的库
- sudo apt-get update
- sudo apt-get install python3-pip python3-dev -y
- sudo apt-get install build-essential make cmake cmake-curses-gui -y
- sudo apt-get install git g++ pkg-config curl -y
- sudo apt-get install libatlas-base-dev gfortran libcanberra-gtk-module libcanberra-gtk3-module -y
- sudo apt-get install libhdf5-serial-dev hdf5-tools -y
- sudo apt-get install nano locate screen -y
三、安装所需的依赖
- sudo apt-get install libfreetype6-dev -y
- sudo apt-get install protobuf-compiler libprotobuf-dev openssl -y
- sudo apt-get install libssl-dev libcurl4-openssl-dev -y
- sudo apt-get install cython3 -y
- sudo apt-get install curl
- sudo apt-get install libssl-dev libcurl4-openssl-dev
四、安装opencv的系统级依赖,一些编解码的库
- sudo apt-get install build-essential -y
- sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev -y
- sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev -y
- sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev -y
- sudo apt-get install libxvidcore-dev libx264-dev -y
- sudo apt-get install libatlas-base-dev gfortran -y
- sudo apt-get install ffmpeg -y
五、更新 cmake
这一步是必须的,因为arm架构的很多东西都要从源码编译,下面是3.13之前使用3.20也是可以的
- wget http://www.cmake.org/files/v3.13/cmake-3.13.0.tar.gz
- tar xpvf cmake-3.13.0.tar.gz cmake-3.13.0/ #解压
- cd cmake-3.13.0/
- ./bootstrap --system-curl # 慢
- make -j4 #慢
- echo 'export PATH=~/cmake-3.13.0/bin/:$PATH' >> ~/.bashrc
- source ~/.bashrc #更新.bashrc
如果遇到问题 在cmake 上找不到CURL(缺少: CURL_LIBRARY CURL_INCLUDE_DIR)
其实就是上面下载安装依赖和库的时候没安装这两项,补上就好了:
- sudo apt-get install curl
- sudo apt-get install libssl-dev libcurl4-openssl-dev
一个小tips:
jetson 设备会出现大容量设备无法挂载的情况,一条安装命令解决:
sudo apt-get install exfat-utils
六、安装 pytorch
注意:为啥不使用torch官网给出的命令安装,只要cpu是arm芯片,无论是windows linux maxos都不能使用官网命令!
下载pytorch1.8 nvidia 官网torch 带cuda 版本的whl文件下载地址
这个whl文件 在torch 官网是找不到 aarch 版本的,在github上也有 aarch 别的各个版本的 aarch离线whl 文件下载网址,但是这些都不带 cuda,都是cpu 版本。实在找不到可以私信我发你。
pytorch
- sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev
- pip3 install Cython
- pip3 install numpy torch-1.10.0-cp36-cp36m-linux_aarch64.whl
torchvision
-
- $ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
- $ git clone --branch v0.11.1 https://github.com/pytorch/vision torchvision # see below for version of torchvision to download
- $ cd torchvision
- $ export BUILD_VERSION=0.11.1 # where 0.x.0 is the torchvision version
- $ python3 setup.py install --user
如果这里出现了 illegal instruction(core dumped)错误
错误的原因是没有添加系统变量,因为jetson系列开发板的核心架构非常规。
终端打开:
sudo vi ~/.bashrc
在最底部加上:
export OPENBLAS_CORETYPE=ARMV8
然后:source ~/.bashrc 一下,再进行操作:
- cd torchvision # 进入到这个包的目录下
- export BUILD_VERSION=0.11.1
- python3 setup.py install --user
可能会自动安装 pillow 9.5.0版本,这时候pillow 的版本过高
在python3 环境中导入 torchvision 时报错如下:
SyntaxError: future feature annotations is not defined
检验一下,是否安装成功:
python3
import torch
import torchvision
print(torch.cuda.is_available()) # 这一步如果输出True那么就成功了!
exit() # 最后退出python编译
或者直接复制如下代码查看即可
- nvidia@nvidia-desktop:~$ python3 pytorch_ceck.py
- 1.10.0
- CUDA available: True
- cuDNN version: 8201
-
-
-
- Tensor a = tensor([0., 0.], device='cuda:0')
- Tensor b = tensor([0.4357, 1.5914], device='cuda:0')
- Tensor c = tensor([0.4357, 1.5914], device='cuda:0')
-
- nvidia@nvidia-desktop:~$
- nvidia@nvidia-desktop:~$
- nvidia@nvidia-desktop:~$
- nvidia@nvidia-desktop:~$
- nvidia@nvidia-desktop:~$ cat pytorch_ceck.py
- import torch
- print(torch.__version__)
- print('CUDA available: ' + str(torch.cuda.is_available()))
- print('cuDNN version: ' + str(torch.backends.cudnn.version()))
- a = torch.cuda.FloatTensor(2).zero_()
- print('Tensor a = ' + str(a))
- b = torch.randn(2).cuda()
- print('Tensor b = ' + str(b))
- c = a + b
- print('Tensor c = ' + str(c))

八、下载 yolov5-6.2源码
GitHub - ultralytics/yolov5 at v6.2

- git clone --branch v6.2 https://github.com/ultralytics/yolov5.git
-
- cd yolov5
-
- git clone --branch yolov5-v6.2 https://github.com/wang-xinyu/tensorrtx.git
不放心可以先查一下版本
- nvidia@nvidia-desktop:~/yolov5$ git log
- commit d3ea0df8b9f923685ce5f2555c303b8eddbf83fd (HEAD, tag: v6.2)
- Author: Glenn Jocher <glenn.jocher@ultralytics.com>
- Date: Wed Aug 17 11:59:01 2022 +0200
-
- New YOLOv5 Classification Models (#8956)
-
- * Update
- * Logger step fix: Increment step with epochs (#8654)
- * enhance
- * revert
- * allow training from scratch
- * [pre-commit.ci] auto fixes from pre-commit.com hooks
- for more information, see https://pre-commit.ci
-
- * Update --img argument from train.py
- single line
-
- * fix image size from 640 to 128
- * suport custom dataloader and augmentation
- * [pre-commit.ci] auto fixes from pre-commit.com hooks
- for more information, see https://pre-commit.ci
-
- * format
- * Update dataloaders.py
- * Single line return, single line comment, remove unused argument
- * address PR comments
- * fix spelling
- * don't augment eval set
- * use fstring
- * update augmentations.py
- * new maning convention for transforms

- nvidia@nvidia-desktop:~/yolov5$ git clone -b yolov5-v6.2 https://github.com/wang-xinyu/tensorrtx.git
- Cloning into 'tensorrtx'...
- remote: Enumerating objects: 2317, done.
- remote: Counting objects: 100% (84/84), done.
- remote: Compressing objects: 100% (67/67), done.
- remote: Total 2317 (delta 33), reused 51 (delta 17), pack-reused 2233
- Receiving objects: 100% (2317/2317), 1.94 MiB | 4.40 MiB/s, done.
- Resolving deltas: 100% (1464/1464), done.
- Note: checking out '165b0a428c356ab9e2cb8d2c8f3d4aae3ea74eac'.
-
- You are in 'detached HEAD' state. You can look around, make experimental
- changes and commit them, and you can discard any commits you make in this
- state without impacting any branches by performing another checkout.
-
- If you want to create a new branch to retain commits you create, you may
- do so (now or later) by using -b with the checkout command again. Example:
-
- git checkout -b <new-branch-name>
-
- nvidia@nvidia-desktop:~/yolov5$ git log
- commit d3ea0df8b9f923685ce5f2555c303b8eddbf83fd (HEAD, tag: v6.2)
- Author: Glenn Jocher <glenn.jocher@ultralytics.com>
- Date: Wed Aug 17 11:59:01 2022 +0200
-
- New YOLOv5 Classification Models (#8956)

安装所需依赖;
pip3 install scikit-build
pip3 install -r requirements.txt
执行前注释掉内部的torch和torchvision
- # YOLOv5 requirements
- # Usage: pip install -r requirements.txt
-
- # Base ----------------------------------------
- matplotlib>=3.2.2
- numpy>=1.18.5
- opencv-python>=4.1.1
- Pillow>=7.1.2
- PyYAML>=5.3.1
- requests>=2.23.0
- scipy>=1.4.1
- #torch>=1.7.0
- #torchvision>=0.8.1
- tqdm>=4.64.0
- protobuf<=3.20.1 # https://github.com/ultralytics/yolov5/issues/8012
-
- # Logging -------------------------------------
- tensorboard>=2.4.1
- # wandb
- # clearml
-
- # Plotting ------------------------------------
- pandas>=1.1.4
- seaborn>=0.11.0
-
- # Export --------------------------------------
- # coremltools>=5.2 # CoreML export
- # onnx>=1.9.0 # ONNX export
- # onnx-simplifier>=0.4.1 # ONNX simplifier
- # nvidia-pyindex # TensorRT export
- # nvidia-tensorrt # TensorRT export
- # scikit-learn==0.19.2 # CoreML quantization
- # tensorflow>=2.4.1 # TFLite export (or tensorflow-cpu, tensorflow-aarch64)
- # tensorflowjs>=3.9.0 # TF.js export
- # openvino-dev # OpenVINO export
-
- # Extras --------------------------------------
- ipython # interactive notebook
- psutil # system utilization
- thop>=0.1.1 # FLOPs computation
- # albumentations>=1.0.3
- # pycocotools>=2.0 # COCO mAP
- # roboflow

python3 detect.py --source 0
报错如下:
TypeError: unlink() got an unexpected keyword argument 'missing_ok'
不会改直接先屏蔽
nvidia@nvidia-desktop:~/yolov5$ sudo vi /home/nvidia/yolov5/utils/downloads.py
File "/home/nvidia/yolov5/utils/downloads.py", line 47, in safe_download
file.unlink(missing_ok=True) # remove partial downloads
TypeError: unlink() got an unexpected keyword argument 'missing_ok
注释掉第47行居然通过了。

额,误差好大。
- 源码配置说明
- 在命令行参数选择模型 n/s/m/l/x/n6/ns/s6/m6/l6/x6
-
- 输入尺寸的定义在yololayer.h
-
- 类别数的定义在yololayer.h中,如果是自定义模型,不要忘记修改
-
- INT8/FP16/FP32可以通过yolov5.cpp中的宏进行选择
-
- GPU ID可以通过yolov5.cpp中的宏指定
-
- NMS阈值的设置在yolov5.cpp中
-
- BBox置信度阈值的设置在yolov5.cpp中
-
- Batch size的设置在yolov5.cpp中

3. 运行
3.1 .pt转.wts
tensorrtx项目通过tensorRT的Layer API一层层搭建模型,模型权重的加载则通过自定义方式实现,通过get_wts.py文件将yolov5模型的权重即yolov5.pt保存成yolov5.wts,生成的yolov5.wts文件即作者自定义的权重文件方便后续加载使用。
权重的生成在本地完成即可,将转换生成的yolov5.wts文件拷贝回到yolov5文件夹下
yolov5s.wts文件生成指令如下:
- nvidia@nvidia-desktop:~/yolov5$ mkdir weights
- nvidia@nvidia-desktop:~/yolov5$ cp yolov5s.pt weights/
- nvidia@nvidia-desktop:~/yolov5$ python3 gen_wts.py -w weights/yolov5s.pt yolov5s.wts
- usage: gen_wts.py [-h] -w WEIGHTS [-o OUTPUT] [-t {detect,cls}]
- gen_wts.py: error: unrecognized arguments: yolov5s.wts
- nvidia@nvidia-desktop:~/yolov5$ python3 gen_wts.py -w weights/yolov5s.pt -o yolov5s.wts
- Generating .wts for detect model
- YOLOv5 声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/42101推荐阅读
相关标签
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。