Files
autopilot/dissertation/chapter_2/2.3_deep_learning/2.3.1_siamese_match.md
2026-04-01 13:36:34 +03:00

6.5 KiB
Raw Blame History

2.3.1 Применение архитектуры сиамских близнецов для сопоставления кадров из различных доменов

Абстрактно, сиамские близнецы представляют собой следующую архитектуру (рисунок 1): На вход подаются два или более объекта с одинаковой сигнатурой. Каждая входная информация проходит одинаковый пайплайн обработки (получение признаков при помощи CNN). Полученные наборы признаков объединяются в вектор (1\times M). Голова модели представляет собой полносвязную нейронную сеть.

Рисунок 1 Абстрактная архитектура сиамских близнецов

В качестве входной информации выступят два кадра: текущий снимок видеокамеры и эталонный снимок, для которого точно известна позиция. Выходная информация будет представлять собой вещественное число от 0 до 1 степень схожести двух картинок (Рисунок 2).

Рисунок 2 Интерфейс алгоритма (входные и выходные данные)

На базе такой архитектуры реализована модель «SiaN-Similarity» с использованием фреймворка PyTorch и включает общий скелет на базе предобученной модели «ResNet18» и голову сравнения (рисунок 3). На вход подаются два изображения размером \left(B,3,256,256\right), где B размер пакета данных (batch). Эти изображения представляют собой текущий кадр («Image 1») и кандидат-эталон «Image 2». Извлеченные при помощи «ResNet18» признаки f_1 и f_2 объединяются в вектор [f_1,f_2,f1f2,f1*f2] размером \left(B,2048\right), так как каждый из векторов f_1 и f_2 имеет размер (B,\ 256). Все это проходит через многослойный перцептрон (MLP), где выход вероятность схожести картинок (рисунок 3). Обучение модели проводилось на собственном датасете «ya_go_maps» - собственный набор, состоящий из 327 пар изображений разных доменов (261 тренировочных и 66 валидационных) с бинарными метками (одинаковы или разный домен). Датасет сформирован на основе снимков из различных онлайн-карт («Яндекс.Карты» и «Google Maps»). Для обучения использовалась функция потерь Binary Cross Entropy Loss (BCELoss), которая идеально подходит для бинарной классификации схожести изображений: l_n=-\left(y_nlog\left(x_n\right)+\left(1-y_n\right)log\left(1-x_n\right)\right), где x_n предсказанная вероятность, y_n истинная метка (1 для одинаковых пар снимков, 0 для разных). Средняя потеря по батчу вычисляется как \frac{1}{N}\sum_{n}l_n BCELoss выбрана из-за совместимости с сигмоидным выходом и способности эффективно различать градиенты для вероятностей, что отлично подходит для задач сопоставления изображений с доменным сдвигом.

Рисунок 3 Архитектура модели «SiaN-Similarity»

Платформа обучения «Kaggle» с видеокартой «Tesla P100». Весь процесс обучения занял 24 минуты и остановился на 56 эпохе (ранняя остановка). Train Loss снизилась до 0.27 и монотонно убывала на протяжении всех эпох (за небольшими исключениями. После ~30 эпохи модель начала переобучаться и сработала ранняя остановка (early stopping). Лучшая Val Loss 0.2929 (эпоха 36) при Val Accuracy 0.90. Однако лучшая точность достигнута на последней эпохе 0.9630, правда функция потерь в том случае слишком высокая и слишком низкий recall, что критично для дальних полетов, ведь высок риск еще большего накопления ошибок.

Рисунок 4 Графики обучения «SiaN-Similiarity»

Модель демонстрирует консервативный характер: высокий recall минимизирует пропуски истинных совпадений эталонных кадров (false negatives), что критично для коррекции траектории БПЛА. Низкая объясняется доменным сдвигом и малым размером датасета модель склонна классифицировать неоднозначные пары как одинаковые. Это приемлемо для навигации, где false positives приводят лишь к проверке дополнительных кандидатов, а false negatives могут вызвать потерю позиции (рисунок 5).

Рисунок 5 Матрица ошибок «SiaN-Similarity»

На рисунке 6 и 7 показаны примеры верных предсказании модели и неверных соответственно.

Рисунок 6 Верно угаданные сэмплы «SiaN-Similarity»

Рисунок 7 Неверно угаданные сэмплы «SiaN-Similiarity»