| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
📃 Paper • 🖼 Dataset • 🌐 中文博客 • 🤗 HF Repo • 🐦 Twitter
🔥🔥 News! 2024/12/31: We released the next generation of model, VisionReward, which is a fine-grained and multi-dimensional reward model for stable RLHF for visual generation (text-to-image / text-to-video)!
🔥 News! 2023/9/22: The paper of ImageReward is accepted by NeurIPS 2023!
ImageReward: Learning and Evaluating Human Preferences for Text-to-Image Generation
ImageReward is the first general-purpose text-to-image human preference RM, which is trained on in total 137k pairs of expert comparisons, outperforming existing text-image scoring methods, such as CLIP (by 38.6%), Aesthetic (by 39.6%), and BLIP (by 31.6%), in terms of understanding human preference in text-to-image synthesis.
Additionally, we introduce Reward Feedback Learning (ReFL) for direct optimizing a text-to-image diffusion model using ImageReward. ReFL-tuned Stable Diffusion wins against untuned version by 58.4% in human evaluation.
Both ImageReward and ReFL are all packed up to Python image-reward package now!
Try image-reward package in only 3 lines of code for ImageReward scoring!
# 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>", ...])Try image-reward package in only 4 lines of code for ReFL fine-tuning!
# 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)If you find ImageReward's open-source effort useful, please 🌟 us to encourage our following developement!
We have integrated the whole repository to a single python package image-reward. Following the commands below to prepare the environment:
# Clone the ImageReward repository (containing data for testing)
git clone https://github.com/THUDM/ImageReward.git
cd ImageReward
# Install the integrated package `image-reward`
pip install image-rewardWe provide example images in the assets/images directory of this repo. The example prompt is:
a painting of an ocean with clouds and birds, day time, low depth field effect
Use the following code to get the human preference scores from ImageReward:
import os
import torch
import ImageReward as RM
if __name__ == "__main__":
prompt = "a painting of an ocean with clouds and birds, day time, low depth field effect"
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 the result
print("\nPreference predictions:\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}")The output should be like as follow (the exact numbers may be slightly different depending on the compute device):
Preference predictions:
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
pip install diffusers==0.16.0 accelerate==0.16.0 datasets==2.11.0We provide example dataset for ReFL in the data/refl_data.json of this repo. Run ReFL as following:
bash scripts/train_refl.shDownload data: 🖼 Dataset.
Make dataset.
cd train
python src/make_dataset.pySet training config: train/src/config/config.yaml
One command to train.
bash scripts/train_one_node.shWe have developed a custom script to integrate ImageReward into SD Web UI for a convenient experience.
The script is located at sdwebui/image_reward.py in this repository.
The usage of the script is described as follows:
Note that SD Web UI has two ways to set up its Python environment:
After activating the right Python environment, just do what you want to do true to form.
Note: The experimental results are produced in an environment that satisfies:
Run the following script to automatically download data, baseline models, and run experiments:
bash ./scripts/test-benchmark.shThen you can check the results in benchmark/results/ or the terminal.
If you want to check the raw data files individually:
Run the following script to automatically download data, baseline models, and run experiments:
bash ./scripts/test.shIf you want to check the raw data files individually:
@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}
}
| Back | FazBrowse Home | New Git URL |