0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英伟达Jetson设备上的YOLOv8性能基准测试

柴火创客空间 来源:柴火创客空间 2023-04-12 14:27 次阅读

我们将谈论在不同的NVIDIA Jetson 系列设备上运行YOLOv8 模型的性能基准测试。我们特别选择了3种不同的Jetson设备进行测试,它们是 Jetson AGX Orin 32GB H01套件、使用Orin NX 16GB构建的reComputer J4012,以及使用Xavier NX 8GB构建的reComputer J2021。

什么是 YOLOv8 ?

YOLOv8 由 Ultralytics 公司开发,是一个尖端的、最先进的(SOTA)模型,它建立在以前的 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提高性能和灵活性。YOLOv8 被设计为快速、准确和易于使用,使其成为广泛的物体检测、图像分割和图像分类任务的绝佳选择。

YOLOv8 模型

YOLOv8有不同的模型类型,基于参数的数量,将关系到模型的准确性。因此,模型越大,它就越准确。例如,YOLOv8x是最大的模型,它在所有模型中具有最高的准确性。

bea07312-d574-11ed-bfe3-dac502259ad0.png

为什么我们需要进行性能基准测试 ?

通过运行性能基准,你可以知道在特定设备上运行的特定模型类型可以获得多大的推理性能。这对于NVIDIA Jetson平台等嵌入式设备来说更为重要,因为如果你知道你的应用程序想要使用的确切模型类型,你就可以决定哪种硬件适合运行该模型。

为什么我们需要 TensorRT基准测试 ?

TensorRT是由NVIDIA开发的一个库,用于在NVIDIA GPU上提高推理速度。TensorRT建立在CUDA之上,与运行PyTorch和ONNX等本地模型相比,在许多实时服务和嵌入式应用中,它的推理速度可以提高2到3倍。

在NVIDIA Jetson 设备上安装YOLOv8

第1步:按照Wiki中的介绍步骤,在Jetson设备中安装JetPack 系统。

第2步:按照wiki的 "安装必要的软件包 "和 "安装PyTorch和Torchvision "部分,在Jetson设备上安装YOLOv8。

如何运行基准测试 ?

当你在NVIDIA Jetson设备上安装带有SDK组件的NVIDIA JetPack时,会有一个名为trtexec的工具。该工具实际上位于随SDK组件安装而来的TensorRT内。这是一个使用TensorRT的工具,无需开发自己的应用程序。

trtexec工具有三个主要用途

在随机或用户提供的输入数据上对网络进行基准测试。

从模型中生成序列化的引擎。

从构建器中生成一个序列化的时序缓存。

在这里,我们可以使用trtexec工具对不同参数的模型进行快速基准测试。但首先,你需要有一个ONNX模型,我们可以通过使用Ultralytics YOLOv8来生成这个ONNX模型。

第1步:使用ONNX模型建立:

yolo mode=export model=yolov8s.pt format=onnx

这将下载最新的yolov8s.pt模型并转换为ONNX格式。

第2步:使用trtexec建立引擎文件,如下所示:

cd /usr/src/tensorrt/bin 
./trtexec  --onnx= --saveEngine=

比如说:

./trtexec --onnx=/home/nvidia/yolov8s.onnx -- saveEngine=/home/nvidia/yolov8s.engine

这将输出性能结果,如下所示,同时生成一个.引擎文件。默认情况下,它将把ONNX转换为FP32精度的TensorRT优化的文件,你可以看到输出如下:

bebe1566-d574-11ed-bfe3-dac502259ad0.png

在这里,我们可以把平均延迟看作是7.2ms,换算成139FPS。

然而,如果你想要INT8精度,提供更好的性能,你可以执行上述命令,如下所示:

./trtexec --onnx=/home/nvidia/yolov8s.onnx --saveEngine=/home/nvidia/yolov8s.engine --int8

bed05802-d574-11ed-bfe3-dac502259ad0.png

在这里,我们可以把平均延迟看作是3.2ms,换算成313FPS。

如果你也想在FP16精度下运行,你可以执行如下命令:

./trtexec --onnx=/home/nvidia/yolov8s.onnx --saveEngine=/home/nvidia/yolov8s.engine --fp16

要检查YOLOv8模型的默认PyTorch版本的性能,你可以简单地运行推理并检查延迟,如下所示:

yolo detect predict model=yolov8s.pt source='<>'

在这里,你可以根据本页面上的表格来改变来源。

另外,如果你不指定来源,它将默认使用一个名为 "bus.jpg "的图像。

基准测试结果

在进入基准测试结果之前,我将快速强调我们用于基准测试过程的每台设备的AI性能。

Jetson Device AGX Orin 32GB H01 Kit reComputer J4012 built with Orin NX 16GB reComputer J2021 built with Xavier NX 8GB
AI Performance 200TOPS 100TOPS 21TOPS

现在我们将看一下基准图,以比较YOLOv8在单个设备上的性能。我已经用640×640的默认PyTorch模型文件进行了所有的基准测试,如上文所解释的那样转换为ONNX格式。

AGX Orin 32GB H01 Kit

bef0f724-d574-11ed-bfe3-dac502259ad0.png

reComputer J4012 built with Orin NX 16GB

bf0cfe38-d574-11ed-bfe3-dac502259ad0.png

reComputer J2021 built with Xavier NX 8GB

bf228f5a-d574-11ed-bfe3-dac502259ad0.png

正如我们所看到的,TensorRT可以带来性能上的大幅提升。

接下来,我们将从不同的角度看一下基准图,在不同的设备上比较每个YOLOv8模型的性能。

bf37a99e-d574-11ed-bfe3-dac502259ad0.png

bf4e5d74-d574-11ed-bfe3-dac502259ad0.png

如果我们比较一下最大的YOLOv8模型,即在上述3个设备上运行的YOLOv8x,我们会得到以下结果:

bf676030-d574-11ed-bfe3-dac502259ad0.png

正如你所看到的,在最大的YOLOv8x模型上使用INT8精度,我们可以在AGX Orin 32GB上实现约75的FPS,这对于一个嵌入式设备来说是非常令人印象深刻的!我们可以看到,在AGX Orin 32GB上的FPS为1.5,而在AGX Orin 32GB上的FPS为2.5!

AI 边缘计算盒子

reComputer J2021-Edge AI 设备

J2021是一款采用Jetson Xavier NX 8GB模块的边缘AI设备,可提供高达21TOPS算力,丰富的IO端口包括USB 3.1端口(4x)、用于WIFI的M.2接口、用于SSD的M.2接口、RTC、CAN树莓派 GPIO 40针扩展接口等;外壳采用铝合金材质带冷却风扇,预装JetPack系统,可以作为NVIDIA Jetson Xavier NX Dev Kit的替代品,为您的AI应用开发和部署提供支持。

reComputer J4012-Edge AI 边缘计算设备

reComputer J4012是一款采用NVIDIA Jetson Orin NX 16GB模块的边缘AI设备,可提供高达100 TOPS算力的AI性能,并拥有丰富的IO接口,包括USB 3.2端口(4x)、HDMI 2.1、用于WIFI的M.2接口、用于SSD的M.2接口、RTC、CAN、树莓派GPIO 40针接口等;外壳采用铝合金材质自带散热风扇,预装NVIDIA JetPack的Jetpack系统。作为NVIDIA Jetson生态系统的一部分,reComputer J4012可以为您的AI应用开发和部署提供支持。

写在最后

根据上述所有基准测试,多年来,在英伟达Jetson Orin平台等嵌入式设备上,推理性能似乎有了显著提高,现在我们几乎可以用这种紧凑的设备来匹配服务器级别的性能了!

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    87

    文章

    30919

    浏览量

    269168
  • 基准测试
    +关注

    关注

    0

    文章

    19

    浏览量

    7588
  • 模型
    +关注

    关注

    1

    文章

    3247

    浏览量

    48855
  • 英伟达
    +关注

    关注

    22

    文章

    3776

    浏览量

    91138
  • 边缘计算
    +关注

    关注

    22

    文章

    3093

    浏览量

    48990

原文标题:边缘计算 | 英伟达Jetson设备上的YOLOv8性能基准测试

文章出处:【微信号:ChaiHuoMakerSpace,微信公众号:柴火创客空间】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【爱芯派 Pro 开发板试用体验】yolov8模型转换

    通过开发板预制的ax_run_model 工具,测试模型速度和精度。 示例都是yolov5的,没有yolov8,模型怎么运行还需进一步研究。
    发表于 11-20 12:19

    使用YOLOv8做目标检测和实例分割的演示

    YOLOv8是来自Ultralytics的最新的基于YOLO的对象检测模型系列,提供最先进的性能
    的头像 发表于 02-06 10:11 7507次阅读

    YOLOv8自定义数据集训练到模型部署推理简析

    如果你只是想使用而不是开发,强烈推荐通过pip安装方式获取YOLOv8包!YOLOv8安装命令行
    的头像 发表于 03-24 09:27 4670次阅读

    在AI爱克斯开发板用OpenVINO™加速YOLOv8目标检测模型

    《在 AI 爱克斯开发板用 OpenVINO 加速 YOLOv8 分类模型》介绍了在 AI 爱克斯开发板使用 OpenVINO 开发套件部署并测评 YOLOv8 的分类模型,本文将
    的头像 发表于 05-12 09:08 1329次阅读
    在AI爱克斯开发板<b class='flag-5'>上</b>用OpenVINO™加速<b class='flag-5'>YOLOv8</b>目标检测模型

    YOLOv8版本升级支持小目标检测与高分辨率图像输入

    YOLOv8版本最近版本又更新了,除了支持姿态评估以外,通过模型结构的修改还支持了小目标检测与高分辨率图像检测。原始的YOLOv8模型结构如下。
    的头像 发表于 05-16 11:14 1.2w次阅读
    <b class='flag-5'>YOLOv8</b>版本升级支持小目标检测与高分辨率图像输入

    AI爱克斯开发板使用OpenVINO加速YOLOv8目标检测模型

    《在AI爱克斯开发板用OpenVINO加速YOLOv8分类模型》介绍了在AI爱克斯开发板使用OpenVINO 开发套件部署并测评YOLOv8的分类模型,本文将介绍在AI爱克斯开发板
    的头像 发表于 05-26 11:03 1251次阅读
    AI爱克斯开发板<b class='flag-5'>上</b>使用OpenVINO加速<b class='flag-5'>YOLOv8</b>目标检测模型

    教你如何用两行代码搞定YOLOv8各种模型推理

    大家好,YOLOv8 框架本身提供的API函数是可以两行代码实现 YOLOv8 模型推理,这次我把这段代码封装成了一个类,只有40行代码左右,可以同时支持YOLOv8对象检测、实例分割、姿态评估模型的GPU与CPU
    的头像 发表于 06-18 11:50 3070次阅读
    教你如何用两行代码搞定<b class='flag-5'>YOLOv8</b>各种模型推理

    三种主流模型部署框架YOLOv8推理演示

    深度学习模型部署有OpenVINO、ONNXRUNTIME、TensorRT三个主流框架,均支持Python与C++的SDK使用。对YOLOv5~YOLOv8的系列模型,均可以通过C++推理实现模型
    的头像 发表于 08-06 11:39 2752次阅读

    解锁YOLOv8修改+注意力模块训练与部署流程

    很多人也想跟修改YOLOv5源码一样的方式去修改YOLOv8的源码,但是在github上面却发现找到的YOLOv8项目下面TAG分支是空的
    的头像 发表于 08-11 14:14 4369次阅读
    解锁<b class='flag-5'>YOLOv8</b>修改+注意力模块训练与部署流程

    如何修改YOLOv8的源码

    很多人也想跟修改YOLOv5源码一样的方式去修改YOLOv8的源码,但是在github上面却发现找到的YOLOv8项目下面TAG分支是空的,然后就直接从master/main下面把源码克隆出来一通
    的头像 发表于 09-04 10:02 2011次阅读
    如何修改<b class='flag-5'>YOLOv8</b>的源码

    YOLOv8实现任意目录下命令行训练

    当你使用YOLOv8命令行训练模型的时候,如果当前执行的目录下没有相关的预训练模型文件,YOLOv8就会自动下载模型权重文件。这个是一个正常操作,但是你还会发现,当你在参数model中指定已有
    的头像 发表于 09-04 10:50 1118次阅读
    <b class='flag-5'>YOLOv8</b>实现任意目录下命令行训练

    日本yolov8用户案例

    通过模拟人手臂的姿态来控制机械臂。演示的内容是使用USB摄像头通过图像识别估计手臂,并将mycobot制作成类似的手臂形状。 视频链接:https://youtu.be/h1H6pSvhQxQ 该项目主要使用Ultralytics YOLOv8来进行姿态的估计,结合机器视觉和机械臂的控制
    的头像 发表于 12-18 15:51 638次阅读
    日本<b class='flag-5'>yolov8</b>用户案例

    基于YOLOv8的自定义医学图像分割

    YOLOv8是一种令人惊叹的分割模型;它易于训练、测试和部署。在本教程中,我们将学习如何在自定义数据集使用YOLOv8。但在此之前,我想告诉你为什么在存在其他优秀的分割模型时应该使用
    的头像 发表于 12-20 10:51 783次阅读
    基于<b class='flag-5'>YOLOv8</b>的自定义医学图像分割

    YOLOv8实现旋转对象检测

    YOLOv8框架在在支持分类、对象检测、实例分割、姿态评估的基础更近一步,现已经支持旋转对象检测(OBB),基于DOTA数据集,支持航拍图像的15个类别对象检测,包括车辆、船只、典型各种场地等。包含2800多张图像、18W个实例对象。
    的头像 发表于 01-11 10:43 1840次阅读
    <b class='flag-5'>YOLOv8</b>实现旋转对象检测

    基于OpenCV DNN实现YOLOv8的模型部署与推理演示

    基于OpenCV DNN实现YOLOv8推理的好处就是一套代码就可以部署在Windows10系统、乌班图系统、Jetson的Jetpack系统
    的头像 发表于 03-01 15:52 1637次阅读
    基于OpenCV DNN实现<b class='flag-5'>YOLOv8</b>的模型部署与推理演示