【PGGAN】1、Progressive Growing of GANs for Improved Quality, Stability, and Variation 论文阅读
使用漸進(jìn)式增長GAN提升質(zhì)量、穩(wěn)定性、變化性?
paper:https://arxiv.org/abs/1710.10196
code :https://github.com/facebookresearch/pytorch_GAN_zoo
PGGAN基本思路:?
如果現(xiàn)在我們想生成超高分辨率的圖像,譬如 1024×1024 圖片,假設(shè)我們采用 StackGAN 或者是 LapGAN 的話,我們需要用到的 GANs 結(jié)構(gòu)會(huì)非常多,這樣會(huì)導(dǎo)致網(wǎng)絡(luò) 深度巨大,訓(xùn)練起來非常慢。為了解決這一問題,PGGAN(漸進(jìn)式增長 GAN)提出的想法是,我們只需要一個(gè) GANs 就能產(chǎn)生 1024×1024 圖片。但是一開始的時(shí)候 GANs 的網(wǎng)絡(luò)非常淺,只能學(xué)習(xí)低分辨率(4×4)的圖片生成,隨著訓(xùn)練進(jìn)行,我們會(huì)把 GANs 的網(wǎng)絡(luò)層數(shù)逐漸加深,進(jìn)而去學(xué)習(xí)更高分辨率的圖片生成,最終不斷的更新 GANs 從而能學(xué)習(xí)到 1024×1024 分辨率的圖片生成。
也就是說,PGGAN 與 StackGAN 和 LapGAN 的最大不同在于,后兩者的網(wǎng)絡(luò)結(jié)構(gòu)是固定的,但是 PGGAN 隨著訓(xùn)練進(jìn)行網(wǎng)絡(luò)會(huì)不斷加深,網(wǎng)絡(luò)結(jié)構(gòu)是在不斷改變的。這樣做最大的好處就是,PGGAN 大部分的迭代都在較低分辨率下完成,訓(xùn)練速度比傳統(tǒng) GANs提升了 2-6 倍。
一、訓(xùn)練方法:
1、原文中
訓(xùn)練開始于有著一個(gè)4×4像素的低空間分辨率的生成器和判別器。隨著訓(xùn)練,我們逐漸向生成器和判別器網(wǎng)絡(luò)中添加層,進(jìn)而增加生成圖片的空間分辨率。所有現(xiàn)存的層在過程中保持可訓(xùn)練性。這里N×N是指卷積層在N×N的空間分辨率上進(jìn)行操作。這個(gè)方法使得在高分辨率上也能穩(wěn)定合成并且加快了訓(xùn)練速度。右圖我們展示了六張通過使用在1024 × 1024空間分辨率上漸進(jìn)增長的方法生成的樣例圖片。
?Figure 1: Our training starts with both the generator (G) and discriminator (D) having a low spatial resolution of 4×4 pixels. As the training advances, we incrementally add layers to G and D, thus increasing the spatial resolution of the generated images. All existing layers remain trainable throughout the process. Here N × N refers to convolutional layers operating on N × N spatial resolution. This allows stable synthesis in high resolutions and also speeds up training considerably. One the right we show six example images generated using progressive growing at 1024 × 1024.
但是上述這樣的做法會(huì)有一個(gè)問題,就是從4×4的輸出變?yōu)?×8的輸出的過程中,網(wǎng)絡(luò)層數(shù)的突變會(huì)造成GANs的急劇不穩(wěn)定,使得GANs需要花費(fèi)額外的時(shí)間從動(dòng)蕩狀態(tài)收斂回平穩(wěn)狀態(tài),這會(huì)影響模型訓(xùn)練的效率。為了解決這一問題,PGGAN提出了平滑過渡技術(shù)。
Figure 2: When doubling the resolution of the generator (G) and discriminator (D) we fade in the new layers smoothly.
This example illustrates the transition from 16 × 16 images(a) to 32 × 32 images (c).
During the transition (b) we treat the layers that operate on the higher resolution like a residual block, whose weight α increases linearly from 0 to 1. Here 2× and 0.5× refer to doubling and halving the image resolution using nearest neighbor filtering and average pooling, respectively. The toRGB represents a layer that projects feature vectors to RGB colors and fromRGB does the reverse; both use 1 × 1 convolutions. When training the discriminator, we feed in real images that are downscaled to match the current resolution of the network. During a resolution transition, we interpolate between two resolutions of the real images, similarly to how the generator output combines two resolutions.
??如上圖所示,當(dāng)把生成器和判別器的分辨率加倍時(shí),會(huì)平滑的增強(qiáng)新的層。我們以從16 × 16像素的圖片轉(zhuǎn)換到32 × 32像素的圖片為例。在轉(zhuǎn)換(b)過程中,把在更高分辨率上操作的層視為一個(gè)殘缺塊,權(quán)重α從0到1線性增長。當(dāng)α為0的時(shí)候,相當(dāng)于圖 (a),當(dāng)α為1的時(shí)候,相當(dāng)于圖(c)。所以,在轉(zhuǎn)換過程中,生成樣本的像素,是從 16x16到 32x32轉(zhuǎn)換的。同理,對真實(shí)樣本也做了類似的平滑過渡,也就是,在這個(gè)階段的某個(gè)訓(xùn)練batch,真實(shí)樣本是: X =??? (1?α) +??? α。
上圖中的2× 和 0.5× 指利用最近鄰卷積和平均池化分別對圖片分辨率加倍和折半。toRGB表示將一個(gè)層中的特征向量投射到RGB顏色空間中,fromRGB正好是相反的過程;這兩個(gè)過程都是利用1 × 1卷積。當(dāng)訓(xùn)練判別器時(shí),插入下采樣后的真實(shí)圖片去匹配網(wǎng)絡(luò)中的當(dāng)前分辨率。在分辨率轉(zhuǎn)換過程中,會(huì)在兩張真實(shí)圖片的分辨率之間插值,類似于將兩個(gè)分辨率結(jié)合到一起用生成器輸出。
2、知乎中
作者采用progressive growing的訓(xùn)練方式,先訓(xùn)一個(gè)小分辨率的圖像生成,訓(xùn)好了之后再逐步過渡到更高分辨率的圖像。然后穩(wěn)定訓(xùn)練當(dāng)前分辨率【通過加權(quán)】,再逐步過渡到下一個(gè)更高的分辨率。
如上圖所示。更具體點(diǎn)來說,當(dāng)處于fade in(或者說progressive growing)階段的時(shí)候,上一分辨率(4*4)會(huì)通過resize+conv操作得到跟下一分辨率(8*8)同樣大小的輸出,然后兩部分做加權(quán),再通過to_rgb操作得到最終的輸出。這樣做的一個(gè)好處是它可以充分利用上個(gè)分辨率訓(xùn)練的結(jié)果,通過緩慢的過渡(w逐漸增大),使得訓(xùn)練生成下一分辨率的網(wǎng)絡(luò)更加穩(wěn)定。
上面展示的是Generator的growing階段。下圖是Discriminator的growing,它跟Generator的類似,差別在于一個(gè)是上采樣,一個(gè)是下采樣。這里就不再贅述。
不難想象,網(wǎng)絡(luò)在growing的時(shí)候,如果不引入progressive(fade in),那么有可能因?yàn)楸容^差的初始化,導(dǎo)致原來訓(xùn)練的進(jìn)度功虧一簣,模型不得不從新開始學(xué)習(xí),如此一來就沒有充分利用以前學(xué)習(xí)的成果,甚至還可能誤導(dǎo)。我們知道GAN的訓(xùn)練不穩(wěn)定,這樣的突變有時(shí)候是致命的。所以為了穩(wěn)定突變的分辨率,fade in(漸進(jìn))對訓(xùn)練的穩(wěn)定性來說至關(guān)重要。
借助這種growing的方式,PG-GAN的效果超級(jí)好。另外,我認(rèn)為這種progressive growing的方法比較適合GAN的訓(xùn)練,GAN訓(xùn)練不穩(wěn)定可以通過growing的方式可以緩解。不只是在噪聲生成圖像的任務(wù)中可以這么做,在其他用到GAN的任務(wù)中都可以引入這種訓(xùn)練方式。我打算將progressive growing引入到CycleGAN中,希望能夠得到更好的結(jié)果。
二、增加多樣性,防止模型崩塌:
P-GAN通過設(shè)計(jì)判別多樣性的特征人為引導(dǎo)增加多樣性,從而解決模型崩塌問題。
作者沿用improved GAN的思路,通過人為地給Discriminator構(gòu)造判別多樣性的特征來引導(dǎo)Generator生成更多樣的樣本。Discriminator能探測到mode collapse是否產(chǎn)生了,一旦產(chǎn)生,Generator的loss就會(huì)增大,通過優(yōu)化Generator就會(huì)往遠(yuǎn)離mode collapse的方向走,而不是一頭栽進(jìn)坑里。Improved GAN引入了minibatch discrimination層,構(gòu)造一個(gè)minibatch內(nèi)的多樣性衡量指標(biāo),它引入了新的參數(shù)。
為簡化計(jì)算,文中直接計(jì)算minibatch 中feature 的標(biāo)準(zhǔn)差的均值,該scalar經(jīng)擴(kuò)展為feature map大小后直接作為新feature map的一個(gè)通道。我們把這層叫做Minibatch stddev層。該層可以加到D中的任意位置,但是作者只加到了D的末端。下圖是網(wǎng)絡(luò)的最終結(jié)構(gòu)(D與G對稱):
生成對抗網(wǎng)絡(luò)總有一種捕獲訓(xùn)練數(shù)據(jù)中部分?jǐn)?shù)據(jù)分布的傾向,學(xué)術(shù)界稱之為 mode collapse,情況嚴(yán)重的話,稱之為 mode dropping。這與我們 GAN 生成對抗網(wǎng)絡(luò)的原本思想背道而馳,我們希望 GAN能夠捕捉出所有數(shù)據(jù)的分布,進(jìn)而生成器可以產(chǎn)生盡可能真實(shí)、多樣的圖片。為了應(yīng)對這種情況,作者提出了一種方法 minibatch standard deviation。
該方法的前身是?Minibatch discrimination。是生成對抗網(wǎng)絡(luò)之父 Ian Goodfellow 在 2016 年?Improved Techniques for Training GANs?中提出,具體的步驟如下圖所示:
Ian Goodfellow 在論文中曾經(jīng)說道 Minibatch Discriminator 的中心思想在于讓 discriminator 每一次看多個(gè) instance 的組合,而不是單獨(dú)的看一個(gè) instance。(這樣可以增加 mode collapse 的懲罰)。每次看多個(gè)樣本的方法,有一點(diǎn)和 Batch Normalization 類似。然而,考慮到 Minibatch Disrminator 只是作為防止 mode collapse 的工具,因此,我們對他進(jìn)一步限制,查看我們生成的圖像距離是否足夠的 '接近'。 查看樣本之間距離的方法很多,作者進(jìn)行大量的實(shí)驗(yàn),介紹的 Minibatch Disrminator 就是一個(gè)較好的衡量距離的方法。
實(shí)在看不下去了.....? 具體的看:PGGAN(ProGAN) 介紹 2022/05/06 - lucky_light - 博客園
?Progressive Growing GANs簡介+PyTorch復(fù)現(xiàn) - 知乎
論文閱讀《Progressive Growing of GANs for Improved Quality, Stability, and Variation》_framebreak的博客-CSDN博客
PGGAN(ProGAN) 介紹 2022/05/06 - lucky_light - 博客園
總結(jié)
以上是生活随笔為你收集整理的【PGGAN】1、Progressive Growing of GANs for Improved Quality, Stability, and Variation 论文阅读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rdm最新版编译mac版本
- 下一篇: ubunut 安装winehq + 官网