私的AI研究会 > StylerGAN2
ローカルマシン上の「StyleGAN3」で画像を編集する
cd /anaconda_win/workspace_2 ← Windows の場合 cd ~/workspace_2 ← Linux の場合 git clone https://github.com/cedro3/stylegan3-editing.git
project_StyleGAN └─workspace_2 └─stylegan3-editing ← GitHub からクローンしたプロジェクトに上書きする ├─edit │ ├─align │ ├─crop │ ├─invert_psp │ └─latents_psp ├─editing │ ├─interfacegan │ │ └─boundaries │ │ └─ffhq │ │ age_boundary.npy ① │ │ Male_boundary.npy ② │ │ pose_boundary.npy ③ │ │ Smiling_boundary.npy ④ │ │ │ └─styleclip_global_directions │ └─sg3-r-ffhq-1024 │ delta_i_c.npy ⑤ │ s_stats ⑥ │ └─pretrained_models restyle_e4e_ffhq.pt ⑦ restyle_pSp_ffhq.pt ⑧ shape_predictor_68_face_landmarks.dat ⑨※ ①~⑨ 予めダウンロードした画像から潜在変数を求めるエンコーダ(e4e/pSp)と画像編集用のパラメータ
pip install pyrallis pip install git+https://github.com/openai/CLIP.git
コマンドオプション | 引数 | 初期値 | 意味 |
--model | str | 'psp' | エンコーダ選択(psp/e4e) |
--source_dir | str | './edit/pic/001.jpg' | 静止画ファイル |
--result_path | str | './result' | 出力保存フォルダ |
--align | boot | True | すでに切り出し画像がある場合も再作成しない |
--cpu | bool | False | CPU指定 (指定のない場合は自動選択) |
--log | int | 3 | Log level(-1/0/1/2/3/4/5) |
(py38_learn_test) python stylegan3.py StyleGAN3 edit Ver 0.01: Starting application... - model : psp - source_image : ./edit/pic/001.jpg - result_path : ./results - align : True - log : 3 check_target_image = True './edit/align' check_target_image = True './edit/invert_psp' Finished.
コマンドオプション | 引数 | 初期値 | 意味 |
--model | str | 'psp' | エンコーダ選択(psp/e4e) |
--source_dir | str | './edit/pic/001.jpg' | 静止画ファイル |
--result_path | str | './result' | 出力保存フォルダ |
--align | boot | True | すでに切り出し画像がある場合も再作成しない |
--cpu | bool | False | CPU指定 (指定のない場合は自動選択) |
--log | int | 3 | Log level(-1/0/1/2/3/4/5) |
(py38_learn) python stylegan3_clip.py StyleGAN3-Clip edit Ver 0.01: Starting application... - model : psp - source_image : ./edit/pic/001.jpg - result_path : ./results - align : True - log : 3 check_target_image = True './edit/align' check_target_image = True './edit/invert_psp' Finished.
「StyleGAN3クラス」としてパッケージ化する
機能 | 関数 |
クラスの初期化 | FileTreatment(src, result, model, logsel = 3) |
画像・エンコーダ再設定 | set_param(src, model) |
フォルダー内の一覧画像の作成 | folder_image(folder, save_path='', pixel_size=(256,256), dpi=64, xn=10) |
terget画像の存在確認 | check_target_image(img_path, target_path) |
画像を動画に変換 | make_movie(movie_path, rate, disp_f = True) |
align 画像一覧ファイル名の取得 | get_align_filename() |
invert 画像一覧ファイル名の取得 | get_invert_filename() |
align & crop 画像の作成 | align_images(image_dir) |
invert 画像の作成 | invert_images() |
エンコーダ・ロード | load_encoder() |
infer_path 取得 | get_infer_path(direction, min_value, max_value) |
infer_clip_path 取得 | get_infer_clip_path(neutral_text, target_text, alpha, beta) |
align 画像一覧作成 | make_align(disp_f=True) |
invert 画像一覧作成 | make_invert(disp_f=True) |
interFaceGANによる編集 | edit_interface_gan(edit_direction, min_value, max_value, disp_f=True) |
StyleCLIPによる編集 | edit_styleclip(neutral_text, target_text, alpha, beta, disp_f=True) |
(py38_learn) python _stylegan3.py1. 各種変数の取得(ログ)
GPU mode: True インスタンス変数: gan.pic_dir = ./edit/pic インスタンス変数: gan.source_image = 001.jpg クラス変数: gan.OUT_MOVIE = ./tmpimg/output.mp4 インスタンス変数: gan.invert_dir = ./edit/invert_psp2. align & crop 画像の作成
100%|██████████████████████████████████████████████████| 5/5 [01:09<00:00, 13.91s/it] Loading ReStyle pSp from checkpoint: ./pretrained_models/restyle_pSp_ffhq.pt Loading StyleGAN3 generator from path: None Model successfully loaded!3. invert 画像作成
Setting up PyTorch plugin "filtered_lrelu_plugin"... Done. 100%|██████████████████████████████████████████████████| 5/5 [00:54<00:00, 10.85s/it]4. interFaceGANによる編集
<interFaceGAN> Performing edit for age... <interFaceGAN> result image → ./results/psp-gan_age_-5_5_001.jpg ffmpeg -r 5 -i ./tmpimg/img/%3d.jpg -vcodec libx264 -pix_fmt yuv420p ./tmpimg/output.mp4 -loglevel quiet -y making movie... → ./results/psp-gan_age_-5_5_001.mp45. StyleCLIPによる編集
<StyleCLIP> Performing edit for: "a smiling face"... <StyleCLIP> result image → ./results/psp-clip_a~face_a~smiling~face_40_13_001.jpg <StyleCLIP> result image → ./results/psp-clip_a~face_a~smiling~face_40_13_001_a.jpg