Вступление

ПОЧЕМУ

Предложения по регионам - это узкое место в вычислениях во время тестирования в современных системах обнаружения. Шаг предложения региона по-прежнему занимает столько же времени, сколько и сеть обнаружения.

КАК

Мы представляем сеть предложений регионов (RPN), которая разделяет сверточные функции полного изображения с сетью обнаружения, что позволяет практически бесплатно предлагать регионы. RPN - это полностью сверточная сеть, которая одновременно прогнозирует границы объекта и оценки объектности в каждой позиции. RPN проходит сквозное обучение для генерации предложений региона высокого качества, которые используются Fast R-CNN для обнаружения.

Модель

Более быстрый RCNN построен на двух модулях:

  1. Первый модуль - это глубокая полностью сверточная сеть (сеть предложений регионов или «RPN»), которая предлагает регионы.
  2. Второй модуль - это детектор Fast R-CNN, который использует предложенные области для обнаружения объектов.

Оба модуля вместе составляют единую унифицированную сеть для обнаружения объектов, как показано на рисунке ниже:

RPN (региональная сеть предложений)

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

Чтобы создать предложения по регионам, мы перемещаем окно размером n x n над выходными данными карты признаков последнего общего сверточного слоя. Эта функция передается в два одноуровневых полностью связанных слоя - уровень прямоугольной регрессии (reg) и уровень классификации прямоугольников (cls).

Упрощенный вид РПН:

Якоря в RPN

В каждом местоположении со скользящим окном мы одновременно прогнозируем несколько предложений регионов, где количество максимально возможных предложений для каждого местоположения обозначено как k. Таким образом, уровень reg имеет 4k выходных данных, кодирующих координаты k блоков, а слой cls выдает 2k оценок, которые оценивают вероятность объекта или не объекта для каждого предложения. Эти k предложений параметризованы относительно k блоков ссылок, известных как якоря.

Якоря, используемые в Faster RCNN в документе, центрированы в скользящем окне и имеют 3 шкалы и 3 соотношения сторон. Следовательно, 9 анкеров на каждую точку скольжения.

Примечание. Якоря инвариантны к переводу. Если переводить объект на изображении, предложение должно переводиться, и одна и та же функция должна быть в состоянии предсказать предложение в любом месте.

Изображение якорей:

Функция потерь для RPN

Для обучения RPN мы назначаем метку двоичного класса (является ли объект объектом или нет) каждой привязке. Мы присваиваем положительную метку двум типам якорей: (i) якорь / якоря с наивысшим перекрытием Intersection-over-Union (IoU) с блоком наземной истины, или (ii) якорь, у которого IoU перекрытие выше, чем 0.7 с любым ящиком наземной истины.

Мы присваиваем отрицательную метку неположительному якорю, если его отношение IoU ниже 0,3 для всех блоков наземной истины. Другие якоря не участвуют в обучении РПН.

С помощью этих определений мы минимизируем следующую целевую функцию:

Обучение RPN

RPN можно обучить от начала до конца с помощью обратного распространения и стохастического градиентного спуска (SGD). Каждый мини-пакет возникает из одного изображения, которое содержит множество положительных и отрицательных примеров привязок. Чтобы предотвратить предвзятость к отрицательным примерам, мы произвольно выбираем 256 привязок в изображении для вычисления функции потерь мини-пакета, где выбранные положительные и отрицательные привязки имеют соотношение до 1: 1. Если на изображении меньше 128 положительных образцов, мы дополняем мини-серию отрицательными.

Новые слои инициализируются с использованием распределения Гаусса, а общие сверточные слои инициализируются путем предварительного обучения модели по классификации ImageNet.

4-х ступенчатое альтернативное обучение

В этой статье 4-шаговый обучающий алгоритм используется для изучения общих функций посредством попеременной оптимизации. Вот эти шаги:

  1. Обучите RPN, как описано в последнем разделе.
  2. Обучите отдельную сеть обнаружения с помощью Fast RCNN, используя предложения, созданные с помощью обученной RPN на шаге 1. Обратите внимание, что на данный момент две сети не имеют общих сверточных слоев
  3. Используйте детекторную сеть для инициализации обучения RPN, сохраняя фиксированные общие сверточные слои, только тонкую настройку эксклюзивных слоев RPN. Теперь в обеих сетях используются общие сверточные слои.
  4. Наконец, сохраняя фиксированные общие сверточные слои, мы точно настраиваем уникальные слои Fast R-CNN.

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

На языке Pascal VOC

На тестовом наборе PASCAL VOC 2007 (обученном на VOC 2007 trainval) с детекторами, такими как Fast R-CNN с ZF, но с другими методами предложения региона, метод RPN дает на 1,3 MAP лучше, чем Selective search и edgebox.

MAP 78,8% на испытательном наборе VOC 2007, обученном на COCO + 07 + 12 (объединенный набор поездов VOC 2007 и поездов VOC 2012), когда детектор - Fast RCNN и VGG16.

В MS COCO

По сравнению с Fast RCNN, Faster RCNN (на VGG-16) улучшает [email protected] на 2,8% и mAP @ [0,5, 0,95] на 2,2% на тестовой разработке COCO при обучении на наборе данных поезда COCO.

Только путем замены VGG-16 101-слойной остаточной сеткой (ResNet-101) система Faster R-CNN увеличивает mAP @ 0,5 / mAP @ [0,5, 0,95] с 41,5% / 21,2% (VGG-16) до 48,4% / 27,2% (ResNet-101) на значении COCO, установленном при обучении на наборе данных поезда COCO.

Время работы всей системы обнаружения объектов

При использовании ZF Net скорость составляет 17 кадров в секунду, а при использовании VGG 16 - 5 кадров в секунду.