美颜一秒钟 代码千万行

来源:科普中国发布时间:2019-09-05

人脸检测、美白算法......每一项都比你想象要复杂。

  前段时间某直播平台出现了大型“翻车”现场,一名为“乔碧萝殿下”的女主播在与另一名网红女主播互动的时候,由于连麦bug导致之前一直用来遮挡脸部的gif动画形象的图片消失不见,露出了大妈本尊面容。强烈的反差完全颠覆了网友的认知,大家看完对比照片纷纷吐槽:如今的美颜软件功能实在太强大了,直接能把58岁大妈p18岁萝莉! 

  

美颜神器在手、网红颜值我有(来源:https://kotaku.com/glitch-reveals-popular-young-streamer-is-a-middle-aged-1836843617) 

  现在的美颜技术已不仅局限在磨皮、美白、袪痘等水平,手机应用商店里随随便便找到一款修图软件,都能一键开启秒变明星颜值的功能。除了修脸型、开眼角让你拥有改头换面的网红明星脸,还能让你的小短腿小肚腩瞬间变成超模长腿、小蛮腰。除此以外还有改眉形、涂眼影、抹口红、打高光等自动化妆功能,而且傻瓜式操作,完全不需要百万修图师的PS技能。 

来源:腾讯AI开放平台     

  近几年随着人工智能算法逐渐实用化,结合人脸检测和人脸定位的AI技术,针对人脸不同部位进行定向优化,从而对唇彩、粉底、腮红、眼线,眼影、酒窝、卧蚕等实现自动美妆,静态图像甚至动态视频的美颜处理效果已经达到了以假乱真的程度。 

  美颜APP如何知道这是你的脸? 

  要实现逼真的高颜值美颜效果,首先软件要知道你的脸在哪,其中涉及的关键技术是人脸检测。人脸检测技术的任务在于识别出图片中的所有人脸,提取特征后输出人脸的大小和位置坐标。 

  人脸检测算法需要输入很多张图片,通过深度学习神经网络模型计算后可得到人脸框的坐标序列。即使图中出现的多张人脸、角度改变、部分遮挡等复杂情况,也可以处理,快速、准确地定位人脸。 

来源:https://becominghuman.ai/face-detection-models-and-softwares-42b562a8e151 

  美颜APP是如何将口红精确的抹你唇上的? 

  美颜特效处理的实现主要还是依赖于人脸关键点定位的准确性。  通过人脸检测技术得到人脸框以后,将原图和人脸框输入人脸配准(Face Alignment)算法模型,输出人脸五官和轮廓关键点的坐标。最常见的特征,包括眼睛、瞳孔、眉毛、鼻子、嘴等位置。 

来源:https://pytorch.org/tutorials/beginner/data_loading_tutorial.html     

  人脸关键点之间存在一定的位置关系,比如人有左右两只眼睛,眉毛在眼睛上面,鼻子在眼睛下方的中间位置,鼻子下面是嘴。即使图像发生旋转,从相对位置来说,眼睛鼻子嘴巴还是会保持这种固定的结构关系。否则,“人脸”可能就会随意变成下面这样子。 

毕加索抽象人脸画,来源:http://www.apartexchange.com/Guide_paris3-picasso.htm     

  要描述这种位置结构上的关系,我们可以在计算机上用一串固定长度的数值来表征,这个数值串被称为“人脸特征(Face Features)”。人脸特征提取的过程需要输入原图以及五官轮廓关键点坐标,深度学习算法会根据人脸五官关键点坐标将人脸对齐预定模式后计算,输出人脸相应的一个特征数值串。 

  对于视频,虽然可以看成逐帧的静态图像处理问题,还是要考虑关键点的跟踪问题,以保证图片帧之间关键点的连续性。要在真实环境拍摄下的视频里针对任意光照、各种夸张的表情以及各种角度的侧脸,准确定位和跟踪人脸关键点的位置,仍然是一个具有挑战性的问题。 

来源:Freepik.com 

  美颜是怎样做到让皮肤变好的? 

  准确定位这些关键点之后,以这些关键点组成一个网格,对这个网格按照固定的参数进行局部形变,就可以形成瘦脸、大眼等特效算法。 

  在所有特效处理中,美白磨皮算是唯一不能缺少的环节,毕竟“一白遮百丑、长痘毁所有”。美白算法的目标是把肤色区域变得更加的透亮。这部分的算法可谓层出不穷,基本思路都是如何调整图片的亮度问题。磨皮的算法就更多了,包括使用高斯模糊,双边滤波等。具体选择哪种算法,并且需要结合哪些细节增强的后处理技术,以达到更好的磨皮效果,也是非常复杂并且需要大量投入的。 

  人脸检测技术除了美颜,还大有用处 

  人脸检测/识别技术除了在前述美颜应用软件上造福广大爱美人士以外,还被广泛应用在日常生活中的许多方面,给人们带来更多高质量生活的科技解决途径。 

  这里我们需要了解一下“相似度”的概念。前面提取出来的人脸特征数值串可以用来表征人脸特征,输入两组不同人脸图片的特征值,通过某些规则定义的算法公式可以得到两个特征之间的相似度。 

  比如下面两张图计算后得出相似度97.82%的结论,嗯,相似度蛮高的嘛,非常满意!(因为就是我老婆本人呀~呵呵。) 

“老婆”照片,来源:https://www.hmv.co.jp/goods/genre_グッズ_2019年カレンダー_女性タレント・アイドル_4_920_930_930001/ 

  在人脸对比的基础上再设定一个阈值,就可以实现人脸验证功能了。举个例子,预先设定好阈值为80%,那么当相似度大于80%就会输出同一个人的判断。 

来源:作者自制 

  既然人工智能已经会判断出是不是同一个人了,那么基于这个原理,它就能帮助人类实现更多复杂应用了。 

  比如,现在许多手机已经具备的人脸解锁功能。这项实用的功能用到的技术被称为“人脸验证”,手机等终端设备只需将用户事先注册登记的照片与现场临时采集的照片做对比,判断是否为同一人,就能完成身份验证。 

  人脸验证做的是11比对,其身份验证模式本质上是计算机对当前人脸与人像数据库进行快速人脸比对,并得出是否匹配的过程。比如在高速公路、机场安检时,受检人员手持身份证等证件,通过检查通道,同时对受检人员的外貌及身份证信息进行识别,这个过程就是典型的11模式。 


来源:作者自制 

  与11比对的人脸验证不同,1N(一对多)查找比对的人脸识别(Face Recognition)技术则被广泛应用在小区门禁、会场签到以及新零售概念里的客户识别等现实场景中。它的基本思路是输入一个人脸特征后,通过与人像数据库中的海量数据做比对匹配,找到与当前人脸数据相符合的图像(即特征相似度最大的图像),返回该图像对应的身份。 

  此外,人脸识别的1N模式能实现通过对动态视频流的截取来获得人脸数据并进一步比对的动态对比过程,而且在识别的过程中识别对象无需到特定的位置便能完成人脸识别的工作,非常高效。 


来源:作者自制 

  人脸检索(Face Retrieval)采用的也是1N模式,基本原理与人脸识别类似,也是将一个人脸特征与人像数据库中的N个数据进行比对匹配,只不过返回的不是相似度最高的那个,而是根据相似度从高到低排序的人脸序列的结果。在现实生活中,警察叔叔使用先进的人脸检索技术可以更快速地锁定嫌疑犯,加快案件侦破进度。 

  P美有什么难的,凭空生成一张脸都能实现 

  下面的两张图片,一个是真人照片,另一个是AI合成,你能选出哪张是合成图像吗? 

来源:Freepik.com 

  答案揭晓,左边的是生成的,右边的是真实的。是不是感觉非常不可思议,左边这位看上去很漂亮的美女,居然根本就不存在!A“凭空捏造”出一个完全不存在的“人”。 



来源:作者自制 

  这里用到的是被称为生成对抗网络GAN的人工智能算法,经过训练以后它能无中生有。它的基本原理可以通俗地用一个故事来解释:有一个假货制造商和一个鉴赏专家。故事的一开始,假货商和鉴赏专家都是菜鸟级别,一个生产出来的假货非常垃圾一眼就能被看穿,另一个鉴赏能力为零全靠瞎猜。但是这两个人通过不断地训练,假货商每次造一个假货就拿去给鉴赏专家鉴赏,鉴赏专家做出评价以后再偷看一眼标准答案。就这样经过足够多次数的“不懈努力”,假货商造出来的假货已经非常逼真了,而鉴赏专家的鉴赏能力也不断提升,一直到最后鉴赏专家达到真正专家水平。此时假货商就能造出以假乱真的假货了。 

  这个故事中的两个“主人公”,假货商和鉴赏专家,分别是GAN算法的生成器和判别器。它们一个负责生成图像,一个负责判断该图像是否符合标准,就像故事里提到的那样经过不断训练,直到最后生成器可以生成以假乱真的图像为止。 

  除了最基本的GAN模型,目前为止,已经有许多不同的变形算法被开发了出来,比如下面这个例子,输入人类表情以后,可以生成同表情的喵星人,是不是很酷的感觉。以后让喵主人跟自己做同款表情包也是指日可待了。 


来源:作者自制 

原文标题《美颜一秒钟 代码千万行》

版权信息