Давайте подробно разберемся с этими современными сверточными нейронными сетями, основанными на предложении регионов.

Я подробно обсуждал обнаружение объектов и R-CNN в своей предыдущей статье. Вы можете прочитать это здесь, чтобы лучше понимать.

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

Давайте углубимся в тему.

Итак, у использования версии R-CNN для обнаружения объектов есть некоторые недостатки. Они есть:

  1. Он потребляет огромное количество времени, памяти и вычислительной мощности.
  2. Он имеет сложный многоступенчатый обучающий конвейер (3 этапа - потеря журнала, SVM и потеря L2 BBox Regressor).

Fast R-CNN, который был разработан годом позже после R-CNN, решает эти проблемы очень эффективно и примерно в 146 раз быстрее, чем R-CNN во время тестирования.

Быстрый R-CNN

Выборочный поиск, используемый в R-CNN, генерирует около 2000 предложений региона для каждого изображения, и каждое предложение региона подается в базовую сетевую архитектуру. Это означает, что для одного изображения нужно выполнить 2000 прямых проходов. Рассмотрите возможность обучения сети с набором данных из 1000 изображений. Всего получилось бы 2M (2000 * 1000) проходов вперед, что огромно!

Итак, Fast R-CNN был основан на идее, что,

Почему бы не рассмотреть возможность запуска CNN только один раз для каждого изображения, а затем найти способ поделиться этими вычислениями в ~ 2000 предложениях?

В Fast R-CNN изображение подается в базовую CNN только один раз, а с другой стороны, как обычно, выполняется выборочный поиск. Эти предложения по регионам, созданные с помощью выборочного поиска, затем проецируются на карты характеристик, созданные CNN. Этот процесс называется Проекция рентабельности инвестиций (область интереса).

Перед тем, как начать проекцию ROI, необходимо узнать о коэффициенте субдискретизации. Это отношение размера карты объектов к исходному размеру изображения. Например,

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

Приведенная выше диаграмма выглядит немного сложной, но не такой, как кажется. Представьте, что изображение размером 688 x 920 подается на CNN, коэффициент субдискретизации которого равен 1/16. Размер результирующей карты функций будет равен 43 x 58 (688/16 x 920/16). Точно так же размер предложения по рентабельности инвестиций 320 x 128 после субдискретизации приводит к 20 x 8. Как правило, координаты ограничивающих прямоугольников представлены двумя способами.

  1. Координаты средней точки прямоугольника (X, Y), ширина, высота. [X, Y, W, H]
  2. Координаты противоположной стороны ограничивающей рамки. [X1, Y1, X2, Y2]

Здесь мы рассматриваем первые обозначения. На диаграмме средняя точка предложения по рентабельности инвестиций - (340,450), которая ведет к (21,28) на карте функций. Таким образом, предложение ROI проецируется на карту функций.

Основная причина использования изображений фиксированного размера для сети - это полностью связанные слои. Они ожидают векторов фиксированного размера, так как им присвоены фиксированные веса. Это основная причина, по которой изображения переменного размера не принимаются в сети. Чтобы решить эту проблему, авторы Fast R-CNN предложили идею объединения рентабельности инвестиций, в которой проекция рентабельности инвестиций на карте функций делится на фиксированные измерения.

Как показано выше, рассматривайте красную рамку как проекцию области интереса на карту функций 8 x 8. Предположим, нам нужен выходной файл размером 2 x 2. Тогда разделение их поровну может оказаться невозможным, если существует нечетное измерение. В таких случаях мы округляем до ближайшего значения. Как показано, предположим, что мы получили предложение размером 5 x 4. Чтобы преобразовать его в прямоугольную рамку с фиксированными размерами, мы делим высоту и ширину на требуемые, то есть 5/2 x 4/2 = 2,5 x 2. Округление на них в любом случае дает 2 x 2 и 3 x 2. Затем каждый блок объединяется по максимуму и вычисляется результат. Таким образом, мы получаем фиксированный размерный результат для любого предложения региона переменного размера. Итак, теперь нет ограничений на размер ввода.

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

В Fast R-CNN мы используем сетку 7 x 7 для объединения. Также избавляемся от последнего слоя объединения. Объединение областей интереса применяется к картам характеристик последнего сверточного слоя. Приведенный выше пример относится к архитектуре AlexNet.

Изменения от RCNN заключаются в том, что они избавились от классификатора SVM и вместо этого использовали Softmax. Функция потерь, используемая для Bbox, представляет собой плавную потерю L1. Результатом Fast RCNN является экспоненциальный рост скорости. С точки зрения точности особых улучшений нет. Точность с этой архитектурой на наборе данных PASCAL VOC 07 составила 66,9%. Общие потери здесь являются суммированием потерь классификации и потерь регрессии, и сеть передается в обратном направлении с единственной потерей, с помощью которой мы можем избавиться от проблемы многоступенчатого обучения.

Полученные результаты:

Быстрее R-CNN

Даже несмотря на все эти достижения, в процессе Fast R-CNN все еще оставалось одно узкое место, а именно - предлагающий регион. Как мы знаем, первым шагом в обнаружении объектов является создание набора потенциальных ограничивающих рамок вокруг объекта. В Fast R-CNN предложения регионов создаются с помощью Выборочного поиска, довольно медленный процесс оказывается узким местом общего процесса обнаружения объектов.

Итак, нам нужен лучший метод, который дает менее 2000 предложений по регионам, быстрее, чем выборочный поиск, с такой же точностью, как выборочный поиск или лучше, и должен иметь возможность предлагать перекрывающиеся ROI с различными соотношениями сторон и масштабами.

Из Fast R-CNN мы знаем, что предложения по регионам зависят от характеристик изображения, которые уже были рассчитаны при прямом проходе CNN.

Так почему бы нам не использовать те же самые результаты CNN для предложений по регионам вместо того, чтобы использовать отдельный алгоритм выборочного поиска?

Во-первых, давайте разберемся с концепцией перекрытия рентабельности инвестиций с разным соотношением сторон и масштабом.

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

Если мы нарисуем ограничивающие рамки вокруг различных объектов, это будет выглядеть следующим образом.

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

В общем, объекты могут поместиться либо в квадратную коробку, либо в прямоугольную и широкую, либо в прямоугольную и высокую. В широком смысле их можно назвать большими, маленькими или средними. Итак, экспериментально установлено, что любой объект на изображении можно обнаружить с помощью ящиков 3-х разных масштабов и 3-х разных соотношений сторон.

Если мы рассмотрим приведенное выше перекрывающееся изображение, вполне возможно, что объединение всех этих полей, как показано выше, даст вам все перекрывающиеся предложения, но не очень точно. Большая часть объекта будет закрыта. Это может быть метод, который можно использовать для решения нашей задачи по замене предлагающего региона. Мы можем подумать о некоторых альтернативах, таких как:

1. Удаление выборочного поиска и применение скользящего окна поверх карт объектов. Но на этом мы заканчиваем обнаружение в основном объектов одного масштаба.

2. Чтобы позаботиться о нескольких масштабах, мы должны использовать пирамиды изображений на входе. Но использование изображений 5 разных масштабов (с помощью которых можно обнаружить почти каждый объект) замедляет работу сети в 4 раза.

3. Другой вариант - использовать скользящие окна разных размеров (9, как показано выше) на карте функций. Эта концепция называется пирамидой признаков. Это предполагает использование скользящих окон 9 разных размеров поверх карт функций.

Если бы не изображение размером, скажем, 600x1000, у нас была бы Feature Map размером ~ 40x60. И используя 9 различных скользящих окон в каждой позиции, для всех значений 40x60 в карте функций мы получаем 40x60x9 = ~ 20 000 предложений. По сравнению с выборочным поиском, который дает всего 2000 предложений, у нас почти в 10 раз больше предложений. Это будет дороже в вычислительном отношении, а также будет иметь больше ложных срабатываний.

4. Рассмотрите возможность использования простого регрессора CNN BBox вместо выборочного поиска, чтобы получить приблизительные предложения области изображения, которые затем могут быть переданы в базовую архитектуру Fast R-CNN. Это основная идея Faster R-CNN. Давайте копнем глубже.

Эта сеть, которая дает нам приблизительную рентабельность инвестиций, называется сетью региональных предложений (RPN). Итак, как нам разработать эту RPN, чтобы она давала нам приблизительные ROI, которые можно было бы обрабатывать в дальнейшем?

Идея здесь в том, что мы используем 9 блоков, как обсуждалось выше. Они называются якорными ящиками или ссылочными ящиками. В любой точке изображения мы получаем около 9 разных ограничивающих рамок разного масштаба и соотношения сторон.

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

Таким образом мы получаем предложения разных регионов из всех регионов изображения. 9x означает, что эта часть повторяется 9 раз для 9 разных якорей. Отсюда мы получаем требуемые ROI. Но проблема в том, что мы снова получаем огромное количество предложений.

Рассматривая тот же пример карт функций 40x60, мы снова получаем около 20K предложений (40 x 60 x 9). Максимум ящиков в них не содержит никаких объектов, и такие ящики следует удалить. Для этого мы используем двоичный классификатор, который предсказывает, содержит ли блок передний план или какой-либо фон. При этом все поля, содержащие фон, удаляются. Предположим, есть около 15 тысяч фоновых блоков. У нас осталось еще 5К коробок. Поскольку классификация включает в себя слой S oftmax в конце, мы получаем оценки достоверности для каждого поля, указывающие вероятность присутствия объекта внутри этого поля. Таким образом, мы можем ранжировать блоки в соответствии с оценками достоверности и использовать топ-n предложений в качестве рентабельности инвестиций. Соответственно, n можно изменить.

Также обратите внимание, что, поскольку мы не используем уровень объединения ROI в RPN, мы используем там операцию свертки, которая действует как скользящее окно, и слои FC здесь заменяются операциями свертки, аналогичными операциям Overfeat, которые были предшественник R-CNN.

Таким образом, карты характеристик сначала свертываются с помощью окна или фильтра 3x3, которое дает нам требуемые якоря, за которыми следуют свертки 1x1, по одной для каждой части классификации и регрессии.

В целом, это архитектура Faster R-CNN.

Faster R-CNN обучается совместно с 4 потерями:

  1. Классификация RPN (объект передний план / задний план)
  2. Регрессия RPN (Якорь → ROI)
  3. Быстрая классификация RCNN (классы объектов).
  4. Быстрая регрессия RCNN (ROI → Bounding Box)

Полученные результаты:

Заключение

Я надеюсь, что это проясняет ваше понимание Fast and Faster R-CNN. В декабре 2015 года Faster RCNN вместе с магистральной сетью, такой как ResNet -101, выиграла конкурс на обнаружение объектов COCO и считается находящейся в стадии разработки -современная модель для обнаружения объектов на сегодняшний день. Надеюсь, вы узнали что-то новое сегодня! Я расскажу больше о Mask R-CNN и Detectron2 в моих следующих статьях.

Если вы хотите связаться, свяжитесь со мной в LinkedIn.

Если вы хотите узнать больше о кросс-энтропии, вы можете прочитать мою предыдущую статью об этом здесь.

использованная литература

  1. Https://arxiv.org/pdf/1506.01497.pdf
  2. Https://arxiv.org/pdf/1504.08083.pdf
  3. Http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf