fuse_proj: Initial operational package for 3 researchers (Pavlenko/Blizno/Moroz)

Multimodal fusion research on StripNet+GTA-UAV proxy:
- 3 independent fusion tracks: condition-aware (A), token/bottleneck (B), role-aware (C)
- Shared interfaces, protocol, dataset audit, baseline benchmarks
- Canonical version-chain references to vault (SPEC, ANALYSIS, TRIAGE)
- Personalized task plans and decision tables for each researcher
- 3 generated DOCX task assignment files with milestones and DoD checklist
- Full modality dropout diagnostics and missing-modality robustness requirements
- Data contract, benchmark registry, experiment tracking infrastructure

Operational documents:
- docs/00_project/: MERIDIAN context, protocol, repository reuse guide, experiment specification
- docs/01_tasks/: Master assignment + 3 individual researcher tracks + joint integration
- docs/02_references/: Core literature, version-chain bases, code maps
- docs/03_codebase_guides/: Existing code snapshots from vault
- scripts/: gen_task_plans.js (DOCX generation), placeholder infrastructure
- vendor_reference/: Snapshots of caption_test, depth_edges_annotate, existing SOFIA/SegModel code
- reports/, results/, experiments/: Shared output structure for all 3 researchers

3 DOCX files generated from gen_task_plans.js (Times New Roman 14pt, GOST format):
- План_заданий_Павленко_БВ.docx (Condition-Aware track, fusion API owner)
- План_заданий_Близно_МВ.docx (Token/Bottleneck track, benchmark owner)
- План_заданий_Мороз_ЕС.docx (Role-Aware track, data contract owner)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Pikaliov
2026-06-11 17:16:57 +03:00
commit 2c6a00a4ca
155 changed files with 39765 additions and 0 deletions

View File

@@ -0,0 +1,332 @@
# Общее задание команде
## 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 |
Работа выполняется совместно. Каждый сотрудник обязан понимать входной contract, baseline, loss и evaluation всех трёх вариантов, а не только своего модуля.
## 2. Что требуется решить
Нужно разработать алгоритм объединения модальностей для cross-view geo-localization. Для каждой view-ветки доступен свой набор:
| View | RGB | Text | Geometry | Segmentation |
|---|---|---|---|---|
| Satellite | satellite image | satellite caption | CHM | satellite segmentation |
| UAV | UAV image | UAV caption | relative depth | UAV segmentation |
Один shared `StripNet-small` кодирует RGB. Fusion-модуль должен использовать дополнительные сигналы и сформировать descriptor, подходящий для retrieval между UAV query и satellite gallery.
### 2.1. Зачем это нужно (большая система)
Проект — архитектурный отбор fusion-механизма для Teacher системы MERIDIAN на быстром прокси (StripNet + GTA-UAV вместо DINOv3 + production-данных). Победившее семейство будет перенесено на DINOv3-Teacher и станет KD-таргетом для RGB-only edge-Student. Отсюда два следствия:
1. Нас интересует **класс механизма и причина его успеха**, а не выжатые гиперпараметрами проценты.
2. Вторичный критерий отбора — **корректное поведение при отсутствии модальности** (validity mask = 0): выход конечен, RGB-путь не искажён. Подробности и таблица безопасных/опасных классов операторов: `docs/00_project/06_MERIDIAN_CONTEXT.md` §5.
Modality dropout в training loop при этом в задание НЕ входит (это следующий этап MERIDIAN); требуется только архитектурная готовность к нему.
### 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. Что подаётся на вход
### 3.1 Satellite branch
```text
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 UAV branch
```text
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
```
Полный contract описан в `docs/00_project/01_INPUT_OUTPUT_CONTRACT.md`.
## 4. Что должно получаться на выходе
Для каждой view независимо:
```text
descriptor [B, 1024], L2 normalized
rgb_descriptor [B, 1024]
modality_contributions
diagnostics
```
Далее вычисляется similarity matrix UAV-to-satellite. Fusion-модуль не получает features противоположной view.
## 5. Главная цель экспериментов
Проверить, может ли 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.
## 6. Общие архитектурные кандидаты
### Track A: Condition-aware
RGB остаётся anchor. Auxiliary encoders строят residual corrections, а controller определяет их вклад в зависимости от content и качества входов.
### Track B: Token/bottleneck
RGB stages, text, segmentation и geometry преобразуются в компактный token pool. Cross-modal reasoning выполняется через mutable queries, bottleneck tokens или soft experts.
### Track C: Role-aware
Segmentation используется как spatial semantics, geometry как dense structural signal, text как global semantic context. Операторы и порядок fusion соответствуют роли модальности.
## 7. Общие этапы работы
### Этап 0. Изучение материалов
- [ ] Прочитать `docs/00_project/06_MERIDIAN_CONTEXT.md` (контекст системы и терминология).
- [ ] Прочитать пять документов из `docs/02_references/01_required/`.
- [ ] Прочитать `TRIAGE_teacher_fusion_dropout_2026-06-11.md` (свежий аудит fusion-литературы; минимум §6a и сквозные выводы).
- [ ] Прочитать fusion core пакет; канонические документы читать **цепочкой**: полная база из `_version_chain/` + верхняя дельта (см. `00_READING_MAP.md` §0).
- [ ] Прочитать персональный paper package.
- [ ] Создать evidence matrix: механизм, исходная задача, переносимость, риск, ожидаемый эффект.
- [ ] Отделить факты статьи от проектных предположений.
### Этап 1. Environment audit
- [ ] Проверить `caption-test`.
- [ ] Проверить `depth_edges_annotate_worlduav`.
- [ ] Найти GTA-UAV RGB и captions.
- [ ] Найти/generated GTA-UAV auxiliary SafeTensors.
- [ ] Проверить StripNet checkpoint.
- [ ] Записать версии Python, PyTorch, CUDA, GPU.
- [ ] Создать `reports/joint/ENVIRONMENT_AUDIT.md`.
### Этап 2. Data audit
- [ ] Проверить 20 satellite и 20 UAV samples.
- [ ] Проверить shape, dtype, range и validity каждой модальности.
- [ ] Проверить совпадение spatial layout RGB и auxiliary maps.
- [ ] Проверить alpha channel satellite RGB.
- [ ] Проверить 17 segmentation classes.
- [ ] Проверить пустые captions (особенно satellite: покрытие ~44.7%).
- [ ] Проверить multi-match pair labels.
- [ ] **Верифицировать split**: установить, как `meta/train_80.json`/`test_20.json` соотносятся с официальными `cross-area-drone2sate-{train,test}.json`. Если 80/20 — случайный split по всем парам, он НЕ является cross-area; тогда финальная оценка дополнительно выполняется на официальном cross-area test, а решение фиксируется в `INTERFACE_DECISION.md`.
- [ ] Сформировать таблицу найденных аномалий.
### Этап 3. Interface freeze
- [ ] Утвердить representation segmentation.
- [ ] Утвердить normalization depth и CHM.
- [ ] Утвердить text encoder и caption levels.
- [ ] Утвердить fusion API.
- [ ] Утвердить common diagnostics.
- [ ] Утвердить experiment naming.
- [ ] Создать `reports/joint/INTERFACE_DECISION.md`.
### Этап 4. Baseline
- [ ] Перенести StripNet wrapper.
- [ ] Перенести GTA-UAV loader без изменения split semantics.
- [ ] Перенести multi-match evaluation.
- [ ] Настроить symmetric retrieval objective.
- [ ] Запустить B0 smoke.
- [ ] Запустить B0 seed 42.
- [ ] После проверки запустить B0 seeds 123 и 456.
- [ ] Создать `reports/joint/BASELINE_REPORT.md`.
### Этап 5. Архитектурное проектирование
Каждый сотрудник обязан до кода:
- [ ] предложить минимум три варианта внутри трека;
- [ ] сравнить их таблицей;
- [ ] выбрать primary и fallback;
- [ ] показать tensor flow для satellite и UAV;
- [ ] указать StripNet insertion stages;
- [ ] записать формулы;
- [ ] оценить params/FLOPs/VRAM;
- [ ] определить falsification criteria;
- [ ] пройти совместное design review.
### Этап 6. Реализация
- [ ] Реализовать variant за общим API.
- [ ] Добавить gin config.
- [ ] Добавить shape/unit tests.
- [ ] Добавить diagnostics.
- [ ] Добавить smoke config.
- [ ] Выполнить взаимное code review.
### Этап 7. Smoke benchmark
- [ ] B0, A-primary, B-primary, C-primary.
- [ ] Один subset, seed 42, одинаковое число steps.
- [ ] Сравнить loss, R@K sanity, VRAM, latency, NaN.
- [ ] Исправить integration defects.
### Этап 8. Primary comparison
- [ ] Полный seed 42 для трёх variants.
- [ ] Отсечь варианты, не прошедшие decision rules.
- [ ] Запустить финалистов на 123 и 456.
- [ ] Выполнить bootstrap CI и paired comparison.
### Этап 9. Ablation
- [ ] Leave-one-modality-out на evaluation.
- [ ] Single-modality auxiliary pairs.
- [ ] Late-only vs multi-stage.
- [ ] Frozen vs common Conv-MONA setting.
- [ ] Shared vs view-specific projectors.
- [ ] Персональные ablations каждого трека.
### Этап 10. Итог
- [ ] Свести общую таблицу.
- [ ] Выбрать primary, fallback, research-arm.
- [ ] Описать failure cases.
- [ ] Зафиксировать, какие hypotheses подтверждены или опровергнуты.
- [ ] Подготовить `reports/joint/FINAL_COMPARISON.md`.
- [ ] Подготовить `reports/joint/DECISION_RECORD.md`.
## 8. Обязательные baselines
| ID | Реализация |
|---|---|
| B0 | StripNet RGB-only |
| B1 | Late concat: pooled RGB + pooled text + pooled seg + pooled geometry |
| B2 | Static additive residual с фиксированными weights |
| B3 | Multi-FiLM + ADD |
Нельзя сравнивать сложные варианты только друг с другом без B0-B3.
## 9. Общая документация каждого варианта
В design report должны быть:
1. BLUF: primary/fallback и ожидаемая причина успеха.
2. Формализация входов и выхода.
3. Evidence matrix минимум по 8 источникам.
4. Сравнение трёх кандидатов.
5. Architecture diagram.
6. Tensor table для satellite и UAV.
7. Equations.
8. Pseudocode.
9. Params/FLOPs/VRAM estimate.
10. Diagnostics.
11. Experiment matrix.
12. Risks и falsification.
## 10. Результаты, которые считаются содержательными
Положительный результат:
- устойчивое улучшение retrieval;
- понятный вклад минимум одной auxiliary modality;
- приемлемая стоимость;
- повторяемость по seed.
Отрицательный результат также принимается, если:
- protocol корректен;
- baseline воспроизводим;
- причина провала диагностирована;
- показано, какой механизм не работает и при каких условиях.
## 11. Запрещено
- Использовать GPS/coordinates/location name.
- Передавать features второй view в текущий encoder.
- Менять split, loss или gallery только для одного варианта.
- Выбирать метрики после просмотра результатов.
- Сравнивать runs с разными data filters без явного отдельного эксперимента.
- Кодировать auxiliary maps как цветные RGB renderings для обучения.
- Скрывать failed runs из отчёта.
## 12. Файлы сдачи
| Сотрудник | Design report | Implementation report |
|---|---|---|
| Павленко | `reports/pavlenko/DESIGN.md` | `reports/pavlenko/IMPLEMENTATION_AND_RESULTS.md` |
| Близно | `reports/blizno/DESIGN.md` | `reports/blizno/IMPLEMENTATION_AND_RESULTS.md` |
| Мороз | `reports/moroz/DESIGN.md` | `reports/moroz/IMPLEMENTATION_AND_RESULTS.md` |
Общие:
- `reports/joint/ENVIRONMENT_AUDIT.md`
- `reports/joint/INTERFACE_DECISION.md`
- `reports/joint/BASELINE_REPORT.md`
- `reports/joint/FINAL_COMPARISON.md`
- `reports/joint/DECISION_RECORD.md`
## 13. Milestones
| Milestone | Проверяемый результат |
|---|---|
| M0 | окружение и данные доступны |
| M1 | interface frozen |
| M2 | RGB-only baseline воспроизведён |
| M3 | три design reports приняты |
| M4 | три implementations проходят tests |
| M5 | smoke benchmark завершён |
| M6 | primary comparison завершён |
| M7 | ablations и статистика завершены |
| M8 | финальное решение принято |
## 14. Ориентировочный календарь (8 недель)
Календарь — ориентир для самоконтроля, не замена milestones. Если этап задерживается больше чем на 3 рабочих дня, блокер фиксируется в `WORKLOG.md` и обсуждается с руководителем.
| Неделя | Этапы | Milestone |
|---|---|---|
| 1 | Этап 0 (чтение) + Этап 1 (environment audit) | M0 |
| 2 | Этап 2 (data audit) + Этап 3 (interface freeze) | M1 |
| 3 | Этап 4 (baseline B0B3) | M2 |
| 4 | Этап 5 (design reports, перекрёстное ревью) | M3 |
| 5 | Этап 6 (реализация за общим API) | M4 |
| 6 | Этап 7 (smoke) + начало Этапа 8 | M5 |
| 7 | Этап 8 (primary comparison, 3 seeds для финалистов) | M6 |
| 8 | Этап 9 (ablations) + Этап 10 (итоговые отчёты, decision meeting) | M7, M8 |
Чтение литературы не заканчивается на неделе 1: evidence matrix дополняется по мере проектирования, но после M1 новые источники не могут менять общий interface без RFC.
## 15. Контрольные вопросы самопроверки (до design report)
Каждый сотрудник должен уметь ответить письменно:
1. Почему geometry-каналы satellite и UAV нельзя кодировать одним projector без view-specific нормализации?
2. Что произойдёт с вашим оператором, если segmentation полностью отсутствует у sample (validity = 0)? Покажите формулой.
3. Почему чисто multiplicative gating опасен для RGB-якоря?
4. Чем modality collapse отличается от modality shortcut и какой диагностикой ловится каждый?
5. Почему нельзя оценивать GTA-UAV по diagonal-only similarity matrix?
6. Какой ваш baseline сильнее всего угрожает вашей же гипотезе и почему?

View File

@@ -0,0 +1,265 @@
# Задание Павленко Богдану Викторовичу
## 1. Трек
Condition-Aware RGB-Anchored Fusion.
Дополнительная командная роль: владелец общего fusion API и архитектурной совместимости трёх реализаций.
## 2. Исследовательский вопрос
Может ли controller, использующий RGB content summary и признаки качества auxiliary inputs, динамически выбирать полезный вклад text, segmentation и geometry, сохраняя надёжный RGB residual path?
## 3. Обязательное чтение
### Общий пакет
- `docs/02_references/01_required/`
- `docs/02_references/02_fusion_core/СИНТЕЗ_3_fusion.md`
- `docs/02_references/02_fusion_core/SPEC_fusion_ACF_MERIDIAN_v5.md`
- `docs/02_references/02_fusion_core/ANALYSIS_FiLM_alternatives_taxonomy_v4.md`
- `docs/02_references/06_paper_analyses/B14_BB_2025_Strip R-CNN Large Strip Convolution for Remote Sensing Object Detection.md`
### Персональный пакет
- `F39_2025_CAFuser_Condition-Aware_Multimodal_Fusion.md`
- `F37_2024_AsymFormer_Asymmetrical_Cross-Modal_Mobile_RGB-D.md`
- `F43_2024_Robust_Multimodal_Missing_Modalities_PEFT.md` — peer-reviewed (TPAMI 2024) опора identity-adapters и missing-modality поведения
- `F40_2025_M3amba_CLIP-driven_Mamba_Multi-modal_RS.md`
- `F4_2025_EARTHMIND ... MULTIMODAL LLM.md`
- `F44_2025_Fusion-Mamba_Cross-modality_Object_Detection.md`
- `F68_2024_RemoteDet-Mamba_Hybrid_RS.md`
- `F47_2026_TacFiLM_Tactile_Modality_Fusion_VLA.md`
Файлы находятся внутри `docs/02_references/06_paper_analyses/` и `05_text/`.
### Канонические опоры (проверенные выводы из vault, использовать в evidence matrix)
| Источник | Факт | Следствие для трека A |
|---|---|---|
| C5 WeatherPrompt (NeurIPS 2025), `05_text/` | Dynamic Gate 80.20 > Concat 78.90 > Static gate 78.45 | веса fusion должны быть instance-conditioned — прямой аргумент за controller |
| F14 WeatherPrompt deep dive | FiLM 73.37% > CrossAttn 68.10% > Concat 62.50%; спецификация text→FiLM MLP: zero-init, two-speed LR, EMA | готовый рецепт text-пути и инициализации |
| Flamingo (NeurIPS 2022, см. TRIAGE §1) | zero-init tanh(α)-gated cross-attention: при α=0 модель ≡ frozen base | корень линии identity-at-init; цитировать как первоисточник |
| F39 CAFuser (RA-L 2025) | condition token строится из RGB и управляет fusion остальных модальностей | каноничный шаблон трека |
| TRIAGE §6a, вывод 1 | gated additive residual — dropout-safe; чисто multiplicative gating ломается при near-zero aux | residual-форма обязательна для primary |
## 4. Общая обязанность: fusion API
Совместно с коллегами определить и реализовать:
```python
class FusionModelBase(nn.Module):
def encode_view(self, batch: ViewBatch, view: ViewName) -> FusionViewOutput:
...
```
API должен:
1. принимать одинаковый batch для всех variants;
2. различать satellite CHM и UAV depth через `view`;
3. возвращать descriptor и diagnostics;
4. не требовать paired-view features;
5. поддерживать batch size 1;
6. быть пригодным для unit tests;
7. позволять registry/factory выбирать variant через gin.
До merge API получить согласие Близно и Мороза.
## 5. Персональные задачи
### A0. Evidence matrix
Создать таблицу минимум по восьми источникам:
| Source | Original task | Fusion operator | Conditioning signal | Identity path | Transfer to StripNet | Risk |
|---|---|---|---|---|---|---|
Для каждого source отдельно отметить paper fact и собственное предположение.
### A1. Определить RGB anchor
Сравнить возможные content summaries:
1. GAP stage 3.
2. GAP stage 4.
3. Concatenated GAP stages 3-4.
4. Lightweight attention pooling stage 4.
Выбрать primary summary. Обосновать, почему он содержит достаточно информации для выбора modality contribution.
### A2. Определить quality signals
Минимальный набор кандидатов:
| Modality | Возможные quality features |
|---|---|
| Text | empty mask, token count, text norm, caption quality score |
| Segmentation | entropy, background fraction, class diversity, valid fraction |
| CHM | valid fraction, dynamic range, gradient energy |
| Depth | valid fraction, dynamic range, smoothness/gradient consistency |
Не включать все признаки автоматически. Выбрать признаки, которые можно вычислить стабильно и без labels test split.
### A3. Спроектировать auxiliary paths
Для каждой modality определить:
- raw tensor;
- normalization;
- encoder;
- output channel dimension;
- target StripNet stage;
- residual transform;
- initialization;
- validity handling.
CHM и depth используют раздельные input projectors, даже если после них общий interface.
### A4. Сформировать три кандидата
| Candidate | Required design |
|---|---|
| A-C1 | channel-wise gated additive residual |
| A-C2 | multi-stage FiLM с condition-aware gates |
| A-C3 | dense residual paths для maps + token cross-attention для text |
Для каждого рассчитать:
- insertion stages;
- trainable params;
- dominant operations;
- expected VRAM;
- identity preservation;
- modality attribution;
- главный failure mode.
### A5. Выбрать primary и fallback
Рекомендуемый scoring template:
| Criterion | Weight |
|---|---:|
| Retrieval fit | 25 |
| RGB preservation | 20 |
| Modality attribution | 15 |
| Compute | 15 |
| Stability | 15 |
| Implementation risk | 10 |
### A6. Формализовать controller
Минимальная формула:
```math
c_v = Controller([Pool(X_v^{rgb}); q_v^{text}; q_v^{seg}; q_v^{geom}; e_v^{view}])
```
```math
X_v^{l,new} = X_v^{l,rgb} + sum_m a_{v,m}^{l} * Delta_{v,m}^{l}
```
Нужно определить:
- scalar, channel или spatial gates;
- sigmoid или softmax;
- конкурируют ли модальности за единичную массу;
- contribution cap;
- zero-init residual;
- regularization, если она действительно нужна;
- **поведение при validity = 0**: gate невалидной модальности обязан давать нулевой вклад, а оставшиеся gates — оставаться корректными (не «доставать» массу из несуществующего входа). Показать это формулой и покрыть тестом.
### A7. Выбрать fusion levels
Сравнить:
1. Stage 4 only.
2. Stages 3-4.
3. Stages 2-4.
4. Dense maps в stages 2-3, text только stage 4/readout.
Для каждого указать tensor shapes и дополнительную стоимость.
### A8. Descriptor readout
Сравнить:
- GAP stage 4;
- GGeM;
- attention pooling;
- residual addition fused descriptor к RGB descriptor.
Primary readout обязан сохранять прямой RGB information path.
### A9. Diagnostics
Реализовать минимум:
- mean/std gate по modality и stage;
- contribution norm `||a_m * Delta_m|| / ||X_rgb||`;
- cosine RGB vs fused descriptor;
- fraction saturated gates `<0.05` или `>0.95`;
- descriptor variance.
### A10. Tests
Обязательные тесты:
1. Output shape `[B,1024]` для B=1 и B=4.
2. Descriptor norm.
3. Identity behaviour при zero auxiliary residual.
4. Invalid-mask handling.
5. Satellite и UAV geometry projectors не смешиваются.
6. No NaN на constant segmentation/depth/CHM.
7. Backprop gradient достигает каждого active projector.
### A11. Персональные ablations
| ID | Сравнение |
|---|---|
| A-AB1 | static weights vs condition-aware |
| A-AB2 | content-only vs content+quality |
| A-AB3 | scalar vs channel gates |
| A-AB4 | independent sigmoid vs normalized softmax gates |
| A-AB5 | standard init vs identity-preserving init |
| A-AB6 | stage 4 vs stages 3-4 |
| A-AB7 | shared vs view-specific controller head |
| A-AB8 | GAP vs GGeM vs attention pooling |
### A12. Falsification
Гипотеза condition-aware controller считается не подтверждённой, если выполняется любое:
- static residual не хуже primary в пределах шума;
- gates почти постоянны по samples;
- один gate насыщен для большинства samples без contribution gain;
- улучшение есть только на одном seed;
- compute существенно растёт без R@1 gain;
- fused descriptor почти идентичен RGB при заявленном multimodal effect.
## 6. Кодовые артефакты
Ожидаемые файлы:
```text
src/fuse_proj/models/fusion/base.py
src/fuse_proj/models/fusion/registry.py
src/fuse_proj/models/fusion/condition_aware.py
in/config_files/fusion_condition_aware.gin
tests/test_condition_aware.py
reports/pavlenko/DESIGN.md
reports/pavlenko/IMPLEMENTATION_AND_RESULTS.md
```
## 7. Definition of Done
- [ ] Общий API принят всей командой.
- [ ] Evidence matrix заполнена.
- [ ] Три кандидата сравнены.
- [ ] Primary и fallback выбраны до full run.
- [ ] Satellite и UAV tensor flow полностью описаны.
- [ ] Gates математически определены.
- [ ] Реализованы diagnostics.
- [ ] Все tests проходят.
- [ ] Проведены A-AB1..A-AB8 для выбранного набора.
- [ ] Мороз выполнил code review.
- [ ] Результаты занесены в общий experiment registry.

View File

@@ -0,0 +1,267 @@
# Задание Близно Максиму Витальевичу
## 1. Трек
Token/Bottleneck Full-Modal Aggregation.
Дополнительная командная роль: владелец общего benchmark, run registry, метрик, statistical comparison и воспроизводимости.
## 2. Исследовательский вопрос
Как выполнить cross-modal reasoning между StripNet features, text, segmentation и geometry через компактный token set, не обрабатывая все spatial positions квадратично и не допуская collapse к одной модальности?
## 3. Обязательное чтение
### Общий пакет
- `docs/02_references/01_required/`
- `docs/02_references/02_fusion_core/СИНТЕЗ_3_fusion.md`
- `docs/02_references/02_fusion_core/ОБЗОР_fusion_rgb_multimodal_full_v1.md`
- StripNet analysis B14.
### Персональный пакет
- `F45_2024_Flex-MoE_Modeling_Arbitrary_Modality_Combination.md`
- `F46_2024_FuseMoE_Mixture-of-Experts_Transformers_Fleximodal.md`
- `P50_2026_MMGeo_deep_dive_for_MERIDIAN.md`
- `ImageBind One Embedding Space To Bind Them All.md`
- `F40_2025_M3amba_CLIP-driven_Mamba_Multi-modal_RS.md`
- `F4_2025_EARTHMIND ... MULTIMODAL LLM.md`
### Канонические опоры (проверенные выводы из vault, использовать в evidence matrix)
| Источник | Факт | Следствие для трека B |
|---|---|---|
| P50 MMGeo deep dive | Mutable Token (Query) над Modality Pool (K/V); softmax перенормирует веса при удалении модальности; multimodal-trained модель превосходит RGB-only-trained даже на RGB-only inference | главный CVGL-прецедент трека; ⚠️ конкретные числа (88.5→97.3 R@1) проверить по PDF до цитирования |
| MBT (NeurIPS 2021, arXiv 2107.00135, см. TRIAGE §1) | весь кросс-модальный поток через малый набор bottleneck-токенов; выход фиксированной формы при любом подмножестве модальностей | peer-reviewed первоисточник bottleneck-схемы |
| Perceiver IO (ICLR 2022) / BLIP-2 Q-Former (ICML 2023), TRIAGE §2 | фиксированный латентный массив ⊥ длине входа; query-bottleneck над frozen encoder | прецеденты learned-resampler кандидата B-C1/B-C2 |
| CMNeXt (CVPR 2023, TRIAGE §1) | Self-Query Hub: ~0.01M params на модальность, масштабируется 1→81 модальностей, отсутствующая aux вносит ноль | дёшевый RGB-anchored hub как альтернатива полному token pool |
| ImageBind | late-fusion-by-alignment | нижняя граница: если bottleneck не бьёт ImageBind-style late fusion, он не нужен |
Внешние статьи (MBT, Perceiver IO, BLIP-2, CMNeXt) найти по arXiv ID из `02_fusion_core/TRIAGE_teacher_fusion_dropout_2026-06-11.md` и прочитать оригиналы — конспектов в пакете нет.
## 4. Общая обязанность: benchmark
Совместно с коллегами реализовать единый запуск, который меняет только fusion variant.
Обязательные возможности:
1. Gin config.
2. Seed control.
3. Config snapshot.
4. Git commit в manifest.
5. Train/eval metrics CSV.
6. Multi-match R@K.
7. Peak VRAM и latency.
8. Diagnostics aggregation.
9. Experiment registry update.
10. Одинаковый loss/sampler для всех variants.
## 5. Персональные задачи
### B0. Evidence matrix
Минимальные поля:
| Source | Tokenizer | Aggregator | Complexity | Modality identity | Collapse control | Transfer risk |
|---|---|---|---|---|---|---|
### B1. Определить token contract
Для каждой modality указать:
| Поле | RGB | Text | Segmentation | Geometry |
|---|---|---|---|---|
| Source tensor | | | | |
| Number of tokens | | | | |
| Token dim | | | | |
| Position encoding | | | | |
| Modality embedding | | | | |
| View embedding | | | | |
| Normalization | | | | |
### B2. Сжать StripNet features
Сравнить:
1. Stage-4 GAP: 1 token.
2. Stage-4 adaptive grid 4x4: 16 tokens.
3. Stage-3/4 pyramid: например 4x4 + 2x2.
4. Learned resampler с K queries.
Рассчитать attention complexity для каждого варианта при общей token dimension 256 и 512.
### B3. Tokenization segmentation
Сравнить:
- global class histogram token;
- mask-pooled class tokens;
- fixed spatial grid over embedded class map;
- learned query pooling.
Обработать отсутствующие классы через mask, не создавая NaN при делении на ноль.
### B4. Tokenization geometry
Для depth и CHM сравнить:
- pooled dense encoder features;
- adaptive spatial grid;
- global statistics + spatial tokens;
- gradient-aware tokenization.
Input encoders view-specific, output token contract общий.
### B5. Tokenization text
Сравнить:
- один global text token;
- L1/L2/L3 как три tokens;
- learned resampling sequence в K tokens.
Text token count и encoder фиксируются до primary comparison.
### B6. Сформировать три кандидата
| Candidate | Required design |
|---|---|
| B-C1 | mutable query читает общий modality token pool |
| B-C2 | shared bottleneck tokens с 1-2 aggregation layers |
| B-C3 | soft modality experts + unified readout |
Top-k routing не использовать в primary без доказанной необходимости, так как он усложняет стабильность и fair comparison.
### B7. Выбрать primary и fallback
Сравнить по:
- R@1 potential;
- token count;
- quadratic cost;
- gradient flow;
- modality attribution;
- load balancing;
- implementation complexity.
### B8. Формализовать aggregation
Для primary задать:
```math
T_v = concat(T_rgb, T_text, T_seg, T_geom) + E_mod + E_view + E_pos
```
```math
Q_v^{k+1} = Q_v^k + CrossAttention(Q_v^k, T_v, T_v)
```
или альтернативную точную формулу.
Указать Q/K/V direction, heads, layers, token dim, MLP ratio, residual и normalization.
### B9. Предотвратить collapse
Диагностика обязательна, regularization выбирается только по данным.
Минимально логировать:
- attention mass per modality;
- cosine similarity bottleneck tokens;
- token covariance rank;
- gradient norm per modality tokenizer;
- readout sensitivity leave-one-group-out.
Кандидаты контроля:
- modality-balanced attention penalty;
- token diversity loss;
- decorrelation;
- auxiliary modality readouts;
- soft expert load balancing.
Выбрать один минимальный механизм для primary, если baseline показывает collapse.
### B10. Readout
Сравнить:
1. One fused token.
2. Mean bottleneck tokens.
3. Attention pooling.
4. Concat token readout + RGB GAP.
5. Residual fused token к RGB descriptor.
### B11. Tests
1. Token count для каждой modality соответствует config.
2. Masked/empty class tokens не дают NaN.
3. Attention mask блокирует invalid tokens.
4. Output shape и norm.
5. Gradient достигает каждого tokenizer.
6. Token order permutation test там, где position не должен влиять.
7. Complexity estimator выдаёт ожидаемый порядок роста.
### B12. Персональные ablations
| ID | Сравнение |
|---|---|
| B-AB1 | GAP vs adaptive grid vs learned resampler |
| B-AB2 | stage 4 vs stages 3-4 |
| B-AB3 | mutable query vs bottleneck |
| B-AB4 | bottleneck vs soft experts |
| B-AB5 | token dim 256 vs 512 |
| B-AB6 | 1 vs 2 vs 4 layers |
| B-AB7 | no collapse control vs selected control |
| B-AB8 | single token vs pooled readout |
| B-AB9 | with vs without modality embeddings |
| B-AB10 | fused-only vs RGB-residual readout |
### B13. Statistical comparison
Для финалистов:
- mean/std по 3 seed;
- paired per-query success table;
- bootstrap CI R@1 delta;
- Holm correction, если выполняется много pairwise tests;
- Pareto table accuracy/VRAM/latency.
### B14. Falsification
Гипотеза token aggregation не подтверждена, если:
- late concat не хуже;
- token representations коллапсируют;
- gain исчезает при RGB-residual control;
- attention cost растёт без retrieval gain;
- результат чувствителен к несущественному token order;
- улучшение не повторяется по seed.
## 6. Кодовые артефакты
```text
src/fuse_proj/models/fusion/token_bottleneck.py
scripts/run_experiment.py
scripts/aggregate_results.py
scripts/benchmark_latency.py
in/config_files/fusion_token_bottleneck.gin
tests/test_token_bottleneck.py
experiments/experiment_registry.csv
reports/blizno/DESIGN.md
reports/blizno/IMPLEMENTATION_AND_RESULTS.md
```
## 7. Definition of Done
- [ ] Общий benchmark принят всей командой.
- [ ] Token contract заполнен для всех modalities.
- [ ] Три candidates сравнены.
- [ ] Primary/fallback выбраны.
- [ ] Attention complexity рассчитана.
- [ ] Collapse diagnostics реализованы.
- [ ] Все tests проходят.
- [ ] B-AB1..B-AB10 выполнены в согласованном объёме.
- [ ] Павленко выполнил code review.
- [ ] Финальные runs сведены статистически.

View File

@@ -0,0 +1,286 @@
# Задание Морозу Егору Сергеевичу
## 1. Трек
Role-Aware Hierarchical Fusion.
Дополнительная командная роль: владелец dataset contract, modality preprocessing, validity masks и контроля качества auxiliary inputs.
## 2. Исследовательский вопрос
Даёт ли отдельная обработка spatial semantics, geometry и global text более сильный retrieval descriptor, чем один универсальный оператор для всех модальностей?
## 3. Обязательное чтение
### Общий пакет
- все документы `docs/02_references/01_required/`;
- fusion core synthesis и taxonomy;
- StripNet analysis B14.
### Segmentation
- `REVIEW_segmentation_pairA.md`
- `DELTA_pair_A_seg_revised_v3.md`
- `ОБЗОР_fusion_rgb_segmentation_v1.md`
- `F36_FC-CLIP.md`
- `P52_CVGL_2024_A guided ... segmentation.md`
### Geometry
- `REVIEW_depth_normals_pairB.md`
- `DELTA_pair_B_depth_uav_v3.md`
- `REVIEW_chm_pairC.md`
- `DELTA_pair_C_chm_sat_v3.md`
- `M11_CHMv2_deep_dive_for_MERIDIAN.md`
- `M4_2025_JRN-Geo ... .md`
- `P44_MGS2_deep_dive_for_MERIDIAN.md`
### Text
- `REVIEW_text_pairD_final.md`
- `REVIEW_text_pairD_methodology.md`
- `F14_2025_WeatherPrompt_deep_dive_for_MERIDIAN.md`
- `F47_2026_TacFiLM_Tactile_Modality_Fusion_VLA.md`
- `P64_2025_CGSI_deep_dive_for_MERIDIAN.md`
⚠️ Документы `DELTA_pair_*_v3.md` — короткие changelog-вершины. Полное содержание pair-анализов лежит в `03_segmentation/_version_chain/` и `04_geometry/_version_chain/` (базовые версии 3048 KB). Читать цепочкой: база → v2 → v3.
### Канонические опоры (проверенные выводы из vault, использовать в evidence matrix)
| Источник | Факт | Следствие для трека C |
|---|---|---|
| M4 JRN-Geo | normals дают +2.6% в паре с RGB, но alone → 37%: геометрия — модулятор, не самостоятельный поток | geometry-путь проектировать как модуляцию RGB-признаков, не как параллельный encoder |
| P44 MGS2 deep dive | асимметричная depth-ветка (только drone); Sobel-on-depth ≈ ориентационные карты — дешевле и устойчивее raw values | кандидат представления depth в C3 |
| P68 / обзор DA3 | metric scale depth на UAV ненадёжен | использовать только relative structure; запрет на абсолютные значения |
| B97 IM2HEIGHT (caveat) | DSM ≠ CHM; синтетический CHM может отравить обучение | проверять происхождение CHM-карт в data audit |
| F63 HLMamba (caveat) | multiplicative gating убивает информацию при near-zero RGB | аргумент за FiLM с additive β и residual-форму |
| P52 guided CVGL | land-cover guidance улучшает CVGL; GT-Guide vs Guided — прямое LUPI-evidence | главный прецедент пользы segmentation именно в CVGL |
| DFormerv2 (CVPR 2025, TRIAGE §2) | depth как geometry-prior bias в self-attention: модуляция ≡ identity при отсутствии depth | кандидат geometry-пути с бесплатной missing-modality устойчивостью |
| F14 WeatherPrompt deep dive | text→FiLM MLP: zero-init, two-speed LR; FiLM > CrossAttn > Concat | стартовая точка text-пути C5 |
## 4. Общая обязанность: data contract
Совместно с коллегами реализовать единый loader extension, который возвращает:
- RGB;
- captions и text-valid mask;
- segmentation tensor и valid mask;
- view-specific geometry tensor и valid mask;
- sample IDs только для logging;
- multi-match evaluation metadata.
Loader не должен знать выбранный fusion variant.
## 5. Персональные задачи
### C0. Data audit
Проверить минимум 40 samples, поровну satellite/UAV, и заполнить:
| Sample | View | RGB shape | Seg classes | Geometry range | Caption | Alignment issue | Verdict |
|---|---|---|---|---|---|---|---|
Отдельно проверить:
- satellite alpha channel;
- resize/crop mapping;
- orientation consistency;
- SafeTensors keys;
- invalid/constant maps;
- empty captions;
- segmentation background fraction.
### C1. Modality role contract
Для каждой modality заполнить:
| Field | RGB | Segmentation | Depth | CHM | Text |
|---|---|---|---|---|---|
| Raw input | | | | | |
| Normalization | | | | | |
| Encoder | | | | | |
| Spatial level | | | | | |
| Confidence | | | | | |
| Expected CVGL signal | | | | | |
| Main shortcut risk | | | | | |
### C2. Segmentation path
Сравнить:
1. Class ID embedding + convolution.
2. One-hot/probability maps + convolution.
3. Mask-pooled class tokens.
4. Segmentation-guided attention bias.
Ответить:
- где сохраняется spatial layout;
- как кодируются отсутствующие классы;
- что делать с high-background samples;
- нужна ли entropy/confidence;
- на каких StripNet stages segmentation полезнее.
### C3. UAV depth path
Сравнить input representations:
- normalized relative depth;
- inverse depth;
- depth gradients;
- depth + gradient channels;
- compact depth statistics.
Выбрать representation, которая не зависит от неизвестного absolute scale GTA-UAV.
### C4. Satellite CHM path
Сравнить:
- raw normalized CHM;
- robust percentile normalization;
- CHM gradients;
- CHM + validity mask;
- local height statistics.
Проверить, что CHM используется только для satellite view.
### C5. Text path
Сравнить:
1. Global FiLM.
2. Visual-query/text-key-value cross-attention.
3. L1/L2/L3 tokens.
4. Late descriptor gating.
Зафиксировать empty-caption behaviour и исключить location leakage.
### C6. Сформировать три кандидата
| Candidate | Required design |
|---|---|
| C-C1 | dense geometry+seg fusion, затем text FiLM |
| C-C2 | segmentation class tokens + geometry bias + late text attention |
| C-C3 | multi-stage role-specific adapters + hierarchical readout |
### C7. Обосновать hierarchy
Primary должен явно определить порядок, например:
```text
StripNet stage 2/3
+ segmentation spatial semantics
+ view-specific geometry structure
-> fused spatial feature
-> StripNet stage 4 / aggregation
+ text semantic context
-> hierarchical readout
-> descriptor [B,1024]
```
Нужно показать, почему другой порядок слабее или рискованнее.
### C8. Uncertainty/validity handling
Минимальный набор:
- `text_valid`;
- `segmentation_valid`;
- `geometry_valid`;
- segmentation entropy/background ratio;
- geometry valid fraction.
Learned reliability head добавлять только после сравнения с explicit deterministic indicators.
### C9. Shared и view-specific параметры
Обязательно view-specific:
- первый geometry projector;
- normalization depth/CHM;
- quality features, зависящие от geometry semantics.
Кандидаты на shared:
- output channel interface;
- segmentation encoder;
- text encoder;
- late fusion/readout.
### C10. Diagnostics
- segmentation class contribution;
- geometry feature norm;
- text contribution;
- valid fraction distributions;
- RGB vs fused cosine;
- per-view modality contribution;
- failure examples high-background/flat geometry/empty text.
### C11. Tests
1. Correct SafeTensors key mapping per view.
2. Segmentation IDs остаются в `0..16`.
3. Missing class mask pooling finite.
4. Depth не подаётся в satellite geometry path.
5. CHM не подаётся в UAV geometry path.
6. Constant maps finite.
7. Invalid pixels не влияют на pooled statistics.
8. Output shape и norm.
9. Spatial alignment after resize.
### C12. Персональные ablations
| ID | Сравнение |
|---|---|
| C-AB1 | one universal operator vs role-aware operators |
| C-AB2 | segmentation dense map vs class tokens |
| C-AB3 | raw depth vs inverse/gradient depth |
| C-AB4 | raw CHM vs robust/gradient CHM |
| C-AB5 | text FiLM vs cross-attention |
| C-AB6 | text early vs late |
| C-AB7 | spatial-first vs text-first |
| C-AB8 | validity only vs reliability head |
| C-AB9 | shared vs view-specific geometry projector |
| C-AB10 | global vs hierarchical readout |
### C13. Falsification
Role-aware hypothesis не подтверждена, если:
- универсальный Multi-FiLM не хуже;
- порядок fusion не влияет;
- geometry contribution близок к нулю;
- text полностью определяет descriptor;
- segmentation path улучшает same-area, но ухудшает cross-area;
- gain не повторяется по seed.
## 6. Кодовые артефакты
```text
src/fuse_proj/data/batch.py
src/fuse_proj/data/gtauav_multimodal.py
src/fuse_proj/data/validation.py
src/fuse_proj/models/fusion/role_aware.py
in/config_files/data_gtauav.gin
in/config_files/fusion_role_aware.gin
tests/test_multimodal_data.py
tests/test_role_aware.py
reports/moroz/DESIGN.md
reports/moroz/IMPLEMENTATION_AND_RESULTS.md
```
## 7. Definition of Done
- [ ] Data audit завершён.
- [ ] Loader contract принят всей командой.
- [ ] Role table заполнена.
- [ ] Segmentation/depth/CHM/text paths описаны отдельно.
- [ ] Три candidates сравнены.
- [ ] Primary/fallback выбраны.
- [ ] Все validity tests проходят.
- [ ] C-AB1..C-AB10 выполнены в согласованном объёме.
- [ ] Близно выполнил code review.
- [ ] Failure cases добавлены в общий отчёт.

View File

@@ -0,0 +1,131 @@
# Совместное интеграционное задание
## 1. Цель
Собрать три fusion family в одну систему, исключить различия protocol и получить честное сравнение.
## 2. Общие компоненты
Команда должна иметь одну реализацию каждого компонента:
| Компонент | Один для всех variants |
|---|---:|
| GTA-UAV split | да |
| RGB transforms | да |
| Auxiliary loading | да |
| Text encoder | да |
| StripNet checkpoint | да |
| StripNet adaptation setting | да |
| Retrieval objective | да |
| Sampler | да |
| Optimizer/scheduler | да |
| Evaluation gallery | да |
| Metrics | да |
| Logging schema | да |
| Seed list | да |
Меняться должен только fusion module и его специфические гиперпараметры.
## 3. Integration checklist
### Data
- [ ] Sample IDs совпадают между RGB, captions и auxiliary files.
- [ ] Satellite получает CHM, UAV получает depth.
- [ ] Segmentation class mapping одинаковый.
- [ ] Validity masks присутствуют.
- [ ] Multi-match ground truth сохранён.
### Model
- [ ] Shared StripNet instance.
- [ ] Одинаковая projection dimension.
- [ ] Три variants создаются через registry.
- [ ] Output schema совпадает.
- [ ] Diagnostics keys имеют common prefix/schema.
### Training
- [ ] Один training loop.
- [ ] Один loss.
- [ ] Один sampler.
- [ ] Одинаковые augmentations.
- [ ] Одинаковый effective batch size.
- [ ] Одинаковые epochs и warmup.
- [ ] Checkpoints сохраняются атомарно.
### Evaluation
- [ ] Full gallery.
- [ ] Multi-positive matches.
- [ ] UAV-to-satellite и satellite-to-UAV.
- [ ] R@1/5/10, MRR, AP.
- [ ] Per-query predictions для paired statistics.
## 4. Common smoke suite
Каждый variant должен пройти:
1. CPU shape forward, если используемые операции поддерживают CPU.
2. GPU forward B=1.
3. GPU forward B=4.
4. One optimizer step.
5. 100-batch smoke train.
6. Small-gallery evaluation.
7. Full evaluation без обучения для checkpoint.
8. Latency warmup + measurement.
9. Peak VRAM measurement.
## 5. Experiment IDs
```text
FUS-B0-RGB-s42
FUS-A-COND-s42
FUS-B-TOKEN-s42
FUS-C-ROLE-s42
```
Ablation:
```text
FUS-A-COND-AAB3-s42
FUS-B-TOKEN-BAB1-s42
FUS-C-ROLE-CAB7-s42
```
## 6. Общая result table
| Variant | Seed | R@1 | R@5 | R@10 | MRR | Params M | VRAM GB | Latency ms | Notes |
|---|---:|---:|---:|---:|---:|---:|---:|---:|---|
После трёх seed:
| Variant | R@1 mean±std | Delta B0 | 95% CI | VRAM delta | Latency delta | Missing-modality OK | Verdict |
|---|---:|---:|---:|---:|---:|---|---|
Колонка «Missing-modality OK» заполняется по протоколу §13 (`03_EXPERIMENT_PROTOCOL_GTA_UAV.md`): well-posed при validity=0 для каждой aux-модальности.
## 7. Decision meeting
Каждый сотрудник до встречи отвечает письменно:
1. Какая часть его hypothesis подтверждена?
2. Какая часть опровергнута?
3. Что показывает вклад каждой modality?
4. Какой failure mode наиболее важен?
5. Как вариант ведёт себя при отсутствии каждой aux-модальности (validity=0)?
6. Какой вариант он рекомендует primary и почему?
7. Какой вариант должен остаться fallback?
8. Что в варианте придётся менять при переносе со StripNet stage maps на ViT token maps (DINOv3 Teacher)?
Решение записывается не по голосованию, а по заранее заданным метрикам и ограничениям.
## 8. Итоговые файлы
```text
reports/joint/FINAL_COMPARISON.md
reports/joint/DECISION_RECORD.md
experiments/experiment_registry.csv
results/summary.csv
results/statistical_tests.json
```