|
|
||
|---|---|---|
| .. | ||
| GANPyTorch.ipynb | ||
| GANTF.ipynb | ||
| README.md | ||
| StyleTransfer.ipynb | ||
| StyleTransfer_Keras.ipynb | ||
README.md
生成對抗網絡
在上一節中,我們學習了生成模型:能夠生成與訓練數據集中的圖像相似的新圖像的模型。VAE 是生成模型的一個很好的例子。
課前測驗
然而,如果我們嘗試生成一些真正有意義的東西,比如一幅合理分辨率的畫作,使用 VAE,我們會發現訓練效果並不理想。針對這種情況,我們需要了解另一種專門針對生成模型的架構——生成對抗網絡,簡稱 GAN。
GAN 的核心思想是使用兩個神經網絡相互對抗進行訓練:
圖片來源:Dmitry Soshnikov
✅ 一些術語:
- 生成器是一個網絡,它接收一些隨機向量,並生成圖像作為結果。
- 判別器是一個網絡,它接收一張圖像,並判斷該圖像是真實圖像(來自訓練數據集)還是由生成器生成的。它本質上是一個圖像分類器。
判別器
判別器的架構與普通的圖像分類網絡並無不同。最簡單的情況下,它可以是一個全連接分類器,但更常見的是使用卷積網絡。
✅ 基於卷積網絡的 GAN 被稱為 DCGAN
一個 CNN 判別器由以下層組成:幾個卷積+池化層(空間尺寸逐漸減小),以及一個或多個全連接層以獲得“特徵向量”,最後是一個二元分類器。
✅ 在這裡,“池化”是一種減少圖像尺寸的技術。“池化層通過將一層中神經元簇的輸出合併為下一層中的單個神經元來減少數據的維度。” - 來源
生成器
生成器稍微複雜一些。你可以將其視為一個反向的判別器。從一個潛在向量(代替特徵向量)開始,它有一個全連接層將其轉換為所需的尺寸/形狀,接著是反卷積+上採樣。這類似於自編碼器的解碼器部分。
✅ 由於卷積層是通過線性濾波器遍歷圖像來實現的,反卷積本質上與卷積相似,可以使用相同的層邏輯來實現。
圖片來源:Dmitry Soshnikov
訓練 GAN
GAN 被稱為對抗性,因為生成器和判別器之間存在持續的競爭。在這種競爭中,生成器和判別器都會改進,從而使網絡學習生成越來越好的圖像。
訓練分為兩個階段:
- 訓練判別器。這個任務相對簡單:我們通過生成器生成一批圖像,標記為 0(代表假圖像),並從輸入數據集中取一批圖像(標記為 1,真實圖像)。我們獲得一些判別器損失,並進行反向傳播。
- 訓練生成器。這稍微複雜一些,因為我們無法直接知道生成器的期望輸出。我們將整個 GAN 網絡(由生成器和判別器組成)輸入一些隨機向量,期望結果為 1(對應於真實圖像)。然後我們凍結判別器的參數(此步驟不希望判別器被訓練),並進行反向傳播。
在此過程中,生成器和判別器的損失通常不會顯著下降。在理想情況下,它們應該呈現振盪,表明兩個網絡都在改進其性能。
✍️ 練習:GANs
GAN 訓練的問題
GAN 以訓練困難著稱。以下是一些常見問題:
- 模式崩塌。這指的是生成器學會生成一個成功欺騙判別器的圖像,而不是生成多樣化的不同圖像。
- 對超參數的敏感性。通常你會發現 GAN 根本無法收斂,然後突然通過降低學習率實現收斂。
- 保持生成器和判別器之間的平衡。在許多情況下,判別器的損失可能會迅速降到零,導致生成器無法進一步訓練。為了解決這個問題,我們可以嘗試為生成器和判別器設置不同的學習率,或者在判別器損失已經很低時跳過判別器的訓練。
- 高分辨率訓練。與自編碼器的問題類似,這個問題是由於重建太多層的卷積網絡導致的伪影。通常通過所謂的漸進式增長來解決,首先在低分辨率圖像上訓練幾層,然後“解鎖”或添加層。另一種解決方案是添加層之間的額外連接並同時訓練多個分辨率——詳情請參閱這篇多尺度梯度 GANs 論文。
風格遷移
GAN 是生成藝術圖像的一種絕佳方式。另一種有趣的技術是所謂的風格遷移,它將一張內容圖像重新繪製成不同的風格,應用來自風格圖像的濾鏡。
其工作原理如下:
- 我們從一張隨機噪聲圖像開始(或者從內容圖像開始,但為了便於理解,從隨機噪聲開始更容易)
- 我們的目標是創建一張圖像,使其同時接近內容圖像和風格圖像。這由兩個損失函數決定:
- 內容損失基於 CNN 從當前圖像和內容圖像的某些層提取的特徵計算
- 風格損失通過使用 Gram 矩陣在當前圖像和風格圖像之間進行巧妙計算(更多細節請參閱示例 Notebook)
- 為了使圖像更平滑並去除噪聲,我們還引入了變異損失,它計算相鄰像素之間的平均距離
- 主要的優化循環使用梯度下降(或其他優化算法)調整當前圖像以最小化總損失,總損失是所有三個損失的加權和。
✍️ 示例:風格遷移
課後測驗
結論
在本課中,你學習了 GANs 及其訓練方法。你還了解了這類神經網絡可能面臨的特殊挑戰,以及一些解決這些挑戰的策略。
🚀 挑戰
使用你的圖像運行風格遷移 Notebook。
回顧與自學
參考以下資源,了解更多關於 GANs 的信息:
- Marco Pasini,我一年訓練 GANs 的 10 個教訓
- StyleGAN,一個值得考慮的 GAN 架構
- 在 Azure ML 上使用 GAN 創建生成藝術
作業
重新訪問本課程相關的兩個 Notebook 中的一個,並使用自己的圖像重新訓練 GAN。你能創造出什麼?