Skip to content

Latest commit

 

History

History
179 lines (101 loc) · 14.5 KB

File metadata and controls

179 lines (101 loc) · 14.5 KB

Детекција објеката

Модели за класификацију слика које смо до сада обрађивали узимају слику и производе категоријски резултат, као што је класа 'број' у проблему MNIST. Међутим, у многим случајевима не желимо само да знамо да слика приказује објекте - желимо да одредимо њихову прецизну локацију. Управо то је суштина детекције објеката.

Детекција објеката

Слика са YOLO v2 веб сајта

Наивни приступ детекцији објеката

Претпоставимо да желимо да пронађемо мачку на слици. Веома наиван приступ детекцији објеката био би следећи:

  1. Разбијте слику на више плочица.
  2. Покрените класификацију слике на свакој плочици.
  3. Плочице које резултирају довољно високом активацијом могу се сматрати да садрже тражени објекат.

Наивна детекција објеката

Слика из радне свеске за вежбе

Међутим, овај приступ је далеко од идеалног, јер омогућава алгоритму да веома непрецизно одреди оквир објекта. За прецизнију локацију, потребно је да применимо неку врсту регресије за предвиђање координата оквира - а за то су нам потребни специфични скупови података.

Регресија за детекцију објеката

Овај блог пост пружа одличан увод у детекцију облика.

Скупови података за детекцију објеката

Можете наићи на следеће скупове података за овај задатак:

  • PASCAL VOC - 20 класа
  • COCO - Уобичајени објекти у контексту. 80 класа, оквири и маске за сегментацију

COCO

Метрике за детекцију објеката

Пресек преко уније (Intersection over Union)

Док је за класификацију слика лако измерити колико добро алгоритам ради, за детекцију објеката морамо измерити и исправност класе, као и прецизност локације предвиђеног оквира. За ово друго користимо такозвани Пресек преко уније (IoU), који мери колико добро се два оквира (или две произвољне области) преклапају.

IoU

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

Идеја је једноставна - делимо област пресека између две фигуре са облашћу њихове уније. За две идентичне области, IoU би био 1, док би за потпуно одвојене области био 0. У другим случајевима, IoU ће варирати од 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). Главна идеја је генерисање регионa од интереса (ROI) и покретање CNN-а преко њих, тражећи максималну активацију. Ово је донекле слично наивном приступу, са изузетком да се ROI генеришу на паметнији начин. Један од главних недостатака ових метода је што су споре, јер је потребно много пролаза CNN класификатора преко слике.
  • Један пролаз (YOLO, SSD, RetinaNet) методе. У овим архитектурама дизајнирамо мрежу да предвиђа и класе и ROI у једном пролазу.

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

R-CNN користи Селективно претраживање за генерисање хијерархијске структуре ROI региона, који се затим прослеђују кроз CNN екстракторе карактеристика и SVM класификаторе за одређивање класе објекта, и линеарну регресију за одређивање координата оквира. Званични рад

RCNN

Слика из ван де Санде и др. ICCV’11

RCNN-1

Слике из овог блога

F-RCNN - Брзи R-CNN

Овај приступ је сличан R-CNN-у, али региони се дефинишу након што су примењени слојеви конволуције.

FRCNN

Слика из званичног рада, arXiv, 2015

Бржи R-CNN

Главна идеја овог приступа је коришћење неуронске мреже за предвиђање ROI - такозване мреже за предлог региона. Рад, 2016

FasterRCNN

Слика из званичног рада

R-FCN: Потпуно конволуциона мрежа заснована на регионима

Овај алгоритам је још бржи од Faster R-CNN-а. Главна идеја је следећа:

  1. Екстрахујемо карактеристике користећи ResNet-101.
  2. Карактеристике се обрађују помоћу мапе оцена осетљивих на позицију. Сваки објекат из $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-у и испробајте их сами:

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