Unify segmentation classes (17) across GTA-UAV and UAV_VisLoc

Extract shared UNIFIED_PROMPTS (17 classes, ID 0-16) into
scripts/seg_classes.py for transfer learning compatibility.
Both run_gta_uav.py and run_uav_visloc.py now import from it.

Key change: swimming pool moved from ID 13 → ID 16, so sports field
(ID 13), muddy ground (14), embankment (15) have stable IDs across
both datasets. Missing classes in a dataset = 0 pixels = 0 loss.

Updated: README, CLAUDE.md, segmentation_class_analysis.md, palette.
Deleted old UAV_VisLoc segmentations (need regeneration with 17 classes).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
pikaliov
2026-04-17 22:06:10 +03:00
parent 143a837c03
commit 3b5778e303
7 changed files with 88 additions and 107 deletions

View File

@@ -179,7 +179,15 @@ SegConfig.default_resolution = 1008
---
## Конфигурация для UAV_VisLoc: 16 классов
## Unified 17 классов для transfer learning
UAV_VisLoc и GTA-UAV используют **единый набор 17 классов** (`scripts/seg_classes.py`). Это обеспечивает совместимость class IDs при transfer learning (pretrain GTA-UAV → fine-tune UAV_VisLoc). Не каждый датасет содержит пиксели каждого класса — класс с 0 пикселей просто не даёт вклад в loss.
Источник единой конфигурации: `scripts/seg_classes.py:UNIFIED_PROMPTS`.
---
## Конфигурация для UAV_VisLoc: 17 классов (unified)
UAV_VisLoc_processed — другой датасет (81K images, 11 сцен, DB + drone, 256x256). Анализ сегментации на scene 01 (2496 images) выявил 29% background — значительно больше, чем у World-UAV после настройки.
@@ -227,27 +235,13 @@ UAV_VisLoc содержит больше экстремальных сцен:
- Однородные текстуры без семантических признаков
- Это нормально — background здесь семантически корректен
### Полная конфигурация UAV_VisLoc (16 классов)
### Конфигурация (unified 17 классов)
```python
SegConfig(threshold=0.1, prompts=[
"background", # 0
"building", # 1
"road", # 2
"vegetation", # 3
"water", # 4
"sand and gravel ground", # 5
"rocky terrain", # 6
"farmland", # 7
"railway", # 8
"parking lot", # 9
"sidewalk", # 10
"bare soil and plowed field", # 11
"roof and rooftop", # 12
"sports field and playground", # 13
"muddy ground and wetland", # 14
"embankment and levee", # 15
])
from scripts.seg_classes import UNIFIED_PROMPTS
SegConfig(threshold=0.1, prompts=UNIFIED_PROMPTS)
# UNIFIED_PROMPTS содержит 17 классов (ID 0-16)
# UAV_VisLoc: активны все кроме 16 (swimming pool — редко)
```
### Расширенная палитра (16 классов)
@@ -315,25 +309,13 @@ GTA-UAV-LR — синтетический датасет, сгенерирова
| `sports field` | Есть в GTA V, но редко виден сверху (стадионы закрыты) |
| `muddy ground` | Не актуален для GTA V (нет болот в Лос-Сантосе) |
### Конфигурация
### Конфигурация (unified 17 классов)
```python
SegConfig(threshold=0.15, prompts=[
"background", # 0
"building", # 1
"road", # 2
"vegetation", # 3
"water", # 4
"sand and gravel ground", # 5
"rocky terrain", # 6
"farmland", # 7
"railway", # 8
"parking lot", # 9
"sidewalk", # 10
"bare soil and plowed field", # 11
"roof and rooftop", # 12
"swimming pool", # 13
])
from scripts.seg_classes import UNIFIED_PROMPTS
SegConfig(threshold=0.15, prompts=UNIFIED_PROMPTS)
# UNIFIED_PROMPTS содержит 17 классов (ID 0-16)
# GTA-UAV: активны все кроме 14, 15 (muddy/embankment — нет в GTA V)
```
---