Karlo v1 Alpha 项目介绍
项目背景
Karlo v1 Alpha 是一个由 OpenAI 的 unCLIP 架构衍生出的文本生成图像模型。与标准的超分辨率模型相比,Karlo 凭借创新技术将图像分辨率从 64px 提升到了 256px,仅需少量去噪步骤即可复原高频细节。项目的原始代码仓库可在 这里 找到。
使用方法
Karlo v1 Alpha 支持 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")
生成的图像将保存为 frog.png
,如下示例所示:
图像变体
Karlo 还支持根据现有图像生成其变体:
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")
通过上述代码生成的变体图像将保存为 frog-variation.png
,如示例所示:
模型架构
概述
Karlo 模型为基于 unCLIP 的文本条件扩散模型,由先验、解码器和超分辨率模块组成。在这一实现中,提高后的标准超分辨率模块能够在七步反向操作中,将64px 图像放大到 256px:
其中,标准的 SR 模块通过 DDPM 目标在前六步去噪过程中使用重新调序技术,从 64px 放大到 256px。经过 VQ-GAN-风格损失的微调,额外的 SR 模块在最后一步恢复高频细节。
详细信息
模型的所有组件均从头开始训练,使用包含 COYO-100M、CC3M 和 CC12M 合计 115M 的图像-文本对。先验和解码器部分使用 OpenAI 的 CLIP 仓库 提供的 ViT-L/14。与原版 unCLIP 实现不同的是,解码器中的可训练 Transformer 被 ViT-L/14 的文本编码器所替代,从而提升效率。
模型统计
模块 | 参数数量 | 优化步骤数 | 采样步骤数 |
---|---|---|---|
先验 | 10 亿 | 100 万次 | 25 次 |
解码器 | 9 亿 | 100 万次 | 默认 50 次,快速 25 次 |
超分辨率 | 7 亿 + 7 亿 | 100 万 + 23.4 万次 | 7 次 |
模型的训练采用 COYO-100M、CC3M、CC12M 等合计 115M 的图像-文本对。
模型评估
Karlo v1 Alpha 在 CC3M 和 MS-COCO 的验证集中进行定量测评。结果如下:
CC3M
采样步骤 | CLIP-s (ViT-B/16) | FID (13k val) |
---|---|---|
先验 (25) + 解码器 (25) + SR (7) | 0.3081 | 14.37 |
先验 (25) + 解码器 (50) + SR (7) | 0.3086 | 13.95 |
MS-COCO
采样步骤 | CLIP-s (ViT-B/16) | FID (30k val) |
---|---|---|
先验 (25) + 解码器 (25) + SR (7) | 0.3192 | 15.24 |
先验 (25) + 解码器 (50) + SR (7) | 0.3192 | 14.43 |
机型通过分别使用 CLIP-score 和 FID 进行性能评估,显示出不俗的表现。
训练详情
Karlo 的 Alpha 版本训练于总计 115M 的图像-文本对,包括 COYO-100M 的高质量子集、CC3M 和 CC12M 等。如需以更大规模高质量数据集进行训练的 Karlo 版本信息,请访问 B^DISCOVER。