【深度学习】Human3.6M索引和部位

c 复制代码
joint_name={
'Hips(髋部)': 0,
'RightUpLeg(右大腿)': 1,
'RightLeg(右小腿)': 2,
'RightFoot(右脚)': 3,
'LeftUpLeg(左大腿)': 4,
'LeftLeg(左小腿)': 5,
'LeftFoot(左脚)': 6,
'Spine(脊柱)': 7,
'Spine1(脊柱1)': 8,
'Neck(颈部)': 9,
'Neck1(颈部1)': 10,
'LeftArm(左臂)': 11,
'LeftForeArm(左前臂)': 12,
'LeftHand(左手)': 13,
'RightArm(右臂)': 14,
'RightForeArm(右前臂)': 15,
'RightHand(右手)': 16
}

coco to h36m:

c 复制代码
def h36m_coco_format(keypoints, scores):
    assert len(keypoints.shape) == 4 and len(scores.shape) == 3
 
    h36m_kpts = []
    h36m_scores = []
    valid_frames = []
 
    for i in range(keypoints.shape[0]):
        kpts = keypoints[i]
        score = scores[i]
 
        new_score = np.zeros_like(score, dtype=np.float32)
 
        if np.sum(kpts) != 0.:
            kpts, valid_frame = coco_h36m(kpts)
            h36m_kpts.append(kpts)
            valid_frames.append(valid_frame)
 
            new_score[:, h36m_coco_order] = score[:, coco_order]
            new_score[:, 0] = np.mean(score[:, [11, 12]], axis=1, dtype=np.float32)
            new_score[:, 8] = np.mean(score[:, [5, 6]], axis=1, dtype=np.float32)
            new_score[:, 7] = np.mean(new_score[:, [0, 8]], axis=1, dtype=np.float32)
            new_score[:, 10] = np.mean(score[:, [1, 2, 3, 4]], axis=1, dtype=np.float32)
 
            h36m_scores.append(new_score)
 
    h36m_kpts = np.asarray(h36m_kpts, dtype=np.float32)
    h36m_scores = np.asarray(h36m_scores, dtype=np.float32)
 
    return h36m_kpts, h36m_scores, valid_frames

可视化:

c 复制代码
import numpy as np
 
 
import cv2
import numpy as np
import json
 
 
kpt_color_map = {'h': {'id': 0, 'color': [255, 0, 0], 'radius': 3, 'thickness': -1}, 'tail': {'id': 1, 'color': [0, 255, 0], 'radius': 2, 'thickness': -1}}
 
# 点类别文字
kpt_labelstr = {'font_size': 1,  # 字体大小
    'font_thickness': 3,  # 字体粗细
    'offset_x': 20,  # X 方向,文字偏移距离,向右为正
    'offset_y': 10,  # Y 方向,文字偏移距离,向下为正
}
 
labelme_path = r'E:\data\new_path\635_5225_02-1\input\0000.json'
with open(labelme_path, 'r', encoding='utf-8') as f:
    labelme = json.load(f)
 
img_bgr=cv2.imread(r'E:\data\new_path\635_5225_02-1\input\0000.png')
 
for each_ann in labelme['shapes']:  # 遍历每一个标注
 
 
    kpt_label = each_ann['label']  # 该点的类别
 
    for point in each_ann['points']:
        kpt_xy = point
        kpt_x, kpt_y = int(kpt_xy[0]), int(kpt_xy[1])
 
        # 该点的可视化配置
        kpt_color = kpt_color_map[kpt_label]['color']  # 颜色
        kpt_radius = kpt_color_map[kpt_label]['radius']  # 半径
        kpt_thickness = kpt_color_map[kpt_label]['thickness']  # 线宽(-1代表填充)
 
        # 画圆:画该关键点
        img_bgr = cv2.circle(img_bgr, (kpt_x, kpt_y), kpt_radius, kpt_color, kpt_thickness)
 
        # 写该点类别文字:图片,文字字符串,文字左上角坐标,字体,字体大小,颜色,字体粗细
        img_bgr = cv2.putText(img_bgr, kpt_label, (kpt_x + kpt_labelstr['offset_x'], kpt_y + kpt_labelstr['offset_y']), cv2.FONT_HERSHEY_SIMPLEX, kpt_labelstr['font_size'], kpt_color, kpt_labelstr['font_thickness'])
 
cv2.imshow('img',img_bgr)
cv2.waitKey(0)
 

参考:https://github.com/gauraviiita/Visualization-of-Human3.6M-Dataset/

相关推荐
必须会一定会几秒前
大模型手搓文件对比工具(6):差异不用再手选
java·人工智能·ai编程
m沐沐1 分钟前
【机器学习】DBSCAN聚类算法——原理、参数调优与实战
人工智能·python·深度学习·算法·机器学习·聚类·dbscan
网络研究院3 分钟前
一款利用人工智能将电子游戏翻译成任何语言的桌面应用程序
人工智能·游戏·工具·平台·翻译·软件
问商十三载12 分钟前
GEO优化的6个核心诊断工具,2026年实操版详解
人工智能·算法·机器学习
神奇小汤圆13 分钟前
面试官皱眉:"你的RAG用户要等8秒才看到第一个字?你们做过流式输出吗?"
人工智能
weixin_7275356216 分钟前
AI 应用开发学习指南:从零到生产的分阶段实践路线
人工智能
手写码匠29 分钟前
华为云征文|DeepSeek-R1 智能问数 Agent 实战:Flexus X 实例 + Dify 构建企业级 Text-to-SQL 查询助手
人工智能·深度学习·算法·aigc
梅孔立32 分钟前
推荐一个 Python 开源项目:AI 模板填充 + Markdown 转 Word,面向 Aspose 模板引擎的效率神器
人工智能·python·开源
CodeLinghu39 分钟前
LangSmith Evaluate实战评估Agent
人工智能·python·语言模型·llm
weixin_468466851 小时前
DeepSeek-V4-Flash正式版深度解析:当“轻量模型”用后训练撬动Agent能力革命
人工智能·大模型·agent·deepseek·deepseek-v4