Модель CenterNet
Модель CenterNet [1] строится на базе CornerNet, и дополнительно увеличивает её точность за счёт реконструкции выде ляющих рамок не только по их левому верхнему и правому нижнему углу, но и по предсказываемому центру рамки, как показано на рисунке [1]:
Предсказание углов хорошо настраивается выделять границы объектов, однако ему всё ещё недостаёт заглядывания внутрь содержимого извлекаемой рамки, чтобы убедиться в том, что целевой объект там действительно находится.
Поэтому в CenterNet по промежуточному представлению изображения предсказываются тепловые карты (heatmaps) рейтингов присутствия как левого верхнего и правого нижнего углов, так и центра.
Также предсказывается карта смещений (offsets) для обнаруженных позиций углов и центра. Далее углы и центры учитываются уже с учётом этих поправочных смещений.
Параллельно с этим предсказывается карта эмбеддингов (векторов фиксированного размера) для каждой позиции. Как и в CornerNet, считается, что углы соответствуют одной рамке, если их эмбеддинги близки. Но дополнительно к этому рамка детектируется, если ей примерно соответствует обнаруженный центр рамки. Это уберегает метод от ложных срабатываний, которые часто встречаются в CenterNet, как показано ниже [1] и повышает точность распознавания:
Красный полупрозрачный регион определяет, куда должна попасть центральная точка, чтобы в CenterNet детекция сработала. Для 2х ложных срабатываний CornerNet слева центр в него не попадает, поэтому этих ложных срабатываний в CenterNet не будет.
Для точного детектирования центра рамки используется специальный вид пулингаCenterPooling. Этот пулинг для каждой позиции на карте признаков:
-
ищет максимальное значение вдоль горизонтальной оси
-
ищет максимальное значение вдоль вертикальной оси
-
суммирует два найденных максимума
Для повышения точности детектирования углов рамок вместо CornerPooling используется CascadeCornerPooling. CornerPooling хорошо работает для детекции границ объекта, но не способен заглядывать внутрь него, что как раз и исправляется через CascadeCornerPooling, работающего следующим образом для левого верхнего угла рамки:
Для каждой позиции карты признаков:
-
ищется максимальный элемент, если сдвигаться вправо до края изображения
-
ищется максимальный элемент, если относительно позиции найденного максимума сдвигаться вниз
-
максимумы первого и второго шага суммируются, сумма записывается в текущую позицию
Также
-
ищется максимальный элемент, если сдвигаться вниз до края изображения
-
ищется максимальный элемент, если относительно позиции найденного максимума сдвигаться вправо
-
максимумы первого и второго шага суммируются, сумма записывается в текущую позицию
Для правого нижнего угла операции в CascadeCornerPooling аналогичны, но инвертируются:
-
сдвиг вправо заменяется на сдвиг влево
-
сдвиг вниз заменяется на сдвиг вверх
Графически CenterPooling, CornerPooling и CascadeCornerPooling показаны ниже [1] как соответственно (a),(b),(c):
Для повышения точности CenterNet применялся к исходному изображению и горизонтально отражённому, при этом одно и то же изображение бралось в разных разрешениях. К обнаруженным детекчиям применялся мягкое подавление не-максимумов (soft NMS).
В итоге на датасете MS COCO [2] предложенная модель показала значение AP, равное 47%.
Литература
- Duan K. et al. Centernet: Keypoint triplets for object detection //Proceedings of the IEEE/CVF international conference on computer vision. – 2019. – С. 6569-6578.
- 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.