Алгоритмы обнаружения объектов можно разделить на одноэтапные и двухэтапные в зависимости от структуры алгоритма.
Двухэтапный классический алгоритм — это, в основном, семейство R-CNN, которое известно своей точностью и немного меньшей скоростью, как правило, не такой хорошей, как одноэтапная.
Одноэтапный алгоритм в основном включает YOLO, SSD, CornerNet и т. д. Он известен своей высокой скоростью, но его точность, как правило, не так хороша, как у двухэтапного. SSD, описанный в этой статье, представляет собой классический одноэтапный алгоритм.
На приведенном выше рисунке показана вся ось эволюции алгоритма обнаружения объектов, видно, что выпуск SSD происходит после Faster R-CNN и YOLO v1. YOLO v1 — это новаторская разработка алгоритма одноэтапного обнаружения.Скорость превосходит Faster R-CNN, но точность намного меньше, чем Faster R-CNN. SSD следует основной идее YOLO v1, сочетает в себе блок привязки Faster R-CNN и творчески предлагает предсказание с несколькими разрешениями, которое является чрезвычайно быстрым и точным, как показано в следующей таблице.
Принцип обнаружения одиночной шкалы SSD
Здесь непосредственно приводится конкретный метод расчета модели, а затем объясняется принцип, в противном случае объяснение принципа очень неясно и трудно для понимания.
1) Модель
a) Входное изображение проходит через экстрактор признаков (SSD использует VGG16 в качестве экстрактора признаков), и получается карта извлеченных признаков канала H x W x.
b) Сверните приведенную выше карту извлеченных объектов через ядро свертки 3 x 3 x (25 x num_default_box) в карту признаков H x W x (25 x num_default_box) в качестве прогноза для обнаружения объекта. Как показано ниже (num_default_box=4 на рисунке):
Вышеупомянутые два шага завершили предсказание обнаружения объекта. достаточно просто
2) Объяснение принципа
Из характеристик свертки видно, что предсказание входного изображения в разрешение HxW эквивалентно делению входного изображения исходного разрешения на равные части HxW, как показано на следующем рисунке (здесь h=2, w =2):
Чтобы более точно предсказать ограничивающую рамку объектов, SSD использует идею рамки по умолчанию в более быстром rcnn.
Предположим сначала, что в каждой ячейке есть несколько полей по умолчанию, и поле по умолчанию имеет фиксированную длину и ширину и расположено в центре каждой ячейки.
В качестве примера на следующем рисунке в каждой ячейке есть четыре поля фиксированного размера по умолчанию.
Затем в прогнозе каждая ячейка будет иметь 4 прогноза, и каждый прогноз соответствует блоку по умолчанию. Как показано ниже: Специально для предсказания поля по умолчанию оно разделено на две части, например, поле по умолчанию 1 на приведенном выше рисунке.-
P_i (i=фон, c1, …, c20) представляет категорию объекта этого поля по умолчанию. P_background представляет вероятность фона, P_ci представляет вероятность категории ci (используемый здесь набор данных VOC имеет в общей сложности 20 категорий объектов), сумма всех значений вероятности равна 1, а класс с наибольшей вероятностью значение берется как значение предсказания категории поля по умолчанию.
-
Δcx, Δcy, Δw, Δh представляют отклонение между целевым полем объекта в поле по умолчанию и положением поля по умолчанию. Δcx, Δcy представляют собой отклонение центральной точки, Δw, Δh представляют собой отклонения ширины и высоты. Конкретное значение см. в главе Расчет убытков.
Таким образом, поле по умолчанию будет иметь 25 результатов прогнозирования, а 4 поля по умолчанию будут иметь 100 прогнозов. Это значение 100 в прогнозе в разделе модели выше.
3) Расчет потерь
Согласно приведенному выше анализу, каждая ячейка имеет 4 поля по умолчанию, а разрешение HxW будет иметь 4HРезультаты предсказания W. Для контролируемого обучения вам необходимо знать метку «Основная истина», соответствующую каждой ячейке по умолчанию. Стратегия распределения SSD для реальных блоков объектов GT заключается в том, чтобы сначала выделить GT блоку по умолчанию с наибольшим IoU, а затем выделить GT блоку по умолчанию с IoU больше 0,5, то есть один и тот же GT будет выделен разным блокам по умолчанию, разные ящики по умолчанию.GT, соответствующий ящику, может быть одним и тем же.
Как показано на рисунке выше, красный квадратик — это реальное положение собаки, тогда GT двух квадратов по умолчанию, на которые указывают зеленые стрелки, — это красные прямоугольники, а GT двух других прямоугольников по умолчанию — это фон, который то есть объектов нет.
Для положительных примеров, то есть в поле по умолчанию есть поле GT, убыток делится на убыток категории и убыток позиции.
Для отрицательного примера, то есть коробка по умолчанию не имеет коробки GT, а потеря имеет только потерю категории (категория - это фон).
Потеря – это взвешенная сумма потери уверенности и потери местоположения.
Потери местоположения рассчитываются следующим образом:
Среди них y — прогнозируемое значение, а y^hat — метка прогнозируемого значения. Для y^hat cx, cy, w, h для расчета используется следующая формула:
g — это основное значение истинности, а d — предыдущее значение поля по умолчанию. Можно видеть, что координаты центральной точки представляют собой относительную разницу между значением наземной истинности и априорным значением поля по умолчанию, а w и h являются логарифмами отношения истинного значения наземного значения к априорному значению поля по умолчанию.
На самом деле, эта обработка должна минимизировать диапазон изменения значения y^hat и уменьшить сложность обучения.
Потеря доверия рассчитывается следующим образом:
Все это перекрестная потеря энтропии.
Вышеизложенный принцип одномасштабного SSD.
Принцип обнаружения многомасштабности SSD
Есть два основных вклада SSD
1) Представлено поле по умолчанию, описанное выше.
2) Многомасштабный прогноз
Вышеупомянутое одномасштабное предсказание состоит в том, чтобы взять для предсказания определенную карту признаков всего процесса извлечения признаков. Многомасштабное прогнозирование заключается в том, чтобы использовать карты объектов с разным разрешением во всем процессе извлечения объектов для прогнозирования.
Как видно из рисунка выше, SSD сделал 6 прогнозов масштаба.
Убыток также является суммой убытков по каждой шкале.
Tricks
1) увеличение данных
Аугментация данных — очень важная часть обучения модели, ведь сбор данных слишком сложен.
Каждое обучающее изображение SSD генерируется случайным образом следующим методом:
исходное изображение
Возьмите часть изображения и убедитесь, что минимальный IoU кадра перехвата и кадра объекта составляет 0,1, 03, 0,5, 0,7 или 0,9.
Случайно взять часть картинки
Размер случайно перехваченного изображения составляет [0,1, 1] исходного размера изображения, а соотношение сторон составляет 0,5~2.
2) коробка по умолчанию
Поле по умолчанию контролируется масштабом и соотношением сторон.
Минимальный масштаб 0,2, максимальный 0,9. Если всего выбрано m шкал, значение каждой шкалы рассчитывается следующим образом:
Соотношение сторон выбирается следующим образом:
Когда соотношение сторон равно 1, добавьте еще один масштаб, значение равно:
Таким образом, каждая ячейка каждой шкалы имеет в общей сложности 6 полей по умолчанию.3) жесткий отрицательный майнинг
Поскольку большинство полей по умолчанию являются отрицательными выборками, положительные и отрицательные выборки серьезно несбалансированы.Если включить потерю всех отрицательных выборок, обучение будет очень нестабильным, а сходимость будет очень медленной, поэтому отрицательные выборки включаются только в отрицательные образцы с наибольшей потерей, и сохранить соотношение положительных и отрицательных образцов на уровне 1:3.
результаты теста
1) Результаты испытаний на абляцию по обычной методике
Видно, что влияние увеличения данных очень велико.2) Пробная абляция для многомасштабного прогноза
Видно, что мультимасштаб может значительно повысить точность