Less Is More — DINO and historical noDino selector weights

Original selector checkpoints associated with Less Is More: Genetic Frame Selection for Efficient Novel View Synthesis. This release contains two unchanged PyTorch state dictionaries: DINO and the historical noDino ablation, with one checkpoint per variant. These are frame selectors; reconstruction is performed downstream, after selecting the input frames.

Variant File Feature mask (zero-based)
DINO weights/dino.pt 3
Historical noDino weights/no_dino.pt 3, 4, 5, 6

Both use a 19-input MLP with two 64-unit hidden layers, GELU activation, and one output score (5,505 parameters). Both retain image sharpness. Select the desired variant with load_selector("dino") or load_selector("no_dino").

What “noDino” means in this release

The original --mask_dino evaluation flag zeros the three similarity columns dino_tgt_max, dino_tgt_mean, and dino_sel_max (4–6). With the deployed NEW4,GEOM2 groups, dino_std at column 12 remains active. Consequently, the historical noDino evaluation still needs DINO descriptors. It is not completely DINO-free or image-free; sharpness also remains active.

This release preserves that historical behavior and the original weights. Masking column 12 as well would change the evaluation configuration. No such change or retraining has been silently applied. The available checkpoint alone does not establish which feature masks were used during its original training.

Relationship to the later paper's baseline

The DINO checkpoint was used in the later paper's original-weight baseline. The historical noDino checkpoint is the companion Paper 3 ablation and was also used in reproduction diagnostics.

The later off-path baseline adapts the evaluation inputs without retraining:

  1. For each requested target pose, choose a distinct available source stand-in using equally weighted normalized camera-centre distance and view-direction angle, in target order.
  2. Remove those stand-ins from the candidate pool. If more than 150 candidates remain, retain 150 evenly spaced indices using rounded linspace.
  3. Condition geometry on the true requested target poses, while taking appearance descriptors from their source stand-ins. Target photographs are unavailable and are not needed.
  4. Greedily select the requested number of candidates, then reconstruct.

That target-pose/150-candidate protocol is a later-paper adaptation, not a claim that Paper 3 originally used identical evaluation inputs. This package's CLI accepts the already prepared candidate and conditioning arrays; it does not silently remove stand-ins or subsample a supplied pool.

Run locally

Use Python 3.10 or newer from inside this folder:

python -m pip install -r requirements.txt
python smoke_test.py
python selector.py --inputs scene.npz --variant dino --k 20 --output selected.json
python selector.py --inputs scene.npz --variant no_dino --k 20 --output selected_no_dino.json

The smoke test checks file hashes and runs both models on synthetic inputs. It downloads nothing. CPU inference was verified with PyTorch 2.2.0 and NumPy 1.26.4; later versions/devices can introduce small numerical differences.

Prepare scene.npz with these arrays:

Key Shape Meaning
poolC N × 3 Candidate camera centres in a shared world frame
poolV N × 3 Unit viewing directions, pointing into the scene
optC T × 3 Conditioning camera centres
optV T × 3 Unit conditioning viewing directions
poolDINO N × 384 DINOv2 ViT-S/14 CLS descriptors for candidate images
optDINO T × 384 Descriptors for the available conditioning/stand-in images
sharp N Per-candidate Laplacian-variance sharpness

The original sharpness calculation averages the image channels, applies the five-point discrete Laplacian on the interior pixels, and takes PyTorch's sample variance. Use the same image resizing and value scale as the experiment being reproduced. This package operates on cached descriptors and sharpness; it does not supply an image-preprocessing or DINO-backbone pipeline. The DINO backbone weights, reconstructors, images, and datasets are not included.

features.py preserves the original feature calculations and inference normalization. The complete 19-column order is in each variant's config. Features depend on the already selected set and must be recomputed at every greedy step. Output indices are zero-based rows of poolC, in selection order; map them back to source frame IDs using your own candidate-pool mapping.

For precomputed feature matrices:

import torch
from selector import load_selector

model, config = load_selector("dino")
# F must be a float32 (N, 19) tensor with the documented features and masks.
with torch.inference_mode():
    scores = model(F)

model(F) does not construct features or apply masks; use select() for the included complete greedy decoder. Weights are loaded with weights_only=True and strict state-dictionary checks. These are custom PyTorch models, not Transformers AutoModel checkpoints.

Download and cite

The release is hosted at Iron486/less-is-more-selector. Download the complete folder, including both variants, with:

hf download Iron486/less-is-more-selector --local-dir paper3-selector

For reproducibility, add --revision COMMIT_HASH using the exact commit from the repository history. Cite the paper, this repository, the model variant, and that revision. When using this release, report that the original checkpoint was used without retraining. Describe the historical noDino ablation and any evaluation-protocol adaptations separately.

License

This release uses the repository owner's selected Creative Commons Attribution 4.0 International license. The complete license text is included in LICENSE.

Integrity and provenance

manifest.json records variant names, byte sizes, SHA-256 hashes, and the source code used for this export. SHA256SUMS covers all other release files. verification/report.json records the packaging checks. Checkpoints were copied byte-for-byte; no parameter conversion, averaging, fine-tuning, or retraining was performed.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support