- Передумови
- Як розпізнавання обличчя працює з OpenCV
- Виявлення обличчя за допомогою каскадних класифікаторів у OpenCV
Розпізнавання обличчя стає дедалі популярнішим, і більшість із нас уже користуються ним, навіть не підозрюючи про це. Будь то проста пропозиція тегів Facebook, фільтр Snapchat або вдосконалений нагляд за безпекою в аеропорту, функція розпізнавання обличчя вже вчинила свою магію. Китай розпочав застосовувати розпізнавання облич у школах для моніторингу відвідуваності та поведінки учнів. Роздрібні магазини почали використовувати функцію розпізнавання обличчя, щоб класифікувати своїх покупців та ізолювати людей, котрі мали історію шахрайства. З набагато більшими змінами, що відбуваються, не викликає сумнівів, що цю технологію можна буде побачити всюди найближчим часом.
У цьому підручнику ми дізнаємось, як ми можемо створити власну систему розпізнавання облич за допомогою бібліотеки OpenCV на Raspberry Pi. Перевага встановлення цієї системи на портативній Raspberry Pi полягає в тому, що ви можете встановити її де завгодно, щоб працювати як система спостереження. Як і всі системи розпізнавання облич, підручник включатиме два скрипти python, один - програма тренера, яка аналізуватиме набір фотографій конкретної людини та створюватиме набір даних (файл YML). Друга програма - програма Recognizerякий виявляє обличчя, а потім використовує цей файл YML для розпізнавання обличчя та згадання імені особи. Обидві програми, про які ми тут поговоримо, призначені для Raspberry Pi (Linux), але також будуть працювати на комп'ютерах Windows із дуже незначними змінами. У нас вже є серія навчальних посібників для початківців для початку роботи з OpenCV, ви можете переглянути всі підручники з OpenCV тут.
Передумови
Як вже говорилося раніше, ми будемо використовувати бібліотеку OpenCV для виявлення та розпізнавання облич. Тож переконайтеся, що ви встановили бібліотеку OpenCV на Pi, перш ніж продовжувати цей посібник. Також підключіть свій Pi до адаптера 2А та підключіть його до монітора дисплея за допомогою кабелю HDMI, оскільки ми не зможемо отримати вихід відео через SSH.
Також я не збираюся пояснювати, як саме працює OpenCV, якщо ви зацікавлені в навчанні обробці зображень, тоді ознайомтеся з цими основами OpenCV та розширеними підручниками з обробки зображень. Ви також можете дізнатись про контури, виявлення крапок тощо у цьому посібнику з сегментації зображень.
Як розпізнавання обличчя працює з OpenCV
Перш ніж розпочати, важливо зрозуміти, що виявлення обличчя та розпізнавання обличчя - це дві різні речі. При виявленні обличчя виявляється лише обличчя людини, програмне забезпечення не матиме уявлення про те, хто ця особа. У програмі « Розпізнавання обличчя» програмне забезпечення не тільки розпізнає обличчя, але й розпізнає людину. Тепер повинно бути зрозуміло, що перед виконанням розпізнавання обличчя нам потрібно виконати функцію «Визначення обличчя». Мені було б неможливо пояснити, як саме OpenCV виявляє обличчя чи будь-який інший об’єкт. Отже, якщо вам цікаво знати, що ви можете дотримуватися цього підручника з виявлення об’єктів.
Відеопоток із веб-камери - це не що інше, як довга послідовність нерухомих зображень, що оновлюються одне за одним. І кожне з цих зображень - це лише сукупність пікселів різних значень, зібраних у відповідному положенні. Тож як програма може розпізнати обличчя з цих пікселів і далі розпізнати людину в ньому? За цим стоїть багато алгоритмів, і спроба їх пояснити виходить за рамки цієї статті, але оскільки ми використовуємо бібліотеку OpenCV, дуже просто виконати розпізнавання облич, не заглиблюючись у поняття
Виявлення обличчя за допомогою каскадних класифікаторів у OpenCV
Тільки якщо ми зможемо розпізнати обличчя, ми зможемо його розпізнати або запам’ятати. Для виявлення такого об'єкта, як обличчя, OpenCV використовує щось, що називається "Класифікатори". Ці класифікатори - це попередньо навчений набір даних (файл XML), який може бути використаний для виявлення конкретного об’єкта в нашому випадку обличчя. Ви можете дізнатись більше про класифікатори виявлення обличчя тут. Окрім виявлення обличчя, класифікатори можуть виявляти інші об'єкти, такі як ніс, очі, номерний знак транспортного засобу, посмішка тощо. Список класифікаторів справ можна завантажити із ZIP-файлу нижче
Класифікатори для виявлення об’єктів у Python
Крім того, OpenCV також дозволяє створити власний класифікатор, який можна використовувати для виявлення будь-якого іншого об’єкта на зображенні, навчаючи ваш каскадний класифікатор. У цьому підручнику ми використовуватимемо класифікатор під назвою “haarcascade_frontalface_default.xml”, який визначатиме обличчя з переднього положення. Побачимо