--- 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)