ゴールデンウィークはほとんどPCを触らず、デジタルデトックス状態でした。
そんな中、ようやく到着しました。IP-Adapter !!
どうやら IP-Adapter と一口に言ってもなんか色々な種類がありそうな予感。
何にせよ、触っていかないと進まないですからね。
色々調べるのは後にして、とりあえず触ってみます。
IP-Adapter とは?
IP-Adapter とは Image Prompt Adapter の略のようです。
アダプターとしては、 T2I-Adapter の画像版みたいな感じだと思います!
そして Image-to-Image の強い版みたいな感じという認識です。
凄く適当な説明!
何が強いかと言うと、既存の SD系モデルを使用でき、 LCM LoRA や ControlNet の組み合わせなどに強いところ、って感じでしょうか?
たぶん!きっと!恐らく!
この記事時点では、まだ IP-Adapter の旨味はわかっておらず、
今までのImage-to-ImageやControlNetと同じ雰囲気に見えている状態
今までのImage-to-ImageやControlNetと同じ雰囲気に見えている状態
使ってみる
モデルのロード等 (SD系モデル, IP-Adapter, LCM LoRA, LCMScheduler)
import torch from diffusers import DiffusionPipeline, LCMScheduler # SDモデルのロード pipe = DiffusionPipeline.from_pretrained( "sd-dreambooth-library/herge-style", torch_dtype=torch.float16 ) # IP-Adapter のロード pipe.load_ip_adapter( "h94/IP-Adapter", subfolder="models", weight_name="ip-adapter_sd15.bin" ) # LoRA のロード (LCM LoRA) pipe.load_lora_weights("latent-consistency/lcm-lora-sdv1-5") # スケジューラの設定 (LCMScheduler) pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config) # enable memory savings pipe.enable_vae_slicing() pipe.enable_model_cpu_offload()
入力画像のロード
from diffusers.utils import load_image input_image_url = "https://user-images.githubusercontent.com/24734142/266492875-2d50d223-8475-44f0-a7c6-08b51cb53572.png" input_image = load_image(input_image_url)
プロンプト実行
import torch # シードの設定 generator = torch.Generator() generator.seed() # パイプライン実行 prompt = "best quality, high quality" image = pipe( prompt=prompt, ip_adapter_image=input_image, num_inference_steps=4, guidance_scale=1, generator=generator ).images[0]
実行結果
from datetime import datetime from zoneinfo import ZoneInfo # Asia/Tokyo タイムゾーンの現在時刻を YYYYMMDDhhmmss 形式で得る formattedNow = datetime.now(tz=ZoneInfo("Asia/Tokyo")).strftime("%Y%m%d%H%M%S") # 実行結果 image.save(f"image_{formattedNow}_{generator.initial_seed()}.png")
まとめ
今日のところはこれくらいにしてやるか...
(全然わからなかった...)
(全然わからなかった...)
でも、IP-Adapter は公式サンプルも多そうなので、これからたくさん触っていこうと思います。