— order: 2 —1 PIFu: Pixel-Aligned Implicit Function for High-ResolutionClothed Human Digitization时间:2019.5参考了 这篇解读这篇 以及 这篇先不管 RGBPIFu 就是一个SHM image encoder + 预测 occupancy 的隐式函数训练出的端到端模型𝑓𝑣(𝐹(𝑥),𝑧(𝑋))=𝑠其中𝑠[0,1]𝑥=𝜋(𝑋)表示 3D 𝑋 2D 图片上的投影位置,𝑧(𝑋)表示𝑋在此图片中对应相机坐标系下的深度值这里我的一个疑惑点是,对于单视角输入按理说是可以不用相机内外参的,看了原论文发现此种情况假定相机是weakperspectie projection and the pitch angle of0degree”也就是假定相机平视,并且只需要指定一个合适的焦距𝑓 3D 点的平均深度𝑧即可(我没看代码,但我猜后者可以从训练时的 model推理时 Bounding Box 得到,前者应该随便指定一个合适的就行,大不了调一下?)𝑭(𝑥)=𝑔(𝐼(𝑥))表示输入图片𝐼𝑥处双线性采样得到的特征向量注意这里是 pixel-aligned 特征,这也是标题的由来,作者称这样重建出的模型能更好保留图片的一些细节𝑔()是一个 stacked hourglass model (SHM) image encoderhourglass model 是一个长得像沙漏一样(看上面图)的对称网络,跟 U-Net 很像,也用到了 skip connection经常用于人体姿势识别。主要 insight 是,传统卷积网络大多只使用最后一层特征,但人体姿态估计这种事情,往往需要多尺度的信息。而stacked 就是把它们堆叠起来,复用全身关节信息来提高单个关节的识别精度这方面有挺多文章参考的(如 这篇),我还没仔细看至于 RGB𝑓𝑣换成𝑓𝑐预测𝑟𝑔𝑏[0,255]3即可,两者一结合就得到 shape + texturetrain 阶段输入数据是𝑚个对应的 pair(2𝐷image3𝐷mesh),每个 image 需要知道它的内外参或者假定相机是弱透视矩阵,以及它的 mask信息(监督图像特征向量中哪些属于人体哪些属于背景,这可以通过 detection 很常见的 removebg 应用得到)对每一个 2D 图像输入到 encoder𝑔,得到深度特征𝑭𝑉×𝑤×𝑐;对于 3D 模型,可以(均匀+表面附近高斯抖动)采样得到𝑛3D {𝑋1,,𝑋𝑛},得到其对应𝑓𝑣真值{𝑓𝑣(𝑋1),,𝑓𝑣(𝑋𝑛)},然后同时优化𝑔𝑓𝑣inference 阶段:输入就是一张图片,图片的内外参或者假定相机是弱透视矩阵,以及图片的 mask 信息,以及该图片中人体所处的大 Bounding Box Bounding Box 进行采样得到 3D Occupacy Field跑一遍 Marching Cube 就得到重建出的 mesh另外 PIFu 也支持输入多视角图片(但此时需要对应相机内外参)及它们的 mask 信息,具体就是额外训练一个多视图推理网络𝑓2之前那个隐式函数(记作𝑓1)对不同图片的信息聚合起来,这样信息多了自然效果更好(主要是对单视角不可见区域)2 PIFuHD: Multi-Level Pixel-Aligned Implicit Function for High-Resolution 3D Human Digitization时间:2020.4 (CVPR2020 oral)参考 这篇解读 这篇解读主要的 insight 是:准确地预测三维模型需要大范围的空间信息,但精细表面信息需要高维度特征信息,由于显存大小限制,大感受野和高分辨率难以两全。基于此,作者提出 Coarse-to-Fine 框架(先低分辨率预测大致形状,再高分辨率雕刻出细节);同时,作者提出一个可以有效预测人体背部精细细节的解决方案 (Normal Image)Coarse level: PIFu 类似,输入原始图片下采样之后的512×512大小的图片𝐼𝐿,用 SHM 网络训练,输出特征分辨率是128×128,这一部分主要关注于生成全局的几何信息。不同之处在于还添加了512×512预测得到的图像域的正面法相图𝐹𝐿和反面法向𝐵𝐿𝑓𝐿(𝑿)=𝑔𝐿(Φ𝐿(𝑥𝐿,𝐼𝐿,𝐹𝐿,𝐵𝐿),𝑍)其中𝑿 3D 点,投影(现在是正交投影了)到图像空间𝐼𝐿上是𝑥𝐿𝑍是该相机视角下的深度,Φ𝐿是一个 SHM 提特征(也就是后面 ICON 提到的 global encoder),𝑔𝐿是拟合隐式函数的 MLP这里从函数的表述上相对 PIFU 进步了些,𝑓(𝑿,𝐼)=𝑔(Φ(𝑥,𝐼),𝑍)可以看作是用 3D 𝑿 query 图像𝐼预测出 occupancyFine level: SHM 输入是原始的1024×1024的图片𝐼𝐻,输出512×512大小的图像特征,用大分辨率的特征图去雕琢三维模型细节。同样这里也加入了𝐹𝐻,𝐵𝐻𝑓𝐻(𝑿)=𝑔𝐻((𝑥𝐻,𝐼𝐻,𝐹𝐻,𝐵𝐻),Ω(𝑋))其中变量 notation 是类似的,𝑥𝐻=2𝑥𝐿Φ𝐻的结构跟Φ𝐿是一样的,输入是1024的图片 crop 512之所以能 crop 是因为卷积网络可以用滑动窗口去 train之后用1024的全图进行 inference之所以要 crop 是因为显存不够大,24𝐺都不够用)因为做了 crop感受野没有覆盖全图,所以在𝑔𝐻中没有直接输入投影的深度𝑍,而是把之前 Coarse level 𝑔𝐿的一个中间层输出(提取出的 3D embedding拿来记作Ω(𝑿),包含了全局信息Normal estimation这里的 insight 是,PIFu 预测不可见区域比如说背部,会生成一个 feature-less and smooth 的表面。这有部分原因是损失函数设计使 MLP 偏爱在不确定情况下直接摆烂生成平滑表面,也有部分原因是本身这种不可见预测太难了于是自然的想法就是把难度分摊一部分到 feature extraction 阶段。具体而言,作者直接为 front back 分别训练了一个 pix2pixHD网络(对应后面 ICON pix2pix normal), RGB 输入预测出法向图输出(这里我没看代码,但我猜是提前另外训练好这俩网络,然后嵌入到 PIFuHD 的架构中,冻住或者只允许极小调整)这个网络呢,最初是李飞飞组的一个风格迁移(或许 imagenormal image 也算风格迁移?)的工作提出的 Perceptual Losses forReal-Time Style Transfer and Super-Resolution,用一个叫 Perceptual Loss 的东西训练,网络结构跟 FCN 挺像的PIFuHD 的表现非常惊艳,作者虽然只开源了 inference 代码,但依然有超级高的 stars但是怎么说呢?个人理解 PIFuHD 之所以效果提升更多还是 Course-to-fine 的功劳(毕竟名字都叫 HD笑)。而正反 normal 这部分,它也是网络预测出来的,不能说就当做ground truth大体上是对的,但细节部分不保证)。在论文当中,作者也多次使用 plausible 这个词;另外当人不是平行于相机平面时,按照作者方式得到的正反面的法向,大概率不太合理相比之下,ICON SMPL body 那里得到一个更强的先验,然后交替优化,这个法向的效果看起来(毕竟我没跑过代码,笑)就有说服力得多