# Руководство по переиспользованию существующих проектов ## 1. Проект генерации модальностей Локальный путь: ```text C:\Users\Lisadminipc\Documents\code\depth_edges_annotate_worlduav ``` Remote: ```text https://git.lissad.keenetic.name/Pikaliov/depth_edges_annotate_worlduav ``` ### Использовать | Файл | Что взять | |---|---| | `scripts/run_gta_uav.py` | GTA-UAV layout, source mapping satellite/UAV, параметры annotation run | | `scripts/seg_classes.py` | канонические 17 segmentation classes | | `src/augmentor/io_utils.py` | SafeTensors layout и безопасная запись | | `src/augmentor/inference.py` | normalization и post-processing модальностей | | `in/config_files/*.gin` | hardware, input size, model и segmentation settings | | `README.md` | формат выходов и pipeline stages | ### Не переносить автоматически - Хардкодированные Linux paths. - CLI на `argparse` из `run_gta_uav.py`; в новом проекте параметры задаются gin. - World-UAV-specific subset logic, если она не нужна GTA-UAV. - Edge modality как обязательный fusion input: в текущей постановке она не входит в full-modal contract. ### Ожидаемый annotation output На одно изображение рекомендуется SafeTensors с ключами: | Key | Dtype | Shape | Использование здесь | |---|---|---|---| | `depth` | float16 | `[1,H,W]` | UAV geometry | | `segm` | uint8 | `[1,H,W]` | обе ветки | | `chm` | float16 | `[1,H,W]` | satellite geometry | | `edge` | float16 | `[1,H,W]` | не входит в primary input | ## 2. Проект StripNet и GTA-UAV training Локальный путь: ```text C:\Users\Lisadminipc\Documents\code\caption-test ``` Remote: ```text https://git.lissad.keenetic.name/Pikaliov/caption-test ``` ### Использовать | Файл | Что взять | |---|---| | `src/models/stripnet/model.py` | StripNet-small stages и feature maps | | `src/models/stripnet_encoder.py` | GAP и projection 512->1024 | | `src/models/stripnet/conv_mona.py` | optional common adaptation stages 3-4 | | `src/datasets/gtauav_dataset.py` | pair parsing, captions, multi-match ground truth | | `src/datasets/mutually_exclusive_sampler.py` | защита от false negatives | | `src/losses/multi_infonce.py` | symmetric retrieval objective | | `src/training/train_gtauav.py` | training utilities, logging, checkpoints | | `src/eval/evaluate.py` | retrieval evaluation | | `conf/gtauav_balanced_stripnet.gin` | исходный StripNet config | ### Требуемые изменения 1. Расширить dataset output auxiliary tensors и validity masks. 2. Отделить image encoder от fusion family через общий API. 3. Сделать fusion variant выбираемым через gin. 4. Унифицировать diagnostics. 5. Убрать хардкодированные пути из training config. 6. Проверить multi-match evaluation после переноса. 7. Сохранить один StripNet instance shared для обеих view-веток. ## 2.1. Что уже скопировано в vendor_reference Для чтения без доступа к исходным репозиториям в `vendor_reference/` лежат снимки: StripNet (`model.py`, `stripnet_encoder.py`, `conv_mona.py`), GTA-UAV dataset + `mutually_exclusive_sampler.py`, losses (`multi_infonce.py`, `weighted_infonce.py`, `hard_negatives.py`), `train_gtauav.py`, `trackers.py`, `profiling.py`, `evaluate.py`, `make_split.py`, `filter_segmentation.py`, конфиги gin, а из annotation-проекта — `run_gta_uav.py`, `seg_classes.py`, `io_utils.py`, `inference.py`, `models.py`. Снимки предназначены для аудита; рабочий перенос выполняется из живых репозиториев по правилам ниже. Снапшоты split (`meta/train_80.json`, `test_20.json`, `seg_filter.json`) в vendor_reference сознательно не копировались (30+ MB данных): брать из `caption-test/meta/`. ## 3. Правило переноса кода 1. Сначала написать тест, фиксирующий поведение исходного компонента. 2. Перенести минимальный необходимый модуль. 3. Указать source project и исходный файл в module docstring. 4. Удалить неиспользуемые зависимости только после smoke comparison. 5. Не редактировать `vendor_reference/`; это контрольный снимок. ## 4. Минимальная проверка окружения ```powershell Test-Path 'C:\Users\Lisadminipc\Documents\code\caption-test\src\models\stripnet_encoder.py' Test-Path 'C:\Users\Lisadminipc\Documents\code\depth_edges_annotate_worlduav\scripts\run_gta_uav.py' ``` Дополнительно команда фиксирует фактические dataset paths в `reports/joint/ENVIRONMENT_AUDIT.md`, не добавляя их в исходный код.