影楼精修-露齿笑算法解析
注意,为避免侵权,本文图片均为AIGC生成或网络公开数据;
像素蛋糕-露齿笑
在介绍本文之前,先说一下,其实露齿笑特效,并非像素蛋糕首创,早在几年前,face app就率先推出了这个效果,本人也是之前做过相关的算法研究与实践,所以,今天应部分小伙伴的要求,对这个效果算法实现做个讲解。
我们开门见山,直接介绍像素蛋糕的表情管理模块算法实现。
像素蛋糕的表情管理功能主要是笑容管理模块,包含两个子功能:露齿笑和抿嘴笑。两个功能的界面如下所示:
两个功能体验:
1.露齿笑包含5个程度的调节,微笑的强度从1-5,整体上无论从体验上还是从技术上来看,它的实现都并非是一次完成的,每一个程度都需要重新制作;
2.抿嘴笑功能仅有一个滑杆,用于控制抿嘴嘴角微笑的程度,这个功能仅仅是一个基于点位的人脸微笑变形功能,对于这个功能,相对没有太多技术含量,这里就暂时不在过多介绍了。
露齿笑算法
像素蛋糕的露齿笑,由于用户照片不管是闭嘴还是张嘴,不管是露牙齿还是不露牙齿的,只要做了露齿笑,必然会生成露齿效果,而且这个牙齿是算法生成出来的,与用户牙齿不相关,因此,露齿笑算法必然是一个生成式AI算法;
个人猜测,每个程度对应会调用一次露齿笑算法推理,这个算法可能有两种形式:
①多模型,1-5的强度分别对应5个露齿笑模型,输出不同强度的微笑效果;
②单模型+条件输出,1-5的强度条件,分别对应不同强度的微笑效果输出;
有了上面的猜测,从作者本人的经验角度来看,给出如下解决方案:
1.使用GAN网络来实现露齿效果,一般而言,对于人脸特效类,比如人脸变形(真人迪士尼,皮克斯等),动漫类基本都可通过GAN来实现,而且可以很方便的实现,甚至做到手机端实时处理(比如抖音快手app中各种实时漫画脸特效);
2.数据集构建,露齿笑算法最大的难点在于数据集的构建,这里我们可以针对不同程度的露齿效果,每个程度准备200张效果图,可以从网络爬取或其他方式获得,然后,使用200张效果图,微调StyleGAN,得到露齿笑的StyleGAN模型,用StyleGAN模型来生成人脸露齿笑的大量成对数据(原图+露齿笑效果图)。
注意,这里有一个trick,由于StyleGAN制作的成对数据实际上是伪成对数据,原图和效果图并非一一对应,会存在一定的差异,这里,我们可以使用人脸点位你和嘴巴区域,将非嘴巴区域保留原图,嘴巴区域逐渐渐变为效果图,这样即可构建出相对质量较高的成对数据;同时,对于人脸特效类,必须要进行人脸对齐,这样可以降低训练难度,提升效果精度。这里本人测试,构建1.5W数据集;
数据集举例如下:
3.网络构建,我们最直接的,选择单模型+条件输出的解决方案,选择CGAN,网络输入为原图+label,原图大小比如512×512×3,label=1,2,3,4,5,对应输出分别为5个程度的微笑效果图;网络架构为U-net,Loss使用VGG感知损失+人脸laplace边缘loss+ssim颜色loss等;
按照上述方案进行验证,最终效果如下:
可以看到,本人的方案效果达到了像素蛋糕类似的露齿笑效果;
类似的,该方案还适用于各类表情特效(哭脸,大笑等),后续不再累赘。