Github大热论文 | U-GAT-IT:基于GAN的新型无监督图像转换
作者丨武廣
學校丨合肥工業大學碩士生
研究方向丨圖像生成
生成對抗網絡(GAN)在這幾年的發展下已經漸漸沉淀下來,在網絡的架構、訓練的穩定性控制、模型參數設計上都有了指導性的研究成果。我們可以看出 17、18 年大部分關于 GAN 的有影響力的文章多集中在模型自身的理論改進上,如 PGGAN、SNGAN、SAGAN、BigGAN、StyleGAN 等,這些模型都還在強調如何通過隨機采樣生成高質量圖像。19 年關于 GAN 的有影響力的文章則更加關注 GAN 的應用上,如 FUNIT、SPADE 等已經將注意力放在了應用層,也就是如何利用 GAN 做好圖像翻譯等實際應用任務。
學術上的一致性也暗示了 GAN 研究的成熟,本文主要介紹一篇利用 GAN 的新型無監督圖像轉換論文。
論文引入
圖像到圖像轉換可以應用在很多計算機視覺任務,圖像分割、圖像修復、圖像著色、圖像超分辨率、圖像風格(場景)變換等都是圖像到圖像轉換的范疇。生成對抗網絡?[1]?不僅僅在模型訓練的收斂速度上,同時在圖像轉換質量上展示了優越的結果。
這些優越性能相比?Pixel CNN、VAE、Glow 都是具有很大競爭力的。所以近年來的圍繞 GAN 實現圖像翻譯的研究是很多的,例如?CycleGAN、UNIT、MUNIT、DRIT、FUNIT、SPADE。圖像翻譯是 GAN 鋪開應用的第一步,跨模態間的轉換,文本到圖像、文本到視頻、語音到視頻等,凡是這種端到端,希望實現一個分布到另一個分布轉換的過程,GAN 都是可以發揮一定的作用的。
回歸到現實,圖像到圖像的轉換到目前為止還是具有一定挑戰性的,大多數的工作都圍繞著局部紋理間的轉換展開的,例如人臉屬性變換、畫作的風格變換、圖像分割等,但是在圖像差異性較大的情況下,在貓到狗或者是僅僅是語義聯系的圖像轉換上的表現則不佳的。
這就是圖像轉換模型的適用域問題了,實現一個具有多任務下魯棒的圖像轉換模型是十分有必要的。本文將要介紹的?U-GAT-IT?正是為了實現這種魯棒性能設計的,我們先宏觀的看一下文章采用何種方式去實現這種魯棒性能。
首先是引入注意力機制,這里的注意力機制并不傳統的 Attention 或者 Self-Attention 的計算全圖的權重作為關注,而是采用全局和平均池化下的類激活圖(Class Activation Map-CAM)[2]?來實現的,CAM 對于做分類和檢測的應該很熟悉,通過 CNN 確定分類依據的位置,這個思想和注意力是一致的,同時這對于無監督下語義信息的一致性判斷也是有作用的,這塊我們后續再進行展開。
有了這個注意力圖,文章再加上自適應圖層實例歸一化(AdaLIN),其作用是幫助注意力引導模型靈活控制形狀和紋理的變化量。有了上述的兩項作用,使得 U-GAT-IT 實現了魯棒下的圖像轉換??偨Y一下 U-GAT-IT 的優勢:
提出了一種新的無監督圖像到圖像轉換方法,它具有新的注意模塊和新的歸一化函數 AdaLIN。
注意模塊通過基于輔助分類器獲得的注意力圖區分源域和目標域,幫助模型知道在何處進行密集轉換。
AdaLIN 功能幫助注意力引導模型靈活地控制形狀和紋理的變化量,增強模型魯棒性。
模型結構
端到端模型最直觀的展示就是模型結構圖,我們看一下 U-GAT-IT 實現結構:
我們先把我們能直觀看懂的部分做一個介紹,模型分為生成器和判別器,可以看到生成器和判別器的結構幾乎相同,生成器好像多了一點操作(這多的這點就是 AdaLIN 和 Decoder部分),我們分析生成器,首先是對端的輸入端進行圖像的下采樣,配合殘差塊增強圖像特征提取,接下來就是注意力模塊(這部分乍一看,看不出具體細節,后續分析),接著就是對注意力模塊通過 AdaLIN 引導下殘差塊,最后通過上采樣得到轉換后的圖像。對于判別器相對于生成器而言,就是將解碼過程換成判別輸出。
重點來了,就是如何實現圖像編碼后注意力模塊以及 AdaLIN 怎樣引導解碼得到目標域圖像的呢?
CAM & Auxillary classifier
對于這部分計算 CAM,結合模型結構圖做進一步理解:
由上圖,我們可以看到對于圖像經過下采樣和殘差塊得到的? Encoder Feature map 經過 Global average pooling 和 Global max pooling 后得到依托通道數的特征向量。創建可學習參數 weight,經過全連接層壓縮到 B×1 維,這里的 B 是 BatchSize,對于圖像轉換,通常取為 1。
對于學習參數 weight 和 Encoder Feature map 做 multiply(對應位想乘)也就是對于 Encoder Feature map 的每一個通道,我們賦予一個權重,這個權重決定了這一通道對應特征的重要性,這就實現了 Feature map 下的注意力機制。
對于經過全連接得到的 B×1 維,在 average 和 max pooling 下做 concat 后送入分類,做源域和目標域的分類判斷,這是個無監督過程,僅僅知道的是源域和目標域,這種二分類問題在 CAM 全局和平均池化下可以實現很好的分類。
當生成器可以很好的區分出源域和目標域輸入時在注意力模塊下可以幫助模型知道在何處進行密集轉換。將 average 和 max 得到的注意力圖做 concat,經過一層卷積層還原為輸入通道數,便送入 AdaLIN 下進行自適應歸一化。
AdaLIN
由上圖,完整的 AdaLIN 操作就是上圖展示,對于經過 CAM 得到的輸出,首先經過 MLP 多層感知機得到?γ,β,在 Adaptive Instance Layer resblock 中,中間就是 AdaLIN 歸一化。
AdaLIN 正如圖中展示的那樣,就是 Instance Normalization 和 Layer Normalization 的結合,學習參數為?ρ,論文作者也是參考自 BIN?[3]?設計。AdaIN 的前提是保證通道之間不相關,因為它僅對圖像 map 本身做歸一化,文中說明 AdaIN 會保留稍多的內容結構,而 LN 則并沒有假設通道相關性,它做了全局的歸一化,卻不能很好的保留內容結構,AdaLIN 的設計正是為了結合 AdaIN 和 LN 的優點。
判別器
文章的源碼中,判別器的設計采用一個全局判別器(Global Discriminator)以及一個局部判別器(Local Discriminator)結合實現,所謂的全局判別器和局部判別器的區別就在于全局判別器對輸入的圖像進行了更深層次的特征壓縮,最后輸出的前一層,feature map 的尺寸達到了。
根據感受野的傳遞,這個尺度卷積下的感受野是作用在全局的(感受野超過了圖像尺寸),讀者可以自行按照論文給出的網絡設計參數進行計算(kernel 全為 4),(我算的結果是 286×286 比輸入圖像 256×256 要大)對于局部判別器,最后輸出的前一層,feature map 的尺寸達到了,此時感受野是達不到圖像尺寸(我算的結果是 70×70),這部分稱為局部判別器。
最后通過 extend 將全局和局部判別結果進行連接,此處要提一下,在判別器中也加入了 CAM 模塊,雖然在判別器下 CAM 并沒有做域的分類,但是加入注意力模塊對于判別圖像真偽是有益的,文中給出的解釋是注意力圖通過關注目標域中的真實圖像和偽圖像之間的差異來幫助進行微調。
損失函數
對于利用 GAN 實現圖像到圖像轉換的損失函數其實也就那幾個,首先是 GAN 的對抗損失,循環一致性損失,以及身份損失(相同域之間不希望進行轉換),最后說一下 CAM 的損失。CAM 的損失主要是生成器中對圖像域進行分類,希望源域和目標域盡可能分開,這部分利用交叉熵損失:?
在判別器中,也對真假圖像的 CAM 進行了對抗損失優化,主要是為了在注意圖上進一步區分真假圖像,最后得到完整的目標函數:
Trick 和 AdaLIN 實現代碼
作者公布的源碼如果大家嘗試運行可能會參數爆內存,這里的罪魁禍首發生在計算自適應圖層實例歸一化下的 MLP 直接從卷積展平送到全連接層中參數過大,大致計算一下,從 1×64×64×256 直接展平的尺寸是 1×1048576 再進行全連接操作,這個計算量是很大的,為了減小計算量,可以在這一步先對 map 進行 global average pooling 再進行全連接操作。
對于生成器 Encoder 部分的歸一化采用 IN,Decoder 采用 LIN,判別器網絡加上譜歸一化限制(生成器并沒有加),我們接下來放上論文的核心 AdaLIN 的 tensorflow 下代碼實現:
def?adaptive_instance_layer_norm(x,?gamma,?beta,?smoothing=True,?scope='instance_layer_norm'):
????with?tf.variable_scope(scope):
????????ch?=?x.shape[-1]
????????eps?=?1e-5
????????#?計算Instance?mean,sigma?and?ins
????????ins_mean,?ins_sigma?=?tf.nn.moments(x,?axes=[1,?2],?keep_dims=True)
????????x_ins?=?(x?-?ins_mean)?/?(tf.sqrt(ins_sigma?+?eps))
????????#?計算Layer?mean,sigma?and?ln
????????ln_mean,?ln_sigma?=?tf.nn.moments(x,?axes=[1,?2,?3],?keep_dims=True)
????????x_ln?=?(x?-?ln_mean)?/?(tf.sqrt(ln_sigma?+?eps))
????????#?給定rho的范圍,smoothing控制rho的彈性范圍
????????if?smoothing:
????????????rho?=?tf.get_variable("rho",?[ch],?initializer=tf.constant_initializer(0.9),
??????????????????????????????????constraint=lambda?x:?tf.clip_by_value(x,?
??????????????????????????????????clip_value_min=0.0,?clip_value_max=0.9))
????????else:
????????????rho?=?tf.get_variable("rho",?[ch],?initializer=tf.constant_initializer(1.0),
??????????????????????????????????constraint=lambda?x:?tf.clip_by_value(x,
??????????????????????????????????clip_value_min=0.0,?clip_value_max=1.0))
????????#?rho?=?tf.clip_by_value(rho?-?tf.constant(0.1),?0.0,?1.0)
????????x_hat?=?rho?*?x_ins?+?(1?-?rho)?*?x_ln
????????x_hat?=?x_hat?*?gamma?+?beta
????????return?x_hat
實驗
作者在五個不成對的圖像數據集評估了方法的性能,有比較熟悉的馬和斑馬,貓到狗,人臉到油畫,風格場景還有就是最讓我感興趣的作者團隊創建的女性到動漫的數據集,不過可惜的是這個數據集作者并沒有公布。
在定性和定量上,U-GAT-IT 都展示了優越的結果:
總結
論文提出了無監督的圖像到圖像轉換(U-GAT-IT),其中注意模塊和 AdaLIN 可以在具有固定網絡架構和超參數的各種數據集中產生更加視覺上令人愉悅的結果。輔助分類器獲得的關注圖可以指導生成器更多地關注源域和目標域之間的不同區域,從而進行有效的密集轉換。此外,自適應圖層實例規范化(AdaLIN)可以進一步增強模型在不同數據集下的魯棒性。
參考文獻
[1] Goodfellow I, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets[C]//Advances in neural information processing systems. 2014: 2672-2680.
[2] B. Zhou, A. Khosla, A. Lapedriza, A. Oliva, and A. Torralba. Learning deep features for discriminative localization. In Computer Vision and Pattern Recognition (CVPR), 2016 IEEE Conference on, pages 2921–2929. IEEE, 2016. 2, 3
[3] H. Nam and H.-E. Kim. Batch-instance normalization for adaptively style-invariant neural networks. arXiv preprint arXiv:1805.07925, 2018. 2, 3
點擊以下標題查看更多往期內容:?
Grid R-CNN Plus:基于網格的目標檢測演化
從動力學角度看優化算法:GAN的第三個階段
近期值得讀的10篇GAN進展論文
天秤座R-CNN:全面平衡的目標檢測器
萬字綜述之生成對抗網絡(GAN)
CVPR 2019?| 基于空間自適應歸一化的圖像語義合成
CVPR 2019 | BASNet:關注邊界的顯著性檢測
全新缺失圖像數據插補框架—CollaGAN
#投 稿 通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
??來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
? 投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
?
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點擊 |?閱讀原文?| 下載論文 & 源碼
總結
以上是生活随笔為你收集整理的Github大热论文 | U-GAT-IT:基于GAN的新型无监督图像转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 直播报名 | 小身材大能量!用英伟达智能
- 下一篇: 那个双非本科,还想转算法岗的姑娘,最后怎