一、什么是GAN網(wǎng)絡
生成式對抗網(wǎng)絡(Generative adversarial network, GAN)是一種深度學習模型,是近年來復雜分布上無監(jiān)督學習最具前景的方法之一。
主要包含兩個模塊:生成器(Generator)和判別器(Discriminator)。生成器要不斷優(yōu)化自己生成的數(shù)據(jù)讓判別器判斷不出來,判別器也要進行優(yōu)化讓自己判斷得更準確。二者關系形成對抗,因此叫生成式對抗網(wǎng)絡。
二、 GAN的意義及用途
意義:GAN網(wǎng)絡可以幫助我們建立模型,相比于在已有模型上進行參數(shù)更新的傳統(tǒng)網(wǎng)絡,更具研究價值。同時,GAN網(wǎng)絡是一種無監(jiān)督的學習方式,它的泛化性非常好。用途:(1)數(shù)據(jù)生成,主要指圖像生成。圖像生成:基于訓練的模型,生成類似于訓練集的新的圖片。
文本描述生成圖像:給定一個文本描述句,生成符合描述句內(nèi)容的圖像。
(2)圖像數(shù)據(jù)增強:增強圖像中的有用信息,改善圖像的視覺效果。
(3)圖像外修復:從受限輸入圖像生成具有語義意義結構的新的視覺和諧內(nèi)容來擴展圖像邊界。
(4)圖像超分辨率:由一幅低分辨率圖像或圖像序列恢復出高分辨率圖像。
(5)圖像風格遷移:通過某種方法,把圖像從原風格轉換到另一個風格,同時保證圖像內(nèi)容沒有變化。
三、 GAN的發(fā)展
自2014年GAN的第一次提出,GAN在圖像領域、語音與自然語言處理(Natural language processing, NLP)領域以及其他領域開始快速發(fā)展,衍生出了一系列模型。其中,比較流行的有DCGAN(Deep convolutional generative adversarial networks),StyleGAN,BigGAN,StackGAN,Pix2pix,CycleGAN等。
DCGNN:這是第一次在GAN中使用卷積神經(jīng)網(wǎng)絡(Convolutional neural network, CNN)并取得了非常好的結果。它是GAN研究的一個里程碑,因為它提出了一個重要的架構變化來解決訓練不穩(wěn)定,模式崩潰和內(nèi)部協(xié)變量轉換等問題。從那時起,基于DCGAN的架構就被應用到了許多GAN架構。StyleGAN:GAN研究領域的重大突破,在面部生成任務中創(chuàng)造了新紀錄。算法的核心是風格轉移技術或風格混合。除了生成面部外,它還可以生成高質(zhì)量的汽車,臥室等圖像。BigGAN:用于圖像生成的最新進展,生成的圖像質(zhì)量足以以假亂真,這是GAN首次生成具有高保真度和低品種差距的圖像。StackGAN:2017年,由“StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks”論文中提出。作者使用StackGAN完成文本到圖像的生成過程,并得到了非常好的結果。Pix2pix:對于圖像到圖像的翻譯任務,Pix2pix也顯示出了令人印象深刻的結果。無論是將夜間圖像轉換為白天的圖像還是給黑白圖像著色,或者將草圖轉換為逼真的照片等,Pix2pix都呈現(xiàn)出很好的效果。CycleGAN:將對偶學習與GAN進行結合,能將一類圖片自動轉化為另一類圖片。其中對偶學習是一種類似于雙語翻譯任務的雙重學習機制,利用原始任務和雙重任務之間的反饋信號對模型進行訓練。與輸入必須是成對數(shù)據(jù)的Pix2pix模型相比,CycleGAN對非成對數(shù)據(jù)也能進行訓練,更具普適性。
四、 GAN的網(wǎng)絡結構
在介紹GAN網(wǎng)絡結構之前,我們先了解兩個概念:生成器和判別器。
生成器:輸入為隨機數(shù)據(jù),輸出為生成數(shù)據(jù)(通常是圖像)。通常這個網(wǎng)絡選用最普通的多層隨機網(wǎng)絡即可,網(wǎng)絡太深容易引起梯度消失或者梯度爆炸。判別器:我們把生成器生成的數(shù)據(jù)稱為假數(shù)據(jù),對應的,來自真實數(shù)據(jù)集的數(shù)據(jù)稱為真數(shù)據(jù)。判別器輸入為數(shù)據(jù)(這里指代真實圖像和生成圖像),輸出是一個判別概率。需注意的是,這里判別的是圖像的真假,而非圖像的類別。輸入一個圖片后,我們并不需要確認這張圖片是什么,而是判別圖像來源于真實數(shù)據(jù)集,還是由生成器輸出得到。網(wǎng)絡實現(xiàn)同樣可用最基本的多層神經(jīng)網(wǎng)絡。
圖1 GAN網(wǎng)絡結構
GAN 的主要思想就是在生成數(shù)據(jù)的過程中加入一個可以判斷真實數(shù)據(jù)和生成數(shù)據(jù)的判別器,使生成器和判別器相互對抗,判別器的作用是努力地分辨真實數(shù)據(jù)和生成數(shù)據(jù),生成器的作用是努力改進自己從而生成可以迷惑判別器的數(shù)據(jù)。GAN的網(wǎng)絡結構如圖1所示。GAN網(wǎng)絡結構主要包含判別器D和生成器G,判別器D和生成器G通常由包含卷積或全連接層的多層網(wǎng)絡實現(xiàn)。判別器D:使用了混合整流器線性激活函數(shù)和sigmoid激活函數(shù),輸入為真實數(shù)據(jù)x和生成器G輸出的假數(shù)據(jù)G(z)。目標是實現(xiàn)對數(shù)據(jù)來源的二分類判別:真(來源于真實數(shù)據(jù)的分布)或者假(來源于生成器的假數(shù)據(jù)G(z))生成器G:使用了maxout激活函數(shù),輸入為隨機噪聲z。目標是使自己生成的假數(shù)據(jù)G(z)在D上的表現(xiàn)D(G(z)),和真實數(shù)據(jù)x在D上的表現(xiàn)D(x)一致。GAN的訓練包括兩個方面:最大化判別器分類準確率的判別器的參數(shù)和找到最大程度混淆判別器的生成器的參數(shù)。當更新一個模型生成器的參數(shù)時,另一個模型判別器的參數(shù)是固定的,反之亦然。通常是兩個網(wǎng)絡單獨且交替訓練,先訓練判別器,再訓練生成器,再訓練判別器,如此反復,直到達到納什均衡。
圖2 生成器樣本示例
GAN網(wǎng)絡訓練用到的數(shù)據(jù)集:MNIST,the Toronto Face Database(TFD)和CIFAR-10數(shù)據(jù)集。圖2展示了經(jīng)過訓練后從生成器中抽取的樣本示例,其中,最右邊的列顯示了鄰近樣本的最近訓練示例,以證明模型沒有記憶訓練集。樣本是公平隨機抽取,而不是精心挑選。圖2中,a)表示GAN網(wǎng)絡在MNIST數(shù)據(jù)集上的生成效果,b)表示GAN網(wǎng)絡在TFD數(shù)據(jù)集上的生成效果。c)和d)均表示GAN網(wǎng)絡在CIFAR-10數(shù)據(jù)集上的生成效果,只是c)中GAN網(wǎng)絡采取全連接模型,而d)中是卷積判別器和反卷積生成器。在使用GAN進行圖像生成任務時,比較典型的網(wǎng)絡結構有DCGAN網(wǎng)絡和基于先驗知識的StackGAN網(wǎng)絡。DCGAN將CNN與GAN進行了融合,利用CNN強大的特征提取能力來提高GAN的學習效果。DCGAN主要是在網(wǎng)絡結構上對 GAN 進行了改進。生成器相當于反卷積網(wǎng)絡,而判別器相當于卷積網(wǎng)絡。DCGAN的生成器網(wǎng)絡結構如圖3所示。
圖3 DCGAN生成器網(wǎng)絡結構
DCGAN網(wǎng)絡最先采用CNN結構實現(xiàn)GAN模型,介紹了如何使用卷積層,并給出一些額外的結構上的指導建議來實現(xiàn)。另外,它還討論如何可視化GAN的特征、隱空間的插值、利用判別器特征訓練分類器以及評估結果。關于DCGAN的應用主要集中在圖像處理方面,可以說這個模型是最典型、應用最廣泛的GAN變種模型。StackGAN是一種新的堆疊生成對抗網(wǎng)絡,用于從文本描述合成照片真實感圖像,其網(wǎng)絡結構如圖4。StackGAN首次從文本描述生成256×256分辨率的圖像,且生成的圖像具有照片般逼真的細節(jié)。StackGAN網(wǎng)絡結構分為兩個部分:Stage-ⅠGAN和Stage-ⅡGAN。 Stage-ⅠGAN:根據(jù)給定的文本描述,繪制對象的原始形狀和原始顏色,并根據(jù)隨機噪聲向量繪制背景布局,生成低分辨率圖像。生成器G0:首先是經(jīng)過一個CA(調(diào)節(jié)增強技術)模塊,對文本嵌入進行降維。StackGAN沒有直接將降維后的文本嵌入作為condition,而是將它接了一個全連接層,并從得到的獨立的高斯分布中隨機采樣得到高斯條件變量。接著,將高斯條件變量與噪聲向量經(jīng)過級聯(lián)得到的一組向量輸入到生成器中,然后,經(jīng)過上采樣之后生成一張64*64的圖像。判別器D0:首先,文本嵌入經(jīng)過一個全連接層被壓縮到128維,然后經(jīng)過空間復制將其擴成一個4×4×128的張量。同時,圖像會經(jīng)過一系列的下采樣到4×4。然后,圖像過濾映射會連接圖像和文本張量的通道。隨后,張量會經(jīng)過一個1×1的卷積層去連接跨文本和圖像學到的特征。最后,會通過只有一個節(jié)點的全連接層去產(chǎn)生圖像真假的概率。
圖4 StackGAN網(wǎng)絡結構
Stage-Ⅱ GAN:
修正第一階段低分辨率圖像的缺陷,通過再次文本描述來完成對象的細節(jié),生成了高分辨率的真實感圖像。與通常的GAN不同,本階段不使用隨機噪聲。
生成器G:將第二階段生成器設計為一個具有殘差塊的編解碼網(wǎng)絡。Stage-Ⅰ GAN生成的64×64的圖片,加上對文本嵌入進行CA操作得到的高斯條件變量,與前一階段相似,高斯條件變量被擴成一個16×16×128的張量(綠色部分)。同時,由前一個GAN生成的64×64的圖像,會經(jīng)過下采樣變成16×16(紫色部分)。連接圖像特征和文本特征后,經(jīng)過殘差塊,再上采樣,生成圖片。判別器D:對于判別器,其結構類似于第一階段判別器,僅具有額外的下采樣塊。另外,為了明確地強制GAN更好地學習圖像和條件文本之間的對齊,我們在兩個階段都采用了匹配感知判別器。StackGAN訓練用到的數(shù)據(jù)集:CUB,Oxford-102和MS COCO數(shù)據(jù)集。圖5中a),b)和c)分別展示了基于這三個數(shù)據(jù)集的測試集,StackGAN網(wǎng)絡生成的圖像示例。總體來說,StackGAN生成的高分辨率的圖像,細節(jié)信息較豐富,且能較好地反映相應的文本描述。
圖5 StackGAN網(wǎng)絡生成的圖像示例
五、 GAN的實際應用示例圖
(1)生成人臉:
圖6 基于GAN方法生成人臉
(2)語義圖像-圖片轉化:
圖7基于GAN方法將語義圖像轉化成圖片
(3)生成動漫人物形象:
圖8基于GAN方法生成動漫人物
(4)路況預測:圖9中,奇數(shù)列顯示解碼圖像,偶數(shù)列顯示目標圖像:
圖9基于GAN方法的路況預測結果
(5)人臉圖像修復:圖10中,依次顯示真實圖像,缺失圖像,修復圖像:
圖10基于GAN方法修復人臉圖像
審核編輯 黃昊宇
-
深度學習
+關注
關注
73文章
5466瀏覽量
120891
發(fā)布評論請先 登錄
相關推薦
評論