Add OmniDreams evaluation and regression for long running outputs#342
Conversation
|
This is mostly just a prototype for quality regression tests using the method from the DrivingGen paper. It's not clear to me yet if this is actually useful or not, but it does seem to work at least. |
- Add resumable HF scene discovery, batching, staging, generation, and validation tooling - Add DrivingGen FVD-lite integration with split-specific reference staging - Capture machine-readable evaluator logs/results for regression tracking - Add tests for eval manifests, staging, validation, and FVD adapter behavior
365f5d1 to
456e9cc
Compare
Greptile SummaryAdds a complete
Confidence Score: 5/5Safe to merge; all previously blocking defects are resolved in this revision. Every issue raised in prior review rounds has been corrected and is covered by the new test suite. The one remaining note is a sys.modules caching concern in the in-process FVD computation path, which only matters when multiple drivinggen_root checkouts are used in the same Python process. integrations/omnidreams/omnidreams/eval/drivinggen.py — specifically _calculate_styleganv_fvd and its importlib.import_module call. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[discover] -->|manifest.jsonl| B[plan-batches]
B -->|batches.json| C[stage-batch]
C -->|staged manifest| D[generate]
D -->|generated.mp4 per UUID| E[validate-generation]
E -->|validation.json| F[summarize-run]
D --> G[prepare-drivinggen]
G --> H[drivinggen-fvd-lite]
H -->|fvd-lite.json| F
D --> I[prepare-worldlens]
I --> J[worldlens-evaluate]
J -->|worldlens.json| F
subgraph Setup
S1[setup-evaluator] -->|DrivingGen checkout| G
S2[setup-worldlens] -->|WorldLens checkout + config| I
end
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
A[discover] -->|manifest.jsonl| B[plan-batches]
B -->|batches.json| C[stage-batch]
C -->|staged manifest| D[generate]
D -->|generated.mp4 per UUID| E[validate-generation]
E -->|validation.json| F[summarize-run]
D --> G[prepare-drivinggen]
G --> H[drivinggen-fvd-lite]
H -->|fvd-lite.json| F
D --> I[prepare-worldlens]
I --> J[worldlens-evaluate]
J -->|worldlens.json| F
subgraph Setup
S1[setup-evaluator] -->|DrivingGen checkout| G
S2[setup-worldlens] -->|WorldLens checkout + config| I
end
Reviews (7): Last reviewed commit: "Document OmniDreams evaluation workflow" | Re-trigger Greptile |
- Add WorldLens checkout, staging, evaluation, and result collection helpers - Add CLI commands for setup-worldlens, prepare-worldlens, and worldlens-evaluate - Stage generated clips with cropped frame-matched reference videos - Preserve DrivingGen as a separate fixed-split regression evaluator - Add tests for WorldLens config, staging, manifest, and result handling
Adds summarize-run to collect generated clip counts, validation status, DrivingGen FVD-lite results, and WorldLens consistency metrics into JSON and Markdown reports. Includes tests for report generation and keeps the summary focused on current metrics rather than future deepening options.
|
Quick summary of the evaluation work: This is an automated evaluation path around the existing Hugging Face scene inputs. The tooling can stage scenes in batches, run FlashDreams/OmniDreams inference, validate generated clips, and run two separate evaluators. What it can do now:
What it cannot currently do:
A future driving-quality evaluator would need:
|
Handle invalid byte-size suffixes with a clear ValueError, report missing generated output directories explicitly during validation, and fix the DrivingGen FVD staging minimum so the seed-frame skip still leaves at least 100 usable frames. Add regression tests for each case.
|
/ok to test 9baf68d |
Add type narrowing for dynamic evaluator payloads, avoid direct imports from external DrivingGen checkouts during type checking, and apply ruff formatting to the OmniDreams evaluator files and tests.
|
/ok to test 531bbeb |
|
Want your agent to iterate on Greptile's feedback? Try greploops. |
Filter missing frame-count fields when summarizing WorldLens stage manifests so summarize-run does not crash on partial staging output. Add regression coverage and avoid duplicate reference frame counting in DrivingGen staging.
|
/ok to test b846bf1 |
Make streamed FlashDreams generation return the same contextual RuntimeError style as the log-to-file path, including the scene UUID and exit code, and add regression coverage for the failure path.
When generated.mp4 already exists but generation.json is missing, write the metadata during resume instead of skipping the case permanently. Add regression coverage to ensure generation is not rerun for this recovery path.
|
/ok to test a2df8b1 |
| env_name="DRIVINGGEN_I3D_CKPT", | ||
| default_path=DEFAULT_I3D_TORCHSCRIPT_URL, | ||
| upstream_path="/shared_disk/users/yang.zhou/iclr_open_source/DrivingGen/ckpt/i3d_torchscript.pt", | ||
| ): |
There was a problem hiding this comment.
why is this patching needed? Can we consider forking the repo and modify the path there if needed?
Or host the checkpoint somewhere else to avoid another dependency on dropbox
There was a problem hiding this comment.
We could copy the checkpoint to somewhere local I guess. I'm not sure where would be the best place for it that everyone will have access to. I'll see if I can find something.
|
Overall looks good. There some improvements we can address in follow-up PRs:
|
Add README guidance for running omnidreams-eval, expected runtime behavior, external evaluator setup, and interpretation of validation, DrivingGen, and WorldLens report metrics.
Thanks, these suggestions make sense. I added README documentation covering the evaluation workflow, runtime expectations, evaluator setup, and metric/report interpretation. I agree the evaluator organization and dependency pin/config cleanup would be useful, but it might make more sense to cover those in a follow-up PR once we have decided where to permanently host the checkpoint file. |
|
/ok to test 376678a |
Uh oh!
There was an error while loading. Please reload this page.