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,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.