注意,為避免侵權,本文圖片均為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等;
按照上述方案進行驗證,最終效果如下:
可以看到,本人的方案效果達到了像素蛋糕類似的露齒笑效果;
類似的,該方案還適用于各類表情特效(哭臉,大笑等),后續不再累贅。