Ultralytics YOLOv8 英伟达™ Jetson®处理器部署

系列文章目录


前言

本综合指南提供了在英伟达 Jetson设备上部署Ultralytics YOLOv8 的详细攻略。此外,它还展示了性能基准,以证明YOLOv8 在这些小巧而功能强大的设备上的性能。

备注

        本指南使用Seeed Studio reComputer J4012进行测试,它基于运行最新稳定JetPack版本JP5.1.3的NVIDIA Jetson Orin NX 16GB。对于较旧的 Jetson 设备,如 Jetson Nano(仅支持 JP4.6.4 之前的版本),可能无法保证使用本指南。不过,本指南有望在所有运行 JP5.1.3 的 Jetson Orin、Xavier NX 和 AGX Xavier 设备上运行。

 


一、什么是 NVIDIA Jetson?

        英伟达™(NVIDIA®)Jetson 是一系列嵌入式计算板卡,旨在为边缘设备带来加速的 AI(人工智能)计算。这些小巧而功能强大的设备围绕英伟达™(NVIDIA®)的GPU架构打造,能够直接在设备上运行复杂的人工智能算法和深度学习模型,而无需依赖云计算资源。Jetson 板卡通常用于机器人、自动驾驶汽车、工业自动化和其他需要在本地以低延迟和高效率执行人工智能推理的应用中。此外,这些板卡基于 ARM64 架构,与传统 GPU 计算设备相比运行功耗更低。

二、英伟达 Jetson 系列对比

        Jetson Orin是英伟达 Jetson 系列的最新迭代产品,基于英伟达安培架构,与前几代产品相比,人工智能性能大幅提升。下表比较了生态系统中的几款 Jetson 设备。

Jetson AGX Orin 64GBJetson Orin NX 16GBJetson Orin Nano 8GBJetson AGX XavierJetson Xavier NXJetson Nano
人工智能性能275 TOPS100 TOPS40 TOPs32 TOPS21 TOPS472 GFLOPS
GPU2048 核英伟达安培架构 GPU,64 个Tensor 内核1024 核英伟达安培架构图形处理器,配备 32 个Tensor 内核1024 核英伟达安培架构图形处理器,配备 32 个Tensor 内核512 核英伟达 Volta 架构 GPU,64 个Tensor 内核384 核英伟达 Volta™ 架构 GPU,配备 48 个Tensor 内核128 核英伟达™(NVIDIA®)Maxwell™ 架构图形处理器
图形处理器最高频率1.3 千兆赫918 兆赫625 兆赫1377 兆赫1100 兆赫921MHz
中央处理器12 核 NVIDIA Arm® Cortex A78AE v8.2 64 位 CPU 3MB L2 + 6MB L38 核 NVIDIA Arm® Cortex A78AE v8.2 64 位 CPU 2MB L2 + 4MB L36 核 Arm® Cortex®-A78AE v8.2 64 位 CPU 1.5MB L2 + 4MB L38 核 NVIDIA Carmel Arm®v8.2 64 位 CPU 8MB L2 + 4MB L36 核 NVIDIA Carmel Arm®v8.2 64 位 CPU 6MB L2 + 4MB L3四核 Arm® Cortex®-A57 MPCore 处理器
CPU 最高频率2.2 千兆赫2.0 千兆赫1.5 千兆赫2.2 千兆赫1.9 千兆赫1.43GHz
内存64GB 256 位 LPDDR5 204.8GB/s16GB 128 位 LPDDR5 102.4GB/s8GB 128 位 LPDDR5 68 GB/s32GB 256 位 LPDDR4x 136.5GB/s8GB 128 位 LPDDR4x 59.7GB/s4GB 64 位 LPDDR4 25.6GB/s"

        如需更详细的比较表,请访问NVIDIA Jetson 官方网页的技术规格部分。

三、什么是 NVIDIA JetPack?

        英伟达™(NVIDIA®)JetPack SDK为Jetson模块提供动力,是最全面的解决方案,为构建端到端加速人工智能应用提供了完整的开发环境,缩短了产品上市时间。JetPack 包括带有引导加载器的 Jetson Linux、Linux 内核、Ubuntu 桌面环境以及一整套用于加速 GPU 计算、多媒体、图形和计算机视觉的库。它还包括用于主机和开发者工具包的示例、文档和开发者工具,并支持更高级别的 SDK,如用于流媒体视频分析的 DeepStream、用于机器人技术的 Isaac 和用于对话式人工智能的 Riva。

四、将 Flash JetPack 插入英伟达™ Jetson

        拿到 NVIDIA Jetson 设备后,第一步就是将 NVIDIA JetPack 闪存到设备上。闪存英伟达™ Jetson 设备有几种不同的方法。

  1. 如果你拥有官方的英伟达开发套件(如 Jetson Orin Nano 开发套件),可以访问此链接下载映像,并准备一张装有 JetPack 的 SD 卡以启动设备。
  2. 如果您拥有其他英伟达™(NVIDIA®)开发套件,可以访问此链接,使用SDK 管理器将 JetPack 闪存到设备。
  3. 如果你拥有 Seeed Studio reComputer J4012 设备,可以访问此链接将 JetPack 闪存到附带的固态硬盘中。
  4. 如果您拥有任何其他由英伟达™(NVIDIA®)Jetson 模块驱动的第三方设备,建议访问此链接进行命令行闪存。

备注

        对于上述方法 3 和 4,在刷新系统并启动设备后,请在设备终端输入 "sudo apt update && sudo apt install nvidia-jetpack-y",以安装所需的所有剩余 JetPack 组件。

 

五、从 Docker 开始

        在英伟达™(NVIDIA®)Jetson 上开始使用Ultralytics YOLOv8 的最快方法是使用为 Jetson 预制的 docker 镜像。

        执行以下命令,提取 Docker 容器并在 Jetson 上运行。这是基于l4t-pytorchdocker 镜像,其中包含 Python3 环境中的PyTorch 和 Torchvision。

t=ultralytics/ultralytics:latest-jetson && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t

 

六、不使用 Docker 启动

6.1 安装Ultralytics 软件包

        在这里,我们将在 Jetson 上安装 ultralyics 软件包和可选依赖项,以便将PyTorch 模型导出为其他不同格式。我们将主要关注英伟达TensorRT 导出,因为 TensoRT 将确保我们能从 Jetson 设备中获得最高性能。

  1. 更新软件包列表,安装 pip 并升级到最新版本
    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
  2. 安装 ultralytics pip 软件包与可选依赖项
    pip install ultralytics[export]
  3. 重启设备
    sudo reboot

6.2 安装PyTorch 和 Torchvision

        上述ultralytics 安装程序将安装Torch 和 Torchvision。但是,通过 pip 安装的这两个软件包无法在基于 ARM64 架构的 Jetson 平台上兼容运行。因此,我们需要手动安装预编译的PyTorch pip wheel,并从源代码编译/安装 Torchvision。

  1. 卸载当前安装的PyTorch 和 Torchvision
    pip uninstall torch torchvision
  2. 根据 JP5.1.3 安装PyTorch 2.1.0
    sudo apt-get install -y libopenblas-base libopenmpi-dev
    wget https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl -O torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
    pip install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
  3. 根据PyTorch v2.1.0 安装 Torchvision v0.16.2
    sudo apt install -y libjpeg-dev zlib1g-dev
    git clone https://github.com/pytorch/vision torchvision
    cd torchvision
    git checkout v0.16.2
    python3 setup.py install --user

        访问此页面可访问针对不同 JetPack 版本的所有不同版本的PyTorch 。有关PyTorch, Torchvision 兼容性的更详细列表,请点击此处。

七、在 NVIDIA Jetson 上使用TensorRT

        在Ultralytics 支持的所有模型导出格式中,TensorRT 在使用英伟达 Jetson 设备时推理性能最佳,我们建议在使用 Jetson 时使用TensorRT 。我们还在此处提供了有关TensorRT 的详细文档。

八、将模型转换为TensorRT 并运行推理

        PyTorch 格式的YOLOv8n 模型转换为TensorRT 格式,以便使用导出的模型进行推理。

示例

from ultralytics import YOLO# Load a YOLOv8n PyTorch model
model = YOLO('yolov8n.pt')# Export the model
model.export(format='engine')  # creates 'yolov8n.engine'# Load the exported TensorRT model
trt_model = YOLO('yolov8n.engine')# Run inference
results = trt_model('https://ultralytics.com/images/bus.jpg')
# Export a YOLOv8n PyTorch model to TensorRT format
yolo export model=yolov8n.pt format=engine  # creates 'yolov8n.engine'# Run inference with the exported model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'

九、论据

钥匙价值说明
format'engine'格式导出到
imgsz640图像尺寸标量或(高,宽)列表,即(640,480)
halfFalseFP16 量化

十、英伟达 Jetson OrinYOLOv8 基准测试

        YOLOv8 以下基准测试由Ultralytics 团队在 3 种不同的模型格式上运行,测量速度和精度:PyTorch 、TorchScript 和TensorRT 。基准测试在搭载 Jetson Orin NX 16GB 设备的 Seeed Studio reComputer J4012 上运行,精度为 FP32,默认输入图像大小为 640。

模型格式现状大小(MB)mAP50-95(B)推理时间(毫秒/分钟)
YOLOv8nPyTorch6.20.447314.3
YOLOv8nTorchScript12.40.452013.3
YOLOv8nTensorRT13.60.45208.7
YOLOv8sPyTorch21.50.586818
YOLOv8sTorchScript43.00.597123.9
YOLOv8sTensorRT44.00.596514.82
YOLOv8mPyTorch49.70.610136.4
YOLOv8mTorchScript99.20.612553.34
YOLOv8mTensorRT100.30.612333.28
YOLOv8lPyTorch83.70.658861.3
YOLOv8lTorchScript167.20.658785.21
YOLOv8lTensorRT168.30.659151.34
YOLOv8xPyTorch130.50.665093
YOLOv8xTorchScript260.70.6651135.3
YOLOv8xTensorRT261.80.664584.5

        该表显示了三种不同格式(PyTorch,TorchScript,TensorRT )下的五个不同模型(YOLOv8n,YOLOv8s,YOLOv8m,YOLOv8l,YOLOv8x )的基准结果,并给出了每种组合的状态、大小、mAP50-95(B) 指标和推理时间。

        请访问此链接,查看 Seeed Studio 在不同版本的英伟达™(NVIDIA®)Jetson 硬件上运行的更多基准测试结果。

十一、复制我们的结果

        要在所有导出格式上重现上述Ultralytics 基准,请运行此代码:

示例

from ultralytics import YOLO# Load a YOLOv8n PyTorch model
model = YOLO('yolov8n.pt')# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data='coco8.yaml', imgsz=640)
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml imgsz=640

备注

        目前只有PyTorch 、Torchscript 和TensorRT 可与基准测试工具配合使用。我们将在未来进行更新,以支持其他出口。

十二、使用英伟达™ Jetson 时的最佳实践

        在使用英伟达™(NVIDIA®)Jetson 时,需要遵循一些最佳实践,以便在运行YOLOv8 的英伟达™(NVIDIA®)Jetson 上实现最高性能。

  1. 启用 MAX 功率模式

    sudo nvpmodel -m 0

    在 Jetson 上启用 MAX Power 模式将确保所有 CPU 和 GPU 内核都处于开启状态。

  2. 启用 Jetson 时钟

    sudo jetson_clocks

    启用 Jetson Clocks 可确保所有 CPU 和 GPU 内核都以最高频率运行。

  3. 安装 Jetson Stats 应用程序

    我们可以使用 jetson stats 应用

    sudo apt update
    sudo pip install jetson-stats
    sudo reboot
    jtop

    程序监控系统组件的温度,检查其他系统细节,如查看 CPU、GPU、RAM 利用率,更改电源模式,设置为最大时钟,检查 JetPack 信息等。

十三、下一步工作

        恭喜您在 NVIDIA Jetson 上成功设置YOLOv8 !如需进一步学习和支持,请访问Ultralytics YOLOv8 Docs 获取更多指南!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在邮件控件Aspose.Email中,处理Outlook TNEF 格式电子邮件

Microsoft Outlook 中常见的传输中性封装格式 (TNEF)电子邮件在处理和提取其内容时可能会带来挑战。在这篇博文中,我们将探讨如何使用强大的 .NET C# 库来处理此类消息,该库简化了各种电子邮件格式(包括 TNEF)的处理。 Aspose.Em…

尚硅谷-JavaSE阶段考试与面试题库

一、基础题 1&#xff09;用最有效的的方法算出2称以8等于几 答案&#xff1a;2<<3 2&#xff09;两个对象a和b&#xff0c;请问ab和a.equals(b)有什么区别&#xff1f; ab&#xff1a;比较对象地址 a.equals(b)&#xff1a;如果a对象没有重写过equals方法&#xff0c…

【技术干货】润石红外额温枪方案芯片功能介绍

手持红外额温枪框图中&#xff0c;以电池采用9V为例&#xff0c;先通过一个高压LDO RS3002 把电池电压转为3V&#xff0c;供整个系统使用&#xff0c;包括为 MCU&#xff0c;背光灯&#xff0c;运放 等器件供电&#xff0c;然后再用一个低功耗LDO RS3236 从3V 降为1.5V&#…

rc_visard 3D Stereo Senso

1 简介 rc_visard 3D立体视觉传感器 支持的接口标准 GenICam Generic Interface for CamerasGigE Gigabit Ethernet 词汇表 SGM semi-global matching 半全局匹配 SLAM Simultaneous Localization and Mapping 即时定位与地图构建 2 安全 3 硬件规格 坐标系 rc_visar…

TypeScript 中 interface 和 type 的使用#记录

一、interface&#xff1a;接口 interface A{label: string; }const aa ((aObj: A) > {console.log(aObj.label);//123return aObj.label; })aa({label: 123}) 1、可选属性 interface A{label: string;age?: number; } 2、只读属性 interface A{label: string;age?:…

231 基于matlab的北斗信号数据解析

基于matlab的北斗信号数据解析&#xff0c;多通道和单通道接收到的北斗信号数据&#xff0c;利用接收到的北斗数据&#xff08;.dat .txt文件&#xff09;&#xff0c;进行解析&#xff0c;得到初始伪距&#xff0c;平滑伪距&#xff0c;载波相位&#xff0c;并计算其标准差&am…

翱途开发平台新手上路-体验APP移动手机办公

O2OA(翱途)开发平台拥有配套的移动办公APP&#xff0c;支持IOS和安卓端&#xff0c;用户可在连接O2云之后&#xff0c;使用APP使用移动办公。移动办公APP开放源代码&#xff0c;不会产生任何费用。本篇主要简单讲述初如何完成服务器连接O2云&#xff0c;实现移动办公。 一、先决…

Barnes-Hut t-SNE:大规模数据的高效降维算法

在数据科学和分析中&#xff0c;理解高维数据集中的底层模式是至关重要的。t-SNE已成为高维数据可视化的有力工具。它通过将数据投射到一个较低维度的空间&#xff0c;提供了对数据结构的详细洞察。但是随着数据集的增长&#xff0c;标准的t-SNE算法在计算有些困难&#xff0c;…

什么是IoT?

什么是IoT&#xff1f; IoT&#xff0c;即物联网&#xff08;Internet of Things&#xff09;&#xff0c;是通过信息传感设备和互联网将各种物品连接起来&#xff0c;实现智能化的识别、定位、跟踪、监控和管理的网络系统。 以下是关于IOT的一些详细解释&#xff1a; 基本概…

JVM之本地方法栈和程序计数器和堆

本地方法栈 本地方法栈是为虚拟机执行本地方法时提供服务的 JNI&#xff1a;Java Native Interface&#xff0c;通过使用 Java 本地接口程序&#xff0c;可以确保代码在不同的平台上方便移植 不需要进行 GC&#xff0c;与虚拟机栈类似&#xff0c;也是线程私有的&#xff0c;…

OCP Java17 SE Developers 复习题13

答案 D, F. There is no such class within the Java API called ParallelStream, so options A and E are incorrect. The method defined in the Stream class to create a parallel stream from an existing stream is parallel(); therefore, option F is correct, and o…

高斯溅射融合之路(一)- webgl渲染3d gaussian splatting

大家好&#xff0c;我是山海鲸的技术负责人。之前已经写了一个GIS融合系列。其实CesiumJS的整合有相当的难度&#xff0c;同时也有很多方面的工作&#xff0c;很难在几篇文章内写完&#xff0c;整个山海鲸团队也是投入了接近两年的时间&#xff0c;才把周边整套工具链进行了完善…

Linux中inode号与日志分析

一.inode号 1.inode表结构 元信息&#xff1a;每个文件的属性信息&#xff0c;比如&#xff1a;文件的大小&#xff0c;时间&#xff0c;类型&#xff0c;权限等&#xff0c;称为文件的元数据(meta data 元信息 ) 元数据是存放在inode&#xff08;index node&#xff09;表中…

Spring Kafka—— KafkaListenerEndpointRegistry 隐式注册分析

由于我想在项目中实现基于 Spring kafka 动态连接 Kafka 服务&#xff0c;指定监听 Topic 并控制消费程序的启动和停止这样一个功能&#xff0c;所以就大概的了解了一下 Spring Kafka 的几个重要的类的概念&#xff0c;内容如下&#xff1a; ConsumerFactory 作用&#xff1a;…

Opencv_2_ 图像色彩空间转换

ColorInvert.h 内容如下&#xff1a; #pragma once #include <opencv.hpp> using namespace std; #include <opencv.hpp> using namespace cv; using namespace std; class ColorInvert{ public : void colorSpaceInvert(Mat&image); }; ColorInvert.cpp…

高效过滤器检漏方法选择指南及关键注意事项一览

在生物制药企业中&#xff0c;高效过滤器&#xff08;HEPA&#xff09;的检漏工作是确保洁净室能够达到并保持设计的洁净级别的关键步骤。这关系到产品的质量和安全&#xff0c;因此必须遵循相关法规标准和操作流程。 关于北京中邦兴业 北京中邦兴业科技有限公司是一家国家高新…

element中file-upload组件的提示‘按delete键可删除’,怎么去掉?

问题描述 element中file-upload组件会出现这种提示‘按delete键可删除’ 解决方案&#xff1a; 这是因为使用file-upload组件时自带的提示会盖住上传的文件名&#xff0c;修改一下自带的样式即可 ::v-deep .el-upload-list__item.is-success.focusing .el-icon-close-tip {d…

基于SpringBoot的宠物领养网站管理系统

基于SpringBootVue的宠物领养网站管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 宠物领养 宠物救助站 宠物论坛 登录界面 管理员界面 摘要 基于Spr…

1.C++入门

目录 1.C关键字 2.命名空间 作用域方面的优化 a.命名空间定义 b.命名空间使用 3.C 输入&输出 1.C关键字 C有63个关键字&#xff0c;C语言有32个关键字&#xff0c;存在重叠如荧光笔标出 2.命名空间 作用域方面的优化 如果变量&#xff0c;函数和类的名称都存在于全…

AI自动生成PPT文档 aippt的API介绍文档

官方链接直达&#xff01; 产品介绍​ 能力介绍​ AiPPT 是一款智能生成演示幻灯片的在线工具。专业设计团队打造海量模板资源&#xff0c;输入标题即可轻松生成完整的PPT。同时 AiPPT 支持导入多格式文档一键生成 PPT&#xff0c;让 PPT 创作更加高效。聚焦于内容&#xff0…