license: apache-2.0
language:
- en
library_name: diffusers
pipeline_tag: text-to-image
InstantID 模型介绍
简介
InstantID 是一种全新的无需调优的先进方法,仅需单张图像即可实现身份保持生成,支持多种下游任务。
使用方法
您可以直接下载本仓库中的模型,也可以通过Python脚本下载:
from huggingface_hub import hf_hub_download
hf_hub_download(repo_id="InstantX/InstantID", filename="ControlNetModel/config.json", local_dir="./checkpoints")
hf_hub_download(repo_id="InstantX/InstantID", filename="ControlNetModel/diffusion_pytorch_model.safetensors", local_dir="./checkpoints")
hf_hub_download(repo_id="InstantX/InstantID", filename="ip-adapter.bin", local_dir="./checkpoints")
对于人脸编码器,您需要手动通过此链接下载至models/antelopev2
目录。
import diffusers
from diffusers.utils import load_image
from diffusers.models import ControlNetModel
import cv2
import torch
import numpy as np
from PIL import Image
from insightface.app import FaceAnalysis
from pipeline_stable_diffusion_xl_instantid import StableDiffusionXLInstantIDPipeline, draw_kps
app = FaceAnalysis(name='antelopev2', root='./', providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
app.prepare(ctx_id=0, det_size=(640, 640))
face_adapter = f'./checkpoints/ip-adapter.bin'
controlnet_path = f'./checkpoints/ControlNetModel'
controlnet = ControlNetModel.from_pretrained(controlnet_path, torch_dtype=torch.float16)
pipe = StableDiffusionXLInstantIDPipeline.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0", controlnet=controlnet, torch_dtype=torch.float16
... )
pipe.cuda()
pipe.load_ip_adapter_instantid(face_adapter)
随后,您可以自定义自己的人脸图像:
image = load_image("your-example.jpg")
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'])
pipe.set_ip_adapter_scale(0.8)
prompt = "模拟胶片照片中的男性。褪色胶片,去饱和,35mm照片,颗粒感,暗角,复古风格,柯达克罗姆,Lomo风格,污渍效果,高细节,素材片段,杰作,最佳质量"
negative_prompt = "(低分辨率,低质量,最差质量:1.2),(文字:1.2),水印,绘画,素描,插画,故障,变形,突变,斗鸡眼,丑陋,畸形 (低分辨率,低质量,最差质量:1.2),(文字:1.2),水印,绘画,素描,插画,故障,变形,突变,斗鸡眼,丑陋,畸形)"
image = pipe(
... prompt, image_embeds=face_emb, image=face_kps, controlnet_conditioning_scale=0.8
... ).images[0]
更多详情,请遵循我们GitHub仓库中的指引。
使用技巧
- 若对相似度不满意,尝试增加"IdentityNet强度"和"适配器强度"的权重。
- 若感觉饱和度太高,首先降低适配器强度。若仍过高,则降低IdentityNet强度。
- 若发现文本控制不如预期,降低适配器强度。
- 若现实主义风格不够理想,请访问我们的GitHub仓库并使用更真实的基模型。
示例展示
免责声明
本项目基于Apache许可证发布,旨在积极推动AI驱动的图像生成领域发展。用户可自由使用此工具创作图像,但须遵守当地法律并负责任地使用。开发者不对用户可能的滥用行为承担任何责任。
引用
@article{wang2024instantid,
title={InstantID: Zero-shot Identity-Preserving Generation in Seconds},
author={Wang, Qixun and Bai, Xu and Wang, Haofan and Qin, Zekui and Chen, Anthony},
journal={arXiv preprint arXiv:2401.07519},
year={2024}
}