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