| # 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: |
|
|
| ```text |
| 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 |
|
|
| ```text |
| . |
| βββ 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 |
|
|
| ```bash |
| conda env create -f environment.yml |
| conda activate cmevs |
| ``` |
|
|
| If Conda is unavailable: |
|
|
| ```bash |
| python3 -m venv .venv |
| source .venv/bin/activate |
| pip install -r requirements.txt |
| ``` |
|
|
| ## Minimal Smoke Test |
|
|
| ```bash |
| bash scripts/run_tiny.sh |
| ``` |
|
|
| Expected outputs: |
|
|
| ```text |
| 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: |
|
|
| ```bash |
| 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: |
|
|
| ```bash |
| 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: |
|
|
| ```bash |
| 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: |
|
|
| ```text |
| 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`](https://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 |
| 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. |
|
|