論文閱讀 | AttentionGAN
AttentionGAN: Unpaired Image-to-Image Translation using Attention-Guided Generative Adversarial Networks
在CycleGAN的基礎上,
生成模型不僅生成影象,也生成注意力圖
,然後用注意力圖、生成影象、原圖進行融合,得到最終生成的影象。
另,關於U-GAT-IT(實驗效果比這篇有保證):
這篇論文還有一篇前身,提出的演算法簡稱為AGGAN(Attention-Guided GAN):
AttentionGAN(Attention-Guided GAN)論文中提出的結構包含兩種方式,一種就是AGGAN,另一種我就稱為AttentionGAN了。
我就直接抓主要的講了。
AGGAN
CycleGAN的結構,不過生成網路輸出:生成內容影象+Attention Mask,然後做融合
生成網路
的網路結構可以與CycleGAN一致,差異在於輸出層:
維持原來生成影象的3通道輸出,作為 content mask
;
多加一個輸出通道,接上sigmoid啟用函式,得到 attention mask
。
最終融合得到生成影象:
其中,
為輸入影象。
然後就是判別網路有兩個:
和
(輸入4通道:
)。
以上對於生成網路
和判別網路
也是同理。
損失函式
生成網路的損失函式包含了5項:Vanilla Adversarial Loss,Attention-Guided Adversarial Loss,Cycle-Consistency Loss,Pixel Loss,Attention Loss。
整體如下:
Vanilla Adversarial Loss
就是一般的對抗損失:
這裡
。
Attention-Guided Adversarial Loss
就是加了 attention mask 的4通道輸入對抗損失:
Cycle-Consistency Loss
就是CycleGAN中的迴圈一致性損失:
Pixel Loss
就是生成影象和輸入影象的重構損失:
Attention Loss
就是限制 attention mask 上的值平滑一點:
以上各項損失的權重係數取值為:
。和CycleGAN一樣,設定50的作為訓練D網路的buffer。
AttentionGAN
AttentionGAN主要改變在網路結構上,下采樣部分的網路是共享權重的,然後上取樣有兩個分支:Content Mask生成器分支,Attention Mask生成器分支。Attention Mask生成器有兩種含義的輸出(形式上是一樣的):Foreground Attention Mask和Background Attention Mask。最終結合原圖,融合生成影象。
生成網路
生成過程為:
其中,
為輸入影象,
為 Content Mask,
為 Attention Mask,分別為Foreground Attention Mask和Background Attention Mask。
生成網路
的生成過程亦如此。
損失函式的話,就和CycleGAN一致了,
只有對抗損失、迴圈一致性損失和單位對映損失
:
其中,
,程式碼是:
。
實驗結果
AGGAN就不必用了,AttentionGAN效果沒有U-GAT-IT效果好,但是兩者思想可以合併。
將AttentionGAN的mask思想融入到U-GAT-IT中(就是將U-GAT-IT的上取樣階段多拉一個分支出來,這個分支用於生成Attention mask,做sigmoid歸一化,與U-GAT-IT對應相乘再累加生成最終圖),我實驗了5個Attention mask,最終的效果我自己人眼評估,一些細節是會有改善,例如人的眼睛(看mask圖,5張mask圖的確有人眼、人臉、背景這種類似分割出來的注意力熱力圖,有2張整體機率都比較低),但整體上感覺和U-GAT-IT差不多,不算有一個level的提升,所以差不多還是U-GAT-IT真香。
U-GAT-IT + Attention mask
U-GAT-IT + Attention mask