英语原文共 19 页,剩余内容已隐藏,支付完成后下载完整资料
SNAPCHAT面部过滤器项目
增强现实CS7434
埃德蒙·奥弗林
12304742号
目录
摘要 4
目的 4
重要性 4
摄像机校准 5
HAAR级联 6
面部标志 7
锚定 7
正交程序问题 8
实施方式 9
语言选择 9
HAAR级联法 9
面部标志物检测 9
项目锚定 10
换脸 11
实验与结果 14
眼镜和胡子滤镜 14
全正面 14
倾斜、缩放和旋转 14
闭塞 14
布光 14
面部过滤器 14
全正面 14
倾斜、缩放和旋转 14
闭塞 14
布光 15
结果分析与讨论 15
总结、结论和未来工作 17
参考文献 18
图1 针孔摄像机模型 (Joshi, 2015) 5
图2 基于Haar的人脸正面特征 (OpenCV, 2016) 6
图3 面积总和的可视化(Manske, 2007) 6
图4 不同倾斜角度下的人脸界标检测示例。(Earl, 2015) 7
图5 理想路标定位的面部变形(Medium, n.d.) 8
图6 Haar特征对齐的不歪斜胡须 (PngImg, n.d.) 9
图7 人脸关键标志点标注 (Imperial College London, 2013) 10
图8 过滤覆盖系统的逻辑流程 10
图9 样本面交换(Woodsie TV, 2016) 11
图10 正交投影对齐(ResearchGate, 2016) 12
图11 Stephen Barrett教授提供的测试脸交换(MaanKaab, 2016) 12
图12 唐纳德·特朗普覆盖的不同照明条件 (MaanKaab, 2016) 13
图13 框架上的对准问题 15
图14 一副眼镜的三维透视图(VisionExpress, n.d.) 15
图15 眼镜与面部姿势适当倾斜(PngMart, 2016) 16
图16 从中心眉形锚点到脊骨的对齐 (PngImg, n.d.) 16
图17 与Aaron Paul的脸交换 (Huffington Post, 2013) 16
介绍
摘要
Snapchat已经成为现代社会化媒体的主流。近几个月来,Snapchat推出了一款增强现实相机镜头过滤系统,其奇特幽默的效果让用户着迷。该项目旨在探索摄像机标定的世界,以找到已知的面部标志,标定面部的方向,生成姿势,并将各种效果应用于用户的面部结构,跨越平面便携式网络图形失真和应用。除此之外,该项目还旨在利用正交Procrutes问题来处理称为面部交换的滤波器,作为处理和缓解将面部特征与不同投影的另一图像交换的正交校准问题的方法。
为了理解现实的增强是如何工作的,必须遍历从2D世界图像表示中生成3D已知校准的过程。 使用各种检测特征的位置和分类的方法,可以生成时间透视轴并将其用于将这些效果增强和扭曲到用户脸上的所需位置。 该项目旨在探索为给定投影找到标定的区域,并运用有根据的猜测为所需的给定特征定位合适的标记和方向。
目的
自2013年以来一直是Snapchat的狂热用户,从姿势估计,校准以及将各种镜头和失真效果应用于用户面部的角度来看,面部滤镜的实现一直是一个有趣的话题。 该项目的动机是要了解此校准系统如何以其最基本的形式工作,并使用一个简单的系统创建有趣的东西来描述这些功能,使个人可以轻松添加新的过滤器。 总体目标是创建一个基本系统,以后其他人可以根据需要扩展该系统,并让我自己对此类滤镜的工作原理以及与面部姿势的对齐方式有更深入的了解
重要性
由于Snapchat相机过滤器的这一特性并没有通过API正式实现开源,因此它一直渴望使用面部地标作为定位点来创建新的过滤器,并使用线性代数来估计面部的姿势。虽然这种实现不如Snapchat的精确或高效,但它为在摄像头框架内的任何检测到的人脸上实现简单的过滤器(例如眼镜和胡须)提供了坚实的基础,并实现了对面对面的脸部互换特征
这与增强现实的直接应用与此领域有关。 用于叠加对象的方法极大地依赖于具有已知面部标志的校准区域,从而通过相机镜头增强了在相机框架中检测到的任何面部的真实感。
背景理论
摄像机校准
OpenCV使用称为针孔相机的投影模型(OpenCV,2013)。利用该模型,将平面上的图像点转换为真实空间中的目标点需要几个未知量。
图1 针孔摄像机模型 (Joshi, 2015)
上图使用了投影中心O,为简化起见,使主轴平行于Z轴。 像平面与O的距离为f个单位,其中f为焦距。 相机平面坐标pc位于w为常数的位置(u,v,w)。 使用相似的三角形来计算(u,v)给定(X,Y,Z)和f,我们得出以下同构坐标:
由于图像平面可能与z轴与图像平面相交的位置不重合,因此需要通过(tu,tv)将Pc转换到所需的原点。新的齐次坐标如下:
最后,必须包括像素的比例。如果P点用cm表示,pc用像素测量,我们需要包含表示像素/cm的mu和mv值。方程现在变成:
如果坐标轴u和v彼此不正交,则可以给K一个倾斜因子。该矩阵被称为摄像机的固有参数矩阵(OpenCV,2013):
HAAR 级联
一张脸有许多特征,可以用来对个人进行独特的分类。利用正负图像的大数据存储,可以对数据存储进行级联训练,并根据训练结果对Haar样特征进行分类。类Haar特征只考虑被检测区域中的相邻空间矩形,然后给出白色区域中像素之和的差值,由黑色区域确定,以给出相对特征(Violaamp;Jones,2001)。
图2 基于Haar的人脸正面特征 (OpenCV, 2016)
脸部有共同的特征,每个脸部会产生不同的边界框集-例如,眼睛周围的区域通常比颊骨区域更暗; 因此,可以相邻生成两个边缘特征(Papageorgiou等,1998)。 这种检测产生了一个卷积核,该卷积核从图像本身内的像素开始工作,以给出2个矩形特征像素和(Viola&Jones,2001)。 然后可以将多组特征叠加到脸上,以大致显示标记特征的位置,即眉毛,下巴,眼睛,鼻子,下巴,嘴巴。
矩形Haar样特征可以考虑使用称为积分图像的求和面积表。由于图像可以看作是强度值矩阵,积分图像可以看作是与图像矩阵具有相同维度的查找表(Lienhartamp;Maydt,1998)。类Haar特征矩形由4个点组成;因此,一个特征至少需要4次查找。
图3 面积总和的可视化(Manske, 2007)
面部标志
与其他方法相比,Haar级联的计算开销一般较低,但它们只给出特征的近似面积,并且在倾斜角度下失效。由于需要更精确的点来精确地得到人脸的姿态,因此必须确定以人脸标志点为主要特征点的特征检测方法。DLIB是一种现代的C 机器学习框架,它包括用于解决现实世界问题的检测算法和工具(DLIB,N.D)。该框架最近增加了一些新的功能,包括通过一个毫秒的面部定位和一组回归树来实时检测面部地标。
该库快速添加68个面部地标的注释,即使是在非正面、高度倾斜的角度,也能准确检测。DLIB使用HELEN数据集,该数据集由2000个不同照明、姿势、表情、遮挡和个体差异的训练图像组成。(Le等人,2012)也可以超越默认的68点生成器,根据Kazemi和Sullivan创建自己的分类器,在那里生成了194点模型,从而产生了更丰富的工作点集。使用面部地标的主要好处在于在倾斜和变化的遮挡范围内连续地标注各个点。(Kazemiamp;Sullivan,2014年)
图4 不同倾斜角度下的人脸界标检测示例。(Earl, 2015)
锚定
由于DLIB快速地注释了必要的特征,所以在生成面部和姿势的尺寸时,我不得不使用锚定点来保持一些常量。我决定使用那些无法承受大变形的点。由于下巴、嘴甚至鼻子都会扭曲形状,并且会因环境的不同而变化,我看到了使用头部宽度(第9点和第16点)和眼睛之间的鼻子中心点(第27点)作为生成面部姿势的常数的潜力。人脸地标是从一个完美的中心对称的人脸开始工作的,我用这个想法将这些点变换和扭曲到我的恒定点的实际倾斜和角度,得到二维图像中的三维姿态。
将标志点锚定到人脸上的工作方式是采用人脸对齐的平均形状,这使得所有图像的方向大致相同。这自然是有道理的,因为更多图像的逻辑性质会根据更大的数据集产生更好的近似值。锚定也允许头部的姿势估计,这可以产生可用空间量的近似值。
图5 理想路标定位的面部变形(Medium, n.d.)
正交程序问题
单应性定义为图像上共享的任意两个平面之间的关系,作为点的向量空间中同构向量空间的双射。(Goweramp;Dijksterhuis,2004)图像可以共享相同的表面点,但在透视矩阵中可能不同。单应矩阵定义如下:
这种在点之间找到共线映射的想法很重要,因为要成功地执行一个面部交换,就必须这样做。人脸交换是一种单应的应用,其中面部地标点的子集被裁剪、屏蔽,然后与要超级施加到的个人的脸对齐。这将导致一个问题,称为两个面部矩阵的正交问题。
在我提出的第三种用于面部交换图像的滤波器的例子中,有一个已知的问题是由Peter Schoacute;nemann在1964年解决的,这个问题与线性代数范围内的矩阵逼近有关,称为“正交Procrustes问题”。这个问题处理的是两个矩阵A和B的存在性问题,并从中得到;找到映射A到B的正交矩阵R——在这种情况下,直接应用将一个人脸的面部地标对齐交换到另一个最接近的方法。(Mount,2014年)
解决这一问题的方法是将矩阵B乘上矩阵A的转置,通过减少到标准内积来最小化,从而导致图像向另一个矩阵的维度拉伸或裁剪。这意味着,对于涉及图像A和B的该应用,必须在所有68个点上确定一个图像到另一个图像的平移、旋转、倾斜和缩放,即:
假设R是A到B映射的正交2x2矩阵的正交矩阵,s是缩放因子,p是图像A的第i行标志,q是图像B的第i行标志,T是2向量,这样就可以确定普通的Procrustes分析,以便将一个地标特征最小化到相应的特征上。(Goweramp;Dijksterhuis,2004年)
实施方式
语言选择
在整个项目中,有可能使用多种语言;但是已经决定使用Python3.6。Python被称为数据科学的语言弗兰卡,是C/C 之上的抽象级别。知道了这一点,快速原型的好处大大超过了本项目预期的性能缺点。
HAAR级联法
最初,使用Haar级联作为起点来更深入地探索该区域。 在OpenCV中使用了预训练的级联; 检测头部和鼻子。 由于Haar级联以不偏斜的方式工作并具有正面视图,因此未考虑到该位置。 使用一种简单的实现方式,将胡须的平面图像近似放置在图像中所定位的鼻子处,仅考虑了级联特征的生成位置的大小并调整为鼻子特征大小的比例即可。
图6 Haar特征对齐的不歪斜胡须 (PngImg, n.d.)
面部标志物检测
由于纯粹的Haar特征检测留下了很多需要改进的地方,我开始使用DLIB在网络摄像头feed上标注和标定地标。如前所述,位于面部的地标允许估计姿势和提取各种近似特征以供使用。我在面部定位项目的实现涉及到在整个面部姿势
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[253825],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。