feat(gpr): explicitly mark GlobalPlaceRecognition as AnyLoc-VLAD-DINOv2 baseline

GlobalPlaceRecognition already implements AnyLoc-VLAD-DINOv2 (existing code).
This change makes the sprint 1 GPR technology selection explicit:

- Expand class docstring with selection rationale vs NetVLAD / SP+LG
- Document INT8 quantization as known-broken for ViT on Jetson
- Reference design doc §2.3 and stage2 backlog
- Add two marker tests asserting 4096-d descriptor + DINOv2 engine name

No behavioral change — existing Mock/TRT path unchanged.
Ref: docs/superpowers/specs/2026-04-18-oss-stack-tech-audit-design.md §2.3

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Yuzviak
2026-04-18 16:22:55 +03:00
parent b62bd48b00
commit e4ba7bced3
2 changed files with 44 additions and 2 deletions
+11 -2
View File
@@ -62,12 +62,21 @@ class IGlobalPlaceRecognition(ABC):
class GlobalPlaceRecognition(IGlobalPlaceRecognition):
"""AnyLoc (DINOv2) coarse localisation component.
"""AnyLoc-VLAD-DINOv2 coarse localisation component — sprint 1 GPR baseline.
GPR-01: load_index() tries to open a real Faiss .index file; falls back to
a NumPy L2 mock when the file is missing or Faiss is not installed.
GPR-02: Descriptor computed via DINOv2 engine (TRT on Jetson, Mock on dev/CI).
GPR-02: Descriptor computed via DINOv2 engine (TRT FP16 on Jetson, Mock on
dev/CI). INT8 quantization is disabled — broken for ViT on Jetson
(NVIDIA/TRT#4348, facebookresearch/dinov2#489).
GPR-03: Candidates ranked by descriptor similarity (L2 → converted to [0,1]).
Selected over NetVLAD (deprecated, 2.4% R@1 on MSLS 2024) and SuperPoint+
LightGlue (unvalidated for cross-view UAV↔satellite gap at sprint 1).
Stage 2 evaluation: SP+LG+FAISS per _docs/03_backlog/stage2_ideas/.
Long-term target: EigenPlaces (ICCV 2023) — cleaner ONNX export.
Ref: docs/superpowers/specs/2026-04-18-oss-stack-tech-audit-design.md §2.3
"""
_DIM = 4096 # DINOv2 VLAD descriptor dimension