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

Модель CenterNet

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Также

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

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

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

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

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

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

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

Для повышения точности 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.