cmevs-code / README.md
anon-cmevs-2026's picture
Add companion dataset URL: huggingface.co/datasets/anon-cmevs-2026/cmevs-erp-eval
7f27c7a verified

CM-EVS Anonymous Code Release

This repository contains the anonymous code release for CM-EVS: Conflict-Minimized Efficient View Selection for Scalable 3D Scene Data Acquisition.

The release is intentionally organized around one primary review path:

Blender indoor .blend scenes
  -> candidate generation
  -> conflict-minimized view selection
  -> selected ERP rendering
  -> coverage, oracle-gap, and quality-audit outputs

HM3D/GLB and ScanNet++/PLY support is included as secondary adapters, but the first path reviewers should inspect is the Blender-indoor path.

Review-Ready Entry Points

Purpose Command
No-data smoke test bash scripts/run_tiny.sh
Blender-indoor dry run DRY_RUN=1 BLENDER=/path/to/blender INPUT_DIR=/path/to/blend_scenes bash scripts/run_blender_indoor.sh
Full Blender-indoor run BLENDER=/path/to/blender INPUT_DIR=/path/to/blend_scenes bash scripts/run_blender_indoor.sh
Summarize Blender-indoor run python3 scripts/summarize_blender_indoor_run.py --output-root outputs/blender_indoor
Anonymity check bash scripts/check_anonymity.sh

The smoke test is designed to run without private assets. The full Blender-indoor run requires local .blend scenes and a Blender executable.

Repository Layout

.
β”œβ”€β”€ pipelines/               # full scene pipelines; Blender indoor is the primary path
β”œβ”€β”€ scripts/                 # review and reproduction entry points
β”œβ”€β”€ configs/                 # default and source-specific configs
β”œβ”€β”€ core/                    # ERP projection, tangent extraction, depth, and warping modules
β”œβ”€β”€ tools/                   # semantic and navigability helpers
β”œβ”€β”€ utils/                   # IO and pose utilities
β”œβ”€β”€ examples/                # tiny Blender-indoor-style metadata example
β”œβ”€β”€ metadata_examples/       # JSON schemas for candidate/selection logs
β”œβ”€β”€ data/                    # local data mount point, not tracked
β”œβ”€β”€ third_party/             # optional external dependencies, not tracked
└── results/                 # generated result CSVs

Environment

conda env create -f environment.yml
conda activate cmevs

If Conda is unavailable:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Minimal Smoke Test

bash scripts/run_tiny.sh

Expected outputs:

outputs/tiny/metadata/candidates.jsonl
outputs/tiny/metadata/selected_viewpoints.json
outputs/tiny/metadata/per_step_log.jsonl
outputs/tiny/renders/
outputs/tiny/results/coverage_main.csv
outputs/tiny/results/oracle_validation.csv
outputs/tiny/results/audit_50_frames.csv

This test validates the repository wiring and metadata contracts. It is not intended to reproduce paper-scale numbers.

Paper Experiments

The driver scripts for the Β§6 evaluation experiments (fixed-budget coverage, oracle-gain validation, Ξ» sweep, cross-source robustness, downstream depth) are scheduled to be released alongside the camera-ready paper. The current release ships the algorithmic core (scripts/build_candidates.py, scripts/select_views.py, scripts/render_selected.py), the per-stage evaluation building blocks (scripts/evaluate_coverage.py, scripts/evaluate_oracle_gap.py, scripts/audit_quality.py), and the metadata-contract example through the smoke test. Reviewers can verify the algorithmic core end-to-end via the smoke test above.

Primary Full Run: Blender Indoor

Put .blend scenes under data/blender_indoor/, or point INPUT_DIR to another directory. Nested layouts are supported; the first subdirectory under INPUT_DIR is used as the scene name.

Dry run:

DRY_RUN=1 \
BLENDER=/path/to/blender \
INPUT_DIR=data/blender_indoor \
OUTPUT_ROOT=outputs/blender_indoor \
bash scripts/run_blender_indoor.sh

Full run:

BLENDER=/path/to/blender \
INPUT_DIR=data/blender_indoor \
OUTPUT_ROOT=outputs/blender_indoor \
NUM_FRAMES=30 \
RESOLUTION=2048,1024 \
bash scripts/run_blender_indoor.sh

Equivalent direct CLI:

export PYTHONPATH="$PWD:$PWD/pipelines:${PYTHONPATH:-}"

python3 pipelines/run_full_pipeline.py \
  --blender /path/to/blender \
  --input-dir data/blender_indoor \
  --output-root outputs/blender_indoor \
  --num-frames 30 \
  --resolution 2048,1024 \
  --grid-spacing 0.5 \
  --min-frames 5 \
  --stop-gain 0.08

Secondary Adapters

The repository also includes adapters for additional sources used in robustness analyses:

  • configs/blender_outdoor.yaml: generic .glb / .gltf scenes.
  • configs/hm3d.yaml: HM3D-style .glb / .gltf scenes.
  • configs/scannetpp.yaml: ScanNet++-style .ply scenes.

These adapters are provided for completeness, but the Blender-indoor route is the recommended first reviewer path.

Data and Checkpoints

This repository does not redistribute third-party scene assets, dataset files, or model checkpoints. Put local assets under data/ or pass absolute paths via CLI. The data/ directory is ignored by git.

Depth Pro is optional for ERPT-style depth fusion. If used, place it under:

third_party/ml-depth-pro/
third_party/ml-depth-pro/checkpoints/depth_pro.pt

Companion Dataset

The CM-EVS dataset (Blender indoor RGB-D panoramas, license-aware adapters for HM3D / ScanNet++ / OB3D / TartanGround, MLCommons Croissant metadata) is released as an anonymous Hugging Face dataset:

Dataset: huggingface.co/datasets/anon-cmevs-2026/cmevs-erp-eval

The dataset card on that page includes the Datasheet, integrity-verification commands (shasum -a 256 -c SHA256SUMS), and the per-component license matrix. The Croissant manifest under dataset_metadata/croissant.json in this repository mirrors the dataset's metadata at release time.

Final Submission Check

Before uploading the code URL or zip:

bash scripts/run_tiny.sh
rm -rf outputs
bash scripts/check_anonymity.sh

The code is released under the MIT License for review. Dataset assets remain governed by their original licenses.