TIGER-AI-Lab/EditReward

EditReward: A Human-Aligned Reward Model for Instruction-Guided Image Editing [ICLR 2026]

160

stars

61

commits

Python

primary language

Jul 26, 2026

updated

tiger-ai-lab.github.io/EditReward/
diffusion
editing
evaluation

README

✨[ICLR 2026] EditReward: A Human-Aligned Reward Model for Instruction-Guided Image Editing

Project Website arXiv Model Dataset Benchmark

We acknowledge the data contribution and support from Abaka AI

📖 Introduction

This is the official implementation for the paper: EditReward: A Human-Aligned Reward Model for Instruction-Guided Image Editing. In this paper, we introduce EditReward, a human-aligned reward model powered by a high-quality dataset for instruction-guided image editing. We first construct EditReward-Data, a large-scale, high-fidelity preference dataset for instruction-guided image editing. It comprises over 200K manually annotated preference pairs, covering a diverse range of edits produced by seven state-of-the-art models across twelve distinct sources. Every preference annotation in EditReward-Data was curated by trained annotators following a rigorous and standardized protocol, ensuring high alignment with considered human judgment and minimizing label noise. Using this dataset, we train the reward model EditReward to score instruction-guided image edits. To rigorously assess EditReward and future models, we also introduce EditReward-Bench a new benchmark built upon our high-quality annotations, which includes more difficult multi-way preference prediction.

Teaser

📰 News

  • [2026-02-06] 🔥 We started maintaining a list of Awesome Works using EditReward!
  • [2026-01-27] 🔥 Add training & inference support for Qwen3-VL Series!
  • [2026-01-26] 🔥 Our paper has been accepted by ICLR 2026!
  • [2025-10-29] 🔥 Release the training guideline of EditReward, see Training Insctruction!
  • [2025-10-14] 🔥 Release the evaluation code and guideline of EditReward-Bench, see Evaluate Insctruction!
  • [2025-10-10] 🔥 Release our evaluation benchmark EditReward-Bench, Welcome to use!
  • [2025-10-08] 🔥 Release our training dataset EditReward-Data, Welcome to use!
  • [2025-10-03] 🔥 Release inference code and pretrained model.
  • [2025-10-01] 🎉 We initialize the official repo of EditReward.

🚧 TODO List

  • Release inference code and pretrained model
  • Release evaluation benchmark
  • Release training code
  • Release training dataset

📄 Table of Contents


🚀 Quick Start

EditReward is a VLM-based reward model trained on EditReward-Data that demonstrates superior alignment with human preferences.

💻 Installation

# Install locally for development or training.
git clone https://github.com/TIGER-AI-Lab/EditReward.git
cd EditReward

conda create -n edit_reward python=3.10 -y
conda activate edit_reward

# Install PyTorch first (CUDA 12.4 example).
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124

# Install the remaining runtime dependencies.
pip install -U datasets pillow openai megfile sentencepiece deepspeed fire omegaconf \
  matplotlib peft trl==0.8.6 tensorboard scipy transformers==4.57.0 accelerate \
  requests packaging pandas opencv-python einops timm huggingface_hub qwen-vl-utils \
  av regex safetensors tqdm

# Optional but recommended.
pip install https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.2.post1/flash_attn-2.7.2.post1+cu12torch2.5cxx11abiFALSE-cp310-cp310-linux_x86_64.whl

# Install EditReward as an editable package.
pip install -e .

🚀 Usage

Basic Command

import torch
from EditReward import EditRewardInferencer
from EditReward.inference_vl_edit import EditRewardVLInferencer

# ------------------------------------------------------------------------------
# Example script for evaluating edited images with EditReward
# ------------------------------------------------------------------------------

# Package-relative config paths work after `pip install -e .`.
# You can also pass an absolute path to a local YAML config.
CHECKPOINT_PATH = "your/local/path/to/checkpoint"
CONFIG_PATH = "config/EditReward-MiMo-VL-7B-SFT-2508.yaml"

# Initialize reward model
inferencer = EditRewardInferencer(
    config_path=CONFIG_PATH,
    checkpoint_path=CHECKPOINT_PATH,
    device="cuda",        # or "cpu"
    reward_dim="overall_detail",    # choose reward dimension if applicable
    rm_head_type="ranknet_multi_head"
)

# (Optional) Unified inferencer for Qwen2.5-VL / Qwen3-VL:
# Just switch CONFIG_PATH to either:
# - "config/EditReward-Qwen2.5-7B-VL.yaml"
# - "config/EditReward-Qwen3-VL.yaml"
# inferencer = EditRewardVLInferencer(
#     config_path=CONFIG_PATH,
#     checkpoint_path=CHECKPOINT_PATH,
#     device="cuda",
#     reward_dim="overall_detail",
#     rm_head_type="ranknet_multi_head",
# )

# Example input data -----------------------------------------------------------
# image_src = [
#     "../assets/examples/source_img_1.png",
#     "../assets/examples/source_img_1.png",
# ]

# image_paths = [
#     "../assets/examples/target_img_1.png",
#     "../assets/examples/target_img_2.png",
# ]
image_src = [
    "your/local/path/to/source_image_1.jpg",
    "your/local/path/to/source_image_2.jpg",
]

image_paths = [
    "your/local/path/to/edited_image_1.jpg",
    "your/local/path/to/edited_image_2.jpg",
]

# example instruction: "Add a green bowl on the branch"
# prompts = [
#     "Add a green bowl on the branch",
#     "Add a green bowl on the branch"
# ]
prompts = [
    "your first editing instruction",
    "your second editing instruction"
]

# ------------------------------------------------------------------------------
# Main evaluation modes
# ------------------------------------------------------------------------------
if __name__ == "__main__":
    mode = "pairwise_inference"  # or "single_inference"

    if mode == "pairwise_inference":
        # ----------------------------------------------------------
        # Pairwise comparison: compares two edited images side-by-side
        # ----------------------------------------------------------
        with torch.no_grad():
          rewards = inferencer.reward(
              prompts=prompts,
              image_src=image_src,
              image_paths=image_paths
          )
        scores = [reward[0].item() for reward in rewards]
        print(f"[Pairwise Inference] Image scores: {scores}")

    elif mode == "single_inference":
        # ----------------------------------------------------------
        # Single image scoring: evaluates one edited image at a time
        # ----------------------------------------------------------
        with torch.no_grad():
          rewards = inferencer.reward(
              prompts=[prompts[0]],
              image_src=[image_src[0]],
              image_paths=[image_paths[0]]
          )
        print(f"[Single Inference] Image 1 score: {[reward[0].item() for reward in rewards]}")
        
        with torch.no_grad():
          rewards = inferencer.reward(
              prompts=[prompts[0]],
              image_src=[image_src[0]],
              image_paths=[image_paths[1]]
          )
        print(f"[Single Inference] Image 2 score: {[reward[0].item() for reward in rewards]}")

📁 Dataset

EditReward-Data

dataset

Download EditReward

huggingface-cli download --repo-type dataset TIGER-Lab/EditReward-Data --local-dir /your-local-dataset-path

🏋️ Training

🤖 Model Support

  • Qwen2.5-VL Series
  • MiMo-VL Series
  • Qwen3-VL Series

🚀 Training Command

To train EditReward model, follow the detail instruction in Training Insctruction

Unified training entry (Qwen2.5-VL / Qwen3-VL)

We provide a unified training entry that automatically selects the correct model/collator based on model_name_or_path:

# Qwen2.5-VL
python EditReward/train_qwen_vl_edit.py --config EditReward/config/EditReward-Qwen2.5-7B-VL.yaml

# Qwen3-VL
python EditReward/train_qwen_vl_edit.py --config EditReward/config/EditReward-Qwen3-VL.yaml

📊 Benchmark

To evaluate EditReward preference accuracy, follow the detail instruction in Evaluate Insctruction

Experimental Results: Alignment with Humans
MethodGenAI-BenchAURORA-BenchImagenHubEditReward-Bench (Overall)
Random25.9033.43--13.84
Human-to-Human----41.84--
Proprietary Models
GPT-4o53.5450.8138.2128.31
GPT-559.6147.2740.8537.81
Gemini-2.0-Flash53.3244.3123.6933.47
Gemini-2.5-Flash57.0147.6341.6238.02
Open-Source VLMs
Qwen2.5-VL-3B-Inst42.7630.69-2.5426.86
Qwen2.5-VL-7B-Inst40.4838.6218.5929.75
Qwen2.5-VL-32B-Inst39.2837.0626.8728.72
MiMo-VL-7B-SFT-250857.8930.4322.1431.19
ADIEE59.9655.5634.50--
Reward Models (Ours)
EditReward (on Qwen2.5-VL-7B)63.9759.5036.1836.78
EditReward (on MiMo-VL-7B)65.7263.6235.2038.42

EditReward-Bench Results
MethodEditReward-Bench (K=2)EditReward-Bench (K=3)EditReward-Bench (K=4)EditReward-Bench (Overall)
Random25.8111.331.3513.84
Human-to-Human--------
Proprietary Models
GPT-4o45.6927.337.3128.31
GPT-557.5338.5112.8437.81
Gemini-2.0-Flash52.4333.3313.5133.47
Gemini-2.5-Flash58.6139.8612.1638.02
Open-Source VLMs
Qwen2.5-VL-3B-Inst51.0720.272.7126.86
Qwen2.5-VL-7B-Inst52.6924.673.3829.75
Qwen2.5-VL-32B-Inst50.5425.274.0528.72
MiMo-VL-7B-SFT-250849.4630.419.4631.19
ADIEE--------
Reward Models (Ours)
EditReward (on Qwen2.5-VL-7B)56.9936.0010.8136.78
EditReward (on MiMo-VL-7B)56.4542.6711.4938.42

📚 Citation

Please kindly cite our paper if you use our code, data, models or results:

@article{wu2025editreward,
  title={EditReward: A Human-Aligned Reward Model for Instruction-Guided Image Editing},
  author={Wu, Keming and Jiang, Sicong and Ku, Max and Nie, Ping and Liu, Minghao and Chen, Wenhu},
  journal={arXiv preprint arXiv:2509.26346},
  year={2025}
}

🙏 Acknowledgements

We would like to thank the HPSv3, VideoAlign and GenAI-Bench codebase for providing valuable references.


✨ Awesome Works using EditReward

😊 TIGER-AI-Lab, RewardHarness: Self-Evolving Agentic Post-Training.

😊 Reve, CUHK, PromptRL: Prompt Matters in RL for Flow-Based Image Generation.

😊 Adobe, HKU, Both Semantics and Reconstruction Matter: Making Representation Encoders Ready for Text-to-Image Generation and Editing.

😊 Meta, Multimodal RewardBench 2: Evaluating Omni Reward Models for Interleaved Text and Image.

😊 Google DeepMind, CUHK, Image Diffusion Preview with Consistency Solver.


⭐ Star History 🔝

Star History Chart

💬 Support

For questions and support:

Contributors

KemingWu

52 commits

vinesmsuic

2 commits

TIGER-AI-Lab/EditReward

EditReward: A Human-Aligned Reward Model for Instruction-Guided Image Editing [ICLR 2026]

160

stars

61

commits

Python

primary language

Jul 26, 2026

updated

tiger-ai-lab.github.io/EditReward/
diffusion
editing
evaluation

README

✨[ICLR 2026] EditReward: A Human-Aligned Reward Model for Instruction-Guided Image Editing

Project Website arXiv Model Dataset Benchmark

We acknowledge the data contribution and support from Abaka AI

📖 Introduction

This is the official implementation for the paper: EditReward: A Human-Aligned Reward Model for Instruction-Guided Image Editing. In this paper, we introduce EditReward, a human-aligned reward model powered by a high-quality dataset for instruction-guided image editing. We first construct EditReward-Data, a large-scale, high-fidelity preference dataset for instruction-guided image editing. It comprises over 200K manually annotated preference pairs, covering a diverse range of edits produced by seven state-of-the-art models across twelve distinct sources. Every preference annotation in EditReward-Data was curated by trained annotators following a rigorous and standardized protocol, ensuring high alignment with considered human judgment and minimizing label noise. Using this dataset, we train the reward model EditReward to score instruction-guided image edits. To rigorously assess EditReward and future models, we also introduce EditReward-Bench a new benchmark built upon our high-quality annotations, which includes more difficult multi-way preference prediction.

Teaser

📰 News

  • [2026-02-06] 🔥 We started maintaining a list of Awesome Works using EditReward!
  • [2026-01-27] 🔥 Add training & inference support for Qwen3-VL Series!
  • [2026-01-26] 🔥 Our paper has been accepted by ICLR 2026!
  • [2025-10-29] 🔥 Release the training guideline of EditReward, see Training Insctruction!
  • [2025-10-14] 🔥 Release the evaluation code and guideline of EditReward-Bench, see Evaluate Insctruction!
  • [2025-10-10] 🔥 Release our evaluation benchmark EditReward-Bench, Welcome to use!
  • [2025-10-08] 🔥 Release our training dataset EditReward-Data, Welcome to use!
  • [2025-10-03] 🔥 Release inference code and pretrained model.
  • [2025-10-01] 🎉 We initialize the official repo of EditReward.

🚧 TODO List

  • Release inference code and pretrained model
  • Release evaluation benchmark
  • Release training code
  • Release training dataset

📄 Table of Contents


🚀 Quick Start

EditReward is a VLM-based reward model trained on EditReward-Data that demonstrates superior alignment with human preferences.

💻 Installation

# Install locally for development or training.
git clone https://github.com/TIGER-AI-Lab/EditReward.git
cd EditReward

conda create -n edit_reward python=3.10 -y
conda activate edit_reward

# Install PyTorch first (CUDA 12.4 example).
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124

# Install the remaining runtime dependencies.
pip install -U datasets pillow openai megfile sentencepiece deepspeed fire omegaconf \
  matplotlib peft trl==0.8.6 tensorboard scipy transformers==4.57.0 accelerate \
  requests packaging pandas opencv-python einops timm huggingface_hub qwen-vl-utils \
  av regex safetensors tqdm

# Optional but recommended.
pip install https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.2.post1/flash_attn-2.7.2.post1+cu12torch2.5cxx11abiFALSE-cp310-cp310-linux_x86_64.whl

# Install EditReward as an editable package.
pip install -e .

🚀 Usage

Basic Command

import torch
from EditReward import EditRewardInferencer
from EditReward.inference_vl_edit import EditRewardVLInferencer

# ------------------------------------------------------------------------------
# Example script for evaluating edited images with EditReward
# ------------------------------------------------------------------------------

# Package-relative config paths work after `pip install -e .`.
# You can also pass an absolute path to a local YAML config.
CHECKPOINT_PATH = "your/local/path/to/checkpoint"
CONFIG_PATH = "config/EditReward-MiMo-VL-7B-SFT-2508.yaml"

# Initialize reward model
inferencer = EditRewardInferencer(
    config_path=CONFIG_PATH,
    checkpoint_path=CHECKPOINT_PATH,
    device="cuda",        # or "cpu"
    reward_dim="overall_detail",    # choose reward dimension if applicable
    rm_head_type="ranknet_multi_head"
)

# (Optional) Unified inferencer for Qwen2.5-VL / Qwen3-VL:
# Just switch CONFIG_PATH to either:
# - "config/EditReward-Qwen2.5-7B-VL.yaml"
# - "config/EditReward-Qwen3-VL.yaml"
# inferencer = EditRewardVLInferencer(
#     config_path=CONFIG_PATH,
#     checkpoint_path=CHECKPOINT_PATH,
#     device="cuda",
#     reward_dim="overall_detail",
#     rm_head_type="ranknet_multi_head",
# )

# Example input data -----------------------------------------------------------
# image_src = [
#     "../assets/examples/source_img_1.png",
#     "../assets/examples/source_img_1.png",
# ]

# image_paths = [
#     "../assets/examples/target_img_1.png",
#     "../assets/examples/target_img_2.png",
# ]
image_src = [
    "your/local/path/to/source_image_1.jpg",
    "your/local/path/to/source_image_2.jpg",
]

image_paths = [
    "your/local/path/to/edited_image_1.jpg",
    "your/local/path/to/edited_image_2.jpg",
]

# example instruction: "Add a green bowl on the branch"
# prompts = [
#     "Add a green bowl on the branch",
#     "Add a green bowl on the branch"
# ]
prompts = [
    "your first editing instruction",
    "your second editing instruction"
]

# ------------------------------------------------------------------------------
# Main evaluation modes
# ------------------------------------------------------------------------------
if __name__ == "__main__":
    mode = "pairwise_inference"  # or "single_inference"

    if mode == "pairwise_inference":
        # ----------------------------------------------------------
        # Pairwise comparison: compares two edited images side-by-side
        # ----------------------------------------------------------
        with torch.no_grad():
          rewards = inferencer.reward(
              prompts=prompts,
              image_src=image_src,
              image_paths=image_paths
          )
        scores = [reward[0].item() for reward in rewards]
        print(f"[Pairwise Inference] Image scores: {scores}")

    elif mode == "single_inference":
        # ----------------------------------------------------------
        # Single image scoring: evaluates one edited image at a time
        # ----------------------------------------------------------
        with torch.no_grad():
          rewards = inferencer.reward(
              prompts=[prompts[0]],
              image_src=[image_src[0]],
              image_paths=[image_paths[0]]
          )
        print(f"[Single Inference] Image 1 score: {[reward[0].item() for reward in rewards]}")
        
        with torch.no_grad():
          rewards = inferencer.reward(
              prompts=[prompts[0]],
              image_src=[image_src[0]],
              image_paths=[image_paths[1]]
          )
        print(f"[Single Inference] Image 2 score: {[reward[0].item() for reward in rewards]}")

📁 Dataset

EditReward-Data

dataset

Download EditReward

huggingface-cli download --repo-type dataset TIGER-Lab/EditReward-Data --local-dir /your-local-dataset-path

🏋️ Training

🤖 Model Support

  • Qwen2.5-VL Series
  • MiMo-VL Series
  • Qwen3-VL Series

🚀 Training Command

To train EditReward model, follow the detail instruction in Training Insctruction

Unified training entry (Qwen2.5-VL / Qwen3-VL)

We provide a unified training entry that automatically selects the correct model/collator based on model_name_or_path:

# Qwen2.5-VL
python EditReward/train_qwen_vl_edit.py --config EditReward/config/EditReward-Qwen2.5-7B-VL.yaml

# Qwen3-VL
python EditReward/train_qwen_vl_edit.py --config EditReward/config/EditReward-Qwen3-VL.yaml

📊 Benchmark

To evaluate EditReward preference accuracy, follow the detail instruction in Evaluate Insctruction

Experimental Results: Alignment with Humans
MethodGenAI-BenchAURORA-BenchImagenHubEditReward-Bench (Overall)
Random25.9033.43--13.84
Human-to-Human----41.84--
Proprietary Models
GPT-4o53.5450.8138.2128.31
GPT-559.6147.2740.8537.81
Gemini-2.0-Flash53.3244.3123.6933.47
Gemini-2.5-Flash57.0147.6341.6238.02
Open-Source VLMs
Qwen2.5-VL-3B-Inst42.7630.69-2.5426.86
Qwen2.5-VL-7B-Inst40.4838.6218.5929.75
Qwen2.5-VL-32B-Inst39.2837.0626.8728.72
MiMo-VL-7B-SFT-250857.8930.4322.1431.19
ADIEE59.9655.5634.50--
Reward Models (Ours)
EditReward (on Qwen2.5-VL-7B)63.9759.5036.1836.78
EditReward (on MiMo-VL-7B)65.7263.6235.2038.42

EditReward-Bench Results
MethodEditReward-Bench (K=2)EditReward-Bench (K=3)EditReward-Bench (K=4)EditReward-Bench (Overall)
Random25.8111.331.3513.84
Human-to-Human--------
Proprietary Models
GPT-4o45.6927.337.3128.31
GPT-557.5338.5112.8437.81
Gemini-2.0-Flash52.4333.3313.5133.47
Gemini-2.5-Flash58.6139.8612.1638.02
Open-Source VLMs
Qwen2.5-VL-3B-Inst51.0720.272.7126.86
Qwen2.5-VL-7B-Inst52.6924.673.3829.75
Qwen2.5-VL-32B-Inst50.5425.274.0528.72
MiMo-VL-7B-SFT-250849.4630.419.4631.19
ADIEE--------
Reward Models (Ours)
EditReward (on Qwen2.5-VL-7B)56.9936.0010.8136.78
EditReward (on MiMo-VL-7B)56.4542.6711.4938.42

📚 Citation

Please kindly cite our paper if you use our code, data, models or results:

@article{wu2025editreward,
  title={EditReward: A Human-Aligned Reward Model for Instruction-Guided Image Editing},
  author={Wu, Keming and Jiang, Sicong and Ku, Max and Nie, Ping and Liu, Minghao and Chen, Wenhu},
  journal={arXiv preprint arXiv:2509.26346},
  year={2025}
}

🙏 Acknowledgements

We would like to thank the HPSv3, VideoAlign and GenAI-Bench codebase for providing valuable references.


✨ Awesome Works using EditReward

😊 TIGER-AI-Lab, RewardHarness: Self-Evolving Agentic Post-Training.

😊 Reve, CUHK, PromptRL: Prompt Matters in RL for Flow-Based Image Generation.

😊 Adobe, HKU, Both Semantics and Reconstruction Matter: Making Representation Encoders Ready for Text-to-Image Generation and Editing.

😊 Meta, Multimodal RewardBench 2: Evaluating Omni Reward Models for Interleaved Text and Image.

😊 Google DeepMind, CUHK, Image Diffusion Preview with Consistency Solver.


⭐ Star History 🔝

Star History Chart

💬 Support

For questions and support:

Contributors

KemingWu

52 commits

vinesmsuic

2 commits

Languages

Python

100.0%