60年后的你长什么样?人脸老化三大技术探秘

简介: 通过计算机视觉技术模拟出人老了的样子,这样的应用实际上并不新奇。这些年,类似的场景可谓层出不穷,有的App可以通过夫妻的样貌预测出孩子的模样,有的App可以通过用户上传的照片还原你小时候的样子和老了之后的样子,甚至还有一些App可以通过一两张照片生成出一段短视频,展示用户一生的样貌变化,让使用的人颇有沧海桑田之感。

通过计算机视觉技术模拟出人老了的样子,这样的应用实际上并不新奇。这些年,类似的场景可谓层出不穷,有的App可以通过夫妻的样貌预测出孩子的模样,有的App可以通过用户上传的照片还原你小时候的样子和老了之后的样子,甚至还有一些App可以通过一两张照片生成出一段短视频,展示用户一生的样貌变化,让使用的人颇有沧海桑田之感。

image

而我们这次的“当你老了”项目的着眼点略有不同,强调的是公益和技术的结合,因此我们需要将用户上传的面部照片变成20年,40年和60年后,让用户看到自己满脸皱纹,白发苍苍的样子,进而产生关爱身边老年人的感慨,人人每年公益3小时,共同为公益做出贡献 。

经过将近4周左右的努力,我们初步完成了人脸老化项目的开发,赶在9月5日央视慈善之夜晚会前及时上线。央视公益晚会期间,用户通过扫描电视屏幕上的二维码,进入我们手淘的互动页面(详见图1),选择自己喜欢的照片进行老化。一场晚会下来,许多的用户体验到了自己脸部变老之后的特效。

image
图1. 手淘“当你老了”项目页面示意图

整个项目中我们遇到了很多的挑战,比如老化模版的选择,脸型的变化趋势问题,肤色的融合问题等等,下面我会把整个人脸老化技术分成几个关键的部分,进行简短的剖析。

1、脸型的老化算法

我们借鉴了一篇2017年最新的利用深度学习进行人脸老化的文章[1],该文章提出了一种叫做conditional adversarial autoencoder (CAAE)的深度网络结构,该结构能够学习出面部的manifold,从而预测出任何一张输入面部图像的全年龄面部图像。该网络的结构示意图如图2所示,该网络学习之后的预测结果示意图如图3所示。


image


图2. Structure of the proposed CAAE network for age progression/regression. The encoder E maps the input face to a vector z (personality). Concatenating the label l (age) to z, the new latent vector [z, l] is fed to the generator G. Both the encoder and the generator are updated based on the L2 loss between the input and output faces. The discriminator Dz imposes the uniform distribution on z, and the discriminator Dimg forces the output face to be photo-realistic and plausible for a given age label.


image


图3. Comparison to prior works of face aging. The first column shows input faces, and second column are the best aged faces cited from prior works. The rest columns are our results from both age progression and regression. The red boxes indicate the comparable results to the prior works.

尽管该深度学习网络能够很好的获得全年龄段的输出,但是它存在两个弊端,其一是它训练预测出来的图片和输入人脸差异比较大,不像原始输入;其二是处理速度上该网络速度比较慢,很难适应项目的要求。针对这两点缺点,我们决定只保留该网络的老化脸型的能力,而脸上的纹理,即皱纹部分我们通过传统方法来贴。图4显示了我们通过该网络获得的脸型变老的能力示意图。


image
图4. 面部脸型变老的示意图,从左到右分别是原图,20年后,40年后,60年后

2、脸部纹理的老化算法

在贴脸部皱纹或者说纹理的过程中,我们采用的是分而治之的办法[2]。即把面部分成许许多多的小三角形,然后将老人模版上对应的三角形贴到相应的输入人脸的三角形上。这样做的好处是每个三角形足够小,利用OpenCV的WarpAffine进行形变贴图时不会出现不自然的现象。当然这样做的前提是,我们已经获得了输入人脸以及模版人脸的所有关键点,同时利用Delaunay Triangulation将所有关键点划分成若干三角形了。关键点和三角形Mesh示意图如图5所示。

image
图5. 面部关键点示意图,面部三角形化示意图

3. 肤色的融合算法

在完成了人脸的老化脸型变化和贴皱纹的步骤后,我们还缺最后一步,即将老化后的脸完美无瑕地贴回到原始输入图像上去,否则会显得老化很不自然。这里我们采用了一个非常经典地融合算法,即Poisson Image Editing[3],它是通过保留剃度的方式使贴过来的图像能够无缝地融入背景图像。这里我们利用了OpenCV3.2里面提供的SeamlessClone这样一个函数,可以比较方便地实现前后景融合。肤色和纹理的融合示意图如图6所示。


image
图6. 从左到右依次为原始图像,老人模版贴入相应三角形,SeamlessClone之后的融合结果

4. 项目小结

在脸型,皱纹,肤色的老化之外,我们还尝试了头发的变白等算法,篇幅有限,就不在此赘述了。最后贴几张我们认为效果还是不错的人脸老化结果作为结尾。


image
image
image
图7. 效果示意图

Reference

[1] Zhifei Zhang, Yang Song, and Hairong Qi. "Age Progression/Regression by Conditional Adversarial Autoencoder." IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017.
[2] Face Morph Using OpenCV — C++ / Python, http://www.learnopencv.com/face-morph-using-opencv-cpp-python/
[3] Poisson Image Editing, http://www.ctralie.com/Teaching/PoissonImageEditing/.

来源:阿里技术
原文链接

相关文章
用word快速将数字字体换成新罗马详细简单方法
用word快速将数字字体换成新罗马详细简单方法
8553 0
用word快速将数字字体换成新罗马详细简单方法
|
NoSQL Redis
Redis进阶-bind参数详解
Redis进阶-bind参数详解
811 0
|
存储 JavaScript 前端开发
Vue3 详细教程及实例(完整版)
Vue3 详细教程及实例(完整版)
1202 0
|
9月前
|
数据采集 Web App开发 JSON
微博采集评论区数据工具,微博爬取博主粉丝ID抓取,微博提取评论ID博主粉丝列表
这个代码实现了完整的微博数据采集功能,包括评论采集、粉丝ID抓取和评论用户粉丝列表获取
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
AI 基础知识从 0.3 到 0.4——如何选对深度学习模型?
本系列文章从机器学习基础出发,逐步深入至深度学习与Transformer模型,探讨AI关键技术原理及应用。内容涵盖模型架构解析、典型模型对比、预训练与微调策略,并结合Hugging Face平台进行实战演示,适合初学者与开发者系统学习AI核心知识。
664 15
|
7月前
|
Linux 调度 iOS开发
Motrix高速下载工具软件,一款高效、稳定可替代迅雷的下载工具实用教程讲解!
Motrix是一款开源免费、无广告的全能下载工具,支持Windows、macOS、Linux三端。界面简洁,支持HTTP、FTP、BT、磁力等全协议下载,智能识别链接,最高64线程加速,支持断点续传、批量下载、剪贴板监听、任务分类及浏览器扩展联动,功能强大且易于管理,最大化提升下载效率。
1365 0
|
Web App开发 机器学习/深度学习 人工智能
使用魔搭开发自己的语音AI:从入门到精通
语音AI是最早从实验室走向应用的AI技术,其发展史就是不断创新、解锁应用的历史,从1995年 Dragon Dictate的桌面孤立词语音识别,到2011年苹果的手机语音助手SIRI,再到当下百花齐放的各种智能语音应用。
1477 41
使用魔搭开发自己的语音AI:从入门到精通
|
语音技术 Python
FunASR升级热词定制化问题之使用FunASR工具包进行ASR推理,如何操作
FunASR升级热词定制化问题之使用FunASR工具包进行ASR推理,如何操作
933 1
|
Linux 应用服务中间件 nginx
Docker 大势已去,Podman 即将崛起……
Docker 大势已去,Podman 即将崛起……
1961 0
Docker 大势已去,Podman 即将崛起……