基于jetson nano 配置yolo

原文地址:https://docs.ultralytics.com/yolov5/tutorials/running_on_jetson_nano/

使用 TensorRT 和 DeepStream SDK 在 NVIDIA Jetson 上部署

📚 本指南介绍了如何将经过训练的模型部署到 NVIDIA Jetson 平台中并使用 TensorRT 和 DeepStream SDK 执行推理。这里我们使用 TensorRT 来最大化 Jetson 平台上的推理性能。

硬件验证
我们已在以下 Jetson 设备上测试并验证了本指南

使用 Jetson Nano 模块构建的 Seeed reComputer J1010
Seeed reComputer J2021 使用 Jetson Xavier NX 模块构建

1.在你开始之前

确保您已在 Jetson 设备上正确安装JetPack SDK以及所有SDK 组件和DeepStream SDK,因为这包括本指南所需的 CUDA、TensorRT 和 DeepStream SDK。

JetPack SDK 为硬件加速的边缘人工智能开发提供了完整的开发环境。JetPack SDK 支持所有 Jetson 模块和开发套件。

有两种主要的安装方法,包括:

  1. SD卡镜像方式
  2. NVIDIA SDK管理器方法

你可以从NVIDIA官方网站找到非常详细的安装指南。您还可以找到与上述reComputer J1010和reComputer J2021对应的指南。

2.安装必要的软件包

  1. 步骤1.访问Jetson设备的终端,安装pip并升级
sudo apt update
sudo apt install -y python3-pip
pip3 install --upgrade pip
  1. 步骤 2.克隆以下存储库
git clone https://github.com/ultralytics/yolov5
  1. 步骤3.打开requirements.txt
cd yolov5
vi requirements.txt
  1. 步骤 4.编辑以下行。这里需要先按i进入编辑模式。按ESC,然后输入:wq保存并退出
# torch>=1.8.0
# torchvision>=0.9.0

注意:目前不包括 torch 和 torchvision,因为它们将在稍后安装。

  1. 步骤5.安装以下依赖项
sudo apt install -y libfreetype6-dev
  1. 步骤 6.安装必要的软件包
pip3 install -r requirements.txt

3.安装 PyTorch 和 Torchvision

我们无法从 pip 安装 PyTorch 和 Torchvision,因为它们不兼容在基于ARM aarch64 架构的 Jetson 平台上运行。因此,我们需要手动安装预构建的 PyTorch pip Wheel 并从源代码编译/安装 Torchvision。

访问此页面可访问所有 PyTorch 和 Torchvision 链接。

以下是 JetPack 4.6 及更高版本支持的一些版本。

PyTorch v1.10.0

由 JetPack 4.4 (L4T R32.4.3) / JetPack 4.4.1 (L4T R32.4.4) / JetPack 4.5 (L4T R32.5.0) / JetPack 4.5.1 (L4T R32.5.1) / JetPack 4.6 (L4T R32.6.1) 支持使用Python 3.6

文件名: torch-1.10.0-cp36-cp36m-linux_aarch64.whl
URLhttps://nvidia.box.com/shared/static/fjtbno0vpo676a25cgvuqc1wty0fkkg6.whl

PyTorch v1.12.0

由带有 Python 3.8 的 JetPack 5.0 (L4T R34.1.0) / JetPack 5.0.1 (L4T R34.1.1) / JetPack 5.0.2 (L4T R35.1.0) 支持

文件名: torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl
URL: https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/torch-1.12.0a0 +2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl

  1. 步骤1.根据您的JetPack版本按以下格式安装torch
wget <URL> -O <file_name>
pip3 install <file_name>

例如,这里我们运行的是JP4.6.1,因此我们选择PyTorch v1.10.0

cd ~
sudo apt-get install -y libopenblas-base libopenmpi-dev
wget https://nvidia.box.com/shared/static/fjtbno0vpo676a25cgvuqc1wty0fkkg6.whl -O torch-1.10.0-cp36-cp36m-linux_aarch64.whl
pip3 install torch-1.10.0-cp36-cp36m-linux_aarch64.whl
  1. 步骤 2.根据您安装的 PyTorch 版本安装 torchvision。例如,我们选择PyTorch
    v1.10.0,这意味着我们需要选择Torchvision v0.11.1
sudo apt install -y libjpeg-dev zlib1g-dev
git clone --branch v0.11.1 https://github.com/pytorch/vision torchvision
cd torchvision
sudo python3 setup.py install

这里列出了根据PyTorch版本需要安装的对应torchvision版本:

PyTorch v1.10 - torchvision v0.11.1
PyTorch v1.12 - torchvision v0.13.0

4.YOLOv5 的 DeepStream 配置

  1. 步骤 1.克隆以下存储库
cd ~
git clone https://github.com/marcoslucianops/DeepStream-Yolo
  1. 步骤 2.将gen_wts_yoloV5.py从DeepStream-Yolo/utils复制到yolov5目录
cp DeepStream-Yolo/utils/gen_wts_yoloV5.py yolov5
  1. 步骤 3.在 yolov5 存储库中,从 YOLOv5 版本下载pt 文件(YOLOv5s 6.1 的示例)
cd yolov5
wget https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5s.pt
  1. 步骤 4.生成cfg和wts文件
python3 gen_wts_yoloV5.py -w yolov5s.pt

注意:更改推理大小(默认值:640)

-s SIZE
--size SIZE
-s HEIGHT WIDTH
--size HEIGHT WIDTH

例如: 1280:

-s 1280
or
-s 1280 1280
  1. 步骤5.将生成的cfg和wts文件复制到DeepStream-Yolo文件夹中
cp yolov5s.cfg ~/DeepStream-Yolo
cp yolov5s.wts ~/DeepStream-Yolo
  1. 步骤6.打开DeepStream-Yolo文件夹并编译库
cd ~/DeepStream-Yolo
CUDA_VER=11.4 make -C nvdsinfer_custom_impl_Yolo  # for DeepStream 6.1
CUDA_VER=10.2 make -C nvdsinfer_custom_impl_Yolo  # for DeepStream 6.0.1 / 6.0
  1. 步骤 7.根据您的模型编辑config_infer_primary_yoloV5.txt文件
[property]
...
custom-network-config=yolov5s.cfg
model-file=yolov5s.wts
...
  1. 步骤 8.编辑deepstream_app_config文件
...
[primary-gie]
...
config-file=config_infer_primary_yoloV5.txt
  1. 步骤 9.更改deepstream_app_config文件中的视频源。这里加载了默认视频文件,如下所示
...
[source0]
...
uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4

运行推理

deepstream-app -c deepstream_app_config.txt

5.INT8 校准

如果想使用INT8精度进行推理,需要按照以下步骤操作

步骤1.安装OpenCV

sudo apt-get install libopencv-dev

步骤 2.编译/重新编译支持 OpenCV 的nvdsinfer_custom_impl_Yolo库

cd ~/DeepStream-Yolo
CUDA_VER=11.4 OPENCV=1 make -C nvdsinfer_custom_impl_Yolo  # for DeepStream 6.1
CUDA_VER=10.2 OPENCV=1 make -C nvdsinfer_custom_impl_Yolo  # for DeepStream 6.0.1 / 6.0

步骤 3.对于 COCO 数据集,下载val2017,解压并移动到DeepStream-Yolo文件夹

步骤 4.为校准图像创建一个新目录

mkdir calibration

步骤 5.运行以下命令从 COCO 数据集中选择 1000 个随机图像来运行校准

for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do \
    cp ${jpg} calibration/; \
done

注意: NVIDIA 建议至少使用 500 张图像才能获得良好的准确性。在此示例中,选择 1000 个图像以获得更好的准确度(更多图像 = 更高的准确度)。较高的 INT8_CALIB_BATCH_SIZE 值将带来更高的精度和更快的校准速度。根据你的GPU显存来设置。您可以从head -1000开始设置。例如,对于 2000 个图像,head -2000。这个过程可能需要很长时间。

步骤 6.使用所有选定的图像创建calibration.txt文件

realpath calibration/*jpg > calibration.txt

步骤 7.设置环境变量

export INT8_CALIB_IMG_PATH=calibration.txt
export INT8_CALIB_BATCH_SIZE=1

步骤 8.更新config_infer_primary_yoloV5.txt文件

...
model-engine-file=model_b1_gpu0_fp32.engine
#int8-calib-file=calib.table
...
network-mode=0
...

...
model-engine-file=model_b1_gpu0_int8.engine
int8-calib-file=calib.table
...
network-mode=1
...

步骤 9.运行推理

deepstream-app -c deepstream_app_config.txt

6.基准测试结果

下表总结了不同模型在Jetson Xavier NX上的表现。

型号名称 精确 推理大小 推理时间(毫秒) FPS
YOLOv5s FP32 320x320 16.66 60
FP32 640x640 33.33 30
INT8 640x640 16.66 60
YOLOv5n FP32 640x640 16.66 60

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值