使用 StarGAN 轉換動漫人物的髮色

翻譯 [Lento] 所寫的 [StarGANを用いた髪色変換]。

翻譯自:StarGANを用いた髪色変換 感謝 Lento 授權翻譯,

若對此後續任務有興趣可與作者討論 Twitter_NieA7_3170

由於我挺喜歡動漫的,

所以一直都有關注 Lento 的文章,

想說翻譯可以給更多入門的人理解,

順便練習日文,

基於上述種種原因,

所以會開始陸續翻譯,

以及會稍微重構一下原文,

希望能幫助到有需要的人。

簡介

本次的目的是將角色的髮色進行轉換(ex. 黒→白),

雖然使用 CycleGAN 可以將動漫角色中的一部分進行轉換,

ex. 將黑頭髮轉成白頭髮,

但是他只能適用於兩個 Domain(這邊可以暫時理解成要學習的特徵空間),

以髮色為例 CycleGAN 只能轉變 黑 → 白 以及 白 → 黑,

意味著如果要轉換成其他顏色的話,

就需要重新訓練一個新的生成器。

對此研究出一個可學習多個不同 Domain 的生成器是必要的,

StarGAN 的出現恰好解決了這個問題,

只要一個生成器就能生成不同 Domain 的圖像,

在此任務來說就是只要一個模型就能轉換角色為不同髮色,

不再像以往 CycleGAN 只能受限於兩個 Domain 的困境。

因此本次會利用 StarGAN 來進行動漫角色的髮色轉變。

StarGAN

詳細的說明會省略,

簡單的來說生成器會串接 Domain label 來生成圖像,

StarGAN 與原生的 GAN 不同之處在於,

原生辨別器是學習辨別是真或假(Real / Fake),

而 StarGAN 為了要學習圖像是屬於哪個 Domain label,

因此辨別器多了分類的功能(Domain classification),

基本概念可以參考 ACGAN

圖片出自 : Yunjey Choi, et al., “StarGAN : Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation”.

實際上在 StarGAN 的論文中是利用兩個資料集訓練,

同時學習人物特徵以及臉部表情的轉換。

圖片出自 : Yunjey Choi, et al., “StarGAN : Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation”.

資料集

並利用頭髮顏色標籤(Tag)來收集圖像,

例如 Pink_hair 和 Blonde。

最終收集 5 種不同顏色的頭髮

  • 白髮
  • 藍髮
  • 粉髮
  • 金髮
  • 黑髮

再將其角色的臉切出,

每個顏色各自收集 2,000 張圖片作為資料集,

因此可將此任務視為 5 個不同的 Domain 進行圖像轉換,

分別可將不同圖像的顏色各自轉換(ex. 黒→白, 黒→藍, 黒→粉, 黒→金, 白→黑, 白→藍, 白→粉…)

成果

首先我們看看透過這種方式所訓練出來的模型,

是否可以漂亮的轉換髮色,

下方為 StarGAN 訓練 285 個 epoch 的結果。

最左側為輸入圖片,

接著依序為轉白髮, 藍髮, 金髮, 粉髮, 黑髮

如果是使用 CycleGAN 的話。

會連不相關的背景也都會不小心轉換到該顏色,

不過作者沒有附上相關的圖片。

那下方為加藤惠的髮色轉換,

除了白髮的顏色比較微妙之外,

其他顏色都不錯呢,

作者猜測可能是輸入圖像的髮色是棕色而非純黑色,

因為棕髮並不在原本的資料集中可能導致了輸出結果不好。

不過作者表示,不管什麼髮色加藤惠都還是很可愛捏~

結論

此次利用了 StarGAN 進行髮色轉換,

只要利用單個模型就可以在 5 個不同 Domains 互相轉換,

不過目前還有一些受限,

像是髮色有很多不同的顏色如:綠髮、棕髮,

還需要透過更多的資料才能轉換更多顏色。

接著我們探討 StarGAN 在測試期間其實可以透過操作條件向量來達到創建新的顏色,

ex. 希望生成紫色的話,

我們可以設定生成一半藍頭髮以及一半紅頭髮的髮色,

就有可能轉換成紫髮。

而作者未來希望不僅是對髮色進行操作,

甚至還可以像 StarGAN 原論文一樣對表情進行操作,

作者最終還希望可以對加藤恵的髮型進行操作呢~

最後如果有任何的建議,

請讓我知道。

實驗環境

OS : Ubuntu 16.04 LTS (64-bit)

CPU : Intel(R) Core(TM) i5–4590 CPU @ 3.30 GHZ

GPU : NVIDIA GTX970

Memory : 8GB

參考資料:

StarGANを用いた髪色変換

Lento

StarGAN

CycleGAN

ACGAN


© 2018-2021 XiaoSean. All rights reserved.

Powered by Hydejack v8.1.1