Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/8062| Title: | Побудова системи комп’ютерного зору на платформі Raspberry Pi (програмна реалізація) |
| Authors: | Палагін, Володимир Васильович Коваль, Веніамін Сергійович |
| Keywords: | Комп'ютерний зір;Машинне навчання;Згорткові нейронні мережі;Raspberry Pi;Програмна реалізація;Python |
| Issue Date: | 2021 |
| Abstract: | В роботі розроблено програмне забезпечення для інтелектуальної системи комп'ютерного зору на базі мікрокомп'ютера Raspberry Pi, призначеної для ідентифікації та аналізу об'єктів у реальному часі. Практична частина роботи включає реалізацію програмного коду на мові Python для збору та кодування візуальних даних, а також налаштування операційної системи Raspberry Pi OS для забезпечення стабільного функціонування системи в автоматизованих комплексах. |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/8062 |
| Appears in Collections: | 172 Електронні комунікації та радіотехніка (Радіотехніка та робототехнічні системи) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| М_172_Коваль_Палагін.pdf Restricted Access | 3.49 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ЕЛЕКТРОННИХ ТЕХНОЛОГІЙ І РОБОТОТЕХНІКИ
КАФЕДРА РОБОТОТЕХНІЧНИХ І ТЕЛЕКОМУНІКАЦІЙНИХ СИСТЕМ
ТА КІБЕРБЕЗПЕКИ
До захисту допущено
завідувач кафедри РТСК
д.т.н., професор
_______________ В.В. Палагін
"_____" _____________ 2021 року
Пояснювальна записка
до дипломного проекту (роботи)
магістра
(освітньо-кваліфікаційний рівень)
на тему Побудова системи компютерного зору на платформі Raspberry
Pi (програмна реалізація)
Виконав: студент 2 курсу, групи РТ-
005
напряму підготовки (спеціальності)
172 – «Телекомунікації та радіотехніка»,
(шифр і назва напряму підготовки, спеціальності)
освітня програма – «Радіотехніка та
робототехнічні системи»
Коваль В.С.
(прізвище та ініціали)
Керівник Палагін В.В.
(прізвище та ініціали)
Рецензент Гальченко В.Я.
(прізвище та ініціали)
Черкаси – 2021 року
Форма № Н-9.01
Черкаський державний технологічний університет
(назва вузу)
Факультет електронних технологій і робототехніки
Кафедра робототехнічних і телекомунікаційних систем та кібербезпеки
Освітній ступінь магістр
Напрям підготовки
Спеціальність 172 – Телекомунікації та радіотехніка, освітня програма «Радіотехніка
та робототехнічні системи»
ЗАТВЕРДЖУЮ
Завідувач кафедри РТСК В.В.Палагін
“_____” ___________________ 2021 року
З А В Д А Н Н Я
НА ДИПЛОМНИЙ ПРОЕКТ (РОБОТУ) СТУДЕНТУ
Коваль Веніаміну Сергійовичу
(прізвище, ім’я, по батькові)
1. Тема проекту (роботи) Побудова системи компютерного зору на платформі
Raspberry Pi (програмна реалізація)
Керівник проекту (роботи) Палагін Володимир Васильович, д.т.н., професор
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом вищого навчального закладу від 21.09.2021 № 289-1/01
2. Строк подання студентом проекту (роботи) “ 01 ” грудня 2021 року _________
3. Вихідні дані до роботи: застосування методів машинного навчання; реалізувати
розпізнавання та відстеження обличчя; використання одноплатного комп’ютера
Raspberry PI; використання бібліотек OpenCV і Face Recognition, реалізація програмної
частини проекту.
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити)
Застосування систем комп’ютерного зору; методи побудови систем комп’ютерного зору;
принципи побудови та функціонування нейронних мереж; технічна реалізація системи
комп’ютерного зору; побудова та обгрунтування структурної схеми системи
комп’ютерного зору; cтруктура та принцип функціонування Raspberry PI; вибір та
налаштування операційної системи для Raspberry PI; підключення та керування
периферійними пристроями на прикладі застосування сервоприводів; завантаження та
опис необхідних для роботи бібліотек при використанні Raspberry PI; схемотехнічна
реалізація системи управління на базі мікрокомп’ютера Raspberry PI; формування та
опис керуючої програми; експерементальні дослідження та аналіз отриманих рішень.
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів)
Схема структурна, Схема електрична принципова.
.
6. Консультанти з проекту (роботи) із зазначенням розділів проекту, що їх стосуються
Підпис, дата
Розділ Прізвище, ініціали та посада завдання завдання
консультанта видав прийняв
7. Дата видачі завдання 01 вересня 2021 року
КАЛЕНДАРНИЙ ПЛАН
№ Назва етапів дипломного проекту Термін
з/п (роботи) виконання етапів Примітка
проекту (роботи)
1. Аналіз реалізації та принципів побудови
систем компютерного зору 21.09.21 – 15.10.21
2. Побудова структурної схеми та реалізація
початкових налаштувань системи 16.10.21 – 20.10.21
комп’ютерного зору на базі Raspberry PI
3. Побудова смарт-системи управління при
застосуванні комп’ютерного зору на базі 21.10.21 – 01.11.21
Raspberry PI
4. Формування та опис керуючої програми 02.11.21 – 15.11.21
5. Проведення дослідження та аналіз
отриманих рішень 16.11.21– 25.11.21
6. Оформлення пояснювальної записки 26.11.21 – 01.12.21
7. Оформлення презентації 02.12.21 – 14.12.21
Студент Коваль В.С.
( підпис ) (прізвище та ініціали)
Керівник проекту (роботи) Палагін В.В.
( підпис ) (прізвище та ініціали)
ЗМІСТ
ВСТУП
РОЗДІЛ 1. АНАЛІЗ ІСНУЮЧИХ СИСТЕМ КОМП'ЮТЕРНОГО ЗОРУ
1.1. Комп'ютерний зір та його застосування
1.2. Комп'ютерний зір методи його побудови та функціонування
1.3. Штучні нейронні мережі принципи їх побудови та функції
1.4. Висновки
РОЗДІЛ 2. ДОСЛІДЖЕННЯ ДОПОМІЖНИХ БІБЛІОТЕК ДЛЯ
НАПИСАННЯ ПРОГРАМНОГО КОДУ
2.1. Опис бібліотеки OpenCV, дослідження та принцип роботи
2.2. Принцип роботи бібліотеки Face Recognition,опис та
дослідження
2.3. Дослідження методів віддаленого доступу. Принципи
віддаленого доступу та його реалізація.
2.4. Аналіз додаткових бібліотек на мові Python
2.5. Висновки
РОЗДІЛ 3. НАПИСАННЯ ТА РЕАЛІЗАЦІЯ ПРОГРАМНОГО КОДУ
КОМП'ЮТЕРНОГО ЗОРУ В СЕРЕДИНІ ОС RASPBERRY PI
3.1. Програмна реалізація системи управління Raspberry Pi
3.2. Керуюча програма дослідження та опис
3.3. Експериментальні дослідження. Аналіз отриманих рішень
3.4. Висновки
ВИСНОВОК
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
РТ-005.20135.248 ПЗ
Змн. Арк. № докум. Підпис Дата
Розроб. Коваль В.С. Побудова системи компютерного Літ. Арк. Акрушів
Перевір. Палагін В.В. зору на платформі Raspberry Pi 3 74
Реценз. (програмна реалізація)
Н. Контр. ЧДТУ
Затверд.
ВСТУП
В даній випускній роботі пропонується розробка пристрою по
розпізнаванню обличчя та образів. Основна перевага даної розробки
полягає в її сучасності та актуальності в сучасному модернізованому світі.
Актуальність розробки полягає в досить широкому використанні
даної технології а саме в:
1. Системи управління процесами ( промислові роботи, автономні
транспортні засоби)
2. Системи відеоспостереження
3. Системи організації інформації (наприклад, для індексації баз даних
зображень)
4. Системи моделювання об'єктів або навколишнього середовища
(аналіз медичних зображень, топографічне моделювання)
5. Системи взаємодії (наприклад, пристрої введення для системи
людино-машинного взаємодії)
6. Системи доповненої реальності
7. Обчислювальна фотографія, наприклад для мобільних пристроїв з
камерами
В роботі представленні практичні наробки та реалізація програмного
коду по збору даних, кодуванню отриманих даних, розпізнаванню обличь,
образів, предметів, створенню макету, налаштуванню системи Raspberry Pi,
встановлення бібліотеки OpenCV та Face Recognition.
Лист
РТ-005.20135.248 ПЗ 1
Изм. Лист № докум. Подпись Дата
РОЗДІЛ 1. АНАЛІЗ РЕАЛІЗАЦІЇ ТА ПРИНЦИПІВ ПОБУДОВИ
СИСТЕМ КОМПЮТЕРНОГО ЗОРУ
1.1. Застосування систем комп’ютерного зору.
Комп'ютерний зір – теорія та технологія створення машин, які можуть
проводити виявлення, стеження та класифікацію об'єктів.
Як наукова дисципліна комп'ютерний зір відноситься до теорії та
технології створення штучних систем, що отримують інформацію із
зображень. Відеодані можуть бути представлені безліччю форм, таких як
відеопослідовність, зображення з різних камер або тривимірними даними,
наприклад із пристрою Kinect або медичного сканера.
Як технологічна дисципліна, комп'ютерний зір прагне застосувати теорії та
моделі комп'ютерного зору створення систем комп'ютерного зору.
Прикладами застосування таких систем можуть бути:
- Системи керування процесами (промислові роботи, автономні
транспортні засоби)
- Системи відеонагляду
- Системи організації інформації (наприклад, для індексації баз даних
зображень)
- Системи моделювання об'єктів або навколишнього середовища
(аналіз медичних зображень, топографічне моделювання)
- Системи взаємодії (наприклад, пристрої для введення системи
людино-машинної взаємодії)
- Системи доповненої реальності
- Обчислювальна фотографія, наприклад, для мобільних пристроїв з
камерами
Комп'ютерний зір також може бути описаний як доповнення (але не
обов'язково протилежність) біологічного зору. У біології вивчається зорове
сприйняття людини різних тварин, у результаті створюються моделі роботи
Лист
РТ-005.20135.248 ПЗ 2
Изм. Лист № докум. Подпись Дата
таких систем у термінах фізіологічних процесів. Комп'ютерний зір, з іншого
боку, вивчає та описує системи комп'ютерного зору, виконані апаратно чи
програмно. Міждисциплінарний обмін між біологічним та комп'ютерним
зором виявився досить продуктивним для обох наукових галузей.
Підрозділи комп'ютерного зору включають відтворення дій,
виявлення подій, стеження, розпізнавання образів, відновлення зображень
та деякі інші.
Область комп'ютерного зору може бути охарактеризована як молода,
різноманітна і динамічна. І хоча існують раніше роботи, можна сказати, що
тільки з кінця 1970-х почалося інтенсивне вивчення цієї проблеми, коли
комп'ютери змогли керувати обробкою великих наборів даних, таких як
зображення. Однак ці дослідження зазвичай починалися з інших областей,
і, отже, немає стандартного формулювання проблеми комп'ютерного зору.
Також, і це важливіше, немає стандартного формулювання того, як має
вирішуватись проблема комп'ютерного зору. Натомість існує безліч методів
для вирішення різних суворо певних завдань комп'ютерного зору, де методи
часто залежать від завдань і рідко можуть бути узагальнені для широкого
кола застосування. Багато методів і додатків все ще знаходяться в стадії
фундаментальних досліджень, але все більше методів знаходить
застосування в комерційних продуктах, де вони часто становлять частину
більшої системи, яка може вирішувати складні завдання (наприклад, в
області медичних зображень або вимірювання та контролю якості) . у
процесах виготовлення). У більшості практичних застосувань
комп'ютерного зору комп'ютери попередньо запрограмовані на вирішення
окремих завдань, але методи, засновані на знаннях, стають все більш
загальними.
Важливу частину штучного інтелекту займає автоматичне
планування чи прийняття рішень у системах, які можуть здійснювати
Лист
РТ-005.20135.248 ПЗ 3
Изм. Лист № докум. Подпись Дата
механічні дії, такі як переміщення робота через деяке середовище. Цей тип
обробки зазвичай вимагає вхідних даних, що надаються системами
комп'ютерного зору, що діють як відеосенсор і надавачами високорівневої
інформації про середовище та роботу. Інші області, які іноді описуються як
такі, що належать до штучного інтелекту і використовуються для
комп'ютерного зору, це розпізнавання образів та навчальні методи. Через
війну комп'ютерний зір іноді сприймається як частина області штучного
інтелекту чи галузі комп'ютерних наук взагалі.
Фізика є іншою наукою, пов'язаною з комп'ютерним зором. Значна
частина комп'ютерного зору має справу з методами, що потребують
досконалого розуміння процесу, в якому електромагнітне випромінювання,
зазвичай в області видимого або інфрачервоного діапазону, відображається
поверхнею об'єктів та вимірюється датчиком зображення, щоб отримати
відео. Цей процес заснований на оптиці та фізиці жорсткого тіла. Більш
складні датчики зображення вимагають знання квантової механіки для
повного розуміння процесу формування зображення. Також різні проблеми
вимірювань у фізиці можуть бути вирішені, використовуючи комп'ютерний
зір (наприклад, що стосуються руху в рідинах).
Третя область науки, що відіграє важливу роль, це нейробіологія,
особливо вивчення систем біологічного зору. За останнє століття були
проведені великі дослідження очей, нейронів і структур мозку, що
стосуються обробки візуальних подразників як у людини так і у різних
тварин. Це призвело до брутального,до того ж складного, опис того, як
працюють "реальні" системи зору, що допомогло вирішити деякі завдання.
Результати цих досліджень призвели до створення штучних систем, що
імітують роботу та функціонування аналогічних біологічних систем на
різних рівнях складності.
Лист
РТ-005.20135.248 ПЗ 4
Изм. Лист № докум. Подпись Дата
Також деякі методи вивчення, розроблені у сфері комп'ютерного зору,
зобов'язані своїм походженням біології.
Ще однією областю, що з комп'ютерним зором, є обробка сигналів.
Багато методів обробки одновимірних сигналів, зазвичай тимчасових
сигналів, можуть бути природним шляхом розширені для обробки
двовимірних або багатовимірних сигналів комп'ютера. Однак, через
своєрідну природу зображень, існує багато методів, розроблених в області
комп'ютерного зору, що не мають аналогів в області обробки одновимірних
сигналів. Особливою властивістю цих методів є їхня нелінійність, що разом
із багатовимірністю сигналу робить відповідну підобласть в обробці
сигналів частиною області комп'ютерного зору.
Окрім згаданих підходів до проблеми комп'ютерного зору, багато
питань, що вивчаються, можуть бути вивчені з суто математичної точки
зору. Наприклад, багато методів ґрунтуються на статистиці, методах
оптимізації чи геометрії. Нарешті, великі роботи ведуться в області
практичного застосування комп'ютерного зору, як існуючі методи можуть
бути реалізовані програмно та апаратно або як вони можуть бути змінені
для того, щоб досягти високої швидкості роботи без істотного збільшення
споживаних ресурсів.
Комп'ютерний зір, Обробка зображень та Машинний зір – тісно
пов'язані області. Але досі точно не визначено, чи вони є розділами однієї,
ширшої. При детальному аналізі може здатися, що це різні назви однієї й
тієї ж області. Щоб не виникало плутанини, прийнято розрізняти їх як
напрямки, сфокусовані на певному предметі вивчення. Нижче наведено
опис деяких з них, найважливіших:
Лист
РТ-005.20135.248 ПЗ 5
Изм. Лист № докум. Подпись Дата
Обробка зображень або аналіз зображень, в основному зосереджені
на роботі з двовимірними зображеннями, тобто як перетворити одне
зображення на інше. Наприклад, попіксельні операції збільшення
контрастності, операції з виділення країв, усунення шумів або геометричні
перетворення, такі як афінні перетворення. Дані операції припускають, що
обробка/аналіз зображення діють незалежно від самих зображень.
Комп'ютерний зір зосереджується на обробці тривимірних сцен,
спроектованих одне чи кілька зображень. Наприклад, відновлення
структури або іншої інформації про тривимірну сцену за одним або
декількома зображеннями. Комп'ютерний зір часто залежить від складних
припущень про те, що представлено на зображеннях.
Машинний зір зосереджується на застосуванні, в основному
промисловому, наприклад, автономні роботи та системи візуальної
перевірки та вимірювань. Це означає, що технології датчиків зображення та
теорії управління пов'язані з обробкою відеоданих для управління роботом
та обробка даних у реальному часі виробляється апаратно або програмно.
Також існує область, названа Візуалізація, яка спочатку була
пов'язана з процесом створення зображень, але іноді мала справу з
обробкою та аналізом. Наприклад, рентгенографія працює з аналізом
відеоданих медичного застосування.
Нарешті, розпізнавання образів є областю, використовує різні методи
отримання інформації з відеоданих, переважно, засновані на статистичному
підході. Значна частина цієї галузі присвячена практичному застосуванню
цих методів.
Лист
РТ-005.20135.248 ПЗ 6
Изм. Лист № докум. Подпись Дата
Одним з найважливіших застосувань є обробка зображень у
медицині. Ця область характеризується отриманням інформації про
відеодані для постановки медичного діагнозу пацієнтам. У більшості
випадків видання отримують за допомогою мікроскопії, рентгенографії,
ангіографії, ультразвукових досліджень і томографії. Прикладом
інформації, яка може бути отримана з таких відео, є виявлення пухлин,
атеросклерозу або інших злоякісних змін. Також прикладом може бути
вимірювання розмірів органів, кровотоку і т. д. Ця прикладна область також
сприяє медичним дослідженням, надаючи нову інформацію, наприклад, про
будову мозку або якість медичного лікування.
Інший прикладної областю комп'ютерного зору є промисловість. Тут
інформацію отримують з метою підтримки виробничого процесу.
Прикладом може бути контроль якості, коли деталі або кінцевий продукт
автоматично перевіряються наявність дефектів. Іншим прикладом є
вимірювання положення та орієнтації деталей, що піднімаються рукою
робота. Військове застосування є, мабуть, найбільшою областю
комп'ютерного зору. Очевидними прикладами є виявлення ворожих
солдатів і транспортних засобів та управління ракетами. Найбільш
досконалий ие системи управління ракетами посилають ракету в задану
область, замість конкретної мети, а селекція цілей проводиться, коли ракета
досягає заданої області, ґрунтуючись на одержуваних відеоданих. Сучасне
військове поняття, таке як "бойова обізнаність", має на увазі, що різні
датчики, включаючи датчики зображення, надають великий набір
інформації про поле бою, яка може бути використана для прийняття
стратегічних рішень. У цьому випадку автоматична обробка даних
використовується для зменшення складності або збільшення надійності
інформації, що отримується.
Лист
РТ-005.20135.248 ПЗ 7
Изм. Лист № докум. Подпись Дата
Її застосування є автономні транспортні засоби, включаючи підводні,
наземні (роботи, машини), повітряні. Рівень автономності змінюється від
повністю автономних (безпілотних) до транспортних засобів, де системи,
засновані на комп'ютерному зорі, підтримують водія чи пілота у різних
ситуаціях. Повністю автономні тс використовують комп'ютерний зір для
навігації, тобто. для отримання інформації про місцезнаходження,
створення карти навколишнього оточення, виявлення перешкод. Вони
також можуть використовуватись для певних завдань, наприклад, для
виявлення лісових пожеж. Прикладами таких систем можуть бути система
попереджувальної сигналізації про перешкоди на машинах та системи
автономної посадки літаків. Деякі виробники машин демонстрували
системи автономного керування автомобілем, але ця технологія ще не
досягла того рівня, коли її можна запустити в масове виробництво.
Інші сфери застосування включають:
4.1. Розпізнавання
Класична задача в комп'ютерному зорі, обробці зображень і
машинному зорі це визначення чи містять дані певний характерний об'єкт,
особливість або активність. Це завдання може бути достовірно і легко
вирішено людиною, але досі не вирішено задовільно у комп'ютерному зорі
у випадку: випадкові об'єкти у випадкових ситуаціях.
Існуючі методи вирішення цього завдання ефективні тільки для
окремих об'єктів, таких як прості геометричні об'єкти (наприклад,
багатогранники), людські особи, друковані або рукописні символи,
автомобілі і лише в певних умовах, зазвичай це певне освітлення, фон та
положення об'єкта щодо камери.
Лист
РТ-005.20135.248 ПЗ 8
Изм. Лист № докум. Подпись Дата
У літературі описано безліч проблем розпізнавання:
Розпізнавання: один або кілька попередньо заданих або вивчених
об'єктів або класів об'єктів можуть бути розпізнані, зазвичай разом з
двомірним положенням у зображенні або тривимірним положенням в сцені.
Ідентифікація: розпізнається особистий екземпляр об'єкта. Приклади:
ідентифікація певної людини або відбитка пальців або автомобіля.
Відеодані перевіряються на наявність певної умови. Наприклад, виявлення
можливих неправильних клітин або тканин у медичних зображеннях.
Виявлення, засноване на відносно простих і швидких обчисленнях, іноді
використовується для знаходження невеликих ділянок в аналізованому
зображенні, які потім аналізуються за допомогою більш вимогливих до
ресурсів прийомів, для отримання правильної інтерпретації.
Існує кілька спеціалізованих завдань, заснованих на розпізнаванні,
наприклад:
Пошук зображень за змістом: пошук усіх зображень у великому
наборі зображень, які мають певний зміст. Зміст може бути визначений
різними шляхами, наприклад, у термінах схожості з конкретним
зображенням (знайдіть мені всі зображення, на яких зображено багато
будинків, які зроблені взимку і на яких немає машин).
Оцінка становища: визначення становища чи орієнтації певного
об'єкта щодо камери. Прикладом застосування цієї техніки може бути
сприяння руці робота у вилученні об'єктів зі стрічки конвеєра на лінії
збирання.
Оптичне розпізнавання символів : розпізнавання символів на зображеннях
друкованого чи рукописного тексту, зазвичай перекладу текстовий формат,
найкомфортніший для редагування чи індексації (наприклад, ASCII).
Лист
РТ-005.20135.248 ПЗ 9
Изм. Лист № докум. Подпись Дата
4.2. Рух
Декілька завдань, пов'язаних з оцінкою руху, в яких послідовність
зображень (відеодані) обробляються для знаходження оцінки швидкості
кожної точки зображення або 3D сцени. Прикладами таких завдань є:
- Визначення тривимірного руху камери
- Слідування за переміщеннями об'єкта (наприклад, машин або людей)
-
4.3. Відновлення стіни
Дано два або більше зображення стіни, або відеодані. Відновлення
стіни має на меті відтворити тривимірну модель стіни. У найпростішому
випадку, моделлю може бути набір точок тривимірного простору. Більш
складні методиди відтворюють повну тривимірну модель.
Завдання відновлення зображень це видалення шуму (шум датчика,
розмитість об'єкта, що рухається і т. д.). Найбільш простим підходом до
вирішення цієї задачі є різні типи фільтрів, таких як фільтри нижніх або
середніх частот. Більш складні методи використовують уявлення у тому, як
мають виглядати ті чи інші ділянки зображення, і основі цього їх зміна.
Вищий рівень шумів досягається в ході первинного аналізу
відеоданих на наявність різних структур, таких як лінії або межі, а потім
управління процесом фільтрації на основі цих даних.
1.2. Компютерний зір методи його побудови та функціонування
По суті, процес розпізнавання обличчя виконується у два етапи.
Перший включає виділяння і відбір ознак, а другий — класифікацію
об'єктів. Пізніші розробки запровадили різні методи. Деякі з найбільш
помітних наступні:
- Традиційний
Лист
РТ-005.20135.248 ПЗ 10
Изм. Лист № докум. Подпись Дата
Деякі алгоритми розпізнавання облич визначають риси обличчя,
через ключові точки або особливості по зображенню обличчя суб'єкта.
Наприклад, алгоритм може проаналізувати відносну позицію, розмір і/або
форму очей, носа, вилиць і щелепи. Ці ознаки потім використовуються для
пошуку інших зображень з такими ж ознаками.
Інші алгоритми нормалізують галерею зображень облич, а потім стискають
дані обличчя через збереження тільки тих даних на зображенні, які потрібні
для розпізнавання облич. Тестове зображення потім порівнюється з даними,
які відповідають обличчю. Одна з найбільш ранніх успішних систем
заснована на методах співставлення шаблонів, які застосовуються до
множини характерних рис обличчя, забезпечуючи свого роду стиснення
опису обличчя.
Алгоритми розпізнавання можна розділити на два основні підходи.
Геометричний підхід розглядає відмінні ознаки. Фотометричний, який є
статистичним підходом, який перетворює зображення в множину значень і
порівнює ці значення з шаблонами для усунення відмінностей. Дехто
класифікує ці алгоритми на дві широкі категорії: цілісні (холіцистичні) і на
такі, що ґрунтуються на ознаках. Перші намагаються розпізнати обличчя у
всій його повноті, в той час як ті, що використовують ознаки, розбивають
обличчя на складові, такі як відповідність ознакам і аналізують кожну, як і
просторове розташування щодо інших ознак.
Популярні алгоритми розпізнавання включають аналіз основних
компонентів, використовуючи метод власних облич, лінійний
дискримінантний аналіз, еластичне співставлення з використанням
алгоритму рибних облич, прихованої марковської моделі, навчання
полілінійного підпростору, використання тензорного представлення та
динамічного узгодження нейронів.
- Тривимірне розпізнавання
Лист
РТ-005.20135.248 ПЗ 11
Изм. Лист № докум. Подпись Дата
Розпізнавання облич у просторі використовує 3D-датчики для
захоплення інформації про форму обличчя. Ця інформація потім
використовується для виявлення характерних ознак на поверхні обличчя,
таких як контури очниць, ніс і підборіддя.
Однією з переваг розпізнавання облич у просторі є те, що на нього не
впливають зміни в освітленні, як в інших методах. Він також може
ідентифікувати обличчя у діапазоні кутів огляду, включаючи профіль.
Використання тривимірних точок обличчя суттєво поліпшує точність
розпізнавання особи. Дослідження у просторі посилились завдяки розробці
складних датчиків, які краще виконують роботу по захопленню
тривимірних зображень обличчя. Робота датчиків ґрунтується на правильно
організованому освітлені обличчя. До десятка або і більше цих датчиків
зображення можна розмістити на одному чипі CMOS — кожен датчик
фіксує свою частину спектру .
Навіть ідеальна техніка співставлення тривимірних зображень облич
може бути чутливою до наявності емоцій. Для цієї мети дослідницька група
з Техніона застосовувала інструменти метричної геометрії для усунення
виразів обличчя за допомогою ізометрії.
Новий метод полягає у введенні способу захоплення тривимірного
зображення за допомогою трьох камер стеження, які спрямовані під
різними кутами; одна камера дивиться у фас, друга — у профіль, а третя —
під кутом. Всі ці камери працюватимуть разом, щоб можна було
відстежувати обличчя суб'єкта в режимі реального часу і мати можливість
розпізнавати.
- Аналіз текстури шкіри
Ще одна тенденція, що розвивається, використовує візуальні деталі
шкіри, зафіксовані в стандартних цифрових або сканованих зображеннях.
Лист
РТ-005.20135.248 ПЗ 12
Изм. Лист № докум. Подпись Дата
Цей метод, який називається аналізом текстури шкіри, переводить
унікальні лінії, візерунки та плями, які є на шкірі людини, в математичний
простір.
Аналіз текстури поверхні працює так само, як і розпізнавання
обличчя. Знімок ділянки шкіри, називається відбитком шкіри (англ.
skinprint). Потім цей відбиток розбивається на дрібніші частини.
Використовуються алгоритми для переведення відбитку в математичний,
вимірюваний простір, система починає розрізняти будь-які лінії, пори та
фактичну текстуру шкіри. Вона може знайти відмінність між ідентичними
парами, що неможливо було виконати тільки за допомогою програмного
забезпечення для розпізнавання облич.
Тести показали, що додатковий аналіз текстури шкіри, може
збільшити результат розпізнавання облич на 20-25%.
- Розпізнавання осіб, що поєднує різні методики
Оскільки кожен метод має свої переваги й недоліки, технологічні
компанії об'єднали традиційне, 3D-розпізнавання і шкірний текстовий
аналіз, щоб створити системи розпізнавання, які мають більш високий
рівень успіху.
Комбіновані методи мають перевагу перед іншими системами. Він
відносно нечутливий до змін у вираженні, включаючи миготливий,
хмуриться або усміхнений і має здатність компенсувати зростання вуса або
бороди та появу окулярів. Система також є однорідною стосовно до раси та
статі.
- Теплові камери
Інша форма прийняття вхідних даних для розпізнавання обличчя за
допомогою теплових камер, за допомогою цієї процедури камери
виявлятимуть лише форму голови, і вона ігноруватиме предмет аксесуарів,
Лист
РТ-005.20135.248 ПЗ 13
Изм. Лист № докум. Подпись Дата
таких як окуляри, головні убори або макіяж. На відміну від звичайних
камер, теплові камери можуть захоплювати зображення обличчя навіть в
умовах слабкого освітлення і в нічний час без використання спалаху і
виставлення положення камери. Однак проблема з використанням теплових
зображень для розпізнавання облич полягає в тому, що бази даних для
розпізнавання облич обмежені. Дієго Соколінський і Андреа Селінгер
(2004) досліджують використання термічного розпізнавання облич в
реальних умовах життя та експлуатації, і водночас будують нову базу даних
теплових зображень облич. Дослідження використовує малочутливі,
сегнетоелектричні електричні датчики з низьким дозволом, які здатні
придбати довгохвильову теплову інфрачервону область (LWIR). Результати
показують, що злиття LWIR і регулярних візуальних камер має більші
результати у відкритих зондах. Результати в приміщенні показують, що
візуальна точність має 97,05%, а LWIR — 93,93%, а Fusion — 98,40%, однак
на відкритому повітрі візуальне виявляє 67,06%, LWIR 83,03%, а синтез —
89,02%. Дослідження використовувало 240 суб'єктів протягом 10 тижнів
для створення нової бази даних.
У 2018 році дослідники з науково-дослідної лабораторії армії
США(ARL) розробили методику, яка дозволила б їм узгоджувати
зображення обличчя, отримане за допомогою теплової камери, з даними в
базах даних, які були захоплені за допомогою звичайної камери. Цей підхід
використовував штучний інтелект і машинне навчання, щоб дозволити
дослідникам помітно порівнювати традиційні та теплові зображення
обличчя. Відомий як метод синтезу крос-спектру завдяки тому, що він
зближує розпізнавання осіб з двох різних способів формування зображення,
цей метод синтезує єдине зображення, аналізуючи кілька областей обличчя
та деталі. Вона складається з нелінійної регресійної моделі, яка відображає
певне теплове зображення у відповідному видимому зображенні обличчя та
Лист
РТ-005.20135.248 ПЗ 14
Изм. Лист № докум. Подпись Дата
проблемі оптимізації, яка проектує приховану проекцію назад у простір
зображення.
Вчені ARL відзначили, що підхід працює, поєднуючи глобальну
інформацію (тобто функції по всьому обличчю) з місцевою інформацією
(тобто особливості, що стосуються очей, носа і рота). На додаток до
підвищення дискримінації синтезованого зображення, система
розпізнавання обличчя може бути використана для перетворення підпису
термічного обличчя в витончене видиме зображення обличчя. Згідно з
тестами, проведеними в ARL, дослідники виявили, що багато регіональна
модель синтезу крос-спектру продемонструвала поліпшення
продуктивності приблизно на 30% у порівнянні з базовими методами й
близько 5% у порівнянні з сучасними методами. Він також був
протестований для виявлення орієнтирів для теплових зображень.
1.3. Штучні нейронні мережі принципи їх побудови та функції
Шту́чні нейро́нні мере́жі (ШНМ), або конективістські системи — це
обчислювальні системи, натхнені біологічними нейронними мережами, що
складають мозок тварин. Такі системи навчаються задач (поступально
покращують свою продуктивність на них), розглядаючи приклади, загалом
без спеціального програмування під задачу. Наприклад, у розпізнаванні
зображень вони можуть навчатися ідентифікувати зображення, які містять
котів, аналізуючи приклади зображень, мічені як «кіт» і «не кіт», і
використовуючи результати для ідентифікування котів в інших
зображеннях. Вони роблять це без жодного апріорного знання про котів,
наприклад, що вони мають хутро, хвости, вуса та котоподібні писки.
Натомість, вони розвивають свій власний набір доречних характеристик з
навчального матеріалу, який вони оброблюють.
Лист
РТ-005.20135.248 ПЗ 15
Изм. Лист № докум. Подпись Дата
ШНМ ґрунтується на сукупності з'єднаних вузлів, що називають
штучними нейронами (аналогічно до біологічних нейронів у головному
мозку тварин). Кожне з'єднання (аналогічне синапсові) між штучними
нейронами може передавати сигнал від одного до іншого. Штучний нейрон,
що отримує сигнал, може обробляти його, й потім сигналізувати штучним
нейронам, приєднаним до нього.
В поширених реалізаціях ШНМ сигнал на з'єднанні між штучними
нейронами є дійсним числом, а вихід кожного штучного нейрону
обчислюється нелінійною функцією суми його входів. Штучні нейрони та
з'єднання зазвичай мають вагу, яка підлаштовується в перебігу навчання.
Вага збільшує або зменшує силу сигналу на з'єднанні. Штучні нейрони
можуть мати такий поріг, що сигнал надсилається лише якщо сукупний
сигнал перетинає цей поріг. Штучні нейрони зазвичай організовано в шари.
Різні шари можуть виконувати різні види перетворень своїх входів. Сигнали
проходять від першого (входового) до останнього (виходового) шару,
можливо, після проходження шарами декілька разів.
Первинною метою підходу ШНМ було розв'язання задач таким же
способом, як це робив би людський мозок. З часом увага зосередилася на
відповідності певним розумовим здібностям, ведучи до відхилень від
біології. ШНМ використовували в ряді різноманітних задач, включно з
комп'ютерним баченням, розпізнаванням мовлення, машинним
перекладом, соціально-мережевим фільтруванням, грою в настільні та
відеоігри, та медичним діагностуванням.
Наш мозок не здатний швидко здійснювати великий об’єм
математичних операцій. Навіть найпростіші апарати, типу калькулятора
мають перевагу над людиною. Але, на відміну від комп’ютера, людина
може швидко адаптуватися до нових умов. Наприклад, ми можемо
розпізнавати мову співрозмовника, навіть якщо знаходимось в шумному
Лист
РТ-005.20135.248 ПЗ 16
Изм. Лист № докум. Подпись Дата
приміщенні, або надзвичайно швидко впізнавати знайоме обличчя в
натовпі. Комп’ютеру ж навпаки такі операції даються нелегко.
Наше мислення – результат роботи мережі нейронів в мозку. Нейрони
передають одне одному хімічні сигнали за допомогою електричних
імпульсів. Внаслідок такої активності з’являються наші відчуття та
мислення. Штучний інтелект і когнітивне моделювання намагаються
імітувати деякі властивості біологічних нейронних мереж. ШНМ є
системою з’єднаних і взаємодіючих між собою простих процесорів
(штучних нейронів). Такі процесори зазвичай досить прості (особливо в
порівнянні з процесорами, використовуваними в персональних
комп’ютерах). Кожен процесор подібної мережі має справу тільки з
сигналами, які він періодично отримує, і сигналами, які він періодично
посилає іншим процесорам. І, тим не менше, будучи з’єднаними в досить
велику мережу з керованим взаємодією, такі окремо прості процесори разом
здатні виконувати досить складні завдання.
Працює штучна нейронна мережа наступним чином: на входи нейронів
надходять сигнали, які сумуються. При цьому враховується синаптична маса,
тобто значимість кожного з входів. Далі, вхідні сигнали одних нейронів
надходять на входи інших нейронів. Маса кожного такого зв’язку може бути
позитивною( збуджуючі зв’язки ) або негативною( гальмівні зв’язки). Вони
визначають обчислення нейронної мережі, а значить її пам’ять та поведінку.
Принцип дуже схожий на роботу нашого власного процесору – мозку (Рис.1.1).
Лист
РТ-005.20135.248 ПЗ 17
Изм. Лист № докум. Подпись Дата
Рисунок 1.1 - Принцип роботи нейронних мереж людського мозку
Але для того, щоб штучна нейронна мережа виконувала складні завдання,
її необхідно навчити.
Навчання штучної нейронної мережі
Штучні нейронні мережі не програмуються в звичайному розумінні
цього слова, вони навчаються. Можливість навчання — одна з головних
переваг нейронних мереж перед традиційними алгоритмами. Технічно,
навчання полягає в знаходженні коефіцієнтів зв’язків між нейронами. В
процесі навчання нейронна мережа здатна виявляти складні залежності між
вхідними даними й вихідними, а також здійснювати узагальнення.
Для процесу навчання необхідно мати модель зовнішнього
середовища, у якій функціонує нейронна мережа – потрібну для вирішення
Лист
РТ-005.20135.248 ПЗ 18
Изм. Лист № докум. Подпись Дата
задачі інформацію. По-друге, необхідно визначити, як модифікувати вагові
параметри мережі.(Рис.1.2)
Рисунок 1.2 - Навчання ШНМ
Існує три загальні парадигми навчання: контрольована,
неконтрольована (самонавчання) і змішана. У першому випадку нейронна
мережа має правильні відповіді (виходи мережі) для кожного вхідного
прикладу. Шкала коригується таким чином, щоб мережа виробляла
відповіді, найбільш близькі до відомих правильних відповідей. Навчання
без нагляду не вимагає знання правильних відповідей для кожного
прикладу навчального набору. У цьому випадку виявляється внутрішня
структура даних і кореляція між вибірками в навчальній сукупності, що
дозволяє категоризувати вибірки. У змішаному навчанні деякі вагові
показники визначаються шляхом навчання під керівництвом, а інші
визначаються за допомогою самонавчання.
Найпоширеніші варіанти використання нейронних мереж
Лист
РТ-005.20135.248 ПЗ 19
Изм. Лист № докум. Подпись Дата
1. Розпізнавання та класифікація образів. В якості зображень можуть
виступати об'єкти різної природи: символи тексту, зображення,
зразки звуків і т. д. При навчанні мережі пропонуються різні зразки
зображень із зазначенням, до якого класу вони належать. Коли
зображення подається в мережу, на одному з її виходів має з’явитися
знак, що зображення належить до цього класу. У той же час на інших
виходах має бути ознака, що зображення не належить до цього класу.
2. Прийняття рішень та управління. Ця проблема близька до проблеми
класифікації. Класифікації підлягають ситуації, властивості яких
надходять на вхід нейронної мережі. На виході мережі повинен
з'явитися знак її рішення.
3. Кластеризація. Під кластеризацією розуміють поділ набору вхідних
сигналів на класи, при цьому ні кількість, ні характеристики класів
наперед не відомі. Після навчання така мережа здатна визначити, до
якого класу належить вхідний сигнал.
4. Прогнозування. Здатність нейронної мережі передбачати
безпосередньо випливає зі здатності узагальнювати та виділяти
приховані залежності між вхідними та вихідними даними. Після
навчання мережа може передбачити майбутнє значення послідовності
на основі кількох попередніх значень або деяких існуючих факторів.
5. Стиснення даних та асоціативна пам'ять. Здатність нейронних мереж
виявляти зв’язки між різними параметрами дає змогу більш
компактно виражати високорозмірні дані, якщо дані тісно
взаємопов’язані. Зворотний процес - відновлення вихідного набору
даних з частини інформації - називається асоціативною пам'яттю.
Однак, незважаючи на таке глибоке вивчення штучних нейронних
мереж, однозначно не можна сказати, що такий штучний інтелект дійсно
думає і приймає рішення самостійно. Тому не варто боятися, що колись
Лист
РТ-005.20135.248 ПЗ 20
Изм. Лист № докум. Подпись Дата
робота зі штучним інтелектом вирішить знищити людство. Але вже зараз
зрозуміло, що в майбутньому штучні нейронні мережі стануть помічниками
для людей, допомагаючи в медицині та сфері безпеки, автоматизуючи
багато різних процесів заради ґрунтовних консультацій і надаючи людям
невеликі послуги.
1.4. Висновки
В даному розділі ми досліджували загальну інформацію щодо
актуальності комп'ютерного зору, нейронних мереж у сучасному світі.
Дослідили їх історію створення, принципи дії а також методи якими вони
працюють. Ми дослідили сфери застосування комп'ютерного зору,
примінення у комерційних цілях а також у побутових. Методи його
побудови та функціонування.
Лист
РТ-005.20135.248 ПЗ 21
Изм. Лист № докум. Подпись Дата
РОЗДІЛ 2. ДОСЛІДЖЕННЯ ДОПОМІЖНИХ БІБЛІОТЕК ДЛЯ
НАПИСАННЯ ПРОГРАМНОГО КОДУ
2.1. Опис бібліотеки OpenCV, дослідження та принцип роботи
OpenCV — це бібліотека з відкритим кодом, що підтримує багато
платформ, включаючи Windows, MacOs та Linux. Також ця бібліотека існує
для багатьох мов програмування. Але найчастіше вона використовується
для написання програм машинного навчання мовою Python, особливо у
сфері комп'ютерного зору. Крім кросплатформенності та підтримки
багатьох мов програмування, які дозволяють використовувати програми на
різних системах, бібліотека OpenCV дуже ефективна (у порівнянні з іншими
схожими бібліотеками) з точки зору обчислень, оскільки майже всі функції
та оператори в ній векторизовані.
Встановлення бібліотеки
Оскільки ми розглядаємо використання бібліотеки OpenСV для мови
Python, то неявно мається на увазі, що сам Python (версія 3) у вас вже
встановлений. Для встановлення бібліотеки OpenCV виконайте одну з
наведених нижче команд, залежно від вашої операційної системи.
Windows
$ pip install opencv-python
MacOS
$ brew install opencv3 --with-contrib --with-python3
Linux
$ sudo apt-get install libopencv-dev python-opencv
Лист
РТ-005.20135.248 ПЗ 22
Изм. Лист № докум. Подпись Дата
Для перевірки результату установки просто введіть у терміналі Python
наступну команду:
import cv2
Якщо не з'явилося повідомлення про помилку, бібліотека була
встановлена успішно.
Встановивши OpenCV, давайте тепер, так би мовити, помацати
основні функціональні можливості цієї бібліотеки.
Виведення зображення на екран
Процес виведення зображення на екран складається із двох кроків.
Спочатку ми повинні завантажити зображення, а потім вивести його на
екран. Ці операції виконуються послідовно, і кожної з них призначена
окрема функція.
Для виведення зображення на екран нам необхідно задати дві речі:
- Шлях до файлу, у якому міститься зображення (підійде як відносний,
і абсолютний шлях).
- Режим читання файлу (тільки читання, запис тощо).
Функція, за допомогою якої зчитуємо зображення, називається cv2.imread()
. Вона має три режими роботи. Перший це IMREAD_GRAYSCALE . Як
видно з назви, він перетворює зображення на чорно-біле з відтінками сірого.
Другий – IMREAD_UNCHANGED , він завантажує зображення без
обрізання альфа-каналу. І третій, який використовується за замовчуванням,
- IMREAD_COLOR . Він просто завантажує кольорове зображення за
допомогою RGB-канали.
Лист
РТ-005.20135.248 ПЗ 23
Изм. Лист № докум. Подпись Дата
Ось приклад коду(Рис.2.1):
Рисунок 2.1 - Приклад реалізації коду
Таким чином, ми завантажуємо зображення велосипеда з файлу bike.png і
зберігаємо його в змінну my bike для подальшої роботи.
Примітка: якщо в результаті виконання цього коду виникла помилка, є лише
три можливі причини цього. Перше — ви неправильно задали шлях до
файлу. Друга такого файлу просто не існує, і третя тип зображення
(jpg/jpeg/png) заданий невірно.
Тепер давайте виведемо на екран щойно завантажене зображення. Для
цього використовується функція cv2.imshow() . Якщо ви користувалися
Matlab, її робота має бути вам знайома.
cv2.imshow('my_bike', my_bike)
Перший параметр функції imshow() - це рядок, який ми хочемо
використовувати як заголовок до нашого зображення. Другий параметр – це
змінна, що містить завантажене нами зображення.
- Збереження зображень
Для збереження результатів роботи з зображеннями в бібліотеці OpenCV
існує функція cv2.imwrite() .
Ось приклад її використання:
cv2.imwrite('bike.png', my_bike)
Тут ми задали назву файлу та змінну, в якій міститься зображення. Воно
буде збережено до поточної робочої директорії.
Лист
РТ-005.20135.248 ПЗ 24
Изм. Лист № докум. Подпись Дата
- Арифметика зображень
Арифметика зображень включає складання, віднімання, розподіл і
множення різних зображень і використовується для отримання нового
зображення за допомогою арифметичних операцій з вхідними
зображеннями. Арифметика зображень має безліч практичних застосувань,
як нанесення водяного знака на картинку, змішання двох зображень,
застосування до картинок різних фільтрів і так далі.
З множини можливих операцій ми розглянемо лише два приклади, які
допоможуть нам зрозуміти концепцію арифметичних операцій у бібліотеці
OpenСV. Як перший приклад ми візьмемо додавання двох зображень, а як
другий — їхнє змішання (blending).
Давайте розглянемо код цих прикладів (Рис.2.2):
Рисунок 2.2 - Програмна реалізація зчитування двох зображень
Команда waitkey використовується для зупинки виконання коду, до
натискання будь-якої кнопки клавіатури. Це дуже зручно, тому що інакше
виведене на екран зображення тільки на секунду майнуло б на екрані, а
потім програма завершила б своє виконання.
- Змішування зображень
Лист
РТ-005.20135.248 ПЗ 25
Изм. Лист № докум. Подпись Дата
Змішування зображень дуже схоже на їх складання, за винятком того, що
тепер ми можемо контролювати внесок кожного з вхідних зображень в
результативне. У загальному випадку, якщо ми хочемо, щоб одне з вхідних
зображень було більш контрастним, а інше більш розмитим при їх злитті,
ми повинні замість додавання зображень використовувати їхнє змішування.
Щоб прояснити це, розглянемо код (Рис.2.3):
Рисунок 2.3 - Змішування двох зображень
Сума ваг, що передаються у функцію cv2.addWeighted() , повинна
дорівнювати 1 . Також в кінці в функцію можна передати скалярну
величину, яка буде додана значення кожного пікселя результуючого
зображення.
Примітка: зображення можуть бути будь-якого типу, але всі типи зображень
повинні бути однаковими. Наприклад, якщо ви використовуєте формат
PNG, всі зображення повинні бути саме в цьому форматі.
- Згладжування зображень
Згладжування зображень є вкрай корисною операцією і часто
використовується перед тим як передати картинку для обробки в модель
машинного навчання. Здебільшого це потрібно робити для фільтрації
Лист
РТ-005.20135.248 ПЗ 26
Изм. Лист № докум. Подпись Дата
високо частотних шумів, застосовуючи при цьому низькочастотний фільтр.
Існує безліч різних фільтрів, наприклад середній фільтр (box filter),
медіанний фільтр (median filter), фільтр типів хвиль (модовий фільтр, mode
filter), фільтр Гауса (Gaussian filter) та багато інших. Але для розуміння
згладжування зображень та його застосування в бібліотеці OpenCV, ми
розглянемо лише перший, що усереднює фільтр (box filter).
Допустимо, у вас є зображення розміром 10X10 і ви хочете його пропустити
через середній фільтр розміром 3Х3. Як ви діятимете?
Ми почнемо з крайнього лівого кута нашого зображення, помістимо туди
фільтр розміром 3Х3 та замінимо центральний елемент на середнє по всіх
дев'яти елементах (сума елементів, що потрапили у фільтр, поділена на 9).
Це буде лише першим етапом. Далі ми посунемо фільтр на один крок
праворуч і повторимо цю процедуру. Нижче цей приклад наочно
проілюстровано.
Фільтр або маска (Рис.2.4):
Рисунок 2.4 - Фільтр або маска для згладжування зображень
Лист
РТ-005.20135.248 ПЗ 27
Изм. Лист № докум. Подпись Дата
Застосування фільтра до зображення розміром 10Х10 (Рис.2.5):
Рисунок 2.5 - Застосування фільтра для згладжуваннядо зображення 10х10
Давайте подивимося, як можна організувати фільтрацію зображення
за допомогою бібліотеки OpenCV. Будь ласка, уважно прочитайте всі
коментарі до кожного рядка цього коду (Рис.2.6).
Рисунок 2.6 - Програмна реалізація фільтрації зображення за
допомогою бібліотеки OpenCV
Лист
РТ-005.20135.248 ПЗ 28
Изм. Лист № докум. Подпись Дата
Щоб побачити результат на екрані, виконайте наступний допоміжний
код (Рис.2.7):
Рисунок 2.7 - Виведення результатів фільтрації на екран
- Перетворення зображень
Останньою, але однією з найважливіших тем, порушених нами в
цьому огляді бібліотеки OpenCV, є перетворення зображень. Ця тема
знаходить застосування в різних додатках, але окремо слід згадати завдання
аугментації даних для моделей машинного навчання. Йдеться ситуаціях, як
у нашому датасете для повноцінного навчання недостатньо даних, і ми,
доповнюючи і видозмінюючи існуючі картинки, збільшуємо початковий
датасет до потрібного розміру. Це допомагає нам серйозно збільшити
точність роботи моделі, що навчається.
Список можливих перетворень дуже великий і включає масштабування,
афінне перетворення зображень, обертання, транспонування і багато
іншого. Ми коротко розповімо лише про масштабування та обертання, але
в бібліотеці OpenСV є підтримка всіх можливих перетворень. Почнемо з
масштабування.
- Масштабування
Простіше кажучи, масштабування - це не що інше як зміна розмірів
зображення, його збільшення або зменшення. У бібліотеці OpenCV для
цього є функція resize. Ця функція, у свою чергу, має три методи:
INTER_CUBIC , INTER_LINEAR і INTER_AREA . Давайте з прикладу
конкретного коду розберемо, як усе працює (Рис.2.8).
Лист
РТ-005.20135.248 ПЗ 29
Изм. Лист № докум. Подпись Дата
Рисунок 2.8 - Масштабування зображення
Тут функції resize параметр fx визначає масштаб змін по ширині, fy
— по висоті, а параметр interpolation відповідає за сам спосіб змін (тобто
розширення або стиснення).
- Обертання
Обертання дозволяє нам переміщувати зображення навколо певної
осі на заданий кут. Перед тим, як ми навчимося обертати наші зображення
за допомогою бібліотеки OpenСV, давайте згадаємо, що існує лінійний
оператор під назвою матриця повороту , який якраз і здійснює перетворення
такого роду. Ми не вдаватимемося в математичні деталі, тому що в
бібліотеці OpenCV ця матриця обчислюється за допомогою одного виклику
функції. Ви це побачите у наступному коді (Рис.2.9):
Лист
РТ-005.20135.248 ПЗ 30
Изм. Лист № докум. Подпись Дата
Рисунок 2.9 - Програмна реалізація перевертання зображень
У функції getRotationMatrix2D 180 це кут, на який наше зображення
має бути повернене, 1 це масштабний коефіцієнт. Ця функція повертає
матрицю повороту, яка записується в змінну matrix .
Далі функція warpAffine , використовуючи обчислену на
попередньому кроці матрицю повороту, повертає наше зображення
відповідно до заданої специфікації.
2.2. Принцип роботи бібліотеки Face Recognition, опис та
дослідження
Системи розпізнавання осіб - Facial recognition technology (FRT).
Розпізнавання облич - це автоматична локалізація людської особи на
зображенні або відео і, при необхідності, ідентифікація особи людини на
основі наявних баз даних. Інтерес до цих систем дуже великий у зв'язку з
широким колом завдань, що вони вирішують.
Головний недолік технології розпізнавання осіб – це погіршення
якості розпізнавання при
- погіршення освітленості;
- зміні положення голови чи ракурсу.
Лист
РТ-005.20135.248 ПЗ 31
Изм. Лист № докум. Подпись Дата
Існує кілька підходів до створення алгоритму розпізнавання осіб.
Емпіричний підхід використовувався на початку розвитку комп'ютерного
зору. Він базується на деяких правилах, які використовує людина для
визначення особи. Наприклад, лоб зазвичай яскравіший, ніж центральна
частина особи, яка, у свою чергу, однорідна за яскравістю та кольором. Ще
однією важливою ознакою є наявність частин особи на зображенні - носа,
рота, очей. Для визначення осіб проводиться значне зменшення ділянки
зображення, де передбачається наявність особи, або будуються
перпендикулярні гістограми. Ці методи легко реалізувати, але вони
практично непридатні за наявності великої кількості сторонніх об'єктів на
фоні, кількох осіб у кадрі або зміни ракурсу.
Наступний підхід використовує інваріантні ознаки, характерні
зображення обличчя. У його основі, як і попередньому методі, лежить
емпірика, тобто спроба системи «думати» як людина. Метод виявляє
характерні частини особи, її межу, зміну форми, контрастності тощо,
об'єднує всі ці ознаки та верифікує. Даний метод може використовуватися
навіть при повороті голови, але за наявності інших осіб або неоднорідному
тлі розпізнавання стає неможливим.
Наступний алгоритм – це детектування осіб за допомогою шаблонів,
які задає розробник. Особа представляється якимось шаблоном чи
стандартом, і мета алгоритму – провести перевірку кожного сегмента
наявність цього шаблону, причому перевірка може проводитися до різних
ракурсів і масштабів. Така система потребує безліч трудомістких
обчислень.
Усі сучасні технології розпізнавання облич використовують системи,
які навчаються за допомогою тестових зображень. Для навчання
використовуються бази із зображеннями, що містять особи, та не містять
особи. Кожен фрагмент досліджуваного зображення характеризується як
Лист
РТ-005.20135.248 ПЗ 32
Изм. Лист № докум. Подпись Дата
вектор ознак, з допомогою якого класифікатори (алгоритми визначення
об'єкта у кадрі) визначають, є ця частина зображення обличчям чи ні.
Технологічно системи іноді можуть сильно відрізнятися щодо
розпізнавання осіб, але вони мають приблизно загальні принципи роботи.
Крок 1: Виявлення особи
Для початку камера виявить обличчя людини, чи вона одна або
перебуваючи в натовпі. Особа найкраще виявляється в той момент, коли
людина дивиться прямо в камеру, проте сучасні технологічні досягнення
дозволяють також виявляти обличчя і в тих ситуаціях, коли людина не
дивиться прямо в камеру (звичайно, у певних межах).
Крок 2: Аналіз особи
Потім знімається фотографія обличчя та починається його аналіз.
Більшість рішень для розпізнавання облич використовує 2D-зображення
замість об'ємних 3D-зображень, оскільки вони можуть більш просто
зіставляти 2D-фото із загальнодоступними фотографіями або
фотографіями, що є в базі даних. Кожна особа складається з помітних
орієнтирів або вузлових точок. Кожна людина має 80 вузлових точок.
Програми для розпізнавання облич аналізують вузлові точки, такі як
відстань між вашими очима або форма ваших вилиць.
Крок 3: Конвертація зображення у дані
Після цього аналіз вашої особи перетворюється на математичну
формулу. Ваші риси особи стають числовим кодом. Такий числовий код
називається відбитком особи (faceprint). Подібно до унікальної структури
відбитка великого пальця, кожна людина має свій власний відбиток
обличчя.
Крок 4: Пошук збігів
Далі код порівнюється з базою даних відбитків осіб. У цій базі даних
є фотографії з ідентифікаторами, які можна порівняти.
Лист
РТ-005.20135.248 ПЗ 33
Изм. Лист № докум. Подпись Дата
ФБР має доступ до більш ніж 641 мільйонів фотографій, включаючи
21 державну базу даних, такі як DMV. Інший приклад бази даних, до якої
багато хто має доступ, - це фотографії у Facebook. Будь-які фотографії,
позначені ім'ям людини, стають частиною бази даних Facebook.
Потім технологія визначає відповідність ваших точних даних тому,
що представлено в базі даних. Результатом цього стає ідентифікація
людини з наданням додаткової інформації (ПІБ, адреса тощо).
2.3. Дослідження методів віддаленого доступу. Принципи
віддаленого доступу та реалізація
Найдосконаліша форма віддаленого доступу дозволяє користувачам
одного комп'ютера переглядати та взаємодіяти з фактичним інтерфейсом
робочого столу іншого комп'ютера. Налаштування підтримки віддаленого
настільного ПК передбачає настроювання програм на обох вузлах
(локальний комп'ютер, що управляє з'єднанням) та клієнт / ціль (доступ до
віддаленого комп'ютера). При підключенні це програмне забезпечення
відкриває вікно на головному комп'ютері, що містить вигляд робочого
столу клієнта.
Залежно від того, як працюють дві програми та роздільну здатність
екрана на обох екранах, клієнтський комп'ютер може збільшити вікно
програми, щоб зайняти весь екран. Це корисно, тому що здається, що
віддалений комп'ютер знаходиться там в тій же кімнаті, що є ідеальною
ситуацією для всіх, хто обслуговує віддалений комп'ютер, отримує доступ
до файлів тощо. Поточні версії Microsoft Windows включають програмне
забезпечення віддаленого робочого стола, але вони доступні лише на
комп'ютерах, на яких встановлено версії операційної системи Professional,
Enterprise або Ultimate. Для Mac-версій пакет програмного забезпечення
Лист
РТ-005.20135.248 ПЗ 34
Изм. Лист № докум. Подпись Дата
Apple Remote Desktop призначений для ділових мереж і реалізується
окремо. Для Linux існують різні віддалені настільні програмні програми.
Проте, є багато сторонніх програм віддаленого доступу, які ви можете
встановити та використовувати замість вбудованих інструментів
віддаленого робочого столу. Багато хто з них добре працює в Windows,
MacOS та Linux, і навіть може використовуватися на цих платформах
(наприклад, хост Windows може керувати клієнтом Linux). Багато
віддалених настільних рішень базуються на технології віртуальних
мережевих обчислень. Пакети програмного забезпечення, що базуються на
роботі VNC у кількох операційних системах. Швидкість роботи VNC та
будь-якого іншого програмного забезпечення для віддаленого робочого
стола змінюється, іноді виконуючись настільки ж ефективно, як і на
локальному комп'ютері, але іншим часом виявляє мляву чуйність завдяки
латентності мережі.
VNC — це найпоширеніший метод віддаленого доступу до робочого
стола комп'ютера через мережу. Дані про натискання клавіш і рух миші, що
виконуються користувачем на власному комп'ютері, передаються по мережі
на віддалений комп'ютер і сприймаються ним дії з його власними
клавіатурою та мишею. Інформація з екрана віддаленого комп'ютера
відображається на екрані комп'ютера користувача. Робота з VNC через
інтернет з віддаленим комп'ютером, що знаходиться в протилежній точці
світу, для користувача виглядає так, ніби цей комп'ютер знаходиться
безпосередньо перед ним. Особливо VNC зручний при роботі з графічним
інтерфейсом – з робочим столом та програмами для робочого столу
операційних систем Windows, Linux та інших (Рис.2.10).
Лист
РТ-005.20135.248 ПЗ 35
Изм. Лист № докум. Подпись Дата
Рисунок 2.10 - Віддалений доступ з операційної системи Windows на
операційну систему Ubuntu 9.10
Для користувачів-початківців адміністрування Unix-сервера по VNC
буде набагато простіше, ніж через командний рядок по SSH або панель
управління з веб-інтерфейсом. Програми з графічним інтерфейсом, як
правило, добре структуровані та інтуїтивніші в розумінні, ніж редагування
конфігураційних файлів за інструкціями. Адміністрація сервера виглядає
майже так само, як налаштування десктопної версії операційної системи, чи
то Linux, чи Windows. Можна навіть встановити на власний комп'ютер
аналогічну версію операційної системи для тренування, і переходити до
адміністрування VDS/VPS після того, як будуть зрозумілі основні
принципи налаштування системи.
Для адміністрування власного сервера по VNC користувачеві досить
вміти працювати з графічним віконним інтерфейсом і базове ставлення до
Лист
РТ-005.20135.248 ПЗ 36
Изм. Лист № докум. Подпись Дата
основних компонентах операційної системи — файлова система, мережу,
робота сервісів (демонів).
На віддаленому комп'ютері повинна бути запущена програма-сервер
(VNC server), яка відіграє роль клавіатури, миші та монітора, та
обмінюється даними з комп'ютером користувача. Доступ до сервера VNC
може бути захищений паролем.
На комп'ютері користувача має бути запущена програма-клієнт (VNC
client, VNC viewer), яка передає на віддалений комп'ютер інформацію про
натискання на клавіші та рухи миші, отримує від нього зображення і
виводить його на екран. VNC-клієнти існують для Windows, Linux,
FreeBSD, MacOS та багатьох інших платформ. Є також VNC-клієнти для
кишенькових комп'ютерів та мобільних телефонів. При запуску VNC-
клієнта достатньо вказати DNS-ім'я або IP-адресу віддаленого комп'ютера
та пароль, якщо доступ до VNC-сервера захищений паролем.
Основний обсяг даних, що передаються по VNC, припадає на
графічну інформацію, що виводиться на екран. Для роботи потрібна
ширина пропускання каналу від 32 Кбіт/с до 2 Мбіт/с. Для комфортної
роботи в повнокольоровому режимі при роздільній здатності екрану
1024x768 швидкість каналу має бути 1-2 Мбіт/сек. При зниженні якості
графіки, при зменшенні кількості кольорів і деяких додаткових способах
оптимізації, прийнятна зручність може забезпечити швидкість 128 Кбіт/сек.
Канал займається повністю лише при оновленні великих ділянок екрану,
при друкування тексту трафік помітно менше, а решту часу канал
практично не використовується. Якщо при передачі каналом виникають
великі затримки передачі пакетів (повільні канали, супутниковий зв'язок,
Лист
РТ-005.20135.248 ПЗ 37
Изм. Лист № докум. Подпись Дата
великі відстані), це викликає погіршення часу реакції на натискання клавіш
і рух миші, що значно знижує комфортність роботи.
2.4. Аналіз додаткових бібліотек на мові Python
В даному розділі ми розглянемо декілька бібліотек які допоможуть
нам в майбутньому для написання програмного коду.
- Модуль pickle
Модуль pickle надає функції та класи для серіалізації та
десеріалізації об'єктів. У програмуванні під серіалізацією розуміють
перетворення будь-яких даних на набір байтів, який потім зазвичай
зберігають у файл або передають через мережу. Десеріалізація - це
відновлення об'єктів із їхніх байтових уявлень.
Часто серіалізація використовується для збереження даних
користувача між різними сесіями роботи програми, зазвичай ігри.
Простіший приклад - ви працюєте в інтерактивному режимі та створили
список або словник, який захочете використати наступного разу. Для
цього за допомогою функції dump() модуля pickle ви зберігаєте об'єкт у
файл, а за допомогою load() відновлюєте наступного разу. (Рис.2.11)
Лист
РТ-005.20135.248 ПЗ 38
Изм. Лист № докум. Подпись Дата
Рисунок 2.11 - Зберігання і відновлення об'єкта словник в
програмному коді
У Python більшість об'єктів можна серіалізувати. Проте чи все. Крім
того, слід бути обережними під час серіалізації об'єктів, створених на основі
власних класів. Серіалізується лише об'єкт, але не клас. За десеріалізації
клас імпортується. Тому не слід визначати класи в тому ж файлі, де
створюватимуться та серіалізуватимуться об'єкти.
Крім методів dump() та load() є аналогічні dumps() та loads(), які
працюють без файлів. Набір байтів використовується у програмі.(Рис.2.12)
Лист
РТ-005.20135.248 ПЗ 39
Изм. Лист № докум. Подпись Дата
Рисунок 2.12 - Приклад використання набору байтів в програмному коді
Користуватися pickle краще тільки в рамках програми python. При
обміні даними між різними мовами програмування зазвичай
використовують модуль JSON. Також pickle не вирішує питання безпеки
даних. Тому не слід десеріалізувати дані із невідомих джерел. Раніше версії
Python можуть не розуміти протокол серіалізації пізніших версій. Для
сумісності у функції можна надсилати номер протоколу. (Рис.2.13)
Рисунок 2.13 - Приклад підтягування протоколу якщо версія Python стара
Лист
РТ-005.20135.248 ПЗ 40
Изм. Лист № докум. Подпись Дата
- Модуль Imutils
Imutils - це пакет, заснований на OpenCV для досягнення більш
простих виклику інтерфейсу OpenCV, який може легко реалізувати серію
операцій, таких як переклад зображення, обертання, масштабування і
скелет.
Метод встановлення:
Прописати в командному рядку наступну команду pip install imutils
після чого дочекатися закінчення інсталяції. Примітка - перед
встановленням ви повинні підтвердити, що NUMPY, SCIPY, MATPLOTLIB
та OPENCV встановлені.
Сама бібліотека виступає як під бібліотека OPENCV і містить в собі
всі ж ті самі функції і параметри. Просто OpenCV це обширна бібліотка із
набором додаткових бібліотек які знаходяться всередині неї для роботи із
розпізнаванням образів та лиця а Imutils це окрема бібліотека для роботи
саме із зображеннями.
- Модуль argparse
Модуль argparse дозволяє легко писати зручні інтерфейси командного
рядка. Програма визначає, які аргументи їй потрібні, а argparse дізнається,
як їх розібрати з виведення функції sys.argv. Модуль argparse також
автоматично генерує повідомлення довідки та використання, а також видає
помилки, коли користувачі передають програмі неприпустимі аргументи.
Зверніть увагу, що є ще два модулі, які виконують ту ж саму задачу,
а саме це модуль getopt - еквівалент функції getopt() з мови C і застарілий
модуль optparse. Зверніть увагу, що модуль argparse заснований на optparse
і тому дуже схожий з точки зору використання.
Лист
РТ-005.20135.248 ПЗ 41
Изм. Лист № докум. Подпись Дата
2.5. Висновки
В даному розділі ми досліджували різні споміжні бібліотеки які нам
будуть потрібні в написанні програмного коду. Ми вияснили що бібліотека
OpenCV доступна багатьма мовами і часто використовується разом із
бібліотеками NumPy, SciPy та Matplotlib, як ми могли помітити у наведених
прикладах. Деякі функції бібліотеки взяті з Matlab і підтримують векторні
обчислення, що підвищує обчислювальну ефективність.
Крім того, OpenCV є однією з найкращих бібліотек для
комп'ютерного зору. Також ми розібрали додаткові модулі так як:
- face_recognition
- imutils
- pickle
- argparse
Всі вони взаємодіють між собою і дають можливість краще розвиватися в
сфері комп'ютерного зору, написанні програм і вирішенні проблем
пов'язаних з програмною частиною.
Лист
РТ-005.20135.248 ПЗ 42
Изм. Лист № докум. Подпись Дата
РОЗДІЛ 3. НАПИСАННЯ ТА РЕАЛІЗАЦІЯ ПРОГРАМНОГО КОДУ
КОМП'ЮТЕРНОГО ЗОРУ В СЕРЕДЕНІ ОС RASPBERRY PI
В даному розділі буде представлені наробки програмного коду по
розпізнаванню обличчя а також скріншоти роботи даного коду.
3.1. Програмна реалізація системи управління RASPBERRY PI
Для початку роботи із самим кодом або написанням програми нам
потрібно налаштувати середовище в якому ми будемо працювати. Першим
ділом ми скачуємо і встановлюємо образ операційної системи RaspberryPi.
Саме на цій операційній системі ми і будемо проводити всі операції.
Крок 1. Для встановлення NOOBS на чисту нову або відформатовану
карту microSD Вам необхідно завантажити NOOBS з сайту Raspberry Pi.
Для цього вставте вашу картку microSD в кардрідер або роз'єм для карт
пам'яті в ноутбуці за допомогою спеціального адаптера для карт пам'яті
"microSD - повнорозмірний SD", потім відкрийте браузер введіть в
адресному рядку: raspberrypi.org/downloads/noobs. На сторінці знайдіть і
клікніть по "Download ZIP".
Лист
РТ-005.20135.248 ПЗ 43
Изм. Лист № докум. Подпись Дата
Рисунок 3.1 - Скачування файлів операційної системи із офіційного сайту
Крок 2. Форматування карти пам'яті microSD.
Для коректного форматування карти пам'яті для NOOBS,
користувачам операційних систем Windows та mac OS необхідно
завантажити інструмент SD Card Association SD Memory Card Formatter за
посиланням rpf.io/sdcard, потім клацнути двічі по завантаженому файлу для
встановлення. Для користувачів Linux - необхідно використовувати
інструмент управління дисками, видалити всі існуючі на карті розділи,
створити один розділ і відформатувати його в VFAT.
Вставте картку microSD у пристрій читання карт, якщо ви ще цього
не зробили і відкрийте вбудований інструмент для форматування дисків
(SD Card Formatter). Знайдіть свою карту microSD у списку «Select card
(Виберіть карту)» (якщо Ви переформатували карту microSD, яка вже
використовувалася з Raspberry Pi, то Ви побачите більше одного запису –
просто виберіть будь-яку з них). Переконайтеся, що ви вибрали потрібний
диск, переглянувши розділ «Інформація про карту»: у ньому мають бути
вказані розмір та тип вставленої картки microSD. Якщо інформація
неправильна, виберіть інший запис зі списку «Виберіть картку» та перевірте
ще раз (Рис. 3.2).
Лист
РТ-005.20135.248 ПЗ 44
Изм. Лист № докум. Подпись Дата
Рисунок 3.2 - Форматування SD-Карти і встановлення образу на карту
Крок 3. Встановлення NOOBS.
Процес установки NOOBS дуже простий. Для початку знайдіть
завантажений файл, який повинен бути в папці "Завантаження"
(Downloads). Цей файл є архів, тобто. окремий файл, що містить копії
безлічі окремих файлів, які були стиснуті для економії місця та
прискорення та спрощення їх завантаження. Двічі клацніть архів, щоб
відкрити його, потім натисніть CTRL + A на клавіатурі (або ⌘ + A в
macOS), щоб вибрати всі файли в архіві. Клацніть один із файлів
лівою кнопкою миші (вказівним пальцем правої руки) потім не
відпускаючи перетягніть їх на іконку вашого знімного диска - карти
Лист
РТ-005.20135.248 ПЗ 45
Изм. Лист № докум. Подпись Дата
пам'яті (з міткою NOOBS створеної в попередньому кроці), відпустіть
кнопку і дозвольте процесу копіювання перенести всі необхідні файли
та папки на картку пам'яті microSD. Це може тривати кілька хвилин
(Рис.3.3).
Рисунок 3.3 - Встановлення NOOBS
Коли файли будуть успішно скопійовані, вийміть картку microSD з
комп'ютера та вставте її в Raspberry Pi. Тепер при черговому включенні
Raspberry Pi, NOOBS завантажується та попросить Вас вибрати операційну
систему (Рис.3.4).
Рисунок 3.4 - Вибір операційної системи
Лист
РТ-005.20135.248 ПЗ 46
Изм. Лист № докум. Подпись Дата
Крок 4. Встановлення ОС.
На цій картинці Ви бачите меню NOOBS - системи, яка дозволяє
вибрати операційну систему для запуску Raspberry Pi. У стандартну
комплектацію NOOBS входять дві операційні системи: Raspbian - версія
операційної системи Debian Linux спеціально розроблена для Raspberry Pi;
та LibreELEC – версія програмного забезпечення Kodi Entertainment Center.
Якщо Raspberry Pi підключено до мережі Інтернет через дротове з'єднання,
або за допомогою бездротового з'єднання «Мережі Wi-Fi / Wi-Fi
networks(w)» на верхній панелі значків, Ви також можете завантажити та
встановити інші операційні системи.
Щоб розпочати встановлення операційної системи, за допомогою
миші поставте хрестик у полі зліва від Raspbian Full: наведіть курсор на біле
поле та клацніть один раз лівою кнопкою миші. Коли ви це зробите, ви
побачите, що піктограма меню «Встановити / Install(i)» більше не
відображається сірим кольором — так система дозволяє зрозуміти, що
вибрана ОС готова до установки.
Натисніть кнопку «Встановити / Install(i)» лівою клавішею миші і Ви
побачите попереджувальне повідомлення, що операційна система, що
Лист
РТ-005.20135.248 ПЗ 47
Изм. Лист № докум. Подпись Дата
встановлюється, зітре всі дані на карті пам'яті за винятком самої системи
NOOBS. Натисніть "Yes" і розпочнеться процес встановлення (Рис.3.5).
Рисунок 3.5 - Процес встановлення операційної системи
Процес установки займає від 10 до 30 хвилин, залежно від швидкості
роботи вибраної Вами карти пам'яті, тому рекомендується використовувати
карти пам'яті 10-го класу швидкості, що крім установки ОС дозволить з
вищою швидкістю працювати вашому Raspberry Pi надалі.
Коли операційна система встановиться, побачите, що прогрес-бар
заповнить відповідне поле на 100% і Вам буде показано невелике слайд-
шоу з описом основних функцій та переваг операційної системи Raspbian.
Після вдалого встановлення операційної системи в нас є середовище
для того щоб почати працювати з самими бібліотеками і програмним кодом.
Але спочатку ми повинні їх також інсталювати.
Крок 1. Вільне місце.
Лист
РТ-005.20135.248 ПЗ 48
Изм. Лист № докум. Подпись Дата
OpenCV та різні допоміжні пакети в сумі займають чимало місця.
Рекомендовано використовувати SD-карту розміром не менше 16 Гб.
Перше, що потрібно зробити перед встановленням OpenCV -
розширити файлову систему на весь обсяг SD-карти. Робиться це за
допомогою меню налаштування Raspbian. Заходимо в термінал та вводимо
команду:
$ sudo raspi-config
Відкриється меню, в якому потрібно вибрати найвищий пункт
(Рис.3.6)
Рисунок 3.6 - Звільняємо місце для бібліотеки OpenCV
Тиснемо Enter, а потім кнопку <Finish>. Після цього перезапускаємо
систему командою: $ sudo reboot
Якщо у вас SD-карта розміром всього 8 Гб, можна видалити щось
зайве, наприклад пакет wolfram-engine. Виконуємо наступну команду - $
Лист
РТ-005.20135.248 ПЗ 49
Изм. Лист № докум. Подпись Дата
sudo apt-get purge wolfram-engine Ця операція звільнить додаткові
700 Мб місця.
Крок 2. Встановлення залежностей.
Для повноцінної роботи з OpenCV нам потрібно оновити існуючі
пакети та встановити низку нових. Почнемо з поновлення.
$ sudo apt-get update
$ sudo apt-get upgrade
Залежно від швидкості інтернету дані операції займуть близько 5-10
хвилин. Далі встановлюємо в систему cmake та ще кілька корисних штук:
$ sudo apt-get install build-essential cmake pkg-config
Далі пакети для роботи з відомими форматами зображень:
$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
Пакети для роботи з відео:
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
Пакети для створення найпростіших екранних форм. Це все також
потім знадобиться.
$ sudo apt-get install libgtk2.0-dev
Спеціальні прискорені операції над матрицями - $ sudo apt-get install
libatlas-base-dev gfortran
Заголовні файли мови python версій 2.7 та 3
Лист
РТ-005.20135.248 ПЗ 50
Изм. Лист № докум. Подпись Дата
$ sudo apt-get install python2.7-dev python3-dev
Крок 3. Завантаження OpenCV із репозиторію.
Спочатку скачаємо архів із самим OpenCV. Для цього перейдемо до
папки /home/pi/Downloads: $ cd ~/Downloads
Завантажимо архів за допомогою wget і розпакуємо unzip-ом:
$wget-Oopencv.zip
https://github.com/opencv/opencv/archive/master.zip
$ unzip opencv.zip
Слідом завантажуємо пакет з додатковою всячиною - opencv_contrib.
$wget-Oopencv_contrib.zip
https://github.com/opencv/opencv_contrib/archive/master.zip
$ unzip opencv_contrib.zip
Крок 4. Віртуальне оточення.
Перед подальшим встановленням OpenCV, ми трохи наведемо
порядок. Створимо віртуальне оточення, яке убезпечить наші подальші
експерименти від основної частини операційної системи. Це корисно, якщо
потрібно видалити поточну версію opencv і встановити нову.
Почнемо з установки менеджера пакетів pip: $ wget
https://bootstrap.pypa.io/get-pip.py $ sudo python get-pip.py
Потім встановимо менеджер віртуального оточення: $ sudo pip
install virtualenv virtualenvwrapper $ sudo rm -rf ~/.cache/pip
Лист
РТ-005.20135.248 ПЗ 51
Изм. Лист № докум. Подпись Дата
Додамо пару рядків у профіль користувача, який зберігається у файлі
~/.profile: $ echo -e "\n# virtualenv and virtualenvwrapper" >>
~/.profile
$ echo "export WORKON_HOME=$HOME/.virtualenvs" >>
~/.profile
$ echo "source /usr/local/bin/virtualenvwrapper.sh" >>
~/.profile
Тепер потрібно зробити наступні чотири кроки:
- закрити усі вікна терміналів
- розлогитися
- знову залогінитись
- відкрити термінал та ввести команду: $ source ~/.profile
Далі створюємо віртуальне оточення з ім'ям cv: $ mkvirtualenv cv
-p python3
Щоб перевірити правильність установки віртуального оточення,
перезавантажимо Raspberry Pi: $ sudo reboot
Відкриємо термінал і зайдемо в оточення: $ source ~/.profile $
workon cv
Индикатором того, что мы находимся в виртуальном окружении
будет префикс (cv) в начале командной строки (Рис.3.7).
Лист
РТ-005.20135.248 ПЗ 52
Изм. Лист № докум. Подпись Дата
Рисунок 3.7 - Налаштовуємо оточення бібліотеки OpenCV
Крок 5. Компіляція та встановлення OpenCV.
Перебуваючи в раніше створеному віртуальному оточенні, зайдемо
до папки з вихідними кодами OpenCV та виконаємо команди (Рис.3.8):
Рисунок 3.8 - Початок компіляції та встановлення OpenCV
Лист
РТ-005.20135.248 ПЗ 53
Изм. Лист № докум. Подпись Дата
Наприкінці процедури з'явиться список компонентів OpenCV, які
готові до встановлення (Рис.3.10).
Рисунок 3.10 - Список компонентів бібліотеки OpenCV готові до
встановлення
Червоним виділено секцію, присвячену python. Ну а тепер
найцікавіше — збирання бінарників. Не виходячи з поточної папки,
запускаємо команду make: $ make -j4
j4 означає, що ми будемо збирати пакет, використовуючи всі 4 ядра
Raspberry Pi. Це сильно прискорить процедуру, але навіть за таких умов
складання займе близько півтори години. Складання має завершитися
приблизно таким ось звітом (Рис.3.11).
Лист
РТ-005.20135.248 ПЗ 54
Изм. Лист № докум. Подпись Дата
Рисунок 3.11 - Звіт завершення встановлення бібліотеки
Крок 6. Завершення установки.
Після установки, в робочій папці python з'явиться файл
cv2.cpython-34m.so, який потрібно перейменувати на щось більш
милозвучне: $ cd /usr/local/lib/python3.4/site-packages/ $ sudo
mv cv2.cpython-34m.so cv2.so
Щоб ми могли користуватися OpenCV, перебуваючи у віртуальному
оточенні, зробимо там посилання на cv2.so: $ cd
~/.virtualenvs/cv/lib/python3.4/site-packages/ $ ln -s
/usr/local/lib/python3.4/site-packages/cv2.so cv2.so
Крок 7. Перевірка.
Лист
РТ-005.20135.248 ПЗ 55
Изм. Лист № докум. Подпись Дата
Щоб перевірити правильність установки, зайдемо у віртуальне
оточення, запустимо інтерпретатор python і спробуємо імпортувати модуль
cv2 (Рис.3.12):
Рисунок 3.12 - імпортування модулю OpenCV і перевірка його
наявності
Ось і все – OpenCV встановлено успішно! У наступних уроках ми
розбиратимемося з обробкою зображення з відеокамери.
3.2. Керуюча програма, дослідження та опис
Для реалізації поставлених цілей дипломного проекту потрібно було
ознайомитись з бібліотеками та інформацією щодо мови програмування
Python. Дана мова програмування є кросплатформною і максимально
підходить для написання програмного коду по розпізнаванню лиць.
Лист
РТ-005.20135.248 ПЗ 56
Изм. Лист № докум. Подпись Дата
Алгоритм дій нашого програмного коду має декілька кроків які
слідують одне за одним і без виконання одного із кроків програма буде
працювати некоректно а саме:
- Збір даних в датасеті
- Кодування отриманих даних.
- Ідентифікування зображення отриманого на камері з існуючим.
Для початку розглянемо блок-схему першого програмного коду який
саме і займається збором даних (Рис. 3.13)
Лист
РТ-005.20135.248 ПЗ 57
Изм. Лист № докум. Подпись Дата
Рисунок 3.13 - Блок-схема алгоритму дій при формуванні датасету.
Після того як ми запустили програмний код нам потрібно буде
зробити декілька фото нашого обличчя з різних ракурсів для кращого
розпізнавання (10 фото) за допомогою клавіші Space (Пробіл).
Наступним кроком буде кодування зображень або простіше говорячи
потрібно навчити наш код читати та розпізнавати зображення. Розглянемо
наступну блок-схему алгоритму дій другого програмного коду (Рис.314).
Лист
РТ-005.20135.248 ПЗ 58
Изм. Лист № докум. Подпись Дата
Рисунок 3.14 - Кодування отриманих даних та зберігання їх у файлі
“encodings.pickle”
Коли ми успішно виконали перший крок і зробили фото тим самим
добавивши себе до бази даних а потім закодувавши свої дані як це показано
Лист
РТ-005.20135.248 ПЗ 59
Изм. Лист № докум. Подпись Дата
в блок схемі на Рис.3.14 ми плавно переходимо до реалізації самого
головного коду - розпізнавання обличчя.
Розглянемо блок-схему алгоритму основного коду (Рис.3.15)
Рисунок 3.15 - Блок-схема алгоритму дій при виконанні коду по
розпізнаванню обличчя.
Лист
РТ-005.20135.248 ПЗ 60
Изм. Лист № докум. Подпись Дата
Після того як ми запустимо основний код який на пряму пов'язаний з
двома попередніми частинами коду ми отримаємо бажаний результат а саме
повне співпадіння і впізнання вашого обличчя. Тільки провівши всі три
етапи збір даних, кодування і розпізнавання можна отримати бажаний
результат.
3.3. Експериментальні дослідження. Аналіз отриманих рішень
Головною частиною дипломного проекту було не просто збір
інформації та матеріалів і навіть не дослідження даної теми а саме
реалізація і демонстрація на практиці працездатності даного механізму і
тим самим підтвердити теоретичні знання та знайдений і досліджений
матеріал.
Для початку запустимо проект “1_headshots.py” для збору даних а
саме наших фото за допомогою яких нас в майбутньому і буде розпізнавати
програма (Рис. 3.16.)
Лист
РТ-005.20135.248 ПЗ 61
Изм. Лист № докум. Подпись Дата
Рисунок 3.16 - Збір даних і записування їх в Dataset.
Як показано на попередньому зображенню при нажиманні на клавішу
“пробіл” робилось фото яке зберігалось в папку з нашим іменем.
Коли збір даних пройшов успішно можна приступати до кодування
даних для цього запускаємо файл “2_train_model.py” (Рис.3.17)
Лист
РТ-005.20135.248 ПЗ 62
Изм. Лист № докум. Подпись Дата
Рисунок 3.17 - Процес навчання - кодування даних.
Як показано на зображенню після запуску даного програмного коду
почався процес кодування кожного зображення.
Коли дані успішно створенні та закодовані можна запускати програму
“8_facial_req_for_move_face.py” яка і почне процес розпізнавання обличчя
на базі щойно збережених або вже існуючих даних (Рис.3.18).
Лист
РТ-005.20135.248 ПЗ 63
Изм. Лист № докум. Подпись Дата
Рисунок 3.18 - Результат роботи програми по розпізнаванню
обличчя
Коли ми успішно протестували програмний код і він працює ми
переходимо до другого етапу. В нашому коді присутні функції а також
бібліотеки по обробці серводвигунів які повинні показувати кут наклону
нашої голови давайте підключимо серводвигуни і знову запустим програму
(Рис.3.19)
Лист
РТ-005.20135.248 ПЗ 64
Изм. Лист № докум. Подпись Дата
Рисунок 3.19 - відпрацювання серводвигунів в програмному коді.
Якщо звернути увагу на консоль то можна побачити кути наклону
нашої голови про що свідчить що серводвигуни були приєднані правильно
і код працює коректно.
Наступним нашим кроком, після того як ми зрозуміли що наш код
працює правильно і всі наші дослідження виявились точними, буде
Лист
РТ-005.20135.248 ПЗ 65
Изм. Лист № докум. Подпись Дата
монтування нашої системи Raspberry PI а також серводвигунів та всіх
Лист
РТ-005.20135.248 ПЗ 66
Изм. Лист № докум. Подпись Дата
комплектуючих в голову манекена (Рис.3.20).
Лист
РТ-005.20135.248 ПЗ 67
Изм. Лист № докум. Подпись Дата
Рисунок 3.20 - Монтування всіх приладів в голову маникену.
Коли всі необхідні прилади були вмонтовані та під'єднані всі
необхідні кабеля спробуємо ще раз запустити код і подивитись на
відпрацювання кутів вліво, вправо та знову в центр (Рис.3.21, Рис.3.22,
Рис.3.23).
Лист
РТ-005.20135.248 ПЗ 68
Изм. Лист № докум. Подпись Дата
Рисунок 3.21 - Відпрацювання серводвигунів вліво.
Рисунок 3.22 - Відпрацювання серводвигунів в право.
Лист
РТ-005.20135.248 ПЗ 69
Изм. Лист № докум. Подпись Дата
Рисунок 3.23 - Повернення серводвигунів у вихідне положення.
3.4. Висновки
В даному розділі були продемонстровані здобути практичні знання по
темі комп'ютерний зір. Були реалізовані програми по збору необхідних
даних, комп'ютерному навчанню щодо обробки цих даних а також самої
реалізації розпізнавання обличчя на основі зібраних даних. Також
створений макет голови куди всі необхідні прилади були вмонтовані і
продемонстровані відпрацювання серводвигунів.
Лист
РТ-005.20135.248 ПЗ 70
Изм. Лист № докум. Подпись Дата
ВИСНОВОК
В даній випускній роботі проведена розробка системи розпізнавання
обличчя на платформі Raspberry PI (програмна частина).
В першому розділі було розглянуто основні теоретичні відомості
щодо комп'ютерного зору його основні характеристики, завдання та сфери
використання. Дослідження нейронних мереж методи їх побудови та
принцип дії
В другому розділі було проведено дослідження всіх допоміжних
бібліотек а також детальне вивчення мови програмування Python. Було
досліджено ряд наступних бібліотек:
- Face Recognition
- OpenCV
- Pickle
- Argparse
- Imutils
В третьому розділі були представленні практичні наробки та
реалізація програмного коду по збору даних, кодуванню отриманих даних,
розпізнаванню обличь, образів, предметів, створенню макету,
налаштуванню системи Raspberry Pi, встановлення бібліотеки OpenCV та
Face Recognition.
Під час виконання магістерської дипломної роботи було здобуто ряд
практичних та теоретичних знань, проведено безліч досліджень та
навчання.
Лист
РТ-005.20135.248 ПЗ 71
Изм. Лист № докум. Подпись Дата
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
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
Лист
РТ-005.20135.248 ПЗ 72
Изм. Лист № докум. Подпись Дата