ImageReward
ImageReward 是一款专为文生图领域打造的通用人类偏好奖励模型,旨在解决当前 AI 绘图结果难以精准匹配人类审美与意图的难题。作为首个基于 13.7 万对专家对比数据训练的模型,它在理解人类对生成图像的偏好方面表现卓越,准确率显著超越 CLIP、Aesthetic 和 BLIP 等现有评分方法。
除了提供高精度的图像质量评分,ImageReward 还引入了独特的“奖励反馈学习”(ReFL)技术。这一功能允许开发者直接利用人类偏好数据对 Stable Diffusion 等扩散模型进行微调优化,实验证明,经 ReFL 调优后的模型在人类评估中胜率大幅提升。
该工具非常适合 AI 研究人员、算法工程师以及希望提升生成内容质量的应用开发者使用。研究人员可利用其评估新算法的性能;开发者则能通过简单的 Python 代码调用,轻松集成图像自动筛选、评分排序或模型微调功能,从而构建更符合用户需求的文生图应用。目前,ImageReward 已封装为便捷的 Python 包,只需几行代码即可快速上手,是优化文生图工作流的有力助手。
使用场景
某电商设计团队正在利用 Stable Diffusion 批量生成节日促销海报背景,需要在短时间内从数百张候选图中筛选出最符合人类审美且紧扣文案的高质量图片。
没有 ImageReward 时
- 筛选效率低下:设计师只能依靠肉眼逐张检查,面对海量生成结果耗时耗力,严重拖慢项目进度。
- 主观标准不一:不同成员对“好图”的定义存在偏差,导致选图结果缺乏一致性,反复沟通成本高。
- 图文匹配度难控:传统指标(如 CLIP 分数)往往无法精准捕捉人类对画面美感与提示词契合度的真实偏好,常选出“分高但丑”的图片。
- 模型优化盲目:缺乏有效的自动化反馈信号,难以直接针对人类喜好微调生成模型,迭代效果全靠运气。
使用 ImageReward 后
- 自动化高分初筛:利用 ImageReward 的评分接口,几行代码即可瞬间为所有生成图打分,自动过滤掉低分劣质图,仅保留顶部候选供人工复核。
- 对齐人类审美偏好:基于 13.7 万组专家对比数据训练,ImageReward 的评分逻辑高度模拟人类判断,能精准识别出构图精美、风格恰当的图像。
- 量化评估更客观:将模糊的“好看”转化为具体数值,团队可依据统一标准快速决策,大幅减少因主观差异产生的争议。
- 驱动模型定向进化:通过 ReFL 技术将 ImageReward 作为奖励函数直接微调 Stable Diffusion,让模型学会“自我修正”,生成的图片越来越符合业务需求。
ImageReward 通过将抽象的人类审美转化为可计算的奖励信号,彻底解决了文生图应用中“生成易、精选难”的核心痛点,实现了从人工海选到智能优选的效率飞跃。
运行环境要求
- Linux
- Windows
- macOS
需要 NVIDIA GPU(用于复现实验推荐 CUDA 11.7,驱动版本 515.86.01+),具体显存需求未说明但建议 8GB+ 以运行扩散模型微调
未说明

快速开始
ImageReward
📃 论文 • 🖼 数据集 • 🌐 中文博客 • 🤗 HF 仓库 • 🐦 Twitter
🔥🔥 新闻! 2024/12/31: 我们发布了下一代模型,VisionReward,这是一种用于视觉生成(文本到图像 / 文本到视频)稳定 RLHF 的细粒度、多维度奖励模型!
🔥 新闻! 2023/9/22: ImageReward 的论文已被 NeurIPS 2023 接收!
ImageReward:学习与评估人类对文本到图像生成的偏好
ImageReward 是首个通用的文本到图像人类偏好 RM,共基于13.7万组专家比较数据进行训练,在理解文本到图像合成中的人类偏好方面,优于现有的文本-图像评分方法,例如 CLIP(高出 38.6%)、Aesthetic(高出 39.6%)和 BLIP(高出 31.6%)。
此外,我们还引入了奖励反馈学习(ReFL),用于直接使用 ImageReward 优化文本到图像扩散模型。经过 ReFL 微调的 Stable Diffusion 在人工评估中比未微调版本高出 58.4%。
目前,ImageReward 和 ReFL 已全部打包为 Python image-reward 包!
只需三行代码,即可使用 image-reward 包进行 ImageReward 评分!
# pip install image-reward
import ImageReward as RM
model = RM.load("ImageReward-v1.0")
rewards = model.score("<prompt>", ["<img1_obj_or_path>", "<img2_obj_or_path>", ...])
只需四行代码,即可使用 image-reward 包进行 ReFL 微调!
# pip install image-reward
# pip install diffusers==0.16.0 accelerate==0.16.0 datasets==2.11.0
from ImageReward import ReFL
args = ReFL.parse_args()
trainer = ReFL.Trainer("CompVis/stable-diffusion-v1-4", "data/refl_data.json", args=args)
trainer.train(args=args)
如果您觉得 ImageReward 的开源工作很有帮助,请为我们点个星🌟,以鼓励我们继续开发!
快速入门
安装依赖
我们将整个仓库整合为一个 Python 包 image-reward。请按照以下命令准备环境:
# 克隆 ImageReward 仓库(包含测试数据)
git clone https://github.com/THUDM/ImageReward.git
cd ImageReward
# 安装整合后的包 `image-reward`
pip install image-reward
示例用法
我们在该仓库的 assets/images 目录中提供了示例图片。示例提示词为:
一幅描绘海洋、云朵和鸟类的画作,白天场景,浅景深效果
使用以下代码从 ImageReward 获取人类偏好得分:
import os
import torch
import ImageReward as RM
if __name__ == "__main__":
prompt = "一幅描绘海洋、云朵和鸟类的画作,白天场景,浅景深效果"
img_prefix = "assets/images"
generations = [f"{pic_id}.webp" for pic_id in range(1, 5)]
img_list = [os.path.join(img_prefix, img) for img in generations]
model = RM.load("ImageReward-v1.0")
with torch.no_grad():
ranking, rewards = model.inference_rank(prompt, img_list)
# 打印结果
print("\n偏好预测:\n")
print(f"ranking = {ranking}")
print(f"rewards = {rewards}")
for index in range(len(img_list)):
score = model.score(prompt, img_list[index])
print(f"{generations[index]:>16s}: {score:.2f}")
输出应如下所示(具体数值可能因计算设备而略有不同):
偏好预测:
ranking = [1, 2, 3, 4]
rewards = [[0.5811622738838196], [0.2745276093482971], [-1.4131819009780884], [-2.029569625854492]]
1.webp: 0.58
2.webp: 0.27
3.webp: -1.41
4.webp: -2.03
ReFL
安装依赖
pip install diffusers==0.16.0 accelerate==0.16.0 datasets==2.11.0
示例用法
我们在该仓库的 data/refl_data.json 中提供了 ReFL 的示例数据集。按如下方式运行 ReFL:
bash scripts/train_refl.sh
ImageReward 和 ReFL 的演示
ImageReward 的训练代码
下载数据:🖼 数据集。
制作数据集。
cd train
python src/make_dataset.py
设置训练配置:
train/src/config/config.yaml一条命令即可开始训练。
bash scripts/train_one_node.sh
集成到 Stable Diffusion Web UI
我们开发了一个自定义脚本,用于将 ImageReward 集成到 SD Web UI 中,以提供便捷的使用体验。
该脚本位于本仓库的 sdwebui/image_reward.py 文件中。
脚本的使用方法如下:
- 安装:将自定义脚本放入
stable-diffusion-webui/scripts/目录。 - 重新加载:重启服务,或在 SD Web UI 设置页底部点击“重新加载自定义脚本”按钮。(如果找不到该按钮,请尝试点击左侧边栏底部的“显示所有页面”按钮。)
- 选择:返回“txt2img”或“img2img”选项卡,在左下角的“脚本”下拉菜单中选择“ImageReward - 生成人类偏好分数”。
- 运行:具体用法根据功能需求有所不同,详见下方的“功能”部分。
功能
为生成的图像打分并附加到图像信息中
使用方法
- 不要勾选“过滤低分图像”复选框。
- 点击“生成”按钮以生成图像。
- 在画廊下方的图像信息底部查看 ImageReward 分数。
演示视频
https://github.com/THUDM/ImageReward/assets/98524878/9d8a036d-1583-4978-aac7-4b758edf9b89
自动过滤低分图像
使用方法
- 勾选“过滤低分图像”复选框。
- 在“最低分数限制”中输入分数下限。(ImageReward 大致遵循标准正态分布,均值为 0,方差为 1。)
- 点击“生成”按钮以生成图像。
- 分数低于下限的图像将被自动过滤掉,并且不会出现在画廊中。
- 在画廊下方的图像信息底部查看 ImageReward 分数。
演示视频
https://github.com/THUDM/ImageReward/assets/98524878/b9f01629-87d6-4c92-9990-fe065711b9c6
查看已评分图像的分数
使用方法
- 在“PNG 信息”选项卡中上传已评分的图像文件。
- 在右侧查看图像信息,图像分数位于底部。
示例
其他功能
内存管理
- ImageReward 模型仅在首次运行脚本时才会被加载。
- “重新加载 UI”不会重新加载或卸载模型,而是会复用当前已加载的模型(如果存在)。
- 提供了“卸载模型”按钮,可手动卸载当前加载的模型。
常见问题解答
如何调整 SD Web UI 使用的 Python 环境(例如重新安装某个包)?
请注意,SD Web UI 有两种设置 Python 环境的方式:
- 如果您使用
python launch.py启动,Web UI 将使用您PATH中找到的 Python 环境(在 Linux 中,您可以使用which python查看其确切路径)。 - 如果您使用类似
webui-user.bat的脚本启动,Web UI 会在stable-diffusion-webui\venv目录下创建一个新的 venv 环境。- 通常,您还需要执行一些操作来激活此环境。例如,在 Windows 中,您需要进入
stable-diffusion-webui\venv\Scripts目录,运行activate或activate.bat(如果您使用的是 cmd),或者运行activate.ps1(如果您使用的是 PowerShell)。 - 如果您看到命令行最左侧出现
(venv)提示符,则表示您已成功激活 SD Web UI 创建的 venv 环境。
- 通常,您还需要执行一些操作来激活此环境。例如,在 Windows 中,您需要进入
激活正确的 Python 环境后,您就可以按照常规方式执行所需操作了。
复现表 1 中的实验
注意:实验结果是在以下环境中产生的:
- (NVIDIA) 驱动版本:515.86.01
- CUDA 版本:11.7
torch版本:1.12.1+cu113
根据我们的复现实验经验,在其他环境中复现该实验可能会导致最后一位小数出现波动,通常在 ±0.1 的范围内。
运行以下脚本可自动下载数据、基线模型并运行实验:
bash ./scripts/test-benchmark.sh
然后您可以在 benchmark/results/ 或终端 中查看结果。
如果您想单独查看原始数据文件:
- 测试提示词及对应的图像人类评分位于
benchmark/benchmark-prompts.json。 - 每个提示词的生成结果(最初来自 DiffusionDB)可以从 Hugging Face 或 清华大学云盘 下载。
- 每个
<model_name>.zip文件包含一个同名目录,其中共有 1000 张图像,由 100 个提示词各生成 10 张图像。 - 每个
<model_name>.zip文件都应解压到benchmark/generations/目录中,形成名为<model_name>的子目录,存放这些图像。
- 每个
复现表 3 中的实验
运行以下脚本可自动下载数据、基线模型并运行实验:
bash ./scripts/test.sh
如果您想单独查看原始数据文件:
- 测试提示词及对应的图像人类评分位于
data/test.json。 - 每个提示词的生成结果(最初来自 DiffusionDB)可以从 Hugging Face 或 清华大学云盘 下载。下载后应解压至
data/test_images目录。
引用
@inproceedings{xu2023imagereward,
title={ImageReward: learning and evaluating human preferences for text-to-image generation},
author={Xu, Jiazheng and Liu, Xiao and Wu, Yuchen and Tong, Yuxuan and Li, Qinkai and Ding, Ming and Tang, Jie and Dong, Yuxiao},
booktitle={Proceedings of the 37th International Conference on Neural Information Processing Systems},
pages={15903--15935},
year={2023}
}
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
