split into chapters

This commit is contained in:
2026-04-01 13:36:34 +03:00
parent 2b137dfccc
commit 26f2fac07b
32 changed files with 369 additions and 294 deletions

View File

@@ -0,0 +1,19 @@
2.1 Постановка задачи возврата БПЛА в точку старта
В данной работе рассматривается задача автономного возврата беспилотного летательного аппарата в точку старта при отсутствии или потере сигналов спутниковой навигации (GPS/ГЛОНАСС) и любой другой внешней связи. Дрон оснащен:
бортовой камерой для получения изображений местности в реальном времени;
инерциальной навигационной системой, обеспечивающей измерения угловых скоростей и ускорений;
бортовым вычислителем, способным выполнять обработку изображений и управляющие вычисления.
В рамках настоящей работы предполагается только наличие бортовой камеры.
Исходные данные:
Циклический маршрут последовательность координат точек \{p_0,p_1,\ldots,p_n\}, где p_0=p_n (первая точка совпадает с последней);
Эталонная карта местности изображение или последовательность изображений вдоль траектории маршрута, полученная до начала полета (например, спутниковые снимки или предварительная загрузка участков карты);
Видеопоток в реальном времени последовательности кадров, получаемых бортовой камерой в процессе полета.
Задача: разработать алгоритм навигации, который корректирует угол и направление полета таким образом, чтобы пройти через каждую заданную точку маршрута \{p_1,p_2,\ldots,p_{n-1}\}, вернуться в исходную позицию p_o с наименьшей с наименьшей погрешностью в координатах и обеспечить устойчивость к различиям между эталонной картой и реальными изображениями.
Формально говоря, цель состоит в минимизации конечной ошибки позиционирования:
e_{final}=\left|\left|p_{actual}\left(T\right)-p_0\right|\right|,
Где p_{actual}\left(T\right) фактическое положение БПЛА в момент завершения возврата, p_0 исходная точка старта.
Дополнительным критерием точности может выступить минимизация средней накапливаемой ошибки на каждой точке:
s_{final}=\sum_{i=1}^{P}\left|\left|p_{actual}\left(i\right)-p_i\right|\right|,
где p_{actual}\left(i\right) фактическое положение БПЛА при прохождении через точку i, а p_i положение точки i, P - количество точек

View File

@@ -0,0 +1,5 @@
# 2.1 Формализация задачи возврата БПЛА в точку старта
## Содержание раздела
Описание формализации задачи находится в файле 2.1_formalization.md

View File

@@ -0,0 +1,39 @@
2.2 Базовое решение задачи
Обозначим последовательность изображений \{u_i\ |\ i\in[0..N]}, где N итоговое количество кадров, которое было получено во время всего полета. Пусть
I_i\left(x,y\right) интенсивность пикселя в позиции (y,\ x), где x\ \in[0..W-1] и y\ \in[0..W-1], W ширина кадра.
Матрица H_i матрица гомографии, которая описывает переход от кадра u_{i-1} к кадру u_i:
I_{i-1}\left(x,y\right)=I_i\left(x^\prime,y^\prime\right),
t\ast\left(\begin{matrix}x\prime\\y\prime\\1\\\end{matrix}\right)=H_i\times\left(\begin{matrix}x\\y\\1\\\end{matrix}\right)
Матрица гомографии (H) описывает проективное между двумя плоскостями и может быть представлена в следующем виде:
H=K_1\times R\times T\times{K_2}^{-1},
где K_1 и K_2 матрицы внутренних параметров камеры, R матрица поворотов, T матрица трансляции.
Матрицы K_1 и K_2 представляют собой матрицы внутренних параметров и обычно равны между собой (различаются центры изображений). Однако в случаях разного разрешения картинок они могут иметь разные параметры. В общем виде такая матрица представляется следующим образом:
K_i=\left(\begin{matrix}f&\gamma&c_x^i\\0&f&c_y^i\\0&0&1\\\end{matrix}\right),
Где f фокусное расстояние в пикселях, c_x и c_y координаты оптического центра камеры на плоскости изображения, \gamma коэффициент скоса, описывающий угол наклона пикселей (в рамках симуляции равен 0).
Матрицу R можно получить при помощи стандартной функции OpenCV decomposeHomographyMat, также эту матрицу можно вычислить самостоятельно, поскольку первые два столбца матрицы гомографии H инвариантны смещению.
Матрица R представляет собой следующий вид:
R=R_x\times R_y\times R_z
Где R_x,R_y,R_z матрицы вращения вокруг осей OX,\ OY,\ OZ соответственно.
Если известны угол рыскания \psi, тангажа \theta и крена \gamma, то эти матрицы вычисляются следующим образом:
R_x\left(\gamma\right)=\left(\begin{matrix}1&0&0\\0&cos\left(\gamma\right)&-sin\left(\gamma\right)\\0&sin\left(\gamma\right)&cos\left(\gamma\right)\\\end{matrix}\right),
R_y\left(\theta\right)=\left(\begin{matrix}cos\left(\theta\right)&0&sin\left(\theta\right)\\0&1&0\\-sin\left(\theta\right)&0&cos\left(\theta\right)\\\end{matrix}\right),
R_z\left(\psi\right)=\left(\begin{matrix}cos\left(\psi\right)&-sin\left(\psi\right)&0\\sin\left(\psi\right)&cos\left(\psi\right)&0\\0&0&1\\\end{matrix}\right),
Зная матрицу H,\ K_1, K_2,\ и R, можно получить матрицу T:
T=R^{-1}\times K_1^{-1}\times H\times K_2
л.в.что:T=R-1×K1-1×K1×R×T×K2-1×K2
Матрица трансляции имеет вид:
T=\lambda0λxf0λλyf00λz=λ *10xf01yf00z
Таким образом, можно получить смещение между кадрами, зная матрицы внутренних параметров камеры и матрицу гомографии.
Чтобы получить положение БПЛА в момент времени t, достаточно получить матрицу трансляции из произведения всех промежуточных матриц гомографии (обозначим за G_t) на префиксе кадров [0..t]:
G_t=\prod_{i=1}^{t}H_i=H_1\times H_2\times\ldots\times H_t

View File

@@ -0,0 +1,5 @@
# 2.2 Базовое решение задачи
## Содержание раздела
Описание базового решения находится в файле 2.2_base_solution.md

View File

@@ -0,0 +1,51 @@
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»

View File

@@ -0,0 +1,2 @@
2.3.2 Применение архитектуры сиамских близнецов для вычисления матрицы гомографии между двумя кадрами

View File

@@ -0,0 +1,3 @@
2.3.3 Применение архитектуры сиамских близнецов для вычисления матрицы гомографии между двумя кадрами

View File

@@ -0,0 +1,5 @@
2.3 Методы глубого обучения
Основным минусом базового решения является то, что любая его реализация предполагает накопление погрешности. В таком случае корректировка позиции может стать хорошим дополнением для снижения дрейфа.
Одной из проблем такого подхода является поиск необходимого эталонного снимка. Снимки могут совершаться в разное время суток, в разных годах, при неодинаковых условиях (ветер, туман, погода, сезон года), но иметь какие-то общие схожие паттерны. Классические способы решения сопоставления таких кадров работают крайне плохо, однако модели на основе нейронных сетей справляются с этой задачей куда лучше.

View File

@@ -0,0 +1,8 @@
# 2.3 Эталонные снимки
## Содержание раздела
| Подраздел | Название | Файл |
|-----------|----------|------|
| 2.3.1 | Применение архитектуры сиамских близнецов для сопоставления кадров из различных доменов | 2.3.1_siamese_match.md |
| 2.3.2 | Применение архитектуры сиамских близнецов для вычисления матрицы гомографии | 2.3.2_siamese_homography.md |

View File

@@ -0,0 +1,7 @@
2.4 Датасет

View File

@@ -0,0 +1,5 @@
# 2.4 Датасет
## Содержание раздела
Описание датасета находится в файле 2.4_dataset.md

View File

@@ -0,0 +1,2 @@
2.5 Обучение моделей глубокого обучения

View File

@@ -0,0 +1,5 @@
# 2.5 Обучение моделей глубокого обучения
## Содержание раздела
Описание обучения моделей находится в файле 2.5_training.md

View File

@@ -1,131 +0,0 @@
2.1 Постановка задачи возврата БПЛА в точку старта
В данной работе рассматривается задача автономного возврата беспилотного летательного аппарата в точку старта при отсутствии или потере сигналов спутниковой навигации (GPS/ГЛОНАСС) и любой другой внешней связи. Дрон оснащен:
бортовой камерой для получения изображений местности в реальном времени;
инерциальной навигационной системой, обеспечивающей измерения угловых скоростей и ускорений;
бортовым вычислителем, способным выполнять обработку изображений и управляющие вычисления.
В рамках настоящей работы предполагается только наличие бортовой камеры.
Исходные данные:
Циклический маршрут последовательность координат точек \{p_0,p_1,\ldots,p_n\}, где p_0=p_n (первая точка совпадает с последней);
Эталонная карта местности изображение или последовательность изображений вдоль траектории маршрута, полученная до начала полета (например, спутниковые снимки или предварительная загрузка участков карты);
Видеопоток в реальном времени последовательности кадров, получаемых бортовой камерой в процессе полета.
Задача: разработать алгоритм навигации, который корректирует угол и направление полета таким образом, чтобы пройти через каждую заданную точку маршрута \{p_1,p_2,\ldots,p_{n-1}\}, вернуться в исходную позицию p_o с наименьшей с наименьшей погрешностью в координатах и обеспечить устойчивость к различиям между эталонной картой и реальными изображениями.
Формально говоря, цель состоит в минимизации конечной ошибки позиционирования:
e_{final}=\left|\left|p_{actual}\left(T\right)-p_0\right|\right|,
Где p_{actual}\left(T\right) фактическое положение БПЛА в момент завершения возврата, p_0 исходная точка старта.
Дополнительным критерием точности может выступить минимизация средней накапливаемой ошибки на каждой точке:
s_{final}=\sum_{i=1}^{P}\left|\left|p_{actual}\left(i\right)-p_i\right|\right|,
где p_{actual}\left(i\right) фактическое положение БПЛА при прохождении через точку i, а p_i положение точки i, P - количество точек
2.2 Базовое решение задачи
Обозначим последовательность изображений \{u_i\ |\ i\in[0..N]}, где N итоговое количество кадров, которое было получено во время всего полета. Пусть
I_i\left(x,y\right) интенсивность пикселя в позиции (y,\ x), где x\ \in[0..W-1] и y\ \in[0..W-1], W ширина кадра.
Матрица H_i матрица гомографии, которая описывает переход от кадра u_{i-1} к кадру u_i:
I_{i-1}\left(x,y\right)=I_i\left(x^\prime,y^\prime\right),
t\ast\left(\begin{matrix}x\prime\\y\prime\\1\\\end{matrix}\right)=H_i\times\left(\begin{matrix}x\\y\\1\\\end{matrix}\right)
Матрица гомографии (H) описывает проективное между двумя плоскостями и может быть представлена в следующем виде:
H=K_1\times R\times T\times{K_2}^{-1},
где K_1 и K_2 матрицы внутренних параметров камеры, R матрица поворотов, T матрица трансляции.
Матрицы K_1 и K_2 представляют собой матрицы внутренних параметров и обычно равны между собой (различаются центры изображений). Однако в случаях разного разрешения картинок они могут иметь разные параметры. В общем виде такая матрица представляется следующим образом:
K_i=\left(\begin{matrix}f&\gamma&c_x^i\\0&f&c_y^i\\0&0&1\\\end{matrix}\right),
Где f фокусное расстояние в пикселях, c_x и c_y координаты оптического центра камеры на плоскости изображения, \gamma коэффициент скоса, описывающий угол наклона пикселей (в рамках симуляции равен 0).
Матрицу R можно получить при помощи стандартной функции OpenCV decomposeHomographyMat, также эту матрицу можно вычислить самостоятельно, поскольку первые два столбца матрицы гомографии H инвариантны смещению.
Матрица R представляет собой следующий вид:
R=R_x\times R_y\times R_z
Где R_x,R_y,R_z матрицы вращения вокруг осей OX,\ OY,\ OZ соответственно.
Если известны угол рыскания \psi, тангажа \theta и крена \gamma, то эти матрицы вычисляются следующим образом:
R_x\left(\gamma\right)=\left(\begin{matrix}1&0&0\\0&cos\left(\gamma\right)&-sin\left(\gamma\right)\\0&sin\left(\gamma\right)&cos\left(\gamma\right)\\\end{matrix}\right),
R_y\left(\theta\right)=\left(\begin{matrix}cos\left(\theta\right)&0&sin\left(\theta\right)\\0&1&0\\-sin\left(\theta\right)&0&cos\left(\theta\right)\\\end{matrix}\right),
R_z\left(\psi\right)=\left(\begin{matrix}cos\left(\psi\right)&-sin\left(\psi\right)&0\\sin\left(\psi\right)&cos\left(\psi\right)&0\\0&0&1\\\end{matrix}\right),
Зная матрицу H,\ K_1, K_2,\ и R, можно получить матрицу T:
T=R^{-1}\times K_1^{-1}\times H\times K_2
л.в.что:T=R-1×K1-1×K1×R×T×K2-1×K2
Матрица трансляции имеет вид:
T=\lambda0λxf0λλyf00λz=λ *10xf01yf00z
Таким образом, можно получить смещение между кадрами, зная матрицы внутренних параметров камеры и матрицу гомографии.
Чтобы получить положение БПЛА в момент времени t, достаточно получить матрицу трансляции из произведения всех промежуточных матриц гомографии (обозначим за G_t) на префиксе кадров [0..t]:
G_t=\prod_{i=1}^{t}H_i=H_1\times H_2\times\ldots\times H_t
2.3 Эталонные снимки
Основным минусом базового решения является то, что любая его реализация предполагает накопление погрешности. В таком случае корректировка позиции может стать хорошим дополнением для снижения дрейфа.
Одной из проблем такого подхода является поиск необходимого эталонного снимка. Снимки могут совершаться в разное время суток, в разных годах, при неодинаковых условиях (ветер, туман, погода, сезон года), но иметь какие-то общие схожие паттерны. Классические способы решения сопоставления таких кадров работают крайне плохо, однако модели на основе нейронных сетей справляются с этой задачей куда лучше.
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»
2.3.2 Применение архитектуры сиамских близнецов для вычисления матрицы гомографии между двумя кадрами
2.3.3 Применение архитектуры сиамских близнецов для вычисления матрицы гомографии между двумя кадрами
2.4 Датасет
2.5 Обучение моделей глубокого обучения

View File

@@ -1,4 +1,13 @@
2.1 Формализация задачи возврата БПЛА в точку старта
2.2 Базовое решение задачи
2.3 Эталонные снимки
2.3.1 Применение архитектуры сиамских близнецов для сопоставления кадров из различных доменов
# Глава 2. Постановка задачи и выбор методов решения
## Содержание
| Раздел | Название | Путь |
|--------|----------|------|
| 2.1 | Формализация задачи возврата БПЛА в точку старта | 2.1_formalization/ |
| 2.2 | Базовое решение задачи | 2.2_base_solution/ |
| 2.3 | Методы глубокого обучения | 2.3_deep_learning/ |
| 2.3.1 | Сиамские близнецы для сопоставления кадров из различных доменов | 2.3_deep_learning/2.3.1_siamese_match.md |
| 2.3.2 | Сиамские близнецы для вычисления матрицы гомографии | 2.3_deep_learning/2.3.2_siamese_homography.md |
| 2.4 | Датасет | 2.4_dataset/ |
| 2.5 | Обучение моделей глубокого обучения | 2.5_training/ |

View File

@@ -1,2 +1,2 @@
- Оглавление в readme.md оформить в виде таблицы
- распарсить _temp_full_content.md по папкам (потому что там будет большой подпункт, а внутри уже маленькие подпункты, поэтому их уже файлами). То есть ещё папка, а потом файлы уже. Создай readme.md, оформи их.
- [x] Оглавление в readme.md оформить в виде таблицы
- [x] распарсить _temp_full_content.md по папкам и файлам