论文笔记:ASLFeat: Изучение локальных признаков точной формы и локализации

本文是基于 D2-Net 的进一步改进,主要创新点如下:

1) Использование Deformable Convolution для плотной оценки преобразований и извлечения признаков.
2) Использование пирамиды признаков для адаптации пространственного разрешения и использования деталей низкого уровня для точного определения ключевых точек.

1 Методы

1.1 Предварительные условия

Дизайн сети в данной работе основан на двух предыдущих исследованиях: DCN и D2-Net. Сначала рассмотрим основные идеи этих работ:

Деформируемые сверточные сети (DCN)

Деформируемая свертка (Deformable Convolutional Networks, DCN) предназначена для изучения динамического рецептивного поля. Для традиционной свертки формула выглядит следующим образом:

\begin{equation}\mathbf{y}(\mathbf{p})=\sum_{\mathbf{p}_{n} \in \mathcal{R}} \mathbf{w}\left(\mathbf{p}_{n}\right) \cdot \mathbf{x}\left(\mathbf{p}+\mathbf{p}_{n}\right)\end{equation}
где \mathbf{p} представляет координаты центральной точки свертки, \mathbf{p}_{n} представляет смещение в пределах области свертки \mathcal{R}, а \mathbf{x}(\cdot) обозначает значение пикселя в этой точке. В DCN к этому добавляется предсказание смещения \Delta p и вес признака \Delta m:

\begin{equation}\mathbf{y}(\mathbf{p})=\sum_{\mathbf{p}_{n} \in \mathcal{R}} \mathbf{w}\left(\mathbf{p}_{n}\right) \cdot \mathbf{x}\left(\mathbf{p}+\mathbf{p}_{n}+\Delta \mathbf{p}_{n}\right) \cdot \Delta \mathbf{m}_{n}\end{equation}
Поскольку \Delta p обычно является дробным числом, для реализации используется метод нелинейной интерполяции.

D2-Net

Основная идея D2-Net заключается в объединении дескриптора и детектора в одно целое, describe-and-detect. Для получения локальных дескрипторов используется L2-норма, а для получения детектора выполняется следующее вычисление на y:

Вычисление локального score:

\begin{equation}\alpha_{i j}^{c}=\frac{\exp \left(\mathbf{y}_{i j}^{c}\right)}{\sum_{\left(i^{\prime}, j^{\prime}\right) \in \mathcal{N}(i, j)} \exp \mathbf{y}_{i^{\prime} j^{\prime}}^{c}}\end{equation}
где \mathcal{N}(i, j) представляет область соседних пикселей, например, для свертки 3 \times 3 это 9 соседних пикселей.

Вычисление channel-wise-score

\begin{equation}\beta_{i j}^{c}=\mathbf{y}_{i j}^{c} / \max _{t} \mathbf{y}_{i j}^{t}\end{equation}
Окончательный score детектора получается путем взятия максимума из двух значений:

\begin{equation}s_{i j}=\max _{t}\left(\alpha_{i j}^{c} \beta_{i j}^{c}\right)\end{equation}

На основе этого в данной работе предложены дальнейшие улучшения.

1.2 DCN с геометрическими ограничениями

Авторы считают, что исходная версия DCN имеет слишком высокую степень свободы, что может привести к предсказанию произвольных деформаций. Однако для задачи визуальной локализации деформации ограничены и имеют лишь несколько степеней свободы, обычно это 1) подобие, 2) аффинное преобразование и 3) гомография:

Таким образом, традиционные DCN обучаются на несущественных параметрах и не могут гарантировать выполнение геометрических ограничений. Для этого авторы внесли улучшения с использованием геометрических ограничений.

Аффинно-ограниченные DCN

Обычно аффинное преобразование, включающее вращение и масштабирование, выглядит следующим образом:

\begin{equation}\mathbf{S}=\lambda R(\theta)=\lambda\left(\begin{array}{cc}\cos (\theta) & \sin (\theta) \\-\sin (\theta) & \cos (\theta)\end{array}\right)\end{equation}
В некоторых статьях, таких как AffNet, также вводится коэффициент изгиба. В данной работе аффинное преобразование определяется следующим образом:

\begin{equation}\begin{aligned}\mathbf{A} &=\mathbf{S} A^{\prime}=\lambda R(\theta) A^{\prime} \\&=\lambda\left(\begin{array}{cc}\cos (\theta) & \sin (\theta) \\-\sin (\theta) & \cos (\theta)\end{array}\right)\left(\begin{array}{ll}a_{11}^{\prime} & 0 \\a_{21}^{\prime} & a_{22}^{\prime}\end{array}\right)\end{aligned}\end{equation}

Гомографически-ограниченные DCN

Гомография обычно решается с помощью четырех пар точек. В данной работе, по аналогии с работой «Unsupervised deep homography», используется дифференцируемый линейный решатель для нахождения матрицы H. Обычно линейное уравнение определяется как: \mathbf{M h}=\mathbf{0}, где \mathbf{M} \in \mathbb{R}^{8 \times 9}. Здесь \mathbf{h} — это 9-мерный вектор, представляющий 9 параметров матрицы \mathbf{H}, с тремя ограничениями: \mathbf{H}_{33}=1, \mathbf{H}_{31}=\mathbf{H}_{32}=-. Таким образом, фактически остается 6 параметров. Линейное уравнение переписывается как: \hat{\mathbf{M}}_{(i)} \hat{\mathbf{h}}=\hat{\mathbf{b}}_{(i)}, где \hat{\mathbf{M}}_{(i)} \in \mathbb{R}^{2 \times 6}, и для каждой пары соответствующих точек (u_i, v_i) и (u_i', v_i') выполняется:

\begin{equation}\hat{\mathbf{M}}_{(i)}=\left[\begin{array}{cccccc}0 & 0 & -u_{i} & -v_{i} & v_{i}^{\prime} u_{i} & v_{i}^{\prime} v_{i} \\u_{i} & v_{i} & 0 & 0 & -u_{i}^{\prime} u_{i} & -u_{i}^{\prime} v_{i}\end{array}\right]\end{equation}

и:

\begin{equation}\hat{\mathbf{b}}_{(i)}=\left[-v_{i}^{\prime}, u_{i}^{\prime}\right]^{T} \in \mathbb{R}^{2 \times 1}\end{equation}

Окончательное линейное уравнение выглядит следующим образом:

\begin{equation}\hat{\mathbf{M}} \hat{\mathbf{h}}=\hat{\mathbf{b}}\end{equation}

Используя дифференцируемый линейный решатель (tf.matrix solve), можно найти \mathbf{h}.

На практике мы используем {(−1, −1),(1, −1),(1, 1),(−1, 1)} четыре смещения и умножаем их на \mathbf{H}, чтобы получить новые смещения.

Определив все вышеуказанные геометрические преобразования, окончательное смещение с геометрическими ограничениями вычисляется по следующей формуле:

\begin{equation}\triangle \mathbf{p}_{n}=\mathbf{T} \mathbf{p}_{n}-\mathbf{p}_{n}, \text { где } \mathbf{p}_{n} \in \mathcal{R}\end{equation}

1.3 Избирательное и точное обнаружение ключевых точек

Оценка пиков ключевых точек

В D2-Net score детектора получается за счет совместного использования пространственных и channel-wise откликов. В вычислении channel-wise-score используется ratio-to-max, что может ослабить связь с фактическим распределением по каналам. На основе этого авторы внесли следующие улучшения в два score (основная цель — использовать пиковые значения в качестве стандарта для оценки детектора):

\begin{equation}\beta_{i j}^{c}=\operatorname{softplus}\left(\mathbf{y}_{i j}^{c}-\frac{1}{C} \sum_{t} \mathbf{y}_{i j}^{t}\right)\end{equation}

Соответственно:

\begin{equation}\alpha_{i j}^{c}=\operatorname{softplus}\left(\mathbf{y}_{i j}^{c}-\frac{1}{|\mathcal{N}(i, j)|} \sum_{\left(i^{\prime}, j^{\prime}\right) \in \mathcal{N}(i, j)} \mathbf{y}_{i^{\prime} j^{\prime}}^{c}\right)\end{equation}

Функция активации softplus выглядит следующим образом:

\begin{equation}f(x)=\ln \left(1+e^{x}\right)\end{equation}

Многоуровневое обнаружение ключевых точек (MulDet)

Точность определения ключевых точек в D2-Net недостаточна, так как детекция выполняется на основе признаков с низким разрешением. Существуют различные методы восстановления пространственного разрешения (как показано на рисунке ниже), например, через обучение дополнительного декодера признаков или использование расширенной свертки. Однако эти методы либо увеличивают количество обучаемых параметров, либо требуют значительных ресурсов GPU или вычислительных мощностей.

Авторы предложили простое и эффективное решение, не требующее дополнительных обучаемых весов, используя встроенные пирамидальные уровни признаков сверточной сети и комбинируя детекцию с нескольких уровней признаков, то есть метод многоуровневого масштабного слияния.

\begin{equation}\hat{\mathbf{s}}=\frac{1}{\sum_{l} w_{l}} \sum_{l} w_{l} \mathbf{s}^{(l)}\end{equation}

Окончательный score вычисляется путем взвешенного суммирования score на одинаковых позициях на разных уровнях.

1.4 Обучающая структура

Архитектура сети

Окончательный дизайн сети показан на рисунке ниже:

Как и в VGG, на каждом уровне используются два сверточных слоя, а на последнем уровне — три деформируемых свертки (conv6, conv7 и conv8). В части MulDet используются три уровня признаков: conv1, conv3 и conv8.

В формуле 14 w_{i}=1,2,3, а в формуле 3 \mathcal{N}(i, j)=3,2,1.

Дизайн функции потерь

Пусть \mathcal{C} представляет собой набор соответствующих ключевых точек на изображениях (I, I^{\prime}). Как и в D2-Net, функция потерь определяется следующим образом:

\begin{equation}\mathcal{L}\left(I, I^{\prime}\right)=\frac{1}{|\mathcal{C}|} \sum_{c \in \mathcal{C}} \frac{\hat{s}_{c} \hat{s}_{c}^{\prime}}{\sum_{q \in \mathcal{C}} \hat{s}_{q} \hat{s}_{q}^{\prime}} \mathcal{M}\left(\mathbf{f}_{c}, \mathbf{f}_{c}^{\prime}\right)\end{equation}

где \hat{S}_{k} и \hat{S}_{k}^{\prime} представляют собой score детектора для I и I^{\prime}, соответственно, \mathbf{f}_{k} и \mathbf{f}_{k}^{\prime} — это дескрипторы, а \mathcal{M}(\cdot, \cdot) — это функция ранжирования потерь, которая заменяет hardest-triplet loss в D2-Net. В нашем случае \mathcal{M} определяется следующим образом:

\begin{equation}\begin{array}{l}\mathcal{M}\left(\mathbf{f}_{c}, \mathbf{f}_{c}^{\prime}\right)=\left[D\left(\mathbf{f}_{c}, \mathbf{f}_{c}^{\prime}\right)-m_{p}\right]_{+}+ \\\quad\left[m_{n}-\min \left(\min _{k \neq c} D\left(\mathbf{f}_{c}, \mathbf{f}_{k}^{\prime}\right), \min _{k \neq c} D\left(\mathbf{f}_{k}, \mathbf{f}_{c}^{\prime}\right)\right)\right]_{+}\end{array}\end{equation}

где D(\cdot, \cdot) представляет собой евклидово расстояние. m_p и m_n равны 0.2 и 1.0 соответственно.

2 Эксперименты

2.1 Сопоставление изображений

Результаты экспериментов приведены ниже:

2.2 Сравнение с другими методами

Результаты экспериментов приведены ниже:

2.3 3D реконструкция

Результаты экспериментов приведены ниже:

2.4 Визуальная локализация

Результаты экспериментов приведены ниже:

Статья & Исходный код

Статья
https://arxiv.org/abs/2003.10071

Исходный код
https://github.com/lzx551402/ASLFeat

Справочные материалы

[1] https://blog.csdn.net/phy12321/article/details/106040545
[2] https://www.jianshu.com/p/c184c2efbecc

Add a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *