原論文下載下傳位址:Self-Attention Generative Adversarial Networks
該文章作者為:Han Zhang
GitHub代碼實作:pytorch實作
摘要部分:
本文提出了Self-Attention Generative Adversarial Networks,在注意力機制,遠距離依賴(long-range dependency)下來實作了圖檔生成任務。(1)傳統的卷積GAN網絡,是通過低分辨率圖像中的空間局部點來生成高分辨率細節特征。而在SAGAN中,可以使用根據所有位置的提示來生成詳細資訊。(2)因為判别器可以檢查圖像的遠端部分中的高度詳細的特征是否彼此一緻。而最近的研究表明,對生成器進行有效的調節可以影響GAN網絡的性能,是以我們在GAN網絡的generator中加入了光譜正則化(spectral normalization)。最終達到了比較好的效果。
提出問題:
convolutional GANs have much more difficulty modeling some image classes than others when trained on multi-class datasets . For example, while the state-of-the-art ImageNet GAN model excels at synthesizing image classes with few structural constraints (e.g. ocean, sky and landscape classes, which are distinguished more by texture than by geometry), it fails to capture geometric or structural patterns that occur consistently in some classes (for example, dogs are often drawn with realistic fur texture but without clearly defined separate feet)。
在多種類别的資料集上訓練時,卷積GAN網絡比其他圖像類更難以模組化,也就是說GAN網絡很容易合成具有少量結構限制的圖像(像星空,海洋...),
在目前的圖像生成模型中,一般很難處理好細節和整體的權衡
可能原因:
對此的一種可能解釋是先前的模型嚴重依賴于卷積來模拟不同圖像區域之間的依賴性。由于卷積運算符具有局部感受域,是以隻能在經過多個卷積層之後處理長距離依賴性(long-range dependency)。這可能會因各種原因阻止學習長期依賴性:
(1)小型模型可能無法找到他們之間的依賴關系;
(2)優化算法可能無法發現仔細協調多個層以捕獲這些依賴性的參數值;
(3)增加卷積核的大小可以增加網絡的表示能力,但是又會喪失卷積網絡的參數和計算效率。
解決辦法-即SAGAN的優點:
self-attention 在模拟遠端依賴性的能力、計算效率和統計效率之間展現出更好的平衡。自我關注子產品将所有位置處的特征的權重和作為該位置的響應,其中權重 - 或注意向量 - 僅以較小的計算成本來計算。
我們提出了自我注意生成對抗網絡(SAGAN),它将self-attention機制引入卷積GAN。
(1)可以很好的處理長範圍、多層次的依賴(可以很好的發現圖像中的依賴關系)
(2)生成圖像時每一個位置的細節和遠端的細節協調好
(3)判别器還可以更準确地對全局圖像結構實施複雜的幾何限制。
SAGAN:(參考了 https://blog.csdn.net/mx54039q/article/details/80896054)
文中提到大多數GAN用的都是卷積層,而卷積層隻能夠處理局部的資訊,是以本文中采用了一種non-local model,是的生成器和判别器能夠有效地建構各個區域之間的關系。
self-attention 機制
(1)f(x),g(x)和h(x)都是普通的1x1卷積,差别隻在于輸出通道大小不同;
(2)将f(x)的輸出轉置,并和g(x)的輸出相乘,再經過softmax歸一化得到一個Attention Map;
(3)将得到的Attention Map和h(x)逐像素點相乘,得到自适應的注意力feature maps.
參數的含義
(1)f(x)的輸出[C/8, W, H], g(x)的輸出[C/8, W, H],為了适應矩陣乘法,文中将一個feature map的長和寬flat成一個N維的向量 (N = W x H),即f(x)和g(x)的輸出為[C/8, N];
(2)将f(x)的轉置和g(x)矩陣乘,得到的輸出S為一個矩陣[N, N],S矩陣可以看做一個相關性矩陣;
(3)将S矩陣逐行用Softmax歸一化;
(4)将這N種Attention的方式應用到h(x)上,即每一個像素點都與整個feature map相關。
最終的輸出為:
而這樣做的原因是因為:我們想一開始學習一些簡單的任務,然後再不斷地增加複雜的任務。在SAGAN中,我們提出的注意力模型用在了generator模型和discriminator模型中,最後使用交替訓練的方式來最小化adversarial loss。
穩定訓練GAN的一些技巧:
(1)Spectral normalization for both generator and discriminator
有效地降低了訓練的計算量,使得訓練更加穩定。
(2)Imbalanced learning rate for generator and discriminator updates two-timescale update rule (TTUR)
在訓練過程中,給予G和D不同的學習速率,以平衡兩者的訓練速度
實驗結果:
(1)用來評估所使用的兩個tricks
(2)評估 Self-attention 機制