Please use this identifier to cite or link to this item: https://er.chdtu.edu.ua/handle/ChSTU/5856
Title: Розробка методу антиспуфінгу зображень в системах безпеки з використанням ML
Authors: Палагіна, Олена Анатоліївна
Бєльков, Богдан Олегович
Keywords: анти-спуфінг;біометрична безпека;розпізнавання облич;комп'ютерний зір
Issue Date: 2024
Abstract: Об'єктом дослідження є системи виявлення та протидії спуфінгу в системах захисту інформації. Предметом дослідження є моделі, методи та засоби багаторівневої системи протидії спуфінгу біометричних даних для біометричної автентифікації. Метою роботи є аналіз загроз біометричного спуфінгу та розробка моделей і методів захисту від презентаційних атак з використанням багаторівневої системи для підвищення безпеки та надійності біометричної автентифікації. У кваліфікаційній роботі розглянуто методи спуфінгу, їх класифікацію та потенційні ризики, які вони становлять для біометричних систем. Як альтернативне рішення для посилення біометричної безпеки пропонується використовувати сучасні технології комп'ютерного зору. Це включає використання розпізнавання обличчя в реальному часі, відстеження орієнтирів на обличчі та мультимодальні методи верифікації для виявлення атак. На основі цього підходу пропонується система захисту від спуфінгу, яка поєднує в собі кілька методів верифікації, включаючи виявлення країв, аналіз руху та динамічну перевірку живості за орієнтирами обличчя. Запропонована система демонструє ефективність використаних методів верифікації для створення надійного захисту від презентаційних атак, пропонуючи практичне рішення для підвищення безпеки та зручності використання систем біометричної аутентифікації
URI: https://er.chdtu.edu.ua/handle/ChSTU/5856
Appears in Collections:125 Кібербезпека та захист інформації (Безпека інформаційних і комунікаційних систем)

Files in This Item:
File Description SizeFormat 
М_125_Бєльков_Палагіна.pdf
  Restricted Access
1.59 MBAdobe PDFView/Open Request a copy


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.

Extracted text
 
    
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ 
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ 
ФАКУЛЬТЕТ  ЕЛЕКТРОННИХ ТЕХНОЛОГІЙ, АВТОТРАНСПОРТУ ТА 
МАШИНОБУДУВАННЯ 
КАФЕДРА РОБОТОТЕХНІЧНИХ І ТЕЛЕКОМУНІКАЦІЙНИХ СИСТЕМ ТА 
КІБЕРБЕЗПЕКИ 
 
 
До захисту допущено  
завідувач кафедри РТСК 
д.т.н., професор  
_______________ В.В. Палагін  
"_____" _____________ 2024 року 
 
 
Пояснювальна записка 
до дипломного роботи 
  магістра   
 
(освітньо-кваліфікаційний рівень) 
на тему Розробка методу антиспуфінгу зображень в системах безпеки з 
використанням ML 
 
Виконав: студент  2  курсу, групи    мБІ-31    
Спеціальності         125 – «Кібербезпека та захист 
інформації» , 
(шифр і назва спеціальності) 
 
освітньої програми  «Безпека інформаційних і 
комунікаційних систем»  
                         (назва освітньої програми) 
   Бєльков Б.О.   
(прізвище та ініціали) 
Керівник   Палагіна О.А.  
(прізвище та ініціали) 
Рецензент   Чепинога А.В.  
(прізвище та ініціали) 
 
 
 
Черкаси – 2024 року 
 
    
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ 
Факультет електронних технологій, автотранспорту та машинобудування 
Кафедра  робототехнічних і телекомунікаційних систем та кібербезпеки  
Освітньо-кваліфікаційний рівень  магістр  
Спеціальність  125 – Кібербезпека та захист інформації 
Освітня програма  – Безпека інформаційних і комунікаційних систем  
 
 
ЗАТВЕРДЖУЮ 
Завідувач кафедри  В.В. Палагін 
“_____” ___________________ 2024 року 
 
 
ЗАВДАННЯ 
НА ВИПУСКНУ РОБОТУ СТУДЕНТУ 
 
Бєльков Богдан Олегович _ 
(прізвище, ім’я, по батькові) 
1. Тема проекту (роботи) Розробка методу антиспуфінгу зображень у системах безпеки з 
використанням ML 
керівник проекту (роботи)  Палагіна Олена Анатоліївна  
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання) 
затверджені наказом вищого навчального закладу від «16»  вересня 2024 року № 272/04 
 
2. Термін здачі студентом закінченої роботи  «02»  грудня 2024 року_________ 
 
3. Вихідні дані до роботи: застосування моделей машинного навчання для виявлення 
презентаційних атак в системах безпеки на основі: технології комп'ютерного зору, нейронні 
мережі глибокого навчання та системи розпізнавання облич. Розробка методів верифікації 
презентації для виявлення атак, мова програмування - Python. 
 
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити) 
Вступ; Аналіз методів антиспуфінгу зображень в системах безпеки; Побудова методу 
антиспуфінгу зображень в системах безпеки на основі застосування технології машинного 
навчання; Застосування технологій машинного навчання для практичної реалізації 
антиспуфінгової системи безпеки; Висновки; Список використаних джерел; Додатки. 
 
5.  Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів):  
Аналіз секторів, уразливих до презентаційних атак; Огляд методологій верифікації в системах 
безпеки; Класифікація методів і підходів боротьби зі спуфінгом; Скріншоти роботи програми; 
Мультимедійна презентація. 
.
 
    
6. Консультанти з проекту (роботи) із зазначенням розділів проекту, що їх стосуються 
Розділ Прізвище, ініціали та посада Підпис, дата 
консультанта завдання завдання 
видав прийняв 
    
    
    
 
7. Дата видачі завдання  04 вересня 2024 року  
  
 
 
 
КАЛЕНДАРНИЙ ПЛАН  
 
№ Назва етапів дипломного  Строк виконання 
з/п проекту (роботи)  етапів проекту Примітка  
(роботи) 
1. П ошук і аналіз інформації по заданій темі 02.09.2024-  
15.09.2024 
2. Н аписання 1-го розділу: Аналіз методів 16.09.2024-  
антиспуфінгу зображень в системах безпеки 29.09.2024 
3. Н аписання 2-го розділу: Побудова методу 30.09.2024-  
антиспуфінгу зображень в системах безпеки на 20.10.2024 
основі застосування технології машинного 
навчання 
4. Н аписання 3-го розділу: Застосування технологій 21.10.2024-  
машинного навчання для практичної реалізації 10.11.2024 
антиспуфінгової системи безпеки 
5. Н аписання вступу і висновків, складання списку 11.11.2024-  
літератури 24.11.2024 
6. О формлення пояснювальної записки 25.11.2024-  
01.12.2024 
7. О формлення плакатів презентації 02.12.2024-  
08.12.2024 
 
 
 
 
Студент        Бєльков Б.О.  
 ( підпис ) (прізвище та ініціали) 
 
 
Керівник проекту (роботи)  Палагіна О.А.  
 ( підпис ) (прізвище та ініціали) 
 
 
    
ЗМІСТ 
ВСТУП .............................................................................................................................. 6 
РОЗДІЛ 1. АНАЛІЗ МЕТОДІВ АНТИСПУФІНГУ ЗОБРАЖЕНЬ В СИСТЕМАХ 
БЕЗПЕКИ ..................................................................................................................... 8 
1.1 Актуальність теми дослідження та аналіз задач уразливих до спуфінгу .... 8 
1.2 Технології розпізнавання облич та виявлення живих людей ..................... 12 
1.3 Аналіз сучасних методів антиспуфінгу зображень на прикладі систем 
безпеки .................................................................................................................... 17 
1.4 Проблематика побудови систем безпеки в реальному часі при 
розпізнаванні облич .............................................................................................. 19 
1.5 Постановка задачі ............................................................................................ 21 
РОЗДІЛ 2. ПОБУДОВА МЕТОДУ АНТИСПУФІНГУ ЗОБРАЖЕНЬ В 
СИСТЕМАХ БЕЗПЕКИ НА ОСНОВІ ЗАСТОСУВАННЯ ТЕХНОЛОГІЇ 
МАШИННОГО НАВЧАННЯ .................................................................................. 23 
2.1 Реалізація принципів машинного навчання для покращення систем безпеки
 ................................................................................................................................. 23 
2.2 Застосування «YOLOv8» і «MediaPipe» для розпізнавання міток на обличчі
 ................................................................................................................................. 24 
2.3 Аналіз орієнтирів на обличчі для виявлення живості ................................. 27 
2.4 Принципи виявлення облич при застосуванні технологій ML .................. 30 
2.5 Розпізнавання динамічних сцен зображень .................................................. 33 
2.6 Дослідження аналізу текстури для виявлення спуфінгу ............................. 35 
2.7 Відстеження руху для виявлення спуфінгу .................................................. 37 
2.8 Відстеження країв та руху для виявлення спуфінгу .................................... 39 
2.9 Принципи оптимізації роботи алгоритмів ML в реальному часі для 
покращення антиспуфінгової системи безпеки ................................................. 40 
2.10 Висновки ........................................................................................................ 42 
РОЗДІЛ 3. ЗАСТОСУВАННЯ ТЕХНОЛОГІЙ МАШИННОГО НАВЧАННЯ ДЛЯ 
ПРАКТИЧНОЇ РЕАЛІЗАЦІЇ АНТИСПУФІНГОВОЇ СИСТЕМИ БЕЗПЕКИ .... 44 
3.1 Налаштування середовища ............................................................................ 44 
3.2 Реалізація виявлення обличчя та вилучення орієнтирів ............................. 44 
3.3 Виявлення країв для розпізнавання мобільних пристроїв і фотографій ... 47 
 
 ЧДТУ.24.23305.001 ПЗ 
Змн. Арк. № докум. Підпис Дата 
 Ро зроб. Бєльк ов Б Розробка методу Літ. Арк. Акрушів 
 Перевір. Палагіна О. 
 Ре ценз. Чепинога А. антиспуфінгу зображень в 3  
 Н. Контр. Палагін В. системах безпеки з ЧДТУ 
 Затверд.   використанням ML 
 
   
3.4 Аналіз шаблону руху для виявлення спуфінга ............................................ 50 
3.5 Експериментальний метод аналізу текстур .................................................. 52 
3.6 Реалізація виявлення моргання ...................................................................... 54 
3.7 Реалізація виявлення посмішки ..................................................................... 56 
3.8 Тестування ....................................................................................................... 59 
3.9 Висновки .......................................................................................................... 61 
ВИСНОВКИ ................................................................................................................... 64 
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ..................................................................... 65 
ДОДАТКИ ...................................................................................................................... 66 
А. Результати тестування ..................................................................................... 66 
Б. Опис програмного забезпечення ..................................................................... 67 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
ВСТУП 
За останні роки стрімкий розвиток технологій докорінно змінив наше 
ставлення до безпеки та автентифікації. Серед цих розробок біометрична 
автентифікація виділяється як одна з найбільш значущих інновацій, пропонуючи 
багатообіцяючий баланс між безпекою та зручністю для користувача. На відміну 
від традиційних методів автентифікації, які покладаються на те, що людина знає 
паролі, біометрична автентифікація використовує унікальні фізичні або 
поведінкові характеристики, притаманні кожній людині. 
Розпізнавання обличчя, зокрема, стало одним з найпоширеніших методів 
біометричної автентифікації. Його ненав'язливий характер і високий рівень 
сприйняття користувачами призвели до його впровадження в різних сферах, від 
систем розблокування смартфонів до об'єктів з високим рівнем безпеки. 
Розпізнавання облич стає все більш поширеним у повсякденному житті, від 
розблокування смартфонів до забезпечення доступу до будівель і пристроїв. Його 
популярність пояснюється тим, що воно є ненав'язливим та інтуїтивно зрозумілим 
- користувачам просто потрібно подивитися в камеру, що робить його більш 
зручним, ніж традиційні методи автентифікації, такі як паролі або картки-ключі. 
Однак зі зростанням складності технологій зростає і кількість потенційних загроз. 
Доступність високоякісних камер, сучасного програмного забезпечення для 
редагування зображень і можливостей 3D-друку уможливила створення все більш 
переконливих підробок облич. Вони можуть варіюватися від простих 
роздрукованих фотографій до складних 3D-масок, створюючи значний виклик для 
систем безпеки, що покладаються на технологію розпізнавання облич. 
Задачі, пов'язані з реалізацією ефективного виявлення живої людини, є 
багатогранними. По-перше, існує технічна проблема розробки алгоритмів, які 
можуть надійно відрізняти справжні обличчя від складних підробок, зберігаючи 
при цьому прийнятну швидкість обробки для додатків, що працюють в режимі 
реального часу. По-друге, ці системи повинні бути достатньо надійними, щоб 
точно функціонувати в різних умовах навколишнього середовища, в тому числі при 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
різному освітленні, під різними кутами і на різних відстанях. По-третє, вони 
повинні бути здатні адаптуватися до постійно мінливого ландшафту методів 
підробки. 
Сучасні проблеми и в цій галузі виходять за рамки суто технічних міркувань. 
Впровадження систем виявлення людей має відбуватися в умовах складного 
ландшафту практичних обмежень. Швидкість обробки даних залишається 
критично важливою, оскільки ці системи повинні працювати в режимі реального 
часу без помітних затримок, які можуть розчарувати користувачів. Це особливо 
складно при впровадженні складних заходів захисту від підробок, які вимагають 
багаторівневої перевірки. Фактори навколишнього середовища є ще однією 
значною перешкодою. Надійна система виявлення активності повинна зберігати 
надійність в різних умовах освітлення, від яскравого денного світла до низької 
освітленості, пристосовуючись до різних кутів і відстаней між користувачем і 
камерою. 
Швидка еволюція методів підробки вимагає постійної адаптації заходів 
боротьби з підробкою. Оскільки зловмисники розробляють більш витончені 
презентаційні атаки системи безпеки повинні розвиватися відповідно. Це створює 
постійний виклик для розробників, які повинні впроваджувати надійні методи 
виявлення, зберігаючи при цьому продуктивність системи та доступність для 
користувачів. У відповідь на ці виклики це дослідження зосереджене на розробці 
та порівняльному аналізі двох різних підходів до виявлення живості: виявлення 
моргання та виявлення посмішки. Ці методи являють собою баланс між 
ефективністю захисту та практичною реалізацією, пропонуючи надійні можливості 
захисту від підробок, зберігаючи при цьому розумні обчислювальні вимоги для 
додатків у реальному часі. Завдяки ретельному аналізу їхньої роботи в різних 
умовах, це дослідження має на меті зробити внесок у постійний розвиток більш 
ефективних і надійних біометричних систем безпеки шляхом реалізації надійного 
методу виявлення та запобігання спуфінг-атакам, що забезпечує надійну та 
безпечну верифікацію користувачів. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
РОЗДІЛ 1. АНАЛІЗ МЕТОДІВ АНТИСПУФІНГУ ЗОБРАЖЕНЬ В 
СИСТЕМАХ БЕЗПЕКИ 
 
1.1 Актуальність теми дослідження та аналіз задач уразливих до спуфінгу 
Швидка оцифровка суспільства призвела до безпрецедентного зростання 
впровадження біометричних систем автентифікації, причому розпізнавання 
обличчя стало одним з найбільш широко впроваджуваних біометричних методів. 
Ця технологія стала повсюдною в різних аспектах повсякденного життя - від 
розблокування смартфонів і авторизації платежів до забезпечення контролю 
фізичного доступу та систем державної ідентифікації. Привабливість 
розпізнавання облич полягає в його ненав'язливому характері, високому рівні 
сприйняття користувачами та природній людській схильності розпізнавати 
обличчя як основний засіб ідентифікації. 
Однак, таке широке впровадження створило не менш важливу проблему 
безпеки. Оскільки системи розпізнавання облич стають все більш поширеними в 
додатках з високим рівнем безпеки, вони стають привабливими цілями для 
зловмисників. Потенційні наслідки успішних спуфінг-атак варіюються від 
несанкціонованого доступу до конфіденційних об'єктів та інформації до 
фінансового шахрайства та крадіжки особистих даних. Цей ризик викликає 
особливе занепокоєння, оскільки традиційні методи автентифікації все частіше 
замінюються біометричними рішеннями в критично важливих об'єктах 
інфраструктури безпеки. 
Проблема забезпечення автентичності біометричних даних обличчя стала 
більш складною з розвитком цифрових технологій. Сучасні смартфони можуть 
знімати високоякісні зображення та відео, а складне програмне забезпечення для 
редагування зображень стало широко доступним. Ці технологічні розробки 
знизили бар'єр для створення переконливих презентаційних атак, що полегшило 
зловмисникам спроби обдурити системи розпізнавання облич за допомогою 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
роздрукованих фотографій, цифрових дисплеїв або заздалегідь записаних 
відеозаписів. 
Крім того, поява технологій глибокого навчання відкрила нові вектори для 
атак, включаючи глибокі підробки і синтетичні медіа, які можуть створювати 
високореалістичну анімацію обличчя. Ця технологічна гонка озброєнь між 
системами безпеки та потенційними зловмисниками підкреслює критичну 
важливість надійних заходів захисту від підробок у системах розпізнавання облич. 
Актуальність досліджень у сфері боротьби зі спуфінгом виходить за рамки 
безпосередніх проблем безпеки і стосується питань суспільної довіри та надійності 
систем. Невдалі спроби підміни можуть завдати незручностей законним 
користувачам, тоді як успішні атаки можуть підірвати довіру до біометричних 
систем в цілому. Оскільки організації продовжують інвестувати в технології 
розпізнавання облич, розробка надійних методів захисту від підробок стає 
критично важливою для підтримки цілісності та надійності цих систем. 
Вразливість систем розпізнавання облич до спуфінг-атак впливає на численні 
критичні додатки в різних галузях. Оскільки ці системи стають все більш 
інтегрованими в нашу повсякденну діяльність та інфраструктуру безпеки, 
потенційний вплив успішних спроб підміни зростає в геометричній прогресії. 
Різноманітність додатків, що використовують технологію розпізнавання облич, 
створює широке поле для атак, причому кожна реалізація потенційно містить 
унікальні вразливості. Розуміння цих вразливостей має вирішальне значення для 
розробки ефективних заходів протидії та забезпечення надійної безпеки системи. 
Ключові сфери представляють найбільш критичні сектори (Рисунок 1.1), де 
підробка розпізнавання облич становить значні ризики, кожна з яких має свої 
власні специфічні проблеми та вимоги до безпеки. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
Фінансові Контроль Безпека Верифікація Державні 
послуги фізичного 
доступу пристроїв особи послуги
Аутентифікація Безпечні Системи Розподіл 
в мобільному системи входу Розблокування 
смартфона прикордонног соціальних 
банкінгу на об'єкти о контролю виплат
Контроль Доступ до Доступ до Верифікація Верифікація 
доступу до корпоративних ноутбука/комп' електронних пацієнтів у 
банкоматів офісів ютера паспортів сфері охорони 
здоров'я
Цифрова Охорона Автентифікація Віддалене 
авторизація урядових корпоративних введення в Перевірка 
платежів будівель пристроїв курс справи освітніх іспитів
співробітників
Віддалене Охорона Безпека IoT- Цифрова 
відкриття центрів ідентифікація Системи 
рахунків обробки даних пристроїв особи голосування
Верифікація Перевірка Доступ до 
транзакцій на Системи 
безпеки житла водійських громадського 
великі суми прав транспорту  
Рисунок 1.1 – Найбільш вразлві сектори до спуфінг атак 
Фінансові послуги є одним з найбільш критичних секторів, вразливих до 
підробки розпізнавання обличчя, насамперед через прямі грошові стимули для 
зловмисників. У мобільних банківських додатках шахраї можуть намагатися обійти 
автентифікацію, використовуючи високоякісні фотографії або попередньо записані 
відео легітимних користувачів, щоб отримати несанкціонований доступ до 
рахунків. Системи банкоматів з функцією розпізнавання облич особливо вразливі 
до презентаційних атак, коли злочинці можуть використовувати роздруковані 
фотографії або маски для зняття коштів з рахунків жертв. Поширення цифрових 
платіжних систем, що використовують верифікацію особи для авторизації 
транзакцій, створює додаткові вектори атак, особливо в сценаріях безконтактних 
платежів. Сервіси віддаленого відкриття рахунків, які стають все більш 
поширеними, стикаються з унікальними проблемами, оскільки вони повинні 
підтверджувати особу без фізичної присутності, що робить їх вразливими до 
витончених спроб цифрової підробки. 
Системи контролю фізичного доступу стикаються з певними проблемами при 
впровадженні технології розпізнавання облич. Ці системи повинні працювати в 
режимі реального часу, підтримуючи високі стандарти безпеки, часто в різних 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
умовах навколишнього середовища. Безпечні системи входу на об'єкти, особливо в 
корпоративних і державних установах, повинні захищати як від складних 
технічних атак, так і від простих спроб презентації за допомогою роздрукованих 
фотографій або цифрових дисплеїв. Центри обробки даних, де зберігається 
критична інфраструктура та конфіденційна інформація, потребують особливо 
надійних заходів захисту від підробок, оскільки будь-яке порушення безпеки може 
мати далекосяжні наслідки. Системи безпеки житлових будинків, хоча зазвичай 
вимагають нижчих порогів безпеки, все одно повинні підтримувати надійну 
роботу, щоб запобігти несанкціонованому доступу, мінімізуючи при цьому 
помилкові відмови для законних мешканців. 
Розпізнавання облич для забезпечення безпеки пристроїв стало повсюдним 
явищем, особливо в побутовій електроніці. Системи розблокування смартфонів є 
найпоширенішим застосуванням, адже мільярди пристроїв по всьому світу 
покладаються на розпізнавання обличчя як основний захід безпеки. Ці системи 
повинні балансувати між вимогами безпеки та зручністю для користувача, що 
часто призводить до компромісів, якими можуть скористатися зловмисники. 
Системи доступу до ноутбуків і комп'ютерів стикаються з подібними проблемами, 
але часто працюють в більш контрольованих умовах освітлення, що дозволяє 
застосовувати потенційно більш суворі заходи безпеки. Автентифікація 
корпоративних пристроїв додає ще один рівень складності, оскільки ці системи 
повинні захищати не тільки особисті, але й конфіденційні бізнес-дані. Безпека 
пристроїв Інтернету речей, хоча вона все ще розвивається в частині розпізнавання 
облич, має унікальні вразливості через часто обмежену обчислювальну потужність 
і необхідність працювати в різноманітних умовах навколишнього середовища. 
Системи верифікації особи вимагають найвищого рівня безпеки, оскільки 
вони часто слугують основою для інших заходів безпеки. Системи прикордонного 
контролю повинні ефективно обробляти велику кількість людей, зберігаючи при 
цьому суворі протоколи безпеки від складних спроб підробки. Системи верифікації 
електронних паспортів стикаються з подібними проблемами, але також повинні 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
забезпечувати сумісність з міжнародними стандартами, запобігаючи підробці 
документів у поєднанні з атаками на презентацію. Віддалене приєднання 
працівників до компанії, яке зазнало значного зростання завдяки глобальним 
змінам на робочих місцях, повинно перевіряти ідентифікаційні дані без фізичної 
присутності, що робить його особливо вразливим до спроб цифрової підробки. 
Служби цифрової верифікації ідентичності, що використовуються в різних галузях, 
повинні протистояти дедалі витонченішим технологіям глибокої підробки та 
синтетичним медіа-атакам. 
Державні послуги створюють унікальні виклики через їхню вимогу до 
широкої доступності при одночасному забезпеченні безпеки. Системи розподілу 
соціальних виплат повинні запобігати шахрайству, забезпечуючи при цьому 
законним бенефіціарам доступ до критично важливих послуг. Верифікація 
пацієнтів у сфері охорони здоров'я є особливо важливою, оскільки вона впливає як 
на особисту конфіденційність, так і на медичну безпеку, вимагаючи точної 
ідентифікації при роботі в різних умовах навколишнього середовища. Контроль 
освітніх іспитів, особливо у віддалених умовах, все більше покладається на 
розпізнавання облич, що робить його мішенню для академічної недоброчесності 
через спроби підробки. Системи голосування з біометричною верифікацією 
повинні підтримувати найвищий рівень безпеки, водночас ефективно обробляючи 
велику кількість людей. Системи доступу до громадського транспорту повинні 
забезпечувати баланс між безпекою і швидкою обробкою великих 
пасажиропотоків, часто працюючи в складних умовах освітлення і навколишнього 
середовища. 
 
1.2 Технології розпізнавання облич та виявлення живих людей 
Технології розпізнавання облич і виявлення живої присутності значно 
розвинулися, об'єднавши в собі різні підходи для забезпечення як точної 
ідентифікації, так і верифікації справжньої присутності людини. Ці технології 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
можна умовно розділити на два основні компоненти: системи розпізнавання облич 
і методи виявлення присутності людей. 
Серед найвідоміших технологій у сучасних системах розпізнавання облич 
YOLO (You Only Look Once) і MediaPipe виділяються своєю ефективністю і 
точністю. YOLO, особливо в її реалізації для розпізнавання облич, являє собою 
значний прогрес у виявленні об'єктів у реальному часі. YOLO (You Only Look 
Once), популярна модель виявлення об'єктів та сегментації зображень, була 
розроблена Джозефом Редмоном та Алі Фархаді у Вашингтонському 
університеті[1]. Варіант YOLOv8-Face, спеціально оптимізований для задач 
розпізнавання облич, спирається на цю основу для забезпечення підвищеної 
продуктивності в додатках розпізнавання облич. 
MediaPipe, розроблений як крос-платформне рішення, пропонує комплексну 
основу для аналізу облич. MediaPipe Solutions надає набір бібліотек та інструментів 
для швидкого застосування методів штучного інтелекту та машинного навчання у 
додатках[2]. У поєднанні з іншими технологіями комп'ютерного зору ці 
інструменти створюють надійну основу для систем розпізнавання облич. 
Традиційні методи виявлення орієнтирів обличчя, такі як ті, що реалізовані в 
бібліотеці Dlib, продовжують відігравати важливу роль в аналізі обличчя. Dlib - це 
сучасний інструментарій C++, що містить алгоритми машинного навчання та 
інструменти для створення складного програмного забезпечення на C++ для 
вирішення реальних проблем. Він використовується як у промисловості, так і в 
академічних колах у широкому спектрі областей, включаючи робототехніку, 
вбудовані пристрої, мобільні телефони та великі високопродуктивні 
обчислювальні середовища[3]. Ці усталені технології доповнюють новіші підходи, 
пропонуючи надійну роботу, особливо в контрольованих середовищах. Виявлення 
живих людей у системах розпізнавання облич зазвичай використовує кілька 
підходів для забезпечення надійної верифікації (Рисунок 1.2). 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
Поведінковий Оцінка якості 
аналіз зображення Апаратні методи
Шаблони Аналіз текстур Інфрачервоне 
моргання очей сканування
Зміни виразу Глибинне 
обличчя Виявлення країв звучання
Рухи голови та Мультиспектраль
жести Шаблони руху ний аналіз
Виявлення Властивості 
мікрорухів відображення
 
Рисунок 1.2 – Методи забезпечення надійної верифікації 
Поведінковий аналіз при виявленні життєвої активності фокусується на аналізі 
природної поведінки людини та рухів, щоб розрізняти реальну людину та 
потенційну спробу підробки. Цей підхід розглядає кілька динамічних 
характеристик, які важко відтворити штучно. Аналіз зазвичай включає в себе 
моніторинг спонтанних рухів і відповідей, які відбуваються природно, коли 
людина взаємодіє з системою розпізнавання обличчя. Ці поведінкові моделі 
аналізуються в режимі реального часу за допомогою передових алгоритмів, які 
можуть виявити тонкі відмінності між справжньою поведінкою людини і 
штучними спробами. 
Моргання очей є важливим компонентом виявлення живості, оскільки вони 
представляють мимовільну поведінку людини, яка слідує за конкретними зразками. 
В середньому людина моргає 15-20 разів на хвилину, причому кожне моргання 
триває від 100 до 400 мілісекунд[4]. Системи виявлення аналізують як частоту, так 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
і природний ритм моргання, а також швидкість, з якою повіки закриваються і знову 
відкриваються. Це робить його особливо ефективним проти статичних атак 
зображення, оскільки фотографії та друковані матеріали не можуть відтворити ці 
динамічні рухи очей. 
Зміни вираження обличчя служать ще одним важливим індикатором живості, 
оскільки вони включають складні рухи м'язів, які важко підробити. Система 
контролює природні переходи між різними виразами, такими як посмішка, 
насуплення або підняття брів. Ці зміни створюють специфічні моделі руху м'язів 
під шкірою, створюючи тонкі варіації текстури та контуру. Системи аутентифікації 
можуть аналізувати ці мікро-вирази та їх природний потік, щоб переконатися, що 
вони відповідають типовим людським зразкам. 
Аналіз текстури в оцінці якості зображення вивчає тонкі деталі та візерунки, 
присутні в зображеннях обличчя, щоб виявити потенційні спроби підміни. Цей 
метод аналізує текстуру шкіри, пори та інші мікроскопічні особливості, які 
зазвичай присутні в реальних людських обличчях, але можуть бути відсутніми або 
з'являтися штучними на друкованих фотографіях або цифрових дисплеях. Аналіз 
передбачає вивчення розподілу інтенсивності пікселів і поверхневих візерунків по 
різних ділянках обличчя. Розширені алгоритми можуть виявити тонкі 
невідповідності в текстурі, які можуть вказувати на підроблену презентацію, 
наприклад, однорідні візерунки, які часто зустрічаються в друкованих матеріалах, 
або мойрові візерунки, поширені в цифрових екранах. 
Виявлення країв фокусується на аналізі меж і переходів між різними рисами 
обличчя та їх оточенням. У справжніх осіб краї виглядають природними і 
поступовими, з плавними переходами між різними ділянками обличчя. Система 
вивчає різкість, послідовність та характеристики країв по всьому зображенню, 
шукаючи ознаки штучних маніпуляцій або відтворення. Виявлення країв може 
виявляти ознаки спроб підміни, такі як жорсткі краї з паперових роздруківок, 
незвичайні відображення з екранних дисплеїв або штучні межі, створені масками. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
Аналіз моделей руху вивчає, як різні частини обличчя рухаються по 
відношенню один до одного під час природного руху. Це включає в себе 
відстеження декількох точок по обличчю і аналіз їх траєкторій і відносин з плином 
часу. Реальні обличчя демонструють послідовні та природні моделі руху, які 
слідують за кістковою та м'язовою структурою. Система може виявити неприродні 
рухи або невідповідності, які можуть вказувати на спробу підміни, такі як плоский 
рух паперової фотографії або рівномірний рух відео, відтвореного на екрані. 
Оцінка властивостей дисплея фокусується на виявленні характеристик, 
характерних для цифрових екранів або друкованих матеріалів, що 
використовуються в атаках презентації. Це включає в себе аналіз наявності 
відбитків екрану, піксельних візерунків або артефактів друку, які не будуть 
присутні в справжньому обличчі. Система шукає помітні знаки, такі як частота 
оновлення екрану, цифрові артефакти або конкретні кольорові візерунки, створені 
різними технологіями відображення. Передові алгоритми можуть виявити тонкі 
відмінності в відбитті і поглинанні світла, які розрізняють шкіру людини і штучні 
поверхні дисплея, що робить його ефективним методом для ідентифікації 
цифрових атак відтворення. 
Апаратні методи виявлення живості являють собою більш складний підхід, 
який спирається на спеціалізоване обладнання та датчики за межами стандартних 
камер. Ці методи, як правило, забезпечують більш надійну та складнішу перевірку 
шляхом вивчення властивостей, які не видно неозброєним оком або звичайними 
системами візуалізації. На відміну від програмних підходів, апаратні методи 
можуть виявляти фізичні властивості та реакції, властиві живим тканинам, що 
робить їх особливо ефективними проти передових спроб спуфінгу. Реалізація 
апаратних методів, в той час як дорожче, пропонує більш високий рівень безпеки і 
точності при виявленні живості. 
Інфрачервоне сканування використовує спеціалізовані інфрачервоні датчики 
для виявлення структури тепла та кровотоку під поверхнею шкіри. Ця технологія 
може відобразити унікальний тепловий підпис обличчя живої людини, який майже 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
неможливо відтворити штучними матеріалами. Система аналізує зміни 
температури в різних областях обличчя і може виявити незначні зміни розподілу 
тепла, які відбуваються при циркуляції крові. Інфрачервоне сканування особливо 
ефективно для виявлення неживих матеріалів, таких як маски, фотографії або 
екрани, оскільки ці матеріали демонструють чітко різні теплові візерунки з 
людської шкіри. 
Глибоке звучання передбачає використання ультразвукових або інших 
хвильових технологій для аналізу тривимірної структури і складу тканин обличчя. 
Цей метод посилає звукові хвилі або інші сигнали, які проникають під поверхню 
шкіри і вимірюють моделі відбиття. Отримані сигнали створюють детальну карту 
особливостей надр, включаючи структуру кісток, щільність тканин і мережі 
кровоносних судин. Ці характеристики унікальні для живих тканин і надзвичайно 
важко відтворюються, що робить глибоке звучання дуже надійним методом 
виявлення складних презентаційних атак. 
Мультиспектральний аналіз використовує кілька довжин хвиль світла за 
межами видимого спектру для вивчення різних шарів тканини обличчя. Ця 
технологія фіксує зображення за допомогою різних світлових частот, від 
ультрафіолетового до інфрачервоного, виявляючи різні властивості на кожному 
шарі шкіри. Система аналізує, як різні довжини хвиль світла поглинаються, 
відбиваються і розсіюються живою тканиною, створюючи складний профіль, 
унікальний для справжніх людських облич. Цей комплексний підхід дозволяє 
виявити тонкі відмінності у складі матеріалу та внутрішній структурі, що робить 
його особливо ефективним для виявлення складних спроб підміни за допомогою 
високоякісних масок або сучасних матеріалів. 
 
1.3 Аналіз сучасних методів антиспуфінгу зображень на прикладі систем 
безпеки 
Сучасні методи анти-спуфінгу зображень в системах безпеки еволюціонували 
для вирішення все більш складних презентаційних атак. Ці методи можуть бути 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
проаналізовані шляхом їх реалізації в різних контекстах безпеки, демонструючи як 
їх ефективність, так і обмеження. Розвиток цих методів боротьби зі спуфінгом був 
обумовлений зростанням складності презентаційних атак, від простих друкованих 
фотографій до передових технологій глибокої підробки. Оскільки системи безпеки 
стають більш поширеними в критичних додатках, важливість надійних заходів 
проти спуфінгу (Рисунок 1.3) стала першорядною. 
Виявлення на Аналіз на основі Рішення для 
основі руху текстури глибинного 
навчання
Скроневий аналіз Аналіз локальних Нейронні мережі 
рухів обличчя бінарних патернів для виявлення 
підробки
Послідовне Дослідження Особливості 
розпізнавання 
образів спектру Фур'є архітектури 
синтезу
Перевірка 
когерентності Шаблони 
відображення Багатозадачні 
руху в режимі навчальні рамки
реального часу поверхні
Оптичний аналіз Показники якості Аналіз часової 
потоку зображення послідовності
 
Рисунок 1.3 – Ключові анти-спуфінг методи 
У практичній реалізації безпеки ці методи часто поєднуються для створення 
багатошарових оборонних систем. Наприклад, сучасні системи безпеки смартфонів 
зазвичай використовують комбінацію аналізу текстури для виявлення повторів 
екрану або друкованих фотографій, а також аналіз руху для перевірки природних 
рухів голови та міміки обличчя. Банківські додатки часто реалізують додаткові 
рівні безпеки, вимагаючи конкретних дій користувача, одночасно аналізуючи 
якість зображення та поведінкові моделі. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
Ефективність цих методів значно відрізняється залежно від умов 
навколишнього середовища та контекстів впровадження. Наприклад, текстурні 
підходи добре працюють в умовах контрольованого освітлення, але можуть мати 
проблеми в змінних середовищах. Рішення глибокого навчання пропонують 
багатообіцяючі результати у виявленні складних спроб спуфінгу, але вимагають 
значних обчислювальних ресурсів та ретельно відібраних навчальних даних. 
Реальні системи безпеки повинні збалансувати ці підходи, розглядаючи кілька 
факторів. Вимоги до швидкості обробки часто обмежують складність реалізованих 
рішень, особливо в системах, що вимагають реакції в реальному часі. Компроміс 
між помилковими ставками прийняття та помилковими ставками відхилення 
залишається вирішальним фактором, оскільки системи повинні підтримувати 
безпеку без значного впливу на досвід користувачів. Крім того, обмеження ресурсів 
та контекстна адаптивність відіграють важливу роль у визначенні практичної 
придатності різних методів боротьби зі спуфінгом у системах безпеки. 
 
1.4 Проблематика побудови систем безпеки в реальному часі при 
розпізнаванні облич 
Впровадження систем безпеки розпізнавання облич у режимі реального часу 
представляє численні проблеми, які охоплюють як технічні, так і практичні сфери. 
На фундаментальному рівні ці системи повинні обробляти та аналізувати 
відеопотоки з мінімальною затримкою, зберігаючи високу точність, створюючи 
притаманну напругу між швидкістю та точністю. Ця проблема стає особливо 
гострою, коли системи повинні працювати в різних умовах навколишнього 
середовища, де такі фактори, як освітлення, відстань і кут можуть значно вплинути 
на точність розпізнавання. 
Обмеження потужності обробки є ще однією суттєвою перешкодою для 
реалізації в реальному часі. Хоча сучасне обладнання продовжує розвиватися, 
обчислювальні вимоги запуску складних нейронних мереж і декількох потоків 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
аналізу одночасно можуть деформувати системні ресурси. Це стає особливо 
проблематичним у вбудованих системах або мобільних пристроях, де потужність 
обробки та споживання енергії повинні бути ретельно збалансовані. Необхідність 
одночасного виконання декількох завдань - виявлення облич, ідентифікація 
орієнтирів, виявлення живості та перевірка ідентичності - з'єднує ці обчислювальні 
проблеми. 
Середовищна мінливість створює постійний виклик надійності системи. 
Реальні реалізації повинні боротися зі зміною умов освітлення, різними відстанями 
між предметами та камерами, різними кутами підходу та різноманітними 
фоновими середовищами. Ці змінні можуть значно вплинути на якість зображення 
та продуктивність системи, що потенційно призведе до збільшення помилкових 
відмов або, що більш стосується, помилкових акцептів. Системи також повинні 
адаптуватися до різних тонів шкіри, рис обличчя та наявності аксесуарів, таких як 
окуляри або маски для обличчя, зберігаючи стабільну продуктивність. 
Вимоги до затримки є ще одним критичним завданням. Програми безпеки, як 
правило, вимагають часу відгуку мілісекунд для підтримки взаємодії користувача 
та запобігання вузьких місць у точках доступу. Це обмеження в режимі реального 
часу впливає не тільки на вибір алгоритмів і методів обробки, але також впливає на 
вибір обладнання та рішення архітектури системи. Завдання стає більш складним, 
коли системи повинні обробляти кілька одночасних користувачів або інтегруватися 
з іншими механізмами безпеки. 
Мережева інфраструктура та обмеження пропускної здатності також можуть 
впливати на продуктивність системи, особливо в розподілених системах, де 
обробка може відбуватися на віддалених серверах. Необхідність передачі 
високоякісних відеопотоків при збереженні безпеки даних і конфіденційності 
додає ще один рівень складності дизайну системи. Це стає особливо актуальним у 
впровадженнях підприємств, де кілька точок доступу повинні контролюватися і 
управлятися одночасно. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
Людський фактор вносить додаткові ускладнення. Користувачі не можуть 
позиціонувати себе оптимально, можуть рухатися під час аутентифікації або 
можуть не дотримуватися належних процедур, що вимагає від систем достатньої 
надійності для обробки цих змін при збереженні безпеки. Крім того, системи 
повинні враховувати природні зміни зовнішнього вигляду з часом, такі як старіння, 
ріст волосся на обличчі або використання різних аксесуарів, без шкоди для 
протоколів безпеки. 
Ці проблеми ускладнюються необхідністю підтримувати безпеку системи від 
загроз (Рисунок 1.4), що розвиваються, забезпечуючи при цьому дотримання 
правил конфіденційності та стандартів захисту даних. Баланс між суворістю 
безпеки та зручністю користувачів залишається постійним фактором при розробці 
та реалізації системи. 
 
Рисунок 1.4 - Приклад типів атак: (a) Атака 2D-друку, (b) Атака на 2D-
відтворення, (c) Атака за допомогою 3D маски. 
 
1.5 Постановка задачі 
Основна мета цього дослідження полягає в побудові та оцінці ефективних 
методів боротьби зі спуфінгом для систем безпеки розпізнавання облич, з 
особливим акцентом на порівнянні підходів виявлення життя на основі моргання 
та посмішки. Дослідження спрямоване на вирішення наступних ключових проблем 
у контексті реальних додатків, де надійність системи та досвід користувача повинні 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
бути збалансовані відповідно до вимог безпеки. Реалізація повинна враховувати як 
теоретичні основи виявлення живості, так і практичні обмеження обробки в 
реальному часі в різних умовах навколишнього середовища. Визначено наступні 
конкретні цілі: 
1. Реалізація та оцінка двох різних методів виявлення живості з використанням 
орієнтирів для обличчя як для виявлення моргання очей, так і для розпізнавання 
посмішки. 
2. Оцінити ефективність цих методів в різних умовах навколишнього 
середовища, включаючи різні сценарії освітлення та наявність оптичних перешкод, 
таких як окуляри. 
3. Проаналізувати надійність методів виявлення руху та країв при виявленні 
презентаційних атак, включаючи фотографії та відеоповтори. 
Практична реалізація буде використовувати YOLOv8-Face основу для 
розпізнавання облич і MediaPipe для відстеження орієнтирів для обличчя, з метою 
створення надійної системи боротьби зі спуфінгом в режимі реального часу. За 
допомогою порівняльного аналізу цих методів, це дослідження прагне визначити 
їх відносну ефективність і визначити конкретні умови, при яких кожен підхід 
працює оптимально. 
 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
РОЗДІЛ 2. ПОБУДОВА МЕТОДУ АНТИСПУФІНГУ ЗОБРАЖЕНЬ В 
СИСТЕМАХ БЕЗПЕКИ НА ОСНОВІ ЗАСТОСУВАННЯ ТЕХНОЛОГІЇ 
МАШИННОГО НАВЧАННЯ 
 
2.1 Реалізація принципів машинного навчання для покращення систем 
безпеки 
Впровадження принципів машинного навчання в системах безпеки, особливо 
при виявленні живості, вимагає фундаментального розуміння того, як ці системи 
можуть бути обдурені. Традиційні біометричні системи часто покладаються на 
статичний аналіз зображення, що робить їх уразливими для презентаційних атак, 
таких як фотографії або відеозаписи. Теоретичний підхід, обраний для цієї 
реалізації, зосереджується на аналізі динамічних рис обличчя, особливо 
зосереджуючись на природних рухах, які важко відтворити в спробах підміни. Цей 
підхід поєднує в собі кілька шарів перевірки: виявлення облич, відстеження 
орієнтирів та аналіз руху. Основа цієї методології полягає в розумінні того, що хоча 
статичне зображення може відтворювати зовнішній вигляд, воно не може точно 
імітувати тонкі нюанси рухів обличчя людини. Цей принцип керує вибором 
конкретних методів виявлення, зокрема фокусом на моргання очей та виявлення 
посмішки, які представляють мимовільні та добровільні рухи відповідно. Ці рухи 
створюють чіткі патерни в геометрії обличчя, які можна виміряти та 
проаналізувати в режимі реального часу, забезпечуючи надійну основу для 
виявлення живості. 
Архітектура системи призначена для обробки вхідних відеопотоків через 
кілька послідовних етапів аналізу. Основний шар обробляє виявлення та 
відстеження обличчя, забезпечуючи основу для більш конкретного аналізу ознак. 
За цим слідує орієнтир виявлення шару, який ідентифікує і відстежує конкретні 
точки обличчя, що дозволяє системі вимірювати зміни в геометрії обличчя. 
Останній шар реалізує логіку виявлення живості, аналізуючи закономірності руху, 
виявлені на попередніх етапах. Цей багаторівневий підхід дозволяє проводити 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
модульну розробку та тестування, де кожен компонент може бути оптимізований 
незалежно, зберігаючи загальну цілісність системи. Архітектура надає пріоритет 
можливостям обробки в режимі реального часу, що вимагає ефективних методів 
обробки та обробки даних. Система призначена для підтримки точності при роботі 
в межах розумних обчислювальних обмежень, що робить її практичною для 
реальних застосувань. Інтеграція декількох методів виявлення забезпечує 
резервування та підвищення надійності, оскільки система може повернутися до 
альтернативних методів виявлення, якщо один підхід зазнає невдачі через умови 
навколишнього середовища. 
Впровадження принципів машинного навчання в цій системі безпеки вимагало 
ретельного розгляду того, як різні компоненти будуть працювати разом згуртовано. 
Система повинна була обробляти різні потенційні точки відмов, такі як тимчасова 
втрата розпізнавання обличчя або неясне відстеження орієнтирів, без шкоди для 
загальної безпеки. Це призвело до розробки гнучкого конвеєра обробки, який міг 
би підтримувати роботу навіть тоді, коли певні функції стали тимчасово 
недоступними. Наприклад, якщо умови освітлення роблять виявлення очей 
ненадійним, система може визначити пріоритетність виявлення посмішки та 
аналізу руху. Реалізація також розглядала майбутню розширюваність, що 
дозволило додати нові методи виявлення або уточнення існуючих без необхідності 
повного редизайну системи. Цей передовий підхід гарантує, що система може 
розвиватися в міру появи нових методів боротьби зі спуфінгом або поліпшення 
обчислювальних можливостей. 
 
2.2 Застосування «YOLOv8» і «MediaPipe» для розпізнавання міток на 
обличчі 
 Реалізація використовує YOLOv8-Face, розроблені компанією Lindevs, яка 
спирається на основну архітектуру YOLO (You Only Look Once) для специфічної 
обробки завдань виявлення обличчя. Фундаментальний підхід YOLO до виявлення 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
об'єктів ділить вхідні зображення на систему сітки і обробляє все зображення в 
одному прямому проході через свою нейронну мережу, що робить його особливо 
ефективним для додатків реального часу. Ця ефективність має вирішальне 
значення для системи виявлення живості, яка повинна постійно обробляти 
відеопотоки. YOLOv8-Face розширює цю здатність, спеціалізуючись на виявленні 
обличчя, забезпечуючи не тільки обмежувальні рамки для виявлених облич, але й 
оцінки довіри, які допомагають відфільтрувати невизначені виявлення. 
У конвеєрі реалізації кожен кадр з відеовходу спочатку попередньо 
обробляється, щоб забезпечити узгоджений розмір і формат введення для моделі 
YOLOv8-Face. Етап попередньої обробки включає зміну розміру зображення, 
зберігаючи його співвідношення сторін і нормалізуючи значення пікселів до 
діапазону, очікуваного моделлю. Ця стандартизація має вирішальне значення для 
підтримки послідовної продуктивності виявлення в різних джерелах введення. 
Потім модель обробляє підготовлений кадр, повертаючи результати виявлення, які 
включають координати рамки розміру та оцінки довіри для кожного виявленого 
обличчя. 
Система реалізує довірчий поріг для фільтрації результатів виявлення, 
гарантуючи, що тільки достатньо надійні виявлення будуть передані на наступні 
етапи обробки. Ця фільтрація необхідна для підтримки надійності системи, 
оскільки помилкові або невизначені виявлення можуть викликати неправильні 
оцінки живості. Координати обмежувальної рамки, надані YOLOv8-Face, 
використовуються для обрізання області інтересів, що містить обличчя, яке потім 
передається системі виявлення орієнтирів обличчя MediaPipe. Цей крок кадрування 
допомагає оптимізувати обробку, обмежуючи область пошуку орієнтирів обличчя 
та зменшуючи обчислювальні накладні витрати. 
Архітектура YOLOv8-Face особливо цінна при обробці різної орієнтації 
обличчя та часткових оклюзій, ситуацій, які зазвичай трапляються в реальних 
додатках. Надійні можливості виявлення моделі забезпечують стабільну 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
продуктивність, навіть якщо користувачі не ідеально розташовані або носять 
звичайні аксесуари, такі як окуляри. Ця надійність має вирішальне значення для 
підтримки зручності використання системи при забезпеченні вимог безпеки. Хоча 
YOLOv8-Face забезпечує надійне виявлення обличчя, детальний аналіз рис 
обличчя, необхідних для виявлення життєвої якості, вимагає більш детальної 
інформації про структуру обличчя. Саме тут система розпізнавання облич 
MediaPipe стає вирішальною в конвеєрі обробки. Після того, як YOLOv8-Face 
ідентифікував і локалізував обличчя в кадрі, цей регіон передається MediaPipe для 
детального виявлення знаку обличчя. 
Система сітки обличчя MediaPipe забезпечує 468 тривимірних орієнтирів 
(Рисунок 2.1), які точно відображають контури та особливості виявленого обличчя. 
Для цієї реалізації конкретні підмножини цих орієнтирів особливо актуальні: 
точки, що відображають очі (орієнтири 362-386 для правого ока і 133-157 для лівого 
ока) і точки, що визначають область рота (орієнтири 61-68). Ці орієнтири 
забезпечують геометричну основу для розрахунку ключових співвідношень, що 
використовуються при виявленні живучості. 
 
Рисунок 2.1 - Сітка ориєнтирів обличчя MediaPipe 
Реалізація використовує можливості обробки MediaPipe в режимі реального 
часу, які оптимізовані для мобільних і настільних платформ. Кожен кадр, 
оброблений MediaPipe, повертає не тільки координати орієнтира, але й оцінку 
довіри для виявлення орієнтира. Цей показник довіри має вирішальне значення для 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
підтримки надійності системи, оскільки він дозволяє системі виявляти та 
обробляти випадки, коли знакове виявлення може бути ненадійним через погані 
умови освітлення або часткову оклюзію рис обличчя. 
Інтеграція між YOLOv8-Face та MediaPipe створює двоступеневу систему 
виявлення, де кожен компонент доповнює сильні сторони іншого. Незважаючи на 
те, що YOLOv8-Face забезпечує надійне виявлення та локалізацію обличчя, 
MediaPipe забезпечує детальну геометрію обличчя, необхідну для аналізу тонких 
змін у вираженні та русі. Ця комбінація дозволяє більш складні методи виявлення 
живості, ніж було б можливо з будь-якої системи поодинці. 
 
2.3 Аналіз орієнтирів на обличчі для виявлення живості 
Аналіз співвідношень орієнтирів обличчя є основою системи виявлення 
життєвої якості. Орієнтири на обличчі являють собою специфічні анатомічні точки 
на обличчі, які можна відстежити для вимірювання змін в геометрії обличчя. Ці 
точки, надані системою сітки обличчя MediaPipe, дозволяють точно вимірювати 
риси обличчя та їх рухи. Система фокусується особливо на двох наборах 
орієнтирів: ті, що визначають області очей і ті, що позначають область рота. 
Для аналізу очей система використовує шість ключових орієнтирів для 
кожного ока, які визначають його форму та можливості руху. Цими точками 
відзначаються куточки ока і верхні і нижні повіки. Співвідношення між цими 
точками (Рисунок 2.2) можна оцінити за допомогою співвідношення сторін ока, яке 
вимірює співвідношення між вертикальною та горизонтальною відстанями отвору 
ока [5]. Це співвідношення забезпечує надійну метрику для виявлення моргань, 
оскільки вертикальні відстані між повіками значно зменшуються під час моргання, 
а горизонтальна відстань залишається відносно постійною. 
 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
 
Рисунок 2.2 – Приклад розмітки орієнтира (ока) за яким розраховується 
співвідношення 
Аналогічно, область рота аналізується за допомогою восьми стратегічних 
орієнтирів, які фіксують форму та рух рота під час міміки. Ці точки позначають 
кути рота і різні точки уздовж верхньої і нижньої губи. Співвідношення сторін рота 
розраховується шляхом вимірювання взаємозв'язку між шириною рота (відстань 
між кутами) і його висотою (усереднене з декількох вертикальних вимірювань). Це 
співвідношення ефективно фіксує геометричні зміни, які відбуваються під час 
справжніх виразів посмішки, оскільки посмішка зазвичай збільшує співвідношення 
ширини до висоти рота. 
Математична основа цих вимірювань спирається на геометричні 
співвідношення між знаковими точками в двовимірному просторі. Для 
співвідношення сторін очей розрахунок розглядає два набори вертикальних 
відстаней і одну горизонтальну відстань. Вертикальні відстані вимірюють поділ 
між верхньою і нижньою повікою в двох точках уздовж ока, а горизонтальні 
відстані вимірюють ширину ока. Ці вимірювання поєднуються у співвідношення, 
яке залишається відносно стабільним, коли око відкрите, але значно падає під час 
моргання. 
Співвідношення сторін рота має подібний принцип, але з додатковою 
складністю через більш різноманітний характер рухів рота. Вимірювання ширини 
фіксує відстань між кутами рота, а висота розраховується як середнє значення 
трьох вертикальних вимірювань: ліворуч, праворуч і в центрі рота. Цей підхід 
усереднення забезпечує більш стабільне вимірювання, що пояснює природну 
асиметрію міміки. Отримане співвідношення значно збільшується під час 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
справжніх виразів посмішки, оскільки рот зазвичай розширюється більше, ніж 
збільшується. 
Ці співвідношення аналізуються не просто як статичні вимірювання, а як 
динамічні значення, які змінюються з часом. Система відстежує ці зміни за 
допомогою тимчасового аналізу, встановлюючи базові значення під час 
нейтральних виразів і виявляючи значні відхилення, які вказують на справжні рухи 
обличчя. Цей часовий аспект має вирішальне значення для виявлення живості, 
оскільки він допомагає розрізняти справжні рухи обличчя та статичні зображення 
або відеоповтори. Система підтримує середні значення цих вимірювань для 
врахування природних змін, залишаючись чутливою до швидких змін, характерних 
для справжніх рухів обличчя. 
Пороги для виявлення значних змін у цих співвідношеннях були визначені 
шляхом емпіричного тестування та аналізу типових моделей рухів обличчя. Ці 
пороги розроблені, щоб бути досить надійними, щоб впоратися з природними 
варіаціями міміки, залишаючись досить чутливими, щоб виявити навмисні рухи, 
необхідні для перевірки живості. Система також розглядає тривалість і характер 
цих змін, оскільки справжні рухи обличчя слідують характерним часовим зразкам, 
які важко відтворити в спробах підміни. 
Для виявлення моргання система контролює співвідношення сторін очей для 
характерних візерунків, які вказують на справжнє закриття очей. Справжнє 
моргання зазвичай слідує певній часовій схемі: швидке зменшення значення 
співвідношення при закритті ока, а потім короткий період мінімального 
співвідношення під час закриття, а потім швидке збільшення при відновленні ока. 
Система реалізує механізм вікна часу, який вимагає певної кількості моргань 
протягом певного періоду, що ускладнює для потенційних нападників 
моделювання природного ритму і швидкості людських моргань. 
Виявлення посмішки відбувається за схожим, але чітким процесом перевірки. 
Система враховує поступовий характер формування посмішки та розслаблення, 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
розрізняючи плавні переходи справжніх виразів та потенційно різкі зміни, які 
можуть виникнути у відеоповторах або складних масках. Цей аналіз включає в себе 
розгляд симетрії та послідовності руху, оскільки справжні посмішки зазвичай 
включають скоординовані зміни в декількох областях обличчя. 
Інтеграція цих вимірювань з просторовим аналізом, наданим детектором 
обмежувальної рамки YOLOv8-Face, створює кілька шарів перевірки. Цей 
багатошаровий підхід дозволяє системі підтримувати високі стандарти безпеки, 
залишаючись практичною для реальних застосувань, де повинні бути розміщені 
такі фактори, як умови освітлення, позиціонування користувача та наявність 
аксесуарів. 
 
2.4 Принципи виявлення облич при застосуванні технологій ML 
Принципи виявлення облич у технологіях машинного навчання є 
фундаментальною складовою сучасних біометричних систем. За своєю суттю, 
виявлення обличчя передбачає ідентифікацію та локалізацію людських облич у 
цифрових зображеннях або відеопотоках, що є найважливішим першим кроком у 
будь-якому конвеєрі аналізу обличчя. Цей процес значно еволюціонував від 
традиційних підходів комп'ютерного зору до сучасних методів глибокого 
навчання, які пропонують поліпшену точність і надійність. 
Сучасні системи виявлення облич зазвичай використовують згорткові 
нейронні мережі (ЗНМ), які вивчають ієрархічні особливості з навчальних даних. 
Ці мережі обробляють зображення через кілька шарів, кожен з яких відповідає за 
виявлення все більш складних функцій. Початкові шари визначають основні 
елементи, такі як краї і градієнти, в той час як більш глибокі шари об'єднують ці 
особливості, щоб розпізнати більш складні патерни, характерні для людських 
облич. Цей ієрархічний підхід дозволяє системі розуміти риси обличчя в різних 
масштабах і орієнтаціях, роблячи виявлення надійним у різних умовах. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
Реалізація цієї системи використовує два додаткових підходи до виявлення 
облич. YOLOv8-Face забезпечує швидку і точну локалізацію обличчя завдяки своїй 
одноступеневій архітектурі виявлення, яка обробляє все зображення за один прохід 
вперед для створення обмежувальних полів (Рисунок 2.3). Це доповнюється 
системою сітки обличчя MediaPipe, яка базується на первинному виявленні, щоб 
забезпечити детальний аналіз структури обличчя. Поєднання цих підходів 
забезпечує швидкість і точність, а ефективне виявлення YOLO забезпечує 
просторовий контекст для більш детального аналізу MediaPipe. 
 
Рисунок 2.3 – Виявлення обличчя використовуючи YOLOv8-Face 
Системи виявлення обличчя повинні вирішувати різні проблеми, включаючи 
зміни в позі, освітленні та оклюзії. Сучасні підходи на основі ML обробляють ці 
проблеми за допомогою широкого навчання з різноманітних наборів даних та 
впровадження методів збільшення даних. Ці системи вчаться розпізнавати обличчя 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
в різних умовах, що робить їх досить надійними для реальних додатків, зберігаючи 
при цьому швидкість, необхідну для обробки в режимі реального часу. 
Практична реалізація виявлення обличчя повинна збалансувати кілька 
конкуруючих вимог. Вимоги до обробки в реальному часі вимагають ефективних 
алгоритмів, які можуть підтримувати високу частоту кадрів, забезпечуючи точні 
результати виявлення. Цей баланс досягається шляхом ретельної оптимізації 
архітектур моделей і конвеєрів обробки, гарантуючи, що обчислювальні ресурси 
використовуються ефективно без шкоди для точності виявлення. 
У контексті анти-spoofing систем, виявлення обличчя служить кілька 
критичних функцій за межами простої локалізації. Система виявлення повинна 
забезпечувати послідовні та стабільні результати на послідовних кадрах, оскільки 
нестабільні виявлення можуть заважати подальшому відстеженню орієнтирів та 
аналізу життя. Крім того, система виявлення повинна бути надійною проти 
звичайних спроб спуфінгу, таких як друковані фотографії або цифрові дисплеї, які 
часто представляють тонкі відмінності в текстурі і глибині в порівнянні з 
справжніми обличчями. 
Інтеграція декількох методологій виявлення забезпечує резервування і 
підвищення надійності. Хоча YOLOv8-Face відрізняється швидкою локалізацією 
обличчя та генерацією обмежувальної коробки, можливості виявлення MediaPipe 
сприяють загальній надійності системи. Цей підхід подвійного виявлення 
допомагає мінімізувати помилкові спрацьовування та забезпечує надійне 
відстеження навіть у складних умовах. 
Сучасні системи виявлення облич також виграють від постійних досягнень в 
архітектурах глибинного навчання та методологіях навчання. Ці поліпшення 
призвели до моделей, які можуть краще обробляти крайові випадки і підтримувати 
точність у більш широкому діапазоні реальних умов. Реалізація використовує ці 
досягнення, зберігаючи практичні міркування для розгортання в додатках безпеки, 
де надійність і послідовна продуктивність мають першорядне значення. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
 
2.5 Розпізнавання динамічних сцен зображень 
Розпізнавання динамічних образних сцен відіграє вирішальну роль у 
розрізненні справжніх людських взаємодій та складних спроб спуфінгу. На відміну 
від статичного аналізу зображення, динамічне розпізнавання сцени фокусується на 
часових аспектах рухів обличчя та змін навколишнього середовища в послідовних 
кадрах. Цей часовий аналіз забезпечує додатковий рівень безпеки, виявляючи 
моделі, характерні для справжньої людської поведінки, і їх важко відтворити за 
допомогою штучних засобів. 
Тимчасовий аналіз в системі працює за допомогою багатокадрового підходу, 
який відстежує зміни рис обличчя з плином часу. Цей аналіз розглядає не тільки 
наявність руху, але і його якість і природне прогресування. Рухи обличчя людини 
демонструють специфічні патерни: моргання відбуваються з характерною 
швидкістю і симетрією, тоді як справжні посмішки розвиваються і поступово 
згасають. Система підтримує часовий буфер вимірювань, що дозволяє їй 
аналізувати ці моделі руху та відрізняти їх від штучних спроб, які можуть не мати 
природної плинності або часу. 
Обробка кадрів в динамічному розпізнаванні сцени вимагає ретельного 
розгляду часової послідовності. Система обробляє вхідні відеокадри з 
контрольованою швидкістю, забезпечуючи послідовну тимчасову вибірку при 
збереженні продуктивності в реальному часі. Ця обробка включає виявлення руху 
між послідовними кадрами, аналізуючи як глобальні моделі руху, так і локалізовані 
зміни рис обличчя. Реалізація використовує методи диференціації кадрів для 
виявлення значних змін при фільтрації незначних змін, які можуть виникнути 
внаслідок шуму камери або коливань освітлення. 
Методологія виявлення руху включає як просторовий, так і часовий 
компоненти. Просторово система відстежує зміни позицій орієнтирів обличчя 
відносно виявленої межі обличчя, виявляючи рухи, які узгоджуються з природною 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
мімікою. Тимчасово ці рухи аналізуються на моделі, які відповідають очікуваній 
поведінці людини. Система використовує порогове виявлення, яке враховує як 
величину, так і тривалість виявлених рухів, допомагаючи відфільтрувати 
помилкові рухи, залишаючись чутливим до справжньої міміки. 
Динамічний аналіз виходить за рамки простого виявлення руху, включаючи 
розпізнавання образів у часовій області. Це включає в себе моніторинг 
послідовності та часу рухів обличчя, оскільки справжні взаємодії людини зазвичай 
демонструють природні варіації та мікрорухи, які важко відтворити в спробах 
підміни. Система підтримує історичний контекст виявлених рухів, дозволяючи їй 
виявляти підозрілі ознаки, які можуть вказувати на автоматизовану або штучну 
поведінку. 
Реалізація динамічного аналізу сцени також розглядає взаємозв'язок між 
різними типами рухів обличчя. Природні людські вирази рідко включають окремі 
рухи окремих ознак; замість цього вони зазвичай демонструють скоординовані 
зміни в декількох областях обличчя. Наприклад, справжні посмішки часто 
включають тонкі рухи очей на додаток до зміни форми рота, тоді як природні 
моргання можуть супроводжуватися мінімальними рухами голови. Часовий аналіз 
системи фіксує ці кореляції, використовуючи їх як додаткові показники справжньої 
присутності людини. 
Фактори навколишнього середовища відіграють значну роль у динамічному 
аналізі сцени. Система повинна враховувати зміни умов освітлення, руху камери та 
зміни фону, зберігаючи надійне виявлення рухів обличчя. Це досягається за 
допомогою методів адаптивного порогу, які регулюють чутливість на основі 
поточних умов, забезпечуючи стабільну продуктивність у різних середовищах. 
Реалізація включає механізми компенсації поступових змін освітлення та різких 
рухів, запобігання помилковим виявленням при збереженні чутливості до 
справжньої міміки. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
Система тимчасового аналізу також включає в себе гарантії проти складних 
спроб спуфінгу, які можуть спробувати відтворити природні моделі руху. Це 
включає в себе аналіз послідовності руху, який допомагає визначити штучні 
анімації або глибокі підроблені спроби. Система підтримує баланс між чутливістю 
і специфічністю, встановлений на рівнях, визначених за допомогою емпіричного 
тестування для оптимізації безпеки при збереженні практичної зручності 
використання. 
 
2.6 Дослідження аналізу текстури для виявлення спуфінгу 
Аналіз текстури являє собою додатковий підхід до виявлення підробки, який, 
хоча і не реалізований в кінцевій системі, демонструє потенціал для підвищення 
безпеки в контрольованих середовищах. Цей метод фокусується на аналізі 
мікротекстурних візерунків та характеристик поверхні, які розрізняють справжні 
людські обличчя та різні підміни, такі як друк паперу, цифрові дисплеї або маски. 
Дослідження текстурного аналізу включало три основні компоненти: локальну 
дисперсію, аналіз градієнтної величини та дослідження частотної області через 
швидке перетворення Фур'є. 
Аналіз дисперсії локальних візерунків вивчає текстурну складність лицьової 
області. Шкіра людини демонструє природні зміни текстури через пори, невеликі 
зморшки та тонкі кольорові варіації, які створюють чіткі патерни дисперсії. Ця 
дисперсія обчислюється за допомогою оператора Лапласа, який підкреслює швидкі 
локальні зміни інтенсивності пікселів (Рисунок 2.4). Друковані або відображувані 
зображення зазвичай показують різні шаблони дисперсії через їх більш однорідні 
характеристики поверхні або наявність звичайних піксельних структур у цифрових 
дисплеях. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
 
Рисунок 2.4 – Візуалізація зображення лапласіанського відгуку на обличчі, 
виділяючи області з високою дисперсією 
Аналіз величини градієнта дає інформацію про міцність і розподіл країв 
всередині лицьової області. Цей підхід обчислює прямі зміни інтенсивності 
пікселів за допомогою операторів Собеля в горизонтальному і вертикальному 
напрямках. Справжні обличчя, як правило, демонструють плавні градієнтні 
переходи через природну кривизну рис обличчя та текстури шкіри (Рисунок 2.5), 
тоді як спроби спуфінгу часто демонструють більш гострі або більш штучні 
градієнтні патерни, особливо на краях друкованих зображень або навколо кордонів 
маскових матеріалів. 
 
Рисунок 2.5  - Візуалізація зображення градієнтної амплітудної 
характеристики на обличчі, що підкреслює міцність країв у горизонтальному та 
вертикальному напрямках. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
Аналіз частотної області за допомогою швидкого перетворення Фур'є вивчає 
періодичні закономірності, які можуть вказувати на штучне відтворення. Цифрові 
дисплеї, зокрема, мають тенденцію демонструвати регулярні патерни завдяки своїй 
піксельній структурі, яка стає очевидною в частотному спектрі. Спектр величин 
перетворення Фур'є (Рисунок 2.6) може виявити ці періодичні компоненти, 
потенційно розрізняючи більш випадкові частотні розподіли справжніх граней і 
регулярні закономірності, характерні для цифрових дисплеїв. 
 
Рисунок 2.6 - Візуалізація частотного представлення зображення обличчя з 
відображенням логарифмічного спектру амплітуд. 
Хоча цей підхід показав перспективність контрольованого тестування, його 
практична реалізація зіткнулася з проблемами через різні умови навколишнього 
середовища, що зустрічаються в реальних сценаріях. Такі фактори, як варіації 
освітлення, якість камери та відстань від датчика значно вплинули на надійність 
вимірювань на основі текстури. Метод вимагає ретельного калібрування та 
коригування порогу для конкретних умов розгортання, що робить його більш 
придатним для контрольованих середовищ з послідовним освітленням та 
фіксованими положеннями датчика. 
 
2.7 Відстеження руху для виявлення спуфінгу 
Відстеження руху для виявлення підробки спирається на аналіз природних 
моделей руху обличчя, які характерні для справжньої поведінки людини. Цей 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
підхід використовує розуміння того, що людські обличчя демонструють тонкі, 
безперервні рухи, які значно відрізняються від моделей, що спостерігаються в 
спробах спуфінгу. Аналіз фокусується як на просторових, так і на часових аспектах 
цих рухів, створюючи всебічний профіль динаміки обличчя. 
Фундаментальний принцип виявлення підробок на основі руху полягає в 
відстеженні ключових орієнтирів обличчя через послідовні кадри. Ці орієнтири, як 
правило, включаючи помітні риси обличчя, такі як кінчик носа, підборіддя та очі, 
створюють систему посилань для аналізу моделей руху. Система вивчає не тільки 
величину рухів, але й їхні взаємозв'язки та часову узгодженість, оскільки справжні 
обличчя демонструють природні кореляції між різними областями обличчя. 
Основою аналізу руху є дві основні метрики: співвідношення руху та часова 
узгодженість. Співвідношення рухів вивчає взаємозв'язок між варіаціями рухів у 
різних областях обличчя, фіксуючи природну асиметрію та складність рухів 
обличчя людини. Тимчасова узгодженість вимірює стабільність і безперервність 
цих рухів з плином часу, оскільки справжні обличчя зазвичай відображають плавні, 
безперервні моделі руху, а не різкі або механічні зміни. 
Тимчасове усереднення може бути використано для підвищення надійності 
виявлення руху. Цей підхід зберігає історичний запис рухів, дозволяючи системі 
визначати закономірності, які з'являються з плином часу, а не покладатися на 
миттєві вимірювання. Цей часовий аналіз допомагає розрізняти природні 
відмінності в русі людини і потенційно повторювані або штучні моделі, які можуть 
з'явитися в спробах спуфінгу. 
Статистичний аналіз моделей рухів дає уявлення про автентичність рухів 
обличчя. Система вивчає стандартне відхилення та середнє значення рухів у різних 
областях обличчя, створюючи профіль характеристик руху, які можуть 
ідентифікувати підозрілі патерни. Ці статистичні заходи допомагають кількісно 
оцінити природну мінливість, наявну в справжніх рухах обличчя, позначаючи 
потенційно штучні моделі руху. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
 
2.8 Відстеження країв та руху для виявлення спуфінгу 
Аналіз відстеження країв і рухів забезпечує важливі механізми для виявлення 
поширених презентаційних атак, особливо тих, що стосуються друкованих 
фотографій або цифрових дисплеїв. Ця методологія подвійного підходу поєднує 
статичне виявлення краю з динамічним аналізом руху для виявлення 
характеристик, які зазвичай вказують на спроби спуфінгу. Цей підхід особливо 
ефективний для виявлення фізичних меж презентаційних медіа та тонких моделей 
руху, які відрізняються від природного руху людини. 
Виявлення країв - це фундаментальний метод обробки зображень, який 
визначає межі всередині зображення шляхом виявлення розривів яскравості. 
Процес працює шляхом аналізу змін інтенсивності пікселів та маркування ділянок 
на зображенні, де яскравість різко змінюється. Загальні методи, такі як оператор 
Собеля, використовують ядра згортки для обчислення градієнтів інтенсивності, 
тоді як більш складні підходи, такі як детектор Кенні, використовують кілька 
етапів, включаючи гаусове згладжування, градієнтний розрахунок, не максимальне 
придушення та гістерезис для отримання надійних карт країв [6]. 
Методологія виявлення країв фокусується на виявленні регулярних 
геометричних візерунків в області навколо виявленого обличчя. У той час як 
людські обличчя природно переходять в області шиї і волосся з органічними 
кордонами, фотографії і цифрові дисплеї зазвичай представляють гострі, регулярні 
краї. Система аналізує розширену область навколо виявленого обличчя, шукаючи 
ці характерні краї, які можуть вказувати на наявність екрану телефону або межі 
фотографії. Цей аналіз розглядає щільність і розподіл виявлених ребер, оскільки 
високі крайові концентрації в регулярних моделях часто вказують на штучні 
методи представлення. 
Відстеження руху забезпечує додатковий рівень безпеки шляхом аналізу 
часової стабільності та послідовності рухів обличчя. Цей підхід фокусується на 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
ключових орієнтирах обличчя та вивчає їх моделі руху з часом. Природний рух 
людини, навіть при спробі залишитися нерухомим, проявляє характерні мікрорухи 
і тонкі варіації. На відміну від цього, презентаційні атаки зазвичай відображають 
різні моделі руху, такі як регулярні поштовхи, пов'язані з ручними пристроями або 
жорсткою стабільністю встановлених фотографій. Система зберігає тимчасову 
історію знакових позицій, дозволяючи їй ідентифікувати моделі руху, які 
відхиляються від очікуваної поведінки людини. 
Інтеграція цих двох підходів створює надійну систему виявлення, яка може 
ідентифікувати різні типи презентаційних атак. Виявлення країв забезпечує 
негайний зворотний зв'язок про фізичні характеристики презентації, а відстеження 
руху додає часовий аналіз, який може виявити підозрілі моделі руху. Ця комбінація 
особливо ефективна, оскільки вона стосується як статичних, так і динамічних 
аспектів спроб спуфінгу, що ускладнює обхід за допомогою одновекторних атак. 
 
2.9 Принципи оптимізації роботи алгоритмів ML в реальному часі для 
покращення антиспуфінгової системи безпеки 
Оптимізація алгоритмів машинного навчання для застосунків проти спуфінгу 
в реальному часі вимагає ретельного розгляду як обчислювальної ефективності, так 
і точності виявлення. Реалізація використовує кілька стратегій оптимізації по 
всьому конвеєру обробки, починаючи з початкового збору кадрів і продовжуючи 
кожен етап аналізу. Ці оптимізації мають вирішальне значення для підтримки 
чутливості системи, забезпечуючи надійні заходи безпеки. 
Оптимізація обробки кадрів починається на рівні придбання зі стратегічним 
пропуском кадрів та масштабуванням роздільної здатності. Реалізуючи 
настроюваний параметр пропускання кадрів, система може регулювати його 
навантаження на обробку на основі наявних обчислювальних ресурсів, зберігаючи 
ефективні можливості виявлення. Масштабування роздільної здатності додатково 
оптимізує обробку шляхом зменшення розміру вхідного сигналу, зберігаючи 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
достатню деталізацію для точного аналізу. Ці початкові оптимізації значно 
зменшують обчислювальні витрати без шкоди для здатності системи виявляти 
спроби підміни. 
Алгоритм виявлення обличчя оптимізований за допомогою ефективного 
управління регіоном інтересів. Як тільки YOLOv8-Face виявляє обличчя і надає 
координати рамки розміру, подальша обробка обмежується цими областями, а не 
всім кадром. Цей підхід на основі управління регіоном інтересів значно зменшує 
обчислювальне навантаження для визначення орієнтирів MediaPipe та подальших 
етапів аналізу. Система підтримує оригінальні координати кадрів при обробці 
менших областей, оптимізуючи використання пам'яті, зберігаючи просторову 
точність. 
Оптимізація управління пам'яттю здійснюється за допомогою стратегічних 
обмежень обробки даних і буфера. Система підтримує суворий контроль над 
розмірами буфера для історії руху, відстеження орієнтирів та тимчасового аналізу, 
запобігаючи витоку пам'яті та забезпечуючи стабільну довгострокову роботу. 
Динамічний розподіл пам'яті зводиться до мінімуму під час обробки в режимі 
реального часу, з попередньо виділеними буферами та ефективними структурами 
даних, що зменшують накладні витрати системи. Цей підхід особливо важливий 
для систем, які повинні працювати безперервно протягом тривалого періоду часу. 
Реалізація включає адаптивні механізми порогування, які оптимізують 
чутливість виявлення на основі поточних умов експлуатації. Ці адаптивні системи 
автоматично регулюють такі параметри, як граничні пороги виявлення та 
чутливість руху на основі факторів навколишнього середовища, таких як умови 
освітлення та стабільність камери. Ця динамічна оптимізація забезпечує надійне 
виявлення в різних умовах при збереженні ефективних вимог до обробки. 
Механізми обробки помилок і відновлення оптимізовані для підтримки 
стабільності системи без введення значних накладних витрат. Реалізація включає в 
себе ефективну обробку винятків, яка дозволяє системі відновитися після 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
тимчасових збоїв виявлення або помилок обробки, не вимагаючи повного 
перезавантаження конвеєра. Це надійне управління помилками забезпечує 
безперервну роботу, зберігаючи цілісність безпеки, особливо важливу для 
реальних додатків, де надійність системи має вирішальне значення. 
 
2.10 Висновки 
Розробка методу анти-спуфінгу для біометричних систем безпеки являє собою 
складну взаємодію декількох технологій і підходів. Завдяки реалізації аналізу 
облич, динамічного розпізнавання сцен та багатошарових механізмів виявлення 
підробок система демонструє ефективність поєднання додаткових заходів безпеки. 
Інтеграція YOLOv8-Face для виявлення кордонів та MediaPipe для відстеження 
орієнтирів створює надійну основу для виявлення живості, тоді як додаткові шари 
руху та аналізу країв забезпечують підвищену безпеку від складних презентаційних 
атак. 
Методологія демонструє особливу силу у своїй подвійній реалізації окремих 
систем розпізнавання моргання та посмішки. Кожна система працює незалежно, 
аналізуючи різні аспекти руху обличчя для перевірки живості. Детектор моргання 
фокусується на точних вимірах моделей закриття очей, тоді як детектор посмішки 
аналізує зміни геометрії рота, створюючи два різні канали перевірки. Таке 
розділення дозволяє проводити порівняльний аналіз їх ефективності в різних 
умовах, забезпечуючи при цьому надмірність в процесі перевірки. 
Дослідження аналізу текстур, хоча і не реалізовано в кінцевій системі, дає 
цінне розуміння потенційних майбутніх розробок для контрольованих середовищ. 
Аналогічно, компоненти виявлення країв та відстеження руху демонструють 
важливість врахування як безпосередніх фізичних характеристик, так і тимчасових 
моделей у виявленні підробки. Стратегії оптимізації системи гарантують, що ці 
складні заходи безпеки можуть ефективно працювати в реальному часі. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
  
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
РОЗДІЛ 3. ЗАСТОСУВАННЯ ТЕХНОЛОГІЙ МАШИННОГО 
НАВЧАННЯ ДЛЯ ПРАКТИЧНОЇ РЕАЛІЗАЦІЇ АНТИСПУФІНГОВОЇ 
СИСТЕМИ БЕЗПЕКИ 
 
3.1 Налаштування середовища 
Середовище розробки для цього проекту було створено на платформі Windows 
10, використовуючи Python 3.11.5 як основну мову програмування. Реалізація була 
здійснена через Jupyter Notebook, який забезпечив ефективний інтерфейс для 
прототипування, тестування та документування експериментальних результатів. 
Цей вибір середовища розробки виявився особливо корисним для інтерактивного 
характеру проекту, що дозволило негайно візуалізувати результати та оптимізувати 
процеси налагодження. 
Ядро програмного забезпечення складається з декількох основних бібліотек, 
кожна з яких виконує певні функції в системі виявлення живості. OpenCV 4.10.0 
був використаний для фундаментальних операцій обробки зображень і 
можливостей обробки відео. MediaPipe 0.10.18 забезпечував функціональність 
виявлення орієнтирів обличчя, тоді як NumPy 1.26.4 обробляв числові обчислення, 
необхідні для обробки даних. 
 
3.2 Реалізація виявлення обличчя та вилучення орієнтирів 
Реалізація поєднує в собі дві потужні технології комп'ютерного зору: 
YOLOv8-Face для початкового виявлення обличчя та MediaPipe Face Mesh для 
детального вилучення орієнтирів для обличчя. Цей двохсистемний підхід 
забезпечує як надійне виявлення обличчя, так і точне відстеження ознак обличчя, 
необхідне для виявлення живості. 
YOLOv8-Face була ініціалізована моделлю «yolov8n-face-lindevs.pt», яка 
пропонує ефективний баланс між швидкістю та точністю. Модель була обрана за її 
здатність виконувати виявлення обличчя в режимі реального часу, зберігаючи 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
надійну точність у різних умовах. Для виявлення орієнтирів для обличчя рішення 
MediaPipe Face Mesh було налаштовано з певними параметрами для оптимізації 
продуктивності: 
model = YOLO('yolov8n-face-lindevs.pt') 
mp_face_mesh = mp.solutions.face_mesh 
face_mesh = mp_face_mesh.FaceMesh( 
    max_num_faces=1, 
    refine_landmarks=True, 
    min_detection_confidence=0.5, 
    min_tracking_confidence=0.5 
) 
Конфігурація сітки обличчя обмежує виявлення однієї особи одночасно 
(max_num_faces=1), що підходить для сценаріїв біометричної автентифікації. 
Опція уточнених орієнтирів дозволяє більш точно відстежувати риси обличчя, а 
пороги виявлення та відстеження встановлюються на рівні 0,5, щоб збалансувати 
точність з продуктивністю. 
Обробка відео починається з захоплення кадру та додаткового пропускання 
кадру для оптимізації продуктивності. Кожен кадр масштабується відповідно до 
визначеного відсотку, щоб забезпечити швидку обробку: 
ret, frame = cap.read() 
width = int(frame.shape[1] * scale_percent / 100) 
height = int(frame.shape[0] * scale_percent / 100) 
frame = cv2.resize(frame, (width, height)) 
Процес виявлення обличчя використовує YOLOv8-Face для ідентифікації 
областей обличчя в кожному кадрі. Для кожного виявленого обличчя система 
витягує координати рамки розміру та створює обрізану область для більш 
детального аналізу: 
results_yolo = model(frame, verbose=False) 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
for result in results_yolo: 
    boxes = result.boxes 
    for box in boxes: 
        x1, y1, x2, y2 = map(int, box.xyxy[0]) 
        face_crop = frame[y1:y2, x1:x2] 
Обрізана область обличчя потім обробляється MediaPipe Face Mesh для 
вилучення орієнтирів для обличчя (Рисунок 3.1). 
 
Рисунок 3.1 – Візуалізація MediaPipe Face Mesh 
Важливим аспектом реалізації є перетворення системи координат, де 
орієнтовні координати з обрізаної області коригуються відповідно до 
координатного простору вихідного кадру: 
rgb_crop = cv2.cvtColor(face_crop, cv2.COLOR_BGR2RGB) 
results_mesh = face_mesh.process(rgb_crop) 
if results_mesh.multi_face_landmarks: 
    for face_landmarks in results_mesh.multi_face_landmarks: 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
        for idx, landmark in enumerate(face_landmarks.landmark): 
            x = landmark.x * (x2 - x1) + x1 
            y = landmark.y * (y2 - y1) + y1 
            z = landmark.z 
            face_landmarks.landmark[idx].x = x / frame.shape[1] 
            face_landmarks.landmark[idx].y = y / frame.shape[0] 
            face_landmarks.landmark[idx].z = z 
Це перетворення координат має важливе значення для підтримки точних 
орієнтирів відносно вихідного кадру, що забезпечує точне відстеження ознак для 
подальшого аналізу. Система обробляє кожен кадр послідовно, забезпечуючи 
безперервний потік даних про орієнтири обличчя, що є основою для механізмів 
боротьби зі спуфінгом, реалізованих на більш пізніх етапах. 
 
3.3 Виявлення країв для розпізнавання мобільних пристроїв і фотографій 
Першою лінією захисту в системі боротьби зі спуфінгом є виявлення країв, 
метою якого є виявлення наявності екранів пристроїв або друкованих фотографій 
шляхом виявлення штучних кордонів навколо лицьової області. Цей метод працює 
за принципом, що презентаційні атаки часто включають відображення облич на 
телефонах або утримання друкованих фотографій, які створюють відмінні патерни 
краю в навколишній області. 
Реалізація використовує алгоритм виявлення країв Canny OpenCV, аналізуючи 
визначену область інтересу навколо виявленого обличчя. Область пошуку 
динамічно розраховується виходячи з розмірів обличчя: 
margin = SEARCH_MARGIN  
width = fx2 - fx1 
height = fy2 - fy1 
search_x1 = max(0, int(fx1 - width * margin)) 
search_y1 = max(0, int(fy1 - height * margin)) 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
search_x2 = min(frame.shape[1], int(fx2 + width * margin)) 
search_y2 = min(frame.shape[0], int(fy2 + height * margin)) 
Область пошуку виходить за межі лицьової межі за допомогою 
налаштовуваного поля, гарантуючи, що потенційні краї екрана або межі 
фотографій включені в аналіз (Рисунок 3.2). Система здійснює перевірку меж, щоб 
запобігти помилкам індексу масиву, коли обличчя знаходиться поблизу країв 
кадру. 
 
Рисунок 3.2 – Поширена область пошуку дає можливість охопити краї 
екрану мобільного пристроя 
У цій області інтересу зображення перетворюється в градації сірого (Рисунок 
3.3) і обробляється за допомогою детектора Canny: 
gray_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY) 
edges = cv2.Canny(gray_roi, CANNY_LOW, CANNY_HIGH) 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
 
Рисунок 3.3 – Перетворене зображення 
Алгоритм Канні використовує два пороги (CANNY_LOW і CANNY_HIGH) 
для виявлення значних ребер при зниженні шуму. Щільність країв потім 
обчислюється як відношення крайових пікселів до загальних пікселів в область 
інтересу: 
edge_count = np.sum(edges > 0) 
edge_density = edge_count / (edges.shape[0] * edges.shape[1]) 
Ця метрика крайової щільності служить основним індикатором для виявлення 
підробки. Щільність, що перевищує заданий поріг 
(EDGE_DENSITY_THRESHOLD), передбачає наявність штучних меж, 
характерних для презентаційних атак. Система забезпечує візуальний зворотний 
зв'язок під час розробки та тестування шляхом відображення результатів виявлення 
краю та поточної щільності краю: 
color = (0, 0, 255) if edge_density > EDGE_DENSITY_THRESHOLD else (0, 255, 0) 
cv2.putText(frame, f'Edge Density: {edge_density:.3f}', (10, 460), 
           cv2.FONT_HERSHEY_SIMPLEX, 0.7, color, 2) 
Цей метод особливо ефективний при виявленні жорстких країв, характерних 
для екранів пристроїв та меж фотографій, при збереженні відносної нечутливості 
до природних варіацій фону. Успіх підходу залежить від ретельного налаштування 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
порогу для балансу між помилковими спрацьовуваннями та надійним виявленням 
підробки. 
 
3.4 Аналіз шаблону руху для виявлення спуфінга 
Другий механізм проти спуфінгу реалізує аналіз руху, щоб виявити тонкі, але 
відмінні поштовхи, пов'язані з ручними презентаційними атаками. Цей підхід 
доповнює систему виявлення країв шляхом виявлення характерних моделей руху, 
які виникають, коли зловмисник представляє телефон або фотографію, які 
відрізняються від природних рухів живої людини. 
Система відстежує чотири ключові орієнтири обличчя на кадрах: 
key_points = np.array([ 
    [landmarks.landmark[1].x * width, landmarks.landmark[1].y * height],    # Nose tip 
    [landmarks.landmark[152].x * width, landmarks.landmark[152].y * height],# Chin 
    [landmarks.landmark[33].x * width, landmarks.landmark[33].y * height],  # Left eye 
    [landmarks.landmark[263].x * width, landmarks.landmark[263].y * height] # Right eye 
]) 
Ці точки стратегічно обрані для захоплення як жорсткого руху голови, так і 
рухів рис обличчя. Система зберігає історію цих знакових позицій і аналізує їх 
моделі руху з плином часу: 
movements = [] 
for i in range(1, len(landmark_history)): 
    prev_points = landmark_history[i-1] 
    curr_points = landmark_history[i] 
    point_movements = np.linalg.norm(curr_points - prev_points, axis=1) 
    movements.append(point_movements) 
Розраховано дві ключові метрики, щоб розрізняти справжні та підроблені 
презентації: 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
1. Коефіцієнт руху: Розрахований як стандартне відхилення руху струму, 
поділене на їх середнє значення, цей показник фіксує рівномірність руху по 
рисах обличчя: 
movement_ratio = np.std(current_movement) / (np.mean(current_movement) + 1e-6) 
2. Тимчасова послідовність: вимірює стабільність рухів з плином часу: 
temporal_consistency = np.std(np.mean(movements, axis=1)) 
Система підтримує середні значення цих показників для прийняття більш 
надійних рішень: 
avg_consistency = np.mean(consistency_history) 
avg_movement_ratio = np.mean(movement_ratio_history) 
За допомогою емпіричного тестування було відзначено, що атаки презентації 
демонструють більш високі значення часової узгодженості (зазвичай 1,9-2,5) 
порівняно з справжніми презентаціями (приблизно 1,0). Ця різниця виникає через 
мимовільні тремтіння рук, присутні при утриманні телефону або фотографії, 
створюючи більш послідовний, більш частотний малюнок руху, ніж природні 
варіації живих рухів обличчя. 
Остаточне визначення підробки проводиться, коли доступні достатні 
історичні дані: 
if len(consistency_history) >= HISTORY_SIZE: 
    is_spoof = avg_consistency > SPOOF_CONSISTENCY_THRESHOLD 
Цей аналіз руху служить надійним методом вторинної перевірки, особливо 
ефективним при виявленні презентаційних атак, які можуть пройти перевірку 
виявлення краю. Поєднання обох методів значно підвищує здатність системи 
виявляти складні спроби спуфінгу, зберігаючи високу точність для справжніх 
презентацій. 
 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
3.5 Експериментальний метод аналізу текстур 
Хоча він не був реалізований у фінальній системі, був розроблений 
експериментальний підхід до аналізу текстур для вивчення додаткових 
можливостей проти спуфінгу. Цей метод намагався розрізняти справжні обличчя 
та цифрові/друковані репродукції (Рисунок 3.4), аналізуючи три ключові 
характеристики текстури: 
Локальна дисперсія: 
gray_face = cv2.cvtColor(face_region, cv2.COLOR_BGR2GRAY) 
local_var = cv2.Laplacian(gray_face, cv2.CV_64F).var() 
Ця міра допомагає покращити здатність системи виявляти справжні 
біометричні ознаки, фокусуючись на текстурних і крайових деталях, які вказують 
на живого суб'єкта. 
Градієнтний аналіз: 
sobelx = cv2.Sobel(gray_face, cv2.CV_64F, 1, 0, ksize=3) 
sobely = cv2.Sobel(gray_face, cv2.CV_64F, 0, 1, ksize=3) 
gradient_magnitude = np.sqrt(sobelx**2 + sobely**2) 
gradient_mean = np.mean(gradient_magnitude) 
Розрахунок величини градієнта був призначений для виявлення тонких 
відмінностей в текстурних переходах, які могли б розрізняти реальну шкіру і 
друковані/відображувані зображення. 
Аналіз частотної області: 
f = np.fft.fft2(gray_face) 
fshift = np.fft.fftshift(f) 
magnitude_spectrum = 20*np.log(np.abs(fshift)) 
periodic_score = np.mean(magnitude_spectrum) 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
Швидкий аналіз перетворення Фур'є був реалізований для виявлення 
періодичних моделей, які можуть бути присутніми в цифрових дисплеях або 
друкованих матеріалах. 
  
Рисунок 3.4 – Приклад роботи текстурного аналізу з оптимізованими 
порогами 
Система використовувала експериментальні пороги для кожної метрики: 
VARIANCE_THRESHOLD = 650 
GRADIENT_THRESHOLD = 25 
FFT_THRESHOLD = 100 
Однак цей підхід виявився складним для ефективного впровадження через 
кілька факторів: 
• Висока чутливість до умов освітлення 
• Несумісні результати з різною якістю відео 
• Труднощі у встановленні надійних порогів у різних середовищах 
тестування 
• Відсутність послідовної фонової ізоляції в тестовому наборі даних 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
Метод був в кінцевому рахунку виключений з остаточної реалізації, оскільки 
він не надав надійних результатів з доступними тестовими відео, які мали різні 
умови освітлення та нестатичні фони. Цей досвід підкреслив важливість контролю 
середовища в текстурованому аналізі та проблеми впровадження таких методів у 
реальних умовах. 
 
3.6 Реалізація виявлення моргання 
Система виявлення моргання реалізує надійний метод ідентифікації 
природних моргання очей за допомогою метрики співвідношення сторін ока в 
поєднанні з тимчасовим аналізом. Цей підхід фокусується на вимірюванні зв'язку 
між вертикальними та горизонтальними дистанціями між мітками отворів очей для 
виявлення справжніх візерунків моргання. 
Ядром системи виявлення моргання є розрахунок співвідношень сторін ока: 
def calculate_ear(eye_landmarks, face_landmarks): 
    points = np.array([[face_landmarks.landmark[i].x, face_landmarks.landmark[i].y] 
                       for i in eye_landmarks]) 
    v1 = np.linalg.norm(points[1] - points[5])  # First vertical distance 
    v2 = np.linalg.norm(points[2] - points[4])  # Second vertical distance 
    h = np.linalg.norm(points[0] - points[3])   # Horizontal distance 
    ear = (v1 + v2) / (2.0 * h)                 # EAR calculation 
    return ear 
Ця функція обчислює співвідношення між середньою висотою отвору ока та 
його шириною, забезпечуючи нормалізовану міру, яка залишається відносно 
послідовною на різних розмірах обличчя та відстанях камери. 
Система обробляє обидва ока одночасно, щоб забезпечити надійне виявлення: 
left_ear = calculate_ear(LEFT_EYE, face_landmarks) 
right_ear = calculate_ear(RIGHT_EYE, face_landmarks) 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
avg_ear = (left_ear + right_ear) / 2.0 
Для врахування індивідуальних варіацій форми очей та кутів камери система 
реалізує адаптивний базовий підхід: 
1. Підтримує буфер значень EAR під час станів з відкритими очима 
2. Обчислює поточну базову лінію з попередніх вимірювань 
3. Виявляє моргання на основі відносних змін з цієї базової лінії: 
if len(ear_buffer) >= 10: 
    baseline = np.mean(list(ear_buffer)[:-1]) 
    relative_change = (baseline - avg_ear) / baseline 
Логіка виявлення моргання включає в себе кілька гарантій: 
Тимчасові обмеження для запобігання помилкових спрацьовувань: 
if relative_change > CHANGE_THRESHOLD and state == 'open': 
    if last_blink_time is None or (current_time - last_blink_time) > 
MIN_TIME_BETWEEN_BLINKS: 
        state = 'closed' 
        blink_counter += 1 
Відстеження стану для забезпечення повного моргання циклів: 
elif relative_change <= CHANGE_THRESHOLD: 
    state = 'open' 
Керування буфером для підтримки чистих вимірювань базової лінії: 
if state == 'open': 
    ear_buffer.append(avg_ear) 
Така реалізація (Рисунок 3.5) дозволяє адаптацію до окремих форм та виразів 
очей та розрізняє природні моргання і стійке закриття очей. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
 
Рисунок 3.5 – Виявлення моргання в роботі, з виводом важливої інформації 
 
3.7 Реалізація виявлення посмішки 
Система виявлення посмішки використовує геометричний підхід, вимірюючи 
співвідношення між шириною рота і висотою, щоб визначити справжні посмішки. 
Цей метод адаптується до індивідуальних рис обличчя через фазу калібрування, 
встановлюючи персоналізовану базову лінію для більш точного виявлення. 
Основне виявлення посмішки залежить від розрахунку співвідношення 
посмішки: 
def calculate_smile_ratio(mouth_landmarks, face_landmarks): 
    points = np.array([[face_landmarks.landmark[i].x, face_landmarks.landmark[i].y] 
                       for i in MOUTH_POINTS])) 
    mouth_width = np.linalg.norm(points[0] - points[1]) 
    left_height = np.linalg.norm(points[2] - points[3]) 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
    right_height = np.linalg.norm(points[4] - points[5]) 
    middle_height = np.linalg.norm(points[6] - points[7]) 
    avg_height = (left_height + right_height + middle_height) / 3 
    return mouth_width / avg_height if avg_height > 0 else 0 
Ця функція вимірює зв'язок між шириною рота і висотою в декількох точках, 
фіксуючи характерні зміни форми рота під час посмішки. Використання трьох 
вимірювань висоти (ліворуч, праворуч і посередині) забезпечує більш надійне 
виявлення за допомогою обліку асиметричних виразів. 
Ключовою особливістю системи є її калібрувальна фаза, яка встановлює 
персоналізовану базову лінію для кожного користувача: 
if not calibration_complete: 
    calibration_ratios.append(smile_ratio) 
    frames_remaining = CALIBRATION_FRAMES - len(calibration_ratios) 
    cv2.putText(frame, f'Keep neutral face. Calibrating: {frames_remaining}', 
               (10, 150), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2) 
    if len(calibration_ratios) >= CALIBRATION_FRAMES: 
        baseline_threshold = np.mean(calibration_ratios) * SMILE_RATIO_INCREASE 
        calibration_complete = True 
Під час калібрування система: 
1. Збирає вимірювання коефіцієнта посмішки, поки користувач зберігає 
нейтральний вираз 
2. Обчислює середню базову лінію 
3. Встановлює поріг 
Після калібрування система стежить за справжніми посмішками: 
if smile_ratio > baseline_threshold: 
    state = 'smiling' 
    if smile_start_time is None: 
        smile_start_time = current_time 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
else: 
    state = 'neutral' 
    smile_start_time = None 
Ця реалізація (Рисунок 3.6) дає значні переваги завдяки адаптивному підходу. 
Система успішно адаптує індивідуальні риси обличчя та вирази спокою, надаючи 
відповіді в реальному часі на зміни у вираженні. Його конструкція забезпечує 
стійкість до варіацій освітлення та зберігає ефективність під різними кутами 
обличчя. 
 
Рисунок 3.6 - Виявлення посмішки в роботі, з виводом важливої інформації 
Фаза калібрування відіграє вирішальну роль у точності системи. 
Встановлюючи персоналізовану базу для кожного користувача, це значно зменшує 
помилкові спрацьовування, які можуть виникнути внаслідок незначних рухів рота. 
Ця персоналізація гарантує, що система може надійно розрізняти справжні вирази 
та випадкові рухи рота. 
Система виявлення посмішки демонструє надійну продуктивність у 
диференціації автентичних посмішок від інших рухів рота або статичних 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
зображень, тим самим підвищуючи загальну можливість виявлення живості 
системи безпеки. Ця надійність робить його ефективним компонентом у більш 
широкій системі боротьби зі спуфінгом. 
 
3.8 Тестування 
Процес тестування використовував повний набір даних з 32 відеозаписів, 
призначених для оцінки продуктивності системи в різних реальних сценаріях. 
Відео були записані за допомогою камери мобільного телефону і включали як 
успішні спроби аутентифікації, так і потенційні сценарії спуфінгу. 
Для справжніх спроб автентифікації записи робилися в різних умовах 
навколишнього середовища. Вони включали варіації освітлення (чітке, нормальне, 
тьмяне та темне), відстань від камери (нормальне та віддалене положення) та 
наявність або відсутність окулярів (Рисунок 3.7). Кожен запис фіксував 
користувача за конкретними підказками аутентифікації: для системи виявлення 
моргання користувачам було доручено двічі моргати протягом десяти секунд, тоді 
як для системи виявлення посмішки користувачам було запропоновано 
підтримувати посмішку протягом двох секунд. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
 
Рисунок 3.7 – Приклади умов та сценаріїв тестових відео: (a) спуфінг, (b) 
погане освітлення, (c) аксесуар  на обличчі, (d) без перешкод 
Тестовий набір даних також включав ряд спроб підміни. Вони включали 
презентаційні атаки з використанням як статичних зображень, так і відеозаписів, 
що відображаються на різних відстанях від камери. Додаткові сценарії відмов були 
записані для перевірки здатності системи відхиляти недійсні спроби 
аутентифікації, такі як одиночні моргання, постійне закриття очей, підморгування 
та надмірний рух голови. 
Параметри тестування були стандартизовані на всіх відео, з ключовими 
порогами 1,9 для виявлення послідовності руху та 0,08 для аналізу щільності краю. 
Під час тестування система збирала бінарні результати pass/fail для кожної спроби 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
аутентифікації, оцінюючи ефективність як миготіння, так і методів виявлення 
посмішки незалежно. 
Тестові відео можна класифікувати наступним чином: 
• Сценарії аутентифікації: чітке освітлення, нормальне освітлення, тьмяне 
освітлення, темне освітлення 
• Варіації відстані: нормальна відстань, віддалене позиціонування 
• Тестування аксесуарів: з окулярами та без них 
• Спроби спуфінгу: статичні зображення (близькі та віддалені), 
відеоповтори (близькі та віддалені) 
• Недійсні спроби: одиночні моргання, підморгування, стійке закриття, 
надмірне переміщення 
Кожне відео було оброблено через обидві системи виявлення, результати були 
записані для подальшого аналізу. Результати тестування знаходяться в додатку А. 
 
3.9 Висновки 
Розробка та впровадження цієї системи захисту від спуфінгу успішно 
інтегрували кілька рівнів захисту від презентаційних атак. Система поєднує в собі 
розпізнавання обличчя за допомогою YOLOv8-Face з розпізнаванням облич 
MediaPipe, щоб створити основу для перевірки життя. На цьому фундаменті були 
розроблені і випробувані чотири різні методи перевірки. 
Аналіз виявлення країв вивчає область навколо виявлених граней для штучних 
кордонів, характерних для презентаційних атак. Це доповнюється системою 
аналізу руху, яка ідентифікує тонкі, але відмінні поштовхи, пов'язані з 
кишеньковими пристроями або фотографіями. Ці два методи працюють в тандемі, 
щоб забезпечити перший рівень виявлення підміни. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
Для перевірки живості було реалізовано та протестовано два різних підходи: 
виявлення моргання та виявлення посмішки. Система виявлення моргання 
використовує розрахунки співвідношення сторін очей з тимчасовим аналізом для 
перевірки природних моделей моргання. Система виявлення посмішки 
використовує геометричний аналіз орієнтирів рота з фазою калібрування для 
встановлення персоналізованих базових ліній для кожного користувача. 
Хоча додатковий метод аналізу текстур був розроблений з використанням 
локальної дисперсії, градієнтної величини та FFT-аналізу, він виявився 
непридатним для практичної реалізації через його чутливість до змін 
навколишнього середовища і тому був виключений з остаточної системи. 
Процес тестування оцінював ці реалізації за різними сценаріями, включаючи 
різні умови освітлення, відстані та наявність окулярів, а також кілька типів спроб 
спуфінгу. Це комплексне тестування виявило як сильні сторони, так і обмеження 
кожного підходу, забезпечуючи цінне розуміння їх практичної ефективності в 
реальних застосуваннях. 
Результати тестування показали різні характеристики продуктивності для 
кожного методу виявлення живості. Система виявлення посмішки 
продемонструвала чудову продуктивність у складних умовах, особливо коли 
користувачі носили окуляри, досягаючи 80% успіху для справжніх спроб 
аутентифікації. Система виявлення моргання, хоча і трохи більш чутлива до 
факторів навколишнього середовища, все ще підтримувала 70% успіху для 
справжніх спроб. 
Примітно, що обидві системи показали ідеальну точність у виявленні та 
відхиленні недійсних спроб аутентифікації та підміни атак. Це включає успішну 
відмову від атак презентації, використовуючи як статичні зображення, так і 
відеоповтори, а також неприпустимі спроби взаємодії, такі як поодинокі моргання 
або підморгування. Це ідеальне виявлення відмов являє собою значну силу 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
системи, оскільки помилкові акцепти в додатках безпеки, як правило, більше 
стосуються, ніж помилкові відмови. 
Основним обмеженням, визначеним за допомогою тестування, була 
деградація продуктивності в умовах низького освітлення, що впливає на обидва 
методи виявлення, але особливо впливає на виявлення моргання. 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
ВИСНОВКИ 
 Дослідження успішно досягло своєї основної мети - розробка та 
впровадження багатошарової системи захисту від спуфінгу для біометричної 
аутентифікації. Система поєднує в собі технологію розпізнавання осіб з декількома 
методами перевірки, щоб створити надійний захист від презентаційних атак. 
У реалізації були використані сучасні технології комп'ютерного зору, 
спеціально YOLOv8-Face для виявлення обличчя та MediaPipe для точного 
відстеження орієнтирів обличчя. Ці технології забезпечили основу для реалізації 
чотирьох різних методів перевірки: виявлення країв, аналіз візерунків руху, 
виявлення моргання та виявлення посмішки. Кожен метод зробив унікальний 
внесок у загальну безпеку системи. 
Тестування продемонструвало ефективність системи в різних реальних 
умовах, причому обидва методи виявлення живої якості досягли високої точності 
при виявленні спроб підміни. Реалізація виявлення посмішки виявилася особливо 
надійною, зберігаючи надійність навіть у складних умовах, наприклад, коли 
користувачі носили окуляри. Хоча обидва методи показали деяку чутливість до 
екстремальних умов освітлення, вони підтримували ідеальну точність у виявленні 
та відкиданні спроб спуфінгу та недійсних взаємодій. 
Розроблена система успішно вирішує проблему презентаційних атак при 
біометричній аутентифікації, зберігаючи зручність використання для справжніх 
користувачів. Реалізація демонструє, що поєднання декількох методів перевірки 
створює більш стійку систему безпеки, ніж покладатися на будь-який єдиний 
підхід. Це дослідження сприяє постійному розвитку технологій боротьби зі 
спуфінгом і забезпечує основу для майбутніх поліпшень в біометричних системах 
безпеки. 
  
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 
1. Ultralytics YOLO Docs [Електронний ресурс] - Режим доступу: 
https://docs.ultralytics.com/ 
2. Google AI Edge [Електронний ресурс] - Режим доступу: 
https://ai.google.dev/edge/mediapipe 
3. Dlib C++ Library [Електронний ресурс] - Режим доступу: 
http://dlib.net/ 
4. Cruz AA, Garcia DM, Pinto CT, Cechetti SP. Spontaneous eyeblink activity. Ocul 
Surf. 2011 Jan;9(1):29-41. [Електронний ресурс] Режим доступу: 
https://pubmed.ncbi.nlm.nih.gov/21338567/ 
5. Soukupová, T., & Čech, J. (2016). Real-time eye blink detection using facial 
landmarks. 21st Computer Vision Winter Workshop. [Електронний ресурс] - 
Режим доступу: https://vision.fe.uni-lj.si/cvww2016/proceedings/papers/05.pdf 
6. Canny, J. (1986). "A Computational Approach to Edge Detection," IEEE 
Transactions on Pattern Analysis and Machine Intelligence, vol. PAMI-8, no. 6, pp. 
679-698. [Електронний ресурс] Режим доступу: 
https://ieeexplore.ieee.org/document/4767851 
  
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
ДОДАТКИ 
 
А. Результати тестування 
Назва відео Очікуваний Резльтат Резуьтат 
результат моргання посмішки 
Clear_Distant_Pass.mp4 pass TRUE TRUE 
Clear_Glasses_Pass.mp4 pass TRUE TRUE 
Clear_Pass_1.mp4 pass TRUE TRUE 
Clear_Pass_2.mp4 pass TRUE TRUE 
Dark_Glasses_Pass.mp4 pass FALSE TRUE 
Dark_Pass.mp4 pass FALSE FALSE 
Dim_Pass.mp4 pass FALSE FALSE 
Normal_Glasses_Pass.mp4 pass TRUE TRUE 
Normal_Pass_1.mp4 pass TRUE TRUE 
Normal_Pass_2.mp4 pass TRUE TRUE 
Clear_1blink_Fail.mp4 fail FALSE FALSE 
Clear_Closed_Fail.mp4 fail FALSE FALSE 
Clear_Distant_Fail.mp4 fail FALSE FALSE 
Clear_Fail_1.mp4 fail FALSE FALSE 
Clear_Fail_2.mp4 fail FALSE FALSE 
Clear_Glasses_Wink_Fail_1.mp4 fail FALSE FALSE 
Clear_Glasses_Wink_Fail_2.mp4 fail FALSE FALSE 
Clear_Movement_Fail_1.mp4 fail FALSE FALSE 
Clear_Movement_Fail_2.mp4 fail FALSE FALSE 
Clear_Movement_Fail_3.mp4 fail FALSE FALSE 
Clear_Movement_Fail_4.mp4 fail FALSE FALSE 
Clear_Movement_Fail_5.mp4 fail FALSE FALSE 
Clear_Wink_Fail_1.mp4 fail FALSE FALSE 
Clear_Wink_Fail_2.mp4 fail FALSE FALSE 
Dark_Fail.mp4 fail FALSE FALSE 
Dark_Glasses_Fail.mp4 fail FALSE FALSE 
Dim_Fail.mp4 fail FALSE FALSE 
Spoof_Image_Close_Fail.mp4 fail FALSE FALSE 
Spoof_Image_Distant_Fail.mp4 fail FALSE FALSE 
Spoof_Image_Fail.mp4 fail FALSE FALSE 
Spoof_Video_Close_Fail.mp4 fail FALSE FALSE 
Spoof_Video_Distant_Fail.mp4 fail FALSE FALSE 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
 
Б. Опис програмного забезпечення 
import cv2 
from ultralytics import YOLO 
import mediapipe as mp 
import numpy as np 
from collections import deque 
 
# Landmark indices 
LEFT_EYE = [362, 385, 387, 263, 373, 380] 
RIGHT_EYE = [33, 160, 158, 133, 153, 144] 
 
# Blink detection parameters 
EAR_THRESHOLD = 0.2  # Threshold for considering eye as closed 
BLINK_CONSEC_FRAMES = 3  # Number of consecutive frames eye must be closed 
BLINK_WINDOW = 10  # Seconds to detect required blinks 
BLINKS_REQUIRED = 2  # Required number of blinks for liveness 
MIN_TIME_BETWEEN_BLINKS = 0.3  # Minimum seconds between blinks 
DISPLAY_TIME = 4.0  # How long to show confirmation message 
CHANGE_THRESHOLD = 0.4  # Valid difference from average 
 
# Motion Analysis Settings 
MOTION_BUFFER_SIZE = 20 # Number of frames to track 
MOTION_THRESHOLD = 0.1 # Minimum motion variation expected 
STATIC_THRESHOLD = 0.1 # Maximum stillness allowed 
HISTORY_SIZE = 20 # Number of frames to average 
SPOOF_CONSISTENCY_THRESHOLD = 1.9 
 
# Edge Detection Settings 
SEARCH_MARGIN = 0.5 # % more area to cover 
CANNY_LOW = 30 
CANNY_HIGH = 150 
EDGE_DENSITY_THRESHOLD = 0.08 # Adjust based on camera quality and environment 
 
def calculate_ear(eye_landmarks, face_landmarks): 
    points = np.array([[face_landmarks.landmark[i].x, 
face_landmarks.landmark[i].y] for i in eye_landmarks]) 
    v1 = np.linalg.norm(points[1] - points[5]) 
    v2 = np.linalg.norm(points[2] - points[4]) 
    h = np.linalg.norm(points[0] - points[3]) 
    ear = (v1 + v2) / (2.0 * h) 
    return ear 
 
def analyze_motion(landmarks, frame): 
    """ 
    Analyzes facial landmark motion patterns with temporal averaging 
    """ 
    try: 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
        height, width = frame.shape[:2] 
        key_points = np.array([ 
            [landmarks.landmark[1].x * width, landmarks.landmark[1].y * 
height],    # Nose tip 
            [landmarks.landmark[152].x * width, landmarks.landmark[152].y * 
height],# Chin 
            [landmarks.landmark[33].x * width, landmarks.landmark[33].y * 
height],  # Left eye 
            [landmarks.landmark[263].x * width, landmarks.landmark[263].y * 
height] # Right eye 
        ]) 
 
        landmark_history.append(key_points) 
 
        if len(landmark_history) < 3: 
            return True 
 
        # Calculate movements 
        movements = [] 
        for i in range(1, len(landmark_history)): 
            prev_points = landmark_history[i-1] 
            curr_points = landmark_history[i] 
            point_movements = np.linalg.norm(curr_points - prev_points, 
axis=1) 
            movements.append(point_movements) 
 
        movements = np.array(movements) 
 
        # Calculate metrics 
        current_movement = movements[-1] if len(movements) > 0 else 
np.zeros(4) 
        movement_ratio = np.std(current_movement) / (np.mean(current_movement) 
+ 1e-6) 
        temporal_consistency = np.std(np.mean(movements, axis=1)) 
 
        # Add to history 
        consistency_history.append(temporal_consistency) 
        movement_ratio_history.append(movement_ratio) 
 
        # Calculate averaged metrics 
        avg_consistency = np.mean(consistency_history) 
        avg_movement_ratio = np.mean(movement_ratio_history) 
 
        # Display averaged metrics 
        cv2.putText(frame, f"Avg Movement Ratio: {avg_movement_ratio:.2f}", 
(10, 300), 
                    cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2) 
        cv2.putText(frame, f"Avg Temporal Consistency: {avg_consistency:.2f}", 
(10, 330), 
                    cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2) 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
 
        # Only make decision when we have enough history 
        if len(consistency_history) >= HISTORY_SIZE: 
            # Phone showed higher consistency values (1.9-2.5 vs 1.0) 
            is_spoof = avg_consistency > SPOOF_CONSISTENCY_THRESHOLD  # 
Threshold between observed values 
 
            status = "POTENTIAL SPOOF" if is_spoof else "REAL" 
            color = (0, 0, 255) if is_spoof else (0, 255, 0) 
            cv2.putText(frame, status, (10, 360), 
                       cv2.FONT_HERSHEY_SIMPLEX, 0.7, color, 2) 
 
            return not is_spoof 
 
        return True 
 
    except Exception as e: 
        print(f"Motion analysis error: {e}") 
        return True 
 
def analyze_face_texture(frame, face_box): 
    """ 
    Analyzes texture of face region to detect potential spoofing 
    Returns: True if likely real face, False if potential spoof 
    """ 
    try: 
        # Extract face region using YOLO box coordinates 
        x1, y1, x2, y2 = map(int, face_box) 
        face_region = frame[y1:y2, x1:x2] 
 
        # Convert to grayscale 
        gray_face = cv2.cvtColor(face_region, cv2.COLOR_BGR2GRAY) 
 
        # Calculate local variance 
        local_var = cv2.Laplacian(gray_face, cv2.CV_64F).var() 
 
        # Calculate gradient magnitude 
        sobelx = cv2.Sobel(gray_face, cv2.CV_64F, 1, 0, ksize=3) 
        sobely = cv2.Sobel(gray_face, cv2.CV_64F, 0, 1, ksize=3) 
        gradient_magnitude = np.sqrt(sobelx**2 + sobely**2) 
        gradient_mean = np.mean(gradient_magnitude) 
 
        # Add FFT analysis for periodic patterns 
        f = np.fft.fft2(gray_face) 
        fshift = np.fft.fftshift(f) 
        magnitude_spectrum = 20*np.log(np.abs(fshift)) 
        periodic_score = np.mean(magnitude_spectrum) 
 
        # Print all metrics for analysis 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
        print(f"Variance: {local_var:.2f}, Gradient: {gradient_mean:.2f}, FFT: 
{periodic_score:.2f}") 
 
        # Visual feedback - show all metrics 
        cv2.putText(frame, f"Var: {local_var:.1f}", (x1, y1-60), 
                    cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) 
        cv2.putText(frame, f"Grad: {gradient_mean:.1f}", (x1, y1-40), 
                    cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) 
        cv2.putText(frame, f"FFT: {periodic_score:.1f}", (x1, y1-20), 
                    cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) 
 
        VARIANCE_THRESHOLD = 650  # Minimum variance for real face 
        GRADIENT_THRESHOLD = 25   # Minimum gradient for real face 
        FFT_THRESHOLD = 100 
 
        # Check multiple conditions 
        is_real = (local_var > VARIANCE_THRESHOLD and 
                  gradient_mean > GRADIENT_THRESHOLD and 
                  periodic_score > FFT_THRESHOLD) 
 
        # Always show decision 
        status = "REAL" if is_real else "POTENTIAL SPOOF" 
        color = (0, 255, 0) if is_real else (0, 0, 255) 
        cv2.putText(frame, status, (x1, y2+20), 
                   cv2.FONT_HERSHEY_SIMPLEX, 0.7, color, 2) 
 
        return is_real 
 
    except Exception as e: 
        print(f"Texture analysis error: {e}") 
        return True 
 
def detect_screen_edges(frame, face_box): 
    """ 
    Look for edges around the face box that might indicate a phone/photo 
    """ 
    try: 
        # Get face box dimensions and calculate search area 
        fx1, fy1, fx2, fy2 = map(int, face_box) 
 
        # Define larger search area around face 
        margin = SEARCH_MARGIN # % more area to cover 
        width = fx2 - fx1 
        height = fy2 - fy1 
 
        search_x1 = max(0, int(fx1 - width * margin)) 
        search_y1 = max(0, int(fy1 - height * margin)) 
        search_x2 = min(frame.shape[1], int(fx2 + width * margin)) 
        search_y2 = min(frame.shape[0], int(fy2 + height * margin)) 
 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
        # Draw search area for debugging 
        cv2.rectangle(frame, (search_x1, search_y1), (search_x2, search_y2), 
(255, 0, 0), 1) 
 
        # Get region of interest 
        roi = frame[search_y1:search_y2, search_x1:search_x2] 
        if roi.size == 0: 
            return False, [] 
 
        # Edge detection in ROI 
        gray_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY) 
        edges = cv2.Canny(gray_roi, CANNY_LOW, CANNY_HIGH) 
 
        # Count edges in the margin area 
        edge_count = np.sum(edges > 0) 
        edge_density = edge_count / (edges.shape[0] * edges.shape[1]) 
 
        # Show edge detection results 
        cv2.imshow('Edges', edges) 
 
        # Always show edge density for tuning 
        color = (0, 0, 255) if edge_density > EDGE_DENSITY_THRESHOLD else (0, 
255, 0) 
        cv2.putText(frame, f'Edge Density: {edge_density:.3f}', (10, 460), 
                   cv2.FONT_HERSHEY_SIMPLEX, 0.7, color, 2) 
 
        return edge_density > EDGE_DENSITY_THRESHOLD, edge_density 
 
    except Exception as e: 
        print(f"Screen detection error: {e}") 
        return False, [] 
 
# Initialize YOLO and MediaPipe 
model = YOLO('yolov8n-face-lindevs.pt') 
mp_face_mesh = mp.solutions.face_mesh 
face_mesh = mp_face_mesh.FaceMesh( 
    max_num_faces=1, 
    refine_landmarks=True, 
    min_detection_confidence=0.5, 
    min_tracking_confidence=0.5 
) 
 
# Blink detection state 
blink_counter = 0 
blink_start = None 
total_blinks = 0 
last_blink_time = None 
ear_buffer = deque(maxlen=10) # Last EAR values 
ear_history = deque(maxlen=3)  # Track EAR changes 
state = 'open' 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
 
# Motion Analysis State 
landmark_history = deque(maxlen=MOTION_BUFFER_SIZE) 
consistency_history = deque(maxlen=HISTORY_SIZE) 
movement_ratio_history = deque(maxlen=HISTORY_SIZE) 
 
# UI State 
message_start = None 
message_showing = False 
paused = False 
 
# Video path 
video_path = r"path\to\video" 
cap = cv2.VideoCapture(video_path) 
fps = cap.get(cv2.CAP_PROP_FPS) 
 
# Video Processing 
frame_skip = 3 
scale_percent = 50 
 
try: 
    while True: 
        ret, frame = cap.read() 
        if not ret: 
            print("Video ended") 
            break 
 
        # Skip frames 
        if frame_skip > 1: 
            for _ in range(frame_skip - 1): 
                cap.read() 
 
        # Resolution scale 
        # scale_percent = 50 
        width = int(frame.shape[1] * scale_percent / 100) 
        height = int(frame.shape[0] * scale_percent / 100) 
        frame = cv2.resize(frame, (width, height)) 
         
        # rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) 
        results_yolo = model(frame, verbose = False) 
 
        current_time = cv2.getTickCount() / cv2.getTickFrequency() 
        # Process each detected face 
        for result in results_yolo: 
            boxes = result.boxes 
            for box in boxes: 
                # Get bounding box coordinates 
                x1, y1, x2, y2 = map(int, box.xyxy[0]) 
     
                # Add padding to the bounding box 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
                # padding = 20 
                # x1 = max(0, x1 - padding) 
                # y1 = max(0, y1 - padding) 
                # x2 = min(frame.shape[1], x2 + padding) 
                # y2 = min(frame.shape[0], y2 + padding) 
     
                # Crop the face region 
                face_crop = frame[y1:y2, x1:x2] 
     
                # Skip if crop is empty 
                if face_crop.size == 0: 
                    continue 
     
                # Convert cropped region to RGB for MediaPipe 
                rgb_crop = cv2.cvtColor(face_crop, cv2.COLOR_BGR2RGB) 
     
                # Process cropped face with MediaPipe 
                results_mesh = face_mesh.process(rgb_crop) 
     
                # Draw YOLO box 
                cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) 
                # Process landmarks and detect blinks 
                if results_mesh.multi_face_landmarks: 
                    for face_landmarks in results_mesh.multi_face_landmarks: 
                        # Adjust landmark coordinates to original frame 
                        for idx, landmark in 
enumerate(face_landmarks.landmark): 
                            # Convert relative coordinates to absolute 
coordinates 
                            x = landmark.x * (x2 - x1) + x1 
                            y = landmark.y * (y2 - y1) + y1 
                            z = landmark.z 
 
                            # Update landmark coordinates 
                            face_landmarks.landmark[idx].x = x / 
frame.shape[1] 
                            face_landmarks.landmark[idx].y = y / 
frame.shape[0] 
                            face_landmarks.landmark[idx].z = z 
 
         
                        # Spoof check 
                        is_spoof, screens = detect_screen_edges(frame, [x1, 
y1, x2, y2]) 
                        if is_spoof: 
                            cv2.putText(frame, "WARNING: Screen/Print 
Detected", (10, 430), 
                                       cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 
255), 2) 
                            continue 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
                         
                        # Check motion 
                        is_real_motion = analyze_motion(face_landmarks, frame) 
                        if not is_real_motion: 
                            cv2.putText(frame, "POTENTIAL SPOOF (Motion)", 
(10, 200), 
                                        cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 
255), 2) 
                            continue 
         
                        # Calculate EAR 
                        left_ear = calculate_ear(LEFT_EYE, face_landmarks) 
                        right_ear = calculate_ear(RIGHT_EYE, face_landmarks) 
                        avg_ear = (left_ear + right_ear) / 2.0 
         
                        # Avoid adding closed eye values to buffer for clean 
baseline 
                        if state == 'open': 
                            ear_buffer.append(avg_ear) 
                         
                        # Calculate relative change if we have enough samples 
                        if len(ear_buffer) >= 10: 
                            # Calculate baseline from previous open-eye values 
only 
                            baseline = np.mean(list(ear_buffer)[:-1])  # 
Average of previous values 
                            relative_change = (baseline - avg_ear) / baseline 
         
                            # Blink detection logic with timing constraints 
                            if relative_change > CHANGE_THRESHOLD and state == 
'open': 
                                if last_blink_time is None or (current_time - 
last_blink_time) > MIN_TIME_BETWEEN_BLINKS: 
                                    state = 'closed' 
                                    blink_counter += 1 
                                    last_blink_time = current_time 
                                    if blink_start is None: 
                                        blink_start = current_time 
                            elif relative_change <= CHANGE_THRESHOLD: 
                                state = 'open' 
         
                        # Check blink window 
                        if blink_start is not None: 
                            time_elapsed = current_time - blink_start 
                            if time_elapsed > BLINK_WINDOW: 
                                blink_start = None 
                                blink_counter = 0 
         
                        # Draw eye landmarks 
                        for eye in [LEFT_EYE, RIGHT_EYE]: 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
                            for i in eye: 
                                pos = face_landmarks.landmark[i] 
                                x = int(pos.x * frame.shape[1]) 
                                y = int(pos.y * frame.shape[0]) 
                                cv2.circle(frame, (x, y), 2, (0, 255, 0), -1) 
         
                        # Display information 
                        cv2.putText(frame, f'EAR: {avg_ear:.2f}', (10, 30), 
                                   cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 
2) 
                        cv2.putText(frame, f'Blinks: {blink_counter}', (10, 
70), 
                                   cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 
2) 
         
                        # Eye state visualization 
                        eye_state = 'OPEN' if state == 'open' else 'CLOSED' 
                        color = (0, 255, 0) if eye_state == 'OPEN' else (0, 0, 
255) 
                        cv2.putText(frame, f'Eye: {eye_state}', (10, 110), 
                                   cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2) 
                        # cv2.putText(frame, f'relative_change: 
{relative_change}', (10, 400), 
                        #            cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2) 
                        # cv2.putText(frame, f'baseline: {baseline}', (10, 
430), 
                        #            cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2) 
                        # cv2.putText(frame, f'Last EAR value: {ear_buffer[-
2]}' if len(ear_buffer) >= 10 else 'wait', (10, 500), 
                        #            cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2) 
                         
         
                        # Check for liveness confirmation 
                        if blink_counter >= BLINKS_REQUIRED and not 
message_showing: 
                            message_start = current_time 
                            message_showing = True 
                            blink_counter = 0 
                            blink_start = None 
 
        # Display confirmation message for DISPLAY_TIME seconds 
        if message_showing: 
            if current_time - message_start < DISPLAY_TIME: 
                cv2.putText(frame, 'LIVENESS CONFIRMED', (10, 150), 
                           cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) 
            else: 
                message_showing = False 
 
        # Pause display 
        if paused: 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
            cv2.putText(frame, 'PAUSED', (10, 190), 
                       cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2) 
 
        # Remaining time display 
        if blink_start is not None: 
            time_elapsed = current_time - blink_start 
            time_remaining = BLINK_WINDOW - time_elapsed 
            cv2.putText(frame, f'Time remaining: {time_remaining:.1f}s', (10, 
230), 
                       cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) 
 
         
        cv2.imshow('Liveness Detection', frame) 
 
        # Video playback control 
        fps = cap.get(cv2.CAP_PROP_FPS) 
        wait_time = int(1000/fps) 
        key = cv2.waitKey(wait_time) & 0xFF 
 
        # Handle key presses 
        if key == ord('q'): 
            break 
        elif key == ord(' '):  # Spacebar 
            paused = not paused  # Toggle pause state 
 
        # If paused, wait for space or q 
        while paused: 
            pause_frame = frame.copy() 
            cv2.putText(pause_frame, 'PAUSED', (10, 190), 
                       cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2) 
            cv2.imshow('Liveness Detection', pause_frame) 
 
            key = cv2.waitKey(1) & 0xFF 
            if key == ord(' '): 
                paused = False 
            elif key == ord('q'): 
                break 
 
finally: 
    cap.release() 
    cv2.destroyAllWindows() 
    face_mesh.close() 
 
# Detection State 
calibration_ratios = [] 
baseline_threshold = None 
calibration_complete = False 
state = 'neutral' 
 
# Motion Analysis State 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
landmark_history = deque(maxlen=MOTION_BUFFER_SIZE) 
consistency_history = deque(maxlen=HISTORY_SIZE) 
movement_ratio_history = deque(maxlen=HISTORY_SIZE) 
 
# UI State 
message_start = None 
message_showing = False 
paused = False 
 
# Video Processing 
frame_skip = 3 
scale_percent = 50 
 
# Initialize YOLO and MediaPipe 
model = YOLO('yolov8n-face-lindevs.pt') 
mp_face_mesh = mp.solutions.face_mesh 
face_mesh = mp_face_mesh.FaceMesh( 
    max_num_faces=1, 
    refine_landmarks=True, 
    min_detection_confidence=0.5, 
    min_tracking_confidence=0.5 
) 
 
# Video path 
video_path = r"Spoof_Video_Fail.mp4" 
cap = cv2.VideoCapture(video_path) 
fps = cap.get(cv2.CAP_PROP_FPS) 
 
try: 
    while True: 
        ret, frame = cap.read() 
        if not ret: 
            print("Video ended") 
            break 
 
        if frame_skip > 1: 
            for _ in range(frame_skip - 1): 
                cap.read() 
         
        width = int(frame.shape[1] * scale_percent / 100) 
        height = int(frame.shape[0] * scale_percent / 100) 
        frame = cv2.resize(frame, (width, height)) 
 
        rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) 
        results_yolo = model(frame, verbose=False) 
        results_mesh = face_mesh.process(rgb_frame) 
 
 
         
        # Draw YOLO boxes 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
        for result in results_yolo: 
            boxes = result.boxes 
            for box in boxes: 
                x1, y1, x2, y2 = map(int, box.xyxy[0]) 
                cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) 
 
        current_time = cv2.getTickCount() / cv2.getTickFrequency() 
 
 
        if results_mesh.multi_face_landmarks: 
            for face_landmarks in results_mesh.multi_face_landmarks: 
                # Calculate smile ratio 
                smile_ratio = calculate_smile_ratio(MOUTH_POINTS, 
face_landmarks) 
                current_time = cv2.getTickCount() / cv2.getTickFrequency() 
 
                # Spoof check 
                is_spoof, screens = detect_screen_edges(frame, [x1, y1, x2, 
y2]) 
                if is_spoof: 
                    cv2.putText(frame, "WARNING: Screen/Print Detected", (10, 
430), 
                               cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) 
                    continue 
                 
                # Motion check 
                is_real_motion = analyze_motion(face_landmarks, frame) 
                if not is_real_motion: 
                    cv2.putText(frame, "POTENTIAL SPOOF (Motion)", (10, 200), 
                                cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) 
                    continue 
 
                 
                # Calibration phase 
                if not calibration_complete: 
                    calibration_ratios.append(smile_ratio) 
                    frames_remaining = CALIBRATION_FRAMES - 
len(calibration_ratios) 
         
                    # Display calibration message 
                    cv2.putText(frame, f'Keep neutral face. Calibrating: 
{frames_remaining}', 
                               (10, 150), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 
255), 2) 
         
                    if len(calibration_ratios) >= CALIBRATION_FRAMES: 
                        # Calculate baseline threshold from calibration data 
                        baseline_threshold = np.mean(calibration_ratios) * 
SMILE_RATIO_INCREASE 
                        calibration_complete = True 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
                        print(f"Calibration complete. Baseline threshold: 
{baseline_threshold:.2f}") 
         
                # Normal operation after calibration 
                else: 
                    # Immediate state determination based on current ratio 
                    if smile_ratio > baseline_threshold: 
                        state = 'smiling' 
                        if smile_start_time is None: 
                            smile_start_time = current_time 
                    else: 
                        state = 'neutral' 
                        smile_start_time = None 
         
                    # Draw all mouth landmarks for debugging 
                    for i in MOUTH_POINTS: 
                        pos = face_landmarks.landmark[i] 
                        x = int(pos.x * frame.shape[1]) 
                        y = int(pos.y * frame.shape[0]) 
                        cv2.circle(frame, (x, y), 2, (0, 255, 0), -1) 
                        cv2.putText(frame, str(i), (x+5, y+5), 
                                   cv2.FONT_HERSHEY_SIMPLEX, 0.3, (255, 0, 0), 
1) 
         
                    # Display information 
                    cv2.putText(frame, f'Smile Ratio: {smile_ratio:.2f}', (10, 
30), 
                               cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) 
                    cv2.putText(frame, f'Threshold: {baseline_threshold:.2f}', 
(10, 70), 
                               cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) 
         
                    # Face state visualization 
                    face_state = 'SMILING' if state == 'smiling' else 
'NEUTRAL' 
                    color = (0, 255, 0) if face_state == 'SMILING' else (0, 0, 
255) 
                    cv2.putText(frame, f'State: {face_state}', (10, 110), 
                               cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2) 
 
                    # Show hold smile prompt and countdown 
                    if state == 'smiling' and not message_showing: 
                        if smile_start_time is not None: 
                            time_held = current_time - smile_start_time 
                            time_remaining = SMILE_HOLD_TIME - time_held 
         
                            if time_remaining > 0: 
                                cv2.putText(frame, f'Hold smile for: 
{time_remaining:.1f}s', (10, 150), 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата  
 
   
                                           cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 
255, 0), 2) 
                            else: 
                                message_showing = True 
                                message_start = current_time 
         
                    # Show liveness confirmed message 
                    if message_showing: 
                        if current_time - message_start < DISPLAY_TIME: 
                            cv2.putText(frame, 'LIVENESS CONFIRMED', (10, 
150), 
                                       cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 
0), 2) 
                        else: 
                            message_showing = False 
                            smile_start_time = None 
 
        if paused: 
            cv2.putText(frame, 'PAUSED', (10, 190), 
                       cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2) 
 
        cv2.imshow('Smile Detection', frame) 
 
        fps = cap.get(cv2.CAP_PROP_FPS) 
        wait_time = int(1000/fps) 
        key = cv2.waitKey(wait_time) & 0xFF 
 
        if key == ord('q'): 
            break 
        elif key == ord(' '): 
            paused = not paused 
 
        while paused: 
            pause_frame = frame.copy() 
            cv2.putText(pause_frame, 'PAUSED', (10, 190), 
                       cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2) 
            cv2.imshow('Smile Detection', pause_frame) 
 
            key = cv2.waitKey(1) & 0xFF 
            if key == ord(' '): 
                paused = False 
            elif key == ord('q'): 
                break 
 
finally: 
    cap.release() 
    cv2.destroyAllWindows() 
    face_mesh.close() 
Лист 
ЧДТУ.24.23305.001 ПЗ 
Змін. Лист № докум. Підпис Дата