Outline Colorization through Tandem Adversarial Networks
Outline Colorization through Tandem Adversarial Networks
どんなもの?
2つのネットワークを組み合わせ、線画着色を行う。
初めにOutline(線画)からColor Scheme(配色)を推定する。
大雑把に色を推定して配色・パレットを作っているようなイメージで良い。
この推定を行うネットワークをColor Prediction Networkと呼んでいる。
以下の図を見てもらえば分かりやすいと思う。
次にOutline(線画)とこの低解像度のColor Scheme(配色)を入力として、線画着色を行う。
この推定を行うネットワークをShading Networkと呼んでいる。
この2段階で行うことがキモとなっているようだ。
ネットワーク
Color Predhiction NetworkとShading Networkは両方以下のようなFully Convolutional Networkから構成される。
U-Netと非常によく似ている構成だ。
Shading NetworkはGANで一般的に用いられる敵対的損失を利用しているが、Color Predhiction Networkは単純にL2 Lossを利用した方が良かったよう。
ちなみにDiscriminatorの構成は以下のようになっている。
Processing
実験を行うときデータセットを作成しなければいけなかったので、まずイラストを手作業で頑張って集めた。
Outline(線画)はイラストにOpenCVのエッジ検出アルゴリズムを用いて作成した。
Color scheme(配色)は元画像に対し 10×10 の patchをランダムの選択して白で埋める(各々のピクセルは近くのピクセルと相関がある可能性が高いので、ピクセルの代わりにパッチを使用している)。
次に全体にぼかしをかけることColor scheme(配色)ができる。
Color scheme(配色)は情報量が多すぎないことが重要であるため以上のようなめんどくさい処理をしたが、学習済みモデルを実用的に使うにはやはりpatchで画像の色をそぎ落とすより、全体の色をまんべんなく用いたほうが良い結果になる。
なので学習中でない場合はpatchで色情報をそぎ落とす代わりに画像をスケールダウンする(patch処理は入力画像に対するDropoutと考えて良い)。
すべてのピクセルの色を直接予測するのではなく、画像を16px×16pxのブロックで構成されたグリッドに分割する。
そして Shading Network は、ブロック内の各々のピクセルではなく、これらのブロックに色を割り当てることをタスクとする。
ネットワークの生成タスクを単純化することで、複雑なディテールを生成するのではなく、特徴を認識することに集中できるようになる。
結果
まずShading Network単独のテスト。
OutlineとColor schemeを入力して生成を行った結果。
以下もShading Network単独のテスト。
Outlineと雑なColor schemeを入力として生成を行った結果。
以下もShading Network単独のテスト。
Outlineと真っ白でノーヒントなColor schemeを与える。
以下はColor Predict Network と Shading Networkのテスト。
Outlineだけを与える。
論文/リンク
Frans, Kevin. "Outline colorization through tandem adversarial networks." arXiv preprint arXiv:1704.08834 (2017).
Discussion