學(xué)貫中西(7):介紹生成對(duì)抗網(wǎng)路(GAN)
1 GAN與NFT的結(jié)合
在上一期里,我們說明了天字第一號(hào)模型:分類器。接著本期就來看看它的一項(xiàng)有趣應(yīng)用:GAN(generative adversarial networks,生成對(duì)抗網(wǎng)絡(luò))。自從2014 年問世以來,GAN 在電腦生成藝術(shù)(generative art) 領(lǐng)域,就開始涌現(xiàn)了許多極具吸引力的創(chuàng)作和貢獻(xiàn)。GAN 如同生成藝術(shù)的科技畫筆,使用GAN 進(jìn)行創(chuàng)作特別令人振奮,常常創(chuàng)作出很特別的效果,給人們?cè)S多驚喜的感覺,例如圖1。
圖1
近年來,非同質(zhì)化代幣NFT(non-fungible token),可以讓藝術(shù)創(chuàng)作者發(fā)行其創(chuàng)作品,使得電腦生成藝術(shù)和NFT 結(jié)合起來,成為一條鳥語花香的新領(lǐng)域。換句話說,NFT 讓生成藝術(shù)獲得了很好地表達(dá)機(jī)會(huì),它將在NFT 的土壤里成長茁壯、無盡繁榮。
2 從分類器到GAN模型
GAN 是由蒙特利爾大學(xué)的Ian Goodfellow在2014 年提出來的神經(jīng)網(wǎng)路模型。GAN 通常包含兩個(gè)角色,兩者互相較量( 對(duì)抗),但又展現(xiàn)出教學(xué)相長,共同成長的美好機(jī)制和效果。這兩個(gè)角色就是:判別者(discriminator) 與生成者(generator)。其中判別者的實(shí)現(xiàn)架構(gòu)就是上一期所介紹的分類器。所以分類器在GAN 里扮演很重要的角色就是判別者。這判別者(D) 是老師角色,而生成者(G) 則是學(xué)生角色。
老師引導(dǎo)學(xué)生創(chuàng)作,兩者互相較量( 對(duì)抗),但又展現(xiàn)出教學(xué)相長的效果。例如,在圖像渲染的應(yīng)用上,它們的功能分別如下所述。
● G( 學(xué)生) 負(fù)責(zé)生成圖片。它接收一個(gè)隨機(jī)噪聲(z),或者其他條件( 如黑白底圖或邊框),然后基于這個(gè)噪聲或條件來生成新圖片。
● D( 老師) 負(fù)責(zé)辨別一張圖片的真或假。它的輸入是一張圖片,進(jìn)行辨別之后,輸出其判斷為真品或假品的概率。如果輸出值愈接近于1,代表其為真品的概率愈大;而當(dāng)輸出值愈接0,代表其為假品的概率愈大。
在GAN 模型的訓(xùn)練過程中,我們會(huì)拿真品來輸入給D,也會(huì)拿由G 生成的假品來輸入給D。其目的是要訓(xùn)練D,以便提升它判斷圖片真或假的能力。如果D 判斷正確,表示G( 學(xué)生) 生成的新作品( 假品) 被D 識(shí)破了,這意味著G 的作品不夠逼真,此時(shí)G 就會(huì)依據(jù)D 的反饋而調(diào)整其參數(shù),因而G 就成長了。反之,如果D判斷錯(cuò)誤,表示D的辨別能力不足,例如被G騙了( 將假品誤判為真品),于是D 就會(huì)調(diào)整其參數(shù),因而D 也成長了。這樣的訓(xùn)練過程,持續(xù)重復(fù)下去,GAN 里的兩個(gè)角色,互相較量( 對(duì)抗),展現(xiàn)出了教學(xué)相長的美好效果。最后,G 大幅成長了,繪制出來非常逼真的作品( 假品) 了。
圖2
3 解說<教學(xué)相長>的情境
話說有一位學(xué)生(G),想從老師(D) 學(xué)習(xí)畫漫畫( 例如龍貓故事的插畫)。但是這位老師并不會(huì)畫漫畫,那么他( 她) 又如何教學(xué)生畫漫畫呢? 在教學(xué)的過程中,兩者都是從零開始,一起成長。這可以說是一個(gè)教學(xué)相長的過程(如圖3- 圖)。一開始,老師和學(xué)生,兩者都是從零開始。
1.雖然老師不會(huì)畫,但它會(huì)拿學(xué)生作品來與龍貓漫畫書來做特征對(duì)比。
2.如果學(xué)生作品沒有龍貓漫畫的重要特征,就會(huì)感覺畫得不像。
3.于是,學(xué)生開始作畫了。
4.老師發(fā)現(xiàn)了學(xué)生作品里沒有龍貓漫畫的重要特征:胡須。
5.老師就要求學(xué)生加以改善。
6.老師又發(fā)現(xiàn)學(xué)生作品里少了龍貓漫畫的另一項(xiàng)特征:娃娃哭時(shí)嘴巴張很大。
7.老師就要求學(xué)生加以改進(jìn)。
8.兩者互相較量,又協(xié)同創(chuàng)新、教學(xué)相長。
圖3
圖4
圖5
圖6
圖7
圖8
圖9
圖10
圖11
然后,持續(xù)不斷地改進(jìn)下去,就會(huì)止于至善。圖12里,左圖是鑒賞者所握有的原圖,而右圖則是創(chuàng)作者所生成的創(chuàng)作品??梢钥闯鰜砹?,透過生成對(duì)抗協(xié)同創(chuàng)新,所生成的作品已經(jīng)幾可亂真了。
圖12
4 范例解說:學(xué)習(xí)畢加索的畫作風(fēng)格
此范例使用百度飛槳(PaddlePaddle) 框架而設(shè)計(jì)來的GAN 模型。它可以自己觀察畢加索(Picasso) 的畫作而自我學(xué)習(xí)。并且渲染很接近原圖的彩色作品了。其目標(biāo)是:訓(xùn)練了一個(gè)GAN 模型,學(xué)習(xí)畢加索的畫風(fēng)。其作法:采取Lab 顏色空間,將*.jpg 圖像,分解為L、a、b 三通道。將單通道 L 輸入給G( 生成者),由G 自己生成兩通道:new_a 和new_b。然后將[L, new_a,new_b] 匯合成為一張新的*.jpg 圖像。
在您的電腦上,需要安裝飛槳模型框架,以及相關(guān)的套件。然后準(zhǔn)備訓(xùn)練資料:即10 張畢加索的畫作(*.jpg)。
圖13
圖片大小不拘,GAN 會(huì)自動(dòng)調(diào)整為256 x 256 大小。接下來,就以這10 張圖像作為訓(xùn)練數(shù)據(jù),在飛槳環(huán)境里,對(duì)這GAN 模型展開訓(xùn)練。訓(xùn)練完畢了,就可以來檢測一下了?,F(xiàn)拿畢加索的一張畫作原圖如圖14。
圖14
這模型會(huì)先取出圖像的L 通道,也就是一張黑白底圖。
圖15
于是GAN 就基于張黑白底圖,自動(dòng)生成new_a 和new_b 兩通道的值,最后匯合出極為接近逼真的新圖像,如圖16。
圖16
于是,這個(gè)GAN 模型學(xué)習(xí)了畢加索的畫作風(fēng)格。您也可以把您自己的任何彩色(JPG) 圖片,取出L 通道,輸入給這訓(xùn)練好的模型。它就會(huì)重新彩繪出畢加索的色彩風(fēng)格了。此外,您還可以繼續(xù)拿莫內(nèi)、梵高等的畫作讓它學(xué)習(xí),就能將您的圖像彩繪出這些名家的混合風(fēng)格了。
4 結(jié)語
本文首先說明GAN 在電腦生成藝術(shù)領(lǐng)域里,將提供更精彩的貢獻(xiàn),然后說明了GAN 的架構(gòu)。GAN 里的重要角色之一就是判別者(D),它就是分類器,這在上一期里已經(jīng)詳細(xì)介紹過了,請(qǐng)您復(fù)習(xí)之。至于生成者(G)的架構(gòu),就請(qǐng)您期待本專欄的下一期繼續(xù)解說GAN 的更多魅力。
(本文來源于《電子產(chǎn)品世界》雜志2022年5月期)
評(píng)論