作者 | Trent
责编 | 郭  芮

自从天天P图出了疯狂变脸的特效之后,到现在为止已经两年时间了。这两年时间,天天P图多次凭借换脸特效登上APP Store排行榜首,从小学生证件照到前世青年照、圣诞节梦幻妆再到后来的各种影视游戏特效,以及后来的军装照等等等等,天天P图时不时地传遍朋友圈,火遍排行榜。

本文将分析换脸这个模块,因为这个技术用深度学习来搞,个人认为潜力更大。下面简单将换脸分为深度学习方法和传统方法来讲。

60s测试:你是否适合转型人工智能领域?

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

深度学习方法

2016年的一篇论文Fast Face-swap Using Convolutional Neural Networks,通过卷积神经网络实现了换脸效果,如下图所示:

具体算法思路是:

  • 人脸对齐(根据特征点将目标图像与模板图像中的人脸对齐);

  • 通过CNN进行换脸,网络结构如下:

  • 定义内容损失/风格损失/光照损失/平滑损失代价函数,加入训练过程,来解决肤色光照不均,不平滑,内容不协调的问题。损失函数如下:

该方法已经达到了一定的效果:

  • 人脸融合自然;

  • 侧脸效果要优于传统方法的效果;

但是仍然具有以下弊端:

  • 每个模版照片需要单独训练网络,造成模型数据庞大,训练耗时,模型更改麻烦等诸多问题;

  • 每个模型需要一个模板对应的多张不同姿态与光照条件的图像——单单这一点就很不利于产品化,在大多数情况下,我们是无法提供多张不同姿态与光照下的模板图像的;

  • 速度慢,本人的换脸算法是可以达到实时处理的。

个人认为,基于深度学习的方法在多角度侧脸的情况下,具有很强的优势,在肤色融合方面与传统算法持平,在速度方面,未来将不是问题!

传统方法

本人主要研究基于传统图像算法的换脸,本人猜测天天P图基本上也是基于传统算法做的。

我们以天天P图效果举例来讲:

白百合的照片与右边的模板图相比,在脸型和五官位置上都发生了变化,也就是变的好看了很多,总结变化如下:

  • 肤色变成了模板图的肤色;

  • 脸型变成了模板图的脸型;

  • 五官大小形状等发生了一定的变化.

据此推测,天天P图做了如下操作:

  • 将白百合的肤色做了转换,换成了模板图的肤色;

  • 将白百合的脸型包括五官做了变形,变成了接近模板图的形状。

注意,这里是接近模板图的形状,而并非是跟模板图完全一样的形状,网上很多做换脸的都是直接将人脸对齐到了模板中的形状,这是不行的,脸型差异过大时,会造成畸变,效果很差。

本人算法步骤:

1、根据人脸特征点(本人使用的是101个人脸特征点),将模板和白百合的人脸同时变形到第三目标形状,变形算法使用MLS变形即可。

这一步骤可以分为如下两步:

  • 直接将白百合人脸点位对齐到模板点位;

  • 将对齐后的白百合人脸五官与脸型进行美化或称美型;

这一步可以参考论文《Data-Driven Face Cartoon Stylization》,当然这一步也可以使用深度学习来做,个人认为效果要比这篇论文效果更好,随后本人会另写博客专门介绍基于CNN的人脸美型。

MLS变形代码链接:

https://blog.csdn.net/hjimce/article/details/46550001

当然本人也有更好的变形:

https://download.csdn.net/download/trent1985/10318459

本人美型算法效果图如下:

2、基于LAB颜色空间对白百合和模板人脸肤色进行换色+融合;

3、添加风格滤镜+美颜美妆。

对于美妆可以直接使用妆容迁移来做,效果很好,具体可参考:

https://blog.csdn.net/trent1985/article/details/70226779

https://blog.csdn.net/trent1985/article/details/79761444

本人妆容迁移效果如下:

上面就是本人传统换脸算法的过程,本人尽量用最简单的算法去表现最好的效果,给出一个完整的算法过程效果图:

对于效果,大家可以使用白百合的测试图到本人的DEMO和天天P图中测试。这里测试图在本人所给的DEMO中,大家可以自行测试。

下面给出本人算法与天天P图效果对比图,这里仅以一组图为例:

<<  滑动查看下一张图片  >>

最后,指出天天P图肤色融合的一些问题,对于某些照片,肤色融合之后会出现颜色偏绿问题,可能是某个颜色空间中颜色溢出导致,举例如下(左图为本人算法,右图为天天效果):

最后,本人给出本人疯狂变脸效果的DEMO,以免大家耳听为虚,DEMO运行平台为WINDOWS 8以上,DEMO中给有TestPicture为测试图,FS为天天P图的模板,仅供测试,切勿商业用途,以免侵权。下载链接:https://download.csdn.net/download/trent1985/10410917。

PS:DEMO中无人脸识别,因此仅限本人所给测试图有效!共勉!

作者:Trent1985,CSDN博客专家,本文来源于作者CSDN博客,原文链接https://blog.csdn.net/trent1985/article/details/80295532,CSDN 公众号经授权发布。欢迎更多开发者朋友通过下方联系投稿。


 热 文 推 荐 

☞ 开源,二世而亡?

☞ 30 秒?!Chrome 插件带你速成编程学习 | 程序员硬核评测

☞ 零经验程序员如何抢占面试机会?

那些简历造假拿 Offer 的程序员,后来都怎么样了?

☞ K8S安全军规101:对CNCF最佳实践的扩充

☞ 为什么说稳定币才是诺奖得主哈耶克想要的非国家货币?

☞ 月入5万,程序员夫人们过上"贵妇"生活了吗?

☞ “扔瓶子”有套路?日本高中生开发机器人,手残党们有救了

print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

喜欢就点击“好看”吧!

如何用深度学习 AI 美颜实现天天 P 图疯狂变脸算法? | 技术头条相关推荐

  1. 深度学习AI美颜系列---天天P图疯狂变脸算法

    自从天天P图出了疯狂变脸的特效之后,到现在为止已经近两年时间了,这两年时间,天天P图多次凭借换脸特效登上APP Store排行榜首,从小学生证件照到圣诞节梦幻妆再到后来的各种影视游戏特效,以及后来的军 ...

  2. 深度学习AI美颜系列----基于抠图的人像特效算法

    美颜算法的重点在于美颜,也就是增加颜值,颜值的广定义,可以延伸到整个人体范围,也就是说,你的颜值不单单和你的脸有关系,还跟你穿什么衣服,什么鞋子相关,基于这个定义(这个定义是本人自己的说法,没有权威性 ...

  3. 深度学习AI美颜系列——人像静态/动态贴纸特效算法实现 | CSDN博文精选

    作者 | Trent1985 来源 | CSDN博客 人像静态/动态贴纸特效几乎已经是所有图像视频处理类/直播类app的必需品了,这个功能看起来复杂,实际上很简单,本文将给大家做个详细的讲解. 我们先 ...

  4. 深度学习AI美颜系列----人像静态/动态贴纸特效算法实现

    人像静态/动态贴纸特效几乎已经是所有图像视频处理类/直播类app的必需品了,这个功能看起来复杂,实际上很简单,本文将给大家做个详细的讲解. 我们先来看一下FaceU的两张效果图: 这两张效果图中, 我 ...

  5. 深度学习AI美颜系列---人像分割头发细节处理算法研究

    人像分割技术目前已经逐渐成熟,在抖音.快手.美图等等APP中已经都有应用,而且是Camera实时处理,然而,追究细节,各家效果却大同小异,都存在一个问题:无法处理好边缘细节的分割,尤其是头发丝的处理, ...

  6. 深度学习AI美颜系列

    为什么要开始写AI美颜这个系列的内容? 人像美颜美妆滤镜现在来看,几乎成为了人们生活拍照,摄影的刚需,目前市面上绝大多数的算法依旧停留在传统的图像算法阶段,仅有少数的AI算法也尚属于探索研究阶段,比如 ...

  7. 深度学习AI美颜系列---AI美颜磨皮算法一

    深度学习AI美颜系列---AI美颜磨皮算法一 转自:https://blog.csdn.net/trent1985/article/details/80661230 首先说明一点,为什么本结内容是&q ...

  8. 深度学习AI美颜系列---人脸数据增强

    深度学习AI美颜系列---人脸数据增强 在深度学习的训练中,我们经常会对较少的数据进行数据增强,一般而言,常用的数据增强包括如下几种: 1,旋转: 2,缩放: 3,镜像: 4,平移: 5,调色: 6, ...

  9. 深度学习AI美颜系列---肤色相似度计算(CIELAB色差计算)

    深度学习AI美颜系列---肤色相似度计算(CIELAB色差计算) 在AI美颜中,经常会用到肤色相似度计算,如何实现这个算法? 步骤如下: 1,人脸皮肤分割: 2,对人脸皮肤分割结果进行LAB颜色空间转 ...

最新文章

  1. 循环控制体重C语言,中年以后很容易发福变胖?4个建议帮你控制体重,保持轻盈体态...
  2. C++中运算符重载需要遵循的规则
  3. c# webapi POST 参数解决方法
  4. 概率统计概念复习:MAPMLE
  5. Gdiplus byte *数据转换为Bitmap类型图片
  6. ZABBIX 企业级分布式监控系统 1 监控系统简介
  7. webservice 返回对象 java_JAVA 调用webservice不同返回值类型的方法
  8. HUE配置文件hue.ini 的database模块详解(包含qlite、mysql、 psql、和oracle)(图文详解)(分HA集群和非HA集群)...
  9. c++类指针赋值表达式必须是可修改的左值_C++进阶教程系列:全面理解C++中的类...
  10. Cutting Bamboos(牛客多校第九场H主席树+二分+思维)
  11. C++输入函数的应用
  12. 【LeetCode】19. Remove Nth Node From End of List
  13. 浅析 路印协议--Loopring 及整体分析 Relay 源码
  14. java中的内部类_Java中成员内部类的使用
  15. 二元函数对xy同时求导_《高等数学》微课视频“二元函数的全微分求积”录音...
  16. ESXI安装网卡或HBA卡驱动
  17. C++控制输出对齐---setw()函数
  18. Java处理多个List集合中对象数据合并处理数据后为同一个List集合对象
  19. assoc php,PHP array_uintersect_assoc 函数
  20. int 和 Integer有什么区别,Integer 有哪些函数方法

热门文章

  1. wireshark https_测开日常积累-wireshark应用
  2. C++左值与右值,移动与完美转发
  3. Golang之Channel的理解与应用
  4. 中国松紧带市场趋势报告、技术动态创新及市场预测
  5. 中国塑溶胶密封剂行业市场供需与战略研究报告
  6. 中国半导体蚀刻设备行业市场供需与战略研究报告
  7. html检测用户在线离线,HTML5 --- navigator.onLine 离线检测(示例代码)
  8. 2021级C语言大作业 - 涂鸦跳跃
  9. 2018级C语言大作业 - 坦克动荡
  10. 江苏大学c语言程序设计,江苏大学201级C语言课程设计要求及题目.doc