quandao10/npedit-contrastive-edit-1.5M
NP-Edit Contrastive Instruction-Editing Dataset (1.5M) Unpaired instruction-based image-editing data with contrastive source/target captions, assembled for training few-step distilled image editors (DMD/VSD on SD3.5). Each example is a source image + an edit instruction + a minimal-contrast (source caption, target caption) pair + a grounding noun for the edited region. Edited/target images are intentionally not required (unpaired training). Sources Merged from two… See the full description on the dataset page: https://huggingface.co/datasets/quandao10/npedit-contrastive-edit-1.5M.
NP-Edit Contrastive Instruction-Editing Dataset (1.5M)
Unpaired instruction-based image-editing data with contrastive source/target captions, assembled for training few-step distilled image editors (DMD/VSD on SD3.5). Each example is a source image + an edit instruction + a minimal-contrast (source caption, target caption) pair + a grounding noun for the edited region. Edited/target images are intentionally not required (unpaired training).
Sources
Merged from two public unpaired-editing collections (image trees mirror their layout under input/):
- GPT-Image-Edit-1.5M (
UCSC-VLAA/GPT-Image-Edit-1.5M) — subsetshqedit,omniedit,ultraedit. Images undergptimage15m/.... Only the `input/` (source) images are included here; theoutput/(edited) images are not re-hosted — get them from the original repo if needed. - pico-banana-400k — source images derived from Open Images, under
pico-banana-400k/openimage_source_images/train_{0,1}/.
Files
good_edit_data.json— filtered manifest, 1,508,789 entries (the training set). One JSON list; each row:id— unique iddataset_source—gpt_image|pico_bananainput_image_path— path to the source image, relative to this repo rootedit_instruction— the edit to applyedited_caption— target caption (describes the image after the edit)input_description— source caption (describes the image before the edit); contrastively generated for the ~89% that lacked it (see below), else the dataset-native descriptiongrounding_noun— the changed phrase/object, for open-vocabulary grounding (e.g. GroundingDINO)edit_type,width,height, ...merged_edit_data.json— the full 1,624,280-entry pre-filter manifest (provenance).source_caps/source_caps.*.jsonl— raw generated source captions (id,source_caption,grounding_noun), before filtering/merge.images_*.tar— the source images, packed into ~5GB path-preserving tar shards (344 shards). Each member path is relative to the dataset root, so extracting every shard into one directory reconstructs exactly the layoutinput_image_pathexpects:
# download the repo, then from the dataset root:
for t in images_*.tar; do tar -xf "$t"; done
# now good_edit_data.json's input_image_path entries resolve directlyHow the contrastive source captions were made
input_description was missing for ~89% of entries. We generated it with Qwen3-VL-32B (vLLM), conditioning on (source image, edit_instruction, edited_caption) and instructing the model to start from the target caption and change only the edited phrase to match the original image (add→remove, remove→add-back, change→revert), keeping every other word identical. This yields minimal-contrast source/target pairs (clean signal for contrastive / DDS-style editing losses). The changed_phrase is kept as grounding_noun.
Filtering
good_edit_data.json keeps entries with a valid instruction, target caption, source caption, and a readable source image, and drops non-contrastive pairs (source == target). Kept 1,508,789 / 1,624,280 (92.6%).
Notes
- Images are the source images only (unpaired editing). To reconstruct paired data, fetch the corresponding
output/images fromUCSC-VLAA/GPT-Image-Edit-1.5M. - Licenses of the underlying images follow their original sources (GPT-Image-Edit-1.5M / Open Images).
