Update docs: CLAUDE.md, README, segmentation class analysis

- Create CLAUDE.md with project overview, key decisions, structure
- Update README: add UAV_VisLoc dataset, 16-class palette, scripts
- Extend segmentation_class_analysis.md with UAV_VisLoc section:
  quantitative analysis of 2496 images, 5 new classes with detailed
  justification (bare soil, rooftop, sports field, wetland, embankment),
  threshold rationale, and irreducible background explanation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
pikaliov
2026-04-17 21:27:25 +03:00
parent 5c4a3a1371
commit 27eb315903
3 changed files with 192 additions and 20 deletions

View File

@@ -177,6 +177,102 @@ SegConfig.default_resolution = 1008
| 9 | parking lot | (255, 165, 0) | Orange |
| 10 | sidewalk | (200, 200, 200) | Light gray |
---
## Конфигурация для UAV_VisLoc: 16 классов
UAV_VisLoc_processed — другой датасет (81K images, 11 сцен, DB + drone, 256x256). Анализ сегментации на scene 01 (2496 images) выявил 29% background — значительно больше, чем у World-UAV после настройки.
### Анализ проблемных зон
На 2496 изображениях scene 01 (UAV_VisLoc) были обнаружены 3 систематических паттерна ложного background:
| Паттерн | Примеры | RGB характеристика | Текущее покрытие (11 кл.) |
|---|---|---|---|
| **Распаханные поля** | crop_0_11, crop_0_58, crop_10_49 | Однородная коричнево-серая текстура (R≈140, G≈120, B≈100) | 0% — ни `farmland`, ни `sand/gravel` не срабатывают |
| **Тёмные/текстурированные крыши** | crop_0_97, crop_10_13 | Тёмные поверхности с солнечными панелями, промышленные объекты | ~50% — `building` ловит стены, но не крыши |
| **Спортплощадки, теплицы** | crop_10_5 | Яркие прямоугольные объекты с уникальной текстурой | 0% — нет подходящего класса |
| **Болотистый грунт / дамбы** | crop_0_0, crop_0_1 | Тёмно-зелёно-серый (R≈101, G≈103, B≈97), между водоёмами | 0% — слишком тёмный для `sand/gravel` |
| **Экстремально тёмная вода** | crop_0_4, crop_0_6 | Почти чёрный (R<30, G<30, B<30) | 0% — SegEarth не видит воду при очень низкой яркости |
### Количественный анализ (scene 01, 11 классов → 16 классов)
| Метрика | 11 классов | 16 классов (ожид.) |
|---|---|---|
| background % | 29.0% | ~10-15% |
| Изображений >50% bg | 475 / 2496 (19%) | ~100-150 |
| 100% background | ~50 | ~20-30 (экстремально тёмные) |
### 5 добавленных классов и обоснование
| ID | Промпт | Обоснование | Что покрывает |
|---|---|---|---|
| 11 | `bare soil and plowed field` | **Главная потеря** (~15-20% пикселей bg). `farmland` ловит только зелёные поля с посевами. Распаханная земля (коричневая, без растительности) — отдельный семантический класс. В UAV_VisLoc много сельских сцен с обработанными полями без всходов. | Распаханные поля, голая земля, стройплощадки |
| 12 | `roof and rooftop` | `building` обучен на стены/фасады. Крыши сверху (вид с БПЛА/спутника) — другая текстура: черепица, металл, солнечные панели, плоские бетонные крыши. SegEarth не уверен в `building` для тёмных крыш → background. | Крыши всех типов, солнечные панели на крышах |
| 13 | `sports field and playground` | Спортплощадки имеют уникальную геометрию (прямоугольники, разметка, цветные покрытия), не покрываемую ни одним из базовых классов. Для CVGL — сильный localization landmark. | Теннисные корты, футбольные поля, баскетбольные площадки |
| 14 | `muddy ground and wetland` | Болотистая земля между водоёмами (дамбы, берега, русла). Слишком тёмная для `sand/gravel`, слишком сухая для `water`. Специфична для UAV_VisLoc (прибрежные сцены). | Мокрый грунт, заболоченные участки, дамбы |
| 15 | `embankment and levee` | Насыпные сооружения (дамбы, набережные, обваловки) — линейные структуры из грунта вдоль водоёмов. Геометрически уникальны для matching. | Земляные дамбы, насыпи, обваловки каналов |
### Почему `threshold=0.1` (а не 0.15 как в World-UAV)
UAV_VisLoc содержит больше экстремальных сцен:
- Тёмная вода (почти чёрная) — confidence по `water` = 0.12-0.14
- Мокрый грунт — confidence по `bare soil` = 0.11-0.13
- При threshold=0.15 эти пиксели уходят в background, при 0.1 — корректно классифицируются
### Неустранимый background (~5-10%)
Остаётся background для изображений, где SegEarth-OV3 **физически не может** сегментировать:
- Почти чёрные кадры (ночная вода, тень) — нет визуальной информации
- Однородные текстуры без семантических признаков
- Это нормально — background здесь семантически корректен
### Полная конфигурация UAV_VisLoc (16 классов)
```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
])
```
### Расширенная палитра (16 классов)
| ID | Класс | RGB | Цвет |
|:--:|:---|:---|:---|
| 0 | background | (0, 0, 0) | Black |
| 1 | building | (220, 40, 40) | Red |
| 2 | road | (160, 160, 160) | Gray |
| 3 | vegetation | (30, 180, 30) | Green |
| 4 | water | (30, 120, 220) | Blue |
| 5 | sand and gravel ground | (180, 140, 80) | Tan |
| 6 | rocky terrain | (120, 100, 80) | Brown |
| 7 | farmland | (200, 200, 50) | Yellow |
| 8 | railway | (100, 60, 120) | Purple |
| 9 | parking lot | (255, 165, 0) | Orange |
| 10 | sidewalk | (200, 200, 200) | Light gray |
| 11 | bare soil | (140, 100, 50) | Dark tan |
| 12 | rooftop | (180, 60, 60) | Dark red |
| 13 | sports field | (50, 200, 150) | Teal |
| 14 | muddy/wetland | (80, 100, 70) | Olive |
| 15 | embankment | (170, 130, 100) | Sandy brown |
---
## Оценка влияния на производительность
- Инференс: ~1.82.2x медленнее (11 vs 5 text prompts)