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