这篇是iccv2017的论文,地址见 https://arxiv.org/pdf/1704.00159
作者谈到之前回归的方法都没有很好地利用姿势结构信息,于是他构建了一个结构思想的回归方法。它不采用关节点,相反采用骨骼来表达姿势。
之前的方法可以分成两种,基于检测和基于回归。基于检测的模型是生成每个关节的热图,使用最大值点作为关节,但是这样会有噪声和多模,而且无法生成3D热图,因为太需要内存和计算力。基于回归的方法是直接将图像回归到关节点,但是这样没前者方法表现好。这两种方法表现都不行, 因为他们忽略了姿势的内部结构,没有很好地利用关节的独立性。
为此作者提出了一个结构思想,称为 compositional pose regression (组成姿势回归)。作者采取这种想法的原因是:1、骨骼更原始更稳定,所以代替关节更好。2、它利用关节连接结构来定义loss函数,来编码骨骼之间的长距离作用。只需要重新参数化姿势表达。
关节是相对于图像坐标系中的恒定原点定义的,2D作者将最左上的点作为J0,3D中,将骨盆关节作为j0。
直接回归关节–baseline
首先还是归一化,减去平均值然后除以标准差,当然网络的输出也是归一化的。对于关节损失,使用欧氏距离并采用L1正则化。缺点上面也提到了,没有利用骨骼的结构关系。
基于骨骼回归
如上图,重新参数化顶点,使用骨骼表示。盆骨关节作为根节点,则骨骼树可以标记成从两端到root的tree边。parent(k)表示第k个关节的父关节的索引,为了方便,作者定义parent(1)=0,也就是将root关节父节点是原点。作者定义表示从当前关节指向父关节的向量(骨骼)。关节坐标在全局坐标系里标记,而骨骼更加原始,在当地坐标系定义。使用骨骼有以下优点:
- 稳定。骨骼更稳定并且更容易学习,图1表明骨骼的标准差比相对应关节的标准差要小很多,尤其是在手腕头部脚踝处。
- 几何方便。骨骼编码几何结构并且更容易表达几何约束。For example, constraint of “bone length is fixed” involves one bone but two joints. Constraint of “joint rotation angle is in limited range”involves two bones but three joints
- 应用方便。许多姿势驱动的应用只需要骨骼而不是关节。For example, the local and relative “elbow to wrist” motion can sufficiently represent a “pointing” gesture that would be useful for certain human computer interaction scenarios.
损失函数
会造成一点问题,比如骨骼是local的不相干的,在骨骼相连的时候,前面的误差会进行传递放大。为了解决这个问题,远程目标应该被考虑在内,远程误差应该适当平衡。具体做法如下:
使得ju jv为任意两块骨骼,假设沿着骨骼tree从ju到jv共经历m个关节,I(m)返回路径上第m个关节。M和I(*)是常亮,但取决于u 和v,为了清楚起见,在符号中省略了这种依赖性。另外∆Juv 表示路径上所有骨骼的和。sgn(*,*)函数表示骨骼BI(m)的方向是否沿着路径的方向,当parent(I(m))=I(m+1)时,返回1,否则返回-1。N-1表示将归一化的骨骼恢复成原始变量,其中均值和方差都采用GT的均值和方差。上面这个公式很有用,没有多余的参数,作为一个特殊的组合层来实现。
接下来是对GT处理。关节的相互位置,,给定一个关节对P,组成损失函数定义为:
,每个关节对uv限制着沿着从u到v的路径上的骨骼。关节对很多,路径很多,每块骨骼都能多次用到,达到平衡的目的。其中关节对可以是任意的,作者在这里只测试了4组变量:
统一2D和3D姿态回归
可以分解成xy方向和z方向。xz方向的对2D和3D同时有效,z在2D中为0,只在3D中有效。xy是图像坐标,z是相机坐标。训练过程中,会经过归一化和逆归一化。在恢复的时候,xy部分通过相机内参数和透视投影模型。
数据处理
输入图像缩成224*224,同时通过平移,尺度变换旋转翻转等扩充数据。
结果
通过协议2的结果:(都是自家的称呼,主要还是看训练的数据集和测试时相机的位置)Protocol 2 Five subjects (S1, S5, S6, S7, S8) are used for training. Evaluation is performed on every 64th frame of two subjects (S9, S11). 除此之外还使用了额外的MPII数据集。
通过协议2的结果:Protocol 2 Five subjects (S1, S5, S6, S7, S8) are used for training. Evaluation is performed on every 64th frame of two subjects (S9, S11)。没有使用额外的MPII数据集。
协议1的结果:Protocol 1 Six subjects (S1, S5, S6, S7, S8, S9) are used in training. Evaluation is performed on every 64th frame of Subject 11’s video
留言
这篇文章分数很好看,应该到现在都是sota。不过奇怪的是后面的文章很少在实验里加上bone loss这一项,就算仅仅作为提分的trick,加上这一项也应该有用才对。