Adaptive Environment Graph Hierarchies via Dynamic Anchor Selection
Master's Thesis Project
Denis Fatykhoph • Skoltech
Advisor: Prof. Gonzalo Ferrer
AEGIS addresses the fundamental limitation of current hierarchical scene graph methods: their reliance on fixed, environment-specific schemas (e.g., floor→room→object). We propose a framework for dynamic anchor object identification that enables adaptive hierarchical knowledge graph construction across heterogeneous environments.
- Dynamic Anchor Selection: Three comparative strategies (VLM-based, frequency-based, visual clustering) for identifying organizational anchor objects
- Adaptive Hierarchies: Data-driven spatial organization that adapts to environment characteristics rather than imposing fixed schemas
- Cross-Domain Generalization: Framework operates across indoor and outdoor environments without manual reconfiguration
- RGB-Only Processing: Sufficient scene understanding using vision-language models and RGB observations
Our pipeline integrates VL-KnG baseline for knowledge graph construction with visual feature extraction (SAM + RADIO-2 + Florence-2) to identify anchor objects and assemble adaptive hierarchies.
- VLM-Based Selection: Leverages vision-language models to reason about organizational importance through natural language prompts
- Frequency-Based Selection: Statistical analysis treating persistent objects as stable organizational anchors
- Visual Feature Clustering: Identifies anchors through unsupervised clustering in learned embedding space (RADIO)
Once anchors are identified, we construct a three-level hierarchical knowledge graph:
- Level 1: Anchor nodes representing primary organizational structure
- Level 2: Associated objects with strong spatial/semantic relationships to anchors
- Level 3: Atomic objects instantiated when fine-grained detail is required
We evaluate on two complementary datasets:
- SCAND: 8.7 hours, 138 trajectories of socially compliant navigation across indoor/outdoor environments
- EgoWalk: First-person city-walking videos with diverse outdoor navigation scenarios
Downstream task evaluation on:
- HM-EQA/Explore-EQA: 500 questions across 267 HM3D scenes for Embodied Question Answering
- Task-driven object navigation: Cross-environment navigation efficiency
H1. Adaptive Hierarchy Superiority: Dynamic anchor-based construction outperforms fixed schemas on downstream tasks
H2. Cross-Domain Generalization: Consistent performance across indoor and outdoor environments
H3. RGB Sufficiency: RGB + VLMs provide sufficient information for effective scene graphs, reducing hardware requirements
# Clone repository
git clone https://github.com/your-username/AEGIS.git
cd AEGIS
# Create conda environment
uv venv --python 3.12 --prompt vizEnc
source .venv/bin/activate
uv sync
git clone git@github.com:facebookresearch/segment-anything.git
git clone git@github.com:RayFronts/RayFronts.git
# Install VL-KnG baseline
git clone https://github.com/VL-KnG/VL-KnG.git
cd VL-KnG && uv pip install -e .from pathlib import Path
from PIL import Image
import numpy as np
# === 1. Initialize Models ===
from segmentation.sam import init_sam
from encoders.naradio import load_naradio_encoder
from encoders.florence import load_florence_model
project_dir = Path.cwd()
device = "cuda"
# SAM for segmentation
mask_generator = init_sam(project_dir, version='sam1', device=device)
# RADIO for visual embeddings
visual_encoder = load_naradio_encoder(project_dir, device=device)
# Florence-2 for object descriptions
florence_model, florence_processor = load_florence_model(device=device)
# === 2. Process Frames with vizEnc ===
from vizenc_utils.anchors import create_anchor_db, update_anchors
from vizenc_utils.matching import optimal_match_objects
from processing import process_masks_with_features, filter_masks
anchor_db = create_anchor_db()
frames = sorted(Path("data/your_scene/frames").glob("*.png"))
for frame_idx, frame_path in enumerate(frames):
image = Image.open(frame_path).convert("RGB")
masks = mask_generator.generate(np.array(image))
masks = process_masks_with_features(image, masks, config, models)
masks = filter_masks(masks, image.size, filter_config)
update_anchors(anchor_db, frame_idx, masks, ...)
# === 3. Run vl-kgp for Semantic Graph ===
from vl_kgp.core.efficient_chunk_object_detection import EfficientChunkObjectDetector
detector = EfficientChunkObjectDetector(api_provider, chunk_size=8)
vlkgp_result = detector.detect_chunk(frame_paths)
# Returns: objects with descriptions + spatial_relationships
# === 4. Combine: Match Anchors with vl-kgp Objects ===
from vizenc_utils.matching import iou_match_objects
from vizenc_utils.bbox_utils import compute_iou
# Match by IoU + category similarity per frame
unified_objects = combine_results(anchor_db, vlkgp_result, config={
'iou_weight': 0.6,
'category_weight': 0.4,
'score_threshold': 0.3
})
# Result: unified objects with both visual embeddings AND text descriptionsSee src/combination.ipynb for the complete pipeline.
AEGIS/
├── src/
│ ├── encoders/ # Visual encoders (DINOv2, RADIO, Florence-2)
│ ├── segmentation/ # SAM integration
│ ├── vizenc_utils/ # Anchor tracking, matching, visualization
│ │ ├── anchors.py # Anchor database management
│ │ ├── matching.py # IoU & embedding matching algorithms
│ │ ├── bbox_utils.py # Bounding box utilities
│ │ └── visualization.py # Mask & anchor visualization
│ ├── processing.py # Feature extraction pipeline
│ ├── combination.ipynb # Full vizEnc + vl-kgp pipeline
│ └── output/ # Exported unified chunks
├── vl-kgp/ # VL-KnG baseline (submodule)
├── segment-anything/ # SAM (submodule)
├── RayFronts/ # RADIO encoder (submodule)
├── data/ # Input frames and datasets
└── configs/ # Configuration files
- Visual features contribute 7-15% of anchor objects, complementing VLM-based identification (63-85%)
- Stable anchor tracking across significant viewpoint changes in outdoor environments
- Multi-modal integration captures organizational structures missed by language-only approaches
Comprehensive evaluation results coming soon.
@mastersthesis{fatykhoph2025AEGIS,
title={Adaptive Environment Graph Hierarchies via Dynamic Anchor Selection},
author={Fatykhoph, Denis},
year={2025},
school={Skolkovo Institute of Science and Technology},
advisor={Ferrer, Gonzalo}
}- HOV-SG: Hierarchical Open-Vocabulary 3D Scene Graphs
- ConceptGraphs: Open-vocabulary 3D scene graphs
- VL-KnG: Visual Scene Understanding for Navigation Goal Identification
This work is part of the "Semantic-integrated Segmentation and LiDAR Point Clouds for Traversability-Aware Graph Exploration" project at Skoltech's Center for Computational and Data-Intensive Science and Engineering (CDISE).
This project is licensed under the MIT License - see the LICENSE file for details.
Denis Fatykhoph - denis.fatykhoph@skoltech.ru

