美颜技术发展现状和应用场景
随着视频类APP的流行,美颜技术也变得越来越广泛,我们特此跟工业界从事美颜算法岗位的大佬进行了交流,并且打算围绕“美颜”技术展开撰写一系列文章。本篇文章将从两个方面展开:先介绍“美颜”技术在主流APP中的应用;然后讲述“美颜”所设计到的一些技术。
“美颜美颜”,顾名思义,对图片里的人脸进行美化。在图片类、短视频类和直播类的APP中,都存在“美颜”的影子:图片类的APP中,最具代表性的是美图秀秀,美图的人像美容,便用到了“美颜”技术;短视频类的APP中,突出的是抖音和快手,这类APP在录制短视频的时候,有美颜、美妆等选项;直播类的APP中,像映客、YY等都在主播进行直播时加入了“美颜”技术。
“美颜”是一个深度学习+图像处理+图形学的技术。“美颜”牵涉到这些技术包括:人脸检测、人脸关键点定位、瘦脸、磨皮、美白等。其中,人脸检测、人脸关键点定位是用深度学习技术来做的;而瘦脸、磨皮和美白就牵涉到计算机图形学里的技术,使用OpenGL,Metal来对检测到的人脸进行渲染。接下来,我们分别介绍“美颜“当中涉及技术的概念、难点和当前的发展情况。
1. 人脸检测
人脸检测技术指的是对图片中的人脸进行检测,并定位到图片中人脸的位置。人脸检测主要的技术难点在于,人脸在一张图片中可能存在人脸区域光照条件,人脸姿态变化、人脸表情变化、遮挡等问题。准确的检测出人脸相对来说是一件困难的事情。
人脸检测也可分为两个时期:一个是深度学习之前的时期,另一个是深度学习时期。在深度学习之前,人们做人脸检测,主要使用人工设计好的特征,根据人工特征来训练检测器检测人脸。当深度学习在计算机视觉领域占据绝对主导地位之后,人们开始尝试用深度神经网络来做人脸检测,目前,主流的人脸检测方法大概有这么两种:一种是使用通用的目标检测网络来训练人脸检测模型,如faster-rcnn(一种目标检测网),ssd (Single Shot MultiBox Detector),yolo (You Only Look Once) 等等;另一种是使用专门的人脸检测网络,如cascadeCNN(Convolutional Neural Network Cascade for FaceDetection,级联结构的卷积神经网络,一种目标检测网络),MTCNN(Multi-task Cascaded Convolutional Neural Network,多任务级联卷积神经网络)等等。
2. 人脸关键点
人脸关键点定位技术是对人脸中眉毛、眼睛、鼻子、嘴巴以及脸部的轮廓进行定位,人脸关键点定位是紧接在人脸检测后:首先在一张图片中检测到人脸,然后才对检测到的人脸做关键点定位。
人脸关键点定位技术同人脸检测技术一样,在实际应用中,也存在人脸的尺度、光照、表情、姿态、遮挡等问题。要对绝大多数图片获得准确的人脸关键点,也是一个比较难的任务。
人脸关键点定位技术也可分为深度学习前的时期和深度学习时期:传统的人脸关键点技术,有ASM(Active Shape Model,主动形状模型),AAM (Active Appearance Model,主动外观模型),CPR(Cascaded Pose Regression,级联姿势回归)等等;2013年,香港中文大学首次将卷积神经网络应用到人脸关键点定位上来。目前,落地到产品上的人脸关键点定位,基本都是基于深度学习技术。
下图展示了人脸检测技术和人脸关键点定位技术的应用。
有了关键点以后,便可以对图片中人脸区域做瘦脸、磨皮、美白等“美颜”操作。这些算法一般应用在移动设备上:在Android上可以使用OpenGL ES(OpenGL for Embedded Systems,嵌入式系统的OpenGL),在iOS上可以使用Metal根据人脸关键点的位置,对人脸进行瘦脸、磨皮、美白之类的渲染。
3. 瘦脸
在OpenGL或Metal环境下,在shader(纹理)中通过对像素位置进行偏移来实现对脸部区域的放大缩小:由变形前坐标,根据变形映射关系,得到变形后坐标。这其中变形映射关系是最关键的,不同的映射关系,将得到不同的变形效果。平移、缩放、旋转,对应的是不同的映射关系,即不同的变换公式。当然实际在计算过程中,用的是逆变换,即由变形后坐标,根据逆变换公式反算变形前坐标,然后插值得到该坐标RGB像素值,将该RGB值作为变形后坐标对应的像素值。这样才能保证变形后的图像是连续、完整的。
4. 磨皮
所谓“磨皮”,是使皮肤变得更加光滑,其技术原理是:在图片的人脸框部分再进行一次肤色检测。只对人脸区域做磨皮,磨皮一般使用图像处理的一些滤波算法。
肤色检测可分两大类,一类是用颜色空间统计信息,来计算出皮肤所在的区域,另一类是基于机器学习的方法。
滤波算法一般可以使用高斯滤波或者双边滤波等。
5. 美白
图片的美白,是操作这个图片上的所有像素点,获得像素点的R、G、B、A的值然后获取到的值进行一定数目的增量。在图像处理领域中,一张图片会使用三原色 red、green、blue来保存图片的颜色信息,三个值的取值范围是0-255:越靠近0,图像就越黑,等于0的时候就是纯黑色;越靠近255,图像就越白,等于255的时候就是白色。图片的美白就是利用的这个原理。
以上简要讲解了一下与“美颜”有关的技术点。这个系列在接下来的文章中,将分别详细讲述人脸检测、人脸关键点、瘦脸、磨皮、美白等“美颜”所用到的技术原理和技术细节,敬请关注更新哦!
微信公众号同步
关注微信公众号“机器学习和人工智能”,干货多多~
我们会定期推送Python编程,人工智能基础算法,学术界、工业界最新动态,让更多的人了解人工智能~
欢迎扫描下方二维码关注哈~