注册是为脸的所有点建立对应关系的过程。
采用改进的最优阶梯非刚性ICP算法,将其应用于三角网格的三维域。
https://github.com/charlienash/nricp
计算机视觉【1】非刚性ICP配准(Non-rigid ICP)算法分析_船头尺的博客-CSDN博客_非刚性配准
3D【2】非刚性配准:Optimal Step Nonrigid ICP Algorithms for Surface Registration 阅读笔记_DCD_LIN的博客-CSDN博客_非刚性配准是什么意思
模板S=(V,E),V是顶点,有n个;E是边。
每个顶点的变换矩阵Xi大小是3∗4,所有顶点的变换矩为X=[X1,...,Xn]T,大小为3*4n。
Data loss:从3d face(T)中找到与模板顶点i最近的点,然后计算距离。
Smoothness loss:使变换后的模板尽量平滑。
Landmarks loss: 关键点一一对应。
GitHub - YadiraF/PRNet: Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network (ECCV 2018)Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network
设计UV位置映射图,用2D图像记录所有面部点云3D坐标,在每个UV多边形中保留语义信息;
设计位置映射回归网络(PRN)(编码-解码),从单张2D人脸图像中回到UV位置映射。
为了保持点的语义,基于3DMM(BFM)创建了UV坐标。使用参数化的UV坐标,将网格边界映射为正方形。由于BFM中的角点超过50K,因此使用256作为位置映射的大小,能够得到比较高的精度。
从 3d obj 到 2d 图像的rendering mesh:使用光栅渲染(rasterization render )
https://github.com/YadiraF/face3d/blob/04869dcee1455d1fa5b157f165a6878c550cf695/face3d/mesh/render.py
1\一般,render func包括camera、light、raterize。这里只考虑raterize;
2\一般,输入顶点被归一化为 [-1,1] 并以 [0, 0] 为中心。(在世界空间中)
这里顶点使用图像坐标,它以 [w/2, h/2] 为中心,进行插值
3D人脸重建——PRNet网络输出的理解_风翼冰舟的博客-CSDN博客_prnet
https://github.com/AaronJackson/vrn
https://github.com/amadeuzou/vrn-pytorch
Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric Regression
将mesh转成voxel(binvox工具),变成一个192*192*200的矩阵,进行训练
voxel转mesh: demo.py
GitHub - amadeuzou/vrn-pytorch: PyTorch Code for "Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression"
渲染voxel:
vrn/rendervol.m at master · AaronJackson/vrn · GitHub
https://github.com/microsoft/Deep3DFaceReconstruction
Accurate 3D Face Reconstruction with Weakly-Supervised Learning: From Single Image to Image Set
CVPR 2019 | 基于弱监督学习的精确3D人脸重建 - 知乎
网络输出239个系数:
80个id系数,64个表情系数,80个纹理系数:
9个光照系数:
6个旋转平移系数
损失函数:
人脸区域皮肤颜色的损失:(皮肤置信度加权的像素颜色l2损失)
关键点损失:(68像素点坐标l2损失)
感知层损失:(人脸识别网络facenet特征的内积相似度)
模型系数正则化损失:
颜色连续性的损失:生成图像在r,g,b三个通道的脸颊、鼻子和前额的皮肤区域的方差
《Accurate 3D Face Reconstruction with Weakly-Supervised Learning: From Single Image to Image Set》_Yannie's Blog-CSDN博客
一张灰度图的亮度信息由4个因素决定:
1、相机:内部参数和外部参数
2、光照:方向,位置和光的能量分布
3、物体的表面反射率:albedo,由物体表面的材质决定。
4、物体表面的几何性状:
在给定一个3D模型、光照以及物体的反射率,可以模拟相机渲染出一张2D图片。sfs是这个过程的逆向:给定一张图片,光照以及模型的表面反射率,求出物体的3D结构(法向量、深度)。
法向量与光照共同决定了图片亮度的生成,
曲面上的某一点(x,y,z)的单位法向量n使用曲面Z=Z(x,y)上点(x,y,Z(x,y))的梯度(p,q)T表示:
假设曲面是Lambertian曲面,且所有点的的反射率都为ρ,那么曲面上某一点的反射函数为:
假设相机为正交投影,3D点(X,Y,X)投影后的2D点为(x,y)=(mX, mY)
(假设相机为透视投影,3D点(X,Y,X)投影后的2D点为(x,y)= (X/Z , Y/Z ))
2D图像的亮度直接等于曲面反射函数:
如果知道了2D图片、光照方向和曲面反射率,那么物体曲面重构的就是要,求物体的Z=Z(x,y)。先求曲面顶点的法向量,再求曲面梯度p\q
3D【7】人脸重建:Hands on Shape from Shading阅读笔记_DCD_LIN的博客-CSDN博客
人脸识别 光照预处理_Cecilia_He-CSDN博客_人脸识别光线