【合成平均脸】高能派|北服“颜值担当”
随着人工智能、虚拟现实(VR)技术的迅猛发展,虚拟人技术也日渐形成潮流。日本著名广告公司博报堂曾依据近500名年轻员工的照片形象,电脑合成男女员工的样貌得到公司平均脸。他们还对这张“平均脸”委以重任,让它成为了公司的形象代言人。
超现实的公司“平均脸”
如果我们利用北服学子的图像信息计算平均脸,制作能够代表北服的平均脸会得到什么结果呢?服装艺术与工程学院派研究中心和北服信息中心合作,合作研发了北服学生平均脸技术,可以用于北服虚拟人的研究之中。
不过在揭晓北服“平均脸”之前,我们此处先卖个关子,谈谈什么是平均脸技术。
有趣的“平均脸”
仔细看下面的照片,你觉得她美吗?有什么有趣的特征吗?
照片中的女性同时拥有白人血统、西班牙人血统、亚洲人血统以及印度人血统。她皮肤光彩无暇,眼神扑朔迷离,似乎美得不真实。其实,她并不真实存在,但她也并非完全虚构。创造她的正是今天要介绍的一项黑科技:“平均脸”。
想必大家也曾看到过很多合成的“平均脸”图片。如下图就是一些按国家、民族合成的“平均脸”:
“平均脸”的历史
其实平均脸的历史相当悠久。“平均脸”源于达尔文的堂兄弗朗西斯·高尔顿(Francis Galton)在1878年提出的一种新的摄影技术——通过对准眼睛来合成人脸。弗朗西斯·高尔顿爵士是英国维多利亚时代的博学家、人类学家、优生学家、热带探险家、地理学家、发明家、气象学家、统计学家、心理学家和遗传学家。
他认为,通过生成罪犯的平均脸,人们就可以根据面部特征来预测一个人是否是罪犯。很显然,他的假设是错误的——你不能通过照片来预测一个人是否是罪犯。虽然高尔顿爵士的初衷没有达到,但合成平均脸的方法却保留了下来。
这一方法是通过将许多人的照片合成为一张照片完成的。当时具体的做法是:照片叠加——给多个人,比如20个人,照相,将每个人照片所需的曝光时间缩短为1/20,通过20次曝光得到一张“平均”照片。
人们意外的发现,这样合成的人脸看起来比大部分人的脸都要好看!按常理说,平均脸应该是一张平庸的“大众脸”,为什么“平均脸”反而更加吸引人?
根据进化假说,有性繁殖的动物会寻找长着平均脸的伴侣,因为偏离平均值可能产生不利的突变。平均脸也是对称的,因为脸的左边和右边的变化是平均的。
2002年研究者们生成了22名入围当年德国小姐评选决赛的选手的平均脸,并让吃瓜群众打分。结果显示人们认为平均脸比22位选手的脸更有吸引力,包括赢得比赛的柏林小姐。紧接着人们发现,柏林小姐的长相和这张平均脸非常接近。
如何制作平均脸
随着信息技术发展,数码时代允许我们利用程序设计进行以前不敢想的事情,利用计算机算法的平均脸生成技术已经成熟。
平均脸,指用一定数量的普通人脸提取面部特征,根据测量数据求平均值,再利用计算机技术得到一张合成脸。
制作“平均脸”的过程大概有以下几个步骤:
首先提取需要得出平均脸群体的一定数量照片;
再次将每张照片的五官(耳朵除外)轮廓提取出来,然后将它平均,例如一个大眼睛加一个小眼睛就是一个中等大小的眼睛;
然后将第一步得到的平均轮廓,用对应位置的平均肤色将之填充,只要拥有足够数量的样本,就可以给该群体一张比较精确的“平均脸”了。
后面我们会给出实现的大致方法。
北服平均脸
激动人心的时刻来了!
北服信息中心拥有北服强大的数据资源,服装艺术与工程学院派研究中心与信息中心紧密合作,根据平均脸技术,开发了北京服装学院2019级学生的平均脸,男生和女生各一个。其中女生采集到了1203幅图像,男生采集到了311幅图像。为了保护隐私,我们不提供实际的人脸数据融合过程,只提供结果。
下图是所有参与平均脸生成的女生马赛克图:
以下是311幅男生的头像马赛克图:
根据以上头像产生了北服男女2019级学生的平均脸,请看如下大图:
是不是颜值非常高呢?
我们再看一下北京航天航空大学2019年的男女新生的平均脸图像,是不是更有理工范儿呢?
算法+程序的力量
上面的过程看着还挺复杂是不是?想到编程大伙儿都会感到头大。其实,如果使用python程序设计语言,加上opencv + dlib的第三方插件,“平均脸”技术只需要百十行代码就能搞定!
01
面部特征检测
首先,使用dlib库在每张面部图像上建立68个面部基准点。
02
图像坐标转换
图像的尺寸很可能是不一样的,同时面部也很可能处于图像的不同位置,所以我们需要标准化面部特征,并把它们放到同一参考坐标系下。
为了实现这一点,确保两只眼睛的点都在一个水平线上,面部中心大约在离顶端三分之一高度的位置。所以我将眼角位置设为(0.3*宽,高/3)和(0.7*宽,高/3)。
03
人脸对齐
现在所有图像都是相同大小,并且眼睛的两角都分别对齐。似乎对这些图像每个像素的值进行平均我们就能得到平均脸啦。但如果你真这么做了,会得到下图这样的结果。当然眼睛肯定是对齐的,但是其他面部特征都没对齐。
不要紧!在获得了68个面部基准点之后,我们结合人脸所在的矩形的四个顶点和每条边的中心点,将人脸所在的矩形分割成如下图所示的三角形的组合,称为平均基准点的Delaunay三角剖分。
至此,我们计算出了人脸基准点的平均位置,并用这些位置计算出Delaunay三角剖分,将图像分成若干三角形。如上图所示,左图是变换后输入图像的Delaunay三角剖分,中图是平均关键点的三角剖分。用这一变换将左图三角形1中的所有像素变换到中图的三角形1中去。对左图每个三角形重复该过程,就可以得到右图的结果。右图只是将左图按规则扭曲到了平均脸上。
04
人脸平均
经过了上述处理之后,我们就可以对这些照片的像素取平均值,得到神奇的平均脸了。
来源:网络