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:
Golden retriever · <mva> front-right quarter view, eye-level shot
Golden retriever · <mva> back view, eye-level shot
Cat · <mva> front-right quarter view, eye-level shot
Cat · <mva> back view, eye-level shot
Apple · <mva> front-right quarter view, eye-level shot
Apple · <mva> back view, eye-level shot
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
<mva> back view, eye-level shot — the front features are gone; genuinely the back of the object
<mva> front-left quarter view, eye-level shot close-up
<mva> left side view, eye-level shot
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 · <mva> back view, eye-level shot
base · <mva> front-left quarter view, eye-level shot close-up
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
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,
guidance_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.