This repository contains the finalized CARScenes annotation workspace, release artifacts, benchmark tooling, and NeurIPS paper sources.
- GitHub code and release workspace:
https://github.com/Croquembouche/CARScenes - Hugging Face dataset landing page:
https://huggingface.co/datasets/williamhe0712/CARScenes
dataset/: unified final label JSON files and source image layout.release/carscenes-v1/: canonical annotation-only release, schema, splits, reports, and Croissant metadata.configs/hf_multimodal_model_presets.json: public-weight model presets for the local open-model benchmark workflow.scripts/train_hf_multimodal_qlora.py: generic QLoRA trainer for public Hugging Face multimodal models.scripts/run_hf_multimodal_benchmark.py: zero-shot or adapter-backed benchmark runner that emits CARScenes-compatible prediction JSONL files.scripts/evaluate_carscenes_predictions.py: scores model predictions against a CARScenes split.scripts/generate_benchmark_report.py: aggregates multiple runs into CSV, Markdown, and LaTeX benchmark tables.scripts/prepare_alpamayo_side_experiment.py: exports the 25-image Alpamayo side-experiment bundle.scripts/build_carscenes_release.py: rebuilds the release from the unified labels.scripts/validate_carscenes_release.py: validates the release records and split manifests.scripts/carscenes_review_dashboard.py: local web app for benchmark upload/evaluation and second-pass human review.paper/: NeurIPS manuscript source and final output PDF.
release/carscenes-v1/splits/dev-500.jsonl: fixed 500-example benchmark split used for the main local model table. In the paper this is referred to asBenchmark-500.release/carscenes-v1/splits/gold-test-100.jsonl: smaller curated gold audit split.release/carscenes-v1/splits/gold-agreement-25.jsonl: second-pass human agreement subset.
Rebuild and validate the canonical release:
python scripts/build_carscenes_release.py
python scripts/validate_carscenes_release.pyEvaluate one prediction JSONL against the main benchmark split:
python scripts/evaluate_carscenes_predictions.py \
--reference release/carscenes-v1/splits/dev-500.jsonl \
--predictions path/to/predictions.jsonlGenerate aggregate benchmark tables from multiple model runs:
python scripts/generate_benchmark_report.py \
--manifest templates/benchmark_runs_template.csv \
--output-dir runs/benchmark/table5_main_finetuned_reportLaunch the unified local review dashboard:
python scripts/carscenes_review_dashboard.pyThen open http://127.0.0.1:8770/.
The current paper deliberately presents the local benchmark as a split-pure reference study rather than as a broad leaderboard.
Qwen2-VL-2B zero-shot: compact no-schema same-family reference onBenchmark-500.Qwen2-VL-2B LoRA split-pure: clean adapter trained only on the frozen Train 4,592 split and evaluated onBenchmark-500.InternVL2-1B LoRA legacy control: older smaller public-weight control retained for failure-profile context, not a split-pure comparison row.
InternVL2-1B: weaker public-weight zero-shot control used to show the off-the-shelf gap.
LLaVA-OneVision-Qwen2-0.5B-OV: parseable under the compact/no-schema/json-only prompt recipe, but still collapsed on scene, directionality, and severity smoke gates.LLaVA-OneVision-Qwen2-7B-OV: now supported by the local launcher and sharded eval wrapper, but the bounded smoke path was not promotable on this hardware. Two-GPU QLoRA probes OOM'd; a capped three-GPU smoke run completed, but every logged step hadloss=0.0,grad_norm=0.0, andeval_loss=nan, so the model was not advanced into the paper tables.
- Main paper table:
templates/benchmark_runs_template.csv - Zero-shot companion:
templates/benchmark_runs_zero_shot_template.csv
Use scripts/run_table5_open_models.sh for the current paper rows or for experimental feasibility reruns:
scripts/run_table5_open_models.sh qwen2_eval
scripts/run_table5_open_models.sh internvl_zero_shot
scripts/run_table5_open_models.sh internvl_eval
scripts/run_table5_open_models.sh report_main
scripts/run_table5_open_models.sh report_zero_shot
scripts/run_table5_open_models.sh llava05_zero_shot
scripts/run_table5_open_models.sh llava05_train
scripts/run_table5_open_models.sh llava05_eval
scripts/run_table5_open_models.sh llava7_zero_shot
scripts/run_table5_open_models.sh llava7_train
scripts/run_table5_open_models.sh llava7_eval
scripts/run_table5_open_models.sh alpamayo_prepRegenerate the control rows and paper-facing reports with:
scripts/run_table5_open_models.sh qwen2_eval
scripts/run_table5_open_models.sh internvl_zero_shot
scripts/run_table5_open_models.sh internvl_eval
scripts/run_table5_open_models.sh report_main
scripts/run_table5_open_models.sh report_zero_shotThe compact/no-schema/json-only materialized datasets used for the LLaVA feasibility probes are:
runs/cache/train_qwen_compact_jsononly_noschema.jsonlruns/cache/val_dataset_500_compact_jsononly_noschema.jsonl
The generic HF trainer and benchmark runner remain available for bounded feasibility checks:
scripts/run_table5_open_models.sh llava05_zero_shot
scripts/run_table5_open_models.sh llava05_train
scripts/run_table5_open_models.sh llava05_eval
scripts/run_table5_open_models.sh llava7_zero_shot
scripts/run_table5_open_models.sh llava7_train
scripts/run_table5_open_models.sh llava7_evalPrepare a local bundle for the 25-image subset:
python scripts/prepare_alpamayo_side_experiment.py \
--selection-jsonl audit_outputs/benchmark500_random25_20260325/selected_records.jsonl \
--output-dir runs/alpamayo/benchmark500_random25_20260325 \
--copy-imagesThis writes:
requests.jsonl: one request record per sampled image with prompts and resolved image pathprompt.txt: system and user prompt textREADME.md: run instructions for manual or external Alpamayo executionimages/: copied images when--copy-imagesis enabled
runs/andaudit_outputs/are gitignored by default.- The Hugging Face benchmark tooling can use either the historical Qwen prompt family or the compact prompt configs, and it normalizes parsed outputs into the released JSON schema before scoring.
Qwen2-VL-2B LoRA split-pureis the current paper-facing adapted reference; the historical Qwen checkpoint is archived outside the main table because it predates the final split freeze.- The current paper-facing benchmark uses the clean Qwen split-pure row plus the matching zero-shot reference; the LLaVA feasibility paths are kept in the repo as experimental infrastructure, not as promoted paper rows.
- CARScenes annotations, schema, split manifests, and metadata:
CC BY 4.0 - Repository code:
MIT - Source images remain under the original upstream dataset licenses and are not relicensed here.