一.論文采用的新方法
1.AttGan中skip connect的侷限性
由於encoder中對特徵的下采樣實際上可能損失部分特徵,我們在decoder中進行上採樣和轉置卷積也無法恢復所有特徵,因此AttGan考慮採用了skip connect,這種跳躍連接最初是resnet中爲了解決網絡層數過深帶來的梯度爆炸和梯度消失無法訓練的問題,筆者認爲在人臉屬性編輯這裏並非是這一用途,而是爲了保持最初人臉的特徵。但是這一做法仍然具有其侷限性,根據實驗,重建圖像的質量明顯上升,但是控制圖像屬性的能力卻有所下降。
爲了解決這一問題,在這篇論文中,提出了採用selective transfer units來自適應的選擇encoder屬性的辦法解決這一問題。
(對上面這一點的理解,我諮詢了師兄,得到了解釋。即encoder的結果有一些是不需要改變的,因爲有的屬性並不需要更改,這個時候把它skip過去就會有利於這部分區域的重建,但如果是需要改變的區域,encoder這塊區域的特徵直接skip過去的話,decoder就會傾向於利用這塊的特徵,因爲還有GAN Loss和重建Loss在,所以就會導致修改效果很差。所以加上STU,就是讓他自適應的選擇不需要改的區域傳到decoder,而讓需要改的區域用的decoder改之後的feature來做生成)
2.採用差分屬性向量作爲輸入
在AttGan和StarGan中,都是採用源圖像和目標屬性完整向量作爲generator的輸入的,但是這樣操作可能會改變一些我們無需改變的屬性,爲了解決這一問題,我們將差分向量作爲generator的輸入
這麼做的好處不僅能使該向量簡化,因爲目標向量和源向量往往只有細微的不同,從而簡化訓練過程。而且可以提高生成圖像的質量,並且差分向量在實際中更好提供(筆者對這一點持懷疑態度)。
3.選擇性轉換單元(Selective Transfer Units)
上面我們已經講過了採用STU的原因,STU的結構是在GRU的基礎上修改而成的。
首先我們採用轉置卷積對連接的l+1層的隱狀態和差分向量做處理,改變其size。
然後我們用STU自適應的改變隱狀態和transformed encoder feature。
重置門r和更新門z的引入使得能自適應的改變encoder feature。
STU GRU
上面給出了STU和GRU的結構圖,STU和後者的不同是STU同時輸出了sl和flt,而後者只輸出了flt,而後者只輸出了flt。至於這麼做的原因,在後面介紹網絡結構的時候就可一目瞭然
二.論文網絡架構
本網絡主要由generator和discriminator兩部分組成,上面展示了generator的主要結構,左邊是encoder,右邊是decoder。encoder由5個卷積層組成,decoder由5個反捲積層組成。STU用在除了第五個卷積層後。而discriminator有兩部分att和adv兩部分,adv用來判斷圖像的真假,att和adv共享卷積參數,並用全連接層用來預測生成圖的屬性。
針對STU,其作用表示如下:
除了第五個encoder的結果,其餘的encoder feature都通過了STU的處理,部署在不同層的STU不共享參數。
我們將encoder看成是一個整體,那麼其功能可以寫作
對於整個generator,其功能爲
三.損失函數
1.Reconstruction loss
當target圖像和source圖像的屬性完全相同時,reconstruction loss顯然爲0。根據這一基準,論文定義rec loss爲
2.Adversarial loss
這裏採用了WGAN-GP的方法定義adv loss。
3.Attribute manipulation loss
這部分爲屬性編輯誤差,採用了交叉熵損失函數。
4.模型總優化目標
四.代碼解析