本記事では、StyleGAN-Humanと呼ばれる機械学習手法を用いて、ファッションモデルのような人物の全身画像を生成する方法をご紹介します。
StyleGAN-Human
概要
StyleGAN-Humanは、人間の全身画像を生成する画像生成技術です。
様々なポーズやテクスチャをキャプチャした23万を超える人間の全身画像データセットを収集し、データサイズ、データ分布、データ配置などを厳密に調査しながら
SytleGANをトレーニングすることによって、人間の顔のみならず、服のテクスチャ、ポーズなどバランスの取れた全身画像を生成することを可能にしています。
詳細はこちらの論文をご参照ください。
本記事では上記手法を用いて、全身画像を生成していきます。
デモ(Colaboratory)
それでは、実際に動かしながら全身画像生成を行います。
ソースコードは本記事にも記載していますが、下記のGitHubでも取得可能です。
GitHub - Colaboratory demo
また、下記から直接Google Colaboratoryで開くこともできます。
なお、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。
環境セットアップ
それではセットアップしていきます。
Colaboratoryを開いたら下記を設定しGPUを使用するようにしてください。
「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更
初めにGithubからソースコードを取得します。
%cd /content
!git clone https://github.com/stylegan-human/StyleGAN-Human.git
# Commits on Oct 13, 2022
%cd /content/StyleGAN-Human
!git checkout 70a3b4e82d1a13a62e2e5c51c69557ad17ff6772
次にライブラリをインストールします。
%cd /content/StyleGAN-Human
!wget https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip
!sudo unzip ninja-linux.zip -d /usr/local/bin/
!sudo update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force
!pip install lpips
!pip install --upgrade gdown
最後にライブラリをインポートします。
import os
import glob
import gdown
import matplotlib.pyplot as plt
以上で環境セットアップは完了です。
学習済みモデルのセットアップ
続いて、論文発表元が公開する学習済みモデルをダウンロードします。
StyleGAN 1, StyleGAN 2, StyleGAN 3のいずれかから選択します。
MODEL_PATHS = {
"stylegan1_1024": {"id": "1h-R-IV-INGdPEzj4P9ml6JTEvihuNgLX", "name": "stylegan1_1024.pkl"},
"stylegan2_1024": {"id": "1FlAb1rYa0r_--Zj_ML8e6shmaF28hQb5", "name": "stylegan2_1024.pkl"},
"stylegan2_512": {"id": "1dlFEHbu-WzQWJl7nBBZYcTyo000H9hVm", "name": "stylegan2_512.pkl"},
"stylegan3_512": {"id": "1_274jk_N6WSCkKWeu7hjHycqGvbuOFf5", "name": "stylegan3_512.pkl"}
}
experiment_type = 'stylegan3_512' #@param ['stylegan1_1024', 'stylegan2_1024', 'stylegan2_512', 'stylegan3_512']
%cd /content/StyleGAN-Human
gdrive_id = MODEL_PATHS[experiment_type]["id"]
model_name = MODEL_PATHS[experiment_type]["name"]
print('id:', gdrive_id, 'model name:', model_name)
!mkdir pretrained
model_path = os.path.join('pretrained', model_name)
gdown.download(
url = 'https://drive.google.com/uc?id={}'.format(gdrive_id),
output = model_path,
quiet = False
)
全身画像の生成
それでは、学習済みモデルにseedを入力し全身画像を生成していきます。
version = experiment_type.split("_")[0][-1]
out_dir = os.path.join('outputs', experiment_type)
generate_num = 3 # 生成枚数
print('version:', version, 'out_dir:', out_dir)
!python generate.py \
--outdir={out_dir} \
--seeds=0-{generate_num-1} \
--trunc=0.7 \
--network={model_path} \
--version={version}
出力画像は以下の通りです。
out_imgs = glob.glob( os.path.join(out_dir, '*.png') )
for p in out_imgs:
plt.imshow(plt.imread(p))
plt.axis('off')
plt.show()
非常に自然な全身画像が生成されています。
まとめ
本記事では、StyleGAN-Humanを用いて人間の全身画像を生成する方法をご紹介しました。
任意の服装、任意の体型など制御が容易になれば、ファッションモデルの代わりを務めるかもしれませんね。
また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。
リンク
リンク
また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。
参考文献
1.
論文 - StyleGAN-Human: A Data-Centric Odyssey of Human Generation
2. GitHub - stylegan-human/StyleGAN-Human
0 件のコメント :
コメントを投稿