3D【8】鸟类重建:Learning Category-Specific Mesh Reconstruction from Image Collections阅读笔记

该文章直接预测的是平均mesh的坐标偏差,相机参数和纹理uv图。里面有各种损失函数,很值得学习。

这篇论文还有个有意思的点,论文用的训练数据是没有对应的3D模型的(也就是一张图片没有对应的3D模型)。训练过程有点像3DMM的重建过程,即先估计3D模型,将模型渲染到2D;然后比较渲染的图片和原始图片的差异,以更新模型的参数。要将这个过程应用在神经网络中,由于渲染是不可导的,因此需要解决渲染这一步骤的求导问题。这个问题的解决可以看论文:Neural 3D Mesh Renderer

3D【8】鸟类重建:Learning Category-Specific Mesh Reconstruction from Image Collections阅读笔记_第1张图片

上图是模型的训练过程:图片经过encoder抽取出特征,然后预测相机参数、变形参数(平均模型的顶点坐标差值, 3DV=ΔV+V¯() 3 D 模 型 V = Δ V ( 差 值 ) + V ¯ ( 平 均 模 型 ) )和纹理流;最后利用mask(前景背景掩蔽图)、特征点和纹理误差来更新网络参数。

损失函数

特征点

这里写图片描述
xi x i 是第i个训练样本真实特征点, π̃ i(AVi) π ~ i ( A V i ) 是对应的预测特征点。其中 πi π i 是相机参数。论文假设特征点可以由3D模型的其他顶点线性相加计算出来,因此有 AVi A V i 。A为一个线性方程的系数矩阵。

掩蔽

这里写图片描述

Si S i 为样本i的掩蔽图, R(Vi,F,π̃ i) R ( V i , F , π ~ i ) 代表利用3D mesh M=(V,F) M = ( V , F ) ,F是三角面片和相机参数 π π 渲染出来的掩蔽图。

相机参数

这里写图片描述

惩罚项

1、拉普拉斯网格平滑

这里写图片描述

LV是拉普拉斯网格平滑中的拉普拉斯坐标,该项的目的是使LV=0,也就是令顶点的拉普拉斯坐标等于0。几何意思是使顶点i的坐标等于其相邻顶点的均值。

2、变形参数正则化

这里写图片描述
目的是防止变形过于夸张,并且使得变形结果更有意义。

3、特征点系数矩阵约束

Lvert2kp=1|K|kvAk,vlogAk,v L v e r t 2 k p = 1 | K | ∑ k ∑ v − A k , v l o g A k , v

这是个交叉熵损失函数,目的是使每个特征点对应的系数 Ak A k 应该是一个one-hot向量。

纹理

论文不是直接预测纹理图,而是预测纹理图中每个点在原始图片中的位置。3D模型中某一顶点的纹理,一般直接通过其uv坐标在纹理图中取得,论文的这个方法是先从预测出来的纹理流(矩阵)中获取x,y坐标,然后该顶点的纹理根据x,y在原始图片中得到(可以用双线性采样)。

这里写图片描述

Si S i 是掩蔽图, Ii I i 是输入图片 R(Vi,F,π̃ i,Iuv) R ( V i , F , π ~ i , I u v ) 是渲染出来的图片。

上面的这个损失函数只能计算物体前面可见的纹理流,而对于3D mesh的背面就无法计算。因此作者还提出了如下损失函数:
这里写图片描述
其中G是双线性采样, DSi D S i 是the distance transform field of the foreground mask(不知道啥意思。。。。), Fi F i 是纹理流。

你可能感兴趣的:(3d)