ModelArts奉上的青春云毕业礼 ——用AI为毕业生们“拍”一张专属的毕业照

举报
Srius 发表于 2020/06/12 16:44:47 2020/06/12
【摘要】 六月初夏,又是一年毕业季,喜悦总是与感伤并存:我们为迈入新的人生阶段而喜悦,也为与朝夕相处之人分别而不舍。一张毕业照,寄托着多少人的思念。可是今年的毕业季却成了许多人的遗憾,出于疫情防控的需要,很多学校取消了毕业典礼。对于毕业生来说,寒假时轻轻松松的"下个月见",却可能成为对彼此说的最后一句话。于是今天,我将为大家带来一场”云毕业典礼“,与大家分享如何用AI简单而优雅地拍摄“云毕业照”。

去年同醉,酴花下,健笔赋新词。今年君去,酴欲破,谁与醉为期。

六月初夏,又是一年毕业季,喜悦总是与感伤并存:我们为迈入新的人生阶段而喜悦,也为与朝夕相处之人分别而不舍。一张毕业照,寄托着多少人的思念。

对于很多人来说,有一张身穿学士服的毕业照,学生生活才算完整,它给三年、四年甚至更长时间的高校生活画上了一个圆满的句号。有创意的毕业照也常常能吸引不少人的注意,几乎每年,创意毕业照都能登上全网热搜。

可是今年的毕业季却成了许多人的遗憾,出于疫情防控的需要,很多学校取消了毕业典礼,甚至封闭校园,不允许学生返校。对于毕业生来说,寒假时轻轻松松的"下个月见",却可能成为对彼此说的最后一句话。

很多人说,他们可能失去了唯一一次穿学士服、拍毕业照的机会。

为了弥补这样的遗憾,不少人"大显神通":有的人用PS给自己"抠"了一张毕业照,有的同学精通绘画,给自己和朋友们画了一张Q版毕业照,还有的同学把前两者结合,将自己的脸拼到了画中。

但总觉得差了点什么,可能大家更想要一张"真实"的毕业照吧...

于是今天,我将为大家分享,如何用AI简单而优雅地实现“云毕业照的拍摄”。

首先看看效果:

上传一个人的证件照,就可以很轻松地实现身穿学士服的毕业照的合成。

image.png

当然,青春云毕业怎会只有一个人,当上传多张照片时,就可以实现一个多人合照的生成。

image.png

如果说觉得背景有一些单调,那也没有关系!系统同样支持更换背景~

image.png

大家可以在下面的网站中尝试生成自己的毕业照~

http://119.3.249.156:32123/

那么有小伙伴肯定会问了~这样一个毕业照生成器的工作原理是什么样的呢?接下来就跟大家分享我的设计思路和核心代码~

1.图片上传

在这个网站中,前端通过一个form标签,获取包括照片、性别、学科、学位等信息,传递到后端以进行毕业照的生成。

image.png

2.特征提取

当获得了上传的照片,就可以提取其人脸特征,以实现进一步的换脸操作。这在里我们使用的是python中的dlib库,它拥有一个人脸特征提取器,可以通过人脸上的68个特征点实现对人脸特征的采集。

image.png

完成人脸特征点的提取后,我们就可以根据特征点构建一个人脸掩模,黑色的部分代表需要换脸的部分,白色的部分代表脸部以外(即不需要换脸的部分)。

image.png

3.换脸

整个换脸的操作是非常简单的,只要定位到学士服模板中人脸的位置,然后根据掩模做一个柏松融合,就能得到换脸之后的学士服照片了。

image.png

大家可能会问,什么是柏松融合?其实很简单,举个栗子~

image.png

如上图所示,这里的掩模是一个左半部分白色,右半部分黑色的矩形,这代表着将用图中橘子的右半部分替换苹果的右半部分,得到的便是如图右下角所示的一个“半苹果半橘子”的图片,其过渡部分非常自然,几乎看不出有拼接的痕迹。而实现这样合成效果的方法就是柏松融合。而我们将其用到了人脸上。

4.多人合成

单人的毕业照显得不那么完整,我们可以通过创建一个大的画布,将通过上述步骤生成的单人毕业照依次拼接在上面,从而实现多人毕业照的合成。

image.png

5.添加背景

背景添加方法和换脸类似,只是这次抠的是整个人的身体,再将纯蓝的背景更换为喜欢的照片,就能实现毕业照背景的添加。

image.png

至此,整个AI毕业照的生成就彻底完成啦~

当然,还有一些细节问题需要注意。

比如,在进行多人毕业照合成时,涉及到一个对上传照片中每一张人脸位置的检测,目前主流的方法往往是使用神经网络进行检测,编写难度、硬件要求都比较高,因此我选择在ModelArts上直接实现,它提供了一个自动学习功能,可以一键训练人脸检测模型并在线部署。

打开华为云ModelArts控制台,直接点击【自动学习】,就进入了配置界面:

image.png

image.png

在选定数据集输出和输出位置之后,点击创建项目,进入到【数据标注】界面中。

image.png

在数据标注界面,可以很方便地上传数据、并对通过鼠标框选的方式进行人脸数据的标注,完成数据集的标注后,点击【开始训练】按钮。

image.png

对训练验证集比例、计算规格等进行配置,最后点击确定,自动人脸检测模型就会开始训练,整个训练过程会持续大约10分钟。

 image.png

 

当训练完成时,会自动部署在线预测服务,通过调用在线服务,就可以实现人脸检测功能。

image.png 

 

当然,在线服务不仅仅只能在网页中调用,可以通过在python代码中调用在线服务,从而实现与程序的完美结合,从而减少本地机器的负担、提高识别准确率。

到这里,整个项目的分享就结束啦,欢迎大家下载附件中的源代码~一起体验“云毕业”叭!

(注意哟~源代码中的在线服务service_id需要自己按照上面步骤部署~)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。