Найбільш точні результати надає пошук за зразком (фотографії або зображення з архіву) і пошук по особам. Про технологію пошуку за прикметами наша компанія розповідала в статті «Macroscop: швидкий пошук і перехоплення об’єктів за прикметами», тому зараз ми поговоримо про алгоритми, що дозволяють детектувати і розпізнавати обличчя людей в кадрі.
Виявлення облич — каскади Хаара
Завдання виявлення осіб вивчається фахівцями в області комп’ютерного зору давно, і досягнуті в цьому напрямку результати вже дуже високі. У даній статті я розгляну найпопулярніший на сьогодні підхід — детектування осіб з використанням каскадів Хаара.
Каскади Хаара — набори масок, прямокутних віконець, кожне з яких представляє собою зображення з деяким чорно-білим візерунком (комбінацією чорних і білих частин). Таких масок може бути необмежена кількість, складність візерунків може також відрізнятися
Алгоритм детектування
Маски накладаються на різні частини кадру, і за допомогою цього накладення програма визначає, чи є особа. Накладення маски на певну частину кадру дає числове значення — результат згортки маски з кадром: програма складає яскравість всіх пікселів зображення, що потрапили при накладенні в білу частину маски, а також яскравість всіх пікселів, що потрапили в чорну частину маски, потім обчислює різницю цих значень. Результат згортки порівнюється з пороговою величиною.
Популярність даного підходу визначається тим, що згортка обчислюється дуже швидко і просто — достатньо виконати всього три операції для кожного прямокутного елемента маски.
Навчання детектора облич
Зображення обличчя людини відрізняються кількома характерними особливостями:
1. З фронтальної точки зору особа має темні і світлі ділянки і зони (темні — очі, губи; світлі — лоб, щоки, підборіддя).
2. Особи всіх людей однотипні (вони різні в деталях, але в загальному зображення облич людей однакові).
Це означає, що можна підібрати такий набір масок (каскад Хаара) і скласти такий класифікатор (алгоритм, який визначає той чи інший об’єкт в кадрі), який буде враховувати ці особливості і максимально точно зможе детектувати особа.
У процесі підбору масок класифікатор можна навчити для підвищення точності детектування. Для навчання та поліпшення роботи класифікатора застосовується алгоритм AdaBoost. Створюється навчальна вибірка, що складається з великої кількості фотографій із зображеннями облич, і по черзі застосовується кожна з масок класифікатора.
Масок може бути також величезна кількість з різними варіаціями біло-чорних візерунків. Кожна маска при пакунку дає певне значення. Якщо це значення вище граничної величини, то в кадрі присутній особа. Поряд з позитивною навчальної вибіркою, що містить зображення осіб, створюється негативна вибірка, на фотографіях якої осіб немає. На цій вибірці теж проходить навчання класифікатора, але в цьому випадку згортка повинна видавати значення менше порогової величини.
Якщо на будь-якої фотографії вибірки одна маска помилилася, то вага (важливість) цієї фотографії для інших масок збільшується.
За результатами згортки з позитивною і негативною вибіркою маска потрапляє в каскад класифікатора з деяким коефіцієнтом, що враховує погрішність детектування маскою осіб і вага фотографій вибірки, на яких маска не помилилася. Модуль виявлення осіб порівнює суму згорток всіх масок каскаду класифікатора з урахуванням їх коефіцієнтів похибки з пороговою величиною. Якщо сума більше порога, детектор видає сигнал про присутність особи в кадрі.
Найчастіше вибірка містить кадри із зображеннями облич анфас, тому і фіксуються на відео найкраще особи при такому розташуванні. Однак класифікатор можна навчити детектувати особи в різних положеннях, створюючи відповідні вибірки.
Розпізнавання облич — особливі точки і 3D-моделі
Існують різні алгоритми, що застосовуються для розпізнавання облич людей. Під розпізнаванням розуміється порівняння продетектированного в кадрі особи з еталонним зображенням в базі.
Робота з 2D-зображеннями
Найбільш часто використовуваний алгоритм працює з особливими точками особи і відстанями між ними. Ці точки і відстані унікальні, тому порівнюючи їх з відповідними точками і відстанями еталонів в базі даних, можна зробити висновок, чи відповідає людина в кадрі людині на фотографії. Обчислюється міра схожості особи в кадрі і еталонів в базі, і дані найбільш схожого зображення видаються оператору.
Даний метод дозволяє ідентифікувати зображення облич людей анфас, з високою роздільною здатністю, без засвічення. Чутливість алгоритму до поворотів і нахилів голови, міміці, висвітлення висока, тому він не підходить для розпізнавання людей в неорганізованих потоках (в натовпі, на вулиці і т.п.). Застосування даний метод знаходить на об’єктах, що вимагають обліку і контролю доступу людей (прохідні, КПП підприємств, заводів, державних установ) і часто працює в зв’язці з СКУД.
Побудова 3D-моделей
Існують методи, які вирішують проблему строгих вимог до зображення особи в кадрі за допомогою побудови 3D-моделей. Метод вимагає установки декількох спеціальних стереокамер, синхронізованих між собою. При появі в зоні спостереження людини камери роблять серію знімків з різних ракурсів. Потім будується 3D-модель особи людини і також проводиться робота з особливими точками і відстанями між ними. Подальше порівняння з еталонною базою осіб ведеться за аналогією з методом, описаним вище.
Рішення конкретних завдань
На сьогодні одним з основних методів детектування осіб в кадрі є метод, який використовує каскади Хаара. Найчастіше висока точність виявлення досягається для осіб, зображення яких потрапили в кадр анфас, при цьому в загальному випадку класифікатор методу можна навчити детектування зображень облич в інших положеннях.
Для розпізнавання людей використовуються різні технології і алгоритми, що пред’являють різні вимоги до зображень осіб, ідентифікованих в кадрі.