ZAO 背后的深度学习算法原理浅析
ZAO最近火爆,成為現(xiàn)象級產(chǎn)品之一,引起大家的廣泛關(guān)注,ATA上面已經(jīng)有同學(xué)做了一些說明分析,鏈接如下:
https://www.atatech.org/articles/148375?spm=ata.13269325.0.0.27ad49fa0Vr2gG
上面文章介紹了ZAO是基于deep fake算法演變出來的一種產(chǎn)品,并提供了deepFake lab的下載地址,計算機(jī)硬件的要求等等。本文從更底層的算法角度出發(fā),帶大家深入到算法本質(zhì),去理解ZAO究竟是如何基于GAN來進(jìn)行換臉的。
首先,我們給出一張換臉的整體流程圖:
圖片來源:Exposing DeepFake Videos By Detecting FaceWarping Artifacts
上圖展示了基于deepFake換臉?biāo)惴ǖ囊话懔鞒?#xff0c;首先對于輸入圖片(a)原圖做人臉檢測(b),檢測出人臉后進(jìn)行關(guān)鍵點檢測(c)。之后(c)通過變換矩陣(d)來實現(xiàn)人臉擺正,之后將擺正后的人臉進(jìn)入DeepFake(GAN/CycleGAN)來實現(xiàn)人臉替換,之后將替換后的人臉(g)通過變換矩陣的反變換來做關(guān)鍵點對齊,最后替換回原圖進(jìn)行融合最終得到(i)和(h)。
這里我們給出的是圖像上人臉替換的一般流程,那對于短視頻而言,就需要先對視頻進(jìn)行截幀,然后逐幀進(jìn)行人臉替換,在視頻幀替換過程中要有人臉識別的網(wǎng)絡(luò)來保證替換的對象保持統(tǒng)一性(具體理解就是比如我們要替換一段視頻中小燕子的臉,那就要識別出檢測的人臉是不是小燕子的,不能將紫薇的人臉也替換了),當(dāng)然由于是視頻逐幀的替換,那么在其中為了保證視頻隨時間前后幀替換的人臉的自然和連貫性,就需要對前后幀的人臉進(jìn)行轉(zhuǎn)移平滑操作,從而保證較強(qiáng)的視覺效果。
以上就是圖像換臉,視頻換臉的通用流程,當(dāng)然對于ZAO而言,我們發(fā)現(xiàn)它的換臉效果要好于我們一般的換臉?biāo)惴?#xff0c;尤其是在頭部旋轉(zhuǎn)的(低頭,回頭,仰頭)上面,效果很是不錯,所以我們有理由相信,ZAO的算法內(nèi)部應(yīng)該是使用3D人臉關(guān)鍵點的檢測,這樣在替換的過程中就會換的更為自然。
好的,現(xiàn)在我們了解了流程,下面我們更加細(xì)節(jié)的介紹上面說的DeepFake(GAN/CycleGAN)的算法工作原理。為了簡化大家對于GAN/CycleGAN的理解,我們同樣以圖的方式展現(xiàn):
首先,上圖表示了最簡單的人臉替換網(wǎng)絡(luò),對于輸出人臉(左邊),通過神經(jīng)網(wǎng)絡(luò)編碼得到中間狀態(tài)(往往是一個向量或者很小的圖像),之后再進(jìn)入解碼器還原得到重建的人臉(右邊)。我們注意,中間的編碼態(tài)相當(dāng)于保存的人臉的全部信息。在上圖我們并沒有做人臉替換的相關(guān)操作,即A臉編碼后解碼的還是A臉,B臉編碼后解碼的還是B臉。
下面,如果我們將B臉編碼的向量用A臉的解碼去解,會發(fā)生什么呢?是的,B的臉會出現(xiàn)在原本A的臉的位置,但面部的表情和一些細(xì)節(jié)會保留A的。這樣就實現(xiàn)了換臉。
從上圖還有一點需要注意,因為編碼的可替換要求,我們必須讓所有臉的編碼器保持一致性,也就是所有替換前的人臉用統(tǒng)一的編碼器去編碼(上圖統(tǒng)一的紅色編碼器),但對于每個不同的人臉要實用不同的解碼器去解碼(上圖不同的藍(lán)色和綠色解碼器),這樣才能完成換臉。
但是如果僅僅使用上面的算法結(jié)構(gòu),生成的人臉會比較假,可以看出相當(dāng)明顯的人為替換痕跡,而為了讓替換發(fā)生的更為真實,CycleGan應(yīng)運(yùn)而生,還是簡單的一張圖去理解CycleGan的算法本質(zhì):
我們可以看出,說到底,CycleGan不過在換臉后生成的假臉和真臉的之間多增加了一個損失來減小兩者的差距,同時讓相較于之前的A–>B, CycleGan還同時實現(xiàn)了B–>A的生成和縮小差距,而這整個過程呈現(xiàn)了一個閉環(huán),故而名為Cycle。
CycleGan的循環(huán)訓(xùn)練可以明顯的縮小直接將B臉用A解碼器解碼所產(chǎn)生的不真實性。
當(dāng)然,在真實場景中,在完成換臉后可能還需要一些后處理來保證結(jié)果更加平滑自然,比如在換臉邊緣做一些模糊處理,在人臉區(qū)域做一些和原臉的風(fēng)格遷移等等。而這些就是實現(xiàn)技術(shù)代差的關(guān)鍵技術(shù)了,我們今天只是淺析一下ZAO的算法,更深入的一些產(chǎn)品算法設(shè)計細(xì)節(jié)我們這里不做更深的探討了。
最后面對ZAO,雖然他有著霸王條款,單但從技術(shù)角度看,我認(rèn)為ZAO確實做的很好,技術(shù)上值得我們學(xué)習(xí),但換臉本身是否符合道德,究竟是不是一件有意義有價值的事情,還需要時間給出我們最終的答案。
感謝您閱讀,希望對您有所幫助。
–溪鶴
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的ZAO 背后的深度学习算法原理浅析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双十一消费近万亿!1亿人见证数字物流,“
- 下一篇: 「技术人生」第3篇:解决问题的规律总结