ModelArts奉上的青春云毕业礼 ——用AI为毕业生们“拍”一张专属的毕业照
去年同醉,酴花下,健笔赋新词。今年君去,酴欲破,谁与醉为期。
六月初夏,又是一年毕业季,喜悦总是与感伤并存:我们为迈入新的人生阶段而喜悦,也为与朝夕相处之人分别而不舍。一张毕业照,寄托着多少人的思念。
对于很多人来说,有一张身穿学士服的毕业照,学生生活才算完整,它给三年、四年甚至更长时间的高校生活画上了一个圆满的句号。有创意的毕业照也常常能吸引不少人的注意,几乎每年,创意毕业照都能登上全网热搜。
可是今年的毕业季却成了许多人的遗憾,出于疫情防控的需要,很多学校取消了毕业典礼,甚至封闭校园,不允许学生返校。对于毕业生来说,寒假时轻轻松松的"下个月见",却可能成为对彼此说的最后一句话。
很多人说,他们可能失去了唯一一次穿学士服、拍毕业照的机会。
为了弥补这样的遗憾,不少人"大显神通":有的人用PS给自己"抠"了一张毕业照,有的同学精通绘画,给自己和朋友们画了一张Q版毕业照,还有的同学把前两者结合,将自己的脸拼到了画中。
但总觉得差了点什么,可能大家更想要一张"真实"的毕业照吧...
于是今天,我将为大家分享,如何用AI简单而优雅地实现“云毕业照的拍摄”。
首先看看效果:
上传一个人的证件照,就可以很轻松地实现身穿学士服的毕业照的合成。
当然,青春云毕业怎会只有一个人,当上传多张照片时,就可以实现一个多人合照的生成。
如果说觉得背景有一些单调,那也没有关系!系统同样支持更换背景~
大家可以在下面的网站中尝试生成自己的毕业照~
那么有小伙伴肯定会问了~这样一个毕业照生成器的工作原理是什么样的呢?接下来就跟大家分享我的设计思路和核心代码~
1.图片上传
在这个网站中,前端通过一个form标签,获取包括照片、性别、学科、学位等信息,传递到后端以进行毕业照的生成。
2.特征提取
当获得了上传的照片,就可以提取其人脸特征,以实现进一步的换脸操作。这在里我们使用的是python中的dlib库,它拥有一个人脸特征提取器,可以通过人脸上的68个特征点实现对人脸特征的采集。
完成人脸特征点的提取后,我们就可以根据特征点构建一个人脸掩模,黑色的部分代表需要换脸的部分,白色的部分代表脸部以外(即不需要换脸的部分)。
3.换脸
整个换脸的操作是非常简单的,只要定位到学士服模板中人脸的位置,然后根据掩模做一个柏松融合,就能得到换脸之后的学士服照片了。
大家可能会问,什么是柏松融合?其实很简单,举个栗子~
如上图所示,这里的掩模是一个左半部分白色,右半部分黑色的矩形,这代表着将用图中橘子的右半部分替换苹果的右半部分,得到的便是如图右下角所示的一个“半苹果半橘子”的图片,其过渡部分非常自然,几乎看不出有拼接的痕迹。而实现这样合成效果的方法就是柏松融合。而我们将其用到了人脸上。
4.多人合成
单人的毕业照显得不那么完整,我们可以通过创建一个大的画布,将通过上述步骤生成的单人毕业照依次拼接在上面,从而实现多人毕业照的合成。
5.添加背景
背景添加方法和换脸类似,只是这次抠的是整个人的身体,再将纯蓝的背景更换为喜欢的照片,就能实现毕业照背景的添加。
至此,整个AI毕业照的生成就彻底完成啦~
当然,还有一些细节问题需要注意。
比如,在进行多人毕业照合成时,涉及到一个对上传照片中每一张人脸位置的检测,目前主流的方法往往是使用神经网络进行检测,编写难度、硬件要求都比较高,因此我选择在ModelArts上直接实现,它提供了一个自动学习功能,可以一键训练人脸检测模型并在线部署。
打开华为云ModelArts控制台,直接点击【自动学习】,就进入了配置界面:
在选定数据集输出和输出位置之后,点击创建项目,进入到【数据标注】界面中。
在数据标注界面,可以很方便地上传数据、并对通过鼠标框选的方式进行人脸数据的标注,完成数据集的标注后,点击【开始训练】按钮。
对训练验证集比例、计算规格等进行配置,最后点击确定,自动人脸检测模型就会开始训练,整个训练过程会持续大约10分钟。
当训练完成时,会自动部署在线预测服务,通过调用在线服务,就可以实现人脸检测功能。
当然,在线服务不仅仅只能在网页中调用,可以通过在python代码中调用在线服务,从而实现与程序的完美结合,从而减少本地机器的负担、提高识别准确率。
到这里,整个项目的分享就结束啦,欢迎大家下载附件中的源代码~一起体验“云毕业”叭!
(注意哟~源代码中的在线服务service_id需要自己按照上面步骤部署~)
- 点赞
- 收藏
- 关注作者
评论(0)