CSU-JPG/VPBench

Dataset

1

stars

34

commits

1

linked in READMEs

Apr 9, 2026

updated

README

FlowInOne: Unifying Multimodal Generation as Image-in, Image-out Flow Matching

TL;DR: The first vision-centric image-in, image-out image generation model.

🌐 Homepage | 💻 Code | 📄 Paper | 📁 Dataset | 🌏 Benchmark | 🤗 Model

VP-Bench

VP-Bench is the official evaluation benchmark for FlowInOne. It is a rigorously curated benchmark assessing instruction faithfulness, spatial precision, visual realism, and content consistency across eight distinct visual prompting tasks.

Evaluation

Our evaluation scripts are now available on GitHub!

Dataset Subsets

The dataset contains 8 subsets, each corresponding to a distinct visual instruction task:

SubsetAbbrev.Description
class2imageC2IClass label rendered in input image → generate corresponding image
text2imageT2IText instruction rendered in input image → generate image
text_in_imageTIEEdit text content within an image
forceFUPhysics-aware force understanding (3 categories)
text_box_controlTBEText and bounding box editing
trajectoryTUTrajectory understanding and prediction
vismarkerVMEVisual marker guided editing (8 categories)
doodlesDEDoodle-based editing

Dataset Features

  • input_image (image): The input visual prompt image (with rendered instruction).
  • output_image (image): The ground-truth output image.
  • recognized_text (string): The text instruction rendered in the input image (extracted via OCR annotation).
  • subset (string): The subset name.
  • category (string): Sub-category within a subset (empty string if not applicable).
  • image_name (string): The image filename.
  • input_relpath (string): Relative path of the input image within the subset.
  • output_relpath (string): Relative path of the output image within the subset.
  • pair_id (string): Stable SHA1 identifier for each input-output pair.

Loading the Dataset

# class2image
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "class2image", split="train")
# text2image
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "text2image", split="train")
# text_in_image
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "text_in_image", split="train")
# force
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "force", split="train")
# text_box_control
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "text_box_control", split="train")
# trajectory
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "trajectory", split="train")
# vismarker
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "vismarker", split="train")
# doodles
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "doodles", split="train")
# Load All Subsets
from datasets import load_dataset, concatenate_datasets
subsets = ["class2image", "text2image", "text_in_image", "force",
           "text_box_control", "trajectory", "vismarker", "doodles"]
ds_all = concatenate_datasets([
    load_dataset("CSU-JPG/VPBench", name=s, split="train") for s in subsets
])

Evaluation Results

We evaluate multiple methods on VP-Bench using three state-of-the-art VLM evaluators (Gemini3, GPT-5.2, Qwen3.5) and human judges. The metric is success ratio (higher is better). Total denotes the average success rate across all eight task categories.

Abbreviations: C2I: class-to-image · T2I: text-to-image · TIE: text-in-image edit · FU: force understanding · TBE: text & bbox edit · TU: trajectory understanding · VME: visual marker edit · DE: doodles edit

Evaluator: Gemini3

MethodC2IT2ITIEFUTBETUVMEDETotal
Nano Banana (Google, 2025).650.980.423.520.614.020.548.721.560
Omnigen2 (Wu et al., 2025).020.020.017.020.000.000.000.000.007
Kontext (Labs et al., 2025).050.020.048.007.000.020.010.000.019
Qwen-IE-2509 (Wu et al., 2025).230.040.069.000.000.020.023.000.048
FlowInOne (Ours).890.700.355.727.302.520.292.535.540

Evaluator: GPT-5.2

MethodC2IT2ITIEFUTBETUVMEDETotal
Nano Banana (Google, 2025).680.959.152.127.023.040.136.302.302
Omnigen2 (Wu et al., 2025).110.020.000.000.000.000.000.023.019
Kontext (Labs et al., 2025).090.020.028.020.000.080.003.093.042
Qwen-IE-2509 (Wu et al., 2025).240.120.080.020.022.060.020.047.076
FlowInOne (Ours).850.800.079.500.116.240.083.465.392

Evaluator: Qwen3.5

MethodC2IT2ITIEFUTBETUVMEDETotal
Nano Banana (Google, 2025).600.959.386.367.257.040.321.744.469
Omnigen2 (Wu et al., 2025).030.020.017.034.000.000.003.047.019
Kontext (Labs et al., 2025).050.020.042.133.000.060.047.093.056
Qwen-IE-2509 (Wu et al., 2025).270.060.080.087.047.040.033.047.083
FlowInOne (Ours).859.720.354.713.272.320.306.481.503

Evaluator: Human

MethodC2IT2ITIEFUTBETUVMEDETotal
Nano Banana (Google, 2025).602.904.271.250.200.050.229.742.406
Omnigen2 (Wu et al., 2025).000.000.000.000.000.000.000.000.000
Kontext (Labs et al., 2025).000.000.043.000.000.000.000.100.018
Qwen-IE-2509 (Wu et al., 2025).067.000.029.000.000.000.000.000.012
FlowInOne (Ours).800.645.242.705.255.280.255.400.449

Citation

If you found our work useful, please consider citing:

@article{yi2026flowinoneunifyingmultimodalgenerationimagein,
      title={FlowInOne:Unifying Multimodal Generation as Image-in, Image-out Flow Matching}, 
      author={Junchao Yi and Rui Zhao and Jiahao Tang and Weixian Lei and Linjie Li and Qisheng Su and Zhengyuan Yang and Lijuan Wang and Xiaofeng Zhu and Alex Jinpeng Wang},    
      journal={arXiv preprint arXiv:2604.06757},
      year={2026}
}

Contributors

Junc1i

34 commits

CSU-JPG/VPBench

Dataset

1

stars

34

commits

1

linked in READMEs

Apr 9, 2026

updated

README

FlowInOne: Unifying Multimodal Generation as Image-in, Image-out Flow Matching

TL;DR: The first vision-centric image-in, image-out image generation model.

🌐 Homepage | 💻 Code | 📄 Paper | 📁 Dataset | 🌏 Benchmark | 🤗 Model

VP-Bench

VP-Bench is the official evaluation benchmark for FlowInOne. It is a rigorously curated benchmark assessing instruction faithfulness, spatial precision, visual realism, and content consistency across eight distinct visual prompting tasks.

Evaluation

Our evaluation scripts are now available on GitHub!

Dataset Subsets

The dataset contains 8 subsets, each corresponding to a distinct visual instruction task:

SubsetAbbrev.Description
class2imageC2IClass label rendered in input image → generate corresponding image
text2imageT2IText instruction rendered in input image → generate image
text_in_imageTIEEdit text content within an image
forceFUPhysics-aware force understanding (3 categories)
text_box_controlTBEText and bounding box editing
trajectoryTUTrajectory understanding and prediction
vismarkerVMEVisual marker guided editing (8 categories)
doodlesDEDoodle-based editing

Dataset Features

  • input_image (image): The input visual prompt image (with rendered instruction).
  • output_image (image): The ground-truth output image.
  • recognized_text (string): The text instruction rendered in the input image (extracted via OCR annotation).
  • subset (string): The subset name.
  • category (string): Sub-category within a subset (empty string if not applicable).
  • image_name (string): The image filename.
  • input_relpath (string): Relative path of the input image within the subset.
  • output_relpath (string): Relative path of the output image within the subset.
  • pair_id (string): Stable SHA1 identifier for each input-output pair.

Loading the Dataset

# class2image
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "class2image", split="train")
# text2image
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "text2image", split="train")
# text_in_image
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "text_in_image", split="train")
# force
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "force", split="train")
# text_box_control
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "text_box_control", split="train")
# trajectory
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "trajectory", split="train")
# vismarker
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "vismarker", split="train")
# doodles
from datasets import load_dataset
ds = load_dataset("CSU-JPG/VPBench", "doodles", split="train")
# Load All Subsets
from datasets import load_dataset, concatenate_datasets
subsets = ["class2image", "text2image", "text_in_image", "force",
           "text_box_control", "trajectory", "vismarker", "doodles"]
ds_all = concatenate_datasets([
    load_dataset("CSU-JPG/VPBench", name=s, split="train") for s in subsets
])

Evaluation Results

We evaluate multiple methods on VP-Bench using three state-of-the-art VLM evaluators (Gemini3, GPT-5.2, Qwen3.5) and human judges. The metric is success ratio (higher is better). Total denotes the average success rate across all eight task categories.

Abbreviations: C2I: class-to-image · T2I: text-to-image · TIE: text-in-image edit · FU: force understanding · TBE: text & bbox edit · TU: trajectory understanding · VME: visual marker edit · DE: doodles edit

Evaluator: Gemini3

MethodC2IT2ITIEFUTBETUVMEDETotal
Nano Banana (Google, 2025).650.980.423.520.614.020.548.721.560
Omnigen2 (Wu et al., 2025).020.020.017.020.000.000.000.000.007
Kontext (Labs et al., 2025).050.020.048.007.000.020.010.000.019
Qwen-IE-2509 (Wu et al., 2025).230.040.069.000.000.020.023.000.048
FlowInOne (Ours).890.700.355.727.302.520.292.535.540

Evaluator: GPT-5.2

MethodC2IT2ITIEFUTBETUVMEDETotal
Nano Banana (Google, 2025).680.959.152.127.023.040.136.302.302
Omnigen2 (Wu et al., 2025).110.020.000.000.000.000.000.023.019
Kontext (Labs et al., 2025).090.020.028.020.000.080.003.093.042
Qwen-IE-2509 (Wu et al., 2025).240.120.080.020.022.060.020.047.076
FlowInOne (Ours).850.800.079.500.116.240.083.465.392

Evaluator: Qwen3.5

MethodC2IT2ITIEFUTBETUVMEDETotal
Nano Banana (Google, 2025).600.959.386.367.257.040.321.744.469
Omnigen2 (Wu et al., 2025).030.020.017.034.000.000.003.047.019
Kontext (Labs et al., 2025).050.020.042.133.000.060.047.093.056
Qwen-IE-2509 (Wu et al., 2025).270.060.080.087.047.040.033.047.083
FlowInOne (Ours).859.720.354.713.272.320.306.481.503

Evaluator: Human

MethodC2IT2ITIEFUTBETUVMEDETotal
Nano Banana (Google, 2025).602.904.271.250.200.050.229.742.406
Omnigen2 (Wu et al., 2025).000.000.000.000.000.000.000.000.000
Kontext (Labs et al., 2025).000.000.043.000.000.000.000.100.018
Qwen-IE-2509 (Wu et al., 2025).067.000.029.000.000.000.000.000.012
FlowInOne (Ours).800.645.242.705.255.280.255.400.449

Citation

If you found our work useful, please consider citing:

@article{yi2026flowinoneunifyingmultimodalgenerationimagein,
      title={FlowInOne:Unifying Multimodal Generation as Image-in, Image-out Flow Matching}, 
      author={Junchao Yi and Rui Zhao and Jiahao Tang and Weixian Lei and Linjie Li and Qisheng Su and Zhengyuan Yang and Lijuan Wang and Xiaofeng Zhu and Alex Jinpeng Wang},    
      journal={arXiv preprint arXiv:2604.06757},
      year={2026}
}

Contributors

Junc1i

34 commits