Skip to content

v0.3.0

Choose a tag to compare

@rsasaki0109 rsasaki0109 released this 23 May 22:28
· 36 commits to main since this release
54ec168

Fast follow-on to v0.2.0 focused on performance hardening, a new 3DGS evaluation feature, and an architecture cleanup.

Highlights

  • ca geometry-evaluate --splat-method ellipsoid — opt-in splat-aware ellipsoid surface sampling for 3DGS PLY exports. Reads scale_0..2 (log-σ) and rot_0..3 (wxyz quaternion) and surface-samples each splat. Default remains --splat-method centers; --splat-samples K (default 8) sets points per splat. Vectorized via np.einsum.
  • benchmarks/3dgs/synthetic-room/ now ships the full 3DGS PLY schema so the new sampler can be exercised against the bundled fixture without external data.
  • map_evaluate graduates to ca.core — adopted NNThresholdMapEvaluateStrategy and its contract now live in ca/core/map_evaluate.py. CLI no longer reaches into experiments. The reference-free voxel_entropy lane stays under ca/experiments until a single GT-free metric is settled.

Performance

  • Vectorize PLY vertex parsing + ca split tile bucketing. ASCII PLY uses one np.loadtxt; binary little-endian PLY uses np.frombuffer with a structured dtype. Tile bucketing runs np.unique(axis=0) + np.argsort. Real 3DGS (1M+ splats) and city-scale ca split runs drop from ~1 minute to well under a second.
  • Vectorize voxel-based ca ground-evaluate. The four set-of-tuples comprehensions per evaluation are replaced by np.unique(axis=0) + np.intersect1d on a void view of each row.

See CHANGELOG.md for the full list of merges. PyPI install:

pip install --upgrade cloudanalyzer==0.3.0