IP-Adapter这是一种有效且轻量级的适配器,用于实现预训练文本到图像扩散模型的图像提示功能。只有 22M 参数的 IP 适配器可以实现与微调图像提示模型相当甚至更好的性能。IP-Adapter 不仅可以推广到从同一基本模型微调的其他自定义模型,还可以推广到使用现有可控工具的可控生成。此外,图像提示还可以与文本提示配合使用,以完成多模态图像生成。
项目地址:https://github.com/tencent-ailab/IP-Adapter
释放
- [2023/11/22] 由于 Diffusers 团队,Diffusers 中提供了 IP-Adapter。
- [2023/11/10] 🔥 添加IP-Adapter-Face的更新版本。演示在这里。
- [2023/11/05] 🔥 使用 IP 适配器和 Kandinsky 2.2 Prior 添加文本到图像的演示
- [2023/11/02] 支持安全张量
- [2023/9/08] 🔥 更新新版本的 IP-Adapter SDXL_1.0。更多信息可以在这里找到。
- [2023/9/05] 🔥🔥🔥 WebUI 和 ComfyUI(或 ComfyUI_IPAdapter_plus)支持 IP-Adapter。
- [2023/8/30] 🔥 根据提示添加带有人脸图像的 IP 适配器。演示在这里。
- [2023/8/29] 🔥 发布训练代码。
- [2023/8/23] 🔥 添加具有细粒度功能的 IP-Adapter 代码和型号。演示在这里。
- [2023/8/18] 🔥 为 SDXL 1.0 添加代码和模型。演示在这里。
- [2023/8/16] 🔥 我们发布代码和模型。
安装
# install latest diffusers
pip install diffusers==0.22.1
# install ip-adapter
pip install git+https://github.com/tencent-ailab/IP-Adapter.git
# download the models
cd IP-Adapter
git lfs install
git clone https://huggingface.co/h94/IP-Adapter
mv IP-Adapter/models models
mv IP-Adapter/sdxl_models sdxl_models
# then you can use the notebook
install ip-adapter
pip install git+https://github.com/tencent-ailab/IP-Adapter.git
download the models
cd IP-Adapter
git lfs install
git clone https://huggingface.co/h94/IP-Adapter
mv IP-Adapter/models models
mv IP-Adapter/sdxl_models sdxl_models
下载模型
您可以从这里下载模型。要运行演示,您还应该下载以下模型:
- 跑道ML / 稳定扩散-V1-5
- 稳定性AI/SD-VAE-FT-MSE
- SG161222/Realistic_Vision_V4.0_noVAE
- ControlNet 模型
如何使用
最佳实践
- 如果仅使用图像提示,则可以设置 and(或一些通用文本提示,例如“最佳质量”,也可以使用任何否定文本提示)。如果降低 ,可以生成更多样化的图像,但它们可能与图像提示不一致。
scale=1.0``text_prompt=""``scale
- 对于多模式提示,您可以调整 以获得最佳结果。在大多数情况下,设置可以获得良好的效果。对于 SD 1.5 版本,我们建议使用社区模型来生成良好的图像。
scale``scale=0.5
用于非方形图像的 IP 适配器
由于图像在 CLIP 的默认图像处理器中居中裁剪,因此 IP 适配器最适合方形图像。对于非正方形图像,它会错过中心之外的信息。
SDXL_1.0
- ip_adapter_sdxl_demo:带有图像提示的图像变化。
- ip_adapter_sdxl_controlnet_demo:带有图像提示的结构生成。
IP-Adapter_XL与Reimagine XL的比较如下:
[图片上传失败…(image-8cda2a-1701140382732)]
新版本 (2023.9.8) 中的改进:
- 切换到 CLIP-ViT-H:我们使用 OpenCLIP-ViT-H-14 而不是 OpenCLIP-ViT-bigG-14 训练新的 IP 适配器。虽然ViT-bigG比ViT-H大得多,但我们的实验结果没有发现显著的差异,更小的模型可以减少推理阶段的内存使用。
- 更快、更好的训练秘诀:在我们之前的版本中,直接以 1024x1024 的分辨率进行训练被证明是非常低效的。但是,在新版本中,我们实施了更有效的两阶段培训策略。首先,我们以 512x512 的分辨率进行预训练。然后,我们采用多尺度策略进行微调。(也许这种训练策略也可以用来加速控制网的训练)。
如何训练
对于训练,您应该安装 accelerate 并将自己的数据集制作成 json 文件。
accelerate launch --num_processes 8 --multi_gpu --mixed_precision "fp16" \
tutorial_train.py \
--pretrained_model_name_or_path="runwayml/stable-diffusion-v1-5/" \
--image_encoder_path="{image_encoder_path}" \
--data_json_file="{data.json}" \
--data_root_path="{image_path}" \
--mixed_precision="fp16" \
--resolution=512 \
--train_batch_size=8 \
--dataloader_num_workers=4 \
--learning_rate=1e-04 \
--weight_decay=0.01 \
--output_dir="{output_dir}" \
--save_steps=10000
第三方使用
- 用于 WebUI 的 IP 适配器 [发行说明]
- ComfyUI 的 IP 适配器 [IPAdapter-ComfyUI 或ComfyUI_IPAdapter_plus]
- 用于 InvokeAI 的 IP 适配器 [发行说明]
- 用于 AnimateDiff 提示行程的 IP 适配器
- Diffusers_IPAdapter:支持多输入图像等更多功能
- 官方扩散器