- Предварителни условия
- Как работи разпознаването на лица с OpenCV
- Разпознаване на лица с помощта на каскадни класификатори в OpenCV
Разпознаването на лица става все по-популярно и повечето от нас вече го използват, без дори да го осъзнават. Независимо дали става въпрос за просто предложение за етикет на Facebook или Snapchat филтър или усъвършенствано наблюдение на сигурността на летището, разпознаването на лица вече е направило своята магия в него. Китай започна да използва разпознаването на лица в училищата, за да следи посещаемостта и поведението на учениците. Търговските магазини започнаха да използват разпознаването на лица, за да категоризират своите клиенти и да изолират хора с история на измами. С много повече промени в ход, няма съмнение, че тази технология ще се види навсякъде в близко бъдеще.
В този урок ще научим как можем да изградим собствена система за разпознаване на лица, използвайки библиотеката OpenCV на Raspberry Pi. Предимството на инсталирането на тази система на преносима Raspberry Pi е, че можете да я инсталирате навсякъде, за да я използвате като система за наблюдение. Подобно на всички системи за разпознаване на лица, урокът ще включва два python скрипта, единият е програма Trainer, която ще анализира набор от снимки на определен човек и ще създаде набор от данни (YML файл). Втората програма е програмата Recognizerкойто разпознава лице и след това използва този YML файл, за да разпознае лицето и да спомене името на човека. И двете програми, които ще обсъдим тук, са за Raspberry Pi (Linux), но ще работят и на компютри с Windows с много леки промени. Вече имаме поредица от уроци за начинаещи за започване на работа с OpenCV, можете да проверите всички уроци по OpenCV тук.
Предварителни условия
Както беше казано по-рано, ние ще използваме библиотеката OpenCV за откриване и разпознаване на лица. Така че не забравяйте да инсталирате OpenCV Library на Pi, преди да продължите с този урок. Също така захранвайте своя Pi с адаптер 2A и го свържете към монитор на дисплея чрез HDMI кабел, тъй като няма да можем да получим видео изхода през SSH.
Също така няма да обяснявам как точно работи OpenCV, ако се интересувате от обучението за обработка на изображения, разгледайте тези основи на OpenCV и разширени уроци за обработка на изображения. Можете също така да научите за контурите, откриването на петна и т.н. в този урок за сегментиране на изображения.
Как работи разпознаването на лица с OpenCV
Преди да започнем е важно да разберем, че разпознаването на лице и разпознаването на лицето са две различни неща. При разпознаване на лица се открива само лицето на човек, софтуерът няма идея кой е този човек. При разпознаването на лица софтуерът не само ще разпознае лицето, но и ще разпознае човека. Сега трябва да е ясно, че трябва да извършим Разпознаване на лице, преди да извършим Разпознаване на лица. Не би било възможно да обясня как точно OpenCV открива лице или друг обект по този въпрос. Така че, ако сте любопитни да знаете, че можете да следвате този урок за откриване на обекти.
Видео емисията от уеб камера не е нищо повече от дълга последователност от неподвижни изображения, които се актуализират едно след друго. И всяко от тези изображения е просто колекция от пиксели с различни стойности, събрани в съответната му позиция. И така, как една програма може да разпознае лице от тези пиксели и да разпознае по-нататък човека в него? Зад него има много алгоритми и опитът да ги обясни е извън обхвата на тази статия, но тъй като използваме библиотеката OpenCV, е много лесно да извършим разпознаване на лица, без да навлизаме по-задълбочено в концепциите
Разпознаване на лица с помощта на каскадни класификатори в OpenCV
Само ако успеем да открием лице, ще можем да го разпознаем или запомним. За откриване на обект като лице OpenCV използва нещо, наречено класификатори. Тези класификатори са предварително обучен набор от данни (XML файл), който може да се използва за откриване на определен обект в нашия случай лице. Можете да научите повече за класификаторите за разпознаване на лица тук. Освен да разпознават лице, класификаторите могат да откриват и други обекти като нос, очи, регистрационна табела на автомобила, усмивка и др. Списъкът с класификаторите на дела може да бъде изтеглен от ZIP файла по-долу
Класификатори за откриване на обекти в Python
Освен това OpenCV ви позволява да създадете свой собствен класификатор, който може да се използва за откриване на всеки друг обект в изображение чрез обучение на вашия каскаден класификатор. В този урок ще използваме класификатор, наречен „haarcascade_frontalface_default.xml“, който ще разпознае лицето от предно положение. Ще видим