資源|帶自注意力機制的生成對抗網絡,實現效果怎樣?

2020-12-16 機器之心Pro

在前一段時間,Han Zhang 和 Goodfellow 等研究者提出添加了自注意力機制的生成對抗網絡,這種網絡可使用全局特徵線索來生成高解析度細節。本文介紹了自注意力生成對抗網絡的 PyTorch 實現,讀者也可以嘗試這一新型生成對抗網絡。

項目地址:https://github.com/heykeetae/Self-Attention-GAN

這個資源庫提供了一個使用 PyTorch 實現的 SAGAN。其中作者準備了 wgan-gp 和 wgan-hinge 損失函數,但注意 wgan-gp 有時與譜歸一化(spectral normalization)是不匹配的;因此,作者會移除模型所有的譜歸一化來適應 wgan-gp。

在這個實現中,自注意機制會應用到生成器和鑑別器的兩個網絡層。像素級的自注意力會增加 GPU 資源的調度成本,且每個像素有不同的注意力掩碼。Titan X GPU 大概可選擇的批量大小為 8,你可能需要減少自注意力模塊的數量來減少內存消耗。

目前更新狀態:

注意力可視化 (LSUN Church-outdoor)無監督設置(現未使用標籤)已應用:Spectral Normalization(代碼來自 https://github.com/christiancosgrove/pytorch-spectral-normalization-gan)已實現:自注意力模塊(self-attention module)、兩時間尺度更新規則(TTUR)、wgan-hinge 損失函數和 wgan-gp 損失函數

結果

下圖展示了 LSUN 中的注意力結果 (epoch #8):

SAGAN 在 LSUN church-outdoor 數據集上的逐像素注意力結果。這表示自注意力模塊的無監督訓練依然有效,即使注意力圖本身並不具有可解釋性。更好的圖片生成結果以後會添加,上面這些是在生成器第層 3 和層 4 中的自注意力的可視化,它們的尺寸依次是 16 x 16 和 32 x 32,每一張都包含 64 張注意力圖的可視化。要可視化逐像素注意力機制,我們只能如左右兩邊的數字顯示選擇一部分像素。

CelebA 數據集 (epoch on the left, 還在訓練中):

LSUN church-outdoor 數據集 (epoch on the left, 還在訓練中):

訓練環境:

Python 3.5+ (https://www.continuum.io/downloads)PyTorch 0.3.0 (http://pytorch.org/)

用法

1. 克隆版本庫

$ git clone https://github.com/heykeetae/Self-Attention-GAN.git$ cd Self-Attention-GAN

2. 下載數據集 (CelebA 或 LSUN)

$ bash download.sh CelebAor$ bash download.sh LSUN

3. 訓練

$ python python main.py --batch_size 6 --imsize 64 --dataset celeb --adv_loss hinge --version sagan_celebor$ python python main.py --batch_size 6 --imsize 64 --dataset lsun --adv_loss hinge --version sagan_lsun

4. 享受結果吧~

$ cd samples/sagan_celebor$ cd samples/sagan_lsun

每 100 次迭代生成一次樣本,抽樣率可根據參數 --sample_step (ex,—sample_step 100) 控制。

論文:Self-Attention Generative Adversarial Networks

論文地址:https://arxiv.org/abs/1805.08318

在此論文中,我們提出了自注意生成式對抗網絡(SAGAN),能夠為圖像生成任務實現注意力驅動的、長範圍的依存關係建模。傳統的卷積 GAN 只根據低分辨特徵圖中的空間局部點生成高解析度細節(detail)。在 SAGAN 中,可使用所有特徵點的線索來生成高解析度細節,而且鑑別器能檢查圖片相距較遠部分的細微細節特徵是否彼此一致。不僅如此,近期研究表明鑑別器調節可影響 GAN 的表現。根據這個觀點,我們在 GAN 生成器中加入了譜歸一化(spectral normalization),並發現這樣可以提高訓練動力學。我們所提出的 SAGAN 達到了當前最優水平,在極具挑戰性的 ImageNet 數據集中將最好的 inception 分數記錄從 36.8 提高到 52.52,並將 Frechet Inception 距離從 27.62 減少到 18.65。注意力層的可視化展現了生成器可利用其附近環境對物體形狀做出反應,而不是直接使用固定形狀的局部區域。

相關焦點

  • SAGAN:自注意力生成對抗網絡
    :pytorch實現摘要部分:本文提出了Self-Attention Generative Adversarial Networks,在注意力機制,遠距離依賴(long-range dependency)下來實現了圖片生成任務。
  • 原創對抗樣本與生成式對抗網絡
    對抗樣本與生成式對抗網絡對抗樣本和對抗性網絡,從最開始YannLeCun在Quora上直播時表示生成對抗性網絡近期人工智慧最值得期待的算法之一
  • 循環神經網絡的增強方法:注意力機制以及更多
    雷鋒網 AI 科技評論按:一提起 RNN,我們最容易想到的實現就是 LSTM + attention。LSTM 作為經典的網絡結構可謂是老當益壯,而另一方面注意力機制過於常見,我們甚至會覺得它是「理所當然的」。但其實注意力機制其實並不是唯一一種網絡增強的方式。
  • 輕鬆構建 PyTorch 生成對抗網絡(GAN)
    本文的課題是用機器學習方法『模仿手寫字體』,為了完成這個課題,您將親手體驗生成對抗網絡的設計和實現。『模仿手寫字體』與人像生成的基本原理和工程流程基本是一致的,雖然它們的複雜性和精度要求有一定差距,但是通過解決『模仿手寫字體』問題,可以為生成對抗網絡的原理和工程實踐打下基礎,進而可以逐步嘗試和探索更加複雜先進的網絡架構和應用場景。《生成對抗網絡》(GAN)由 Ian Goodfellow 等人在 2014年提出,它是一種深度神經網絡架構,由一個生成網絡和一個判別網絡組成。
  • 【前沿】NIPS2017貝葉斯生成對抗網絡TensorFlow實現(附GAN資料下載)
    導讀今年五月份康奈爾大學的 Andrew Gordon Wilson 和 Permutation Venture 的 Yunus Saatchi 提出了一個貝葉斯生成對抗網絡(Bayesian GAN),結合貝葉斯和對抗生成網絡,提出了一個實用的貝葉斯公式框架,用GAN來進行無監督學習和半監督式學習。
  • 深度 | 生成對抗網絡初學入門:一文讀懂GAN的基本原理(附資源)
    另外,在該文章的最後還附帶了一些能幫助初學者自己上手開發實驗的資源(包含演講、教程、代碼和論文),其中部分資源機器之心也曾有過報導或解讀,讀者可訪問對應連結查閱。你怎麼教一臺從未見過人臉的機器學會繪出人臉?計算機可以存儲拍字節級的照片,但它卻不知道怎樣一堆像素組合才具有與人類外表相關的含義。多年以來,已經出現了很多各種各樣旨在解決這一問題的生成模型。
  • 譯文 | 讓深度卷積網絡對抗:DCGAN——深度卷積生成對抗網絡
    另外深度信念網絡(Lee et al., 2009)在學習層次結構的表示上也表現出了很好的效果。2.自然圖像的生成    圖像生成模型也有了成熟的研究,這方面主要分為兩大類:參數多態和非參數多態。1.大規模圖像理解(LSUN)    在改善生成圖像模型樣本視覺質量的同時,也增加了對於訓練樣本的記憶和過擬合的關注。為證實我們的模型規模在更多的數據和跟高的解析度怎樣生成,我們在LSUN臥室數據集包含一個小的超過300萬的訓練樣本上訓練了一個模型。最近Hardt等人的分析表明怎樣快速學習模型和泛化能力有著直接的聯繫。
  • 一文讀懂生成對抗網絡GANs(附學習資源)
    例如,我們的任務可能是生成給定文章的段落摘要,那麼這種惡化源於少量的樣本無法代表在所有可能的正確答案中觀察到的變化範圍。生成對抗網絡GAN針對上面問題的回答是:用另外一個神經網絡---記分神經網絡(稱為判別器 Discriminator),它將評估生成神經網絡輸出的圖像的真實性。
  • AAAI 2020|南京大學:利用多頭注意力機制生成多樣性翻譯
    當下的神經機器翻譯(Neural Machine Translation, NMT)已經擁有很強的翻譯性能,在諸多模型之中,Transformer模型取得了最好的效果。其區別於傳統模型之處在兩個方面:自注意力機制(Self-Attention)以及多頭注意力機制(Multi-Head Attention)。
  • 資源| 用自注意力GAN為百年舊照上色:效果驚豔,多圖預警!
    首先,先來看一下 DeOldify 對舊照片的修復效果!(大部分原圖像來自 r/TheWayWeWere subreddit。)具體來說,我所做的是將以下方法組合在一起:帶自注意力機制的生成對抗網絡。生成器是一個預訓練 Unet,我將它修改為具有光譜歸一化和自注意力。這是一個非常簡單的轉換過程。不過,之前我拼命地嘗試用 Wasserstein GAN,但效果並不好,直到用上這個版本,一切都變了。
  • 圖深度學習入門教程(六)——注意力機制與圖注意力
    在生活中,注意力的應用隨處可見:我們看東西時,一般會聚焦眼前圖像中的某一地方;閱讀一篇文章時,常常會關注文章的部分文字。聽音樂時,也會根據音樂中的不同旋律,產生強度不同的情感,甚至還會記住某些旋律片段。在神經網絡中,運用注意力機制,可以起到更好的擬合效果。注意力機制可以使神經網絡忽略掉不重要的特徵向量,而重點計算有用的特徵向量。
  • 資源 | 生成對抗網絡新進展與論文全集
    生成對抗網絡(GAN)是近段時間以來最受研究者關注的機器學習方法之一,深度學習泰鬥 Yann LeCun 就曾多次談到 這種機器學習理念的巨大價值和未來前景
  • Attention 掃盲:注意力機制及其 PyTorch 應用實現
    點上方藍字計算機視覺聯盟獲取更多乾貨地址:https://www.zhihu.com/people/lucas_zhang深度學習attention 機制是對人類視覺注意力機制的仿生,本質上是一種資源分配機制。
  • 生成對抗網絡的最新研究進展
    生成對抗網絡的工作原理給定一組目標樣本,生成器試圖生成一些能夠欺騙判別器、使判別器相信它們是真實的樣本。判別器試圖從假(生成)樣本中解析真實(目標)樣本。自我關注生成對抗網絡允許對圖像生成任務進行關注驅動的遠程依賴性建模。自我注意機制是對正常卷積運算的補充。全局信息(長距離相關性)有助於生成更高質量的圖像。網絡可以選擇忽略注意機制,或者將其與普通卷積一起考慮。要獲得詳細的解釋,你可以查看他們的論文。
  • 視覺注意力機制 | 視覺注意力機制用於分類:SENet、CBAM、SKNet
    點擊上方「AI算法修煉營」,選擇加星標或「置頂」標題以下,全是乾貨前面的話上次文章中,我們主要關注了視覺應用中的Self-attention機制及其應用——Non-local網絡模塊,從最開始的了解什麼是視覺注意力機制到對自注意力機制的細節把握,再到Non-local模塊的學習。
  • 雲計算必備知識-基於PyTorch機器學習構建生成對抗網絡
    一個優秀的GAN應用需要有良好的訓練方法,否則可能由於神經網絡模型的自由性而導致輸出不理想。生成對抗網絡被廣泛應用於廣告、遊戲、娛樂、媒體、製藥等行業,可以用來創造虛構的人物、場景,模擬人臉老化,圖像風格變換,以及產生化學分子式等等。下面兩張圖片,分別展示了圖片到圖片轉換的效果,以及基於語義布局合成景物的效果。
  • 深度殘差收縮網絡:藉助注意力機制實現特徵的軟閾值化
    本文首先回顧了相關基礎知識,然後介紹了深度殘差收縮網絡的動機和具體實現,希望對大家有所幫助相關基礎深度殘差收縮網絡主要建立在三個部分的基礎之上:深度殘差網絡、軟閾值函數和注意力機制。1.3注意力機制注意力機制是近年來深度學習領域的超級研究熱點,而 Squeeze-and-Excitation Network (SENet)則是最為經典的注意力算法之一。
  • 【資源】臺大李宏毅對抗生成網絡(GAN)2018國語課程
    點上方藍字計算機視覺聯盟獲取更多乾貨在右上方 ··· 設為星標 ★,與你不見不散生成對抗網絡(GAN)是一類在無監督學習中使用的神經網絡,其有助於解決按文本生成圖像、提高圖片解析度、藥物匹配、檢索特定模式的圖片等任務。
  • 賽爾原創 | ACL20 如何使用選擇機制提升自注意力網路能力?
    本問題提出通用的基於選擇機制的自注意力網絡模型(SSANs),其可以針對每個計算表示的元素,動態地選擇其相關性的子集,以此作為輸入進行後續的自注意力網絡的計算。實驗結果顯示,SSANs模型在多個典型的自然語言處理任務上相比傳統的自注意力網絡模型獲得提升。通過多個探測任務進行分析,SSANs相比傳統的SANs模型有更強的詞序信息編碼能力以及結構信息建模能力。2.
  • 注意力機制Attention
    注意力機制(attention mechanism)Attention實質上是一種分配機制,其核心思想是突出對象的某些重要特徵。根據Attention對象的重要程度,重新分配資源,即權重,實現核心思想是基於原有的數據找到其之間的關聯性,然後突出其某些重要特徵。注意力可以被描述為將一個查詢和一組鍵值對映射到一個輸出,其中查詢、鍵、值和輸出都是向量。