云社区 博客 博客详情
云社区 博客 博客详情

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

Srius 发表于 2020-06-12 16:44:47 06-12 16:44
Srius 发表于 2020-06-12 16:44:47 2020/06/12
7
2

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

首先看看效果:


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


 

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



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


 

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

http://119.3.249.156:32123/

 

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

 

1.图片上传

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


 

2.特征提取

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


 

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



3.换脸

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


 

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

 


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

 

4.多人合成

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


 

5.添加背景

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


 

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




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

 

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

 

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

 


 

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

 


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


 

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


 

 

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


 


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

 

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

 

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

 


源代码.txt 213B 下载14

登录后可下载附件,请登录或者注册

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

评论 (7)


胡琦

1楼2020-06-12 16:48:02

AI小毛1楼2020-06-12 16:50:36

哈哈哈哈,你是守着论坛呢!!!这么快就来盖楼!

袁覃2楼2020-06-12 21:17:10

数据集没有!?

Srius3楼2020-06-13 07:31:07

@建行袁覃 数据集是百度的,怕侵权就木有放了,不过一共只用了12张照片~可以直接百度“自拍”保存若干使用~

袁覃4楼2020-11-18 20:17:40

0/1000

AI小毛

2楼2020-06-12 16:49:49
云毕业,这里嗨!

yinuxy

3楼2020-10-30 22:41:55
华为云ModelArts,免费领取两百元无门槛代金券
https://console.huaweicloud.com/modelarts/?dist=ma-free&;region=cn-north-4#/loginIntro?code=4Wpyh8Fi
0/1000
评论

登录后可评论,请 登录注册

评论

您还没有评论的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消