Qwen-Image-2.1 · Multiple-Angles camera-control LoRA

Reshoot any object from a controlled camera position: feed a photo, ask for a different azimuth/elevation, get the same subject from that angle. First camera-control LoRA for Qwen-Image-2.1 — the newest Qwen image base (unified generate + edit, native RGBA), where this format did not exist yet.

  • Trigger: <mva> — every caption/prompt starts with it
  • 36 poses: 12 azimuths (30° steps) × 4 elevations (0° eye-level / 30° elevated / 60° high-angle / 90° top-down), plus a close-up variant of each → 72 addressable framings
  • Recommended checkpoint: step 1,000 (checkpoints/…_000001000.safetensors) — angle-following, identity preservation and detail peak together there; step 1,500 is the alternate, step 2,500 bakes harder (drifts toward copying the reference view)
  • Strength: 0.8–1.0 in ComfyUI / diffusers

Real photos

In-distribution examples are above — but does it work on everyday photos it never saw? Dog, cat and apple from Wikimedia Commons, step-1,000 checkpoint, same prompt grammar:

360° orbit — one input, all 12 azimuths

Twelve separate generations (one per 30° azimuth step, eye-level), looped — the camera circles the subject while the cat, cushion and scene hold together:

360 orbit of a fluffy cat across 12 azimuths

Individual pose comparisons

Golden retriever · <mva> front-right quarter view, eye-level shot dog quarter

Golden retriever · <mva> back view, eye-level shot dog back

Cat · <mva> front-right quarter view, eye-level shot cat quarter

Cat · <mva> back view, eye-level shot cat back

Apple · <mva> front-right quarter view, eye-level shot apple quarter

Apple · <mva> back view, eye-level shot apple back

Generalizes to real photos: the subject rotates to the requested view and the scene mostly survives, though identity fidelity on out-of-distribution subjects is good-not-perfect (fine fur detail softens). Photo credits (CC): Golden Retriever Carlos, Cat03, Red Apple.

Object examples (training distribution)

Front view in, captioned angle out — rendered at the recommended step-1,000 checkpoint:

<mva> right side view, high-angle shot right side, high-angle

<mva> back view, eye-level shot — the front features are gone; genuinely the back of the object back view

<mva> front-left quarter view, eye-level shot close-up front-left close-up

<mva> left side view, eye-level shot left side

What the base model does with the same captions

These are step-0 renders from training — the adapter is zero-initialized, so they show the base Qwen-Image-2.1 attempting the identical caption + control image: the camera mostly stays on the original front/three-quarter vantage in both natural-language and <mva> phrasings.

base · <mva> right side view, high-angle shot base attempt 1

base · <mva> back view, eye-level shot base attempt 2

base · <mva> front-left quarter view, eye-level shot close-up base attempt 3

All 40 sample grids across training (4 poses × every 250 steps, fixed prompts) are in samples/ — including the step-2,500 grid if you prefer the stronger-baked look.

Prompt format

<mva> {azimuth}, {elevation}[ close-up]

Azimuth (12 steps of 30°)

Label Azimuth
front view 0°
front-right view 30°
front-right quarter view 60°
right side view 90°
back-right quarter view 120°
back-right view 150°
back view 180°
back-left view 210°
back-left quarter view 240°
left side view 270°
front-left quarter view 300°
front-left view 330°

Elevation

Label Elevation
eye-level shot 0°
elevated shot 30°
high-angle shot 60°
top-down shot 90°

Append close-up for the 62%-crop framing. Example:

<mva> right side view, high-angle shot close-up

Usage

Gradio Workflow Space — akhaliq/qwen21-multiple-angles-workflow: canvas UI, photo in → camera knobs out.

ComfyUI — load the LoRA with any Qwen-Image-2.1 workflow (LoRA strength 0.8–1.0), pass your photo as the edit/reference image, prompt with the format above.

diffusers (QwenImage21Pipeline, edit mode = pass the image):

image = pipe(
    prompt="<mva> back view, eye-level shot",
    image=input_image,          # front view of your subject
    num_inference_steps=40,
    true_cfg_scale=1.0,
).images[0]

Training

  • Data: 5,028 angle-labeled edit pairs from zeyuanyin/Dome-Objaverse (CC-BY-4.0) — 2,514 objects, front view → 2 target views each, composited on a studio background. Published: akhaliq/qwen21-multiple-angles-train-v1.
  • Trainer: ai-toolkit, arch: qwen_image_2, control-image conditioning (block-causal reference attention), rank 32 / alpha 32, adamw8bit, lr 1e-4, weighted timesteps, fp8 (DiT + TE), caption dropout 0.05, 512², 2,500 steps.
  • Checkpoints: all ten 250-step saves + samples are in checkpoints/ and samples/ — step 1,000 recommended, 1,500 alternate, 2,500 stronger-baked.

Scope & limits

  • Trained on Objaverse objects; real photos generalize (see Real photos above) but identity fidelity on fur/fine detail is good-not-perfect.
  • Trained at 512²; larger canvases inherit the style but were not trained on.
  • Angles interpolate reasonably between the trained 30° steps; exact azimuth/elevation numbers in prompts are not parsed — use the labels above.

Credit to fal's Multiple-Angles LoRA for Edit-2511 for the caption grammar this format standardized on.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for developerjeremylive/Qwen-Image-2.1-Multiple-Angles-LoRA-etheroi

Adapter
(124)
this model

Collection including developerjeremylive/Qwen-Image-2.1-Multiple-Angles-LoRA-etheroi