Модели классификации изображений, с которыми мы работали до сих пор, принимали изображение и выдавали категориальный результат, например, класс "цифра" в задаче MNIST. Однако во многих случаях нам недостаточно просто знать, что на изображении есть объекты — мы хотим определить их точное местоположение. Именно этим занимается обнаружение объектов.
Изображение с веб-сайта YOLO v2
Предположим, мы хотим найти кошку на изображении. Очень простой подход к обнаружению объектов может выглядеть следующим образом:
- Разбить изображение на множество плиток.
- Запустить классификацию изображений для каждой плитки.
- Те плитки, которые дают достаточно высокую активацию, можно считать содержащими искомый объект.
Изображение из учебной тетради
Однако этот подход далек от идеала, так как он позволяет алгоритму лишь приблизительно определить границы объекта. Для более точного определения местоположения необходимо использовать регрессию для предсказания координат ограничивающих рамок — а для этого нужны специальные наборы данных.
Этот блог предлагает отличное введение в обнаружение форм.
Вы можете встретить следующие наборы данных для этой задачи:
- PASCAL VOC — 20 классов.
- COCO — Common Objects in Context. 80 классов, ограничивающие рамки и маски сегментации.
Если для классификации изображений легко измерить, насколько хорошо работает алгоритм, то для обнаружения объектов нужно оценивать как правильность класса, так и точность предсказанных координат ограничивающей рамки. Для последнего используется метрика Пересечение над объединением (IoU), которая измеряет, насколько хорошо две рамки (или две произвольные области) перекрываются.
Рисунок 2 из этого отличного блога о IoU
Идея проста — мы делим площадь пересечения двух фигур на площадь их объединения. Для двух идентичных областей IoU будет равен 1, а для полностью несвязанных областей — 0. В остальных случаях значение будет варьироваться от 0 до 1. Обычно учитываются только те ограничивающие рамки, для которых IoU превышает определенное значение.
Предположим, мы хотим измерить, насколько хорошо распознается определенный класс объектов
- Рассматривается кривая точности-отзыва (Precision-Recall), показывающая точность в зависимости от порогового значения обнаружения (от 0 до 1).
- В зависимости от порога мы получим больше или меньше объектов, обнаруженных на изображении, и разные значения точности и отзыва.
- Кривая будет выглядеть так:
Изображение из NeuroWorkshop
Средняя точность для данного класса
Мы будем учитывать только те обнаружения, для которых IoU превышает определенное значение. Например, в наборе данных PASCAL VOC обычно предполагается
Изображение из NeuroWorkshop
Основной метрикой для обнаружения объектов является Средняя средняя точность или mAP. Это значение средней точности, усредненное по всем классам объектов, а иногда также по
Существует два основных класса алгоритмов обнаружения объектов:
- Сети предложений регионов (R-CNN, Fast R-CNN, Faster R-CNN). Основная идея заключается в генерации регионов интереса (ROI) и запуске CNN для их анализа, чтобы найти максимальную активацию. Это немного похоже на простой подход, за исключением того, что ROI генерируются более умным способом. Одним из основных недостатков таких методов является их медлительность, так как требуется множество проходов классификатора CNN по изображению.
- Однопроходные методы (YOLO, SSD, RetinaNet). В этих архитектурах сеть спроектирована так, чтобы предсказывать как классы, так и ROI за один проход.
R-CNN использует Selective Search для генерации иерархической структуры регионов ROI, которые затем проходят через CNN для извлечения признаков, SVM-классификаторы для определения класса объекта и линейную регрессию для определения координат ограничивающей рамки. Официальная статья
Изображение из van de Sande et al. ICCV’11
Изображения из этого блога
Этот подход похож на R-CNN, но регионы определяются после применения сверточных слоев.
Изображение из официальной статьи, arXiv, 2015
Основная идея этого подхода заключается в использовании нейронной сети для предсказания ROI — так называемой сети предложений регионов (Region Proposal Network). Статья, 2016
Изображение из официальной статьи
Этот алгоритм еще быстрее, чем Faster R-CNN. Основная идея следующая:
- Извлекаем признаки с помощью ResNet-101.
- Признаки обрабатываются Position-Sensitive Score Map. Каждый объект из
$C$ классов делится на$k\times k$ регионов, и сеть обучается предсказывать части объектов. - Для каждой части из
$k\times k$ регионов все сети голосуют за классы объектов, и выбирается класс объекта с максимальным количеством голосов.
Изображение из официальной статьи
YOLO — это алгоритм реального времени с одним проходом. Основная идея следующая:
- Изображение делится на
$S\times S$ регионы. - Для каждого региона CNN предсказывает
$n$ возможных объектов, координаты ограничивающей рамки и уверенность=вероятность * IoU.
Изображение из официальной статьи
- RetinaNet: официальная статья
- SSD (Single Shot Detector): официальная статья
Продолжите обучение в следующей тетради:
В этом уроке вы познакомились с различными способами обнаружения объектов!
Прочитайте эти статьи и тетради о YOLO и попробуйте их самостоятельно:
- Хороший блог о YOLO.
- Официальный сайт
- YOLO: Реализация на Keras, пошаговая тетрадь
- YOLO v2: Реализация на Keras, пошаговая тетрадь
- Обнаружение объектов от Нихила Сарданы.
- Хорошее сравнение алгоритмов обнаружения объектов.
- Обзор алгоритмов глубокого обучения для обнаружения объектов.
- Пошаговое введение в основные алгоритмы обнаружения объектов.
- Реализация Faster R-CNN на Python для обнаружения объектов.











