forked from Pikaliov/fuze_task
П. 1.1. Конспект по пункту П. 1.2. Разбор personal_package, заметки, Evidence matrix (≥8 источников)
103 lines
12 KiB
Markdown
103 lines
12 KiB
Markdown
# FusionCore Personal
|
||
|
||
[[02_fusion_core_персональный]]
|
||
|
||
## B14_StripNet
|
||
|
||
^ead71b
|
||
|
||
### 3.1. Описание архитектуры
|
||
|
||
- **Общая структура:** Strip R-CNN базируется на фреймворке O-RCNN. Она включает новый бэкбон (StripNet) и новую голову детектирования (Strip Head).
|
||
- **StripNet Backbone:** Состоит из базовых блоков, каждый из которых имеет strip-подблок и подблок feed-forward сети (FFN).
|
||
- **Strip Module:** Включает стандартную свертку `5×5` за которой следуют две последовательные полосовые свертки (горизонтальная и вертикальная, например, `1×19` и `19×1`) и point-wise свертка.
|
||
- **Strip Head:** Разделяет предсказание локализации и угла. Модуль локализации усилен полосовыми свертками для захвата дальнодействующих пространственных зависимостей, в то время как классификация и предсказание угла делят общие полносвязные (FC) слои.
|
||
### 3.2. Визуальные материалы из статьи
|
||
|
||
- **Figure 1:** Статистика датасета DOTA и падение точности существующих SOTA методов при увеличении соотношения сторон объектов. Показывает критичность проблемы.
|
||
- **Figure 3:** Структурное сравнение модуля авторов с LSKNet и PKINet. Демонстрирует, что Strip R-CNN использует последовательную (strip-sequential) парадигму, в то время как PKINet — параллельную (strip-parallel), что делает Strip R-CNN более легковесным.
|
||
- **Figure 4:** Структура базового блока Strip Module. Иллюстрирует поток данных через квадратную свертку, горизонтальную/вертикальную strip-свертки и умножение признаков.
|
||
- **Figure 5, 6, 7:** Архитектура Strip Head и тепловые карты пространственной чувствительности. Показывают, что предсказание угла фокусируется на границах объекта, а классификация — на центре, что оправдывает их частичное слияние.
|
||
### 3.3. Математическая формализация
|
||
|
||
- **Feature Reweighing (Внимание):**
|
||
`Y^=X⋅Y` _Комментарий:_ `X` — входной тензор, `Y` — выход point-wise свертки, действующий как карта весов внимания (element-wise умножение).
|
||
- **Loss Function:**
|
||
`L=Lc+Ll+La`
|
||
_Комментарий:_ Сумма кросс-энтропии для классификации (`Lc`) и Smooth L1 для локализации (`Ll`) и угла (`La`). Формула стандартна для rotated bounding box детекторов
|
||
### 3.4. Ключевые технические решения
|
||
|
||
- **Последовательные свертки:** Использование горизонтальной свертки перед вертикальной (или наоборот) работает одинаково хорошо и не требует сложных механизмов слияния, присущих параллельным ветвям.
|
||
- **Ядро размером 19:** Экспериментально установлено, что размер ядра 19 во всех стадиях бэкбона дает оптимальный результат для вытянутых объектов.
|
||
|
||
### ПРЕИМУЩЕСТВА ПОДХОДА
|
||
|
||
- **Вычислительная эффективность:** Отказ от параллельных heavy-сверток в пользу последовательных strip-сверток снижает FLOPs и количество параметров, обходя конкурентов (PKINet).
|
||
- **Архитектурная элегантность:** Отсутствие сложных модулей внимания. Векторное внимание реализуется простой point-wise сверткой.
|
||
- **Универсальность:** Замена классического detection head на Strip Head повышает метрики даже в старых фреймворках.
|
||
|
||
## F14_WeatherPrompt
|
||
|
||
^e9be0c
|
||
|
||
### 1. Контекст
|
||
|
||
F14 решает критическую проблему Visual Geo-Localization: катастрофическое падение точности при смене освещения (день/ночь) или погоды (лето/зима). Модель использует механизм FiLM (Feature-wise Linear Modulation) для модуляции визуальных признаков на основе текстового промпта (например: "Снимок сделан глубокой ночью в тумане").
|
||
### 2. Значимость для MERIDIAN
|
||
|
||
Это прямой источник архитектурного паттерна Multi-FiLM-Fusion для Teacher-ветки. Понимание, как именно генерируются параметры `γ` и `β`, необходимо для правильной балансировки 5 модальностей (RGB, Depth, Edges, Seg, Text).
|
||
|
||
==В F14 WeatherPrompt параметры масштаба (γ) и сдвига (β) генерируются динамически из текстового эмбеддинга (text_embed):==
|
||
|
||
- **text_embed:** Вектор размерности 768 (выход CLIP/BERT).
|
||
- **Генераторы fγ, fβ:** Это **НЕ линейные слои**, а **2-Layer MLPs** (Многослойные перцептроны).
|
||
- `Linear(768, 256) -> GELU -> Dropout(0.1) -> Linear(256, C)`
|
||
- Где `C` — количество каналов в Feature Map на конкретном уровне визуальной сети (например, C=1024C=1024 для DINOv3).
|
||
- _Особенность инициализации:_ Последний слой в `fγ` инициализируется нулями, а выход оборачивается в экспоненту: `γ=exp(fγ(text))`. Это гарантирует, что на старте обучения `γ=1.0 и β=0.0` (Identity mapping, не разрушающий pre-trained веса).
|
||
### 3. Размещение в пирамиде признаков (Feature Pyramid)
|
||
|
||
F14 доказывает, что применять FiLM ко всем слоям подряд — избыточно и ведет к over-fitting.
|
||
|
||
- **Early Layers (до Block 1/2):** Не модулируются. Они извлекают низкоуровневые края и градиенты, которые инвариантны к тексту.
|
||
- **Middle Layers (Blocks 2, 3):** Слегка модулируются.
|
||
- **Late Layers (Block 4 / Последние 3 блока Transformer):** Интенсивно модулируются. Именно здесь сеть принимает семантические решения ("Это снег или белая крыша?").
|
||
- **Вывод:** FiLM встраивается исключительно в последние 1/31/3 архитектуры Teacher'а.
|
||
### 4. Как работает Dynamic Adaptation?
|
||
|
||
Динамическая адаптация означает, что каналы визуальной сети перевзвешиваются в реальном времени:
|
||
|
||
1. При промпте _"Bright sunny day"_: γγ усиливает цветовые фильтры и текстурные детекторные каналы.
|
||
2. При промпте _"Midnight, low light"_: γγ обнуляет каналы, зависящие от цвета, и усиливает $edges$-каналы и угловые детекторы (которые работают даже при плохом освещении).
|
||
3. При промпте _"Snowy terrain"_: Сбрасывает детекторы травы/листьев.
|
||
|
||
### 5. ## Протокол обучения (Learning Rate и EMA)
|
||
|
||
Так как визуальный backbone загружен весами Foundation Model (DINOv2/v3), а `fγ,fβ` инициализируются с нуля, требуется **Two-Speed Learning Rate**:
|
||
|
||
- `LR_Backbone` = 1e-5 (или заморожен на ранних этапах).
|
||
- `LR_FiLM_MLP` = 1e-3 (в 100 раз больше!). Оптимизатору нужно быстро научиться генерировать правильные γ,β.
|
||
- **EMA (Exponential Moving Average):** Для всех весов визуальной сети используется momentum m=0.999, чтобы обучение FiLM-модуляторов не расшатало основную геометрию пространства признаков.
|
||
|
||
## 6. Сравнение с SSF (Scale and Shift Features, TPAMI)
|
||
|
||
- **SSF:** К каждому слою сети добавляются обучаемые векторы `γtask` и `βtask`. Они **статичны** для конкретной задачи (например, один набор для Semantic Seg, другой для Depth).
|
||
- **WeatherPrompt (FiLM):** Векторы `γ` и `β` генерируются **на лету** для каждого отдельного изображения в зависимости от текста.
|
||
- **Вердикт:** SSF великолепен для Transfer Learning (Task Adaptation), но FiLM — абсолютный победитель для **Data-driven / Context-aware** адаптации.
|
||
|
||
## 7. Расширение до 5-modal FiLM для MERIDIAN Teacher
|
||
|
||
В проекте MERIDIAN ветка Teacher (спутник) имеет доступ не только к RGB и Тексту, но и к Глубине (Depth), Границам (Edges) и Семантике (Seg). Как использовать формулы F14, чтобы слить 5 модальностей воедино?
|
||
|
||
**Решение: Концепт Privileged Context Vector (PCV)** Вместо того чтобы делать независимые FiLM слои для каждой модальности, мы сливаем все Privileged-данные в единый вектор, который управляет модуляцией главного ствола (RGB DINOv3):
|
||
|
||
1. Прогоняем Depth через легкую CNN-ветку →→ `Depth_Embed (256-d)`
|
||
2. Прогоняем Edges через легкую CNN-ветку →→ `Edge_Embed (256-d)`
|
||
3. Получаем текст из VLM →→ `Text_Embed (256-d)`
|
||
4. Конкатенируем: PCV=`[Depth_Embed,Edge_Embed,Text_Embed]PCV=[Depth_Embed,Edge_Embed,Text_Embed]` (размерность 768).
|
||
5. Подаем PCVPCV в `fγ,fβ` MLP-генераторы.
|
||
|
||
**Итоговое уравнение Multi-modal FiLM для MERIDIAN:**
|
||
|
||
![[Pasted image 20260625162506.png|697]]
|
||
|