2D-to-3D方法的基线论文阅读笔记-ICCV2017
文章题目为:A simple yet effective baseline for 3d human pose estimation。是一个简单的神经网络结构,文章提出了很多改进方向,故该系统作为一个baseline为以后的研究提供参考,而不是完整的3D姿态估计系统。
大纲
引言
绝大多数现存的人类描绘都是二维的,这些表示在向其他人传达事实、想法和感受方面发挥了重要作用,而这种传递信息的方式之所以成为可能,是因为人类能够在存在深度歧义的情况下理解复杂的空间安排。本文将关注这个空间推理问题的一个特定实例:从单个图像中估计三维人体姿态。
正式地说,给定人类的图像(即二维表示),三维姿态估计是生成与所描绘人物的空间位置匹配的三维图形的任务。为了从图像转换为三维姿态,算法必须对许多因素保持不变,包括背景场景、照明、服装形状和纹理、肤色和图像瑕疵等。早期的方法通过轮廓、形状上下文、SIFT(Scale Invariant Feature Transform,尺度不变特征变换)描述符或边缘方向直方图等特征实现了这种不变性。
尽管需要大量数据的深度学习系统目前在二维姿态估计(这也需要这些不变量)等任务上优于基于人类工程特征的方法,但由于缺乏户外图像的3D真实姿态数据,因此直接从彩色图像推断3D姿态是具有挑战性的任务。
最近,一些系统探索了利用端到端深度架构从图像中直接推断3D姿态的可能性,而其他系统则认为,通过对合成数据进行训练,可以从彩色图像中实现3d推理。本文探讨了将3D姿态估计解耦到获得良好训练的2D姿态估计中的能力,以及利用2D关节检测进行3D姿态估计,重点是后者。
本文对这一问题的主要贡献是设计和分析了一种神经网络,它的性能略好于当时的SOTA(当微调检测结果或使用真实值时,效果会更优),并且速度快(大小为64的小批量前向传播需要大约3ms,允许在批处理模式下处理多达300fps的数据),同时易于理解和再现。这种精度和性能飞跃的主要原因是一组简单的想法,例如估计相机坐标系中的3D关节、添加残差连接和使用批量归一化。由于网络简单,这些想法可以与其他不成功的想法(例如估计关节角度)一起快速测试。
先前工作
图像深度
从纯粹的二维刺激中感知深度是一个经典问题。透视线索在计算机视觉中被用来推断任意场景中的长度、面积和距离比。除了透视信息,经典的计算机视觉系统还尝试使用阴影或纹理等其他线索,从单个图像中恢复深度。现代系统通常从监督学习的角度来处理这个问题,让系统推断出哪些图像特征对深度估计最具辨别力。
自顶向下的3D推理
最早的深度估计算法之一采取利用场景中物体的已知三维结构的方式。已经表明,人类在感知抽象为一组稀疏点投影的人体运动时也会使用这种自顶向下的信息。从最小表示(如稀疏的2D投影)中推理3D人体姿态的想法,抽象出其他可能更丰富的图像线索,启发了本工作中解决的基于2D关节的3D姿势估计问题。
2D-to-3D关节映射
Lee和Chen的工作发现,给定骨骼长度,从2d投影推断3d关节的问题归结为一个二叉决策树,其中每个分裂对应于相对于父关节的两种可能状态。这种二叉树可以根据联合约束进行修剪,尽管它很少产生单一的解。Jiang使用了一个大型姿态数据库,基于最近邻查询来解决歧义。Gupta等人(在搜索过程中引入了时间约束)以及Chen和Ramanan最近重新审视了利用最近邻来细化姿态推断结果的想法。从数据集编译关于3D人体姿态知识的另一种方法是通过创建适合于将人体姿态表示为稀疏组合的完备基,将姿态提升到再生核希尔伯特空间(RHKS)[18],或者通过从极端人体姿态的专门数据集创建新的先验。
基于深度网络的2D到3D关节映射
Pavlakos等人介绍了一种基于堆叠沙漏结构的深度卷积神经网络,该网络不是回归2D关节概率热图,而是映射到3D空间中的概率分布。Moreno Noguer研究从2D到3D空间预测成对距离矩阵(distance matrix,DM)。距离矩阵在旋转、平移和反射之前是不变的;因此,多维缩放与人类姿态的先验互补,以排除不可能的预测。
Moreno Noguer的DM回归方法以及Pavlakos等人的体积方法背后的一个主要动机是,从2D检测中预测3D关键点本质上是困难的。例如,Pavlakos等人提出了一个基线,其中使用了直接的3D关节表示,其结果比使用体积回归的精确得多。
2D-to-3D角姿态
另一个算法分支,用于从图像中推断3D姿势,该图像根据角度(有时是身体形状)来估计身体构造,而不是直接估计关节的3D位置。这些方法的主要优点是,由于人类关节的运动受限,问题的维数较低,并且所得到的估计被迫具有类似人类的结构。此外,使用这种表示法,约束人体结构(如骨骼长度或关节角度范围)相当简单。
本文试验了这种方法;然而实验表明,关节和2D点之间的高度非线性映射使得学习和推理更加困难,计算成本也更高。因此,本文选择直接估计3D关节。
解决方案方法论
本文的目标是在给定二维输入的情况下估计三维空间中的身体关节位置。
形式上,输入是一系列2D关键点
- 已知摄像机参数下的真实2D关节位置
- 2D关节检测器
本文专注于
本文方法——网络设计
图1展示了本文架构的基本构建块的示意图。本文的方法基于简单、深层、多层神经网络,具有批量归一化、Dropout和校正线性单元(RELU)以及残差连接。未描述的是两个额外的线性层:一个直接应用于输入,将其维度增加到1024,另一个应用于最终预测之前,生成大小为
该架构得益于深度神经网络优化方面的多项相对较新的改进,这些改进主要出现在非常深的卷积神经网络环境下,这些贡献也可以用于提升本文的2D到3D姿态估计任务的泛化性。
2D/3D位置
本文的第一个设计选择是使用2D点作为输入,3D点作为输出,而最近的工作使用原始图像或2D概率分布作为输入,3D概率、3D运动参数或基础姿态系数和相机参数估计作为输出。虽然2D检测携带的信息较少,但它们的低维度使其非常有吸引力。
线性ReLU层
大多数3D人体姿态估计的深度学习方法都基于卷积神经网络,卷积神经网络学习可应用于整个图像或2D关节位置热图的平移不变滤波器。然而,由于我们以低维点作为输入和输出,可以使用更简单、计算成本更低的线性层。ReLU是在深度神经网络中添加非线性的标准选择。
残差连接
残差连接是一种促进非常深卷积神经网络训练的技术,可以提高泛化性能并减少训练时间。在文本的案例中,残差连接帮助减少了大约10%的误差。
批量归一化和Dropout
尽管具有上述三个组件的简单网络利用真实2D位置上训练时,在2D到3D姿态估计上获得了良好的性能。但作者发现,当利用2D检测器的输出训练时,或当利用2D真实位置训练并在有噪声的2D观测上测试时,其性能不佳。批次归一化和Dropout在这两种情况下改善了本文系统的性能,同时导致训练和测试时间略有增加。
最大范数约束
作者对每个层的权重应用了约束,使其最大范数小于等于1。结合批量归一化,我们发现当训练和测试示例之间的分布不同时,可以稳定训练并提高泛化能力。
数据预处理
本文通过减去平均值并除以标准差,将标准归一化应用于2D输入和3D输出。由于我们不对3D预测的全局位置进行预测,因此将3D姿势在髋关节周围归零(与之前的工作和Human3.6M的标准协议一致)。
相机坐标
在作者看来,期望算法推断任意坐标空间中的3D关节位置是不现实的,因为这样的空间的任何平移或旋转都不会导致输入数据的改变。全局坐标系的一个自然选择是相机坐标系,因为这使得不同相机之间的2D-to-3D问题相似,隐含地允许每个相机有更多的训练数据,并防止过拟合到特定的全局坐标系。
2D检测
本文使用Newell等人在MPII数据集上预训练的最先进的堆叠沙漏网络获得2D检测。
与之前的工作类似,本文使用Human3.6M提供的边界框来估计图像中的人物中心。将计算出的中心周围的440×440像素的正方形裁剪到检测器(然后通过堆叠的沙漏将其大小调整为256×256)。这些检测与真实2D位置之间的平均误差为15像素,略高于Moreno Noguer在同一数据集上使用CPM的结果(10像素)。
与CPM相比,堆叠沙漏网络更合适,因为它在MPII数据集上有着稍微更好的结果,它的评估速度大约快10倍。
作者还对Human3.6M数据集(最初在MPII上预训练)上的堆叠沙漏模型进行了微调,在目标数据集上获得了更精确的2D关节检测,并进一步减少了3D姿态估计误差。
作者使用了堆叠沙漏的所有默认参数,但由于GPU的内存限制,迷你批量大小从6减小到3。并将学习率设置为
训练细节
作者使用Adam对网络进行了200个epoch的训练,初始学习率为0.001,指数衰减,使用大小为64的小批量。初始化时使用Kaiming初始化设置线性层的权重。作者使用Tensorflow实现了代码,在Titan Xp GPU上,前向与反向传播大约需要5ms,前向传播大约需要2ms。这意味着,加上最先进的实时2D检测器,该的网络可以成为实时运行的全像素到3D系统的一部分。
Kaiming初始化,由我国计算机视觉领域专家何恺明提出。
Kaiming均匀分布的初始化采用
,bound由下式计算: 其中 用来衡量这一层中负数的比例,负数越多,ReLU层会将越多的输入抹平为0, 就是用来衡量这种抹平对方差的影响。
实验评估
数据集和协议
在Human3.6M上,遵循标准方案,使用受试者1、5、6、7和8进行训练,使用受测者9和11进行评估。得到了根关节(中心髋关节)对齐后,所有关节和相机的真实值和预测值之间的平均误差(毫米)。通常,训练和测试在每个动作中独立进行,称其为协议1。然而,在本文的一些基线中,预测已经通过刚性变换与真实值进一步一致,此后处理称为协议2。
在HumanEva中,对所有受试者和每个动作分别进行训练和测试,并且始终在刚性变换后计算误差。
定量结果
2D-to-3D回归的上界
本文的方法基于来自2D关节位置的直接回归,自然地取决于2D姿态检测器的输出质量,并且在使用真实2D关节位置时获得最佳性能。
本文在不同水平的高斯噪声下测试了一个最初用真实2D关节位置训练的系统,结果见表1。
其中,GT表示真实关节位置;CPM表示级联金字塔网络;SH表示堆叠沙漏结构。表1的上半部分展示了利用2D真实关节位置进行训练和测试时,加入不同等级的高斯噪声情况下的结果;下半部分展示了利用2D真实关节位置进行训练,利用2D检测器的输出进行测试的结果。
虽然每一帧都是独立评估的,而且不使用时间信息,但该网络产生的预测非常平滑。
对检测器噪声的鲁棒性
为了分析方法的鲁棒性,本文试验了用(有噪声的)2D检测器检测的图像来测试系统,系统始终使用真实2D关节位置进行训练。结果见表1的下半部分。
在这种情况下,本文的工作也优于先前的工作,并证明本文的网络在利用真实2D位置进行训练,并在2D检测器的输出上进行测试时可以获得相当好的表现。
利用2D检测器进行训练
在这里,本文最接近的竞争对手是Pavlakos等人的体积预测方法,该方法使用堆叠沙漏结构,在Human3.6M上进行端到端训练,并对所有动作使用单一模型。
即使在使用开箱即用的堆叠沙漏检测时,本文的方法也比这一结果高出4.4 mm,并且当在Human3.6M上微调2D检测器时,将差距提高了一倍多,达到9.0 mm。详细结果见表2。
其中,SA表示模型针对每个动作都进行了训练;MA表示使用单个模型对所有动作进行训练;SH表示用堆叠沙漏检测器对系统进行了训练和测试;FT表示2D检测器是微调过的;GT表示使用了真实2D关节位置。
本文的方法在协议2(与真实位置刚性对齐)下的结果见表3。虽然本文的方法比以前的开箱即用检测稍差,但当经过微调后,该方法获得了最好的成绩。
其中,14j(17j)表示该身体模型考虑了14(17)个关节;*表示该结果并非取自原论文。
在HumanEva数据集上的结果见表4。
消融和超参数分析
以未微调的MA模型为基础,表5中给出了消融实验的结果。去掉Dropout或批量归一化会导致误差增加3~8mm;残差连接大约带来8mm的增益。如果不将数据预处理到相机坐标中,则会导致100mm以上的误差。
最后,作者分析了网络对深度和宽度的敏感性。使用单个残差块会导致6mm的损失,使用2个残差块时性能饱和。将线性层减少到512维会导致更差的性能(本文中采取的维度为1024),而具有2048维的层要慢得多,而且似乎不会提高精度。
定性结果
图2给出了Human3.6m的一些定性结果,图3给出了MPII测试集中一些户外场景图像的定性结果。
在MPII上的结果揭示了本文方法的一些局限性;例如,该系统无法从失败的检测器输出中恢复,并且很难处理与Human3.6M中的任何示例不相似的姿势(例如,人倒立)。
最后,户外场景下大多数人的图像都不是全身的,而是在一定程度上被裁剪出来的。本文的全身姿势训练系统目前无法处理此类情况。
讨论
观察表2可以看出,在所有动作中,使用SH检测进行训练时,相较于使用真实2D关节位置,误差普遍增加。
然而,拍照、打电话、坐着和坐下的动作却有了特别大的增长。我们假设这是由于这些动作中的严重自遮挡——例如,在一些电话序列中,我们永远看不到演员的一只手。类似地,在坐着和坐下时,腿通常与相机视点对齐,这会导致透视上的大幅缩短。
进一步改进
一个改进方向是,堆叠沙漏结构最终产生大小为64×64的关节检测热图,因此更大的输出分辨率可能会带来更细粒度的检测,从而使本文的系统更接近在使用2D真实关节位置训练时的性能。
另一个方向是,使用2D堆叠沙漏热图中的多个样本来估计期望的梯度——即强化学习中常用的
尝试结合地估计场景中每个人的深度是一条有趣的研究路径,因为这将允许本文的系统对多人进行3D姿态估计。最后,本文的架构很简单,对网络设计的进一步研究可能会在2D-to-3D系统上产生更好的结果。
2D-to-3D方法的基线论文阅读笔记-ICCV2017