Spaces:
Paused
Paused
| title: Qwen-Image-Edit-2511-LoRAs-Fast | |
| emoji: π | |
| colorFrom: blue | |
| colorTo: blue | |
| sdk: gradio | |
| sdk_version: 6.20.0 | |
| app_file: app.py | |
| pinned: true | |
| license: apache-2.0 | |
| short_description: Demo of the Collection of Qwen Image Edit LoRAs | |
| Prompt-based image editing on **Qwen-Image-Edit-2511**, with identity preservation (change pose/clothes/scene while keeping the person's face), HD output, and an anti-deformed-hands option. | |
| Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference | |
| --- | |
| # API | |
| The Space exposes one endpoint: **`/edit`**. Base URL / Space id: `kulkas2pintu/QWEN_EDIT_IMAGE`. | |
| ### Parameters | |
| | name | type | default | meaning | | |
| |---|---|---|---| | |
| | `image` | image (filepath/URL) | β | **required.** The image to edit (the person/subject whose identity is kept). | | |
| | `prompt` | str | β | **required.** What to change, e.g. `"change her outfit to a red dress; turn to look left"`. | | |
| | `lora_adapter` | str | `""` | Optional style LoRA name (see list below). `""` = no style / base edit. | | |
| | `image2` | image | `None` | Optional 2nd reference image (e.g. a style or lighting reference). | | |
| | `seed` | int | `0` | Seed; ignored when `randomize_seed=True`. | | |
| | `randomize_seed` | bool | `True` | Pick a new random seed each call. | | |
| | `guidance_scale` | float | `1.0` | true-CFG. `1.0` = fastest. `>1` (e.g. `2.5`) activates the negative prompt that suppresses extra fingers / identity drift (slower, ~2Γ). | | |
| | `steps` | int | `4` | Denoise steps. `4` is native for this distilled model. | | |
| | `preserve_identity` | bool | `True` | Keep the person's face while pose/head can change. | | |
| | `identity_strength` | int | `65` | `0-100`, how forcefully identity is locked. | | |
| | `output_size` | int | `1280` | Long-side pixels `1024-2048`. Higher = more HD detail, slower (~quadratic). | | |
| | `fix_hands` | bool | `False` | Raise CFG/steps to suppress extra/fused fingers (slower). | | |
| **Returns:** `[result_image, seed_used]`. | |
| ### Available `lora_adapter` names | |
| `Multiple-Angles`, `Fal-Multiple-Angles` (best for pose/angle changes), `Photo-to-Anime`, `Anime-V2`, | |
| `Light-Migration`, `Any-light`, `Studio-DeLight`, `Cinematic-FlatLog`, `Upscaler`, `Unblur-Anything`, | |
| `Style-Transfer`, `Manga-Tone`, `Anything2Real`, `Polaroid-Photo`, `Midnight-Noir-Eyes-Spotlight`, | |
| `Hyper-Realistic-Portrait`, `Ultra-Realistic-Portrait`, `Pixar-Inspired-3D`, `Noir-Comic-Book`. | |
| > Tip: for realistic edits keep `preserve_identity=True`. **Uncheck it** (`preserve_identity=False`) | |
| > for full-transform styles like `Photo-to-Anime` / `Pixar-Inspired-3D`. | |
| ## Python (`gradio_client`) | |
| ```bash | |
| pip install gradio_client | |
| ``` | |
| ```python | |
| from gradio_client import Client, handle_file | |
| client = Client("kulkas2pintu/QWEN_EDIT_IMAGE") # add hf_token="hf_..." for a private Space | |
| result_image, seed_used = client.predict( | |
| image=handle_file("https://example.com/person.jpg"), # or a local path | |
| prompt="change her outfit to an elegant red dress; turn her head to the left", | |
| lora_adapter="", # or e.g. "Fal-Multiple-Angles" for pose changes | |
| image2=None, | |
| seed=0, | |
| randomize_seed=True, | |
| guidance_scale=2.5, # >1 turns on hand/identity negatives | |
| steps=6, | |
| preserve_identity=True, | |
| identity_strength=80, | |
| output_size=1536, # HD | |
| fix_hands=True, | |
| api_name="/edit", | |
| ) | |
| print("saved to:", result_image, "| seed:", seed_used) | |
| ``` | |
| `result_image` is a local filepath to the PNG result. | |
| ## JavaScript (`@gradio/client`) | |
| ```bash | |
| npm i @gradio/client | |
| ``` | |
| ```js | |
| import { Client } from "@gradio/client"; | |
| const image = await (await fetch("https://example.com/person.jpg")).blob(); | |
| const client = await Client.connect("kulkas2pintu/QWEN_EDIT_IMAGE"); | |
| const res = await client.predict("/edit", { | |
| image, | |
| prompt: "change her outfit to a red dress", | |
| lora_adapter: "", | |
| guidance_scale: 2.5, | |
| steps: 6, | |
| output_size: 1536, | |
| fix_hands: true, | |
| }); | |
| console.log(res.data); // [result_image, seed_used] | |
| ``` | |
| ## curl (raw REST) | |
| Gradio's REST API is a two-step call (queue β result): | |
| ```bash | |
| # 1) submit the job (image can be a public URL) | |
| curl -s -X POST https://kulkas2pintu-qwen-edit-image.hf.space/gradio_api/call/edit \ | |
| -H "Content-Type: application/json" \ | |
| -d '{"data":[ | |
| {"path":"https://example.com/person.jpg"}, | |
| "change her outfit to a red dress", | |
| "", null, 0, true, 2.5, 6, true, 80, 1536, true | |
| ]}' | |
| # -> {"event_id":"<id>"} | |
| # 2) stream the result | |
| curl -N https://kulkas2pintu-qwen-edit-image.hf.space/gradio_api/call/edit/<id> | |
| ``` | |
| The `data` array is positional, in the same order as the parameter table above. | |
| > The live, always-up-to-date schema is at | |
| > `https://kulkas2pintu-qwen-edit-image.hf.space/gradio_api/` (the "view API" JSON). | |
| > This Space also runs as an **MCP server** (`/gradio_api/mcp/`), so `/edit` is usable | |
| > as a tool from MCP-compatible clients. | |