模型:
kakaobrain/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}}, }