Перейти к основному содержимому

Модель CenterNet

Архитектура

Модель CenterNet [1] строится на базе CornerNet, и дополнительно увеличивает её точность за счёт реконструкции выделяющих рамок не только по их левому верхнему и правому нижнему углу, но и по предсказываемому центру рамки, как показано на рисунке [1]:

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

В CenterNet по промежуточному представлению изображения предсказываются тепловые карты (heatmaps) рейтингов присутствия как левого верхнего и правого нижнего углов, так и центра.

Также предсказывается карта смещений (offsets) для обнаруженных позиций углов и центра. Далее углы и центры прогнозируются уже с учётом этих поправочных смещений.

Параллельно с этим предсказывается карта эмбеддингов (векторов фиксированного размера) для каждой позиции. Как и в CornerNet, считается, что углы соответствуют одной рамке, если их эмбеддинги близки. Но дополнительно к этому рамка детектируется, если ей примерно соответствует обнаруженный центр рамки. Это уберегает метод повышает точность распознавания от ложных срабатываний (false positives), которые часто встречаются в CenterNet, как показано ниже [1]:

Красный полупрозрачный регион определяет, куда должна попасть центральная точка, чтобы в CenterNet детекция сработала. Для 2-х ложных срабатываний CornerNet слева центр в него не попадает, поэтому этих ложных срабатываний в CenterNet не будет.

Специальные виды пулинга

Для точного детектирования центра рамки используется специальный вид пулинга - CenterPooling. Этот пулинг для каждой позиции на карте признаков:

  1. ищет максимальное значение вдоль горизонтальной оси;

  2. ищет максимальное значение вдоль вертикальной оси;

  3. суммирует два найденных максимума.

Для повышения точности детектирования углов рамок вместо CornerPooling используется CascadeCornerPooling. CornerPooling хорошо работает для детекции границ объекта, но не способен заглядывать внутрь него, что как раз и исправляется через CascadeCornerPooling, работающего следующим образом для левого верхнего угла рамки:

Для каждой позиции карты признаков:

  1. ищется максимальный элемент, если сдвигаться вправо до края изображения;

  2. ищется максимальный элемент, если относительно позиции найденного максимума сдвигаться вниз;

  3. максимумы первого и второго шага суммируются, сумма записывается в текущую позицию.

Аналогично для каждой позиции карты признаков:

  1. ищется максимальный элемент, если сдвигаться вниз до края изображения;

  2. ищется максимальный элемент, если относительно позиции найденного максимума сдвигаться вправо;

  3. максимумы первого и второго шага суммируются, сумма записывается в текущую позицию.

Для правого нижнего угла операции в CascadeCornerPooling аналогичны, но инвертируются:

  • сдвиг вправо заменяется на сдвиг влево;

  • сдвиг вниз заменяется на сдвиг вверх.

Графически CenterPooling, CornerPooling и CascadeCornerPooling показаны ниже на рисунках (a),(b),(c) [1]:

Применение

Для повышения точности CenterNet применялся к исходному изображению и горизонтально отражённому, при этом одно и то же изображение бралось в разных разрешениях. К обнаруженным детекциям применялся мягкое подавление не-максимумов (soft NMS).

В итоге на датасете MS COCO [2] предложенная модель показала значение AP, равное 47%.

Литература

  1. Duan K. et al. Centernet: Keypoint triplets for object detection //Proceedings of the IEEE/CVF international conference on computer vision. – 2019. – С. 6569-6578.
  2. Lin T. Y. et al. Microsoft coco: Common objects in context //Computer Vision–ECCV 2014: 13th European Conference, Zurich, Switzerland, September 6-12, 2014, Proceedings, Part V 13. – Springer International Publishing, 2014. – С. 740-755.