论文学习笔记:《DenseBody: Directly Regressing Dense 3D Human Pose and Shape From a Single Color Image》
目标:
从单张彩色图像直接回归出3D人体的姿态和形状。
——————————————————————————————————————
亮点:
之前的工作都是先根据图像生成中间结果(比如人体分割、2D/3D关节点、轮廓… ),再通过网络得到shape和pose。
这篇文章用CNN直接从单张图回归出了3D人体网格。
——————————————————————————————————————
相关工作:
1、3D人体姿态估计:
3D人体姿态估计问题通常被简化为估计3D关节点的位置。
由于带标签的3D pose数据很少,所以一般利用2D关节点的位置去估计3D关节点位置。最近人们直接用CNN从单张图估计3D关节点位置。由于图像的深度模糊,很难确定四肢是向前弯曲还是向后弯曲。为了解决这个问题,许多人试图引入先验或几何约束。
在这本文中,我们着重于预测人体的整个表面几何结构,而不是三维关节位置。
2、人体姿态和形状的估计:
之前的工作多数都是依赖于参数化人体模型(SMPL、SCAPE)去表示3D人体、估计模型的参数。
本文直接预测3D人体的形状和姿势,不依赖任何参数化的身体模型和中间的2D表示。
3、3D物体的表示:
本文:UV map
——————————————————————————————————————
提出的方法:
1、3D 人体表示:
大多数3D人体数据集提供了由SMPL定义的ground truth,它提供了一个默认的UV图,将人体分为10块。
DensePose:将人体分成了24块。
经过实验,我们利用UV空间存储人体的3D位置信息。
首先,将SMPL体模型从世界坐标系转换为相机坐标系;
然后用正交投影法将3D模型与相应的彩色图像在空间上对齐,使3D人体模型在投影到图像平面时与2D人体匹配。
生成UV位置图的过程:
对于人体表面上的每个3D顶点,X和Y坐标对应于图像中的点,Z坐标是到root point的相对深度。我们将顶点的X、Y、Z坐标存储为UV图中的R、G、B颜色值。
分辨率与平均重采样误差的关系:
SMPL顶点可以从UV位置图中重新采样,正确确定UV位置图的分辨率可以减少误差。
目前最先进的方法中的表面误差和三维关节误差为数十毫米,所以选择256作为分辨率。
2、网络:
先将256 × 256 × 3 RGB image映射成256 × 256 × 3 UV position map;
encoder:ResNet-18
decoder:4个连续的上采样和卷积层.
loss:
和其他方法的loss比较,我们的loss更简单 ↑
预测的UV图和ground truth之间直接的L1损失:
其中βi,j是weight mask。
为了提高输出UV图的空间平滑度,我们添加了一个全变差调整器:
其中,αk调整不同部分的平滑约束,Rk表示第k个主体部分。
loss function:
——————————————————————————————————————
不同方法的比较:
3、实现细节:
预处理训练数据:所有图片剪裁缩放成256×256大小,人在图中间,边界留一定空隙。
网格数据:处理到UV图中。
4、拟合SMPL模型:
24个节点只能通过SMPL模型计算,所以我们需要对SMPL模型进行拟合。
在SMPL模型中,每个人体通过下面的公式表示:
我们的网络可以提供有序的顶点,每个点对应SMPL模型中的一个顶点。
从SMPL中生成的身体表面到UV图存在相似性转换:
我们将预测的UV位置图的重采样顶点定义为 ~v,
———————————————————————————————————————————
实验:
1、数据集:
SURREAL
human3.6M
UP-3D
2、结果:
在SURREAL上,比较了不同方法下的surface error and joint error
在Human3.6M上,不同方法下的3D人体姿势估计的比较:
在UP-3D数据集上:
我们方法实现的效果比ground truth还要好。
3、running time:
4、Ablation Study :
将编码器ResNet-18,换成其他编码器,效果还是很好。
用不同的loss function训练网络,结果: