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>
This commit is contained in:
39
CLAUDE.md
39
CLAUDE.md
@@ -16,38 +16,55 @@ python scripts/run_uav_visloc.py
|
||||
# GTA-UAV-LR (48K images, synthetic GTA V)
|
||||
python scripts/run_gta_uav.py
|
||||
|
||||
# Тесты (143 шт, без GPU)
|
||||
# Тесты (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). 11 классов для World-UAV, **17 unified** для UAV_VisLoc + GTA-UAV (единые ID для transfer learning).
|
||||
- **Сегментация:** 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, 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/ — документация
|
||||
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_uav_visloc.py`), не новый gin-файл.
|
||||
Для нового датасета — создать скрипт в `scripts/` (пример: `run_gta_uav.py`).
|
||||
|
||||
Ключевые флаги pipeline:
|
||||
- `seg_fix_dark_water=True` — автоматически исправлять тёмную воду (по умолчанию вкл.)
|
||||
- `seg_reclassify_wetland=False` — переклассификация wetland в vegetation/bare soil (вкл. для GTA-UAV)
|
||||
|
||||
## Что НЕ делать
|
||||
|
||||
- Не добавлять классы сегментации в `segmentation.gin` для конкретного датасета — использовать `scripts/seg_classes.py` (единый набор 17 классов для transfer learning).
|
||||
- Не менять порядок/ID классов в `scripts/seg_classes.py` — все датасеты зависят от фиксированных ID.
|
||||
- Не использовать `.pt` (torch.save) для хранения тензоров — pickle, медленно.
|
||||
- Не рендерить depth/seg в RGB colormap для обучения — OOD для DINOv3, потеря информации.
|
||||
- Не снижать threshold ниже 0.1 — увеличивает false positives без значимого улучшения recall.
|
||||
|
||||
Reference in New Issue
Block a user