人体姿态估计-评价指标深度解析:从OKS到PCK的实战指南

OpenMMLab-2-人体姿态估计、关键点检测与MMPose 给定一张图片,任务要求检测图像中人脸、手部、身体等部位的关键点。输入: 图像 I输出:所有关键点的像素坐标(x1,y1)…(xJ, yJ),这里的J为关键点的总数,取决于具体的关键点检测任务和模型。关键点检测可以预测人体关键点在三维空间中的坐标( x , y , z ),进而在三维空间中还原人的姿态。 阅读详情

1. 为什么我们需要这些“尺子”?——评价指标入门

大家好,我是老张,在AI和计算机视觉这行摸爬滚打了十几年,做过不少人体姿态估计的项目。今天想和大家聊聊一个看似枯燥、但实际项目中绕不开的话题:评价指标。

想象一下,你训练了一个模型,它能从照片里找出人的手、脚、头等关键点。你怎么知道它找得准不准呢?你说“我看着挺准的”,这显然不行。我们需要一把客观、精确的“尺子”来测量模型的性能。这把“尺子”,就是评价指标。

在人体姿态估计领域,最常用的几把“尺子”就是 OKS 和 PCK。你可能在论文里、项目报告里经常看到它们,但公式一堆,符号复杂,是不是感觉头大?别急,今天我就用大白话,结合我踩过的坑和实战经验,带你彻底搞懂它们。我们不仅要知道它们是什么,更要明白在什么场景下该用哪一把尺子,以及怎么用代码把它算出来。

对于刚入门的朋友,理解这些指标是读懂论文、复现模型、甚至改进算法的第一步。对于有经验的朋友,深入理解这些指标背后的设计逻辑,也能帮助你在模型调优、结果分析时事半功倍。咱们不玩虚的,直接上干货。

2. OKS:多人姿态估计的“黄金标准”

2.1 OKS到底是什么?一个生动的比喻

OKS,全称 Object Keypoint Similarity,翻译过来是“目标关键点相似度”。你可以把它理解为人脸识别里的“相似度分数”,或者目标检测里的 IoU。它的核心思想是:衡量预测的关键点集合和真实标注的关键点集合有多像。

我打个比方。假设我们要比较两个人画的同一个卡通人物。一个人画的是标准原图(Ground Truth),另一个人是初学者画的(模型预测)。我们不会只看鼻子画得像不像,或者眼睛位置对不对,因为这样太片面了。OKS的做法更聪明:它给每个身体部位(关键点)都分配了不同的“容错度”。

比如,画鼻子、眼睛这种位置固定、容易辨认的部位,我们要求很严格,差一点点就觉得不像。但对于手腕、脚踝这种本身活动范围大、在图片里也可能被遮挡的部位,我们允许的误差就大一些。OKS通过一个叫 σ 的参数来量化这个“容错度”,σ值越大,表示这个关键点越难标注,允许的误差范围也越大。

2.2 拆解OKS公式:告别数学恐惧

原始文章里给出了OKS的公式,看起来有点吓人。我们把它拆开,用“人话”解释一遍:

OKS = Σ [ exp( -距离² / (2 * 尺度² * σ²) ) ] / 关键点数量

别被吓到,我们一步步看:

  1. 距离:就是预测的关键点和真实关键点之间的直线距离(欧式距离)。距离越远,扣分越多。
  2. 尺度:这个很重要!它不是图片的尺寸,而是当前这个人所在检测框的面积开根号。为什么?因为对于远处的人(框小),几个像素的误差就很严重;对于近处的人(框大),同样的像素误差可以忽略。OKS用尺度来做归一化,让评价对大小目标都公平。
  3. σ:刚才说的“容错度因子”。在COCO数据集中,它已经被统计好了,比如鼻子是0.026,肩膀是0.079。肩膀的σ值更大,意味着同样的距离误差,对OKS分数的惩罚更小。
  4. 指数函数 exp(-x):这是一个魔法函数。它把距离误差映射成一个0到1之间的相似度分数。当误差为0时,得分为1(完全一样);误差越大,得分越趋近于0。

所以,OKS的计算结果是一个0到1之间的数,越接近1,说明你预测的关键点组和真实标注越相似。

2.3 手把手代码实战:计算两个“人”的OKS

光说不练假把式。我们来看一个简化版的代码,计算一组预测关键点和一组真实关键点的OKS。这里我们假设用的是COCO的17个关键点格式。

import numpy as np

# COCO数据集中17个关键点的σ值(已归一化)
sigmas = np.array([.26, .25, .25, .35, .35, .79, .79, .72, .72, .62, .62, 1.07, 1.07, .87, .87, .89, .89]) / 10.0
variances = (sigmas * 2) ** 2  # 公式中使用的方差

def compute_oks(dt_kpts, gt_kpts, area):
    """
    计算一组检测关键点与一组真实关键点的OKS。
    :param dt_kpts: 模型预测的关键点,形状为(51,),即17个点的[x1,y1,v1, x2,y2,v2,...]
    :param gt_kpts: 真实标注的关键点,形状同上。
    :param area: 真实标注中该人物检测框的面积 (w * h)
    :return: oks分数
    """
    # 1. 提取坐标和可见性
    gt = np.array(gt_kpts).reshape(-1, 3)  # 变成 (17, 3)
    dt = np.array(dt_kpts).reshape(-1, 3)

    xg = gt[:, 0]  # x坐标
    yg = gt[:, 1]  # y坐标
    vg = gt[:, 2]  # 可见性 (0:未标记, 1:可见, 2:遮挡)
    
    xd = dt[:, 0]
    yd = dt[:, 1]

    # 2. 只计算已标注(可见或遮挡)的关键点
    visible_indices = vg > 0
    if np.sum(visible_indices) == 0:
        return 0.0  # 如果没有可见关键点,OKS为0

    # 3. 计算欧式距离
    dx = xd - xg
    dy = yd - yg
    e = (dx**2 + dy**2) / variances / (area + 1e-7) / 2  # 加1e-7防止除零

    # 4. 只取可见关键点的误差进行计算
    e = e[visible_indices]

    # 5. 计算OKS
    oks = np.sum(np.exp(-e)) / len(e)
    return oks

# 示例数据(为了演示,数据是编的)
# 假设预测的鼻子(x=100, y=120),真实的鼻子(x=102, y=118),面积=10000
dt_example = [100, 120, 1] + [0]*48  # 只设置了第一个点(鼻子),其他点默认为0
gt_example = [102, 118, 1] + [0]*48
area_example = 10000.0

oks_score = compute_oks(dt_example, gt_example, area_example)
print(f"OKS分数为: {oks_score:.4f}")

这段代码是核心。在实际项目中,比如使用COCO评估工具时,它会遍历所有图片,为每个真实的人找到与之最匹配的预测结果(通过OKS矩阵),然后根据阈值计算AP。我们下面就会讲到。

3. 从OKS到AP/mAP:如何评价整个模型?

3.1 AP:当OKS遇到阈值

算出了两个人之间的OKS,那怎么评价一个模型在整个测试集上的表现呢?这就引入了 AP。

AP 就是 Average Precision,平均精度。它的计算和OKS紧密相关:

  1. 对测试集中的每一个真实的人,我们都能计算其与最佳匹配预测结果的OKS分数。
  2. 我们设定一个阈值T,比如 T=0.5。
  3. 如果一个真实的人的OKS分数 > 0.5,我们就认为这个人的姿态被“正确检测”了。
  4. AP@0.5 = (正确检测出的人数) / (测试集总人数)。

这听起来很像目标检测里的AP,对吧?没错,思路是相通的。但这里“检测”的标准不是框的重叠度,而是关键点的相似度。

3.2 多人场景下的匹配难题与OKS矩阵

在单人姿态估计中,一张图就一个人,匹配简单。但在多人姿态估计中,尤其是自底向上的方法,挑战就来了。模型先输出一堆零散的关键点,然后再拼成一个个“人”。你怎么知道模型拼出来的这个“人A”对应的是真实标注里的“人1”还是“人2”呢?

这里就用到了 OKS矩阵。假设一张图里有M个真人,模型预测出了N个人。我们就计算一个 M行 x N列 的矩阵,矩阵中每个元素 (i, j) 的值,就是第 i 个真人和第 j 个预测人之间的OKS分数。

然后,我们会使用一种匹配算法(比如匈牙利算法,或者简单的取最大OKS),为每个真人找到一个最匹配的预测人。这个匹配过程,OKS就是衡量“匹配程度”的代价或收益。匹配完成后,每个真人就有了一个属于自己的OKS分数,后续计算AP的步骤就和单人场景一样了。

def compute_oks_matrix(dt_list, gt_list):
    """
    计算预测列表和真实列表之间的OKS矩阵。
    :param dt_list: 列表,每个元素是一个dict,包含'keypoints'和'bbox'(用于计算面积)
    :param gt_list: 同上。
    :return: oks_mat, 形状为 (len(dt_list), len(gt_list))
    """
    num_dt = len(dt_list)
    num_gt = len(gt_list)
    oks_mat = np.zeros((num_dt, num_gt))

    if num_dt == 0 or num_gt == 0:
        return oks_mat

    # 计算每个gt与每个dt的OKS
    for j, gt in enumerate(gt_list):
        gt_kpts = np.array(gt['keypoints']).reshape(-1, 3)
        gt_area = gt['bbox'][2] * gt['bbox'][3]  # w * h
        xg = gt_kpts[:, 0]
        yg = gt_kpts[:, 1]
        vg = gt_kpts[:, 2]

        for i, dt in enumerate(dt_list):
            dt_kpts = np.array(dt['keypoints']).reshape(-1, 3)
            xd = dt_kpts[:, 0]
            yd = dt_kpts[:, 1]

            # 计算距离
            dx = xd - xg
            dy = yd - yg
            e = (dx**2 + dy**2) / variances / (gt_area + 1e-7) / 2

            # 只考虑可见点
            visible_e = e[vg > 0]
            if len(visible_e) > 0:
                oks_mat[i, j] = np.sum(np.exp(-visible_e)) / len(visible_e)
            else:
                oks_mat[i, j] = 0.0
    return oks_mat

# 假设我们有一组预测和真实数据
# dt_items = [{'keypoints': [...], 'bbox': [x,y,w,h]}, ...]
# gt_items = [{'keypoints': [...], 'bbox': [x,y,w,h]}, ...]
# oks_matrix = compute_oks_matrix(dt_items, gt_items)
# 接下来可以使用oks_matrix进行匹配,为每个gt分配一个最佳的dt及其oks分数。

3.3 mAP:综合考量不同严格程度

只用一个阈值(如0.5)来评判模型有点武断。一个在宽松标准下(OKS>0.5)表现好的模型,可能在严格标准下(OKS>0.75)表现很差。

所以,更全面的做法是计算 mAP。它的做法很直观:用多个阈值去评估,然后取平均。通常,我们从0.5到0.95,以0.05为步长,取10个不同的阈值(0.5, 0.55, 0.6, ..., 0.95),分别计算10个 AP,然后求这10个值的平均值,就得到了 mAP。

这也是为什么COCO数据集的关键点检测任务,官方主要看 mAP@[.5:.95] 这个指标。它反映了模型在不同严格程度下的综合稳健性。一个高mAP的模型,说明它既能在宽松条件下找到大部分人,也能在严格条件下把关键点定位得非常精准。

4. PCK/PCKh:更直观的“老派”指标

4.1 为什么有了OKS,还要了解PCK?

OKS是现在的主流,尤其是在COCO等大型挑战赛中。但在一些老的数据集(如MPII)或某些特定场景的论文里,你可能会遇到 PCK 或 PCKh。

PCK 的全称是 Percentage of Correct Keypoints,即正确关键点的百分比。它的思想比OKS更直接:预测的关键点只要落在以真实点为中心、某个半径的圆内,就算正确。

这个“半径”不是固定的像素值,而是根据一个参考尺度来定的。这就是PCK和PCKh的区别所在:

  • PCK:通常以人的躯干直径(左肩到右臀的距离)作为参考尺度。阈值T是这个尺度的比例,比如T=0.2,那么半径就是 0.2 * 躯干直径。
  • PCKh:以人的头部尺寸(头部边界框的对角线长度)作为参考尺度。这是MPII数据集的标准。

注意:PCK指标的计算方式在不同数据集间可能有细微差别,使用前一定要确认该数据集的官方评估代码是如何定义参考尺度和阈值的。

4.2 PCK计算实战与代码解读

PCK的计算比OKS更简单,也更容易理解。我们来看一下核心代码逻辑。

def compute_pck(dt_kpts, gt_kpts, ref_joint1, ref_joint2, threshold=0.2):
    """
    计算PCK指标。
    :param dt_kpts: 预测关键点,形状 (人数, 关键点数, 2) 或 (人数, 2*关键点数)
    :param gt_kpts: 真实关键点,形状同上。
    :param ref_joint1: 参考关节1的索引,用于计算尺度。
    :param ref_joint2: 参考关节2的索引,用于计算尺度。
    :param threshold: PCK阈值,如0.2。
    :return: 每个关键点的PCK值,以及平均PCK值。
    """
    # 确保输入形状一致
    dt = np.array(dt_kpts).reshape(-1, 2)  # 假设最终形状为 [总点数, 2]
    gt = np.array(gt_kpts).reshape(-1, 2)
    
    # 计算每个实例的尺度(例如躯干长度)
    # 注意:这里假设输入是按人组织的,需要先还原人的维度
    # 为了清晰,我们假设输入是列表,每个元素是一个人的关键点数组
    # 以下为伪代码逻辑:
    all_pck = []
    for dt_person, gt_person in zip(dt_kpts_per_person_list, gt_kpts_per_person_list):
        # 计算当前人的尺度
        scale = np.linalg.norm(gt_person[ref_joint1] - gt_person[ref_joint2])
        # 计算该人所有关键点的归一化误差
        dist = np.linalg.norm(dt_person - gt_person, axis=1) / scale
        # 判断每个关键点是否在阈值内
        correct = (dist <= threshold).astype(float)
        all_pck.append(correct)
    
    # 将所有结果堆叠,计算平均值
    all_pck = np.concatenate(all_pck)
    pck_per_joint = np.mean(all_pck.reshape(-1, num_joints), axis=0) * 100  # 每个关节的PCK
    mean_pck = np.mean(all_pck) * 100  # 平均PCK
    return pck_per_joint, mean_pck

# 示例:使用左肩(索引5)和右臀(索引12)计算躯干尺度,阈值0.2
# pck_per_joint, mean_pck = compute_pck(all_dt_points, all_gt_points, ref_joint1=5, ref_joint2=12, threshold=0.2)

PCK的结果通常是一个百分比。比如 PCK@0.2 = 85%,意味着当阈值设为躯干直径的0.2倍时,有85%的关键点被正确预测了。

4.3 OKS vs. PCK:如何选择?

在实际项目中,你该用哪个指标呢?我的经验是:

  • 看数据集和任务:如果你的模型要在COCO数据集上训练和评估,或者参加主流比赛,OKS和mAP是必须用的,这是学术界和工业界的共识标准。如果你处理的是MPII数据集,那就要用PCKh。
  • 看需求:OKS更精细、更公平。它考虑了不同关节的标注难度,并且通过指数函数平滑地惩罚误差。PCK更直观、更容易解释,它直接告诉你“有多少比例的点落在误差范围内”。在内部项目快速验证模型效果时,PCK可能更容易让非技术背景的同事理解。
  • 看场景:对于遮挡严重、小目标多的场景,OKS的尺度归一化和按点加权的特性使其更具优势。对于尺度变化不大、关注整体姿态的场景,PCK也足够有效。

我个人的习惯是,在模型开发初期,为了快速迭代,我会用一个简单的PCK来监控训练过程。但在最终评估和论文撰写时,一定会采用OKS/mAP这套标准体系,以确保结果的严谨性和可比性。

5. 实战中的坑与优化建议

5.1 数据标注质量是生命线

所有指标都基于一个假设:你的标注数据(Ground Truth)是准确的。如果标注本身就有很大误差,那么再高的OKS分数也没有意义。我遇到过标注数据中同一类关键点σ值设置不合理的情况,导致模型在某些关节上的优化方向是错的。务必检查你的数据集中关键点的可见性标签(visible flag)和遮挡标签是否正确,这在计算OKS时至关重要,因为只计算已标注的点。

5.2 尺度因子的计算要一致

无论是OKS里的 area(面积平方根),还是PCK里的 scale(躯干或头部长度),在训练、验证、测试以及最终评估时,必须使用完全相同的计算方法。例如,COCO评估中,面积是来自标注的bbox(bbox是[x, y, width, height]格式)。如果你在训练时自己生成了bbox(比如用检测模型),要确保其定义和评估代码里期望的定义一致,否则指标会失真。

5.3 处理“匹配失败”的情况

在多人姿态评估中,匹配完成后,可能有些真实的人没有匹配到任何预测(漏检),也有些预测的人没有匹配到任何真实标注(误检)。漏检会拉低召回率,误检会拉低精确率。标准的AP计算(如COCO的eval)会妥善处理这些情况。但如果你自己写评估脚本,一定要考虑清楚:一个未匹配的预测,其OKS应该视为0吗?这会影响最终的AP计算逻辑。

5.4 可视化与调试

当模型指标不理想时,别光看数字。一定要可视化! 把OKS分数低或PCK判断错误的具体案例图片和关键点画出来。你会发现很多问题:可能是模型在某些姿态(如侧身、蜷缩)下失效,可能是对遮挡处理不好,也可能是标注本身就有问题。这种针对性的分析,比盲目调参有效十倍。

例如,你可以写一个脚本,专门找出OKS低于0.5的样本,保存成图片。然后一张张看,是肩膀歪了,还是手腕飞了?是背景干扰,还是光照太暗?这些直观的反馈是优化模型最宝贵的线索。

5.5 自定义关键点与σ值

如果你的任务不是标准的人体17关键点,而是手部21关键点、面部68关键点,甚至是动物的关键点,怎么办?OKS公式仍然适用,但你需要为自己的关键点类型重新计算一套σ值。

原始文章末尾给出了计算方法:统计你标注数据集中,每个关键点预测误差(归一化后的距离)的标准差。这个标准差就代表了该类关键点的固有标注难度,可以作为σ值。虽然过程繁琐,但对于构建一个公平的评价体系来说是必要的。如果不想这么麻烦,也可以先为所有关键点设置一个相同的经验值(如0.05),但要知道这可能会让指标对不同关键点的敏感度不同。

说到底,评价指标是我们衡量模型的尺子。选对尺子、用好尺子,才能知道我们的模型到底走到了哪一步,下一步该往哪里使劲。希望这篇结合了原理、代码和实战经验的指南,能帮你把这把尺子握得更稳,量得更准。在实际项目中多算、多看、多思考,这些指标背后的故事,会让你对姿态估计任务有更深的理解。

2D/3D人体姿态估计 (2D/3D Human Pose Estimation) 1. 基本概念 2. 发展现状 阅读详情

相关推荐

mmpose关键点(二):实战中的评价指标选择与优化(PCK,OKS,mAP)

本文深入解析了mmpose关键点检测中的核心评价指标PCK、OKS和mAP,详细介绍了它们的计算原理、适用场景及优化策略。通过实战案例展示了如何根据不同业务需求选择合适的指标,并提供了提升模型性能的具体方法,帮助开发者在关键点检测项目中实现更精准的评估与优化。

weixin_29290259的博客 198

mmpose关键点检测实战:如何用PCK、OKS和mAP评估模型性能(附代码示例)

本文深入解析mmpose关键点检测中的PCK、OKS和mAP三大评估指标,通过实战代码示例展示如何应用这些指标评估模型性能。PCK直观易用,OKS考虑关键点难度差异,mAP提供全面评估,帮助开发者优化关键点检测模型。

weixin_28331555的博客 306

基于深度学习的3D pose estimation总结(包括几篇2D pose estimation)

声明:此文章是作者自己学习过程中的简单总结,也是作者第一次上传,仅供各位同行参考,也请对文中错误和不足多多指教,敬请指正,谢谢! 一、任务描述 给定一幅图或者是一段视频,人体姿态估计就是恢复出其中的人体关节点位置的过程。 二、挑战和难点 1.人体肢体运动较为灵活; 2. 视角的变化; 3.附着物的变化(比如遮挡,衣物等); 4.3D pose estimation缺乏数据集; 三...

qq_40045309的博客 8385

人体姿态估计综述(2014-2019)

所谓的人体姿态估计,就是给定一幅图像或者一段视频,从中去恢复人体关节点的过程。到目前为止,利用深度学习进行姿态估计的方法大致分为两种:自上而下的方法和自下而上的方法。自上而下(top-down),即先检测出来人体,再对单个人进行姿态估计;而自下而上(down-top),则是先检测出人体关节点,再根据检测出来的关节点连成人体骨架。下面,将对近几年的人体姿态估计的论文进行一下汇总。 1.人体姿态...

weixin_43466321的博客 6977

人体姿态估计实战指南:从2D关键点到3D骨架的完整技术路线

人体姿态估计是计算机视觉的基础任务,旨在定位图像或视频中人体的关键点,输出二维坐标或三维空间位置。其核心原理基于深度学习,通过热力图回归或坐标回归等监督方式,结合自顶向下与自底向上的检测框架,实现对人体的精准定位。这一技术广泛应用于安防监控、运动分析、人机交互等场景,为动作识别与行为理解提供关键支撑。随着Transformer和轻量化部署方案的发展,姿态估计在端侧实时应用中也展现出巨大潜力。本文从工程实践出发,系统梳理2D与3D姿态估计的技术演进、数据集选择、训练调参与部署优化要点,帮助开发者构建可落地的姿

weixin_29061465的博客 230

姿态估计入门-2020综述《The Progress of Human Pose Estimation: A Survey and Taxonomy of Models Applied in 2D》

《The Progress of Human Pose Estimation: A Survey and Taxonomy of Models Applied in 2D Human Pose Estimation》 2020 IEEE 论文链接 人体姿态估计入门指南。 文章目录1 预备知识 1 预备知识 人体姿态估计:基于图片来定位人体的关节点和刚性部件。 根据一张图中待检测人的数量,可分为单人姿态检测和多人姿态检测。显然多人姿态检测任务更加困难。 姿态估计有两种常用范式: Top-down:先.

qq_41614538的博客 1577

mmpose关键点(二):实战中的评价指标选择与优化策略

本文深入探讨了mmpose关键点检测中的评价指标选择与优化策略,重点解析了PCK、OKS和mAP三大经典指标的适用场景与实战技巧。通过具体案例展示了如何根据不同应用场景(如人体姿态估计、工业零件检测)选择合适的指标组合,并提供了数据增强、模型调优等实用优化方法,帮助开发者提升关键点检测的准确性与实用性。

weixin_33670786的博客 473

目标检测YOLO实战应用案例100讲-基于YOLOv5的目标检测与6D位姿估计算法研究

目前,机器人在各个领域应用广泛,工厂车间中有工件搬运机器人,医院中有语 音指导机器人,在北京冬奥会上,有做咖啡机器人、防疫机器人等。这些机器人能够 正常运作的关键就是机器视觉技术,它充当着机器人的“眼睛”,通过模拟人体,利用 视觉传感器系统去识别物体的颜色、纹理、位置等信息,然后将这些信息通过算法进 行处理从而实现对目标物体的识别、检测与定位。因此机器视觉的本质就是用机器来 模拟人的视觉感官,去处理事情,使机器更加的智能化、现代化和自动化。

qq_36130719的博客 3890

人体姿态估计MMPose

给出一个特定的图像,例如人脸、手部、身体等,识别出其关键点,可以用坐标的方式表现出来,这是二维层面的,当然也可以三位层面。例如一段滑冰视频、跳操视频、踢球时、拥抱时,预测人体关键点在三维空间中的坐标,在三维空间中还原人的姿态。当然动物的姿态也可以。

travel_66的博客 353

基于ROS2系统开发机器人

以上是基于ROS 2开发机器人的基本流程和一个简单的发布者-订阅者示例。通过这个流程,你可以逐步扩展和优化你的机器人系统,实现更复杂的功能。

xuweilin的博客 1496

保姆级教程:用Smaart7和你的USB声卡搞定现场音响系统调试(附频谱与延时测试避坑指南)

本文提供Smaart7与USB声卡协同工作的现场音响系统调试指南,涵盖硬件连接、频谱分析、延时校准等关键步骤。通过详细的操作流程和常见问题解决方案,帮助音响工程师快速掌握专业测量技术,确保演出音质达到最佳状态。

weixin_29290259的博客 424

第二讲 人体姿态估计与MMPose

通过给定的图像预测人体关键点在三维空间中的坐标,可以在三维空间中还原人体的姿态。

weixin_39109575的博客 458

YOLOv5添加注意力机制的具体步骤

本文主要介绍了 本文在此篇博客的基础上向YOLOv5-5.0版 本文主要包括以下内容一、CBAM注意力机制添加(1)修改yolov5s主干网络(2)在common.py中添加可调用的CBAM模块(3)向yolo.py文件添加CBAMC3判断语句二、SE注意力机制添加 本文以yolov5s网络为例 一、CBAM注意力机制添加 注意力机制可以添加在backbone,Neck,Head等部分,接下来本文以backbone主干网络为例 (1)修改yolov5s主干网络 1.在yolov5-5.0工程文件夹下,找到m

thy0000的博客 2万+

人体姿态估计的介绍

任务:在图像上定位人体关键点(主要关节)的坐标基于回归:将关键点检测建模为回归问题,模型直接回归关键点坐标基于热力图:预测关键点在每个位置的概率。

qq_43207119的博客 322

周立功CAN盒二次开发实录:用QT5.1.0解析汽车CAN报文(附数据可视化技巧)

本文详细介绍了基于QT5.1.0和周立功USBCAN-E-U设备进行汽车CAN总线二次开发的实战过程。核心内容包括利用CANdb++数据库解析原始报文并转换为物理值,以及通过QCustomPlot库实现高性能实时数据可视化,为车载诊断与车联网开发提供了一套完整的工程实践方案。

sugar的博客 1058

开源DIY龙门架:从零构建可编程运动控制平台

运动控制是自动化与机器人技术的核心基础,它通过精确指令驱动执行机构,实现物体的定位与轨迹规划。其原理通常涉及控制器、驱动器、电机与传动机构的协同工作,核心价值在于将数字指令转化为精准的物理运动,从而解放人力并提升作业一致性。在工业自动化、桌面制造(如3D打印、激光雕刻)及教育机器人等领域应用广泛。本文聚焦于一个具体的工程实践案例:使用**铝型材**、**3D打印**零件、Arduino控制器及步进电机,从机械结构设计、电路连接到代码编写,手把手教你打造一个模块化、可扩展的开源龙门架系统。该系统不仅成本可控,

weixin_33168937的博客 622

人体姿态估计与MMPose

关键点之间的亲和度构成一个带权重的K部图,关键点的聚类问题转变为K部图最优匹配问题,只考虑人体相连的关键点,将KK部图匹配问题分解为K-1个独立的二部图匹配问题,再借助匈牙利算法求解。PRTR两阶段算法:人体检测阶段,使用DETR检测出图中的不同的人—关键点检测阶段,使用DETR结构,query学习关键点信息,最终回归关键点位置。1.直接预测:直接基于从2D图像回归到3D坐标,但2D图像不包含深度,实际上隐式的借助了语义特征或者人体的刚性实现3D姿态的推理。

Nicole_d的博客 743

可疑物品遗留检测系统:基于YOLOv8的智能安防解决方案

数据采集与标注模块:负责收集和标注可疑物品图像数据模型训练模块:基于YOLOv8算法训练检测模型推理检测模块:加载训练好的模型进行实时检测用户界面模块:提供友好的操作界面和可视化结果展示报警模块:当检测到可疑物品时触发报警机制:包含多种暴力场景和可疑物品SUAVe:监控场景下的异常行为与物品数据集:包含多种可疑物品自建数据集:针对特定场景收集的数据背包(backpack)手提箱(suitcase)无人看管的包裹(package)可疑箱子(box)

YOLO 435

姿态估计&目标检测论文整理(1)

一、姿态估计 1. 现阶段人体姿态识别主流的通常有2个思路: Top-Down(自上而下)方法:将人体检测和关键点检测分离,在图像上首先进行人体检测,找到所有的人体框,对每个人体框图再使用关键点检测,这类方法往往比较慢,但姿态估计准确度较高。目前的主流是CPN,Hourglass,CPM,Alpha Pose等。 Bottom-Up(自下而上)方法:先检测图像中人体部件,然后将图像中多人人体的部...

Klay Ye 6925

Synthesia技术浅析(四):自然语言处理

Synthesia 的自然语言处理(NLP)模块是其核心技术之一,涵盖了文本转语音(TTS)、情感分析以及多语言支持等多个方面。

m0_75253143的博客 1167

三步实现Java分布式追踪:像“开灯”一样简单

摘要: 本文通过三步实现Java分布式追踪: 引入依赖:配置Spring Cloud Sleuth+Zipkin,自动埋点无需代码侵入; 启动服务:REST接口自动生成Trace/Span ID,日志可验证; 可视化分析:通过Zipkin UI查看调用链耗时和拓扑关系。 亮点:AOP自动埋点、零业务代码修改、支持多服务链路追踪,助力快速定位性能瓶颈。适用于微服务诊断,生产环境可调整采样率平衡性能。(150字)

墨夶的博客 2711

OpenMMLab AI实战二——姿态估计

2D目标检测主要有四种方法:自顶而下方法、自低向上方法、单阶段的方法、基于Transformer的方法,现在较多是基于热力图的方式进行检测,但是该方法计算量较大。:基于图像同时预测关节位置和四肢走向,利用肢体走向辅助关键点的聚类,即,如果某两个关键点由末端肢体相连,则两个关键点属于同一人。如果预测关节和真实关节之间的距离在某个阈值(可变)内,则认为检测到的关键点是正确的(2D、3D均可用)?概念:通过给定的图像预测人体关键点在三维空间中的坐标,可以在三维空间(相对关系)中还原人体的姿态。

weixin_46810530的博客 652

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

用OpenPose和HRNet搞定2D人体姿态估计:从数据集选择到模型调优全流程

本文提供了构建高精度2D人体姿态估计系统的全流程实战指南。详细对比了OpenPose与HRNet两大主流模型的核心优势与适用场景,并深入探讨了从COCO、MPII等数据集选择与处理,到模型训练调优、PCK指标提升及工程化部署的关键步骤,帮助开发者根据实时性或精度需求做出最佳技术选型。

weixin_29051245的博客 256

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: DIY迷你ST-LINK V2调试器:从硬件设计到固件烧录全解析
下一篇: 【密码算法 之八】GCM实战:从原理到TLS 1.3中的应用
code8
博客等级 码龄17年 65粉丝 1720原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值