原文链接:https://blog.csdn.net/qq_35946628/article/details/90642257?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162736575416780261967321%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162736575416780261967321&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-4-90642257.first_rank_v2_pc_rank_v29&utm_term=Joint+3D+Face+Reconstruction+and+Dense+Alignment+with+Position+Map+Regression+Network&spm=1018.2226.3001.4187
从一张或多张2D图像中重建出人脸的3D模型。
可以用这样一个表达式来建模3D人脸模型:M=(S,T)。
其中,S表示人脸3D坐标形状向量(shape-vector),包含X,Y,Z坐标信息:
这里的n指的是模型的顶点数,T表示对应点的纹理信息向量(texture-vector),包含R,G,B颜色信息:
.2D的人脸图片可以看作是3D人脸在2D平面上的一个投影,I代表M的2D投影,I(u,v)代表像素(u,v)处的纹理值,所以3D人脸重建就是从2D图片中计算出M的估计:Mˆ=(Sˆ,Tˆ)
表示脸部模型:
其中,这里的m是采集的人脸样本数。
上述的线性组合中,人脸样本数量较大,且样本特征之间存在相关性,因此进行PCA(主成分分析)法:
分类:颜色纹理和几何纹理
颜色纹理:颜色的变化或者明暗的不同来表现出不同的纹理细节
几何纹理:纹理不仅有颜色和明暗,并且还有凹凸感
方式:
图像纹理(贴图纹理):通过映射把纹理图案中的像素一一指定给三维物体的表面。
函数纹理:通过数学函数生成的纹理图案,直接根据函数映射到物体表面,比如在屏幕上面生成棋盘。
纹理映射(Texture Mapping):通过数字化技术把纹理图案覆盖或者映射或者投射到三位物体的表面,给物体增加表面细节的过程。
纹理映射的思想:需要寻找一种纹理空间(U,V)坐标到三维物体曲面(s,t)坐标之间的映射关系,将纹理空间对应的坐标上对应的彩色参数值(R,G,B)映射到三维物体曲面上,从而使三维物体曲面得到彩色的纹理细节。
UV坐标是指所有的图象文件都是二维的一个平面。水平方向是U,垂直方向是V,通过这个平面的,二维的UV坐标系,我们可以定位图象上的任意一个象素。
多边形为了贴图就额外引进了一个UV坐标,以便把多边形的顶点和图象文件上的象素对应起来,这样才能在多边形表面上定位纹理贴图。所以说多边形的顶点除了具有三维的空间坐标外,还具有二维的UV坐标。对于纹理贴图而言,一张贴图的U和V坐标的数值范围都是0到1。
UV就是将图像上每一个点精确对应到模型物体的表面. 在点与点之间的间隙位置由软件进行图像光滑插值处理. 这就是所谓的UV贴图.
网格展开到平面区域,除了可展曲面,其它曲面在展开后都会产生一些扭曲。一般有两种扭曲。一种是曲面本身的几何所决定的,比如球面展开到平面,一定会产生扭曲。想要减少展开的扭曲程度,可以在扭曲程度大的地方增加曲面割线。另一种是展开算法中的约束产生的扭曲,比如固定边界的UV展开。一种直观的观察展开扭曲程度的方式是,把一张棋盘格图片贴到网格上,棋盘格越均匀,UV展开扭曲越小。
人脸对齐可以看作在一张人脸图像搜索人脸预先定义的点(也叫人脸形状),通常从一个粗估计的形状开始,然后通过迭代来细化形状的估计。人脸对齐主要将人脸中的 eyes, mouth, nose and chin 检测出来,用特征点标记出来。
人脸对齐,又叫做人脸特征点定位(检测),需要先人工指定点的具有规律的位置,然后在输入的人脸上按照特征点分布规律把点标记出来。
应用:1>五官定位;2>表情识别;3>人脸漫画,素描生成;4>增强现实;5>换脸;6>3D建模。
挑战:大姿态、夸张表情、光线明暗、遮挡、场景多变等问题。
稀疏人脸对齐:5、34或68个特征点;
密集人脸对齐:数以千计的特征点。
姿态:(pitch,yaw,roll)三种角度,分别代表上下翻转,左右翻转,平面内旋转的角度。
人脸姿态估计的思想:旋转三维标准模型一定角度,直到模型上“三维特征点”的“2维投影”,与待测试图像上的特征点(图像上的特征点显然是2维)尽量重合。
可以利用非线性最小二乘方法来建立模型,模型公式如下:
其中,(α,β,γ)代表人脸姿态三个旋转角度, N代表着一张人脸上标定特征点的个数,qi代表着待测试人脸特征点,pi代表对应着的三维通用标准模型特征点,R代表旋转矩阵, t为空间偏移向量,s为伸缩因子。R的具体形式是如下三个矩阵相乘:
算法的大致思路是利用一个人脸数据库构造一个平均人脸形变模型,在给出新的人脸图像后,将人脸图像与模型进行匹配结合,修改模型相应的参数,将模型进行形变,直到模型与人脸图像的差异减到最小,这时对纹理进行优化调整,即可完成人脸建模。
在计算机三维图像中,投影可以看作是一种将三维坐标变换为二维坐标的方法,常用到的有正交投影和透视投影。正交投影多用于三维建模,透视投影则由于和人的视觉系统相似,多用于在二维平面中对三维世界的呈现。
透视投影(Perspective Projection)是为了获得接近真实三维物体的视觉效果而在二维的纸或者画布平面上绘图或者渲染的一种方法,也称为透视图。它具有消失感、距离感、相同大小的形体呈现出有规律的变化等一系列的透视特性,能逼真地反映形体的空间形象。透视投影通常用于动画、视觉仿真以及其它许多具有真实性反映的方面。
TPS是一种插值方法,它寻找一个通过所有的控制点的弯曲最小的光滑曲面;就像一个薄铁板,通过所给定的几个“样条”(比如木条),铁板表面是光滑的。弯曲最小由一个能量函数定义,就是wiki上的那个双重积分。
深度其实就是该象素点在3d世界中距离摄象机的距离(绘制坐标),深度缓存中存储着每个象素点(绘制在屏幕上的)的深度值!
深度值(Z值)越大,则离摄像机越远。
深度值是存贮在深度缓存里面的,我们用深度缓存的位数来衡量深度缓存的精度。
图像的语义分为视觉层、对象层和概念层,视觉层即通常所理解的底层,即颜色、纹理和形状等等,这些特征都被称为底层特征语义;对象层即中间层,通常包含了属性特征等,就是某一对象在某一时刻的状态;概念层是高层,是图像表达出的最接近人类理解的东西。通俗点说,比如一张图上有沙子,蓝天,海水等,视觉层是一块块的区分,对象层是沙子、蓝天和海水这些,概念层就是海滩,这是这张图表现出的语义。
定性分析就是对研究对象进行“质”的方面的分析。具体地说是运用归纳和演绎、分析与综合以及抽象与概括等方法,对获得的各种材料进行思维加工,从而能去粗取精、去伪存真、由此及彼、由表及里,达到认识事物本质、揭示内在规律。定量分析:对社会现象的数量特征、数量关系与数量变化的分析。其功能在于揭示和描述社会现象的相互作用和发展趋势。定性——用文字语言进行相关描述;定量——用数学语言进行描述。
Encoder-Decoder并不是一个具体的模型,而是一类框架。Encoder和Decoder部分可以是任意的文字,语音,图像,视频数据,模型可以采用CNN,RNN,BiRNN、LSTM、GRU等等。所以基于Encoder-Decoder,我们可以设计出各种各样的应用算法。
Encoder-Decoder框架有一个最显著的特征就是它是一个End-to-End学习的算法,所谓编码,就是将输入序列转化成一个固定长度的向量;解码,就是将之前生成的固定向量再转化成输出序列。
非端到端:相对于深度学习,传统机器学习的流程往往由多个独立的模块组成,比如在一个典型的自然语言处理(Natural Language Processing)问题中,包括分词、词性标注、句法分析、语义分析等多个独立步骤,每个步骤是一个独立的任务,其结果的好坏会影响到下一步骤,从而影响整个训练的结果,这是非端到端的。
端到端:而深度学习模型在训练过程中,从输入端(输入数据)到输出端会得到一个预测结果,与真实结果相比较会得到一个误差,这个误差会在模型中的每一层传递(反向传播),每一层的表示都会根据这个误差来做调整,直到模型收敛或达到预期的效果才结束,这是端到端的。
两者相比,端到端的学习省去了在每一个独立学习任务执行之前所做的数据标注,为样本做标注的代价是昂贵的、易出错的。
作用:1.记录完整人脸点云的3D坐标;2.在每个UV位置保留了语义。
性质:2D图像
作用:为位置映射图上的每个点分配不同的权重,并计算加权损失。
优点:有助于提高网络性能。
FPS是图形领域中的定义,指的是每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。
重采样:就是根据一类象元的信息内插出另一类象元信息的过程。在遥感中,重采样是从高分辨率遥感影像中提取出低分辨率影像的过程。
常用的重采样方法有最邻近内插法(nearest neighbor interpolation)、双线性内插法(bilinear interpolation)和三次卷积法内插(cubic convolution interpolation)。其中,最邻近内插法最为简单,计算速度快,但是视觉效应差;双线性插值会使图像轮廓模糊;三次卷积法产生的图像较平滑,有好的视觉效果,但计算量大,较费时。
误差是衡量观测值和真实值之间的差距,残差是指预测值和观测值之间的差距。
实验表明,残差网络更容易优化,并且能够通过增加相当的深度来提高准确率。
核心是解决了增加深度带来的副作用(退化问题),这样能够通过单纯地增加网络深度,来提高网络性能。
参考博客:
https://www.cnblogs.com/wuliytTaotao/p/9560205.html
https://www.cnblogs.com/alanma/p/6877166.html
https://zhuanlan.zhihu.com/p/42706477
转置卷积层(transposed convolution layer)又称反卷积层或分数卷积层,可用于用于恢复减少的维数(上采样)。转置卷积层我们就会用stride小于1的卷积进行上采样,使输出的size变大。
三角网格是多边形网格的一种,多边形网格又被称为“Mesh”,是计算机图形学中用于为各种不规则物体建立模型的一种数据结构。现实世界中的物体表面直观上看都是由曲面构成的;而在计算机世界中,由于只能用离散的结构去模拟现实中连续的事物。所以现实世界中的曲面实际上在计算机里是由无数个小的多边形面片去组成的。比如下图的这些模型,在计算机渲染后由肉眼看是十分平滑的曲面,而实际上,计算机内部使用了大量的小三角形片去组成了这样的形状。这样的小面片的集合就被称作Mesh。Mesh既可以由三角形组成,也可以由其他平面形状如四边形,五边形等组成;由于平面多边形实际上也能再细分成三角形。所以,使用全由三角形组成的三角网格(Triangle Mesh)来表示物体表面也是具有一般性的。
参考博客:
https://blog.csdn.net/datase/article/details/72704584
OBJ文件是Alias|Wavefront公司为它的一套基于工作站的3D建模和动画软件"Advanced Visualizer"开发的一种标准3D模型文件格式,很适合用于3D软件模型之间的互导。
(1)OBJ文件是一种3D模型文件。不包含动画、材质特性、贴图路径、动力学、粒子等信息。
(2)OBJ文件主要支持多边形(Polygons)模型。虽然也支持曲线(Curves)、表面(Surfaces)、点组材质(Point Group Materials),但Maya导出的OBJ文件并不包括这些信息。
(3)OBJ文件支持三个点以上的面,这一点很有用。很多其它的模型文件格式只支持三个点的面,所以导入Maya的模型经常被三角化了,这对于我们对模型进行再加工甚为不利。
(4)OBJ文件支持法线和贴图坐标。在其它软件中调整好贴图后,贴图坐标信息可以存入OBJ文件中,这样文件导入Maya后只需指定一下贴图文件路径就行了,不需要再调整贴图坐标。
设计一个2D表示名为UV位置贴图,它记录了完整人脸在UV空间的3D形状,然后训练了一个卷积神经网络从2D图像中回归出UV位置贴图,将权值面具整合到损失函数中,以在训练中提高网络表现。该方法不依赖任何人脸模型,就能重建3D人脸且保留语义信息。