# Карта проекта caption-test ## 1. Источник ```text C:\Users\Lisadminipc\Documents\code\caption-test ``` Снимки ключевых файлов находятся в `vendor_reference/caption_test/`. ## 2. StripNet | Файл | Назначение | Действие | |---|---|---| | `src/models/stripnet/model.py` | 4-stage StripNet-small | переиспользовать backbone | | `src/models/stripnet_encoder.py` | GAP + Linear 512->1024 | использовать как RGB baseline wrapper | | `src/models/stripnet/conv_mona.py` | adapters stages 3-4 | применять одинаково во всех сравнениях | | `conf/gtauav_balanced_stripnet.gin` | reference config | перенести параметры, убрать hardcoded paths | Ожидаемые stage outputs: ```text stage 1: [B, 64, 64, 64] stage 2: [B, 128, 32, 32] stage 3: [B, 320, 16, 16] stage 4: [B, 512, 8, 8] ``` Текущий wrapper возвращает только stage 4 descriptor. Для multi-stage fusion нужен безопасный интерфейс к `forward_features`, не дублирующий backbone forward. ## 3. GTA-UAV data | Файл | Полезная часть | |---|---| | `src/datasets/gtauav_dataset.py` | pair JSON, captions L1/L2/L3, satellite candidates | | `src/datasets/mutually_exclusive_sampler.py` | исключение false negatives внутри batch | | `meta/train_80.json` | train split snapshot | | `meta/test_20.json` | test split snapshot | | `meta/seg_filter.json` | segmentation-based filter | Что добавить: 1. Annotation root. 2. SafeTensors loading. 3. CHM для satellite, depth для UAV. 4. Segmentation для обеих view. 5. Validity masks. 6. Auxiliary tensor validation. ## 4. Training | Файл | Переиспользовать | |---|---| | `src/training/train_gtauav.py` | seed, optimizer, scheduler, tracking, checkpoint patterns | | `src/training/trackers.py` | CSV/TensorBoard/W&B | | `src/training/profiling.py` | profiler и model summary | | `src/losses/multi_infonce.py` | symmetric objective | | `src/losses/weighted_infonce.py` | только если одинаково для всех variants | Текущий training file содержит исторические model options и hardcoded paths. В новом проекте отделить: - model construction; - fusion registry; - data config; - training loop; - evaluation; - run manifest. ## 5. Evaluation Критическая проверка: одна UAV query может иметь несколько valid satellite matches. Нельзя считать единственным positive только diagonal pair текущего batch. Сохранить per-query: ```text query_id rank_first_positive top_k_ids success_at_1 success_at_5 success_at_10 ``` Это требуется для paired statistical tests между fusion variants. ## 6. Residual fusion reference `src/models/residual_fusions.py` содержит простые gate/residual baselines. Использовать как B1-B3 reference, но перед переносом: - проверить все ветви `gate_type`; - добавить strict shape validation; - добавить explicit diagnostics; - убрать неиспользуемые варианты; - обеспечить identity behaviour; - покрыть tests. ## 7. Рекомендуемый порядок переноса 1. StripNet model и wrapper. 2. Dataset pair semantics. 3. Evaluation. 4. RGB-only training smoke. 5. SafeTensors extension. 6. Common fusion API. 7. Три fusion variants.