googleから出たVirtual Try-OnがAPIで提供されているようなので、ちょっと試してみました。
また、Pythonで実行できるようにしておきます。
私が軽く実施した範囲で、下記のようなことが可能です
ちょっと不自然な感じはしますが、アニメ画像に対してもそれなりに動きます。
API単体の使い方は下記の公式記事をご覧ください。
下記のリポジトリをご覧ください。
事前準備
リポジトリをクローンする
下記コマンドでリポジトリをクローンしてください。
./
git clone https://github.com/personabb/GC_VirtualTryOnAPI.git
環境変数
Google Cloudのサービスアカウントでの認証用JSONを作成し、.env
ファイルにパスを記載します。
サービスアカウントの認証用JSONキーの取得方法は下記の記事などを参照してください
取得したJSONキーはauth_json/auth.json
として格納してください。
さらに、.env
ファイルは下記の通り記載してください。
.env
GOOGLE_APPLICATION_CREDENTIALS="auth_json/auth.json"
なお、下記のコマンドにて一時的な認証情報を取得しても良いです。
この場合は、JSONキーは不要になります
gcloud auth application-default login
仮想環境の構築
下記のコマンドで環境を構築してください
pip install -r requirements.txt
(私は基本的にuvを利用しますが、uv使える人は自分で環境構築できると思うので頑張ってください)
実行する
下記コマンドで実行ができます
./GC_VirtualTryOnAPI
python main.py
実行後、result
フォルダを確認すると、仮想着せ替えが完了した画像が表示されるはずです。
結果は記事トップをご覧ください。
おまけ
results = api.try_on(
person_image_path="./images/person.png",
product_image_path="./images/dress.png",
output_dir="./results",
sample_count=1,
base_steps=32,
add_watermark=False,
person_generation = "allow_all",
safety_setting = "block_only_high",
seed=42,
output_mime_type="image/png",
compression_quality=None
)
今回実装したメソッドは上記のように実行ができます。
それぞれの引数は下記に対応しています。(元のAPIのパラメータに準拠しています)
- person_image_path
- 着せ替え前の人物画像のパス
- product_image_path
- 着せ替え先の服装画像のパス
- output_dir
- 着せ替え後の画像を出力するフォルダパス
- sample_count
- 一回の実行で同時に何枚出力するか
- 最大4枚まで可能
- add_watermark
- 透かしを入れるかどうか
- person_generation
- 人物を出力する際にどの程度フィルタを入れるかどうか
- “dont_allow”: 画像に人物や顔が含まれないようにします。
- “allow_adult”: 成人の画像のみが生成されるようにします。
- “allow_all”: 年齢制限なく人物の画像が生成されるようにします。
- safety_setting
- 安全フィルタリングのフィルタレベル
- “block_low_and_above”: 最も強力なフィルタリング レベル、最も厳格なブロックを実施。
- “block_medium_and_above”: 一部の問題のあるプロンプトとレスポンスをブロックします。
- “block_only_high”: 安全フィルタによってブロックされるリクエストの数が少なくなります。Imagen によって生成される不適切なコンテンツが増加する可能性があります。
- “block_none”: ごく少数の問題のあるプロンプトとレスポンスをブロックします。この機能へのアクセスは制限されています。
- seed
- シード値。固定することで出力に再現性がある。
- 実際に試しましたが、私の環境では完全に同一の画像が出力されました
- ただし、sample_countを1以外の値にした場合は、ばらつきますので注意してください。
- 全部同じ画像が出てくるわけではないです。ほぼ同じような画像になりますが。。。
- output_mime_type
- 出力のmime_typeを指定できます
- “image/png”: PNG 画像として保存
- “image/jpeg”: JPEG 画像として保存
- 基本的には可逆圧縮であるPNGにしておけばいいのではないでしょうか。どうしてもストレージの圧迫が気になるのならJPEGでも
- compression_quality
- JPEGで出力させるときの圧縮レベルを設定できます。指定できる範囲は0-100です。デフォルトは75ですが、大きくする方がより品質が高くなりますが、画像のサイズは大きくなります(圧縮率が下がります)。
APIで簡単に画像から服装の着せ替えができるようになるとは・・・
アニメ画像でも着せ替えできるのは面白いですね。
画像自体はgithubリポジトリの中にも置いているので、ぜひ見てみてください。リアル画像の方はかなり自然ですよ。
Views: 0