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:
```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.