Files
depth_edges_annotate_worlduav/CLAUDE.md
pikaliov ff002ce142 Update README and CLAUDE.md: unified 17 classes, post-processing, 3 datasets
- All datasets now use unified 17 classes (not 11/14/16 separately)
- Document seg post-processing (dark water fix, wetland reclassify)
- Update test count (149), time estimates (17 prompts), palette
- Add seg_classes.py to project structure
- Fix outdated references throughout

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 02:46:59 +03:00

71 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
# Тесты (149 шт, без GPU)
python -m pytest src/tests/ -v
```
## Поддерживаемые датасеты
| Датасет | Изображения | Тип | Скрипт |
|---|---|---|---|
| World-UAV | 973K | Реальные аэрофото, 27 terrain, 11 стран | `python -m src.main` |
| UAV_VisLoc | 81K | Реальные, 11 сцен, DB + drone | `python scripts/run_uav_visloc.py` |
| GTA-UAV-LR | 48K | Синтетика GTA V, 6 высот полёта | `python scripts/run_gta_uav.py` |
## Ключевые решения
- **Формат выхода:** SafeTensors (zero-copy mmap, ~0.1ms чтение). Не NPY, не PNG, не `.pt`.
- **Структура директорий:** модальность = папка (`depth/`, `edge/`, `segm/`, `chm/`, `safetensors/`), не суффикс файла.
- **Стадии последовательно** — одна модель в GPU за раз (экономия VRAM).
- **Сегментация:** SegEarth-OV3 (SAM 3.1 + open-vocabulary prompts). **17 unified классов** для всех датасетов (единые ID для transfer learning).
- **Post-processing:** два правила после SegEarth — dark water fix (background → water для тёмных изображений) и wetland reclassify (для GTA-UAV).
- **CHMv2 только FP32** — в FP16 NaN.
## Структура кода
```
src/main.py — точка входа, оркестрация стадий
src/augmentor/inference.py — инференс + postprocess_segmentation()
src/augmentor/io_utils.py — I/O, SafeTensors, палитра 17 классов
src/augmentor/dataset.py — discovery, filtering (DB/query/drone/satellite)
src/conf/ — gin-configurable dataclasses
src/nn/ — вендорированные DA3 + SegEarth-OV3
scripts/seg_classes.py — UNIFIED_PROMPTS (17 классов, единый источник)
scripts/run_*.py — скрипты запуска для каждого датасета
in/config_files/ — gin-конфиги
docs/ — документация
```
## Конфигурация
Все параметры через gin. CLI override: `--gin "PipelineConfig.source = 'db'"`.
Для нового датасета — создать скрипт в `scripts/` (пример: `run_gta_uav.py`).
Ключевые флаги pipeline:
- `seg_fix_dark_water=True` — автоматически исправлять тёмную воду (по умолчанию вкл.)
- `seg_reclassify_wetland=False` — переклассификация wetland в vegetation/bare soil (вкл. для GTA-UAV)
## Что НЕ делать
- Не менять порядок/ID классов в `scripts/seg_classes.py` — все датасеты зависят от фиксированных ID.
- Не использовать `.pt` (torch.save) для хранения тензоров — pickle, медленно.
- Не рендерить depth/seg в RGB colormap для обучения — OOD для DINOv3, потеря информации.
- Не снижать threshold ниже 0.1 — увеличивает false positives без значимого улучшения recall.