chibifire/omnigen2-azimuth-ladder-anny-20260901
omnigen2-azimuth-ladder-anny-20260901 An image-edit ladder in the EditScore dataset shape: a candidate measured against a baseline on the same prompts, one row per (source, edited, instruction) with the per-pair measurement beside the images. The baseline is OmniGen2; the candidate is the same model after a camera-control LoRA. This ladder has no EditScore score. The runs measured recovered azimuth — where the body actually faces in the generated view — not EditScore's pf / sc /… See the full description on the dataset page: https://huggingface.co/datasets/chibifire/omnigen2-azimuth-ladder-anny-20260901.
omnigen2-azimuth-ladder-anny-20260901
An image-edit ladder in the EditScore dataset shape: a candidate measured against a baseline on the same prompts, one row per (source, edited, instruction) with the per-pair measurement beside the images. The baseline is OmniGen2; the candidate is the same model after a camera-control LoRA.
This ladder has no EditScore score. The runs measured recovered azimuth — where the body actually faces in the generated view — not EditScore's pf / sc / pq / overall axes. Those columns are absent rather than zero-filled, because a column of invented scores reads exactly like a column of measured ones.
The question
Asked in plain language to move the camera around a person, does the body turn — and does training a LoRA make it turn?
Apparatus
One constructed render from the ANNY rig (`chibifire/anny-render-corpus`) as the source frame, eight asked azimuths from 0 to 315 degrees, per arm. OmniGen2 at revision df5dca8a981d74e6c3af214c145f5c735fe72367, bf16, 30 steps, 1024 px, seed 0, cfg_range 0.0-0.6, max_sequence_length 256, elevation 0, distance factor 1.0. Azimuth recovered from each output by RF-DETR keypoint fitting; agreement threshold 30 degrees — one hour mark on a clock face — against a baseline scatter of 14.9 degrees.
Result
Slope is 1.00 for a body that follows the camera and 0.00 for one that never moves. The LoRA more than doubles the slope and is still nowhere near obedience.
The slope improved while most pairs got worse. Over the six azimuths fitted in both arms, the LoRA beats the baseline on two of six:
Mean error over those six goes 61.2 to 73.4 degrees while the median goes 58.7 to 50.8. A slope fitted across the whole sweep rewards getting the front of the turn right; it does not notice the back half getting worse. Read the per-pair table before the slope.
Two LoRA views, azimuth 45 and 135, have no detectable person at threshold 0.3. They are in not_fitted with the reason, rather than dropped.
Relations, and why five
What each pair has differs, and a wide table would carry that as nulls. pairs interns the identity; the rest are satellites keyed on pair_idx.
Four LoRA images — azimuth 180, 225, 270 and 315 — were dropped from the corpus as regeneratable, so they have rows in pairs and recovery but none in images. Those four carry three of that arm's four worst errors, so a reader who took the surviving images for the arm would read a better result than it earned.
Reading it
from datasets import load_dataset
name = "chibifire/omnigen2-azimuth-ladder-anny-20260901"
pairs = load_dataset(name, "pairs")["train"].to_pandas()
rec = load_dataset(name, "recovery")["train"].to_pandas()
pairs.merge(rec, on="pair_idx").pivot(index="asked_deg", columns="arm", values="error_deg")Generated synthetic, and what follows from that
Every edited image here was sampled from a generative model, so it is generated synthetic rather than constructed. The generating model, its revision, and the prompt for each logged view are recorded with the data, and the set is manifested apart from the constructed renders it derives from. It is not evaluation data — a model measured on another model's output has not been measured against the world — and it is not a sole training distribution.
The source frame is constructed synthetic: rendered deterministically from a rig, labels true by construction, reproducible from the same seed.
Not measured
- Conditions B and C. Fourteen views exist in the base corpus; only condition A was fitted.
- Any EditScore axis. See the top of this card.
- Whether the LoRA's regression past 180 degrees is training or sampling noise. One seed, one source frame, six comparable pairs.
Provenance
Produced by omnigen2_azimuth_ladder_hf_publish.py in `weftspun/anny-render-corpus` from the JSON each run wrote. The LoRA arm's two JSONs had been deleted alongside four of its images and were restored from commit 4931850: a render is regenerated by rerunning the generator, and a measurement is not.
Fourteen controls, two of them negative — a fit naming a view with no recorded asked azimuth is refused, and so is a pair that is both fitted and declared unfittable.
