Files
depth_edges_annotate_worlduav/docs/segmentation_class_analysis.md
pikaliov 27eb315903 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>
2026-04-17 21:27:25 +03:00

20 KiB
Raw Blame History

Анализ классов сегментации для UAV-GeoLoc

Обзор датасета

  • 392 локации, 76 кадров каждая (height100_rot90) = ~29 800 изображений
  • 11 стран (Country/): Australia, Brazil, English, French, German, Italy, Japan, Korea, Poland, Spain, USA
  • 27 типов terrain (Terrain/): Basin, Calcification, Danxia, Delta, Desert, Fall, Farm, Finca, Flowers, Glacier, Gorge, Hill, Hylare, Island, Karst, Lakes-ignore, Mountain, Oasis, Pasture, Plain, Plateau, Prairie, Snow, StoneForest, Terrace, Volcano, Wetland

Проблема с исходной конфигурацией (5 классов)

Исходные промпты:

SegConfig.prompts = ['background', 'building', 'road', 'vegetation', 'water']
SegConfig.threshold = 0.3

При 5 классах 60-90% площади terrain-кадров и 30-50% городских кадров уходит в background, теряя информативные объекты (ж/д пути, грунт, скалы и т.д.).


Инвентаризация объектов

URBAN (Country/) — 11 стран, ~300 локаций

Объект Где встречается Частота
Здания (крыши: черепица, плоские, металл, стекло) Все города Доминирует
Дорога / асфальт Все города Очень высокая
Растительность (деревья, кустарники) Все города Высокая
Тротуар / пешеходная зона / набережная Все города, особенно Европа Высокая
Парковка Мюнхен, SF, Варшава, Аделаида Средняя
Железная дорога (рельсы, балласт, стрелки) Мюнхен, Сидней, Варшава Средняя
Вода (река, канал, море) Париж/Сена, Венеция, Киото, Бусан, Копакабана Средняя
Мост / эстакада Сидней, Париж Низкая-средняя
Внутренний двор Все европейские города Средняя
Открытый грунт / гравий Мюнхен, Варшава Средняя
Газон / парк Лондон/Westminster, Rio Средняя
Спортивная площадка Мюнхен Низкая
Пляж / песок Копакабана, Бусан/Gwangalli Низкая
Дорожная разметка (зебры, полосы) Все города Высокая, но мелкая
Солнечные панели SF, Мюнхен Низкая

TERRAIN — 27 типов

Terrain Что на кадрах Ключевые поверхности
Desert (Gobi) Песок, эрозионные борозды, скалы bare ground, sand, rock
Farm (Bohemian) Густой лес, кроны деревьев vegetation
Glacier (Athabasca) Лёд, снег, трещины snow, ice, water
Island (Aldabra) Бирюзовая вода, мелководье water
Wetland (Danube) Болотистая почва, кустарник vegetation, bare ground, water
Mountain (Andes) Песок/пыль, следы троп bare ground, rock
Delta (Congo) Лавовые/скальные поверхности rock, bare ground
Volcano (Kilauea) Тёмная лава, скальные породы rock, bare ground
Snow (Aconcagua) Белый снег, точки камней snow
Danxia (GrandCanyon) Красная порода + растительность rock, vegetation
Oasis Саванна, кустарники на песке bare ground, vegetation
Finca (Althorp) Хвойный лес, плантации vegetation
Terrace (Banaway) Сельхоз террасы, тропы farmland, bare ground
Plain (Alberta) Луг, речная пойма, грунтовая дорога grassland, bare ground, road
Plateau Кустарник на каменистой почве vegetation, rock
Prairie (Etosha) Саванна, точки кустов на песке bare ground, vegetation
Gorge (Antelope) Каньон, красные скалы rock, bare ground
Karst (Mammoth) Скальные плиты, трещины rock
Calcification (ElTatio) Гейзерные поля, песчаная порода bare ground, rock
Flowers (BlueHotSpring) Горячие источники, минеральные отложения rock, water
Hylare (Amazon) Густой тропический лес vegetation
StoneForest (GrandCanyon) Каньонные скалы + кустарник rock, vegetation
Hill (Sedona) Красные скалы + кустарник rock, vegetation
Basin
Fall
Pasture
Lakes-ignore

Финальная конфигурация: 11 классов

SegConfig.prompts = [
    'background',              # 0  — unclassified
    'building',                # 1  — buildings, rooftops
    'road',                    # 2  — roads, asphalt
    'vegetation',              # 3  — trees, bushes, forest canopy
    'water',                   # 4  — rivers, canals, sea, lakes
    'sand and gravel ground',  # 5  — soil, gravel, sand, dust, bare earth
    'rocky terrain',           # 6  — rock, stone, lava, canyon walls
    'farmland',                # 7  — agricultural terraces, fields
    'railway',                 # 8  — railway tracks, rails
    'parking lot',             # 9  — parking areas
    'sidewalk',                # 10 — sidewalks, pedestrian zones, embankments
]
SegConfig.threshold = 0.15
SegConfig.default_resolution = 1008

Эволюция конфигурации

  1. v1 (исходная): 5 классов, threshold=0.3 — слишком много background
  2. v2 (первая итерация): 12 классов (bare ground, rock, snow, farmland, railway, parking lot, sidewalk), threshold=0.3 — terrain по-прежнему плохо
  3. v3 (вторая итерация): 12 классов с переименованными промптами (sand and gravel ground, rocky terrain, snow and ice), threshold=0.15 — значительное улучшение terrain
  4. v4 (финальная): 11 классов — убран snow and ice (SegEarth-OV3 не различает снег/лёд от воды при виде сверху), threshold=0.15

Обоснование каждого нового класса

Класс Промпт Обоснование Покрытие
bare ground sand and gravel ground Без него пустыня, гейзеры, плато, прерия, пляж уходят в background Критичен для terrain
rock rocky terrain Вулканы, каньоны, карст — уникальная текстура Критичен для terrain
farmland farmland Террасы, поля — геометрически уникальны для matching Важен для Terrace/Plain/Farm
railway railway Ж/д пути — линейный ориентир с уникальной топологией Важен для городов
parking lot parking lot Чёткая прямоугольная геометрия, видна и с дрона и со спутника Средний для городов
sidewalk sidewalk Структурные границы в городах, набережные Средний для городов

Отброшенные классы и причины

Класс Причина отказа
snow and ice SegEarth-OV3 классифицирует лёд/снег как water при виде сверху — промпт не работает. Проверено на Glacier (Athabasca)
beach / sand Покрыт sand and gravel ground
bridge Слишком редко, перекрывается с road
grassland / lawn Перекрывается с vegetation
river / sea / lake Всё покрыто единым water
sports field Слишком редко на полном датасете
courtyard Семантически = bare ground + building
fence Слишком тонкий объект для SegEarth на 1008px
road marking Слишком мелкий, лучше оставить как часть road
solar panel Редко, мелко, часть крыши

Результаты тестирования на 10 изображениях

Тестовые изображения: 6 городских (Munich, Paris, Venice, New York, Sydney, Busan) + 4 terrain (Desert, Glacier, Volcano, Danxia).

Городские сцены

Локация Обнаруженные классы Качество
Munich (ж/д пути) railway, sand/gravel, vegetation, road, water Отлично — ж/д = фиолетовый, балласт = бежевый
Paris (набережная Сены) road, vegetation, water, sidewalk, parking lot Отлично — река, тротуар, дорога разделены
Venice (старый город) building, road, water, parking lot Хорошо — каналы появились как water
New York (Manhattan) building, road, vegetation, parking lot, sidewalk Отлично — все городские классы
Sydney (эстакада) road, building, vegetation, parking lot, sidewalk Хорошо
Busan (пляж) water, sand and gravel ground Отлично — пляж = бежевый, море = синий

Terrain

Локация Обнаруженные классы Качество
Desert (Gobi) road, rocky terrain Приемлемо — пустыня = road (серый близок к песку)
Glacier (Athabasca) water Ограничение модели — лёд = water
Volcano (Kilauea) rocky terrain Отлично — было 100% background, стало 100% rocky terrain
Danxia (GrandCanyon) vegetation Частично — кусты определены, скалы в background

Известные ограничения SegEarth-OV3

  • Ледники/снег классифицируются как water — визуально неразличимы сверху для модели
  • Красные скалы (Danxia) плохо определяются как rocky terrain
  • Пустынный грунт может путаться с road

Палитра цветов

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

Конфигурация для 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 классов)

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)
  • На 973K изображений: дополнительные ~812 часов на RTX 4090
  • Background на terrain: сокращение с 6090% до ~1020%
  • Background на urban: сокращение с 3050% до ~515%

Методология анализа

Просмотрено ~50 кадров с равномерной выборкой:

  • По 13 кадра из каждой страны (разные города/районы)
  • По 1 кадру из каждого типа terrain (первая доступная локация)
  • Кадры выбирались из середины траектории (frame 30) для репрезентативности
  • Дополнительно просмотрены кадры из начала/конца траектории для Мюнхена (полный обзор 76 кадров)
  • Тестирование проведено в 3 итерации с подбором формулировок промптов и порога confidence