Недавно мне посчастливилось познакомиться с областью обнаружения целей при глубоком обучении в проекте.После нескольких недель практики и связанного с этим обзора знаний теперь можно считать, что я могу задержаться в начале обнаружения целей. Эта статья добавит мое собственное понимание принципов трех основных классических алгоритмов обнаружения целей, и я надеюсь, что после прочтения этой статьи все больше не будут терять сознание.
Обнаружение цели
Что такое обнаружение объектов
В одном предложении [категория] и [местоположение] объекта обнаруживаются в представлении.
Три алгоритма обнаружения цели
Как мы уже говорили выше, обнаружение цели — это задача классификации и локализации (регрессия, примечание: регрессия — это получение определенного значения). Для задачи классификации мы можем ввести изображение в классификатор для обработки, а для задачи позиционирования необходимо выбрать рамку объекта, так как же определить рамку выбора? Здесь нам может понадобиться куча «ящиков кандидатов».
Увидев это, мы примерно определили, что задача обнаружения цели требует двух шагов:
- выбор ящика кандидата;
- Классифицируйте объекты в поле-кандидате (ящики с низкими баллами необходимо удалить позже)
Таким образом получается прототип алгоритма [Двухстадийный], который представлен [RCNN], а последующие [Fast-RCNN] и [Faster-RCNN] основаны на его итеративности.
Можно ли предсказать классификацию одновременно с выбором поля-кандидата? Также возможно, так что есть [SSD] и [YOLO] (One-Stage).
Давайте поговорим о конкретных шагах обнаружения каждого алгоритма «немного» подробно. (Студенты вне класса, пожалуйста, поправьте меня, если у меня есть какие-то ошибки~)
RCNN и его итераторы (2 этапа)
1. Основная идея
Так называемый RCNN — это [Region] + [CNN]. Он идеально соответствует вышеупомянутой классификации marquee +.
О том, что такое CNN, если хотите углубиться, можете прочитать эту статью:Понимание сверточных нейронных сетей в одной статье. Вот также краткое резюме: CNN получает [вектор признаков изображения] как [полный слой соединения (то есть комбинацию нескольких слоев нейронной сети)] посредством таких операций, как [уменьшение измерения] (свертка, активация, объединение ) для входного изображения input и, наконец, вывести результат.
Вы можете видеть рисунок ниже, [x1, x2...xn] можно рассматривать как вектор признаков после уменьшения размерности, а затем обрабатывать нейронной сетью для получения выходного результата.
Регион — это поле-кандидат, о котором мы упоминали выше, и RCNN определяет регион-кандидат посредством сканирования окна. Сыграйте в классическую игру и найдите сову среди птиц. Мы можем сканировать глазами строку за строкой, здесь мы можем видеть каждое слово как сетку, а затем судить, является ли слово в сетке черным или нет. Этот процесс на самом деле является грубым пониманием RCNN. Выбор выбора на ранней стадии в основном использует технологию [Скользящее окно], которая заключается в определении выделения в начальной точке обзора, а затем каждый раз перемещает выделение на определенное расстояние, а затем обнаруживает объекты в окне. .
2. РКНН
Увидев вышеизложенное, думаю, все заметили очевидный недостаток технологии скользящего окна: мы не уверены, может ли начальное окно просто обернуть обнаруживаемый объект, что требует многократных попыток исходного размера окна. велика, и количество обнаруживаемых окон увеличивается экспоненциально, и каждая попытка включает в себя полный процесс работы CNN, что, очевидно, занимает очень много времени.
Поэтому RCNN изменила выбор ящиков-кандидатов с технологии скользящего окна на технологию SS (выборочный поиск, выборочный поиск). Это означает, что представление делится по фактуре и цвету, а затем определяется около 2000 областей в качестве областей-кандидатов, после чего они классифицируются.
3. Быстрый RCNN
Улучшения Fast-RCNN:
- Сначала введите изображение в CNN, чтобы получить карту объектов.
- Разделите область SS на карте объектов (это получается на исходном изображении), чтобы получить кадр объекта, и объедините каждый кадр объекта до одинакового размера в слое объединения ROI.
- Наконец, поле признаков вводится в полносвязный слой для классификации и регрессии.
Слой пула ROI преобразует блоки признаков разных размеров в векторы признаков того же размера для последующей классификации и операций с блоками регрессии вывода. Это может ускорить обработку.
4. Быстрее-RCNN
Шаги Faster-RCNN аналогичны Fast-RCNN.Большой прорыв: изменение технологии извлечения ящиков-кандидатов с SS на RPN.. Краткий принцип RPN:
- Создайте 9 полей-кандидатов для каждого пикселя входной карты объектов, как показано в красном поле ниже;
- Исправление сгенерированного базового блока-кандидата заключается в удалении блока-кандидата, не содержащего цели;
- Обрежьте поля-кандидаты, выходящие за границы изображения.
- Игнорировать блок-кандидат, который слишком мал по длине или ширине.
- Отсортируйте все текущие блоки-кандидаты по их баллам и выберите первые 12 000 блоков-кандидатов.
- Исключить дублирующиеся кандидаты
- Выберите первые 2000 для вторичной коррекции
SSD (1-этапный)
По сравнению с RCNN, SSD пропускает выбор областей-кандидатов, но делит карты признаков изображения на n*n (максимальное число n на рисунке ниже равно 38) блоков и предварительно устанавливает от 4 до 6 кандидатов по умолчанию в центре каждого блока. , площадь.
Как показано на рисунке ниже, SSD сначала извлекает признаки из изображения, а затем добавляет несколько вспомогательных сверточных слоев, чтобы установить области-кандидаты по умолчанию для каждого слоя. Причина создания нескольких сверточных слоев заключается в том, чтобы лучше идентифицировать объекты разных размеров.
Во время обучения сгенерированная область-кандидат по умолчанию и фактическая отмеченная область пересекаются и объединяются Конкретный расчет: IoU = (кандидат ∩ фактический) / (кандидат ∪ фактический), если значение IoU больше 0,5, то есть соответствует фактической площади, поэтому мы можем получить приблизительную форму цели. Изображение ниже представляет собой изображение 8 * 8. При обнаружении людей SSD устанавливает 3 поля-кандидата по умолчанию (зеленое поле) в центральной точке (зеленая точка) ячеек (4, 5), которые отличаются от реального поля (синее поле). )), можно обнаружить, что сходство между 1 и 2 относительно велико.
Вот краткое описание назначения мультисверточного слоя. На рисунке ниже b — это карта объектов 8*8, а c — карта объектов 4*4. Для обнаружения кошек рисунок b может лучше определить область выбора. Для обнаружения собак область-кандидат (правая сторона) на рисунке b, очевидно, не очень хорошо охватывает цель, в то время как карта признаков c относительно хорошо справляется с обнаружением собак.
Таким образом, карты признаков с высоким разрешением хороши для обнаружения объектов небольшого размера, а карты признаков с низким разрешением хороши для обнаружения объектов большого размера.
ЙОЛО (1 этап)
Общий принцип YOLO аналогичен SSD. Однако YOLO использует только карты объектов самого высокого уровня обнаружения, в отличие от SSD, который использует несколько вспомогательных сверточных слоев для создания карт объектов разных размеров (пирамидальная структура). Я не буду здесь вдаваться в подробности.