2
правки
Изменения
Нет описания правки
Модель Single Shot Detector<ref>[https://arxiv.org/abs/1512.02325 Single Shot Detector]</ref> (SSD) использует идею использования пирамидальной иерархии выходов свёрточной сети для эффективного обнаружения объектов различных размеров. Изображение последовательно передаётся на слои свёрточной сети, которые уменьшаются в размерах. Выход из последнего слоя каждой размерности участвует в принятии решения по детекции объектов, таким образом, складывается "пирамидальная характеристика" изображения. Это позволяет обнаруживать объекты различных масштабов, так как размерность выходов первых слоёв сильно коррелирует с ограничивающими рамками для крупных объектов, а последних {{---}} для небольших. В отличие от YOLO, SSD не разбивает изображение на сетку произвольного размера, а предсказывает смещение ключевых рамок. Ключевые рамки на разных уровнях масштабируются так, что одна размерность выходного слоя отвечает за объекты своего масштаба. В результате, большие объекты могут быть обнаружены только на более высоком уровне, а маленькие объекты {{---}} на низких уровнях. Как и в других алгоритмах, функция потерь обеспечивает совместный вклад как потерь локализации, так и потерь классификации.
===Anchor boxes===
Anchor boxes - алгоритм нахождения объектов, основанный на предсказании категории объекта и отступа от истинной ограничивающей рамки для большого количества сгенерированных ключевых рамок с последующей их фильтрацией.
====Генерация ключевых рамок====
Пусть входное изображение имеет высоту $h$ и ширину $w$. Генерируем ключевые рамки с различными формами и размерами, центрированные на каждом пикселе изображения. Предположим, что размер $s∈(0, 1]$, соотношение сторон $r>0$, тогда ширина и высота ключевой рамки равны $ws\sqrt{r}$ и $hs/\sqrt{r}$. Затем определяем набор размеров $s_1,\ldots, s_n$ и набор соотношений $r_1,\ldots, r_m$. Если использовать комбинацию всех размеров и пропорций, то входное изображение будет иметь $whnm$ ключевых рамок, что может привести к большой вычислительной сложности. Поэтому обычно выбираются только комбинации, содержащие размеры $s_1$ и пропорции $r_1$:
$(s_1, r_1), (s_1, r_2), \ldots, (s_1, r_m), (s_2, r_1), (s_3, r_1), \ldots, (s_n, r_1).$
При таком подходе число рамок для входного изображения сокращается до $wh(n+m-1)$.
====Процесс обучения====
Пусть набор ключевых рамок входного изображения это $A_1, A_2, \ldots, A_{n_a}$, а набор истинных ограничивающих рамок это $B_1, B_2, \ldots, B_{n_b}$, и $n_a \geq n_b$. Определяем матрицу $\mathbf{X} \in \mathbb{R}^{n_a \times n_b}$, где элемент $x_{ij}$ - это $IoU$ ключевой рамки $A_i$ с истинной рамкой $B_j$. Затем находим наибольший элемент в матрице $\mathbf{X}$ и сохраняем индекс строки и колонки элемента как $i_1,j_1$. Так мы обозначили ограничивающую рамку $B_{j_1}$ для ключевой рамки $A_{i_1}$. Далее исключаем все элементы в строке с индексом $i_1$ и колонке с индексом $j_1$ в матрице $\mathbf{X}$ для последующих поисков максимального элемента. Теперь ищем наибольший элемент среди оставшихся элементов матрицы $\mathbf{X}$ и сохраняем его индексы как элемент $i_2, j_2$, и также исключаем элементы из соответствующих колонок и строк.
Повторяем данные действия пока все $n_b$ колонки матрицы $\mathbf{X}$ не будут исключены. Затем, для оставшихся $n_a - n_b$ ключевых рамок $A_i$ находим лучшую истинную рамку $B_j$ с наибольшим IoU в строке матрицы $\mathbf{X}$ с индексом $i$. Присваиваем ключевой рамке $A_i$ ограничивающую рамку $B_j$ только если IoU больше предустановленного порогового значения.
Теперь мы можем определить категорию и отступ для каждой ключевой рамки. Если ключевой рамке $\mathbf{A}$ назначена $\mathbf{B}$, то тогда ее категория такая же как и у $\mathbf{B}$. А смещение ключевой рамки $\mathbf{A}$ устанавливается в соответствии с относительным положением центральных координат $\mathbf{B}$ и $\mathbf{A}$ и относительными размерами двух рамок. Поскольку положения и размеры различных рамок в наборе данных могут различаться, эти относительные положения и относительные размеры обычно требуют некоторых специальных преобразований, чтобы сделать распределение смещений более равномерным и более простым для подгонки. Предположим, что центр ключевой рамки $\mathbf{A}$ это $(x_a, y_a)$, высота и ширина это $h_a$ и $w_a$; для $\mathbf{B}$ - $(x_b, y_b)$, $h_b$ и $w_b$ соответственно. В таком случае отступ для A рассчитывается следующим образом:
$\left( \frac{ \frac{x_b - x_a}{w_a} - \mu_x }{\sigma_x},
\frac{ \frac{y_b - y_a}{h_a} - \mu_y }{\sigma_y},
\frac{ \log \frac{w_b}{w_a} - \mu_w }{\sigma_w},
\frac{ \log \frac{h_b}{h_a} - \mu_h }{\sigma_h}\right)$
Дефолтные значения констант $\mu_x = \mu_y = \mu_w = \mu_h = 0$, $\sigma_x=\sigma_y=0.1$, и $\sigma_w=\sigma_h=0.2$.
Если ключевой рамке не назначен ограничивающий прямоугольник, то устанавливаем категорию background.
====Процесс предсказаний====
На этапе прогнозирования сначала генерируется несколько ключевых рамок для изображения, а затем прогнозируются их категории и смещения. Затем на основе ключевых блоков и их прогнозируемых смещений получаются ограничивающие рамки прогнозирования. Когда имеется много ключевых рамок или много одинаковых ограничивающих рамок предсказания могут выводиться несколько раз для одного и того же объекта. Чтобы упростить результаты, можно удалить аналогичные ограничивающие рамки прогнозирования. Обычно используется метод, который называется не максимальное подавление (NMS).
==См.также==
* [https://github.com/hoya012/deep_learning_object_detection Список статей о детекции объектов методами глубокого обучения]
* [https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e R-CNN, Fast R-CNN, Faster R-CNN, YOLO — Object Detection Algorithms]
* [https://d2l.ai/chapter_computer-vision/anchor.html Dive into deep lerning - Computer vision - Anchor Boxes]
[[Категория: Машинное обучение]]