Загрузить файлы в «reports»
This commit is contained in:
315
reports/1.1 Подготовительный этап (Конспект).md
Normal file
315
reports/1.1 Подготовительный этап (Конспект).md
Normal file
@@ -0,0 +1,315 @@
|
||||
---
|
||||
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 — асимметричная Teacher–Student система
|
||||
|
||||
MERIDIAN — асимметричная Teacher–Student система кросс-видовой геолокализации БПЛА (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, высоты 100–600 м|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, стабильность и интерпретируемость вклада модальностей.
|
||||
Reference in New Issue
Block a user