Skip to content

Latest commit

 

History

History
178 lines (100 loc) · 15.4 KB

File metadata and controls

178 lines (100 loc) · 15.4 KB

Обнаружение объектов

Модели классификации изображений, с которыми мы работали до сих пор, принимали изображение и выдавали категориальный результат, например, класс "цифра" в задаче MNIST. Однако во многих случаях нам недостаточно просто знать, что на изображении есть объекты — мы хотим определить их точное местоположение. Именно этим занимается обнаружение объектов.

Обнаружение объектов

Изображение с веб-сайта YOLO v2

Простой подход к обнаружению объектов

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

  1. Разбить изображение на множество плиток.
  2. Запустить классификацию изображений для каждой плитки.
  3. Те плитки, которые дают достаточно высокую активацию, можно считать содержащими искомый объект.

Простое обнаружение объектов

Изображение из учебной тетради

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

Регрессия для обнаружения объектов

Этот блог предлагает отличное введение в обнаружение форм.

Наборы данных для обнаружения объектов

Вы можете встретить следующие наборы данных для этой задачи:

  • PASCAL VOC — 20 классов.
  • COCO — Common Objects in Context. 80 классов, ограничивающие рамки и маски сегментации.

COCO

Метрики для обнаружения объектов

Пересечение над объединением (IoU)

Если для классификации изображений легко измерить, насколько хорошо работает алгоритм, то для обнаружения объектов нужно оценивать как правильность класса, так и точность предсказанных координат ограничивающей рамки. Для последнего используется метрика Пересечение над объединением (IoU), которая измеряет, насколько хорошо две рамки (или две произвольные области) перекрываются.

IoU

Рисунок 2 из этого отличного блога о IoU

Идея проста — мы делим площадь пересечения двух фигур на площадь их объединения. Для двух идентичных областей IoU будет равен 1, а для полностью несвязанных областей — 0. В остальных случаях значение будет варьироваться от 0 до 1. Обычно учитываются только те ограничивающие рамки, для которых IoU превышает определенное значение.

Средняя точность (Average Precision)

Предположим, мы хотим измерить, насколько хорошо распознается определенный класс объектов $C$. Для этого используется метрика Средняя точность, которая рассчитывается следующим образом:

  1. Рассматривается кривая точности-отзыва (Precision-Recall), показывающая точность в зависимости от порогового значения обнаружения (от 0 до 1).
  2. В зависимости от порога мы получим больше или меньше объектов, обнаруженных на изображении, и разные значения точности и отзыва.
  3. Кривая будет выглядеть так:

Изображение из NeuroWorkshop

Средняя точность для данного класса $C$ — это площадь под этой кривой. Более точно, ось отзыва обычно делится на 10 частей, и точность усредняется по всем этим точкам:

$$ AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) $$

AP и IoU

Мы будем учитывать только те обнаружения, для которых IoU превышает определенное значение. Например, в наборе данных PASCAL VOC обычно предполагается $\mbox{IoU Threshold} = 0.5$, а в COCO AP измеряется для разных значений $\mbox{IoU Threshold}$.

Изображение из NeuroWorkshop

Средняя средняя точность (Mean Average Precision — mAP)

Основной метрикой для обнаружения объектов является Средняя средняя точность или mAP. Это значение средней точности, усредненное по всем классам объектов, а иногда также по $\mbox{IoU Threshold}$. Более подробно процесс расчета mAP описан в этом блоге, а также здесь с примерами кода.

Различные подходы к обнаружению объектов

Существует два основных класса алгоритмов обнаружения объектов:

  • Сети предложений регионов (R-CNN, Fast R-CNN, Faster R-CNN). Основная идея заключается в генерации регионов интереса (ROI) и запуске CNN для их анализа, чтобы найти максимальную активацию. Это немного похоже на простой подход, за исключением того, что ROI генерируются более умным способом. Одним из основных недостатков таких методов является их медлительность, так как требуется множество проходов классификатора CNN по изображению.
  • Однопроходные методы (YOLO, SSD, RetinaNet). В этих архитектурах сеть спроектирована так, чтобы предсказывать как классы, так и ROI за один проход.

R-CNN: CNN на основе регионов

R-CNN использует Selective Search для генерации иерархической структуры регионов ROI, которые затем проходят через CNN для извлечения признаков, SVM-классификаторы для определения класса объекта и линейную регрессию для определения координат ограничивающей рамки. Официальная статья

RCNN

Изображение из van de Sande et al. ICCV’11

RCNN-1

Изображения из этого блога

F-RCNN — Fast R-CNN

Этот подход похож на R-CNN, но регионы определяются после применения сверточных слоев.

FRCNN

Изображение из официальной статьи, arXiv, 2015

Faster R-CNN

Основная идея этого подхода заключается в использовании нейронной сети для предсказания ROI — так называемой сети предложений регионов (Region Proposal Network). Статья, 2016

FasterRCNN

Изображение из официальной статьи

R-FCN: Полностью сверточная сеть на основе регионов

Этот алгоритм еще быстрее, чем Faster R-CNN. Основная идея следующая:

  1. Извлекаем признаки с помощью ResNet-101.
  2. Признаки обрабатываются Position-Sensitive Score Map. Каждый объект из $C$ классов делится на $k\times k$ регионов, и сеть обучается предсказывать части объектов.
  3. Для каждой части из $k\times k$ регионов все сети голосуют за классы объектов, и выбирается класс объекта с максимальным количеством голосов.

r-fcn image

Изображение из официальной статьи

YOLO — You Only Look Once

YOLO — это алгоритм реального времени с одним проходом. Основная идея следующая:

  • Изображение делится на $S\times S$ регионы.
  • Для каждого региона CNN предсказывает $n$ возможных объектов, координаты ограничивающей рамки и уверенность=вероятность * IoU.

YOLO

Изображение из официальной статьи

Другие алгоритмы

✍️ Упражнения: Обнаружение объектов

Продолжите обучение в следующей тетради:

ObjectDetection.ipynb

Заключение

В этом уроке вы познакомились с различными способами обнаружения объектов!

🚀 Задание

Прочитайте эти статьи и тетради о YOLO и попробуйте их самостоятельно:

Обзор и самостоятельное изучение