🚀 Kandinsky 2.2
Kandinsky继承了Dall - E 2和潜在扩散模型的最佳实践,并引入了一些新的理念。它利用CLIP模型作为文本和图像编码器,并在CLIP模态的潜在空间之间采用扩散图像先验(映射)。这种方法提升了模型的视觉表现,为图像融合和文本引导的图像操作开辟了新的可能性。
🚀 快速开始
Kandinsky 2.2可在diffusers中使用!
pip install diffusers transformers accelerate
✨ 主要特性
Kandinsky继承了Dall - E 2和潜在扩散模型的优点,同时引入新思想。它使用CLIP模型进行文本和图像编码,并通过扩散图像先验提升视觉性能,在图像与文本融合及文本引导的图像操作方面具有独特优势。
💻 使用示例
基础用法
文本引导的图像修复生成
from diffusers import AutoPipelineForInpainting
from diffusers.utils import load_image
import torch
import numpy as np
pipe = AutoPipelineForInpainting.from_pretrained("kandinsky-community/kandinsky-2-2-decoder-inpaint", torch_dtype=torch.float16)
pipe.enable_model_cpu_offload()
prompt = "a hat"
init_image = load_image(
"https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main" "/kandinsky/cat.png"
)
mask = np.zeros((768, 768), dtype=np.float32)
mask[:250, 250:-250] = 1
out = pipe(
prompt=prompt,
image=init_image,
mask_image=mask,
height=768,
width=768,
num_inference_steps=150,
)
image = out.images[0]
image.save("cat_with_hat.png")

高级用法
Kandinsky图像修复管道的重大变更
我们在以下拉取请求中对Kandinsky图像修复管道进行了重大更改:https://github.com/huggingface/diffusers/pull/4207。之前,我们接受的掩码格式是黑色像素表示被屏蔽区域,这与diffusers中的所有其他管道不一致。现在,我们在Kandinsky中更改了掩码格式,使用白色像素表示被屏蔽区域。
如果您在生产环境中使用Kandinsky图像修复,请将掩码更新为以下形式:
import PIL.ImageOps
mask = PIL.ImageOps.invert(mask)
mask = 1 - mask
🔧 技术细节
概述
Kandinsky 2.1是一个基于unCLIP和潜在扩散的文本条件扩散模型,由基于Transformer的图像先验模型、Unet扩散模型和解码器组成。
模型架构如下图所示 - 左侧的图表描述了训练图像先验模型的过程,中间的图是文本到图像的生成过程,右侧的图是图像插值。
具体而言,图像先验模型在使用预训练的[mCLIP模型](https://huggingface.co/M - CLIP/XLM - Roberta - Large - Vit - L - 14)生成的CLIP文本和图像嵌入上进行训练。训练好的图像先验模型用于为输入文本提示生成mCLIP图像嵌入。输入文本提示及其mCLIP图像嵌入都用于扩散过程。[MoVQGAN](https://openreview.net/forum?id=Qb - AoSw4Jnm)模型作为模型的最后一个模块,将潜在表示解码为实际图像。
详细信息
模型的图像先验训练在LAION Improved Aesthetics数据集上进行,然后在[LAION HighRes数据](https://huggingface.co/datasets/laion/laion - high - resolution)上进行微调。
主要的文本到图像扩散模型基于来自[LAION HighRes数据集](https://huggingface.co/datasets/laion/laion - high - resolution)的1.7亿个文本 - 图像对进行训练(一个重要条件是存在分辨率至少为768x768的图像)。使用1.7亿个文本 - 图像对是因为我们保留了Kandinsky 2.0的Unet扩散块,这使我们无需从头开始训练它。此外,在微调阶段,使用了一个从开放源单独收集的包含200万个非常高质量的高分辨率图像及其描述的数据集(COYO、动漫、俄罗斯地标等)。
评估
我们在COCO_30k数据集上以零样本模式定量测量Kandinsky 2.1的性能。下表展示了FID值。
生成模型在COCO_30k上的FID指标值
|
FID (30k) |
eDiff - I (2022) |
6.95 |
Image (2022) |
7.27 |
Kandinsky 2.1 (2023) |
8.21 |
Stable Diffusion 2.1 (2022) |
8.59 |
GigaGAN, 512x512 (2023) |
9.09 |
DALL - E 2 (2022) |
10.39 |
GLIDE (2022) |
12.24 |
Kandinsky 1.0 (2022) |
15.40 |
DALL - E (2021) |
17.89 |
Kandinsky 2.0 (2022) |
20.00 |
GLIGEN (2022) |
21.04 |
更多信息,请参考即将发布的技术报告。
📄 许可证
本项目采用Apache 2.0许可证。
📚 引用
如果您在研究中发现此仓库有用,请引用:
@misc{kandinsky 2.2,
title = {kandinsky 2.2},
author = {Arseniy Shakhmatov, Anton Razzhigaev, Aleksandr Nikolich, Vladimir Arkhipkin, Igor Pavlov, Andrey Kuznetsov, Denis Dimitrov},
year = {2023},
howpublished = {},
}