摘要

问题:经典的自上而下方法存在①人体重叠渗透;②深度顺序的不一致性
目标:
①训练一个深度网络,该网络可以通过学习避免以上问题,并生成一个协调的3D场景人体重建结果。
②在自上而下框架中结合了SMPL参数化人体模型,构建了两个新颖的loss函数——距离场域冲突loss( a distance fieldbased collision loss,针对人体重叠)、深度顺序感知loss(a depth ordering-aware loss,遮挡推断、优化人体深度排序,提供深度监督信号)

贡献

①提出了完整的人群3D位姿形状协调回归框架。
②训练重叠loss以避免回归网格的重叠;
③训练深度感知loss以使重建遵循人在场景中的深度顺序;
④SOTA结果

Bottom-up与top-down方法比较:
B先检测出场景中所有的人体关节,再对其进行组建,但基于关节进行其他信息的拓展是非常抽象的。
T先检测出场景中所有的人,然后估计每个人的位姿,通过结合SOTA的人体检测、位姿估计方法可以在2D上达到很好的效果。但传统的T方法在3D中存在肢体渗透、遮挡、深度顺序的协调不一致问题。

因此本文基于T方法,先构建了一个基于R-CNN的网络模型,并引入了SMPL参数估计分支作为表示,利用R-CNN先检测到人体,再用SMPL分支估计人体参数,并在训练网络时结合两个loss值推断遮挡与渗透。

SMPL:
定义:
其中,θ为位姿参数,β为形状参数;
该函数输出一个mesh(6890×3),6890个顶点。
通过线性回归W使mesh vertices映射到k个身体关节点J:

基础架构:
采用与Mask R-CNN迭代类似的架构,backbone基于ResNet50,RPN,检测头、SMPL参数回归——位姿、形状参数、相机参数(根据整张图像上每个bbox位置来预测位姿)。
3D真值:L3D计算SMPL参数、3D关键点loss
2D关节点:L2D投影损失,最小化2D关键点真值与3D关节投影损失。
Ladv:人体流形回归对抗先验loss,

重叠loss:
静态、单人——动态、多人
φ(人体内为正,体外为0):Signed Distance Field

为每个人计算一个独立的φi函数,先计算人周围的轻量框再三维化

第j个人与第i个人的冲突惩罚,
使用三线性插值通过微分从三维网格中采样每个三维顶点v的
值。Pij(非负)随着j离i的表面三维距离越远而增加,可以作为优化目标来避免重叠,但这会对人体转换产生较大的梯度,从而在复杂人体冲突情况下,导致训练不稳定。为改进,最终的重叠loss为:

(为避免同一个人的重叠惩罚,只采用分配到真值框的box建议中最确定的一个)

深度顺序感知loss
思路:利用易获得的实例分割标注(大尺度COCO数据集),在图像平面上绘制所有重建人体的网格,可以显示每个像素对应的人,并在与已标注的实例注释一致的基础上进行优化。

直观的方法:利用可微渲染器,the Neural Mesh Renderer (NMR),惩罚实际实例分割与渲染网格产生的分割之间的不一致。

该方法可行性问题是:其error只能反向传播到可视网格顶点;若存在深度顺序error,该方法不能使不可视的网格移动到离相机更近的距离。
实践中:趋向于使人远离,导致破坏训练(数值不稳定)。

除了渲染场景语义分割,还通过NMR分别渲染每个人的深度

,完整深度loss函数如下:

注意:loss反向传播到重叠双方的人体网格(乃至模型参数)

实现细节:
基于pytorch实现,具体参数这里就省略了。

(因为赶大作业时间匆忙,故在这里格式就没有细调,请见谅~)

更多推荐

Coherent Reconstruction of Multiple Humans from a Single Image