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:
210
docs/00_project/03_EXPERIMENT_PROTOCOL_GTA_UAV.md
Normal file
210
docs/00_project/03_EXPERIMENT_PROTOCOL_GTA_UAV.md
Normal file
@@ -0,0 +1,210 @@
|
||||
# Единый экспериментальный protocol GTA-UAV
|
||||
|
||||
## 1. Dataset
|
||||
|
||||
Primary dataset: GTA-UAV-LR.
|
||||
|
||||
| Компонент | Ожидаемый источник |
|
||||
|---|---|
|
||||
| UAV RGB | `drone/images/`, 33,763 изображений, исходно 512x384 |
|
||||
| Satellite RGB | `satellite/`, 14,640 изображений, 256x256 |
|
||||
| Pair labels | `cross-area-drone2sate-{train,test}.json` |
|
||||
| Captions | GTA-UAV-LR-captions для UAV и satellite |
|
||||
| Auxiliary maps | GTA-UAV-LR-aug SafeTensors |
|
||||
| Split snapshots | `caption-test/meta/train_80.json`, `test_20.json` |
|
||||
| Segmentation filter | `caption-test/meta/seg_filter.json` |
|
||||
|
||||
Фактические пути задаются через gin и записываются в run manifest.
|
||||
|
||||
## 2. Split
|
||||
|
||||
- Primary: cross-area.
|
||||
- Same-area: только sanity check.
|
||||
- Train/test split не пересоздаётся для разных fusion variants.
|
||||
- Evaluation учитывает несколько допустимых satellite matches для одной UAV query.
|
||||
- Диагональная оценка одного match на query считается некорректной для GTA-UAV.
|
||||
|
||||
### 2.1. Обязательная верификация split (Gate 0)
|
||||
|
||||
Унаследованные снапшоты `caption-test/meta/train_80.json` / `test_20.json` создавались скриптом `make_split.py --ratio 0.8 --seed 42`. До baseline команда обязана установить и записать в `ENVIRONMENT_AUDIT.md`:
|
||||
|
||||
1. К какому множеству пар применялся 80/20: ко всем парам или внутри официального `cross-area-drone2sate-train.json`.
|
||||
2. Если 80/20 — случайный split по всем парам, он не эквивалентен официальному cross-area протоколу (train и test делят область → задача проще). В этом случае:
|
||||
- примary-сравнение допускается на унаследованном split (главное — одинаковость для всех вариантов);
|
||||
- финалисты дополнительно оцениваются на официальном `cross-area-drone2sate-test.json` без дообучения;
|
||||
- в отчётах оба числа маркируются явно: `split=inherited-80/20` и `split=official-cross-area`.
|
||||
3. Количества пар train/test и размер satellite gallery фиксируются в manifest каждого run.
|
||||
|
||||
### 2.2. Числа датасета (для контроля аудита)
|
||||
|
||||
| Компонент | Ожидаемое значение |
|
||||
|---|---|
|
||||
| UAV RGB | 33,763 PNG, 512×384 |
|
||||
| Satellite RGB | 14,640 PNG, 256×256, RGBA |
|
||||
| Captions UAV / satellite | 33,411 / 6,546 (покрытие ~99% / ~44.7%) |
|
||||
| Auxiliary maps | 48,403 (segm, depth, edge, chm) |
|
||||
| Seg-filter passed | 37,498 из 48,403 (исключение ≥90% background+water) |
|
||||
| Унаследованный split | train 26,966 → 24,891 после seg-filter; test 6,742 → 6,252 |
|
||||
| Test gallery | ~2,684 unique satellite tiles в test_20 |
|
||||
|
||||
Расхождение фактических чисел с таблицей — находка data audit, а не повод молча продолжить.
|
||||
|
||||
## 3. Common model settings
|
||||
|
||||
| Параметр | Значение |
|
||||
|---|---|
|
||||
| Backbone | StripNet-small |
|
||||
| Input size | 256x256 |
|
||||
| Backbone sharing | shared satellite/UAV |
|
||||
| Primary backbone state | frozen |
|
||||
| Optional adaptation | одинаковые Conv-MONA stages 3-4 |
|
||||
| Descriptor dim | 1024 |
|
||||
| Descriptor norm | L2 |
|
||||
| Segmentation classes | 17 |
|
||||
| Text encoder | фиксируется на Gate 1 |
|
||||
|
||||
## 4. Retrieval objective
|
||||
|
||||
Primary objective: symmetric contrastive retrieval loss.
|
||||
|
||||
```math
|
||||
L = w_{q2g} CE(z_{uav} z_{sat}^{T} / tau, y)
|
||||
+ w_{g2q} CE(z_{sat} z_{uav}^{T} / tau, y)
|
||||
```
|
||||
|
||||
Начальная конфигурация:
|
||||
|
||||
| Параметр | Значение |
|
||||
|---|---:|
|
||||
| `w_q2g` | 0.6 |
|
||||
| `w_g2q` | 0.4 |
|
||||
| `tau_init` | 0.07 |
|
||||
| temperature | learnable, bounded |
|
||||
| label smoothing | 0.1 |
|
||||
| sampler | mutually exclusive для снижения false negatives |
|
||||
|
||||
Hard-negative strategy должна быть общей для всех вариантов. Нельзя включить memory bank только для одного fusion family в primary comparison.
|
||||
|
||||
## 5. Baselines
|
||||
|
||||
| ID | Конфигурация | Назначение |
|
||||
|---|---|---|
|
||||
| B0 | StripNet RGB-only | обязательная точка отсчёта |
|
||||
| B1 | Late concat pooled auxiliary embeddings | простой multimodal baseline |
|
||||
| B2 | Static additive residual | контроль против dynamic fusion |
|
||||
| B3 | Multi-FiLM + additive merge | сильный общий baseline |
|
||||
| A-primary | Condition-aware | трек Павленко |
|
||||
| B-primary | Token/bottleneck | трек Близно |
|
||||
| C-primary | Role-aware | трек Мороза |
|
||||
|
||||
## 6. Общие аблации
|
||||
|
||||
Оценочные аблации выполняются без изменения основного training protocol.
|
||||
|
||||
| ID | Вариант |
|
||||
|---|---|
|
||||
| G-AB1 | full multimodal |
|
||||
| G-AB2 | без text на evaluation |
|
||||
| G-AB3 | без segmentation на evaluation |
|
||||
| G-AB4 | без geometry на evaluation |
|
||||
| G-AB5 | RGB + text |
|
||||
| G-AB6 | RGB + segmentation |
|
||||
| G-AB7 | RGB + geometry |
|
||||
| G-AB8 | late-only fusion |
|
||||
| G-AB9 | multi-stage fusion |
|
||||
| G-AB10 | frozen StripNet |
|
||||
| G-AB11 | StripNet + одинаковая Conv-MONA adaptation |
|
||||
| G-AB12 | shared vs view-specific auxiliary projectors |
|
||||
|
||||
Стохастическое отключение входных модальностей в training loop не входит в protocol.
|
||||
|
||||
## 7. Primary metrics
|
||||
|
||||
| Группа | Метрики |
|
||||
|---|---|
|
||||
| Retrieval | R@1, R@5, R@10, MRR, AP |
|
||||
| Directions | UAV-to-satellite и satellite-to-UAV |
|
||||
| Generalization | cross-area primary, same-area sanity |
|
||||
| Improvement | delta к B0 по каждому seed и mean delta |
|
||||
| Stability | mean, std, 95% bootstrap CI |
|
||||
| Efficiency | params, trainable params, peak VRAM, latency, throughput |
|
||||
| Fusion health | contribution, gate/attention entropy, descriptor variance |
|
||||
|
||||
## 8. Diagnostic metrics
|
||||
|
||||
- L2 norm descriptor.
|
||||
- Per-dimension descriptor standard deviation.
|
||||
- Cosine similarity между RGB-only и fused descriptor.
|
||||
- Gradient norm по modality projectors и fusion core.
|
||||
- Contribution каждого auxiliary path.
|
||||
- Attention mass или gate statistics по модальностям.
|
||||
- CKA/cosine redundancy между modality representations.
|
||||
- Доля NaN/Inf и invalid auxiliary pixels.
|
||||
|
||||
## 9. Seeds
|
||||
|
||||
| Фаза | Seeds |
|
||||
|---|---|
|
||||
| Smoke | 42 |
|
||||
| Development | 42 |
|
||||
| Final primary comparison | 42, 123, 456 |
|
||||
| Expensive secondary ablations | 42, если primary effect подтверждён |
|
||||
|
||||
## 10. Run artifacts
|
||||
|
||||
Каждый run сохраняет:
|
||||
|
||||
```text
|
||||
out/<experiment_id>/
|
||||
├── config/ # копии всех gin-файлов
|
||||
├── manifest.json # commit, seed, paths, hardware, timestamp
|
||||
├── metrics.csv # epoch metrics
|
||||
├── eval_report.json # final retrieval metrics
|
||||
├── diagnostics.json # gates, attention, norms, contributions
|
||||
├── model_best.safetensors # если нужен checkpoint
|
||||
├── model_last.safetensors
|
||||
└── logs/
|
||||
```
|
||||
|
||||
## 11. Предварительные decision rules
|
||||
|
||||
Fusion candidate допускается к финальным трём seed, если:
|
||||
|
||||
1. Не хуже B0 более чем на 0.5 п.п. R@1 в smoke/full seed 42.
|
||||
2. Не содержит NaN/Inf.
|
||||
3. Дополнительный peak VRAM не превышает 6 GB относительно B0 на согласованном batch.
|
||||
4. Latency не превышает B0 более чем в 2 раза без доказанного accuracy gain.
|
||||
5. Хотя бы одна дополнительная модальность имеет измеримый положительный contribution.
|
||||
|
||||
Primary promotion:
|
||||
|
||||
- mean cross-area R@1 выше B0 минимум на 1.0 п.п.;
|
||||
- улучшение положительно минимум на двух из трёх seed;
|
||||
- 95% bootstrap CI для парного delta не пересекает существенное отрицательное значение;
|
||||
- нет критического modality collapse;
|
||||
- compute укладывается в RTX 4090 24 GB.
|
||||
|
||||
Если thresholds не достигнуты, команда выбирает самый информативный отрицательный результат и формулирует, какая fusion hypothesis опровергнута.
|
||||
|
||||
## 12. Внешние ориентиры (не targets)
|
||||
|
||||
Из предыдущих экспериментов на GTA-UAV (другой протокол: полное обучение backbone, 100 epochs, batch 64, без auxiliary модальностей):
|
||||
|
||||
| Конфигурация | R@1 | Комментарий |
|
||||
|---|---:|---|
|
||||
| StripNet, полный fine-tuning + ImageNet pretrain | ~0.775 | верхний ориентир возможностей backbone на этих данных |
|
||||
| Лучший компактный экспериментальный backbone | ~0.665 | средний диапазон |
|
||||
|
||||
В этом проекте StripNet заморожен (адаптация только Conv-MONA stages 3-4), поэтому B0 будет заметно ниже верхнего ориентира — это ожидаемо и нормально. Ориентиры используются только для sanity-контроля порядка величин: B0 с R@1 около нуля или выше 0.8 — признак ошибки протокола, а не выдающегося результата.
|
||||
|
||||
## 13. Поведение при missing modality (оценочное требование)
|
||||
|
||||
Для каждого primary-варианта в финальном отчёте обязательна таблица: descriptor при validity=0 для каждой auxiliary модальности по очереди (eval-time, без переобучения).
|
||||
|
||||
| Режим | Требование |
|
||||
|---|---|
|
||||
| full-modal | базовое качество варианта |
|
||||
| без text / без seg / без geometry (по одному) | descriptor конечен; деградация плавная, без обвала ниже B0 более чем на оговорённый командой порог |
|
||||
| только RGB (все aux отключены) | descriptor близок к RGB-якорю; cosine(fused, rgb_descriptor) фиксируется |
|
||||
|
||||
Это не modality-dropout-обучение, а проверка well-posedness архитектуры (см. `06_MERIDIAN_CONTEXT.md` §5); результат входит в decision table.
|
||||
Reference in New Issue
Block a user