# CLAUDE.md ## Что это за проект Пайплайн автоматической генерации 4 вспомогательных модальностей (depth, edges, segmentation, canopy height) из RGB-изображений аэрофотоснимков. Используется для подготовки обучающих данных для NADEZHDA — системы cross-view geolocalization (БПЛА ↔ спутник). ## Быстрый старт ```bash # World-UAV (973K images, основной датасет) python -m src.main # UAV_VisLoc (81K images) python scripts/run_uav_visloc.py # GTA-UAV-LR (48K images, synthetic GTA V) python scripts/run_gta_uav.py # Тесты (143 шт, без GPU) python -m pytest src/tests/ -v ``` ## Ключевые решения - **Формат выхода:** SafeTensors (zero-copy mmap, ~0.1ms чтение). Не NPY, не PNG, не `.pt`. - **Структура директорий:** модальность = папка (`depth/`, `edge/`, `segm/`, `chm/`, `safetensors/`), не суффикс файла. - **Стадии последовательно** — одна модель в GPU за раз (экономия VRAM). - **Сегментация:** SegEarth-OV3 (SAM 3.1 + open-vocabulary prompts). 11 классов для World-UAV, **17 unified** для UAV_VisLoc + GTA-UAV (единые ID для transfer learning). - **CHMv2 только FP32** — в FP16 NaN. ## Структура кода ``` src/main.py — точка входа, оркестрация стадий src/augmentor/ — inference, I/O, dataset discovery src/conf/ — gin-configurable dataclasses src/nn/ — вендорированные DA3 + SegEarth-OV3 scripts/ — run_uav_visloc.py, migrate_layout.py in/config_files/ — gin-конфиги docs/ — документация ``` ## Конфигурация Все параметры через gin. CLI override: `--gin "PipelineConfig.source = 'db'"`. Для нового датасета — создать скрипт в `scripts/` (пример: `run_uav_visloc.py`), не новый gin-файл. ## Что НЕ делать - Не добавлять классы сегментации в `segmentation.gin` для конкретного датасета — использовать `scripts/seg_classes.py` (единый набор 17 классов для transfer learning). - Не использовать `.pt` (torch.save) для хранения тензоров — pickle, медленно. - Не рендерить depth/seg в RGB colormap для обучения — OOD для DINOv3, потеря информации.