模型访问申请

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

本模型仅开放给学术研究与非商业用途。请填写以下信息提交申请,审核通过后即可获取完整模型文件的访问权限。

Log in or Sign Up to review the conditions and access this model content.

Oxygen-TryOn

Fashion-Native Foundation Model for Any-item Virtual Try-On

Project Page GitHub HuggingFace License

Oxygen AIGC Group & Joy Future Academy, JD

Oxygen-TryOn demo


Overview

Oxygen-TryOn is a unified, open-source foundation model for any-item virtual try-on. Given one or more reference items — provided either as clean product shots or as in-the-wild photos of someone already wearing them — together with a single target subject image, the model synthesizes a photorealistic image of that subject wearing the referenced items, spanning virtually any fashion category — clothing, outerwear, accessories, footwear, bags, and beyond.

Unlike general-purpose image editors merely prompted for the task, Oxygen-TryOn is fashion-native: it is built specifically for try-on through a dedicated data engine and try-on-specific training. To our knowledge, it is the first open-source system to deliver any-item, multi-reference try-on at this level of fidelity.

Highlights

  • 🧥 Any item, any combination — garments, outerwear, accessories, shoes, bags, and more; from a single item to free multi-item outfits, with the model resolving layering and occlusion ("OOTD"-style full-outfit composition).
  • 🖼️ Heterogeneous references — accepts both clean product shots and in-the-wild worn-on photos; full- or half-body subjects with a variable number of references.
  • 🧍 Faithful preservation — keeps both the subject's identity and the referenced items' appearance intact.
  • ✏️ Built-in editing — general instruction-based edits (e.g., pose change) within the same generation pass, with no second model or pass.
  • 🎭 Cross-domain generalization — even dresses stylized 3D avatars, illustrated characters, statues, or posters while respecting the original style and geometry.
  • 🏆 State-of-the-art single-item consistency & realism, matching or surpassing strong proprietary systems (Nano Banana Pro, GPT-Image-2, Seedream5 Lite) and leading open-source models (FLUX.2).

Performance

Oxygen-TryOn vs. leading proprietary and open-source models on TStars-VTON

Per-dimension VLM-judge scores on TStars-VTON — Oxygen-TryOn (red) holds the most balanced, leading profile for both single- and multi-item try-on.

Oxygen-TryOn sets a new state of the art for open-source try-on:

  • TStars-VTON (single-item). Leads on every dimension — overall quality, identity consistency, item fidelity, background preservation, and physical/structural plausibility — surpassing strong proprietary systems (GPT-Image-2, Nano Banana Pro, Seedream5 Lite) and the best open-source model (FLUX.2), as shown above.
  • DressCode & VITON-HD (paired reconstruction). Improves on the strongest specialist baseline (FastFit) across FID / KID / SSIM / LPIPS.
  • Oxygen-TryOn Bench (in-the-wild). Achieves the highest share of directly shippable results among all models — detailed below.

In-the-Wild Usability — Oxygen-TryOn Bench

Our deployment benchmark of 1,000 real-world samples, judged by GPT-5 on a 1–5 scale. Usability Rate is the share of results whose identity, garment, and image quality are all good enough to ship directly. C2M uses clean product-shot references; M2M uses in-the-wild worn-on references.

Method C2M Overall C2M Usability % M2M Overall M2M Usability %
Open-source
FastFit 3.027 34.96 2.923 25.51
Qwen-Image-Edit-2511 3.194 53.18 3.144 55.90
FireRed-Image-Edit1.1 3.332 64.28 3.248 63.31
FLUX.2-dev 3.367 67.48 3.306 68.43
Closed-source
Nano Banana Pro 3.431 70.16 3.539 73.18
Seedream5 Lite 3.507 77.67 3.428 74.70
GPT-Image-2 3.532 80.35 3.542 77.58
Oxygen-TryOn (Ours) 3.575 86.79 3.656 85.43

Oxygen-TryOn reaches 86.79% (C2M) and 85.43% (M2M) usability — clearly ahead of the strongest proprietary system, GPT-Image-2 (80.35% / 77.58%). Full tables across all four benchmarks are available in the technical report.


Usage

The full, runnable inference code lives in the GitHub repository. Try-on is run as a command-line script.

1. Environment

git clone https://github.com/jd-opensource/Oxygen-TryOn
cd Oxygen-TryOn

conda create -n oxygen-tryon python=3.10 -y
conda activate oxygen-tryon
pip install -r requirements.txt

A CUDA-capable GPU is required. Dependency versions are checked at runtime and must satisfy transformers>=4.57.0,<4.58.0 and diffusers==0.36.0, plus torch/torchvision; flash-attn>=2.8.0 is strongly recommended for best performance.

2. Download the checkpoint

from huggingface_hub import snapshot_download
snapshot_download(repo_id="jd-opensource/Oxygen-TryOn", local_dir="./ckpt")

The directory passed to --ckpt-root must follow this layout:

ckpt/
├── infer_config.py          # inference config (a subclass of InferConfig)
├── transformer/
│   └── transformer.pth      # MMDiT weights
├── vae/
│   └── <single vae file>    # exactly one VAE checkpoint
└── JoyAI-Image-Und/         # MLLM / text-encoder directory

3. Run try-on

Single item — references are fed garments first, person last, so Picture 1 = garment and Picture 2 = person:

python inference.py \
  --ckpt-root ./ckpt \
  --model-image test_images/person.jpg \
  --garment test_images/garment.jpg \
  --prompt "Make the person in Picture 2 wear the clothing from Picture 1. Keep the pose, body shape, and lighting from Picture 2." \
  --output outputs/result.png \
  --steps 30 --guidance-scale 6.0 --seed 42 --basesize 1024

Multiple items — garments are Picture 1…N and the person is the last picture:

python inference.py \
  --ckpt-root ./ckpt \
  --model-image test_images/person.jpg \
  --garment test_images/top.jpg test_images/bottom.jpg test_images/shoes.jpg \
  --prompt "Put the top from Picture 1, the bottom from Picture 2, and the shoes from Picture 3 onto the person in Picture 4. Keep the pose, body shape, and lighting from Picture 4." \
  --output outputs/result.png

Evaluation

Reproduce the paired/unpaired DressCode and VITON-HD metrics with eval.py:

CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python eval.py \
  --ckpt-root ./ckpt \
  --config ./ckpt/infer_config.py \
  --output-root /path/to/eval_outputs \
  --viton-root /path/to/VITON-HD \
  --dresscode-root /path/to/DressCode \
  --datasets VITON-HD DressCode \
  --pair-modes paired unpaired \
  --metrics-csv /path/to/eval_outputs/metrics.csv

CLI reference

Argument Type Default Description
--ckpt-root str required Oxygen-TryOn checkpoint root
--prompt str see inference.py Try-on instruction
--model-image str ./test_images/test_3.png Person / model image path
--garment str+ ./test_images/test_1.png ./test_images/test_2.png One or more garment image paths
--output str ./test_images/example.png Output image path
--steps int 30 Number of denoising steps
--guidance-scale float 6.0 Classifier-free guidance scale
--seed int 42 Random seed
--basesize int 1024 Bucket base size for resizing
--config str <ckpt-root>/infer_config.py Optional config path
--rewrite-prompt flag off Enable LLM-based prompt rewriting
--rewrite-model str gpt-5 Model name for prompt rewriting

Negative prompts are built into Oxygen-TryOn and are not exposed as a CLI argument.

Prompt design

Oxygen-TryOn is understanding-driven: the wording of the instruction governs how the references are interpreted and composed.

  • Reference images are ordered garments first, person last; refer to them by natural-language position ("Picture 1", "Picture 2", …) rather than special tags.
  • A typical single-garment prompt: "Put the clothing from Picture 1 onto the person in Picture 2. Keep the pose, body shape, and lighting from Picture 2."
  • For multiple garments, state which item comes from which picture number.
  • You can append an editing directive to run within the same pass, e.g. "…, and change the pose to a three-quarter view."

Limitations

  • High-cardinality references (5+ items): since the foundation is pretrained for at most four references, quality degrades when more than four references are provided. This is the primary direction for future improvement.
  • Domain focus: the model is specialized for fashion/human-centric try-on; behavior on out-of-domain content is not guaranteed.
  • Reference quality: heavily occluded, very low-resolution, or ambiguous references may reduce item-fidelity.
  • Instruction sensitivity: because the model is understanding-driven, ambiguous instructions can lead to incorrect item-to-region mapping; following the templates above (or enabling the prompt enhancer) is recommended.
  • Non-distilled release: the currently open-sourced checkpoint is the non-distilled version; a distillation-accelerated variant for faster inference is planned for a future release.

Responsible Use

Virtual try-on synthesizes images of people wearing specified items. By using this model you agree to:

  • Obtain proper rights/consent for any person image and any garment/brand assets you use.
  • Not create misleading, defamatory, deceptive, or non-consensual content, or otherwise infringe on portrait rights, privacy, or intellectual property.
  • Comply with all applicable laws and the terms of the model's license.
  • Consider disclosing AI-generated content where appropriate.

The authors are not responsible for misuse of the model.


Citation

If you find Oxygen-TryOn useful, please cite:

@techreport{oxygentryon2026,
  title        = {Oxygen-TryOn: Fashion-Native Foundation Model for Any-item Virtual Try-On},
  author       = {{Oxygen AIGC Group \& Joy Future Academy, JD}},
  institution  = {JD.com},
  year         = {2026},
  url          = {https://github.com/jd-opensource/Oxygen-TryOn}
}

Acknowledgements

Oxygen-TryOn is built on the JoyAI-Image-Edit foundation model and leverages Qwen3-VL-8B-Instruct (MLLM) and Wan-2.1-VAE. We thank the open-source community for these foundations.

License

This model is released under the CC BY-NC 4.0 (Creative Commons Attribution-NonCommercial 4.0 International) license. Please also review the licenses of the upstream components (JoyAI-Image-Edit, Qwen3-VL, Wan-2.1) for any additional terms that may apply to your use case.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support