Моделі класифікації зображень, з якими ми працювали раніше, брали зображення і видавали категоріальний результат, наприклад, клас "число" у задачі MNIST. Однак у багатьох випадках нам недостатньо просто знати, що на зображенні є об'єкти — ми хочемо визначити їх точне розташування. Саме це є метою виявлення об'єктів.
Зображення з веб-сайту YOLO v2
Припустимо, ми хочемо знайти кота на зображенні. Дуже наївний підхід до виявлення об'єктів може виглядати так:
- Розбити зображення на кілька плиток.
- Запустити класифікацію зображень для кожної плитки.
- Ті плитки, які дають достатньо високу активацію, можна вважати такими, що містять потрібний об'єкт.
Зображення з зошита вправ
Однак цей підхід далекий від ідеального, оскільки він дозволяє алгоритму дуже неточно визначати межі об'єкта. Для більш точного визначення необхідно використовувати якийсь вид регресії, щоб передбачити координати межових рамок — і для цього потрібні спеціальні набори даних.
Ця стаття в блозі пропонує чудове введення у виявлення форм.
Ви можете зустріти наступні набори даних для цієї задачі:
- PASCAL VOC — 20 класів
- COCO — Загальні об'єкти в контексті. 80 класів, межові рамки та маски сегментації
Для класифікації зображень легко виміряти, наскільки добре працює алгоритм, але для виявлення об'єктів потрібно оцінити як правильність класу, так і точність визначення розташування межової рамки. Для останнього використовується так звана Перетин над об'єднанням (IoU), яка вимірює, наскільки добре дві рамки (або дві довільні області) перекриваються.
Рисунок 2 з цієї чудової статті про IoU
Ідея проста — ми ділимо площу перетину між двома фігурами на площу їх об'єднання. Для двох ідентичних областей IoU буде дорівнювати 1, а для повністю роз'єднаних областей — 0. В інших випадках значення буде варіюватися від 0 до 1. Зазвичай враховуються лише ті межові рамки, для яких IoU перевищує певне значення.
Припустимо, ми хочемо оцінити, наскільки добре розпізнається певний клас об'єктів
- Розглядається крива Точність-Відклик, яка показує точність залежно від порогового значення виявлення (від 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 — так званої мережі пропозицій регіонів. Стаття, 2016
Зображення з офіційної статті
Цей алгоритм ще швидший, ніж Faster R-CNN. Основна ідея полягає у наступному:
- Ми вилучаємо ознаки за допомогою ResNet-101.
- Ознаки обробляються картою оцінок, чутливою до позиції. Кожен об'єкт із
$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 для виявлення об'єктів











