forked from Pikaliov/fuze_task
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:
332
docs/01_tasks/00_MASTER_ASSIGNMENT.md
Normal file
332
docs/01_tasks/00_MASTER_ASSIGNMENT.md
Normal 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, высоты 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. Что подаётся на вход
|
||||
|
||||
### 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 B0–B3) | 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 сильнее всего угрожает вашей же гипотезе и почему?
|
||||
265
docs/01_tasks/01_PAVLENKO_CONDITION_AWARE.md
Normal file
265
docs/01_tasks/01_PAVLENKO_CONDITION_AWARE.md
Normal 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.
|
||||
267
docs/01_tasks/02_BLIZNO_TOKEN_BOTTLENECK.md
Normal file
267
docs/01_tasks/02_BLIZNO_TOKEN_BOTTLENECK.md
Normal 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 сведены статистически.
|
||||
286
docs/01_tasks/03_MOROZ_ROLE_AWARE.md
Normal file
286
docs/01_tasks/03_MOROZ_ROLE_AWARE.md
Normal 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/` (базовые версии 30–48 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 добавлены в общий отчёт.
|
||||
131
docs/01_tasks/04_JOINT_INTEGRATION.md
Normal file
131
docs/01_tasks/04_JOINT_INTEGRATION.md
Normal 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
|
||||
```
|
||||
Reference in New Issue
Block a user