---
license: other
license_name: flux-non-commercial-license
base_model:
- black-forest-labs/FLUX.2-klein-9B
base_model_relation: adapter
library_name: diffusers
pipeline_tag: image-to-image
tags:
- lora
- face-swap
- flux
- flux-2-klein
- fal
- safetensors
- image-generation
widget:
- text: "face_swap: take the face from Picture 1 and swap it onto the person in Picture 2. the result should show the exact face and features from Picture 1 on the body, pose, and scene from Picture 2, with natural skin tone blending and matching lighting."
output:
url: "https://huggingface.co/ilkerzgi/face-swap/resolve/main/images/uptUNwXgA8EwG0z3nrU9D_xitedmd1.png"
- text: "face_swap: take the face from Picture 1 and swap it onto the person in Picture 2. the result should show the exact face and features from Picture 1 on the body, pose, and scene from Picture 2, with natural skin tone blending and matching lighting."
output:
url: "https://huggingface.co/ilkerzgi/face-swap/resolve/main/images/p8VRilcpJwVfQMhhd1tcP_4XLB5cQm.png"
- text: "face_swap: take the face from Picture 1 and swap it onto the person in Picture 2. the result should show the exact face and features from Picture 1 on the body, pose, and scene from Picture 2, with natural skin tone blending and matching lighting."
output:
url: "https://huggingface.co/ilkerzgi/face-swap/resolve/main/images/5GvzCmqBXxkiPtOUsD79u_txyQKwTR.png"
- text: "face_swap: take the face from Picture 1 and swap it onto the person in Picture 2. the result should show the exact face and features from Picture 1 on the body, pose, and scene from Picture 2, with natural skin tone blending and matching lighting."
output:
url: "https://huggingface.co/ilkerzgi/face-swap/resolve/main/images/t4C2QjrNO20JMbf1zZooH_4TirbpGG.png"
- text: "face_swap: take the face from Picture 1 and swap it onto the person in Picture 2. the result should show the exact face and features from Picture 1 on the body, pose, and scene from Picture 2, with natural skin tone blending and matching lighting."
output:
url: "https://huggingface.co/ilkerzgi/face-swap/resolve/main/images/4-XBoOuL1zkz-huT39gnP_QeDdCFoP.png"
- text: "face_swap: take the face from Picture 1 and swap it onto the person in Picture 2. the result should show the exact face and features from Picture 1 on the body, pose, and scene from Picture 2, with natural skin tone blending and matching lighting."
output:
url: "https://huggingface.co/ilkerzgi/face-swap/resolve/main/images/IyzFIKmJvvym9GbwfN3KC_gifsjYqL.png"
---
# Face-Swap LoRA for FLUX 2 Klein 9B
A LoRA adapter for [FLUX 2 Klein 9B](https://huggingface.co/black-forest-labs/FLUX.2-klein-9B) fine-tuned for high-quality face swapping. Given a face source image and a body/scene image, the model produces a natural face swap preserving identity, lighting, and skin tone.
## Prompt
Use the following prompt for best results:
```
face_swap: take the face from Picture 1 and swap it onto the person in Picture 2. the result should show the exact face and features from Picture 1 on the body, pose, and scene from Picture 2, with natural skin tone blending and matching lighting.
```
- **Picture 1**: Face source image (the identity to transfer)
- **Picture 2**: Body/scene image (the target pose and environment)
## How to Use
### Try it on fal
[**Open on fal.ai**](https://fal.ai/models/fal-ai/flux-2-klein/9b/base/edit/lora?share=882b9660-31cb-44df-8ea5-036608ad30f2)
### Via fal.ai API
```python
import fal_client
def on_queue_update(update):
if isinstance(update, fal_client.InProgress):
for log in update.logs:
print(log["message"])
result = fal_client.subscribe(
"fal-ai/flux-2-klein/9b/base/edit/lora",
arguments={
"prompt": "face_swap: take the face from Picture 1 and swap it onto the person in Picture 2. "
"the result should show the exact face and features from Picture 1 on the body, pose, "
"and scene from Picture 2, with natural skin tone blending and matching lighting.",
"model_name": None,
"loras": [{
"path": "https://huggingface.co/ilkerzgi/face-swap/resolve/main/FS2_V2_r32_800_pytorch_lora_weights.safetensors",
"scale": 1
}],
"embeddings": [],
"image_urls": [
"https://example.com/face_source.png",
"https://example.com/body_scene.png"
],
"num_images": 4
},
with_logs=True,
on_queue_update=on_queue_update,
)
print(result)
```
## Evaluation Overview
| Test Cases | LoRA Variants | Image Models | Total Generations | Dataset Sizes |
|:---:|:---:|:---:|:---:|:---:|
| **25** | **9** | **3** | **300** | **300 / 800** |
9 LoRA variants were trained with different hyperparameters and evaluated against 3 image models across 25 diverse test subjects.
## Training Configurations
| Variant | Samples | Rank | Steps | LR | Guidance | Avg Latency |
|---|:---:|:---:|:---:|:---:|:---:|:---:|
| V1 r16 (300) | 300 | 16 | 3000 | 5e-5 | 1 | 6.0s |
| V2 r32 (300) | 300 | 32 | 3500 | 5e-5 | 1 | 6.1s |
| V3 r32+cfg (300) | 300 | 32 | 3500 | 5e-5 | 3.5 | 6.6s |
| V1 r16 (800) | 800 | 16 | 3000 | 5e-5 | 1 | 6.4s |
| V2 r32 (800) | 800 | 32 | 3500 | 5e-5 | 1 | 6.3s |
| V3 r32+cfg (800) | 800 | 32 | 3500 | 5e-5 | 3.5 | 6.2s |
| V4 r32 long (800) | 800 | 32 | 5000 | 5e-5 | 1 | 6.4s |
| V5 r64 (800) | 800 | 64 | 4000 | 3e-5 | 1 | 6.4s |
| V6 r32 slow (800) | 800 | 32 | 5000 | 1e-5 | 1 | 6.4s |
## Image Models
| Model | Avg Latency |
|---|:---:|
| Nano Banana 2 | 28.8s |
| Nano Banana Pro | 33.3s |
| GPT Image 1.5 | 30.3s |
## Latency Comparison
| Model | Avg Latency |
|---|---:|
| V1 r16 (300) | 6.0s |
| V2 r32 (300) | 6.1s |
| V3 r32+cfg (800) | 6.2s |
| V2 r32 (800) | 6.3s |
| V6 r32 slow (800) | 6.4s |
| V4 r32 long (800) | 6.4s |
| V5 r64 (800) | 6.4s |
| V1 r16 (800) | 6.4s |
| V3 r32+cfg (300) | 6.6s |
| Nano Banana 2 | 28.8s |
| GPT Image 1.5 | 30.3s |
| Nano Banana Pro | 33.3s |
> All LoRA variants average **~6-7s**, while image models average **~29-33s**.
## Model Weights
| Variant | Rank | Samples | Download |
|---|:---:|:---:|---|
| V1 r16 (300) | 16 | 300 | [FS_V1_r16_300_pytorch_lora_weights.safetensors](./FS_V1_r16_300_pytorch_lora_weights.safetensors) |
| V2 r32 (300) | 32 | 300 | [FS_V2_r32_300_pytorch_lora_weights.safetensors](./FS_V2_r32_300_pytorch_lora_weights.safetensors) |
| V3 r32+cfg (300) | 32 | 300 | [FS_V3_r32g_300_pytorch_lora_weights.safetensors](./FS_V3_r32g_300_pytorch_lora_weights.safetensors) |
| V1 r16 (800) | 16 | 800 | [FS2_V1_r16_800_pytorch_lora_weights.safetensors](./FS2_V1_r16_800_pytorch_lora_weights.safetensors) |
| V2 r32 (800) | 32 | 800 | [FS2_V2_r32_800_pytorch_lora_weights.safetensors](./FS2_V2_r32_800_pytorch_lora_weights.safetensors) |
| V3 r32+cfg (800) | 32 | 800 | [FS2_V3_r32g_800_pytorch_lora_weights.safetensors](./FS2_V3_r32g_800_pytorch_lora_weights.safetensors) |
| V4 r32 long (800) | 32 | 800 | [FS2_V4_r32L_800_pytorch_lora_weights.safetensors](./FS2_V4_r32L_800_pytorch_lora_weights.safetensors) |
| V5 r64 (800) | 64 | 800 | [FS2_V5_r64_800_pytorch_lora_weights.safetensors](./FS2_V5_r64_800_pytorch_lora_weights.safetensors) |
| V6 r32 slow (800) | 32 | 800 | [FS2_V6_r32s_800_pytorch_lora_weights.safetensors](./FS2_V6_r32s_800_pytorch_lora_weights.safetensors) |
## Test Cases (25)
### #1 — middle-aged woman with short stylish grey hair and blue eyes, elegant bone structure
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 6.7s | 8.9s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 7.3s | 6.6s | 6.6s | 6.6s | 6.6s | 6.6s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 35.3s | 39.6s | 27.7s |
### #2 — young woman with long straight brown hair parted in the middle and brown eyes
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 6.6s | 6.1s | 7.1s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 5.7s | 7.1s | 6.8s | 7.1s | 9.4s | 6.8s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 24.0s | 32.5s | 44.6s |
### #3 — older woman with short white curly hair and warm brown eyes
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 6.1s | 6.3s | 5.9s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 6.6s | 6.6s | 6.6s | 6.6s | 6.6s | 6.6s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 25.0s | 30.4s | 50.6s |
#4 — young African American woman with braided hair and warm brown eyes
### #4 — young African American woman with braided hair and warm brown eyes
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 7.5s | 7.4s | 5.8s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 6.6s | 6.6s | 7.6s | 6.6s | 5.7s | 6.6s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 31.0s | 36.6s | 28.0s |
#5 — young woman with short blonde bob haircut and bright blue eyes, Scandinavian features
### #5 — young woman with short blonde bob haircut and bright blue eyes, Scandinavian features
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 5.7s | 5.7s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 8.0s | 6.6s | 6.1s | 6.7s | 6.9s | 5.7s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 26.5s | 41.0s | 25.3s |
#6 — young Hispanic man with wavy dark hair and brown eyes, trimmed goatee
### #6 — young Hispanic man with wavy dark hair and brown eyes, trimmed goatee
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 5.7s | 5.7s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 6.1s | 7.1s | 6.1s | 6.6s | 6.6s | 6.6s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 25.4s | 42.3s | 24.0s |
#7 — young South Asian man with dark thick hair and brown eyes, short neat beard
### #7 — young South Asian man with dark thick hair and brown eyes, short neat beard
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 6.6s | 5.7s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 6.6s | 6.6s | 6.6s | 7.1s | 7.5s | 7.1s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 23.0s | 31.3s | 25.4s |
#8 — young man with a buzz cut and hazel eyes, tanned skin
### #8 — young man with a buzz cut and hazel eyes, tanned skin
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 6.2s | 6.6s | 6.7s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 6.1s | 6.6s | 6.6s | 6.8s | 5.5s | 5.7s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 28.5s | 39.8s | 26.6s |
#9 — young Middle Eastern man with dark wavy hair and olive skin, prominent eyebrows
### #9 — young Middle Eastern man with dark wavy hair and olive skin, prominent eyebrows
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 5.9s | 6.6s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 6.1s | 7.3s | 8.9s | 6.6s | 5.7s | 6.6s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 25.3s | 44.6s | 66.6s |
#10 — young man with curly black hair and deep brown eyes, clean-shaven
### #10 — young man with curly black hair and deep brown eyes, clean-shaven
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 6.4s | 5.7s | 5.7s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 5.7s | 7.1s | 6.1s | 7.0s | 6.7s | 6.6s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 43.9s | 31.3s | 25.2s |
#11 — young African American woman with short natural TWA hairstyle and dark brown eyes, high cheekbones
### #11 — young African American woman with short natural TWA hairstyle and dark brown eyes, high cheekbones
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 6.7s | 6.6s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 9.8s | 7.5s | 5.7s | 6.6s | 6.1s | 7.5s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 26.1s | 23.3s | 25.3s |
#12 — young woman with tight blonde curls, dark brown skin, bright smile, dimples
### #12 — young woman with tight blonde curls, dark brown skin, bright smile, dimples
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 5.4s | 10.3s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 5.7s | 5.7s | 6.1s | 6.6s | 6.2s | 6.6s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 30.6s | 25.8s | 25.4s |
#13 — young woman with tight blonde curls, dark brown skin, bright smile, dimples
### #13 — young woman with tight blonde curls, dark brown skin, bright smile, dimples
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 7.1s | 5.7s | 7.0s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 5.7s | 6.6s | 5.7s | 7.0s | 5.8s | 6.8s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 24.1s | 24.4s | 26.6s |
#14 — middle-aged woman with dark skin, close-cropped natural hair, elegant gold jewelry
### #14 — middle-aged woman with dark skin, close-cropped natural hair, elegant gold jewelry
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 7.1s | 7.5s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 7.1s | 5.7s | 7.1s | 5.7s | 7.1s | 7.1s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 19.4s | 24.7s | 28.1s |
#15 — young Nordic man with platinum blonde hair, ice blue eyes, sharp cheekbones, clean shaven
### #15 — young Nordic man with platinum blonde hair, ice blue eyes, sharp cheekbones, clean shaven
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 5.7s | 6.6s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 6.6s | 5.7s | 5.7s | 5.7s | 7.5s | 7.1s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 26.4s | 42.2s | 25.3s |
#16 — middle-aged Hispanic woman with dark wavy hair streaked with grey, warm brown eyes, round face
### #16 — middle-aged Hispanic woman with dark wavy hair streaked with grey, warm brown eyes, round face
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 5.7s | 10.3s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 5.4s | 5.7s | 5.7s | 7.5s | 7.1s | 6.6s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 45.2s | 34.2s | 24.0s |
#17 — young Pacific Islander woman with long wavy dark hair, brown eyes, strong features
### #17 — young Pacific Islander woman with long wavy dark hair, brown eyes, strong features
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 5.7s | 7.1s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 5.7s | 8.1s | 5.7s | 5.7s | 5.7s | 6.7s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 20.0s | 28.0s | 27.3s |
#18 — older Eastern European man with a thick grey mustache, lined face, piercing grey eyes
### #18 — older Eastern European man with a thick grey mustache, lined face, piercing grey eyes
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 5.9s | 5.7s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 5.7s | 5.7s | 5.7s | 5.7s | 5.7s | 5.2s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 20.7s | 24.0s | 26.7s |
#19 — older African American woman with silver locs, deep brown eyes, and laugh lines, regal posture
### #19 — older African American woman with silver locs, deep brown eyes, and laugh lines, regal posture
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 6.2s | 6.1s | 5.7s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 5.7s | 5.9s | 5.7s | 5.7s | 5.7s | 6.6s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 25.7s | 58.2s | 24.8s |
#20 — older Chinese woman with jet black dyed hair, round face, gentle brown eyes, pearl earrings
### #20 — older Chinese woman with jet black dyed hair, round face, gentle brown eyes, pearl earrings
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 6.6s | 5.7s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 6.8s | 5.7s | 5.7s | 7.1s | 5.6s | 5.6s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 35.0s | 27.9s | 28.3s |
#21 — middle-aged woman with fiery red curly hair and freckled pale skin, green eyes, strong jawline
### #21 — middle-aged woman with fiery red curly hair and freckled pale skin, green eyes, strong jawline
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.6s | 5.7s | 5.6s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 5.7s | 5.7s | 5.7s | 5.7s | 6.6s | 5.7s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 41.1s | 36.6s | 27.9s |
#22 — young Southeast Asian man with black hair, smooth brown skin, sharp jawline
### #22 — young Southeast Asian man with black hair, smooth brown skin, sharp jawline
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.7s | 5.7s | 5.7s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 5.7s | 5.7s | 6.6s | 5.7s | 5.7s | 5.7s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 25.3s | 28.8s | 25.3s |
#23 — middle-aged woman with natural grey afro, dark skin, reading glasses on nose
### #23 — middle-aged woman with natural grey afro, dark skin, reading glasses on nose
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 6.6s | 5.7s | 5.7s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 6.1s | 5.7s | 5.8s | 5.6s | 6.6s | 5.7s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 34.1s | 22.0s | 24.6s |
#24 — middle-aged Hispanic woman with dark wavy hair streaked with grey, warm brown eyes, round face
### #24 — middle-aged Hispanic woman with dark wavy hair streaked with grey, warm brown eyes, round face
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 5.6s | 5.7s | 6.1s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 7.8s | 5.7s | 5.9s | 5.7s | 5.7s | 5.7s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 31.9s | 24.7s | 26.0s |
#25 — older East Asian man with thinning grey hair, wire-rimmed glasses, kind wrinkled eyes
### #25 — older East Asian man with thinning grey hair, wire-rimmed glasses, kind wrinkled eyes
| Face Source | Body / Scene | Ground Truth |
|:---:|:---:|:---:|
|
|
|
|
**LoRA — 300 Samples**
| V1 r16 (300) | V2 r32 (300) | V3 r32+cfg (300) |
|:---:|:---:|:---:|
|
|
|
|
| 6.6s | 5.7s | 6.0s |
**LoRA — 800 Samples**
| V1 r16 (800) | V2 r32 (800) | V3 r32+cfg (800) | V4 r32 long (800) | V5 r64 (800) | V6 r32 slow (800) |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
|
|
|
|
|
| 5.7s | 5.7s | 5.4s | 5.7s | 5.7s | 5.7s |
**Image Models**
| Nano Banana 2 | Nano Banana Pro | GPT Image 1.5 |
|:---:|:---:|:---:|
|
|
|
|
| 25.3s | 37.3s | 46.7s |
## Training Details
- **Base Model**: [FLUX 2 Klein 9B](https://huggingface.co/black-forest-labs/FLUX.2-klein-9B)
- **Method**: LoRA (Low-Rank Adaptation)
- **Trainer**: [fal-ai/flux-2-klein-9b-base-trainer](https://fal.ai/models/fal-ai/flux-2-klein-9b-base-trainer/edit)
- **Datasets**: Two custom face-swap paired datasets (300 and 800 samples)
- **Rank variants tested**: 16, 32, 64
- **Training steps**: 3,000 – 5,000
- **Learning rates**: 1e-5 to 5e-5
- **Guidance scale**: 1.0 and 3.5
## Author
**Ilker Izgi** — Creative Engineer at [fal](https://fal.ai)