Skip to content

LangSplatV2 LERF OVS Evaluation#56

Merged
swahtz merged 13 commits into
openvdb:mainfrom
swahtz:langsplatv2_lerf_eval
Mar 5, 2026
Merged

LangSplatV2 LERF OVS Evaluation#56
swahtz merged 13 commits into
openvdb:mainfrom
swahtz:langsplatv2_lerf_eval

Conversation

@swahtz

@swahtz swahtz commented Mar 4, 2026

Copy link
Copy Markdown
Contributor

Fixes #44

swahtz added 3 commits March 4, 2026 18:33
- Added `train_eval.sh` and `train_scenes.sh` for streamlined training and evaluation processes.
- Introduced `download_data.py` for downloading the LERF-OVS dataset, along with `eval_lerf.py` for model evaluation on this dataset.
- Created `environment.yml` to define the Conda environment for LangSplatV2, including necessary dependencies.
- Updated `.gitignore` to exclude new log and result directories.
- Enhanced `train_langsplatv2.py` to save final checkpoints and log paths for better tracking of training progress.
- Various alterations to the training, data generation and evaluation to be more inline with the original implementation results.

These changes improve the usability and functionality of the LangSplatV2 framework for open-vocabulary segmentation tasks.

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
@swahtz swahtz requested a review from Copilot March 4, 2026 06:06
@swahtz swahtz self-assigned this Mar 4, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a LERF-OVS evaluation workflow and updates the LangSplatV2 preprocessing/training pipeline to better match the original LangSplatV2 feature/mask generation and checkpointing conventions (Fixes #44).

Changes:

  • Add LERF-OVS dataset download utilities and a full evaluation script (OpenCLIP relevancy, mIoU + localization).
  • Add SAM1 multi-scale mask generation, shared mask post-processing utilities, and an “import original LangSplatV2 features” transform for A/B comparisons.
  • Improve training/preprocessing ergonomics (top-level final_checkpoint.pt, GPU-based CLIP crop/resize, codebook init from all levels, updated deps/docs).

Reviewed changes

Copilot reviewed 27 out of 27 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
open_vocabulary_segmentation/langsplatv2/scripts/train_langsplatv2.py Saves a top-level final checkpoint for easier evaluation consumption.
open_vocabulary_segmentation/langsplatv2/pyproject.toml Updates Python requirement and adds evaluation/preprocess dependencies.
open_vocabulary_segmentation/langsplatv2/langsplatv2/vq_utils.py Adds helper to load CLIP features from all scales for codebook init.
open_vocabulary_segmentation/langsplatv2/langsplatv2/training/trainer.py Enables codebook initialization from all levels via config flag.
open_vocabulary_segmentation/langsplatv2/langsplatv2/training/langsplatv2_writer.py Adds save_final_checkpoint() writing final_checkpoint.pt at run root.
open_vocabulary_segmentation/langsplatv2/langsplatv2/training/dataset.py Adds cache warmup diagnostics; changes GT feature-map init to zeros.
open_vocabulary_segmentation/langsplatv2/langsplatv2/scene_transforms/multi_scale_sam_masks.py Refactors to shared mask utils, adds diagnostics, updates cache versioning/log suppression.
open_vocabulary_segmentation/langsplatv2/langsplatv2/scene_transforms/multi_scale_sam1_masks.py New SAM1 multi-scale mask transform matching original LangSplatV2 settings.
open_vocabulary_segmentation/langsplatv2/langsplatv2/scene_transforms/mask_utils.py New shared post-processing utilities (cross-crop NMS, mask NMS, small-region cleanup).
open_vocabulary_segmentation/langsplatv2/langsplatv2/scene_transforms/import_original_features.py New transform to import original repo’s _f.npy/_s.npy features into cache.
open_vocabulary_segmentation/langsplatv2/langsplatv2/scene_transforms/clip_feature_encoding.py Moves crop/mask/pad/resize onto GPU to better match original feature extraction.
open_vocabulary_segmentation/langsplatv2/langsplatv2/scene_transforms/init.py Exposes new transforms (SAM1 + original-feature import).
open_vocabulary_segmentation/langsplatv2/langsplatv2/loss.py Updates loss to match original “masked then mean over all pixels” behavior; adds valid-only metric.
open_vocabulary_segmentation/langsplatv2/langsplatv2/evaluation/openclip_relevancy.py Adds OpenCLIP relevancy computation matching original eval logic.
open_vocabulary_segmentation/langsplatv2/langsplatv2/evaluation/datasets/util.py Adds Google Drive download helper for evaluation datasets.
open_vocabulary_segmentation/langsplatv2/langsplatv2/evaluation/datasets/lerf.py Adds LERF-OVS dataset download + path helpers.
open_vocabulary_segmentation/langsplatv2/langsplatv2/evaluation/datasets/init.py Adds dataset-root management for evaluation utilities.
open_vocabulary_segmentation/langsplatv2/langsplatv2/evaluation/init.py Initializes evaluation package.
open_vocabulary_segmentation/langsplatv2/evaluation/lerf_ovs/eval_lerf.py New end-to-end LERF-OVS evaluation script (render, relevancy, mIoU, localization, viz).
open_vocabulary_segmentation/langsplatv2/evaluation/lerf_ovs/download_data.py CLI to download LERF-OVS dataset via tyro.
open_vocabulary_segmentation/langsplatv2/evaluation/lerf_ovs/batch_train_eval_langsplat.sh Batch training script for LERF scenes/levels and checkpoint collection.
open_vocabulary_segmentation/langsplatv2/evaluation/lerf_ovs/batch_reconstruct_eval_scenes.sh Batch reconstruction script for LERF scenes.
open_vocabulary_segmentation/langsplatv2/evaluation/lerf_ovs/README.md Documentation for dataset download, reconstruction, training, and evaluation.
open_vocabulary_segmentation/langsplatv2/environment.yml Adds a conda env capturing dependencies for evaluation/preprocessing.
open_vocabulary_segmentation/langsplatv2/README.md Updates top-level docs for SAM1/SAM2, scripts path, outputs, and references.
open_vocabulary_segmentation/langsplatv2/.gitignore Ignores reconstruction logs and results directories.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread open_vocabulary_segmentation/langsplatv2/langsplatv2/training/dataset.py Outdated
swahtz and others added 6 commits March 4, 2026 22:43
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
…nsforms/mask_utils.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
…nsforms/clip_feature_encoding.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
add a comment for a small logic issue found in a PR review

Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
…dataset.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 29 out of 29 changed files in this pull request and generated 8 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread open_vocabulary_segmentation/langsplatv2/pyproject.toml
Comment thread open_vocabulary_segmentation/langsplatv2/evaluation/lerf_ovs/README.md Outdated
swahtz and others added 4 commits March 5, 2026 12:46
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
…n/openclip_relevancy.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
Signed-off-by: Jonathan Swartz <jonathan@jswartz.info>
@swahtz swahtz merged commit 6713dec into openvdb:main Mar 5, 2026
8 checks passed
@swahtz swahtz deleted the langsplatv2_lerf_eval branch March 5, 2026 00:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

LeRF-OVS

2 participants