[Концепция глубокого обучения] · Анализ эволюции технологии обнаружения целей в глубоком обучении
Личное понимание обнаружения объекта заключается в том, чтобы точно найти местоположение объекта на заданном изображении и отметить категорию объекта. Проблема, которую необходимо решить при обнаружении объекта, заключается в том, где находится объект и каков весь процесс. Однако решить эту проблему не так-то просто: размер объекта сильно варьируется, угол и положение объекта неопределенны, он может появиться в любом месте изображения, не говоря уже о том, что объект может относиться к нескольким категориям.
Эволюция технологии обнаружения объектов:
RCNN->SppNET->Fast-RCNN->Faster-RCNN
Начните с задачи распознавания изображений
Вот задача изображения:
Необходимо выделить объект на картинке и обрамить его положение рамкой.
Вышеуказанная задача в профессиональном плане: распознавание изображений + позиционирование
Распознавание изображений (классификация):
Вход: изображение
Вывод: класс объекта
Метод оценки: Точность
Локализация:
Вход: изображение
Вывод: положение коробки на картинке (x, y, w, h)
Метод оценки: функция обнаружения пересечения по объединению (IOU)
Сверточная нейронная сеть CNN уже помогла нам решить задачу распознавания изображения (определение, кошка это или собака), осталось только добавить некоторые дополнительные функции для выполнения задачи позиционирования.
Каковы решения проблемы позиционирования?
Идея 1: рассматривайте это как проблему регрессии
В качестве проблемы регрессии нам нужно предсказать значения четырех параметров (x, y, w, h), чтобы получить положение ящика.
шаг 1:
• Сначала решите простые задачи, создайте нейронную сеть, которая распознает изображения.
• Тонкая настройка на AlexNet VGG GoogleLenet
Шаг 2:
• Расширяем хвост приведенной выше нейронной сети (то есть передняя часть CNN остается неизменной, а мы вносим улучшения в конец CNN: добавляются две головки: «голова классификации» и «голова регрессии»)
• Быть в режиме классификации + регрессии
Шаг 3:
• Часть регрессии использует потерю евклидова расстояния
• Обучение с СГД
Шаг 4:
• Фаза предсказания соединяет две головы вместе
• Выполняйте различные функции
Здесь требуются две тонкие настройки
Первый раз делал на ALexNet, второй раз поменял голову на регрессионную, фронт остался без изменений, и сделал тонкую настройку
Где добавлена часть регрессии?
Существует два метода обработки:
• Добавляется после последнего сверточного слоя (например, VGG).
• Добавляется после последнего полносвязного уровня (например, R-CNN).
Регрессия слишком сложна для выполнения, и мы должны сделать все возможное, чтобы превратить ее в проблему классификации.
Для сходимости обучающих параметров регрессии требуется гораздо больше времени, поэтому в приведенной выше сети используется классификационная сеть для расчета весов соединений общих частей сети.
Идея 2: Возьмите окно изображения
• Это та же самая классификация + идея регрессии только что
• Берем «коробочки» разных размеров
• Заставьте поле появляться в разных позициях, чтобы получить оценку решения для этого поля.
• Получите коробку с наибольшим количеством очков~~(1. Используйте фактическое положение метки и поле прогноза, чтобы вычислить ошибку для расчета балла? Вы правильно поняли)~~
Черный ящик в верхнем левом углу: оценка 0,5
Черный ящик в правом верхнем углу: оценка 0,75.
Нижний левый черный ящик: оценка 0,6
Черный ящик справа внизу: оценка 0,8
В соответствии со счетом мы выбираем черный ящик в правом нижнем углу в качестве предсказания местоположения цели.
Примечание. Иногда также выбираются два поля с наибольшим количеством очков, и тогда пересечение двух полей принимается за окончательную прогнозируемую позицию.
Сомнение: насколько большим должен быть кадр?
Берите разные ящики и проводите по очереди из левого верхнего угла в правый нижний угол. Очень грубо.
Резюмируя идею:
Для изображения используйте блоки различных размеров (пройдите через все изображение), чтобы вырезать изображение и ввести его в CNN, а затем CNN выведет оценку поля (классификация) и соответствующие x, y, h, w из изображение коробки (регрессия).(2. Прогнозируются перехваченные фотографии, и выбирается определенная категория для прогнозирования наивысшего балла, чтобы получить x, y, h, w)
Этот метод требует слишком много времени для оптимизации.
Исходная сеть выглядит так:
Оптимизация такова: измените полносвязный слой на сверточный слой, который может ускориться.
Обнаружение объекта
Что делать, если на изображении много объектов? Сложность внезапно возросла.
Тогда задача становится такой: распознавание нескольких объектов + поиск нескольких объектов.
Думайте об этой задаче как о проблеме классификации?
Что плохого в том, чтобы рассматривать это как проблему классификации?
• Вам нужно найти много позиций и дать много ящиков разного размера
• Вам также необходимо классифицировать изображения внутри коробки.
• Конечно, если у вас мощный GPU, дерзайте...
Как классификация, есть ли способ оптимизировать ее? Я не хочу пробовать столько боксов и столько позиций!
Кто-то придумал хороший способ:
Найдите блоки, которые могут содержать объекты (то есть блоки-кандидаты, такие как выбор 1000 блоков-кандидатов), эти блоки могут перекрываться и содержать друг друга, так что мы можем избежать насильственного перечисления всех блоков.
Дэниелс изобрел множество методов выбора блоков-кандидатов, таких как EdgeBoxes и выборочный поиск.
Ниже приведено сравнение производительности различных методов выбора блоков-кандидатов.
Есть большое сомнение, как алгоритм «выборочного поиска», используемый для извлечения блоков-кандидатов, выбирает эти блоки-кандидаты? Тот должен хорошенько взглянуть на свою статью, поэтому я не буду ее здесь представлять.
R-CNN родился
На основе вышеизложенных идей и появился RCNN.
Шаг 1. Обучите (или загрузите) модель классификации (например, AlexNet).
Шаг 2. Тонкая настройка модели
• Изменено количество категорий с 1000 до 20
• Удалить последний полностью связанный слой
Шаг 3: Извлечение признаков
• Извлечь все блоки-кандидаты изображения (выборочный поиск)
• Для каждого региона: скорректируйте размер региона, чтобы он соответствовал входным данным CNN, выполните прямую операцию и сохраните выходные данные пятого слоя объединения (то есть функции, извлеченные из кадра-кандидата) на жесткий диск.
Шаг 4: Обучите классификатор SVM (две классификации) для определения категории объекта в кадре-кандидате.
Каждой категории соответствует SVM, чтобы определить, принадлежит ли он к этой категории, он положительный, в противном случае отрицательный
Например, следующий рисунок представляет собой SVM классификации собак.
Шаг 5. Используйте регрессор для точной настройки положения поля-кандидата. Для каждого класса обучите модель линейной регрессии, чтобы определить, идеально ли оформлено поле.(3. Сначала классифицируйте типы изображений с помощью кадра-кандидата, получите положительные примеры, затем выберите кадр-кандидат с более высоким баллом и, наконец, настройте его с помощью линейной регрессии)
Идея SPP Net в эволюции RCNN во многом этому способствовала Вот краткое введение в SPP Net.
SPP Net
SPP: объединение пространственных пирамид
Он имеет две особенности:
1. Объедините метод пространственной пирамиды, чтобы реализовать парный вход CNN.
Как правило, за CNN следует полносвязный слой или классификатор.Все они требуют фиксированного размера ввода, поэтому им приходится обрезать или деформировать входные данные.Эта предварительная обработка приведет к потере данных или геометрическим искажениям. Первым вкладом SPP Net является добавление идеи пирамиды в CNN для реализации многомасштабного ввода данных.
Как показано на рисунке ниже, слой SPP добавляется между сверточным слоем и полносвязным слоем. В это время вход сети может быть любого масштаба.На уровне SPP размер каждого фильтра пула будет изменен в соответствии с входом, а выходной масштаб SPP всегда фиксирован.(Как достичь)
2. Извлеките функции свертки только один раз для исходного изображения.
В R-CNN каждый блок-кандидат сначала изменяется до одинакового размера, а затем используется в качестве входных данных CNN, что очень неэффективно.
Таким образом, SPP Net оптимизируется в соответствии с этим недостатком: только один раз сверните исходное изображение, чтобы получить карту признаков всего изображения, затем найдите патч сопоставления на карте каждого потенциального кадра zaifeature map и используйте этот патч в качестве свертки входных данных каждого кадра-кандидата. к уровню SPP и последующим уровням(Как достичь). Это экономит много вычислительного времени, что примерно в сто раз быстрее, чем R-CNN.
Fast R-CNN
SPP Net действительно хороший метод.Расширенная версия R-CNN, Fast R-CNN, использует метод SPP Net на основе RCNN и улучшает RCNN для дальнейшего повышения производительности.
В чем разница между R-CNN и Fast RCNN?
Давайте сначала поговорим о недостатках RCNN: даже если этапы предварительной обработки, такие как выборочный поиск, используются для извлечения потенциальных ограничивающих рамок в качестве входных данных, RCNN все еще имеет серьезное узкое место в скорости.Причина очевидна, то есть когда компьютер выполняет извлечение признаков на все регионы, будут повторные расчеты, Fast-RCNN родился для решения этой проблемы.
Даниэль предложил сетевой уровень, который можно рассматривать как одноуровневую сеть, называемую ROI Pooling, Этот сетевой уровень может отображать входные данные разных размеров в вектор признаков фиксированного масштаба, и мы знаем, что conv, pooling, relu и другие операции не Требуется вход фиксированного размера.Поэтому после выполнения этих операций на исходном изображении, хотя размер входного изображения отличается, размер результирующей карты объектов также отличается.Его нельзя напрямую подключить к полносвязному слою для классификации, но можно добавить этот волшебный слой ROI Pooling, извлечь представление объектов фиксированного размера для каждой области, а затем выполнить распознавание типов с помощью обычного softmax.(аналог Word2Wec). Кроме того, предыдущий поток обработки RCNN заключался в том, чтобы сначала предложить предложение, затем CNN для извлечения признаков, затем использовать классификатор SVM и, наконец, выполнить регрессию bbox, а в Fast-RCNN автор ловко поместил регрессию bbox внутри нейронной сети, и Классификация и суммирование областей стали многозадачной моделью, и практические эксперименты также доказали, что эти две задачи могут иметь общие черты свертки и способствовать друг другу. Очень важным вкладом Fast-RCNN является то, что он успешно помог людям увидеть надежду на обнаружение в реальном времени в рамках Region Proposal + CNN.Оказывается, обнаружение нескольких типов действительно может повысить скорость обработки, обеспечивая при этом точность, который также заложил основу для более позднего Faster-RCNN.
Нарисуйте ключевой момент:
У R-CNN есть некоторые существенные недостатки (устраните эти недостатки, и он станет Fast R-CNN).
Большой недостаток: поскольку каждый ящик-кандидат должен пройти через CNN самостоятельно, это занимает много времени.
Решение: сверточный слой является общим.Теперь не каждый кадр-кандидат вводится в CNN в качестве входных данных, а вводится полная картина, и в пятом сверточном слое получаются признаки каждого кадра-кандидата.
Первоначальный метод: множество блоков-кандидатов (например, две тысячи) --> CNN --> получение характеристик каждого блока-кандидата --> классификация + регрессия
Текущий метод: полная картина --> CNN --> получение характеристик каждого блока-кандидата --> классификация + регрессия
Таким образом, легко увидеть, что причина ускорения Fast RCNN по сравнению с RCNN заключается в том, что, в отличие от RCNN, в которой каждая область-кандидат представлена в глубокую сеть, все изображение извлекается один раз, а затем кадр-кандидат сопоставляется с conv5. , в то время как SPP Функции нужно рассчитать только один раз, а остальные нужно обрабатывать только на уровне conv5.
Улучшение производительности также совершенно очевидно:
Faster R-CNN
Проблемы с Fast R-CNN: есть узкое место: выборочный поиск для нахождения всех ящиков-кандидатов, который также требует очень много времени. Так можем ли мы найти более эффективный способ найти эти коробки-кандидаты?
Решение: добавьте нейронную сеть, которая извлекает ребра, то есть работа по поиску блоков-кандидатов также передается нейронной сети.
Нейронная сеть, которая выполняет такую задачу, называется сетью региональных предложений (RPN).
специальные методы:
• Поместите RPN после последнего сверточного слоя.
• РПН непосредственно обучается для получения регионов-кандидатов
Введение в РПН:
• Скользящее окно на карте объектов
• Построить нейронную сеть для классификации объектов + регрессию местоположения ящика
• Положение скользящего окна предоставляет общую информацию о положении объекта.
• Регрессия блоков обеспечивает более точное расположение блоков.
Одна сеть, четыре функции потерь;
• Классификация РПН (якорь хороший.плохой)
• Регрессия RPN (якорь-> предложение)
• Быстрая классификация R-CNN (по классам)
• Быстрая регрессия R-CNN (предложение -> поле)
сравнение скорости
Основной вклад Faster R-CNN заключается в разработке сетевого RPN для извлечения регионов-кандидатов, который заменяет трудоемкий выборочный поиск, что значительно повышает скорость обнаружения.
Наконец, суммируйте шаги основных алгоритмов:
RCNN
1. Определите около 1000-2000 блоков-кандидатов на изображении (используя выборочный поиск)
2. Блоки изображения в каждом кадре-кандидате масштабируются до одинакового размера и вводятся в CNN для извлечения признаков.
3. Для функций, извлеченных из кадра-кандидата, используйте классификатор, чтобы определить, принадлежат ли они к определенному классу.
4. Для блока-кандидата, принадлежащего определенной функции, используйте регрессор для дальнейшей настройки его положения.
Fast RCNN
1. Определите около 1000-2000 блоков-кандидатов на изображении (используя выборочный поиск)
2. Введите все изображение в CNN, чтобы получить карту объектов.
3. Найдите патч сопоставления каждого кадра-кандидата на карте объектов и введите этот патч в качестве функции свертки каждого кадра-кандидата в слой SPP и последующие слои.
4. Для функций, извлеченных из кадра-кандидата, используйте классификатор, чтобы определить, принадлежат ли они к определенному классу.
5. Для блока-кандидата, принадлежащего определенной функции, используйте регрессор для дальнейшей настройки его положения.
Faster RCNN
1. Введите все изображение в CNN, чтобы получить карту объектов.
2. Функция свертки вводится в RPN для получения информации о функции кадра-кандидата.
3. Для функций, извлеченных из кадра-кандидата, используйте классификатор, чтобы определить, принадлежат ли они к определенному классу.
4. Для блока-кандидата, принадлежащего определенной функции, используйте регрессор для дальнейшей настройки его положения.
В целом, от R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN по пути процесс обнаружения целей на основе глубокого обучения становится все более упорядоченным, с более высокой точностью и большей скоростью. . Можно сказать, что метод обнаружения целей серии R-CNN, основанный на предложении региона, является наиболее важной ветвью в текущей области технологий обнаружения целей.