---
title: Qwen-Image-2.1-Outfit-Swap-Consistency-LoRA
canonical_url: "https://www.modelscope.cn/models/ausboss/Qwen-Image-2.1-Outfit-Swap-Consistency-LoRA"
md_url: "https://www.modelscope.cn/models/ausboss/Qwen-Image-2.1-Outfit-Swap-Consistency-LoRA.md"
repository: ausboss/Qwen-Image-2.1-Outfit-Swap-Consistency-LoRA
last_updated: 2026-10-14
license: other
pipeline_tag: image-to-image
tasks:
  - image-to-image
base_model:
  - Qwen/Qwen-Image-2.1
base_model_relation: adapter
parameters: 239.1M
tensor_type:
  - BF16
library_name:
  - lora
  - safetensors
supports_inference: img2img
downloads: 220
stars: 0
tags:
  - lora
  - image-editing
  - outfit-swap
  - consistency
  - virtual-try-on
  - qwen-image
  - qwen-image-2.1
  - comfyui
  - ai-toolkit
---

# Qwen-Image-2.1-Outfit-Swap-Consistency-LoRA

> Qwen-Image-2.1-Outfit-Swap-Consistency-LoRA - ausboss 在 ModelScope 开源的模型。Qwen Image 2.1 Outfit Swap Consistency LoRA

ausboss/Qwen-Image-2.1-Outfit-Swap-Consistency-LoRA 是 ModelScope 魔搭社区上的 239.1M 参数image-to-image模型，采用 other 许可，基于 Qwen/Qwen-Image-2.1 构建，并支持在线推理（img2img）。

- **Repository**: ausboss/Qwen-Image-2.1-Outfit-Swap-Consistency-LoRA
- **License**: other
- **Tasks**: image-to-image
- **Parameters**: 239.1M
- **Base model**: Qwen/Qwen-Image-2.1
- **Online inference**: img2img
- **Tags**: lora, image-editing, outfit-swap, consistency, virtual-try-on, qwen-image, qwen-image-2.1, comfyui, ai-toolkit
- **Downloads**: 220
- **Stars**: 0
- **Last updated**: 2026-10-14

Source: https://www.modelscope.cn/models/ausboss/Qwen-Image-2.1-Outfit-Swap-Consistency-LoRA

---

# Qwen Image 2.1 Outfit Swap Consistency LoRA

Give Qwen Image 2.1 a picture of a person and a picture of an outfit, and it dresses the person in
it. Plain Qwen 2.1 already does that, but the picture comes back a few pixels off, the face gets a
little softer and the background gets touched. With this LoRA the swap happens on your picture's own
frame: on 16 swaps it had never seen, the result sat 0.1 px from the original (3.6 px without it).

No trigger word. Load it at strength 1.0 (at 0.5 about half of the drift comes back: 1.8 px in the
same test), give the person as image 1 and the outfit as image 2, and ask for the swap:

```
Dress the person in image 1 in the <outfit, in a few words> shown in image 2. Keep their face,
hair, hands, pose and the background exactly the same.
```

Also on Civitai: the [LoRA page](https://civitai.com/models/2983159) and the
[Outfit Swap workflow](https://civitai.com/models/2983126) that has it set up.
Videos on [YouTube @ausbossdev](https://www.youtube.com/@ausbossdev).

<video src="https://huggingface.co/ausboss/Qwen-Image-2.1-Outfit-Swap-Consistency-LoRA/resolve/main/outfit_swap_demo.mp4" controls autoplay loop muted playsinline></video>

## Why use it

Qwen Image 2.1 can do an outfit swap without this LoRA. This is what the LoRA changes, measured on 16 swaps it
never trained on, same seed and request:

- **The picture stays in place.** Without the LoRA the result sits 3.6 px away from your picture, so it no longer
  lines up with the original. With it: **0.1 px**.
- **The face stays the same.** Without: 14.1 % of the face's pixels change noticeably. With: **1.7 %**.
- **The background is left alone.** Without: 10.8 % of it gets repainted. With: **0.9 %**.
- **The old outfit comes off.** Without, old boots or jeans stay on under the new outfit (cleared in 0 of 3 seeds).
  With: 2 of 3.

In the pictures below, yellow marks every pixel that differs from the original picture. Without the LoRA the face,
the hair and the background light up. With it, only the clothes do.

![Without the LoRA the man's face, the window and the wall differ from the original; with it only the coat differs](figure_difference_train.jpg)

*Top row: the swap, same request and seed. Bottom row: the redrawn pixels in yellow. Neither this person nor this
coat is in the training set.*

![Without the LoRA the hair, the face and the lights behind her differ from the original; with it only the clothes differ](figure_difference.jpg)

*The same comparison in the rain. This person is not in the training set.*

![The same comparison with a cable-knit sweater in a cafe](figure_difference_2.jpg)

*This person is not in the training set either.*

![The same comparison with a trench coat in a field](figure_difference_3.jpg)

*The LoRA never trained on a swap of this person, and this coat is not in the training set.*

In these four, the result sat 4.8, 7.1, 5.2 and 7.2 px off without the LoRA, and 0.1, 0.0, 0.0 and 0.1 px off with it.

## What it does not do

It does not draw the outfit better. Buttons, belts and patterns come out the way plain Qwen Image 2.1 draws
them, with or without the LoRA. Sometimes plain Qwen copies more of the outfit: in the first picture above it
swapped the pants too, where the LoRA kept the old jeans and belt, and in the last one it closed and belted
the coat, where the LoRA left it open.

The LoRA is for the rest of the picture. It keeps the framing, the body, the face and the background where they
were, so that only the clothes you can see change.

## What I set out to fix

I made this because the outfit swap workflow I was working on messed things up about half the time, and
those results were not usable. Before training anything I ran 47 swaps with plain Qwen Image 2.1 and marked
every one. I liked 24. The other 23 had something wrong with them, and usually it was not the outfit itself:

- the camera pulled back to fit the whole outfit in,
- pants were pushed into a shot that had no legs in it (Steve Urkel style),
- the body or the pose was redrawn to carry the new clothes,
- or everything simply moved a few pixels.

These four are from those 47, the same workflow and seed without the LoRA and with it. None of them is in the
training set.

![Four swaps without and with the LoRA: the camera pulls back, sweatpants are pushed into the shot, the perspective changes, the body is redrawn](figure_set_out_to_fix.jpg)

## Files

| file | notes |
|---|---|
| `qwen-image-2.1-outfit-swap.safetensors` | **step 1,000, start here.** The one that most often clears the old outfit instead of leaving parts of it on. |
| `qwen-image-2.1-outfit-swap-1250.safetensors` | step 1,250. Holds the picture just as well. Keeps more of what the person already wears (boots, jeans under a skirt). |
| `qwen-image-2.1-outfit-swap-1500.safetensors` | step 1,500, the end of the run. Same hold, a little more change on the face and background than the other two. |

Rank 32, ComfyUI key format, loads onto the Comfy-Org Qwen Image 2.1 weights.

## What I measured

Sixteen swaps the LoRA never trained on: four pairs held back from the set, and twelve pairs of
people and outfits that appear nowhere in it (six swimwear, four coats, blazers and dresses, two
men). Same seed, 25 steps, CFG 1, euler / simple, about 2 MP, LoRA at 1.0.

| | no LoRA | 1,000 | 1,250 | 1,500 |
|---|---|---|---|---|
| how far the result sits from the person picture (worst corner, median) | 3.6 px | 0.1 px | 0.1 px | 0.1 px |
| the same, worst of the sixteen | 7.0 px | 0.2 px | 0.2 px | 0.2 px |
| face pixels that changed noticeably | 14.1 % | 1.7 % | 1.8 % | 2.0 % |
| face, PSNR against the person picture | 29.8 dB | 37.8 dB | 37.7 dB | 37.1 dB |
| background pixels that changed noticeably | 10.8 % | 0.9 % | 0.9 % | 1.2 % |
| background, PSNR | 27.6 dB | 40.5 dB | 40.4 dB | 40.0 dB |

The face and background numbers are taken after lining each result up with the person picture, so
they count repainting, not drift.

## What happens to the old clothes

Plain Qwen 2.1 often leaves on whatever the new outfit does not cover: boots under a bikini, ripped
jeans under a skirt. Two things change that.

**The step.** Two swaps, three seeds each, plain request:

| | jeans gone under the new skirt | boots gone with the bikini |
|---|---|---|
| no LoRA | 0 of 3 | 0 of 3 |
| step 500 | 0 of 3 | 0 of 3 |
| step 1,000 | 2 of 3 | 2 of 3 |
| step 1,250 | 0 of 3 | 0 of 3 |

**A sentence at the end of the request** (step 1,000, one seed):

| | plain request | + `Keep their own shoes and legwear.` | + `Replace everything they wear.` |
|---|---|---|---|
| tights, swimsuit | tights stay | tights stay | tights gone, shoes stay |
| boots, bikini | barefoot | boots stay | barefoot |
| ripped jeans, cardigan and skirt | jeans gone | jeans gone | jeans gone |

At steps 1,250 and 1,500 the same two sentences made little or no difference on these swaps, which
is the other reason step 1,000 is the main file.

The workflow below adds `Replace everything they wear.` by default, in a box you can edit.

## ComfyUI

[`workflows/qwen-image-2.1-outfit-swap.json`](workflows/qwen-image-2.1-outfit-swap.json) is the
workflow the numbers come from, with the LoRA row switched on. It uses my nodes
([AusBoss](https://github.com/ausboss/ComfyUI-AusBoss), 2.5.1 or newer) and needs ComfyUI 0.38 or
newer.
The same workflow is on Civitai with example pictures:
[Qwen Image 2.1 Outfit Swap](https://civitai.com/models/2983126).

To add the LoRA to your own two-picture Qwen Image 2.1 edit graph:

1. A LoRA loader right after the model loader, strength **1.0**.
2. **Text Encode Qwen Image 2.1**: the person as `image_1`, the outfit as `image_2`, `resolution`
   **0**, and the request as the prompt.
3. **KSampler** on the encoder's `latent` output: 25 steps, CFG 1, `euler` / `simple`, denoise 1.
4. **VAE Decode**, then **Split Image with Alpha** (the Qwen 2.1 VAE decodes RGBA).

## How it was made

The short version. The long one, with what went wrong on the way, is in
[RESEARCH.md](RESEARCH.md).

- **Swaps first.** I ran outfit swaps with plain Qwen Image 2.1 on pictures of people and outfits,
  each one twice: as is, and with my
  [Consistency LoRA](https://huggingface.co/ausboss/Qwen-Image-2.1-Consistency-LoRA) on.
- **Then every result was corrected.** The result is moved back onto the person picture by whole
  pixels (never resampled). Only the clothes come from the swap. The face, the hair, the hands and
  the background are the person picture's own pixels again.
- **Then I looked at every one.** Only the ones I liked went in: 66 pairs to train on, 4 held back.
- **Training:** [ostris/ai-toolkit](https://github.com/ostris/ai-toolkit), `arch: qwen_image_2`, two
  references per example (person, outfit), rank 32, LR 1e-4, 1,500 steps.

## Limits

- It does not copy the outfit more exactly than plain Qwen does. Buttons and belts can be wrong either way, and
  a knit pattern came out flatter with the LoRA in one of the pictures above.
- It holds on to what was there. Old pants and a belt stayed on in one test, even with
  `Replace everything they wear.`, and a coat that is closed in the outfit picture can stay open.
- It holds the picture, so it also holds the pose. An outfit that needs a different pose will not
  get one.
- Shoes are the stubborn part. Even with `Replace everything they wear.` a pair of shoes stayed on in
  one of the three test swaps.
- An early checkpoint (step 250) drew a hand that was not in the picture on one swap. Steps 500 to
  1,500 did not on any of the sixteen, but I only looked at sixteen.
- Trained at about 1 MP and tested at about 2 MP, 25 steps, CFG 1.
- With the [Viggle Turbo](https://huggingface.co/Viggle/Qwen-Image-2.1-viggle-turbo) LoRA at 8 steps it
  still holds the picture (0.05 to 0.24 px on five swaps). Plain fabric can come out a little grainy.
- Things that lie over the clothes can go with the old outfit or sit oddly on the new one: an earphone
  cable over a jacket was removed, and a purse strap looked wrong over a new jacket.
- The outfit picture can be a person wearing it, a flat lay or a product shot. A full-body outfit on
  a waist-up picture only puts the top half on; that is the workflow's choice, not the LoRA's.
