该文章直接预测的是平均mesh的坐标偏差,相机参数和纹理uv图。里面有各种损失函数,很值得学习。
这篇论文还有个有意思的点,论文用的训练数据是没有对应的3D模型的(也就是一张图片没有对应的3D模型)。训练过程有点像3DMM的重建过程,即先估计3D模型,将模型渲染到2D;然后比较渲染的图片和原始图片的差异,以更新模型的参数。要将这个过程应用在神经网络中,由于渲染是不可导的,因此需要解决渲染这一步骤的求导问题。这个问题的解决可以看论文:Neural 3D Mesh Renderer
上图是模型的训练过程:图片经过encoder抽取出特征,然后预测相机参数、变形参数(平均模型的顶点坐标差值, 3D模型V=ΔV(差值)+V¯(平均模型) 3 D 模 型 V = Δ V ( 差 值 ) + V ¯ ( 平 均 模 型 ) )和纹理流;最后利用mask(前景背景掩蔽图)、特征点和纹理误差来更新网络参数。
损失函数
特征点
xi x i 是第i个训练样本真实特征点, π