模型:

kakaobrain/karlo-v1-alpha-image-variations

英文

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的文本条件扩散模型,由先验、解码器和超分辨率模块组成。在这个存储库中,我们包含了标准超分辨率模块的改进版本,用于在7个反向步骤中将64px的图像放大到256px,如下图所示:

具体而言,标准的SR模块通过DDPM目标在前6个去噪步骤中使用重排技术将64px放大到256px。然后,额外的经过微调的SR模块通过 VQ-GAN 风格损失执行最后一步反向操作以恢复高频细节。我们观察到这种方法非常有效地将低分辨率图像放大到较高分辨率,仅需较少的反向步骤。

细节

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

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在包括 COYO -100M高质量子集、CC3M和CC12M在内的115M个图像-文本对上进行了训练。对于对更大规模高质量数据集上训练的更好版本的Karlo感兴趣的人,请访问我们的应用程序 B^DISCOVER 的首页。

BibTex

如果您在研究中发现这个存储库对您有用,请引用:

@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}},
}