(week 1)【论文初读】Photo Wake-Up: 3D Character Animation from a Single Photo

第一次接触CV的内容就是要复现一篇看起来非常前沿的论文,感觉还是挺有挑战性的,不过我相信挑战也会带来乐趣(然而真的完全零基础)。

首先附上论文链接:Photo Wake-Up: 3D Character Animation from a Single Photo

论文所完成的工作用其摘要第一句话可以很好地描述:“We present a method and application for animating a human subject from a single photo.” 即使单张图片中的人物动起来。

首先,作者描述了一下前人的工作,并说明了该模型的技术基础和优势,根据我的总结,主要有三个方面的优势:

  • 已有模型都是根据大量图片数据集或视频重构,而本模型根据单张图片重构
  • 已有单张图片的人物animation都聚焦于2D或伪3D,而本模型聚焦于fully 3D
  • 已有的3D body estimation大都聚焦于semi-naked,而本模型将cloth带入考虑

之后,作者对整体流程进行了一个概述,我在这里把文中的配图引用过来,流程非常清楚
(week 1)【论文初读】Photo Wake-Up: 3D Character Animation from a Single Photo_第1张图片

接下来就是模型的详细说明,以我比较菜的理解能力,第一遍读论文看到的整体过程如下:

  1. Our approach begins with existing methods for segmenting a person from an image, 2D skeleton estimation, and fitting a (semi-nude) morphable, posable 3D model. The result of this first stage, while animatable, does not conform to the silhouette and does not look natural.利用现有的方法将2D图片中人物的躯干分离出来,然后拟合到3D模型
    人物识别和分割:Mask R-CNN【文献30】
    二维姿态估计:【文献38】
    精确分割:Dense CRF【文献24】
    apply PatchMatch to fill in the regions where the person used to be:【文献4】
    拟合SMPL:【文献6】
  2. 根据结果得到rigged mesh: any 3D motion sequence can then be used to animate the rigged mesh
    【这步是主要工作,因为前面的算法都是现成的,关键在于rigged mesh的获得,以下的论文内容都是关于这部分】
    (1)we map the problem to 2D, perform a silhouette-aligning warp in image space, and then lift the result back into 3D.
    将问题映射到二维,在图像空间内施行一种轮廓对齐变换,然后提升到三维空间
    (2)by introducing label maps that delineate the boundaries between body parts, we extend our method to handle certain selfocclusions. 引入标签地图描述身体各部分之间的边界,然后拓展算法处理一部分自遮挡问题

【然后一个菜鸡发出了对自己灵魂的拷问,以下全部是我的内心活动】
??warp是一种特定的算法还是泛指图像的变换??
mesh construction和rigging是从SMPL开始的,但是SMPL针对半裸的人像,怎么匹配到clothed人物上呢?一种方式是通过optimizing vertex locations使SMPL强行拟合,但是这对于复杂区域来说太难了,所以作者选用了二维方法: warp the SMPL silhouette to match the person silhouette in the original image and then apply that warp to projected SMPL normal maps and skinning maps.
第四部分的关键算法其实就是两步:建立rigged mesh和处理自遮挡问题
建立rigging mesh:二维到三维的映射、处理边界值(平滑?)、填空、背部重构
处理自遮挡:建立label map、遮挡处重构
感觉还行,但是工作量未可知?最后真的能做出来?SMPL是什么鬼?normal map和skinning map是什么鬼?rigged mesh又是什么鬼?天呐~~唯一倍感亲切的就是MRF算法,虽然我也不知道怎么用,但好歹听说过这个词qwq
【------------------------------------这里是切回正题的分割线------------------------------------------】

看完论文的主要部分之后我又看了一下老师给我们规划的整体算法流程,主要分了以下几个步骤:

  1. 图像分割与姿态估计
    (1)从输入图像中分割人体区域且估计人体的2D姿态
    (2)对抠除人体之后的空白区域做填充
  2. 无遮挡情况下的三维网格构建
    (1)将一个通用的SMPL人体模型(带骨骼与蒙皮的)fit到输入图像,且投影到2D空间生成其轮廓图、法向图、深度图、蒙皮权重图
    (2)将SMPL的2D轮廓warp到1.中估计出的人体2D轮廓
    (3)将此warp应用到法向图、深度图、蒙皮权重图
    (4)根据(3)得到的这些图,重构出网格(带骨骼与蒙皮信息)
  3. 考虑自遮挡的三维网格构建
    (1)参考SMPL人体模型分割
    labels 的2D投影,通过一个迭代的过程,求解输入图像中真实人体轮廓内各个部分的2D labelling
    (2)根据此labelling,将输入图像中的人体区域分割成不同部分,对每一个部分,分别应用 2.中方法重构其网格
    (3)各个部分的网格拼接在一起,形成整个人体模型
  4. 将现有的运动捕捉数据,应用于重建之后的模型上,产生动画
  5. 其它:
    (1)身体后面的纹理,简单处理,比如直接贴上身体前面的纹理,或者用户做一些简单交互控制
    (2)重构出的模型,人头姿态可能不太准确,做了一些纠正

果然思路清楚多了。接下来就等着大家一起讨论分工和下一步的任务吧,先溜去学习TensorFlow和OpenCV了~~

你可能感兴趣的:((week 1)【论文初读】Photo Wake-Up: 3D Character Animation from a Single Photo)