cedro-blog

Stylized Neural Paintingで、1枚の画像から油絵を描く

1.はじめに

 ディープラーニングで写真から油絵を作り出す技術は以前からありますが、今回ご紹介するのは、その作成プロセスに焦点を当てたものです。

*この論文は、2020.11に提出されました。

2.Stylized Neural Paintingとは?

 従来からあるピクセル単位で画像変換する方法とは異なり、ベクトル化されたデータを使って順次レンダリングするという、まるで筆で絵具を重ね塗りするような方法で油絵へ変換します。

 diffrentiable painting pipeline を使って、空のキャンバスに soft blending でベクトルデータを順次レンダリングし、レンダリング毎に元画像との差を最小化するようにパラメータの最適化を行います。ここで、黒い矢印は順伝搬、赤い矢印は勾配の逆伝搬を意味します。

 パラメータは、dual-pathway neural render で、Color(色), Shade(ぼかし), Alpha(透明度)の要素から Stroke Alpha matto が生成されます。

3.コード

 コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンク」をクリックし表示されたノートブックの先頭にある「Colab on Web」ボタンをクリックすると動かせます。

 まず、Githubからコードをコピーし、学習済みモデルをダウンロードします。詳細は、Google Colab のノートブックを参照下さい。

 初期設定と関数定義の部分です。

 13行目の args.img_path = ‘./test_images/kasumi.png’ で油絵化する画像を指定しています。別の画像の油絵化をする場合は、ここを変更して下さい。

 下記コードで、レンダリングを開始します。約10分ほど掛かりますので、コーヒーでも飲んでお待ちください。

 レンダリングが終了したら、生成した画像を確認してみましょう。下記のコードで、対象画像(input)と生成画像(generated)を表示します。

 下記のコードで、レンダリングの経過をアニメーション化します。interval=100は、レンダリング画面を0.1秒で切り替える設定です。

 まるで、ディープラーニングがナイフや筆を使って油絵を描いているようですね。

 では、また。

(オリジナル)https://github.com/jiupinjia/stylized-neural-painting