YOLO26N 姿态估计模型架构与 17 关键点解析

YOLO26N 姿态估计模型架构与 17 关键点解析

1. 姿态估计概述

姿态估计任务:
├── 输入:RGB 图像
├── 输出:人体边界框 + 17 个关键点坐标
├── 关键点:鼻子、眼睛、耳朵、肩膀、肘、腕、髋、膝、踝
└── 应用:跌倒检测、健身指导、动作识别、人机交互

2. COCO 17 关键点定义

关键点索引与连接关系:
┌─────┬──────────┬─────────────────────────┐
│ 索引 │ 名称      │ 连接关系                  │
├─────┼──────────┼─────────────────────────┤
│  0  │ 鼻子      │ → 左眼(1), 右眼(2)       │
│  1  │ 左眼      │ → 鼻子(0), 左耳(3)       │
│  2  │ 右眼      │ → 鼻子(0), 右耳(4)       │
│  3  │ 左耳      │ → 左眼(1)                │
│  4  │ 右耳      │ → 右眼(2)                │
│  5  │ 左肩      │ → 右肩(6), 左肘(7)       │
│  6  │ 右肩      │ → 左肩(5), 右肘(8)       │
│  7  │ 左肘      │ → 左肩(5), 左腕(9)       │
│  8  │ 右肘      │ → 右肩(6), 右腕(10)      │
│  9  │ 左腕      │ → 左肘(7)                │
│ 10  │ 右腕      │ → 右肘(8)                │
│ 11  │ 左髋      │ → 右髋(12), 左膝(13)     │
│ 12  │ 右髋      │ → 左髋(11), 右膝(14)     │
│ 13  │ 左膝      │ → 左髋(11), 左踝(15)     │
│ 14  │ 右膝      │ → 右髋(12), 右踝(16)     │
│ 15  │ 左踝      │ → 左膝(13)               │
│ 16  │ 右踝      │ → 右膝(14)               │
└─────┴──────────┴─────────────────────────┘

骨架连接(骨骼):
上半身:0-1, 0-2, 1-3, 2-4, 5-6, 5-7, 6-8, 7-9, 8-10
下半身:11-12, 11-13, 12-14, 13-15, 14-16
躯干:5-11, 6-12

3. YOLO26N 姿态估计架构

YOLO26N-Pose 模型结构:
├── Backbone(主干)
│   ├── Stem:3 层 Conv(下采样 8x)
│   ├── Stage 1-4:C3k2 模块
│   └── SPPF:空间金字塔池化
├── Neck(特征融合)
│   ├── FPN:自顶向下
│   └── PAN:自底向上
└── Head(检测头)
    ├── 分类分支:1 类(person)
    ├── 回归分支:4 值(bbox)
    └── 关键点分支:17x3(x, y, visibility)

4. 模型输出格式

# YOLO26N-Pose 输出格式
# 输出 tensor shape: [1, 56, 8400]
# 56 = 4(bbox) + 1(conf) + 1(cls) + 17*3(kpts)

# 分解:
# bbox: [4, 8400]  → cx, cy, w, h
# conf: [1, 8400]  → 目标置信度
# cls:  [1, 8400]  → 类别(person=0)
# kpts: [51, 8400] → 17 个关键点 × (x, y, visibility)

# 关键点 visibility:
# 0 = 不可见(被遮挡)
# 1 = 部分可见
# 2 = 完全可见

5. 模型规格

YOLO26N-Pose 模型参数:
┌──────────────────┬──────────┐
│ 参数              │ 数值      │
├──────────────────┼──────────┤
│ 参数量            │ 3.2M     │
│ FLOPs            │ 6.8G     │
│ 模型大小(FP16)  │ 6.4MB    │
│ 模型大小(INT8)  │ 3.2MB    │
│ 输入尺寸          │ 640x640  │
│ 输出维度          │ 56x8400  │
│ 关键点数          │ 17       │
│ COCO mAP50-95    │ 68.5     │
│ 推理延迟(Orin NX)│ 5.2ms   │
└──────────────────┴──────────┘

6. 快速体验

#!/usr/bin/env python3
"""quick_pose.py - 快速姿态估计"""
from ultralytics import YOLO

# 加载预训练模型
model = YOLO("yolo26n-pose.pt")

# 推理
results = model.predict("person.jpg", conf=0.3, save=True)

for r in results:
    if r.keypoints is not None:
        for kp in r.keypoints:
            kpts = kp.data[0]  # [17, 3]
            for i, (x, y, vis) in enumerate(kpts):
                if vis > 0.5:
                    print(f"关键点 {i:2d}: ({x:6.1f}, {y:6.1f}) 可见性: {vis:.2f}")

7. 关键点可视化

#!/usr/bin/env python3
"""draw_pose.py - 姿态可视化"""
import cv2
import numpy as np

# 骨架连接定义
SKELETON = [
    (0, 1), (0, 2), (1, 3), (2, 4),      # 头部
    (5, 6), (5, 7), (6, 8), (7, 9), (8, 10),  # 上半身
    (11, 12), (11, 13), (12, 14), (13, 15), (14, 16),  # 下半身
    (5, 11), (6, 12),  # 躯干
]

# 关键点颜色
COLORS = [
    (255, 0, 0), (255, 85, 0), (255, 170, 0), (255, 255, 0),
    (170, 255, 0), (85, 255, 0), (0, 255, 0), (0, 255, 85),
    (0, 255, 170), (0, 255, 255), (0, 170, 255), (0, 85, 255),
    (0, 0, 255), (85, 0, 255), (170, 0, 255), (255, 0, 255),
    (255, 0, 170),
]

def draw_pose(image, keypoints, conf_thresh=0.3):
    """绘制姿态骨架"""
    canvas = image.copy()
    
    # 绘制骨架连线
    for (i, j) in SKELETON:
        if keypoints[i][2] > conf_thresh and keypoints[j][2] > conf_thresh:
            pt1 = (int(keypoints[i][0]), int(keypoints[i][1]))
            pt2 = (int(keypoints[j][0]), int(keypoints[j][1]))
            cv2.line(canvas, pt1, pt2, (0, 255, 0), 2)
    
    # 绘制关键点
    for i, (x, y, vis) in enumerate(keypoints):
        if vis > conf_thresh:
            cv2.circle(canvas, (int(x), int(y)), 4, COLORS[i], -1)
            cv2.circle(canvas, (int(x), int(y)), 6, (255, 255, 255), 1)
    
    return canvas

总结

维度YOLO26N-Pose
参数量3.2M
模型大小6.4MB (FP16) / 3.2MB (INT8)
关键点17 个(COCO 标准)
精度mAP 68.5
延迟5.2ms (Orin NX FP16)

核心要点:

  1. 输出格式:[1, 56, 8400] = bbox(4) + conf(1) + cls(1) + kpts(51)
  2. 关键点:17 个 COCO 标准关键点,每个含 (x, y, visibility)
  3. 骨架连接:16 条骨骼线,用于可视化
  4. 轻量化:仅 3.2M 参数,适合边缘部署
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鱼>

一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值