PickScore:推动文本到图像生成技术的新标准
在人工智能和计算机视觉领域,文本到图像生成技术一直是一个备受关注的研究方向。然而,如何准确评估和预测用户对生成图像的偏好一直是一个挑战。为了解决这个问题,来自特拉维夫大学、理工学院和Stability AI的研究团队开发了PickScore——一个开创性的开放数据集和评分模型。本文将详细介绍PickScore的开发过程、主要特点及其潜在应用。
Pick-a-Pic:构建用户偏好数据集的创新方法
PickScore项目的核心是Pick-a-Pic数据集。研究团队开发了一个网络应用(https://pickapic.io/),让用户可以使用最先进的文本到图像生成模型创建图像,并明确表达他们的偏好。在获得用户明确同意的情况下,研究人员收集了超过50万个样本,每个样本包含一个提示、两张生成的图像,以及表明用户偏好的标签。
这种创新的数据收集方法有几个显著优势:
- 真实性:数据来自真实用户的实际偏好,而不是人为构造的场景。
- 多样性:涵盖了广泛的提示和图像风格,反映了用户兴趣的多样性。
- 规模:大规模数据集为深入研究和模型训练提供了坚实基础。
PickScore:超越人类的偏好预测模型
利用Pick-a-Pic数据集,研究团队通过微调CLIP-H模型开发了PickScore评分函数。该函数旨在最大化用户偏好图像相对于非偏好图像被选择的概率。经过训练,PickScore在预测用户偏好方面展现出了惊人的性能:
- PickScore准确率:70.2%
- 人类专家准确率:68.0%
- 零样本CLIP-H准确率:60.8%
- 流行美学预测器准确率:56.8%
这些结果表明,PickScore不仅超越了现有的自动评估指标,甚至在某些方面超越了人类专家的判断能力。
PickScore的广泛应用
PickScore的开发为文本到图像生成领域带来了多方面的积极影响:
-
更准确的模型评估:研究表明,PickScore与人类偏好的相关性(0.917)远高于传统的FID指标(-0.900)。这为评估文本到图像生成模型提供了一个更可靠的标准。
-
改进的评估协议:研究团队建议使用Pick-a-Pic数据集中的提示来评估模型,这些提示更准确地反映了人类的实际需求,相比于MS-COCO等传统数据集中的简单描述更具挑战性和现实意义。
-
增强现有模型:通过使用PickScore进行图像选择,可以显著提高文本到图像生成模型的输出质量。
-
为未来研究铺平道路:Pick-a-Pic数据集和PickScore模型为进一步的研究,如强化学习人类反馈(RLHF)等对齐方法提供了基础。
PickScore的技术细节
为了让读者更好地理解PickScore的工作原理,以下是使用PickScore进行推理的示例代码:
from transformers import AutoProcessor, AutoModel
from PIL import Image
import torch
# 加载模型
device = "cuda"
processor_name_or_path = "laion/CLIP-ViT-H-14-laion2B-s32B-b79K"
model_pretrained_name_or_path = "yuvalkirstain/PickScore_v1"
processor = AutoProcessor.from_pretrained(processor_name_or_path)
model = AutoModel.from_pretrained(model_pretrained_name_or_path).eval().to(device)
def calc_probs(prompt, images):
# 预处理
image_inputs = processor(
images=images,
padding=True,
truncation=True,
max_length=77,
return_tensors="pt",
).to(device)
text_inputs = processor(
text=prompt,
padding=True,
truncation=True,
max_length=77,
return_tensors="pt",
).to(device)
with torch.no_grad():
# 嵌入
image_embs = model.get_image_features(**image_inputs)
image_embs = image_embs / torch.norm(image_embs, dim=-1, keepdim=True)
text_embs = model.get_text_features(**text_inputs)
text_embs = text_embs / torch.norm(text_embs, dim=-1, keepdim=True)
# 评分
scores = model.logit_scale.exp() * (text_embs @ image_embs.T)[0]
# 如果有多个图像可供选择,获取概率
probs = torch.softmax(scores, dim=-1)
return probs.cpu().tolist()
# 使用示例
pil_images = [Image.open("image1.jpg"), Image.open("image2.jpg")]
prompt = "一个美丽的日落场景"
print(calc_probs(prompt, pil_images))
这段代码展示了如何使用PickScore来评估给定提示和图像之间的匹配程度,为开发者和研究人员提供了一个实用的工具。
结论
PickScore项目通过创新的数据收集方法和先进的模型训练技术,为文本到图像生成领域带来了突破性的进展。它不仅提供了一个大规模的开放数据集,还开发了一个超越人类表现的评分模型。这些成果为改进现有模型、建立更准确的评估标准,以及推动未来研究提供了宝贵的资源。
随着Pick-a-Pic数据集和PickScore模型的开源,研究社区有了更多机会探索和改进文本到图像生成技术。我们期待看到这项工作在未来如何推动人工智能创造力的进一步发展,为艺术创作、设计和其他视觉相关领域带来新的可能性。
📚 相关资源:
通过这些资源,研究者和开发者可以深入了解PickScore项目,并将其应用到自己的工作中,共同推动文本到图像生成技术的发展。