Y-Autoencoders: disentangling latent representations via sequential-encoding

論文鏈接:https://arxiv.org/pdf/1907.10949.pdf
代碼鏈接:https://github.com/mpatacchiola/Y-AE

前言

Y-Autoencoders是2019年CVPR上的一篇的論文,這篇論文的創新點在於之前的Autoencoders的輸入和輸出一致,所以其主要用於圖像壓縮方面,對於Autoencoders的架構不清楚的可以參考我這篇博客,但是本文首次使用Autoencoders進行圖像之間的翻譯,也即是輸出和輸出不一致而且取得了較好的結果。

論文架構


1:簡介 Y-Autoencoders是Autoencoders的一種變形,原始的Autoencoders的輸入圖像和輸出圖像一致,所以其主要用在數據的降維方面。按照原論文的說法Y-Autoencoders能夠用在(圖像翻譯,image-to-image),分割圖像風格和內容(separation of style and content) 。我們結合原論文的架構圖分析一下模型架構的意義。爲了便於理解我們首先定義一下模型中的相關參數,f表示編碼器,g表示解碼器,i表示隱層特徵,y,e表示圖像的類別:

2:編碼器部分
模型的輸入部分是系統輸入一張圖像x,然後經過編碼器f得到兩個隱層特徵,e和i。相對於之前的Autoencoders中的而言,Y-Autoencoders的編碼器的輸出部分增加了一個類別標籤e,而且類別標籤e和原始的標籤計算一個損失值。該損失函數的保證了編碼器具有分類功能,進而保證每張圖像經過編碼器之後輸出的隱層特徵i具有一定意義。

3:圖像重構
圖像重構部分爲上圖左邊,圖像標籤y和隱層特徵i經過解碼器g生成圖像Xi,Xi和原始圖像X使用均方誤差保證保證輸入圖像和輸出圖像一致。對於這個操作的理解就是輸入一張圖像,然後得到了一個低維向量i,然後低維向量i又能恢復到原始圖像。通過使用均方誤差重構圖像的損失,保證了低維向量i具有圖像本身的特徵(也即是其能恢復到原始的圖像之中)。

4: 圖像轉化:image-to-image
在圖像重構部分,我們知道了隱層特徵i是一個具有輸入圖像原始特徵的向量。現在我們探究一下Y-Autoencoders是如何實現不同類別圖像之間的轉化的。圖像轉化部分即是上圖的右側部分,將隱層特徵i和一個相反的標籤y~放到解碼器中得到生成圖像Xr。
注意此時理論上已經能夠實現從男人到女人的轉化了。但是爲什麼論文後面還要加上編碼器f呢?我認爲是有兩個原因:第一模式坍塌,第二僅在以上的架構下很難實現圖像類別之間的變化。話說之前我曾做過類似的實驗PS(鄙人研一時的論文),整體架構和上述的方法一致,在mnist數據集上的時候,我發現能夠實現輸入圖像轉化成不同類別。但是將數據集換成celeba的時候很難轉化,而且模型坍塌嚴重。但是得出的結論是經過編碼器之後得到的低維向量非常接近,所以相對於使用隨機噪音而言,其更有可能加劇模式坍塌。而且向量非常接近的話對應的y標籤起到的作用就會更小。

生成圖像和重構圖像的編碼操作
我們可以看到在得到重構圖像Xi和生成圖像Xr之後,對於這兩幅圖像我們使用編碼器得到兩者的對應的隱層特徵Ii和Ir。
按照我上面說的,我們假設其存在的目的是爲了解決模式坍塌和圖像轉化困難的問題。然後我們推測一下其爲何能解決上述問題。
首先我們可以確定的是左圖的重構圖像Xi能夠保證其和原始圖像非常接近。然後生成圖像Xr呢?其可能存在模式坍塌生成一種圖像。但是我們通過增加一類損失函數保證Xr和Xi接近,這樣的話就能保證生成的圖像和原始圖像的特徵要接近,進而解決方式坍塌。

損失函數

我們把該篇論文的架構分成了四個部分,然後我們看一下每個部分對應的損失函數怎麼設計的。

編碼器部分的損失函數
編碼器部分的損失函數只有計算類別損失值,其實對於深度學習中對於類別的損失函數,盲猜就是交叉熵。

在這裏插入圖片描述
圖像重構的損失函數
圖像重構部分是計算真實圖像和重構圖像的差異,這個一般都是均方誤差。如下所示。
在這裏插入圖片描述
圖像轉化的損失函數
此部分要保證的是轉化後的圖像要儘可能符合我輸入的標籤,按照上圖也即是儘可能的把我的圖像判斷爲男人。其損失函數即爲標籤。
在這裏插入圖片描述
生成圖像和重構圖像的編碼的損失函數
對於這部分的損失函數我們可以這樣理解,重構圖像部分的損失函數的目的是我儘可能的使其保留原始女性圖像的特徵。生成圖像的部分的目的是儘可能的使的生成圖像接近男人。通過訓練最後的生成圖像既有了原始圖像的特徵有看起來像個男人。
在這裏插入圖片描述
總損失函數
總的損失函數即爲以上所有損失函數的總和,但是作者在論文中也討論生成圖像和重構圖像的編碼的損失函數和圖像轉化的損失函數這兩部分損失函數的意義,做法就是把對應的係數設置爲0或者1.
在這裏插入圖片描述

總結

我這人讀論文大多隻看結果的,但是單論結果而言這篇文章不算是多麼驚豔,而且AE的一個通病生成圖像模糊這個問題也沒解決。但是單單是從能夠使用Autoencoders進行圖像翻譯方面,這點還是不錯的。

在這裏插入圖片描述

發佈了99 篇原創文章 · 獲贊 75 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章