這是NeurIPS 2018一篇圖像翻譯的文章。目前的無監督圖像到圖像的翻譯技術很難在不改變背景或場景中多個對象交互方式的情況下將注意力集中在改變的對象上去。這篇文章的解決思路是使用注意力導向來進行圖像翻譯。下面是這篇文章的結果圖:
可以看到文章結果很好, 只有前景(對象)改變了, 而背景變化很小, 而其他的方法背景變化很大, 效果偏差.
現在介紹作者的方法,作者在cyclegan的基礎上加入另外一個注意力網絡,如下圖所示:
上圖的左邊就是斑馬轉普通馬的具體流程,首先\(s\)(斑馬)會通過\(F_{S \rightarrow T}\)(\(S\)代表Source,\(T\)代表Target)得到普通馬的預測,通知\(s\)還會通過一個注意力網絡\(A_S\)得到掩模\(s_a\),這個注意力層是想將前景突顯出來(很大的值),背景則忽略掉(很小的值),這樣與\(F_{S \rightarrow T}\)的輸出進行按點相乘,就會只凸顯出馬,而背景就是很低的值,這個掩模還有用處,通過\(1-s_a\)可以得到只凸顯背景而忽略前景的掩模,將這個掩模去與\(s\)相乘,得到source的背景,而其前景則被置於很低的值,然后兩者進行相加,得到最終預測\(s^{\prime}\)。\(s^{\prime}\)的計算公式可由下面公式表示:
由於基於cyclegan,所以還需要將\(s^{\prime}\)轉換成\(s^{\prime\prime}\), 約束\(s^{\prime\prime}\)和\(s\)盡可能相似,所以還有一個普通馬轉斑馬的過程,與斑馬轉普通馬的過程一樣,也用到了注意力網絡\(A_T\).
注意力網絡所生成的掩模為什么會與前景相關呢?如果不跟前景相關,根據上述公式知道,Foreground將不會凸顯前景,因為掩模不跟前景相關,相乘會得到低值前景,而Background將凸顯斑馬的特征,相加后還是斑馬,與普通馬差異大,無法騙過鑒別器,所以注意力網絡的掩模會學習與前景相關。
注意力網絡的輸出是\([0, 1]\)之間的連續值,而不是二進制分割掩碼,這有三點原因:
- 連續可微,可以進行訓練
- 可以讓注意力網絡在訓練過程中保持注意力的不確定性,允許收斂
- 允許網絡學習如何組合邊緣,否則可能會使前景對象看起來“粘在”邊緣上。
現在來看看損失函數(這里只介紹\(S \rightarrow T\)以及\(S \rightarrow T \rightarrow S\)的loss,\(T \rightarrow S\)和\(T \rightarrow S \rightarrow T\)是一樣的),首先是GAN固有的對抗損失:
然后是cyclegan中的一致性損失\(S \rightarrow T \rightarrow S\), 公式如下:
總的loss為:
似乎到這里就結束了,其實還沒有,作者發現翻譯后的馬現在看起來像斑馬,但整體場景是假的,因為背景仍然顯示了馬生活在草地上的地方,而不是斑馬生活在熱帶稀樹草原上的地方,要向騙過鑒別器,注意力網絡也會將背景凸顯出來,這是我們不想看到的,具體事例如下圖所示:
可以看到在30個epochs的時候,前景就差不多完全凸顯出來了,所以作者采取了two-stage的策略,第一個stage按照上述loss訓練\(F_{S}, F_{T}, A_{S}, A_{T}, D_{T}, D_{S}\), 在第二個stage的時候,中斷$ A_{S}, A_{T}$的訓練,只訓練鑒別器和生成器,當然第二個stage的loss也要變化了。
第二個stage的掩模是固定的,生成器的輸出根據掩模進行了閾值處理,處理公式如下:
其中\(\tau\)設定為0.1,對應的對抗loss的公式就變為:
總的訓練過程如下所示:
作者提出的這種方法還是有限制的,對域之間的形狀更改沒有魯棒性,如下所示:
可以看到獅子轉成斑馬域后,獅子的毛發形狀特征缺失很多,而斑馬轉獅子一樣,沒有形狀細節。
總的來說,這篇文章還是挺有意思的,值得寫寫筆記!