综合介绍
InstantID是一项先进的技术,专注于利用单张参考身份证图片,在几秒钟内生成具有个性化风格或姿态的图像,同时确保高度保真。该技术采用了基于扩散模型的解决方案,通过集成面部图片、地标图片与文本提示,精准引导图像生成过程。主要特点包括高保真度图像生成、与流行的预训练文本到图像扩散模型兼容,无需大量微调或多个参考图像即可使用,并且具备高面部保真度与文本的编辑能力。
InstantID 是一种新的最先进的免调整方法,只需单个图像即可实现 头像特征ID 保留生成,支持各种下游任务。只需一张照片克隆面部,并使用提示词生成相同面部的不同风格图片。
功能列表
- 零样本身份保留生成:无需多张图像,仅需一张正脸图像即可生成多种风格的人像。
- 高保真度生成:生成结果具有高保真度,能够很好地保留原始图像的身份特征。
- 多种下游任务支持:支持多种下游任务,如风格迁移、图像编辑等。
- 开源代码和模型:提供开源代码和预训练模型,方便用户下载和使用。
- 兼容性强:支持与其他项目如 InstantStyle 和 Kolors 的兼容使用。
使用帮助
上传人物图像。对于多张人物图像,我们只会检测最大的人脸。确保脸部不会太小,也不会明显遮挡或模糊。
(可选)上传另一张人物图片作为参考姿势。如果没有上传,我们将使用第一张人物图像提取地标。如果在步骤 1 中使用的是裁剪过的人脸,建议将其上传以提取新的姿势。
输入文本提示,就像普通文本到图像模型一样。
点击提交按钮开始自定义。
用户需要提供单张参考身份证图片
可以选择不同的风格和姿态进行个性化图像生成
无需进行测试时微调或收集多个图像进行微调
生成的图像可以直接与流行的预训练模型和控制网络融合使用
支持身份属性到非人类角色的灵活添加
安装流程
- 克隆 GitHub 仓库:
git clone https://github.com/instantX-research/InstantID.git cd InstantID
- 安装依赖:
pip install -r requirements.txt
- 下载预训练模型:
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")
使用流程
- 准备图像:
from diffusers.utils import load_image image = load_image("your-example.jpg")
- 加载模型:
from diffusers import StableDiffusionXLInstantIDPipeline, ControlNetModel controlnet = ControlNetModel.from_pretrained("./checkpoints/ControlNetModel", 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("./checkpoints/ip-adapter.bin")
- 生成图像:
prompt = "analog film photo of a man. faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage, masterpiece, best quality" negative_prompt = "(lowres, low quality, worst quality:1.2), (text:1.2), watermark, painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured" image = pipe(prompt, image_embeds=face_emb, image=face_kps, controlnet_conditioning_scale=0.8).images[0]
详细操作流程
- 准备环境:确保安装了必要的依赖项,并下载了预训练模型。
- 加载图像:使用
load_image
函数加载需要处理的图像。 - 加载模型:使用
from_pretrained
方法加载预训练的 ControlNet 模型和 StableDiffusionXLInstantIDPipeline。 - 生成图像:设置生成图像的提示词和负面提示词,调用
pipe
方法生成图像。
通过以上步骤,用户可以轻松地使用 InstantID 生成高保真度的身份保留图像。
ComfyUI实现方案
选择 SDXL 基础底座。您还可以尝试 SDXL Turbo 的 4 个步骤,对于快速测试非常有效。
首次加载通常需要60秒以上,但节点会尽力缓存模型。
https://github.com/huxiuhan/ComfyUI-InstantID
InstantID体验地址