はじめに
InstantStyleというモデルを使っています。github.com
できることが色々あるようですが今回はスタイル画像1枚とプロンプトから画像のスタイル変換をしてみます。
スタイル画像
こちらのGitHubページからスタイル画像を使わせて頂きました。github.com
21種類あります(正方形に変形しています)。
用意した画像
こちらの画像を用意しました。目的
画像のスタイルを変換します。使用したプロンプトは以下の通りです。prompt
a woman, masterpiece, best quality, high quality
negative prompt
text, watermark, lowres, low quality, worst quality, deformed, glitch, low contrast, noisy, saturation, blurry
結果
Pythonスクリプト
import torch from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline import cv2 from PIL import Image from pathlib import Path from ip_adapter import IPAdapterXL base_model_path = "sdxl_pipeline/stable-diffusion-xl-base-1.0" image_encoder_path = "sdxl_models/image_encoder" ip_ckpt = "sdxl_models/ip-adapter_sdxl.bin" device = "cuda" controlnet_path = "controlnet/controlnet-canny-sdxl-1.0" controlnet = ControlNetModel.from_pretrained( controlnet_path, torch_dtype=torch.float16 ).to(device) # load SDXL pipeline pipe = StableDiffusionXLControlNetPipeline.from_pretrained( base_model_path, controlnet=controlnet, torch_dtype=torch.float16, variant="fp16" ) pipe.enable_vae_tiling() ip_model = IPAdapterXL( pipe, image_encoder_path, ip_ckpt, device, target_blocks=["up_blocks.0.attentions.1"] ) # control image input_image = cv2.imread("./assets/face.jpg") detected_map = cv2.Canny(input_image, 50, 100) canny_map = Image.fromarray(cv2.cvtColor(detected_map, cv2.COLOR_BGR2RGB)) Path("results").mkdir(exist_ok=False) image_list = Path("assets/styles").glob("*.jpg") for image_path in image_list: image = Image.open(image_path.as_posix()).resize((512, 512)) # generate image images = ip_model.generate( pil_image=image, prompt="a woman, masterpiece, best quality, high quality", negative_prompt= "text, watermark, lowres, low quality, worst quality, deformed, glitch, low contrast, noisy, saturation, blurry", scale=0.6, guidance_scale=5, num_samples=1, num_inference_steps=30, seed=42, image=canny_map, controlnet_conditioning_scale=1.0, ) images[0].resize((512, 512)).save(Path("results", f"{image_path.stem}.jpg").as_posix())
PC環境
Windows 11 CUDA 11.8 Python 3.11
Python環境構築
pip install torch==2.2.2+cu118 --index-url https://download.pytorch.org/whl/cu118 pip install diffusers[torch] pip install transformers einops opencv-python pip install git+https://github.com/tencent-ailab/IP-Adapter.git