基于多视角手势识别(一)Learning Pose Specific Representations

在这里插入图片描述
原文:Learning Pose Specific Representations by Predicting Different Views
收录:CVPR2018
代码:Pytorch


Abstract

        Q1: 这些所需的标记数据(用来学习关节式对象姿态估计)很难提供所需的数量、真实性、密度和准确性。

        为了解决这个问题,我们开发了一种方法来学习表征(we develop a method to learn representations),用来表示一些非常具体的关节姿势,并不需要标记的训练数据。我们利用一个已知 对象的姿态 来预测的该对象姿态的另一视角图

        也就是说,给出手的姿态和形状参数,从任何角度来看手的外观都是近似相同的,即通过某个手势一个视角的图片,是可以推测该手势另一个视角的图片。为了利用这一观察结果,我们训练了一个模型,将一个视角图作为输入来预测一个潜在的表征,再基于这组潜在的表征来预测输出另一个视角的图片,当另一个视图被捕获时,通过loss可以训练模型因此,唯一必要的监督就是第二种视角。

        该模型的训练 Train 过程揭示了潜在空间中的隐式位姿表征。重要的是,在测试 Test 时,可以仅使用一个视图来推断姿态表征。在定性和定量实验中,我们证明了所学习的表征可以捕获详细的姿态信息。

 
※论文核心思想
        将一个视角图作为输入来计算出隐式表征 θ,再将隐式表征来预测输出另一个视角的图片,当另一个视图被捕获时,通过损失函数来训练模型。
 


1. Introduction

        对于类似人手这样的关节式对象的姿态估计,给大量的真实数据提供准确的注释是特别昂贵的。应对这一挑战的解决方法则是:与利用label数据做法相反,而是选择去利用易于大量获得的未标记样本来训练(这个方向未被前人探索过);该文提出了一种通过利用未标记数据的特定属性来进行姿态估计。我们所依赖的观察结果是,位姿参数可以从任何角度预测已知物体的外观。
        (手部姿态估计的label样本很少,精确注释的样本则更少,如何应对?)

 
                                在这里插入图片描述

        给定已学习到的低维位姿表征,则可以只用更少的训练样本学习到一个相当简单的映射到一个特定的目标(例如,关节位置),而不是需要学习从输入到目标的完整映射。此外,当使用带标记和未带标记的数据联合训练时,整个过程可以以半监督的方式进行端到端的学习,从而在带标记的样本较整个样本少一个数量级的情况下也可以获得相似的性能。因此,联合训练对模型进行正则化,则是确保学习的位姿表征可以通过指定的映射映射到目标位姿空间。
        (为学习到一个相当简单的映射到一个特定的目标 —> 关节位置)

 


2. Related Work

 

传统的手部姿态估计方法分为基于模型的方法基于数据的方法

  • 基于模型方法: 在每一帧中搜索以参数化手动创建的手模型,使其最符合观察的模型,但是通常需要依赖于初始化,例如,从以前的帧,因此,如果姿态估计失败一次,问题就很难解决;
  • 基于数据方法: 从输入帧到目标姿态的映射通常是从大量label训练样本中学习,这些方法假定在测试时看到的姿势至少大致被训练集覆盖,否则将无法提供良好的估计。
  • 混合方法: 为了将上面两者的优点结合起来,开发了混合方法,但是,混合方法的有效性又受到可用于训练数据驱动部分的注释密度的严重影响。

 

2.1. Semi-supervised learning for hand pose estimation

由于很少有研究通过利用未标记的样本进行手部姿态估计,但也有研究是这个方向。

  • Tang等人利用大的合成训练集以及合成样本与真实样本之间的对应关系,建立了一种判别方法;
  • Neverova等人通过部分结构的中间表征来建立对应关系;

在上述两个方法中,对于真实样本不需要pixelwise标签,但是仍然需要关节标注。

  • 与此相反,Wan等人利用半监督方法的生成模型的好处,将完全未标定的数据加入到数据集中来。

        上面所有方法中,都忽视了一个观察事实:从任何已知的角度看,姿势的外观都能被预测出来

 

2.2. View synthesis for hand pose estimation

该文工作受到Oberweger等人工作的启发。

  • Oberweger等人是 从之前估计的关节位置重建手的输入视图,然后根据输入和重建之间的差异生成姿态估计的更新(类似于监督下降法)。

 
        他们的目标是直接从以前估计的关节位置来重建相同的视图(不捕获形状信息),因此,他们的方法是完全监督的,每个样本需要关节标注

        在本文工作中不需要姿态标注,而是利用从一个额外的视角获得的信息,这对训练过程至关重要,我们既不需要迭代过程,也不需要生成图像,在测试时也不需要第二个视图。

 


3. Learning pose specific representations

        虽然得到的是不同视角的图片,但是是同一手势,所以手势参数 θ 是相同的。根据手部尺寸和形状参数 θ 来预测从视角 i 中观察到的手部外形 x(i)

  • T:表示一系列的姿态或姿态表征 ( 维度是 R d T R^{d_{T}} RdT),那么就有 T ⊂ R d T      θ ∈ T T \subset R^{d_{T}}\ \ \ \ \theta \in T TRdT    θT
  • χ \chi χ:代表一系列的输入图像集 ( 输入图像是 d χ d_{\chi } dχ维),那么就有 χ ⊂ R d χ      x ( i ) ∈ χ \chi \subset R^{d_{\chi }}\ \ \ \ x^{(i)}\in \chi χRdχ    x(i)χ

① 基于我们观察,假设存在某种映射 g i ∗ : R d T → R d χ g_{i}^{*}:R^{d_{T}}\rightarrow R^{d_{\chi }} gi:RdTRdχ参数 → \rightarrow 图像)使得:
                                        在这里插入图片描述
② 对于 θ 需要从手部图像 x(i) 中获得,因此也需要寻找一个映射 f i ∗ : R d χ → R d T f_{i}^{*}:R^{d_{\chi }}\rightarrow R^{d_{T}} fi:RdχRdT图像 → \rightarrow 参数)使得:
                                        在这里插入图片描述
③ 给定上述两个映射,从已知视角 i,输入图像为 x(i),通过映射计算得到一个已知视角 j 的图像 x(j)
                                        在这里插入图片描述

        如果 i = j(即同一图片),那么上述就是一个自编码器,这就很难确保模型学习到隐式表征,因此只讨论 ij 的情况。

 

3.1. Implementation of the observations

        采用了卷积神经网络(CNN)和编码器-解码器结构!!!

损失函数:
                                        在这里插入图片描述

式子中的 y ^ ( j ) \hat{y}^{(j)} y^(j) 是模型在视角 j 下预测的手部图像,x(j) 则是视角 j 下的真实手部图像。(采用 L1范数损失函数)

编码—译码结构:
                                        在这里插入图片描述

式中的 fi 为编码器,gj 为译码器,fi 接收 x(i) 作为输入,输出隐式表征 θgj 接收隐式表征 θ 来生成另一视角的图片。

 

3.2. Learning from labeled and unlabeled data

        为了将隐式表征空间映射到目标空间(例如,关节位置),本文在编码器-解码器架构中添加了一个单一的线性层。
                在这里插入图片描述

        将输入图像 x(1) 通过编码器 f1 映射到隐式表征 θ ,并将其输入到译码器 g2 中,生成另一视角图像 x(2) ,与此同时,通过使用标记的样本,确保隐式表征能通过线性映射 gl 到三维关节位置。

  • 线性层的参数只能通过标签样本来训练;
  • 所有其他参数训练则是通过标签样本与非标签样本共同训练。

半监督损失函数:

                        在这里插入图片描述
上式中的 λl 是权重因子,当使用无标签数据时,λl = 0;
 
※ 为了鲁棒性,还引入Huber loss对每个关节位置误差求和(若想详细了解Huber loss—>机器学习之Huber loss),其中:
                在这里插入图片描述
                在这里插入图片描述

y ^ k J \hat{y}_{k}^{J} y^kJ:第 k 个关节点估算的位置;           y k J y_{k}^{J} ykJ :第 k 个关节点真实的位置。

 

3.3. Implementation details

  • 使用用Adam算法进行了100次训练,批处理batch size = 128,学习率为10-4
  • 半监督学习时,λl = 10的时候结果最好。
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值