揭秘Deepfake換臉視頻背后的技術(shù)細(xì)節(jié)大數(shù)據(jù)DT關(guān)注共 7243字,需瀏覽 15分鐘 ·2021-02-02 10:50 導(dǎo)讀:你一定看過很多換臉視頻了,今天我們聊聊這些視頻背后的技術(shù)——GAN。 作者:木羊同學(xué) 來源:大數(shù)據(jù)DT(ID:hzdashuju) 01 什么是GAN 今天聊GAN。這要從一個新聞?wù)f起,2020年圣誕流出一段詭異的視頻,英國那位超長待機(jī)的老婆婆先是在視頻里來了一段放飛自我的演講,把以前絕對不適合在正式場合講的話統(tǒng)統(tǒng)一吐為快,然后干脆徹底放飛自我,直接跳上桌子上來了一段TikTok熱舞,場面一度十分混亂。 當(dāng)然,聽過新聞的同學(xué)應(yīng)該已經(jīng)知道了,這位放飛自我的老太太只是用深度偽造技術(shù)(DeepFake)山寨出來的Deepfake Queen,但是那段視頻實在過于逼真,大家都不禁去想,視頻中的老太太如果不是太反常理,恐怕會有不少人信以為真。再細(xì)想開去,沒有不可怕,只有腦洞不夠大。 深度偽造技術(shù)早已惹得滿城風(fēng)雨,連2021年1月1日才新鮮出爐的《民法典》都專門作出了規(guī)定,嚴(yán)禁利用深度偽造侵犯肖像權(quán)。不過,亦正亦邪的深度偽造我們下次再找機(jī)會細(xì)聊,今天只說它的核心技術(shù)。 深度偽造最早是以“換臉”(Face-Swap)的形象出現(xiàn)在世人面前,當(dāng)然,現(xiàn)在深度偽造早已開枝散葉,遠(yuǎn)不止是換臉,但所使用的核心技術(shù)卻始終如一,這就是我們今天的主角,GAN。 GAN是三個英文單詞的首字母簡寫,全稱Generative Adversarial Network,中文叫作“生成(式)對抗網(wǎng)絡(luò)”。這個名字神秘中帶點厲害,又是生成又是對抗的,感覺像是個多人聯(lián)機(jī)游戲,它到底是什么,我們后面細(xì)說。 GAN現(xiàn)在是深度學(xué)習(xí)中很重要的一個分支,說到這個還有一段小插曲。GAN最早2014年由 Ian Goodfellow在論文《Generative Adversarial Networks》中提出來的,現(xiàn)在提到“GAN之父”,說的就是這位“好家伙”。 論文提出之后,大家都樂了,原來都覺得深度學(xué)習(xí)的走位已經(jīng)風(fēng)騷到了極致,沒想到這風(fēng)騷還能翻倍。于是,大家紛紛直接一句好家伙,連Yann LeCun這樣咖位的大神都一頓商業(yè)互吹,說GAN是“過去十年間機(jī)器學(xué)習(xí)領(lǐng)域最讓人激動的點子”。 你要知道Yann LeCun是誰,他就是那位發(fā)明了CNN的大神,我們不好說是Yann LeCun已一己之力支棱起了深度學(xué)習(xí),但深度學(xué)習(xí)稱得上奠基人的一定得把他包含在內(nèi)。 說實話,GAN剛出來的時候有點簡陋,如果你看過那篇GAN的創(chuàng)始論文,也就是上文所說的《Generative Adversarial Networks》,你會覺得這個點子微妙中帶著尷尬。 在機(jī)器學(xué)習(xí)中,有一種將模型一分為二的分法,一種稱之為判別模型,也就是我們最常見的各種分類器,另一種則稱之為生成模型,它會“創(chuàng)作”一點東西。GAN是一種生成模型,它名字中的“生成對抗網(wǎng)絡(luò)”中的“生成”,指的就是這個。 那GAN之父好家伙在創(chuàng)始論文中用GAN生成了什么呢?玩過深度學(xué)習(xí)的同學(xué)應(yīng)該都熟悉MINST數(shù)據(jù)集,在論文里,好家伙正是用GAN生成了MINST數(shù)據(jù)集里的數(shù)字。 我很早就知道GAN了,這些年深度學(xué)習(xí)新奇的玩具發(fā)明了不少,善終的還真不多。現(xiàn)在GAN生成的這玩意不人不鬼,怎么想早晚也要銷聲匿跡吧。結(jié)果,大神就是大神,眼界遠(yuǎn)不是我等肉眼凡胎所能比擬。現(xiàn)在GAN果然大放異彩,而很多人都認(rèn)為這還僅僅只是開始。 口說無憑,還是讓我們看圖說話,下面這位金發(fā)妹子并不是真人,而是網(wǎng)站thispersondoesnotexist.com使用StyleGAN2生成的高清圖片。多說一句,StyleGAN2也是目前圖片生成能力最強(qiáng)的GAN模型,英偉達(dá)榮譽(yù)出品,出手就是1024X1024的高清大圖,連汗毛都根根可見,遠(yuǎn)不是創(chuàng)世論文里面那個只能生成32X32的弱雞可比。 02 GAN的結(jié)構(gòu) GAN的核心原理,在于名字中的兩個字,對抗。 先介紹一下GAN的基本結(jié)構(gòu)。GAN自2014年誕生起就不斷出現(xiàn)各種變種,數(shù)量非常驚人。你可以覺得有個百來種差不多了,Github有人維護(hù)一個叫GAN ZOO的項目,目的就是盡可能全地收集各類的GAN變種,現(xiàn)在你去看,已經(jīng)有五百多個GAN的變種模型。 不過,變種雖然多,但GAN的基本結(jié)構(gòu)相當(dāng)穩(wěn)定,就兩樣?xùn)|西,一個叫D,一個叫G。這兩個都分別是獨立的深度學(xué)習(xí)模型。 D代表Discriminator Network,中譯“判別神經(jīng)網(wǎng)絡(luò)”。記得我們前面說,機(jī)器學(xué)習(xí)有一種將模型一分為二的分法嗎?沒錯,這里的判別神經(jīng)網(wǎng)絡(luò),就是一種采用深度神經(jīng)網(wǎng)絡(luò)實現(xiàn)的判別模型。 判別神經(jīng)網(wǎng)絡(luò)我們很熟悉,深度學(xué)習(xí)當(dāng)年一戰(zhàn)成名,就是靠一款使用了CNN的神經(jīng)網(wǎng)絡(luò)模型AlexNet,在ImageNet的圖像識別任務(wù)中取得了驚為天人的高分,把第二名甩得連車尾燈都看不見。而這個AlexNet,就是典型的判別模型。 G代表Generator Network,中譯“生成神經(jīng)網(wǎng)絡(luò)”。相比你已經(jīng)猜到,這個生成神經(jīng)網(wǎng)絡(luò)屬于生成模型,算是GAN的核心部件。生成模型是個很有意思的話題,我們多說一點。 我經(jīng)常看到有人討論一個話題,問人工智能到底有沒有想象力。常見一種說法,是說現(xiàn)在人工智能進(jìn)步很大,但總的來說只是模仿人類,而缺乏想象力,沒有創(chuàng)造性的產(chǎn)品。這種說法,給我的感覺是把動物世界里的智能標(biāo)準(zhǔn)搬到了人工智能這里來,覺得自然界有很多動物都有模仿能力,但缺乏人類這樣的想象能力。 當(dāng)然,對于什么是想象力現(xiàn)在沒有一個公認(rèn)的定義,如果說指的是無中生有地生產(chǎn)一些天馬行空的信息,那生成神經(jīng)網(wǎng)絡(luò)是有這樣的能力的,而且絕對能夠保證比人的想象要更加天馬行空。這個其實不難理解,最常見的生成模型是回歸模型,想象一下,讓回歸模型胡亂“吐”一些莫名其妙的數(shù)字,真的會很難嗎?非常簡單,反而是要符合未來走勢的數(shù)字會更難。 這個例子也許不夠直觀,畢竟我們直覺覺得吐數(shù)字和想象力沒啥關(guān)系,那不妨找一下生成模型所生成的圖像或者文本,譬如說花書的封面,那種超乎認(rèn)知邏輯的詭異畫面,究竟算不算人工智能具有了“想象力”呢? 說得有點遠(yuǎn)了。簡單來說,生成模型就是具有“生成能力”的模型,用專業(yè)術(shù)語來說,就是能夠生成服從特定密度函數(shù)分布特征的樣本的一類模型。生成模型最大的問題不是有無的問題,而是生成效果好壞的問題。 一般來說,生成模型分成兩類,一類稱為顯式密度模型(Explicit Density Model),能夠顯式地構(gòu)建出樣本的密度函數(shù),并以MLE來求解參數(shù),知名度高的包括深度信念網(wǎng)絡(luò)和VAE。 這兩個模型都比較經(jīng)典,如果你去翻深度學(xué)習(xí)的教科書譬如花書,應(yīng)該還可以看到大段的介紹,特別是這個VAE,一度在生成精度方面占據(jù)優(yōu)勢,在GAN出來以后好一段時間還呈現(xiàn)出兩類模型分庭抗禮的態(tài)勢。 不過,在業(yè)界實踐中這些模型最近都很少聽說了,究其原因,是顯式密度模型依賴密度函數(shù),限制了神經(jīng)網(wǎng)絡(luò)的發(fā)揮空間。 那業(yè)界愛用哪一類呢?就是GAN所在的另一類生成模型,稱為隱式密度模型,既然叫“隱式”,和前者最大的區(qū)別自然就是去掉了密度函數(shù)。扔掉了密度函數(shù)的束縛,深度神經(jīng)網(wǎng)絡(luò)就能放開手腳大干一場,最終達(dá)到比顯式密度模型還要好的生成效果。 03 GAN的原理 不過,這首先就有一個問題:把密度函數(shù)作為包袱丟掉容易,可接下來應(yīng)該依據(jù)什么來生成符合特定分布的樣本呢? 答案就藏在GAN的名字里,這同樣也是多人聯(lián)機(jī)游戲的核心內(nèi)容:對抗。具體來說,就是G和D的對抗。 有一些介紹GAN的文章,喜歡用周伯通的左右互搏來形容GAN這里的對抗。可惜我對周伯通的了解僅限于知道他叫老頑童,不太清楚這個比喻是不是能夠清楚介紹為什么能夠通過對抗就能使得G和D——當(dāng)然主要是G——的性能不斷提升。 其實這個概念并不難介紹,首先,我把創(chuàng)始論文中的公式丟在下面: 別怕! 這條式子是GAN理論中最經(jīng)典的式子,我知道等號的右邊看起來很可怕,不過,最精髓的部分在左邊,而可怕的右邊實際基本上只是一條交叉熵的表達(dá)式,交叉熵在機(jī)器學(xué)習(xí)中非常重要,用于度量兩個概率分布的差異性,譬如經(jīng)典的分類模型邏輯回歸就使用了交叉熵作為損失函數(shù)。 不過,我不想作過多展開,而且這里也是GAN研究中更新?lián)Q代最密集的地方,現(xiàn)在早已物是人非,你只需要簡單掌握它的核心功能是評估模型D的判別準(zhǔn)確性,輸出值越高,表示模型D的判別結(jié)果越準(zhǔn)確。 現(xiàn)在看左邊。左邊有一個奇怪的符號minmax,在GAN里叫Minmax Game,有人翻譯成最大化最小化博弈,也有人翻譯成最大化最小化游戲,我個人傾向第一種。 這個符號不常見,常見的是單個的max或者單個的min,意思是通過調(diào)整參數(shù),使得函數(shù)取得最大/最小值。這里確實有個函數(shù),是函數(shù)V,函數(shù)V就是交叉熵,前面我們說過,它的值越大,表示判別越準(zhǔn)。 這里有意思的地方來了:max下面有個D,意思是通過訓(xùn)練模型D,也就是判別網(wǎng)絡(luò),使得函數(shù)V的取值變大。可是max旁邊還有個min,min下邊有個G,意思是通過訓(xùn)練模型G,也就是我們的生成模型,使得函數(shù)V取值變小。 好了,上面這一串對符號的解釋也許有點拗口,其實很簡單。首先我們要搞清楚,這里要判別的是什么?兩樣?xùn)|西,真樣本,以及由生成模型G生成的假樣本。 接下來的是就好說了,一句話,判別模型D希望通過不斷訓(xùn)練提升判別的準(zhǔn)確性,最終目標(biāo)是真樣本假樣本一看一個準(zhǔn),判別結(jié)果自然就Max了。 那模型G呢?它是個搗蛋鬼,盡想著讓模型D的判別結(jié)果掛零蛋,最好一個也猜不中,也就是Min。一邊想要Max,一邊想要Min,判別結(jié)果是個此消彼長的過程,這就是所謂的“對抗”。在這個最大化最小化的博弈過程中,攻防雙方肯定都將不斷成長。 不妨舉個現(xiàn)實的例子,爛片鑒定。而模型G和模型D的關(guān)系,有點像自戀導(dǎo)演和杠精觀眾。只導(dǎo)演一拍新片,觀眾就開始杠,不如那部經(jīng)典的XXX。導(dǎo)演覺得自己這么優(yōu)秀當(dāng)然不接受,就照著XXX一頓臨摹,又出了新片,觀眾也不是信男善女,當(dāng)然要絞盡腦汁挖掘出新的黑點。 導(dǎo)演不斷拍,觀眾不斷杠,直到導(dǎo)演拍出的新片真的達(dá)到了XXX的水平,觀眾這樣才終于杠不動了。這就是“對抗”帶來的共同進(jìn)步,學(xué)術(shù)一點的說法請見下圖: 那對抗有沒有止境呢?雖然廣告常說,進(jìn)無止境,但這種對抗產(chǎn)生的進(jìn)步是有止境的。前面我們說,杠精觀眾也終會有杠不動的那一天,同樣,當(dāng)模型D再也分別不出這是真樣本,還是生成的假樣本時,用術(shù)語來說,就是真樣本和生成樣本,在分布特征上已經(jīng)趨于一致時,模型G也就臻于化境了。 關(guān)于作者:莫凡,網(wǎng)名木羊同學(xué)。娛樂向機(jī)器學(xué)習(xí)解說選手,《機(jī)器學(xué)習(xí)算法的數(shù)學(xué)解析與Python實現(xiàn)》作者,前沿技術(shù)發(fā)展觀潮者,擅長高冷技術(shù)的“白菜化”解說,微信公眾號“睡前機(jī)器學(xué)習(xí)”,個人知乎號“木羊”。 延伸閱讀《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》 點擊上圖了解及購買 轉(zhuǎn)載請聯(lián)系微信:DoctorData 推薦語:豆瓣評分9.5!復(fù)旦大學(xué)邱錫鵬教授力作,周志華、李航聯(lián)袂推薦,深受好評的深度學(xué)習(xí)講義“蒲公英書”正式版!系統(tǒng)整理深度學(xué)習(xí)的知識體系,由淺入深地闡述深度學(xué)習(xí)的原理、模型以及方法。更適合中文讀者自學(xué)與入門的深度學(xué)習(xí)圖書!使你掌握神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)技術(shù)的基本原理,知其然也知其所以然。上市不到一周即榮登京東和當(dāng)當(dāng)新書榜榜首! 劃重點?? 干貨直達(dá)?? 盤點最重要的7個Python庫 手把手教你用ECharts畫餅圖和環(huán)形圖 終于有人把智能語音處理講明白了 終于有人把5G+人工智能講明白了 更多精彩?? 在公眾號對話框輸入以下關(guān)鍵詞 查看更多優(yōu)質(zhì)內(nèi)容! PPT | 讀書 | 書單 | 硬核 | 干貨 | 講明白 | 神操作 大數(shù)據(jù) | 云計算 | 數(shù)據(jù)庫 | Python | 可視化 AI | 人工智能 | 機(jī)器學(xué)習(xí) | 深度學(xué)習(xí) | NLP 5G | 中臺 | 用戶畫像 | 1024 | 數(shù)學(xué) | 算法 | 數(shù)字孿生 據(jù)統(tǒng)計,99%的大咖都完成了這個神操作 ?? 瀏覽 18點贊 評論 收藏 分享 手機(jī)掃一掃分享分享 舉報 評論圖片表情視頻評價全部評論推薦 人臉替換(視頻換臉)人臉替換(視頻換臉)人工智能易容術(shù)這肌肉換臉視頻,怎么實現(xiàn)的?學(xué)習(xí)python的正確姿勢0換臉新娘換臉新娘0“能看到臉的都能換”:男子AI換臉制作淫穢視頻,獲刑7年多!戀習(xí)Python0全棧Deepfake軟件來了!支持換臉換頭對口型,GitHub 1.4萬星點擊上方Python知識圈,設(shè)為星標(biāo)回復(fù)1024獲取Python資料郭一璞 發(fā)自 凹非寺量子位 報道 | 公眾號 QbitAI閱讀文本大概需要 3?分鐘點擊「閱讀原文」查看pk哥原創(chuàng)精品視頻。更高清、更全面、更強(qiáng)大。這是船新“全棧”Deep...換臉·幻夢成真換臉·幻夢成真0DeepFaceLabAI 換臉工具DeepFaceLabAI 換臉工具0揭秘!奧運奪金背后的航天技術(shù)衛(wèi)星與網(wǎng)絡(luò)0DeepFaceLabAI 換臉工具DeepFaceLab是一種利用深度學(xué)習(xí)識別來交換圖片和視頻中的人臉的工具。這種技術(shù)在特定的場合下可以做出非常逼真自然的換臉視頻。而DeepFaceLab是眾多軟件中,安裝最簡單,使用最方便,更新最快如果能換一張臉如果能換一張臉0點贊 評論 收藏 分享 手機(jī)掃一掃分享分享 舉報