1.はじめに
今回ご紹介するのは、ポートレートを色々な線画にする Quality Metric Guided Portrait Line Drawing Generation from Unpaired Training Data(対になっていないトレーニングデータからの品質メトリックガイド付きポートレート線画の生成)というGANモデルです。
*この論文は、2022.2に提出されました。
2.今回のモデルについて
今回のGANモデルの概要図が下記です。基本的に、対になっていないトレーニングデータを使用するために、CycleGANの様な構造をしています。しかし、ポートレイト写真と線画では持っている情報量が大きく異なるため、CycleGANをそのまま使用することが出来ません。そこで、主に4つの工夫を加えています。
1つ目は、下段の Strict cycle-consistency loss(厳密なサイクル一貫性損失)に対して上段を Relaxed cycle-consistency loss(緩いサイクル一貫性損失) と非対称にしていることです。これは、上段で線画から写真に戻すときの情報量の差が大きいためです。
2つ目は、Quality Metric Model (品質メトリックモデル)を使用して線画の品質を担保したことです。これは、線画と官能評価の数値のペアを学習させることによって、線画の品質数値を回帰で求めるモデルです。
3つ目は、Nose Discrim、Eye Discrim、Lip Discrim(鼻・目・口の弁別器)を設け顔を構成する重要なパーツの欠落を防いだことです。
4つ目は、Style feature(スタイル特徴)というコンセプトを導入し、1つのモデルで色々なスタイルの線画が生成できる様にしたことです。具体的には、Generator に Style feature の条件を与え、Style loss を設定することで実現しています。
3.コード
コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンク」をクリックし表示されたノートブックの先頭にある「Colab on Web」ボタンをクリックすると動かせます。
まず、セットアップを行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#@title セットアップ # githubからコードを取得 ! git clone https://github.com/cedro3/QMUPD.git %cd QMUPD # ライブラリ・インストール ! pip install -r requirements.txt ! pip install pretrainedmodels # 学習済みパラメータ・ダウンロード ! pip install --upgrade gdown import gdown gdown.download('https://drive.google.com/uc?id=1QpuCQ0LrrlsHCs3Vh6xC0uIBlWrDrGo1', 'checkpoints.zip', quiet=False) ! unzip checkpoints.zip # 関数インポート from function import * |
最初に、examples フォルダに格納されているサンプル画像を確認しておきましょう。自分の画像を使いたい場合は、このフォルダに画像(align処理をしたもの)をアップロードして下さい。
*align処理については、このブログをご参照下さい。
1 2 |
#@title サンプル画像の表示 display_pic('examples') |
test_seq_style3.py を使って、3つのスタイルの線画を作成します。数分程度かかりますので、ゆっくりお待ちください。
1 2 3 |
#@title 線画の作成 reset_folder('results') ! python test_seq_style3.py |
それでは作成された3つのスタイルの線画を見てみましょう。
1 2 |
#@title スタイル1表示 display_pic('results/QMUPD_model/test_200/imagesstyle0-0-1') |
1 2 |
#@title スタイル2表示 display_pic('results/QMUPD_model/test_200/imagesstyle0-1-0') |
1 2 |
#@title スタイル3表示 display_pic('results/QMUPD_model/test_200/imagesstyle1-0-0') |
1つのモデルで、3種類の線画が作成できるのは面白いアイディアですね。
では、また。
(オリジナルgithub)https://github.com/yiranran/QMUPD