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

Детекция объектов

В задаче детекции объектов (object detection) на входном изображении необходимо найти и выделить прямоугольной рамкой все объекты заданных классов, как показано ниже (источник):

Задача детекции активно применяется в различных областях:

  • Подсчёт числа участников мероприятия, оценка пассажиропотока в общественном транспорте.

  • Детектирование людей в системах безопасности, детектирование запрещённых предметов.

  • Детектирование товаров на полках в магазине и на складах в целях оптимизации логистики.

  • Детектирование машин, пешеходов, светофоров и дорожных знаков в автоуправляемых машинах (self-driving cars).

Простой подход к детекции

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

Объект может быть разного размера, поэтому нужно применить этот метод ко входному изображению в разных разрешениях.

Указанный подход подходит для случаев, когда распознаваемый объект имеет примерно одинаковый вид - например, когда выделяем определённые буквы и цифры при распознавании печатного текста.

В общем же случае он имеет ограниченную применимость:

  • обрабатываемая фотография могла быть сделана в разное время суток, целевой объект, освещённый по-другому, может не выделиться;

  • объект может располагаться под углом, что также снизит корреляцию с образцом;

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

Поэтому для детекции общего случая используют нейросети способные выделять сложные объекты в более общем контексте, описанные далее. Мы рассмотрим базовые методы детекции объектов, такие как YOLO, SSD, RetinaNet, CornerNet, CenterNet и другие.