Files
fuze_task/reports/1.1 Подготовительный этап (Конспект).md

20 KiB
Raw Blame History

tags
tags
task
CVGL
ЛИСАД/ВЛМ

Base-Terms, ЭТАПЫ, 01_required, Основной пакет, 02_fusion_core_общий, 02_fusion_core_персональный,

Изучение постановки и контекста проекта:

  • README.md;
  • docs/00_project/06_MERIDIAN_CONTEXT.md (включая §5 — требование корректного поведения при отсутствии модальности);
  • docs/01_tasks/00_MASTER_ASSIGNMENT.md;
  • 01_INPUT_OUTPUT_CONTRACT.md;
  • 02_TEAM_WORKFLOW.md;
  • 03_EXPERIMENT_PROTOCOL_GTA_UAV.md

MERIDIAN CONTEXT

1. MERIDIAN — асимметричная TeacherStudent система

MERIDIAN — асимметричная TeacherStudent система кросс-видовой геолокализации БПЛА (UAV ↔ satellite) с привилегированными модальностями (LUPI/KD) и лёгким edge-инференсом.

Цель: сравнение методов объединения и выбор по обозначенным критериям

2. Teacher

Имеет 8 входных потоков.

# Поток View Источник Природа сигнала
1 RGB satellite sat датасет основной визуальный якорь
2 Text caption satellite sat VLM (Qwen3-VL) глобальная семантика сцены
3 CHM satellite sat CHMv2 высота растительности/структура
4 Segmentation satellite sat SegFormer, 17 классов land-cover semantics
5 RGB UAV uav датасет основной визуальный якорь
6 Text caption UAV uav VLM (Qwen3-VL) глобальная семантика сцены
7 Relative depth UAV uav Depth Anything геометрия/структура сцены
8 Segmentation UAV uav SegFormer, 17 классов spatial semantics

3. Цель

Прямой перебор fusion-архитектур на полном Teacher (DINOv3-L, ~300M+ params) слишком дорог: один полный прогон занимает часы и съедает всю VRAM. Поэтому архитектурный поиск выполняется на быстром прокси:

Прокси сохраняет главное: frozen visual anchor + лёгкие обучаемые модули, те же модальности, тот же retrieval-протокол. Вывод «какой класс fusion-операторов выигрывает и за счёт чего» переносится; конкретные гиперпараметры — нет, и это нормально.

4. Назначение результата

  1. Победившее семейство (primary) + fallback фиксируются в decision record.
  2. Primary-механизм переносится на Teacher DINOv3 (адаптация: CNN stage maps → ViT token maps) и входит в спецификацию fusion MERIDIAN.
  3. Fused-эмбеддинг Teacher становится KD-таргетом для RGB-only Student.
  4. Ваши diagnostics (вклад модальностей, gate statistics) станут инструментами анализа Teacher.

5. Устойчивость к modality-dropout

В production Teacher модальности могут отсутствовать или быть деградированными (нет caption у ~55% satellite tiles уже сейчас; depth/CHM могут быть зашумлены). Кроме того, на следующем этапе MERIDIAN планируется обучение с modality dropout (стохастическое отключение модальностей) — ==оно НЕ входит в ваше задание==, но накладывает требование на архитектуру:

Класс Поведение при отсутствии модальности Вердикт
Cross-attention над пулом модальных токенов softmax перенормируется на оставшиеся токены безопасен by construction
FiLM / gating с zero-init (identity-at-init) выпавшая модальность даёт identity безопасен при корректной init
Gated additive residual residual = 0 → чистый RGB-путь безопасен при корректной init
Чисто multiplicative gating (выход = RGB × f(aux)) near-zero aux уничтожает RGB-сигнал опасен, требует additive-ветки
Differential conditioning (f(Xi  Xj)) теряет смысл при отсутствии одного из Xi опасен
SSM/Mamba cross-state fusion состояние дестабилизируется research-arm, не primary
==Практическое следствие для всех трёх треков: тест «отключи модальность через validity mask и проверь, что descriptor конечен и близок к RGB-only» входит в обязательные unit-тесты, а поведение при missing modality — в decision table финального сравнения.==

6. В проекте отсутствует

  • Никакого modality dropout в training loop (это следующий этап MERIDIAN, отдельная задача).
  • Никакой дистилляции в Student (KD-мост строится после выбора fusion).
  • Никакой замены StripNet или обучения собственных моделей depth/seg/CHM/captions.
  • Никакого использования GPS, координат, имён локаций и paired-view признаков.

MASTER ASSIGMENT

1. Исполнители

Сотрудник Архитектурный трек Общая ответственность
Павленко Богдан Викторович Condition-Aware RGB-Anchored Fusion общий fusion API и architecture consistency
Близно Максим Витальевич Token/Bottleneck Full-Modal Aggregation benchmark, metrics, run registry и статистика
Мороз Егор Сергеевич Role-Aware Hierarchical Fusion dataset contract, preprocessing и quality validation

2. Что требуется решить

Нужно разработать алгоритм объединения модальностей для cross-view geo-localization. Для каждой view-ветки доступен свой набор:

  • img
  • text
  • geom
  • segm

Один shared StripNet-small кодирует RGB.

2.1. Зачем это нужно

Для архитектурного отбора fusion-механизма для Teacher системы MERIDIAN на быстром прокси (StripNet + GTA-UAV вместо DINOv3 + production-данных).
Отсюда два следствия:

  1. Нас интересует класс механизма и причина его успеха, а не выжатые гиперпараметрами проценты.
  2. Вторичный критерий отбора — корректное поведение при отсутствии модальности (validity mask = 0): выход конечен, RGB-путь не искажён

2.2. Заметки о данных

Факт Значение Следствие
Satellite RGB 14,640 PNG 256×256, RGBA alpha-канал проверить и отбросить осознанно
UAV RGB 33,763 PNG 512×384, высоты 100600 м resize к 256×256 фиксируется единообразно
Captions UAV 33,411 из 33,763 (~99%) почти полное покрытие
Captions satellite 6,546 из 14,640 (~44.7%) text_valid mask обязателен; пустой caption ≠ нулевой текст
Auxiliary maps 48,403 изображений: segm/depth/edge/chm (+SafeTensors) edges в primary input не входят
Segmentation 17 unified classes канон классов — vendor_reference/depth_edges_annotate_worlduav/scripts/seg_classes.py
Seg-filter 37,498 из 48,403 прошли фильтр (≥90% background+water исключены) фильтр применяется одинаково ко всем вариантам
Расположение данных Linux-сервер: /home/servml/Документы/datasets/GTA-UAV-LR{,-captions,-aug}/ фактические пути фиксируются в gin и ENVIRONMENT_AUDIT

3. Входные и выходные данные

#IO CONTRACT

3.1. Satellite branch

RGB satellite       [B, 3, 256, 256]
Caption satellite   list[str] / tokenized text
CHM                  [B, 1, 256, 256]
Segmentation         [B, 1, 256, 256] IDs или [B, 17, 256, 256]
Validity masks       geometry + segmentation

3.2. Satellite branch

RGB UAV              [B, 3, 256, 256]
Caption UAV          list[str] / tokenized text
Relative depth       [B, 1, 256, 256]
Segmentation         [B, 1, 256, 256] IDs или [B, 17, 256, 256]
Validity masks       geometry + segmentation

3.3. Выходные данные

descriptor            [B, 1024], L2 normalized
rgb_descriptor        [B, 1024]
modality_contributions
diagnostics

Далее вычисляется similarity matrix UAV-to-satellite. Fusion-модуль не получает features противоположной view.

4. Цель экспериментов

Проверить, может ли full-modal representation улучшить cross-area retrieval относительно StripNet RGB-only и какой класс fusion делает это наиболее надёжно.

Primary metric: cross-area UAV-to-satellite R@1. Secondary:

  • R@5, R@10, MRR, AP;
  • satellite-to-UAV retrieval;
  • mean и std по seed 42/123/456;
  • peak VRAM, latency, trainable params;
  • вклад text, segmentation и geometry;
  • отсутствие modality collapse.

5. Архитектурный кандидат

RGB остаётся anchor. Auxiliary encoders строят residual corrections, а controller определяет их вклад в зависимости от content и качества входов.

IO CONTRACT

Одна обучающая запись содержит UAV-снимок запрос (query) и один положительный satellite кандидат (1 к 1). На eval может быть 1 к * (несколько допустимых sat matches)

1. Sat view

Поле Форма Dtype Нормализация Назначение
rgb [B, 3, 256, 256] float32 ImageNet mean/std вход StripNet
text list[str] или tokens string/int согласно text encoder описание сцены без location leakage
geometry [B, 1, 256, 256] float32 robust per-frame CHM normalization высотная структура
segmentation [B, 1, 256, 256] class IDs или [B, 17, 256, 256] probabilities uint8/float32 IDs 0..16 или probabilities land-cover semantics
geometry_valid [B, 1, 256, 256] bool нет валидные CHM pixels
segmentation_valid [B, 1, 256, 256] bool нет валидные segmentation pixels
sample_id [B] string нет только логирование, не feature

2. UAV view

Поле Форма Dtype Нормализация Назначение
rgb [B, 3, 256, 256] float32 ImageNet mean/std вход StripNet
text list[str] или tokens string/int согласно text encoder описание сцены без location leakage
geometry [B, 1, 256, 256] float32 relative depth normalization структура и масштабные признаки
segmentation [B, 1, 256, 256] class IDs или [B, 17, 256, 256] probabilities uint8/float32 IDs 0..16 или probabilities spatial semantics
geometry_valid [B, 1, 256, 256] bool нет валидные depth pixels
segmentation_valid [B, 1, 256, 256] bool нет валидные segmentation pixels
sample_id [B] string нет только логирование, не feature

3. StripNet

Stage Tensor Spatial stride Разрешённое использование
1 [B, 64, 64, 64] 4 преимущественно RGB low-level; auxiliary fusion только после отдельного обоснования
2 [B, 128, 32, 32] 8 dense segmentation/geometry кандидаты
3 [B, 320, 16, 16] 16 основной mid-level fusion
4 [B, 512, 8, 8] 32 high-level fusion и readout
GAP [B, 512] global RGB anchor descriptor
Projection [B, 1024] global retrieval descriptor до L2 normalization

4. Fusion output

Каждый encode_view возвращает:

Поле Форма Требование
descriptor [B, 1024] finite, L2 norm 1 +/- 1e-4
rgb_descriptor [B, 1024] RGB anchor для диагностики
modality_contributions [B, 3] или dict text, segmentation, geometry
diagnostics dict tensors/scalars gates, attention mass, norms, entropy

Диагностика не должна менять descriptor в eval mode.

5. Парный forward

satellite batch -> encode_view(view="satellite") -> z_sat [B, 1024] UAV batch -> encode_view(view="uav") -> z_uav [B, 1024] similarity = z_uav @ z_sat.T / temperature

6. Text contrat

  • Поддержать L1, L2, L3 или выбранную объединённую схему.
  • Пустой satellite caption обрабатывается через explicit validity mask.
  • Пустая строка не должна кодироваться как полноценный semantic signal.
  • Caption не должен содержать координаты, названия районов, file names и прямые match identifiers.
  • Text encoder и token budget фиксируются для честного сравнения fusion variants.

8. Geometry contract

  • CHM и depth имеют общий ключ geometry, но разные preprocessing и projector parameters.
  • Нельзя считать численные значения depth и CHM сопоставимыми до view-specific normalization.
  • PNG допускается только для визуальной проверки. Для обучения использовать dense tensors/SafeTensors.
  • Любая производная карта, например depth gradient, считается внутри documented preprocessing block.

9. Segmentation contract

  • Канонический набор: 17 unified classes.
  • Primary representation определяется командой на interface-freeze: class IDs + embedding или probabilities/logits.
  • Hard RGB palette images не используются как model input.
  • Редкие и отсутствующие классы не должны приводить к NaN при mask pooling.

10. Запрещённые признаки

  • GPS и координаты.
  • Название карты, района или локации.
  • Индекс paired image как embedding.
  • Features второй view-ветки внутри текущего encoder.
  • Evaluation labels внутри preprocessing.

Регламент совместной работы

У команды три архитектурных трека, но одна кодовая и экспериментальная система.

Область Driver Обязательные reviewers
Fusion API и registry Павленко Близно, Мороз
Dataset и modality validation Мороз Павленко, Близно
Training/eval benchmark Близно Павленко, Мороз
Condition-aware module Павленко Мороз
Token/bottleneck module Близно Павленко
Role-aware module Мороз Близно
Общая experiment matrix Близно все
Финальная архитектурная оценка все все

Этапы

Gate 0. Environment audit

  • Проверить локальные пути двух внешних проектов.
  • Зафиксировать путь GTA-UAV RGB, captions, pair JSON и annotations.
  • Проверить checkpoint StripNet.
  • Выполнить чтение обязательного пакета.
  • Создать reports/joint/ENVIRONMENT_AUDIT.md.

Gate 1. Interface freeze

До реализации архитектур команда совместно утверждает:

  1. Формат segmentation: IDs/embedding или probabilities.
  2. Формат CHM/depth и normalization.
  3. Text encoder, уровни captions и output dimension.
  4. FusionModelBase API.
  5. Common diagnostics keys.
  6. Baseline config и output directory convention.

Результат: reports/joint/INTERFACE_DECISION.md. Изменения после freeze требуют записи причины и влияния на все три варианта.

Gate 2. RGB-only baseline

  • Один общий StripNet-only run.
  • Один общий dataloader.
  • Один общий evaluation script.
  • Smoke run на малом subset.
  • Полный baseline минимум на seed 42, затем финальный baseline на 42/123/456. Без подтверждённого baseline реализация fusion не переходит к полным запускам.

Gate 3. Independent implementation behind common API

Каждый сотрудник реализует свой модуль в отдельной feature branch. Разрешены разные внутренние операторы, но входы, выходы, loss и logging одинаковы.

Gate 4. Pair review

Reviewer проверяет:

  • shape contract;
  • отсутствие cross-view leakage;
  • корректность masks;
  • identity/residual path;
  • вычислительную сложность;
  • диагностируемость вклада модальностей;
  • тесты и gin config.

Gate 5. Smoke comparison

Все три модуля запускаются:

  • на одном subset;
  • с одним seed;
  • на одинаковом числе batches;
  • с одинаковым optimizer/loss;
  • с logging peak VRAM и latency.

Цель: найти ошибки интеграции, а не выбрать победителя.

Gate 6. Full experiment matrix

После smoke comparison выполняются primary runs и выбранные ablations по общему protocol.

Gate 7. Joint decision

Команда совместно заполняет decision table. Архитектура не выбирается по одному лучшему run. Учитываются mean, variance, compute, стабильность и интерпретируемость вклада модальностей.