File size: 6,176 Bytes
5c1bb37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7f27c7a
 
 
 
 
 
 
 
5c1bb37
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# 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.