Поглеждаш само веднъж (YOLO) е модерна система за откриване на обекти в реално време. Той използва конволюционна невронна мрежа (CNN) за откриване на обекти.

Класификация на изображение срещу откриване на обект

Класификацията на изображението обикновено се отнася до предвиждане кой обект присъства в изображението. Така че входът ще бъде набор от изображения, съдържащи картина на животни (да кажем зебра, тигър и слон). Резултатът ще бъде класифициране като едно от горните животни. Точната позиция на животното в изображението няма значение.

Нека вземем входно изображение от 28X28. Използвайки RGB мащаб, входът ще бъде 28X28X3 вектор. Това ще бъдат процеси чрез Convolution Neural Network - комбинация от конволюция, максимално обединяване и напълно свързан слой. Крайният изход ще бъде вектор 3X1 (ще бъде вероятност за всеки клас животни). Прилагането на функцията SoftMax върху този вектор ще даде точна прогнозирана класификация за изображението. За повече подробности относно CNN проверете връзката по-долу.



Откриването на обект от друга страна предвижда местоположението на обекта заедно с типа на обекта. Използвайки същия пример като по-горе, CNN ще даде вектор, който ще има

  1. Ако някой от обектите, които ни интересуват, е там или не, т.е. 0,1.
  2. Местоположение на обект с помощта на координата на центъра и височина и ширина на кутията около обекта.
  3. c1,c2,c3 трябва да изобразят кой обект е (търсим тигър, слон и зебра)

По-долу е векторът на параметъра. Това ще бъде обяснено секция Изходен вектор.

YOLO: Фон

YOLO е резултат от статия, публикувана през 2015 г. — „You Only Look Once: Unified, Real-Time Object Detection“.

Официалното внедряване се извършва от DarkNet и е достъпно на github.

Общ преглед

YOLO разделя изображението на региони. След това прогнозира възможността за наличие на обект в този регион. Той също така предвижда ограничаващите полета за открития обект. След това елиминира множество припокриващи се кутии - за да се увери, че един обект е заобиколен само в една кутия.

ЙОЛО: Стъпки

  1. Взема входното изображение. Да приемем, че входното изображение е 256X256. Така че RGB мащабът ще бъде представен като вектор 256X256X3
  2. Това входно изображение се предава през CNN.
  3. За да разберем как работи крайната прогноза — нека разберем какъв изход търсим.

Изходен вектор:

Изображението ще бъде разделено на региони. В този пример ще приемем, че резултатът е разделяне на 9 област (т.е. 3 X 3). Ако приемем, че искаме да открием кораб и птици - 2 клас обекти в изображенията

Така че за всяка от 9 клетки в решетката на изображението по-горе ни трябва следното като изход

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

В Grid G, тъй като няма изображение, свързаните показатели ще бъдат

В таблица D изображението по-долу обяснява числата

h и b се нормализират, като се приемат като част от височината и ширината на пълното изображение. Така че, ако h=.15 и b е .3 в горното изображение след нормализиране

h(нормализирано) = .15/3=.05 и b= .3/3=.1 (Общият размер на изображението е 3,3)

Височината и теглото на кутията може да са по-големи от мрежата, към която се намират, но когато се нормализират с помощта на ширината и ширината на изображението — винаги са по-малки от 1.

В горния случай размерът на изхода ще бъде 3X3X7.

Това, което видяхме досега, е мрежа, която улавя изображение на един клас. Но това не винаги е вярно. Например в Grid E. Има както кораб, така и птица. За обработка на такива се използват „Anchor Box“.

Анкерна кутия

Да кажем, че искаме да предвидим 2 обекта на мрежа. В такъв случай размерът на изходящия вектор ще се промени на 2X7 =14. Metrix ще бъде като

Всякакъв брой опорни кутии може да бъде дефиниран за решетка, но обикновено не е повече от 5. В нормален случай ние разделяме изходното изображение в мрежа 19X19, така че 5 котвени кутии са достатъчни.

Резюме

  1. Имаме входно изображение, да речем 265X256. Входният вектор към CNN е 256X256X3
  2. Това се предава на CNN.
  3. Предположение: искаме нашето изображение да бъде решетка 3X3 (обикновено за добра прогноза е 19X19), максимум 2 обекта на решетка (т.е. 2 закрепени кутии) и 3 вида обекти, които трябва да бъдат идентифицирани
  4. Слоят CNN трябва да произвежда изходен вектор с размерност 3X3X(2X(1+4+3))= 3X3X(2X8)=3X3X16

5. Пресичане на Union(IoU) и немаксимално потискане: Преди да направим окончателното погибел, можем да елиминираме някаква ограничаваща кутия, предвидена в изходния слой

IoU:

Той използва прогнозирана зона на обект и действителна кутия на обект, за да елиминира прогнозите. Ако зоните на пресичане на предвидената кутия и действителната кутия са i, тогава

IoU= i/(Сума от площта на предвидената + действителната кутия)

Ако този IoU ‹ някакъв праг можем да премахнем това поле. Този праг обикновено е 0,5 или повече.

Немаксимално потискане

Елиминираме полето, което има вероятност по-малка от определен праг.

За кутия, която остава, избираме кутия с най-висока вероятност и елиминираме всички кутии, които имат висока IoU с тази кутия с най-висока вероятност.

Същият процес се повтаря за кутия със следващата кутия с най-висока вероятност.

Това се прави, докато имаме една кутия около обекта.

Истинската сила на YOLO е скоростта, с която може да открие обектите. Видеоклипът по-долу показва силата на YOLO да открива обекти в реално време.

Допълнителна литература

За откриване на обекти и YOLO дълбоко гмуркане, моля, посетете курса на CNN на Andrew Ng (Седмица 3- Откриване на обекти)

https://www.coursera.org/learn/convolutional-neural-networks