HPS v2: 文本到图像生成模型基准测试
这是论文《人类偏好评分v2:评估文本到图像合成人类偏好的可靠基准》的官方代码仓库。
更新
- [2024/02/09] 我们发布了在更高质量数据集上训练的HPS v2.1模型,以及HPD v2.0的训练集。新年快乐!
- [2023/02/08] 我们发布了PyPI包。您可以从快速开始章节了解如何使用它。
- [2023/02/08] 更新了test.json以包含每位标注者的原始标注。
- [2023/07/29] 我们在基准测试中加入了
SDXL Refiner 0.9
模型。 - [2023/07/29] 我们发布了基准测试和HPD v2测试数据。HPD v2训练数据将很快发布。
- [2023/07/27] 我们在基准测试中加入了
SDXL Base 0.9
模型。 - [2023/07/26] 我们更新了压缩检查点。
- [2023/07/19] 在🤗Hugging Face上提供在线演示。
- [2023/07/18] 我们发布了测试数据。
概览
人类偏好数据集v2 (HPD v2):一个大规模(798k偏好选择 / 430k图像)、标注良好的数据集,包含人类对文本到图像生成模型生成图像的偏好选择。
人类偏好评分v2 (HPS v2):在HPD v2上训练的偏好预测模型。HPS v2可用于比较使用相同提示生成的图像。我们还提供了一套公平、稳定且易于使用的评估提示,用于文本到图像生成模型。
HPS基准测试
HPS基准测试评估模型在4种风格下生成图像的能力:动画、概念艺术、绘画和照片。
v2基准测试
模型 | 动画 | 概念艺术 | 绘画 | 照片 | 平均分 |
---|---|---|---|---|---|
Dreamlike Photoreal 2.0 | 28.24 | 27.60 | 27.59 | 27.99 | 27.86 |
SDXL Refiner 0.9 | 28.45 | 27.66 | 27.67 | 27.46 | 27.80 |
Realistic Vision | 28.22 | 27.53 | 27.56 | 27.75 | 27.77 |
SDXL Base 0.9 | 28.42 | 27.63 | 27.60 | 27.29 | 27.73 |
Deliberate | 28.13 | 27.46 | 27.45 | 27.62 | 27.67 |
ChilloutMix | 27.92 | 27.29 | 27.32 | 27.61 | 27.54 |
MajicMix Realistic | 27.88 | 27.19 | 27.22 | 27.64 | 27.48 |
Openjourney | 27.85 | 27.18 | 27.25 | 27.53 | 27.45 |
DeepFloyd-XL | 27.64 | 26.83 | 26.86 | 27.75 | 27.27 |
Epic Diffusion | 27.57 | 26.96 | 27.03 | 27.49 | 27.26 |
Stable Diffusion v2.0 | 27.48 | 26.89 | 26.86 | 27.46 | 27.17 |
Stable Diffusion v1.4 | 27.26 | 26.61 | 26.66 | 27.27 | 26.95 |
DALL·E 2 | 27.34 | 26.54 | 26.68 | 27.24 | 26.95 |
Versatile Diffusion | 26.59 | 26.28 | 26.43 | 27.05 | 26.59 |
CogView2 | 26.50 | 26.59 | 26.33 | 26.44 | 26.47 |
VQGAN + CLIP | 26.44 | 26.53 | 26.47 | 26.12 | 26.39 |
DALL·E mini | 26.10 | 25.56 | 25.56 | 26.12 | 25.83 |
Latent Diffusion | 25.73 | 25.15 | 25.25 | 26.97 | 25.78 |
FuseDream | 25.26 | 25.15 | 25.13 | 25.57 | 25.28 |
VQ-Diffusion | 24.97 | 24.70 | 25.01 | 25.71 | 25.10 |
LAFITE | 24.63 | 24.38 | 24.43 | 25.81 | 24.81 |
GLIDE | 23.34 | 23.08 | 23.27 | 24.50 | 23.55 |
v2.1基准测试
| 模型 | 动画 | 概念艺术 | 绘画 | 照片 | 平均 | | ---------------------| --------- | ----------- | -------- | -------- | -------- | | SDXL Refiner 0.9 | 33.26 | 32.07 | 31.63 | 28.38 | 31.34 | | SDXL Base 0.9 | 32.84 | 31.36 | 30.86 | 27.48 | 30.63 | | Deliberate | 31.46 | 30.48 | 30.17 | 28.83 | 30.23 | | Realistic Vision | 31.01 | 29.95 | 30.00 | 28.61 | 29.89 | | Dreamlike Photoreal 2.0 | 30.87 | 29.75 | 29.46 | 28.85 | 29.73 | | MajicMix Realistic | 29.67 | 28.50 | 28.44 | 28.02 | 28.66 | | ChilloutMix | 29.46 | 28.46 | 28.35 | 27.63 | 28.47 | | Openjourney | 28.37 | 27.38 | 27.53 | 26.66 | 27.48 | | DeepFloyd-XL | 27.71 | 26.07 | 25.79 | 27.96 | 26.88 | | Epic Diffusion | 27.07 | 26.14 | 26.17 | 26.43 | 26.45 | | Stable Diffusion v2.0 | 27.09 | 26.02 | 25.68 | 26.73 | 26.38 | | Stable Diffusion v1.4 | 26.03 | 24.87 | 24.80 | 25.70 | 25.35 | | DALL·E 2 | 26.38 | 24.51 | 24.93 | 25.55 | 25.34 | | Versatile Diffusion | 23.69 | 23.39 | 24.02 | 24.64 | 23.93 | | CogView2 | 23.64 | 24.86 | 23.40 | 22.68 | 23.64 | | VQGAN + CLIP | 22.55 | 23.76 | 23.41 | 21.51 | 22.81 | | DALL·E mini | 21.54 | 20.50 | 20.32 | 21.72 | 21.02 | | Latent Diffusion | 20.63 | 19.65 | 19.79 | 21.26 | 20.34 | | FuseDream | 19.16 | 19.37 | 19.07 | 20.07 | 19.42 | | VQ-Diffusion | 18.44 | 18.31 | 19.24 | 20.62 | 19.15 | | LAFITE | 17.79 | 17.55 | 17.61 | 20.88 | 18.46 | | GLIDE | 13.90 | 13.50 | 13.94 | 16.72 | 14.51 |快速入门
安装
# 方法1:通过Pypi下载安装
pip install hpsv2
# 方法2:本地安装
git clone https://github.com/tgxs002/HPSv2.git
cd HPSv2
pip install -e .
# 可选:用于重现我们基准测试的图像将下载到这里
# 默认路径:~/.cache/hpsv2/
export HPS_ROOT=/your/cache/path
安装完成后,我们将展示如何:
- 使用HPS v2比较图像。
- 重现我们的基准测试。
- 使用HPS v2评估您自己的模型。
- 评估我们的偏好模型。
我们还提供了命令行界面用于调试目的。
图像比较
您可以通过运行以下代码对由相同提示生成的几张图像进行评分和比较:
import hpsv2
# imgs_path可以是由相同提示生成的图像路径列表
# 或者字符串类型的图像路径
# 或者PIL.Image.Image类型的图像
result = hpsv2.score(imgs_path, '<prompt>', hps_version="v2.1")
注意:比较仅对由相同提示生成的图像有意义。您也可以将"v2.0"传递给hps_version以使用我们更新的模型。v2.0和v2.1之间的分数不能直接比较。
基准测试重现
我们还提供了我们基准测试中使用的模型生成的图像用于评估。您可以通过运行以下代码轻松下载数据并评估模型:
import hpsv2
print(hpsv2.get_available_models()) # 获取可访问数据的模型
hpsv2.evaluate_benchmark('<model_name>')
自定义评估
要评估您自己的文本到图像生成模型,您可以根据我们提供的基准提示准备用于评估的图像,方法是运行以下代码:
import os
import hpsv2
# 获取基准提示(<style> = all, anime, concept-art, paintings, photo)
all_prompts = hpsv2.benchmark_prompts('all')
# 遍历基准提示以生成图像
for style, prompts in all_prompts.items():
for idx, prompt in enumerate(prompts):
image = TextToImageModel(prompt)
# TextToImageModel是您想要评估的模型
image.save(os.path.join("<image_path>", style, f"{idx:05d}.jpg"))
# <image_path>是存储生成图像的文件夹路径,作为hpsv2.evaluate()的输入。
然后运行以下代码进行评估:
import hpsv2
# <image_path>与前一部分中的<image_path>相同。
# <hps_version>是HPS模型的版本,可以是v2或v2.1。默认为v2。
hpsv2.evaluate("<images_path>", hps_version="<hps_version>")
偏好模型评估
评估HPS v2与人类偏好选择的相关性:
模型 | ImageReward测试集准确率(%) | HPD v2测试集准确率(%) | 新测试集准确率(%) |
---|---|---|---|
审美分数预测器 | 57.4 | 76.8 | 57.8* |
ImageReward | 65.1 | 74.0 | 67.4* |
HPS | 61.2 | 77.6 | 66.8* |
PickScore | 62.9 | 79.8 | 67.8* |
单个人类 | 65.3 | 78.1 | 65.4* |
HPS v2 | 65.7 | 83.3 | 73.2* |
HPS v2.1 | 66.8 | 84.1 | 74.8* |
* 新测试集是另一个类似于HPD v2测试集的测试集,只是图像是由10个更好的模型生成的(Dreamlike Photoreal 2.0, SDXL Refiner 0.9, Realistic Vision, SDXL Base 0.9, Deliberate, ChilloutMix, MajicMix Realistic, Openjourney, DeepFloyd-XL, Epic Diffusion)。
HPS v2检查点可以从这里下载。模型和在线演示也托管在🤗 Hugging Face上的这里。
运行以下命令以在HPD v2测试集和ImageReward测试集上评估HPS v2模型(需要先安装hpsv2
包):
# 在HPD v2测试集上评估
python evaluation.py --data-type test --data-path /path/to/HPD --image-path /path/to/image_folder
# 在ImageReward测试集上评估
python evaluation.py --data-type ImageReward --data-path /path/to/IR --image-path /path/to/image_folder
人类偏好数据集v2
我们数据集中的提示来自DiffusionDB和MSCOCO Captions。DiffusionDB的提示首先由ChatGPT清理以删除有偏见的功能词。人类标注者的任务是对不同文本到图像生成模型从同一提示生成的图像进行排序。总共有约798k对图像比较,涉及超过430k张图像和107k个提示,其中645k对用于训练集,153k对用于测试集。
HPD v2的图像来源:
来源 | 图像数量 |
---|---|
CogView2 | 73697 |
DALL·E 2 | 101869 |
GLIDE (mini) | 400 |
Stable Diffusion v1.4 | 101869 |
Stable Diffusion v2.0 | 101869 |
LAFITE | 400 |
VQ-GAN+CLIP | 400 |
VQ-Diffusion | 400 |
FuseDream | 400 |
COCO Captions | 28272 |
下载
训练和测试数据现已完全发布,可以从这里下载。 您可以在https://tgxs002.github.io/hpd_test_vis/查看测试数据。以下是截图:
您可以手动下载并解压,或直接使用HPDv2运行以下代码:
from datasets import load_dataset
dataset = load_dataset("HPDv2.py")
数据结构
解压后,您应该得到一个具有以下结构的文件夹:
HPD
---- train/
-------- {image_id}.jpg
---- test/
-------- {image_id}.jpg
---- train.json
---- test.json
---- benchmark/
-------- benchmark_imgs/
------------ {model_id}/
---------------- {image_id}.jpg
-------- drawbench/
------------ {model_id}/
---------------- {image_id}.jpg
-------- anime.json
-------- concept-art.json
-------- paintings.json
-------- photo.json
-------- drawbench.json
注释文件train.json
的组织方式如下:
[
{
'human_preference': list[int], # 1表示偏好
'prompt': str,
'file_path': list[str],
},
...
]
注释文件test.json
的组织方式如下:
[
{
'prompt': str,
'image_path': list[str],
'rank': list[int], # image_path中相同索引图像的平均排名结果
'raw_annotations': list[{'rank', 'user_hash'}] # 每个标注者的原始排名结果
},
...
]
基准提示文件,如anime.json
,是纯文本提示。对应的图像可以通过索引提示在相应模型的文件夹中找到。
命令行界面
使用HPS v2评估文本到图像生成模型
我们实验中生成的图像可以从这里下载。
以下脚本复现了基准表和我们在DrawBench上的结果(在论文中报告)(需要先安装hpsv2
包):
# HPS v2基准(适用于多个模型)
python evaluation.py --data-type benchmark_all --data-path /path/to/HPD/benchmark --image-path /path/to/benchmark_imgs
# HPS v2基准(仅适用于一个模型)
python evaluation.py --data-type benchmark --data-path /path/to/HPD/benchmark --image-path /path/to/benchmark_imgs/${model_name}
# DrawBench
python evaluation.py --data-type drawbench --data-path /path/to/HPD/benchmark --image-path /path/to/drawbench_imgs
对单个生成图像及其对应提示进行评分
我们在此仓库的asset/images
目录中提供了一个示例图像。对应的提示是"A cat with two horns on its head"。
运行以下命令对单个生成图像及其对应提示进行评分(需要先安装hpsv2
包):
python img_score.py --image-path assets/demo_image.jpg --prompt 'A cat with two horns on its head'
其中参数image-path
可以接受多个值。
训练人类偏好预测器
要训练您自己的人类偏好预测器,只需更改configs/controller.sh
中的相应路径,并运行以下命令:
# 如果您在本地运行
bash configs/HPSv2.sh train 8 local
# 如果您在slurm上运行
bash configs/HPSv2.sh train 8 ${quota_type}
BibTeX
@article{wu2023human,
title={Human Preference Score v2: A Solid Benchmark for Evaluating Human Preferences of Text-to-Image Synthesis},
author={Wu, Xiaoshi and Hao, Yiming and Sun, Keqiang and Chen, Yixiong and Zhu, Feng and Zhao, Rui and Li, Hongsheng},
journal={arXiv preprint arXiv:2306.09341},
year={2023}
}