Stable diffusion 2.0 depth2img しゅごいね...
中身としては MiDaS で画像からデプス推定して https://github.com/isl-org/MiDaS いい感じにやるっぽい.
ふえぇ... Stable Diffusion 2.0 depth2image でアーニャ変換(?)すごぽよ... 😳 pic.twitter.com/KqCuoPEH3G
— syoyo.eth 🌸 レイトラ ® 🐯 4 周年 🎉 (@syoyo) December 30, 2022
Voila!
注意点
実行は特に問題なくサンプルコードぺろっとやればいけます.
現状(2022/12/30) では, transformers
パッケージは pip で入るのは使えず git のを使う必要があります(pip 版 transformers 使っているとエラーメッセージ出してくれます).
MiDaS の問題なのか, stable diffusion の input tensor size の問題なのか(たぶん後者), 64 の倍数でない画像サイズを与えると
RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 64 but got size 65 for tensor ...
というエラーがでます!
imagemagik なり cv2 で, 画像サイズを 64 の倍数にしておく必要があります.
また, 画像サイズ大きくなると GPU メモリ消費も増えますので(2K 画像入れたら 3090 でもだめだった), ご自身の GPU で走るようにターゲットの画像サイズをうまく調整してみてください.
ポートレート特化したい...
MiDaS は汎用の depth 推定なので, 人物ポートレート特化の場合は人物用の depth 推定使うとより高品位なものが作れそうな気がします(後処理で合成したいときとかにも!)
あたりか, iPhone であれば LiDAR デプス使うとかですかね.
また, portrait matting (最近だと P3M https://github.com/JizhiziLi/P3M がよさそうかしら) と組みあわせるとさらによさそうですネ