一种基于单目摄像头的3D人脸视频生成方法
技术领域
本发明涉及视频图像处理,特别涉及一种关于深度学习并且基于单目摄像头的3D人脸视频生成方法,属于三维重建技术领域。
背景技术
人脸在人类的交流中起着十分重要的信息表达功能,传递着人类的情感和精神状态。而逼真的三维人脸模型在游戏娱乐、影视广告、在线教育、虚拟社交以及医疗设备等领域有着广泛的应用。对于传统的三维人脸模型获取和重建,其大多依赖于实验室内繁重和昂贵的硬件设备,以及比较苛刻的外界环境。如今随着虚拟现实技术和移动智能端得到了快速的发展,已经逐渐走进了人们的视野当中,越来越多的人希望可以通过低成本的设备在日常生活环境下就可以获取高质量的三维人脸模型,并且可以应用到生活的各个方面。利用手机、摄像机拍摄视频,或者直接利用互联网视频进行三维人脸重建,把获取设备的复杂程度降到了最低,不仅为三维人脸技术的进步和发展提供了很大的便捷性,而且为三维人脸的数字化的应用和消费带来新的契机。
本发明提出了一种基于单目摄像头的3D人脸视频生成方法,首先使用“三阶级联卷积网络”(MTCNN)对输入的视频中所包含的人脸区域进行检测和跟踪,并将含有人脸的部分框选出来;然后将所框选的含有人脸的区域裁剪出来,并处理为帧图片序列,即一系列的二维图像;然后将这些图片输入到一个自动编码器里,将其分解为反照率(albedo)、深度(depth)、光照(light)和视点(viewpoint)四个因子,之后通过一个光照函数得到重建之后的规范视角下的2D人脸图像;然后使用“神经网格渲染器”(Neural Mesh Renderer)对得到2D人脸图像进行渲染,通过一个重投影函数得到重建之后的3D人脸图像;最后对这些3D人脸图像进行连续的输出,得到最终的3D人脸视频。本发明所使用的方法获得的3D人脸模型,克服了获取视频设备的复杂、不同环境的影响,重建的精度和准确度都比较高,提高了重建的质量和鲁棒性。
发明内容
针对3D人脸重建的问题,本发明解决了视频获取设备的复杂、不同环境的影响,提出了一种基于单目摄像头的3D人脸视频生成方法,首先使用“三阶级联卷积网络”(MTCNN)对输入的视频中所包含的人脸区域进行检测和跟踪,并将含有人脸的部分框选出来;然后将所框选的含有人脸的区域裁剪出来,并处理为帧图片序列,即一系列的二维图像;然后将这些图片输入到一个自动编码器里,将其分解为反照率(albedo)、深度(depth)、光照(light)和视点(viewpoint)四个因子,之后通过一个光照函数得到重建之后的规范视角下的2D人脸图像;然后使用“神经网格渲染器”(Neural Mesh Renderer)对得到2D人脸图像进行渲染,通过一个重投影函数得到重建之后的3D人脸图像;最后对这些3D人脸图像进行连续的输出,得到最终的3D人脸视频。
为解决上述问题,本发明提出了一种基于单目摄像头的3D人脸视频生成方法,实现步骤如下:
使用“三阶级联卷积神经网络”对获取的视频中所包含的人脸区域进行检测和跟踪,并将含有人脸的部分框选出来。
进一步地,所述的三阶级联卷积神经网络有三项任务,分别为人脸与非人脸的分类,边界框回归和人脸关键点定位。
关于所述的人脸与非人脸的分类,使用公式(1)来约束这个二分类问题,使得目标值
取得最小值:
其中pi是由网络产生的,表示该样本是人脸的概率,yi det∈{0,1}表示对应的真实标签。
关于所述的边界框回归,对于每个候选窗口,使用公式(2)来约束候选窗口与其最近的真实标签值之间的偏移,使得最终的偏移量
取得最小值:
其中
是从卷积神经网络中获得的第i个回归目标,
是第i个回归目标对应的边界框的信息,每个边界框的信息包括该边界的左上角x,y坐标值、高度以及宽度。
关于所述的人脸关键点定位,用公式(3)来表示:
其中
是网络预测的人脸关键点的坐标组成的向量,该向量中包括左眼、右眼、鼻子、左嘴角和右嘴角五个关键点的坐标,
是对应的人脸关键点的真实坐标。
进一步地,所述的三阶级联卷积神经网络包括P-Net阶段、R-Net阶段和O-Net阶段。
关于所述的P-Net阶段,主要通过一个卷积神经网络获取人脸窗口以及人脸边界框回归向量,并基于人脸边界框向量对候选窗口进行校正。之后采取“非极大值抑制”合并高重叠率的候选窗口。
关于所述的R-Net阶段,是以P-Net阶段输出的候选窗口作为输入,通过一个更强大的卷积神经网络进一步筛选大量错误的候选窗口,否决大量非人脸窗口而优化人脸窗口,再利用人脸边界框回归向量对候选窗口做校正,并执行“非极大值抑制”去掉效果不佳的人脸候选框。
关于所述的O-Net阶段,与R-Net阶段的功能相似,但该阶段使用更多的监督来识别人脸区域,进一步优化结果,最终并输出人脸框的位置。
将视频中框选的含有人脸的部分区域裁剪出来,并处理为帧图像序列,即一系列的二维图像。
基于一个自动编码器,对得到帧图像进行重建,最终得到重建之后的规范视角下的2D人脸图像。
对于输入的每一幅帧图像,将其分解为反照率(albedo)、深度(depth)、光照(light)和视点(viewpoint)四个因子,这四个因子依次命名为a、d、l、w因子。
进一步地,对于对称的图片,使用a、d、l、w四个因子,通过光照函数,在w=0的情况下,利用a、d、l这三个因子生成一个规范视角下的标准图像J,使用公式(4)表示为:
其中Λ表示光照函数,a表示反照率,d表示深度,l表示光照,w表示标准图像视点和输入图像视点之间的变换。
对于可能对称的图片,首先对图片的深度和反照率进行水平翻转,其具体的操作用公式(5)表示:
其中d表示深度,d′表示水平翻转后的深度,a表示反照率,a′表示水平翻转后的反照率。
对于l、d′、a′三个因子,继续使用光照函数,在w=0的情况下,利用l、d′、a′这三个因子生成一个规范视角下的标准图像J′,使用公式(6)表示为:
其中Λ表示光照函数,a′表示水平翻转后的反照率,d′表示水平翻转后的深度,l表示光照,w表示标准图像视点和输入图像视点之间的变化。
利用上述的规范视角下的标准图像,使用“神经网格渲染器”得到重建之后的3D人脸图像。
进一步地,使用“神经网格渲染器”对深度因子d进行扭曲,获得从输入视点所观察到的深度图
对于得到的深度图
通过欧式空间变换(R,T)将标准图像变换到实际图像;通过扭曲函数可以找到实际图像的观察视点到标准图像的视点的扭曲场,将标准图像像素坐标(u,v)与实际图像像素坐标(u′,v′)关联,扭曲函数η
d,w:(u,v)→(u′,v′)使用公式(7)表示为:
p′∝K(duv*RK-1p+T) (7)
其中p′=(u′,v′,1),(u′,v′)即实际图像像素坐标,K为内参数矩阵,d
uv为深度图
的像素坐标,p=(u,v,1)为图像映射投影的像素点,(R,T)表示视点w的欧式空间变换,R为旋转矩阵,T表示位移矩阵。
通过一个重投影函数,将得到的扭曲应用到规范视角的标准图像,并进行双重线性采样,获得实际的3D图像,重投影函数用公式(8)表示为:
其中,∏表示重投影函数,J和J′表示规范视角下的标准图像,d表示深度,d′表示水平翻转之后的深度,w表示标准图像视点和输入图像视点之间的变化。
对得到3D人脸图像连续的输出,得到最终的3D人脸视频。
附图说明
图1是本发明一种基于单目摄像头的3D人脸视频生成方法的系统流程图。
图2是本发明输入的单目视频所框选的人脸区域的截图示意图,输入视频为手机拍摄的人脸视频。
图3是本发明重建的3D人脸图像的正面截图示意图。
图4是本发明重建的3D人脸图像的正面截图示意图。
图5是本发明重建的3D人脸图像的正面截图示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本发明做进一步详细说明。
图1是本发明一种基于单目摄像头的3D人脸视频生成方法,其主要内容为首先采用“三阶级联卷积网络”(MTCNN)对输入的视频中所包含的人脸区域进行检测和跟踪,并将含有人脸的部分框选出来;然后将所框选的含有人脸的区域裁剪出来,并处理为帧图片序列,即一系列的二维图像;然后将这些图片输入到一个自动编码器里,将其分解为反照率(albedo)、深度(depth)、光照(light)和视点(viewpoint)四个因子,之后通过一个光照函数得到重建之后的规范视角下的2D人脸图像;然后使用“神经网格渲染器”(Neural MeshRenderer)对得到2D人脸图像进行渲染,通过一个重投影函数得到重建之后的3D人脸图像;最后对这些3D人脸图像进行连续的输出,得到最终的3D人脸视频。
使用“三阶级联卷积神经网络”对获取的视频中所包含的人脸区域进行检测和跟踪,并将含有人脸的部分框选出来;
三阶级联卷积神经网络有三项任务,分别为人脸与非人脸的分类,边界框回归和人脸关键点定位;
关于人脸与非人脸的分类,使用公式(1)来约束这个二分类问题,使得目标值
取得最小值:
其中pi是由网络产生的,表示该样本是人脸的概率,yi det∈{0,1}表示对应的真实标签。
关于边界框回归,对于每个候选窗口,使用公式(2)来约束候选窗口与其最近的真实标签值之间的偏移,使得最终的偏移量
取得最小值:
其中
是从卷积神经网络中获得的第i个回归目标,
是第i个回归目标对应的边界框的信息,每个边界框的信息包括该边界的左上角x,y坐标值、高度以及宽度。
关于人脸关键点定位,用公式(3)来表示:
其中
是网络预测的人脸关键点的坐标组成的向量,该向量中包括左眼、右眼、鼻子、左嘴角和右嘴角五个关键点的坐标,
是对应的人脸关键点的真实坐标。
三阶级联卷积神经网络包括P-Net阶段、R-Net阶段和O-Net阶段。
进一步地,P-Net阶段主要通过一个卷积神经网络获取人脸窗口以及人脸边界框回归向量,并基于人脸边界框向量对候选窗口进行校正。之后采取“非极大值抑制”合并高重叠率的候选窗口。
R-Net阶段是以P-Net阶段输出的候选窗口作为输入,通过一个更强大的卷积神经网络进一步筛选大量错误的候选窗口,否决大量非人脸窗口而优化人脸窗口,再利用人脸边界框回归向量对候选窗口做校正,并执行“非极大值抑制”去掉效果不佳的人脸候选框。
O-Net阶段与R-Net阶段的功能相似,但该阶段使用更多的监督来识别人脸区域,进一步优化结果,最终并输出人脸框的位置。
将视频中框选的含有人脸的部分区域裁剪出来,并处理为帧图像序列,即一系列的二维图像。
对于得到每一副帧图像I定义为Ω-→R3。
Ω={0,......W-1}×{0,......H-1} (4)
其中W为图像I的宽度,H为图像I的高度。
基于一个自动编码器,对于图像I,将其分解为反照率(albedo)、深度(depth)、光照(light)和视点(viewpoint)四个因子,这四个因子依次命名为a、d、l、w因子。
其中深度d:Ω-→R+,反照率a:Ω→R3,光照l∈S2,视点变化w∈R6。
对于对称的图片,使用步骤3.1中的a、d、l、w四个因子,通过光照函数,在w=0的情况下,利用a、d、l这三个因子生成一个规范视角下的标准图像J,使用公式(5)表示为:
其中Λ表示光照函数,a表示反照率,d表示深度,l表示光照,w表示标准图像视点和输入图像视点之间的变换。
对于可能对称的图片,先对图像的深度和反照率进行水平翻转。
水平翻转操作表示:[flip a]c,u,v=ac,W-1-u,v (6)
其中d表示深度,d′表示水平翻转后的深度,a表示反照率,a′表示水平翻转后的反照率;对称的约束也通过该操作隐式地实现。
利用a′、d′、l以及w四个因子,通过光照函数,在w=0的情况下,利用d′、a′、l这三个因子生成一个规范视角下的标准图像J′,使用公式(8)表示为:
其中Λ表示光照函数,a′表示水平翻转后的反照率,d′表示水平翻转后的深度,l表示光照,w表示标准图像视点和输入图像视点之间的变化。
将实际世界的3D点P(Px,Py,Pz)以摄像机为参考系投影到像素p(u,v,1)。
p∝KP (9)
在标准图像中,将深度值du,v与每个像素(u,v)∈Ω相关联,则
P=duv*K-1p (11)
视点w∈R6,表示欧式空间变换(R,T)∈SE(3),其中R为旋转矩阵,T表示位移矩阵,并且w1,w2,w3和w4,w5,w6分别表示x,y,z轴的旋转角度和位移。
使用“神经网格渲染器”对深度因子d进行扭曲,获得从输入视点所观察到的深度图
对于得到的深度图
通过欧式空间变换(R,T)将标准图像变换到实际图像;通过扭曲函数可以找到实际图像的观察视点到标准图像的视点的扭曲场,将标准图像像素坐标(u,v)与实际图像像素坐标(u′,v′)关联,扭曲函数η
d,w:(u,v)→(u′,v′)使用公式(12)表示为:
p′∝K(duv*RK-1p+T) (12)
其中p′=(u′,v′,1),(u′,v′)即实际图像像素坐标,K为内参数矩阵,d
uv为深度图
的像素坐标,p=(u,v,1)为图像映射投影的像素点,(R,T)表示视点w的欧式空间变换,R为旋转矩阵,T表示位移矩阵。
通过一个重投影函数,将得到的扭曲应用到规范视角的标准图像,并进行双重线性采样,获得实际的3D图像,重投影函数用公式(13)表示为:
其中,∏表示重投影函数,J和J′表示规范视角下的标准图像,d表示深度,d′表示水平翻转之后的深度,w表示标准图像视点和输入图像视点之间的变化。
进一步地,对得到的3D人脸图像进行连续的输出,得到最终的3D人脸视频。
图2是本发明输入的单目视频所框选的人脸区域以及输出的人脸框截图示意图,输入视频为手机拍摄的人脸视频,是在日常环境中用手机拍摄的本人的人脸图像。
图3是本发明重建的3D人脸图像的正面截图示意图。
图4是本发明重建的3D人脸图像的左脸侧面截图示意图。
图5是本发明重建的3D人脸图像的右脸侧面截图示意图。
对于本领域技术人员,本发明不限制于上述实施例的细节,在不背离本发明的精神和范围的情况下,能够以其他具体形式实现本发明。此外,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围,这些改进和变型也应视为本发明的保护范围。因此,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。