Подавление не-максимумов
Алгоритмы детектирования генерируют избыточное количество выделений объектов интересующих классов, как показано на рисунке справа-вверху [1]:
Эти выделения соотносятся классу (классификатором) и немного уточняется их местоположение (регрессором), как показано справа внизу. Чтобы отобрать минимально достаточный набор всех выделений используется алгоритм подавления не-максимумов (non-maximum supression, NMS), фильтрующий лишние детекции для каждого класса в отдельности.
Алгоритм принимает на вход набор детекций (выделяющих рамок) и соответствующих рейтингов (вероятностей интересующего класса) , а на выходе выдаёт самые явные детекции без повторений с соответствующими рейтингами . Он работает следующим образом:
-
ВХОД:
-
- первоначальные детекции
-
- их рейтинги
-
- гиперпараметр NMS
-
-
АЛГОРИТМ:
-
- инициализируем выходные детекции
-
пока :
-
-
-
-
для :
-
если , то
-
-
-
-
вернуть
-
Мягкий вариант алгоритма
Традиционный NMS алгоритм жёстко отсеивает выделения, имеющие IoU с выделением, имеющим более высокий рейтинг. Это может негативно сказаться на количестве обнаруженных объектов (recall), которые сильно пересекаются, как на рисунке ниже:
Для того, чтобы так не происходило, в работе [1] предлагается оставлять все детекции, но для детекций, имеющих сильное пересечение с высокорейтинговыми детекциями, дополнительно снижать рейтинг. Итоговыми детекциями будут те, у которых рейтинг выше некоторого порога , устанавливая который достаточно низким, можно извлечь большее число объектов (ценой более частых дублирующихся выделений одного объекта). Формально алгоритм называется мягким подавлением не-максимумов (soft-NMS) выглядит следующим образом:
-
ВХОД:
-
- первоначальные детекции
-
- их рейтинги
-
- гиперпараметр NMS
-
-
АЛГОРИТМ:
-
- инициализируем выходные детекции
-
пока :
-
-
-
-
для :
-
-
вернуть
-
Как видим, в качестве в этот раз перебираются все детекции из , в результате чего , т.е. выходные детекции совпадают со входными, однако рейтинг детекций, имеющих сильное пересечение с высокорейтинговыми, оказывается сниженным за счёт домножения исходного рейтинга на для убывающей функции, принимающей значения на отрезке . Предлагаются два варианта этой функции:
- линейное перевзвешивание:
-
Гауссово перевзвешивание:
Линейное перевзвешивание приводит к разрывномому масштабированию, в отличие от Гауссова. В экспериментах [1] мягк ое подавление не-максимумов оказалось лучше, чем жёсткое. При этом иногда доминировало линейное, а иногда Гауссово.