Skip to content

Latest commit

 

History

History
179 lines (101 loc) · 15.6 KB

File metadata and controls

179 lines (101 loc) · 15.6 KB

Разпознаване на обекти

Моделите за класификация на изображения, с които сме работили досега, приемат изображение и произвеждат категоричен резултат, като например класа "число" в проблема MNIST. Въпреки това, в много случаи не искаме просто да знаем, че дадена снимка изобразява обекти - искаме да можем да определим тяхното точно местоположение. Именно това е целта на разпознаването на обекти.

Разпознаване на обекти

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

Наивен подход към разпознаване на обекти

Ако искахме да намерим котка на снимка, един много наивен подход към разпознаването на обекти би бил следният:

  1. Разделяме снимката на множество малки части.
  2. Извършваме класификация на изображения върху всяка част.
  3. Тези части, които водят до достатъчно висока активация, могат да се считат за съдържащи търсения обект.

Наивно разпознаване на обекти

Изображение от тетрадката с упражнения

Този подход обаче е далеч от идеален, защото позволява на алгоритъма да локализира рамката на обекта много неточно. За по-прецизно местоположение трябва да използваме някакъв вид регресия, за да предвидим координатите на рамките - и за това ни трябват специфични набори от данни.

Регресия за разпознаване на обекти

Тази публикация в блог предлага чудесно въведение в разпознаването на форми.

Набори от данни за разпознаване на обекти

Може да срещнете следните набори от данни за тази задача:

  • PASCAL VOC - 20 класа
  • COCO - Общи обекти в контекст. 80 класа, рамки и маски за сегментация

COCO

Метрики за разпознаване на обекти

Пресечна площ спрямо обединение (Intersection over Union)

Докато за класификация на изображения е лесно да се измери колко добре се представя алгоритъмът, за разпознаване на обекти трябва да измерим както коректността на класа, така и прецизността на местоположението на предвидената рамка. За последното използваме така наречената Пресечна площ спрямо обединение (IoU), която измерва колко добре се припокриват две рамки (или две произволни области).

IoU

Фигура 2 от този отличен блог пост за IoU

Идеята е проста - разделяме площта на пресечната област между две фигури на площта на тяхното обединение. За две идентични области IoU ще бъде 1, докато за напълно несвързани области ще бъде 0. В противен случай ще варира от 0 до 1. Обикновено разглеждаме само тези рамки, за които IoU е над определена стойност.

Средна прецизност (Average Precision)

Да предположим, че искаме да измерим колко добре се разпознава даден клас обекти $C$. За да го измерим, използваме метриката Средна прецизност, която се изчислява по следния начин:

  1. Разглеждаме кривата Прецизност-Съответствие, която показва точността в зависимост от стойността на прага за разпознаване (от 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

Средна средна прецизност - 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 - Бърза R-CNN

Този подход е подобен на R-CNN, но регионите се определят след прилагане на слоевете за конволюция.

FRCNN

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

Faster R-CNN

Основната идея на този подход е да се използва невронна мрежа за предсказване на ROI - така наречената Мрежа за предложения на региони. Статия, 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 и опитайте сами:

Преглед и самостоятелно обучение