模型:

kakaobrain/karlo-v1-alpha

英文

Karlo v1 alpha

Karlo是基于OpenAI的unCLIP架构的文本条件图像生成模型,改进了标准的超分辨率模型,将分辨率从64px提高到256px,仅在少量降噪步骤中恢复高频细节。

用法

Karlo可在diffusers中使用!

pip install diffusers transformers accelerate safetensors

文本到图像

from diffusers import UnCLIPPipeline
import torch

pipe = UnCLIPPipeline.from_pretrained("kakaobrain/karlo-v1-alpha", torch_dtype=torch.float16)
pipe = pipe.to('cuda')

prompt = "a high-resolution photograph of a big red frog on a green leaf."

image = pipe([prompt]).images[0]

image.save("./frog.png")

图像变体

from diffusers import UnCLIPImageVariationPipeline
import torch
from PIL import Image

pipe = UnCLIPImageVariationPipeline.from_pretrained("kakaobrain/karlo-v1-alpha-image-variations", torch_dtype=torch.float16)
pipe = pipe.to('cuda')

image = Image.open("./frog.png")

image = pipe(image).images[0]

image.save("./frog-variation.png")

模型架构

概述

Karlo是一个基于unCLIP的文本条件扩散模型,由先验、解码器和超分辨率模块组成。在这个存储库中,我们包括了标准超分辨率模块的改进版本,用于将64px提升到256px,仅需7个反向步骤,如下图所示:

具体来说,通过重新定位技术,DDPM目标训练的标准SR模块在前6个降噪步骤中将64px放大到256px。然后,通过使用 VQ-GAN 风格损失进行额外的微调,额外的SR模块执行最后的反向步骤以恢复高频细节。我们观察到,这种方法在少量反向步骤中放大低分辨率非常有效。

详细信息

我们从头开始在115M张图像文本对上训练了所有组件,包括COYO-100M、CC3M和CC12M。在先验和解码器的情况下,我们使用了OpenAI的 CLIP repository 提供的ViT-L/14。与unCLIP的原始实现不同,我们将解码器中的可训练变压器替换为ViT-L/14中的文本编码器以提高效率。至于SR模块,我们首先使用DDPM目标在1M步骤中训练模型,然后再进行额外的23.4K步骤来微调额外的组件。下表总结了我们组件的重要统计信息:

Prior Decoder SR
CLIP ViT-L/14 ViT-L/14 -
#param 1B 900M 700M + 700M
#optimization steps 1M 1M 1M + 0.2M
#sampling steps 25 50 (default), 25 (fast) 7
Checkpoint links 1239321 , 12310321 , 12311321 12312321 12313321

在检查点链接中,ViT-L-14等效于原始版本,但我们为了方便起见将其包含在内。我们还要注意,ViT-L-14-stats用于归一化先验模块的输出。

评估

我们在CC3M和MS-COCO的验证集中定量衡量了Karlo-v1.0.alpha的性能。下表显示了CLIP分数和FID。为了测量FID,我们将较短边的图像缩放为256px,然后在中心进行裁剪。我们设置先验和解码器的无分类器指导比例为4和8。我们观察到,即使在解码器的25个采样步骤中,我们的模型也能达到合理的性能。

CC3M

Sampling step CLIP-s (ViT-B/16) FID (13k from val)
Prior (25) + Decoder (25) + SR (7) 0.3081 14.37
Prior (25) + Decoder (50) + SR (7) 0.3086 13.95

MS-COCO

Sampling step CLIP-s (ViT-B/16) FID (30k from val)
Prior (25) + Decoder (25) + SR (7) 0.3192 15.24
Prior (25) + Decoder (50) + SR (7) 0.3192 14.43

更多信息,请参阅即将发布的技术报告。

训练细节

这个Karlo的alpha版本是在115M的图像文本对上训练的,包括 COYO -100M的高质量子集、CC3M和CC12M。对于那些对在更大规模的高质量数据集上训练的更好版本的Karlo感兴趣的人,请访问我们的应用程序 B^DISCOVER 的主页。

物理学家

如果您在研究中发现了这个存储库的用处,请引用:

@misc{kakaobrain2022karlo-v1-alpha,
  title         = {Karlo-v1.0.alpha on COYO-100M and CC15M},
  author        = {Donghoon Lee, Jiseob Kim, Jisu Choi, Jongmin Kim, Minwoo Byeon, Woonhyuk Baek and Saehoon Kim},
  year          = {2022},
  howpublished  = {\url{https://github.com/kakaobrain/karlo}},
}