目的
一枚の顔写真に対してスタイル変換を行います。実行
準備
モデルはGitHubリポジトリに記載されている通りにダウンロードしました。こちらから「pipeline_stable_diffusion_xl_instantid.py」をダウンロードしました。実行
「run.py」は後述するスクリプトです。python run.py
結果
①
用意した画像
結果
②
用意した画像
結果
③
用意した画像
結果
Pythonスクリプト
from diffusers.utils import load_image from diffusers.models import ControlNetModel import os import cv2 import torch import numpy as np from insightface.app import FaceAnalysis from pipeline_stable_diffusion_xl_instantid import StableDiffusionXLInstantIDPipeline, draw_kps app = FaceAnalysis(name="antelopev2", root='.', providers=["CUDAExecutionProvider"]) app.prepare(ctx_id=0, det_size=(640, 640)) face_adapter = "checkpoints/ip-adapter.bin" controlnet_path = "checkpoints/ControlNetModel" controlnet = ControlNetModel.from_pretrained(controlnet_path, torch_dtype=torch.float16) base_model = "pipeline/YamerMIX_v8" pipe = StableDiffusionXLInstantIDPipeline.from_pretrained( base_model, controlnet=controlnet, torch_dtype=torch.float16 ).to("cuda") pipe.load_ip_adapter_instantid(face_adapter) pipe.set_ip_adapter_scale(0.8) image_path = "face.png" face_image = load_image(image_path) save_folder = f"{os.path.splitext(os.path.basename(image_path))[0]}_result" os.makedirs(save_folder, exist_ok=True) face_info = app.get(cv2.cvtColor(np.array(face_image), cv2.COLOR_RGB2BGR)) face_info = sorted(face_info, key=lambda x:(x['bbox'][2]-x['bbox'][0])*x['bbox'][3]-x['bbox'][1])[-1] face_emb = face_info['embedding'] face_kps = draw_kps(face_image, face_info['kps']) seed = 2024 negative_prompt = "lowres, low quality, worst quality, text, watermark, ugly, deformed, noisy, blurry, low contrast" for style in ["Watercolor", "Film Noir", "Neon", "Jungle", "Mars", "Vibrant Color", "Snow", "Line art"]: image = pipe( prompt=f"{style} style, woman, high quality, best quality", negative_prompt=negative_prompt, image_embeds=face_emb, image=face_kps, controlnet_conditioning_scale=0.8, generator=torch.manual_seed(seed), width=1024, height=1024 ).images[0] image.save(os.path.join(save_folder, f"{style}_result.png"))
PC環境
Windows 11 CUDA 11.8 Python 3.11
Python環境構築
pip install torch==2.1.2+cu118 --index-url https://download.pytorch.org/whl/cu118 pip install git+https://github.com/huggingface/diffusers pip install accelerate transformers opencv-python pip install onnxruntime-gpu insightface