常用视觉分类、目标检测模型性能测试

说明

测试常用CV模型在单张图像上的识别速度,不包含图像读取时间,但包含图像预处理。可以在以后的应用中根据硬件配置选取合适的模型,达到最佳效果。其中推理速度为正常推理的速度,加速CPU使用openvino加速,GPU使用tensorrt加速。

CPU硬件: Intel i7 11700 16GB

GPU硬件: Nvidia rtx 3090 24GB

测试代码地址:https://github.com/lining808/cv_time_speed

CPU

目标检测

其中推理速度单位为秒,测试十张图像取平均值。mAP准确率在COCO数据集得到。旋转目标检测mAP在DOTAv1数据集得到。

模型推理速度加速mAP@50-95
yolov5nu0.1170.02334.3
yolov5su0.2620.04743.0
yolov5mu0.5850.0949.0
yolov5lu1.1650.17252.2
yolov8n0.1280.02437.3
yolov8s0.3230.05344.9
yolov8m0.6480.10850.2
yolov8l1.2520.23652.9
yolov9n0.1770.02938.3
yolov9s0.3720.0546.8
yolov9m0.8860.11551.4
yolov9l1.2390.14853.0
yolov10n0.1720.04338.5
yolov10s0.3650.07546.3
yolov10m0.8180.13851.1
yolov10l1.3740.24253.2
rtdetr-l1.2610.18253.0
rtdetr-x2.2320.32154.8
yolov8n-obb0.3110.05178.0
yolov8s-obb0.7170.15779.5
yolov8m-obb1.6350.27980.5
yolov8l-obb3.1391.12780.7

图像分类

其中推理速度单位为秒,测试十张图像取平均值。Top-1准确率在ImageNet数据集得到。

模型推理速度加速Top-1
yolov8n-cls0.0170.00569.0
yolov8s-cls0.0370.00773.8
yolov8m-cls0.0760.01176.8
yolov8l-cls0.1460.02976.8
yolov8x-cls0.2579.0
resnet180.30672.1
resnet340.41875.5
resnet500.90377.2
resnet1011.61478.3
mobilenet_v3_small0.09367.4
mobilenet_v3_large0.25275.2
efficientnet_v2_s0.98883.9
efficientnet_v2_m1.68485.1
swin_v2_t1.41281.6
swin_v2_b4.07484.1
convnext_tiny0.76682.9
convnext_base2.36385.8

GPU

目标检测

其中推理速度单位为秒,测试十张图像取平均值。mAP准确率在COCO数据集得到。旋转目标检测mAP在DOTAv1数据集得到。

模型推理速度加速mAP@50-95
yolov5nu0.0270.00834.3
yolov5su0.0280.00743.0
yolov5mu0.030.00949.0
yolov5lu0.0320.01552.2
yolov8n0.0250.00737.3
yolov8s0.0230.00844.9
yolov8m0.0260.01150.2
yolov8l0.0260.01552.9
yolov9n0.0330.00838.3
yolov9s0.0320.00846.8
yolov9m0.0380.01251.4
yolov9l0.0260.01353.0
yolov10n0.0180.00638.5
yolov10s0.0190.00746.3
yolov10m0.0250.00951.1
yolov10l0.0240.01353.2
rtdetr-l0.0453.0
rtdetr-x0.04554.8
yolov8n-obb0.0470.00678.0
yolov8s-obb0.030.00879.5
yolov8m-obb0.0390.01480.5
yolov8l-obb0.0410.02380.7

图像分类

其中推理速度单位为秒,测试十张图像取平均值。Top-1准确率在ImageNet数据集得到。

模型推理速度加速Top-1
yolov8n-cls0.0120.02169.0
yolov8s-cls0.0120.0273.8
yolov8m-cls0.0130.02776.8
yolov8l-cls0.0140.02976.8
yolov8x-cls0.0160.0379.0
resnet180.04272.1
resnet340.04675.5
resnet500.05577.2
resnet1010.06378.3
mobilenet_v3_small0.05467.4
mobilenet_v3_large0.05675.2
efficientnet_v2_s0.07483.9
efficientnet_v2_m0.07685.1
swin_v2_t0.12781.6
swin_v2_b0.14584.1
convnext_tiny0.04882.9
convnext_base0.06885.8

结论

总体来说YOLO不论是分类还是目标检测,基本上做到了速度和精度的均衡。
openvino加速可以比pt推理快6倍左右,但需要CPU是英特尔平台并且有集成显卡。精度有一定程度下降,平均下降2-3%。onnx推理精度几乎保持不变,速度提升约3倍。
tensorrt加速可以比pt推理快3倍左右,需要GPU为英伟达平台。精度基本保持不变,下降在1%内。

推荐模型

图像分类

速度均衡精度
CPUyolov8n-clsyolov8m-clsefficientnet_v2_m
GPUyolov8n-clsyolov8m-clsconvnext_base

目标检测

速度均衡精度
CPUyolov8nyolov8myolov9l
GPUyolov10nyolov10myolov10l

推理格式

CPU推理有集显使用openvino,无集显使用onnx。

GPU推理使用tensorrt

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

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

相关文章

产品经理-一份标准需求文档的8个模块(14)

一份标准优秀的产品需求文档包括: ❑ 封面; ❑ 文档修订记录表; ❑ 目录; ❑ 引言; ❑ 产品概述:产品结构图 ❑ 详细需求说明:产品逻辑图、功能与特性简述列表、交互/视觉设计、需求详细描述&am…

docker运行nginx挂载前端html页面步骤

1.常用docker命令 1.docker ps -a 查看所有容器 2.docker ps查看存活的容器 3.docker rm 删除容器 4.docker stop 停止容器运行 5.docker logs 容器id 查看容器日志 6.docker images 查看镜像 7.docker rmi 删除镜像 8.docker exec nginx nginx -s reload 重新加载conf文件…

H3C MSR2600路由器IPv6地址显示TENTATIVE的故障

有一MSR2600路由器,系统软件版本为5.2 R2516P28,使用电信PON PPPoE拨号上网。 在全局启用IPv6,并在Dialer接口上配置了如下IPv6命令: ipv6 address auto ipv6 address auto link-local 使用display ipv6 interface brief命令查看…

Java中的volatile关键字有什么作用?

Java中的volatile关键字是一种轻量级的同步机制,它主要有两个作用: 保证可见性(Visibility): 当多个线程访问某个类的共享变量时,如果没有适当的同步机制,一个线程对变量的修改可能对其他线程不…

闲来无事,论茴香豆的茴有几种写法

一、引言 以下是几行浅薄而简洁的代码,聊聊add函数有哪几种写法。抛砖引玉,也许在你实际的项目中会带来些许的收益。 二、知识点 知识点比较简单: 左值和右值引用,std::move 的移动语义,模版等 三、代码&#xff0…

Java实现数据结构——双链表

目录 一、前言 二、实现 2.1 类的创建 三、对链表操作实现 3.1 打印链表 3.2 插入数据 3.2.1 申请新节点 3.2.2 头插 ​编辑 3.2.3 尾插 3.2.4 链表长度 3.2.5 任意位置插入 3.3 删除数据 3.3.1 头删 3.3.2 尾删 3.3.3 删除指定位置数据 3.3.4 删除指定数据 3…

C++ PImpl模式、指向实现的指针、PImpl Idiom、隐藏实现细节

C PImpl模式、指向实现的指针、PImpl Idiom、隐藏实现细节 flyfish PImpl 全称是 “Pointer to Implementation”,在中文中通常翻译为“指向实现的指针”或者“指向实现”。PImpl 是一种编程技巧,通常用于 C 中,通过这种技术,可…

涉案财物管理系统|八大模块可视化展示

涉案财物管理系统DW-S405系统基于物联网技术规范涉案财物管理流程,确保涉案财物的安全性、完整性和合法性;可以提高办案效率,减少办案成本,实现资源共享。 涉案财物管理系统DW-S405主要分为 8 大模块数据展示。 1、案件信息&…

Linux C | 管道open打开方式

Linux C | 管道open打开方式 1.参考 1. 管道 2.现象 是的,这段代码在调用 open(AUDIOIN_FIFO, O_RDONLY) 时可能会被阻塞。原因是 FIFO(命名管道)在以只读模式打开时,如果没有其他进程以写模式打开该 FIFO,open 调用将…

防火墙综合实验二

目录 实验要求 IP地址配置 需求七 需求八 需求九 需求十 需求十一 实验要求 接防火墙综合实验一! 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换)。 8,分公司设备可以通过…

美无定论,娜扎亦菲各自绽放你更爱哪一款?

娜扎亦菲各自绽放你更爱哪一款? 哎呀,这个问题可真是让我头疼呢, 就像让我在两个糖果店里选择最甜的那一颗一样难! 古力娜扎和刘亦菲,两位都是娱乐圈里璀璨的明珠, 美得各有千秋,让人怎么舍得…

python爬虫js逆向入门

js基础 在 JavaScript 逆向工程中,常常会遇到一些复杂的代码结构,这些代码可能包含各种函数定义、对象操作、异步调用等。 ### 1. 函数声明和调用function generateSignature(uri, params) { // 将 uri 和参数对象转换为字符串 var data uri ? Objec…

C++基础入门(上)

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 C基础入门(上) 收录于专栏【C语法基础】 本专栏旨在分享学习C的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. C发展历史 2. C版本…

如何在SpringCloud项目中实现断路器模式?

在Spring Cloud项目中实现断路器(Circuit Breaker)模式可以通过几种不同的库实现,如Netflix Hystrix、Resilience4j或Spring Cloud Circuit Breaker。断路器模式允许您的应用在遇到服务故障时快速失败,防止故障的蔓延和系统过载&a…

ffmpeg 找到编解码器,和编解码器上下文后,是如何初始化具体的编解码器的?aac 初始化流程大致如下

1.当使用 avcodec_find_encoder_by_name找到编码器的时候, const AVCodec * aacencoder avcodec_find_encoder_by_name("libx264"); 编码器 有值的是: id AV_CODEC_ID_H264 (27) long_name libx264 H.264…

read paper and make summer (Image enhancement)

read paper and make summer ==标题==:图像==标题==:低级视觉方法==标题==:颜色直方图==标题==:颜色空间变换==标题==:亮度通道==标题==:色度通道==标题==:图像滤波==标题==:方盒滤波==标题==:均值滤波==标题==:高斯滤波(去噪)==标题==:中值滤波(去噪)==标题==:…

Goland 通道

channel通道 目录 channel通道 channel介绍 channel基本使用 有缓存通道和无缓存通道的区别 通道的初始化,写入数据到通道,从通道读取数据及基本的注意事项 channel的关闭和遍历 channel的关闭 为什么关闭 如何优雅地关闭通道 channel的遍历 chan…

小众好玩的赛车游戏:环道巨星 CIRCUIT SUPERSTARS中文安装包

《环道巨星》(Circuit Superstars)是一款由赛车迷亲手为其他赛车迷打造的俯视角赛车游戏。荟集史上各类赛车运动,旨在提供刺激好玩的驾驶体验;而游戏自带的高技术难度将促使玩家长时间磨砺技巧,以达成完美的一圈。 游戏…

刷题Day50|739. 每日温度、496.下一个更大元素 I、503.下一个更大元素II

开启单调栈篇章:单调栈用来找任意一个元素左边或者右边第一个比它大/小的元素(或位置)。 739. 每日温度 739. 每日温度 - 力扣(LeetCode) 思路:使用一个递增单调栈,可以从头到尾或者从尾到头…

js中scrollIntoView第一次不生效,第二次生效

scrollIntoView 方法用于将元素滚动到可视区域。如果在页面加载后立即使用,可能不会生效,因为页面可能还没有完全渲染或者加载完成。 如果是因为元素还没有完全渲染完成,可以在 requestAnimationFrame 中调用 scrollIntoView。 requestAnima…