Weakly Supervised 3D Hand Pose Estimation via Biomechanical Constraints论文解析

论文链接:https://www.ecva.net/papers/eccv_2020/papers_ECCV/papers/123620205.pdf
论文出处:CVPR2020
论文代码:https://github.com/MengHao666/Hand-BMC-pytorch

0. 概述

  • 从hand 2D估计3D pose是一件很难的事情,原因是:固有规模(inherent scale)和深度摸棱两可(depth ambiguities)。
  • 现在都是使用全监督方法,但是全监督需要3D hand pose的标注,不容易获取。
  • 本文提出了一套新的损失,限制了神经网络的预测,使其处于生物力学可行的3D手部配置范围内。

1. 简介

  • 目前hand pose估计集中于研究3D hand pose在single RGB上,这个任务的难点在于:人手的灵巧性、自遮挡、变化光照条件、交互物体等
  • 对于给定的2D point,可以有多个3D 点对应,这些点可以映射成相同的2D point。这使得从单RGB图像估计3D hand pose成为一个ill-posed inverse的问题。
  • 本文提出一套受生物力学启发的约束方法(biomechanically inspired constraints (BMC)),可以集成到神经网络的训练中,以实现解剖学上合理的3D手部姿势,即使只是在2D监督下的数据。
  • 启发在于:人类的手受到生物力学的一系列限制。我们以一种可微的方式将这些限制建模为一组软约束。
  • 设定3种软约束,分别为: (1)有效骨长范围;(2)有效手掌结构范围;(3)拇指和手指的有效关节角度范围.
  • 本文的贡献:
    (1) 一套新颖的可微分软约束,灵感来自人类手的生物力学结构。
    (2) 提出的约束条件提高了弱监督设置下的3D预测精度,结果提高了55%,而直接使用弱监督数据则提高了32%。
    (3) 通过细化步骤扩展的神经网络体系结构。
    (4) 在Dexter+Object上实现SOAT的性能,只使用合成的和弱监督的真实数据,表明交叉数据的通用性。
  • 之前的基于手生物力学约束的方法主要是通过在后处理部分使用逆向动力学. 本文提出的方法可以整合到神经网络的训练中.

2. 方法

  • 本文的方法如下:
    在这里插入图片描述

  • 我们的主要贡献是一组新颖的约束条件,这些约束条件构成了人手的生物力学模型,并捕捉到的骨骼长度关节角度手掌形状.

  • 不是用运动学模型来适应预测,而是直接从预测中提取出有问题的数量,以便约束它们。约束为网络提供了一种偏置.
    在这里插入图片描述

  • 定义: 关节点表示为: 在这里插入图片描述

  • 每根手指表示为: F1,…, F5.

  • bone定义为母节点(parent joint) p(i) 到子节点(child joint) i 的向量. bone名字以子节点名命,如MCP 到 PIP的bone称为 PIP bone.

  • 向量v1和v2之间的角度定义为:
    在这里插入图片描述

  • 间隔损失( interval loss)定义为: 在这里插入图片描述

  • 单位向量定义为:在这里插入图片描述

  • v垂直投影到x-y平面(其中x,y是向量)上,定义为:在这里插入图片描述

3.1 生物力学约束(Biomechanical constraints)

  • 我们的目标是将我们的生物力学软约束(BMC)集成到训练过程中,鼓励网络预测可行的手部姿势。
  • 骨长Bone length:
    对于每个骨 i, 定义有效骨长的区间在这里插入图片描述
    如果骨长 ||bi||2 在区间外的话:
    在这里插入图片描述
    这种损失鼓励了得出有效骨长度的关键预测.
  • 根骨Root bones
    为了获得有效的掌结构,我们首先将根骨解释为跨越一个网格,并计算其曲率,根据:
    在这里插入图片描述
    其中 ei 是骨 bi 的处的边法向量.
    在这里插入图片描述
    ci 值为正表示手呈拱形,例如当小指和拇指触碰时。平的手没有弯曲。
    我们通过定义相邻的bi,bi+1在它们跨度的平面上的角度距离,确保根骨处于正确的角度范围内.
    在这里插入图片描述
    我们将曲率ci和角距离φi限制在一个有效的范围内:在这里插入图片描述:
    在这里插入图片描述
    该误差确保手掌的预测关节定义一个有效的结构,这是至关重要的,因为手指的运动链起源于这个区域。

更多相关推荐

3D hand pose:MediaPipe Hands:...

MediaPipeHands:On-deviceReal-timeHandTracking论文解析0.摘要1.Introduction2.框架2.1BlazeP...

继续阅读

3D Object Detection入门——Point...

学习目录一.预备知识1.KITTI数据格式2.Pointnet++/Pointnet2二.整体流程1.生成groundtruth数据...

继续阅读

PointNet:3D点集分类与分割深度...

之前的一篇博客《动手学无人驾驶(4):基于激光雷达点云数据3D目标检测》里介绍到了如何基于P...

继续阅读

3D文章修改总结

1.XiaoMin那篇文章的思想:假设有k类,其中的字典为:其中,表示的第i类的训练集合,测试样本...

继续阅读

6d pose estimation 之 PVnet

pvnet 源github:https://github.com/zju3dv/clean-pvnet最近在做6D pose estimation时用了pvn...

继续阅读

2D卷积和3D卷积的区别及pytorch...

之前做医学图像分类时,老师有提到3D卷积,当时只是觉得3D卷积就是输入图像的3维的,把卷积核...

继续阅读

2D 3D 多通道卷积及pytorch实现

2D卷积单通道卷积核(filter)是由一组参数构成的张量,卷积核相当于权值,图像相当于输入量,卷...

继续阅读

基于Pytorch的3D卷积

3D卷积核相比于2D卷积核引入了时间尺度,并且在宽、高、深度(不是单张图像的通道数,这个深度...

继续阅读

lstm_by_hand.py

lstm_by_hand.py根据lstm的计算规则,自己手动编写了一个lstm框架,结果和调用torch.nn.LSTM的...

继续阅读