🚀 StoryMaker: テキストから画像生成における一貫したキャラクターの実現
StoryMakerは、複数キャラクターのシーンにおいて、顔だけでなく服装、髪型、体の一貫性を保持するパーソナライズソリューションです。一連の画像からなるストーリーを作成する可能性を実現します。

[](https://github.com/RedAIGC/StoryMaker)
StoryMakerによって生成された画像の可視化。最初の3行は「サラリーマン」の一日の生活に関するストーリーを、最後の2行は「サンライズ・ベフォー」という映画に関するストーリーを語っています。
✨ デモ
二人の肖像画合成
多様なアプリケーション
📦 インストール
あなたはHuggingfaceから直接モデルをダウンロードすることができます。
もしHuggingfaceにアクセスできない場合は、hf-mirrorを使用してモデルをダウンロードすることができます。
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download --resume-download RED-AIGC/StoryMaker --local-dir checkpoints --local-dir-use-symlinks False
顔エンコーダについては、デフォルトのリンクが無効なため、このURLから手動でmodels/buffalo_l
にダウンロードする必要があります。すべてのモデルを準備した後、フォルダ構造は次のようになるはずです。
.
├── models
├── checkpoints/mask.bin
├── pipeline_sdxl_storymaker.py
└── README.md
💻 使用例
基本的な使用法
import diffusers
import cv2
import torch
import numpy as np
from PIL import Image
from insightface.app import FaceAnalysis
from pipeline_sdxl_storymaker import StableDiffusionXLStoryMakerPipeline
app = FaceAnalysis(name='buffalo_l', root='./', providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
app.prepare(ctx_id=0, det_size=(640, 640))
face_adapter = f'./checkpoints/mask.bin'
image_encoder_path = 'laion/CLIP-ViT-H-14-laion2B-s32B-b79K'
base_model = 'huaquan/YamerMIX_v11'
pipe = StableDiffusionXLStoryMakerPipeline.from_pretrained(
base_model,
torch_dtype=torch.float16
)
pipe.cuda()
pipe.load_storymaker_adapter(image_encoder_path, face_adapter, scale=0.8, lora_scale=0.8)
pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config)
高度な使用法
face_image = Image.open("examples/ldh.png").convert('RGB')
mask_image = Image.open("examples/ldh_mask.png").convert('RGB')
face_info = app.get(cv2.cvtColor(np.array(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]
prompt = "a person is taking a selfie, the person is wearing a red hat, and a volcano is in the distance"
n_prompt = "bad quality, NSFW, low quality, ugly, disfigured, deformed"
generator = torch.Generator(device='cuda').manual_seed(666)
for i in range(4):
output = pipe(
image=image, mask_image=mask_image, face_info=face_info,
prompt=prompt,
negative_prompt=n_prompt,
ip_adapter_scale=0.8, lora_scale=0.8,
num_inference_steps=25,
guidance_scale=7.5,
height=1280, width=960,
generator=generator,
).images[0]
output.save(f'examples/results/ldh666_new_{i}.jpg')
📚 謝辞
📄 ライセンス
Apache-2.0ライセンスの下で提供されています。