DCT-Net によるポートレートのスタイル転送

1.はじめに

 一般的に、StyleGANベースでポートレートのスタイル転送をする場合、顔の位置合わせや領域について制約があります。今回ご紹介する DCT-Net は、これらの制約を解消する技術です。

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

2.DCT-Netとは?

 下図が、DCT-Net の概要図です。

 まず、上段の Content Calibration Network を作成します。ベクトル zを入力として実写 Xs を生成する StyleGAN ネットワーク Gs と、これを Transfer learning してベクトル z を入力するとスタイル転送画像 Xt を生成するネットワークGtを組み合わせます。これによって、ベクトル z を入力すると実写 Xs とそれに対応するスタイル転送画像 Xt を生成するネットワークが出来ます。

 次に、この Content Calibration Network を使って、U-Net構造の Texture Translation Network をGANのフレームワークで学習させます。このとき、 Texture Translation Network の入力 Xs と比較出力 XtGeometry Expansion でアフィン変換(拡大縮小、回転、平行移動など)を同期して行うことによって、顔の位置合わせや領域について制約を解消しています。

3.コード

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

 まず、セットアップを行います。

 

 次に、サンプル画像を見てみましょう。なお、自分の用意した画像を使いたい場合は、picture/pic フォルダにアップロードして下さい。

 

 それでは、スタイル転送をしてみましょう。style で5つのスタイル(anime, 3d, handdraw, sketch, art)の中から1つを選択し、filename でファイル名を指定して実行します。ここでは、style = 3d、filename = 02.jpg を指定しています。

 ダウンロードする場合は、下記を実行します(chrome専用です)。

 

 その他の4つのスタイルについては、こんな感じになります。

 

 参考に、動画のスタイル変換もやってみましょうか。まず、video で指定したファイルをフレームにバラします。ここでは、video = 03.mp4 を指定します。

 自分の用意した動画を使いたい場合は、movie/video フォルダにアップロードして下さい。

fps = 28.72312646879624
frames = 31
interval = 1

 次に、バラしたフレーム毎にスタイル転送して動画を作成します。style で5つのスタイル(anime, 3d, handdraw, sketch, art)の中から1つを選択し実行します。ここでは、style = handdraw を指定しています。

 ダウンロードする場合は、下記を実行します(chrome専用です)。

 いかがだったでしょうか。ポートレートのスタイル変換の質が上がっていますね。

 では、また。

(オリジナルgithub)https://github.com/menyifang/DCT-Net

(twitter投稿)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

アバター

ディープラーニング・エンジニアを趣味でやってます。E資格ホルダー。 好きなものは、膨大な凡ショットから生まれる奇跡の1枚、右肩上がりのワクワク感、暑い国の新たな価値観、何もしない南の島、コード通りに動くチップ、完璧なハーモニー、仲間とのバンド演奏、数えきれない流れ星。