YOLO - pose detect 输入输出接口与执行效率测试

0.参考资料:

Pose - Ultralytics YOLO Docs

下面仅对这个模型的输入输出接口和效率做了判断,尚不涉及训练。

pose和segment 相对class detect是相对自然的扩展。object box内部的 subclass就是seg,object box 内部的point array 就是Pose。

面部识别可以做到极快,所以segment, pose也可以做到极快。

1.实测速度比对【yolo-class vs yolo-pose】 

结论:pose的执行速度与普通的Detect模型相当。

一组执行时间:

mage 1/1 /dataset/pose/body.jpg: 448x640 2 persons, 44.7ms
Speed: 2.7ms preprocess, 44.7ms inference, 59.1ms postprocess per image at shape (1, 3, 448, 640)

比对仅仅进行物体识别,执行时间:

 

image 1/1 /dataset/pose/body.jpg: 448x640 2 persons, 48.0ms
Speed: 5.8ms preprocess, 48.0ms inference, 132.0ms postprocess per image at shape (1, 3, 448, 640) 

2.理论速度比对

 不同的模型推理速度相差不多。

Modelsize
(pixels)
mAPval
50-95
Speed
CPU ONNX
(ms)
Speed
T4 TensorRT10
(ms)
params
(M)
FLOPs
(B)
YOLO11n64039.556.1 ± 0.81.5 ± 0.02.66.5
YOLO11s64047.090.0 ± 1.22.5 ± 0.09.421.5
YOLO11m64051.5183.2 ± 2.04.7 ± 0.120.168.0
YOLO11l64053.4238.6 ± 1.46.2 ± 0.125.386.9
YOLO11x64054.7462.8 ± 6.711.3 ± 0.256.9194.9
Modelsize
(pixels)
mAPpose
50-95
mAPpose
50
Speed
CPU ONNX
(ms)
Speed
T4 TensorRT10
(ms)
params
(M)
FLOPs
(B)
YOLO11n-pose64050.081.052.4 ± 0.51.7 ± 0.02.97.6
YOLO11s-pose64058.986.390.5 ± 0.62.6 ± 0.09.923.2
YOLO11m-pose64064.989.4187.3 ± 0.84.9 ± 0.120.971.7
YOLO11l-pose64066.189.9247.7 ± 1.16.4 ± 0.126.290.7
YOLO11x-pose64069.591.1488.0 ± 13.912.1 ± 0.258.8203.3

3.输出数据 

3.1 yolo 文档给出的17个项点:

  1. Nose
  2. Left Eye
  3. Right Eye
  4. Left Ear
  5. Right Ear
  6. Left Shoulder
  7. Right Shoulder
  8. Left Elbow
  9. Right Elbow
  10. Left Wrist
  11. Right Wrist
  12. Left Hip
  13. Right Hip
  14. Left Knee
  15. Right Knee
  16. Left Ankle
  17. Right Ankle

3.2 实际检测数据

数据长度56 = 类型1(0:person) + box(left, top, width, height) + 17*(x, y, prob_value)

0 0.60229 0.518654 0.305345 0.725004 0.5296 0.247867 0.989055 0.538345 0.229076 0.987131 0.523728 0.236682 0.803624 0.565252 0.220562 0.97476 0 0 0.178567 0.605952 0.272757 0.99945 0.524902 0.320555 0.996575 0.67903 0.325687 0.998379 0.477179 0.385596 0.969531 0.720728 0.381518 0.997152 0.460585 0.311368 0.971978 0.632899 0.481503 0.999804 0.596195 0.502827 0.999446 0.554051 0.568819 0.999557 0.600891 0.602427 0.998719 0.601888 0.723575 0.994931 0.714637 0.736034 0.991084

3.2.1 格式化后的数据

类别 ID: 0.0
边界框信息 (x_center, y_center, width, height): [0.60229, 0.518654, 0.305345, 0.725004]
关键点信息:
Nose: 横坐标=0.5296, 纵坐标=0.247867, 可见性=0.989055
Left Eye: 横坐标=0.538345, 纵坐标=0.229076, 可见性=0.987131
Right Eye: 横坐标=0.523728, 纵坐标=0.236682, 可见性=0.803624
Left Ear: 横坐标=0.565252, 纵坐标=0.220562, 可见性=0.97476
Right Ear: 横坐标=0.0, 纵坐标=0.0, 可见性=0.178567
Left Shoulder: 横坐标=0.605952, 纵坐标=0.272757, 可见性=0.99945
Right Shoulder: 横坐标=0.524902, 纵坐标=0.320555, 可见性=0.996575
Left Elbow: 横坐标=0.67903, 纵坐标=0.325687, 可见性=0.998379
Right Elbow: 横坐标=0.477179, 纵坐标=0.385596, 可见性=0.969531
Left Wrist: 横坐标=0.720728, 纵坐标=0.381518, 可见性=0.997152
Right Wrist: 横坐标=0.460585, 纵坐标=0.311368, 可见性=0.971978
Left Hip: 横坐标=0.632899, 纵坐标=0.481503, 可见性=0.999804
Right Hip: 横坐标=0.596195, 纵坐标=0.502827, 可见性=0.999446
Left Knee: 横坐标=0.554051, 纵坐标=0.568819, 可见性=0.999557
Right Knee: 横坐标=0.600891, 纵坐标=0.602427, 可见性=0.998719
Left Ankle: 横坐标=0.601888, 纵坐标=0.723575, 可见性=0.994931
Right Ankle: 横坐标=0.714637, 纵坐标=0.736034, 可见性=0.991084

附录A pose数据格式化输出程序

# 人体部位名称列表
keypoint_names = ["Nose","Left Eye","Right Eye","Left Ear","Right Ear","Left Shoulder","Right Shoulder","Left Elbow","Right Elbow","Left Wrist","Right Wrist","Left Hip","Right Hip","Left Knee","Right Knee","Left Ankle","Right Ankle"
]# 假设的 YOLO Pose 训练集 label 数据行
label_data_str = " 0 0.844458 0.649356 0.310934 0.681836 0 0 0.18451 0 0 0.0718303 0 0 0.140077 0 0 0.0899211 0 0 0.225879 0 0 0.0909999 0.91247 0.856484 0.628418 0 0 0.022336 0 0 0.262855 0 0 0.10164 0 0 0.426727 0 0 0.009039 0 0 0.0300809 0 0 0.0136058 0 0 0.035202 0 0 0.0130479 0 0 0.0247065"# 将字符串数据转换为浮点数列表
label_data = [float(num) for num in label_data_str.split()]# 提取类别 ID 和边界框信息
class_id = label_data[0]
bbox = label_data[1:5]# 提取关键点信息
keypoints_data = label_data[5:]# 确保关键点数量和名称列表长度一致
if len(keypoints_data) == len(keypoint_names) * 3:print(f"类别 ID: {class_id}")print(f"边界框信息 (x_center, y_center, width, height): {bbox}")print("关键点信息:")for i in range(len(keypoint_names)):start_index = i * 3x, y, visibility = keypoints_data[start_index:start_index + 3]print(f"{keypoint_names[i]}: 横坐标={x}, 纵坐标={y}, 可见性={visibility}")
else:print("关键点数据长度和名称列表长度不匹配,无法正确对应。")

 

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

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

相关文章

DeepSeek 开源狂欢周(一)FlashMLA:高效推理加速新时代

上周末,DeepSeek在X平台(Twitter)宣布将开启连续一周的开源,整个开源社区为之沸腾,全球AI爱好者纷纷为关注。没错,这是一场由DeepSeek引领的开源盛宴,推翻了传统推理加速的种种限制。这周一&…

MySQL数据库基本概念

目录 什么是数据库 从软件角度出发 从网络角度出发 MySQL数据库的client端和sever端进程 mysql的client端进程连接sever端进程 mysql配置文件 MySql存储引擎 MySQL的sql语句的分类 数据库 库的操作 创建数据库 不同校验规则对查询的数据的影响 不区分大小写 区…

【洛谷贪心算法】P1106删数问题

这道题可以使用贪心算法来解决,核心思路是尽量让高位的数字尽可能小。当我们逐步删除数字时,会优先删除高位中相对较大的数字。具体做法是从左到右遍历数字序列,当发现当前数字比它后面的数字大时,就删除当前数字,直到…

【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目

解决idea至少创建jdk17项目 问题 idea现在只能创建最少jdk17,不能创建java8了吗?解决 问题 idea现在只能创建最少jdk17,不能创建java8了吗 我本来以为是 IDEA 版本更新导致的 Bug,开始还没在意。 直到我今天自己初始化项目时才发现&am…

MyBatis 操作数据库(详细入门详细)

本章⽬标 1. 使⽤MyBatis完成简单的增删改查操作, 参数传递. 2. 掌握MyBatis的两种写法: 注解 和 XML⽅式 3. 掌握MyBatis 相关的⽇志配置 铺垫 在应⽤分层学习时, 我们了解到web应⽤程序⼀般分为三层,即:Controller、Service、Dao . 之前的案例中…

C# 基于.NET Framework框架WPF应用程序-MQTTNet库实现MQTT消息订阅发布

C# 基于.NET Framework框架WPF应用程序-MQTTNet库实现MQTT消息订阅发布 MQTT简述MQTTNet简述创建项目(基于.NET Framework框架)安装MQTTNet库项目源码运行效果 MQTT简述 mqtt官网 MQTTNet简述 MQTTnet MQTTnet 是一个强大的开源 MQTT 客户端库&#…

武汉大学生命科学学院与谱度众合(武汉)生命科技有限公司举行校企联培座谈会

2025年2月21日下午,武汉大学生命科学学院与谱度众合(武汉)生命科技有限公司(以下简称“谱度众合”)在学院学术厅举行校企联培专业学位研究生合作交流会。武汉大学生命科学学院副院长刘星教授、生命科学学院周宇教授、产…

【JSON2WEB】15 银河麒麟操作系统下部署JSON2WEB

【JSON2WEB】系列目录 【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSO…

Redis 持久化方式:RDB(Redis Database)和 AOF(Append Only File)

本部分内容是关于博主在学习 Redis 时关于持久化部分的记录,介绍了 RDB 和 AOF 两种持久化方式,详细介绍了持久化的原理、配置、使用方式、优缺点和使用场景。并对两种持久化方式做了对比。文章最后介绍了 Redis 持久化的意义并与其他常见的缓存技术做了…

华为云之使用鲲鹏弹性云服务器部署Node.js环境【玩转华为云】

华为云之使用鲲鹏弹性云服务器部署Node.js环境【玩转华为云】 一、本次实践介绍1.1 实践环境简介1.3 本次实践完成目标 二、 相关服务介绍2.1 华为云ECS云服务器介绍2.2 Node.js介绍 三、环境准备工作3.1 预置实验环境3.2 查看预置环境信息 四、登录华为云4.1 登录华为云4.2 查…

《Python实战进阶》No 7: 一个AI大模型聊天室的构建-基于WebSocket 实时通信开发实战

第7集: 一个AI大模型聊天室的构建-基于WebSocket 实时通信开发实战 在现代 Web 开发中,实时通信已经成为许多应用的核心需求。无论是聊天应用、股票行情推送,还是多人协作工具,WebSocket 都是实现高效实时通信的最佳选择之一。本…

(转)Java单例模式(1)

l单例模式的好多:节约了内存,提高了代码的执行效率。

【PCIe 总线及设备入门学习专栏 1.2 -- 访问 PCIe 设备过程】

文章目录 OverviewPCIe 系统软件层次TLP 通用格式配置过程PCIe 设备配置寄存器Type0 Configuration Request配置过程Overview 对于PCIe 设备来说,它与桥的连接直通过两条差分信号,那么当桥下面接入多个PCIe 设备时,它是如何选中某个设备的呢?我面前面一篇文件介绍了 PCI设…

HarmonyOS NEXT组件深度全解:十大核心组件开发指南与实战

文章目录 引言:组件化开发的未来趋势第一章:基础UI组件精要1.1 Button:交互设计的基石1.1.1 多态按钮实现1.1.2 高级特性 1.2 Text:文字渲染的进阶技巧1.2.1 富文本混排1.2.2 性能优化 第二章:布局组件深度解析2.1 Fle…

win11编译pytorch cuda128版本流程

Geforce 50xx系显卡最低支持cuda128,torch cu128 release版本目前还没有释放,所以自己基于2.6.0源码自己编译wheel包。 1. 前置条件 1. 使用visual studio installer 安装visual studio 2022,工作负荷选择【使用c的桌面开发】,安装完成后将…

log4j2中<logger>中没有指定appender的输出

一 优先级 1.1 规则 1.如果一个 <logger> 没有显式配置 appender&#xff0c;Log4j2 会将该日志事件传递给其 父 Logger 的 appender。 2.这种传递行为会一直向上追溯&#xff0c;直到找到配置了 appender 的 Logger&#xff0c;或者到达 Root Logger。 3.如果日志事…

【MySQL】(1) 数据库基础

一、什么是数据库 数据库自行选择了合适的数据结构来组织数据&#xff0c;方便用户写入&#xff08;存储介质&#xff0c;如硬盘&#xff0c;机器断电不会丢失数据&#xff09;和查询数据。在数据结构部分&#xff0c;我们讲到的 ArrayList、HashMap 集合类对象也能存储数据&am…

基于Spring Boot的产业园区智慧公寓管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

nginx+keepalived负载均衡及高可用

1 项目背景 keepalived除了能够管理LVS软件外&#xff0c;还可以作为其他服务的高可用解决方案软件。采用nginxkeepalived&#xff0c;它是一个高性能的服务器高可用或者热备解决方案&#xff0c;Keepalived主要来防止服务器单点故障的发生问题&#xff0c;可以通过其与Nginx的…

LeapVAD:通过认知感知和 Dual-Process 思维实现自动驾驶的飞跃

25年1月来自浙江大学、上海AI实验室、慕尼黑工大、同济大学和中科大的论文“LeapVAD: A Leap in Autonomous Driving via Cognitive Perception and Dual-Process Thinking”。 尽管自动驾驶技术取得长足进步&#xff0c;但由于推理能力有限&#xff0c;数据驱动方法仍然难以应…