Як навчити комп'ютер розуміти, що зображено назображенні або фотографії? Нам це здається просто, але для комп'ютера це всього лише матриця, що складається з нулів і одиниць, з якої потрібно витягти важливу інформацію.
Що таке комп'ютерний зір? Це здатність комп'ютера «бачити»
Зір - це важливе джерело інформації длялюдини, за допомогою нього ми отримуємо, за різними даними, від 70 до 90% всієї інформації. І, природно, якщо ми хочемо створити розумну машину, нам необхідно реалізувати ті ж навички і в комп'ютері.
Завдання комп'ютерного зору може бутисформульована досить нечітко. Що таке «бачити»? Це розуміти, що де розташовано, просто дивлячись. В цьому і укладені відмінності комп'ютерного зору і зору людини. Зір для нас - це джерело знань про світ, а також джерело метричної інформації - тобто здатність розуміти відстані і розміри.
Семантичне ядро зображення
Дивлячись на зображення, ми можемо охарактеризувати його по ряду ознак, так би мовити, витягти семантичну інформацію.
Наприклад, дивлячись на цю фотографію, ми можемосказати, що це поза приміщенням. Що це місто, вуличний рух. Що тут є автомобілі. По конфігурації будівлі і по ієрогліфів ми можемо здогадатися, що це Південно-Східна Азія. За портрету Мао Цзедуна розуміємо, що це Пекін, а якщо хто бачив відеотрансляції або сам там побував, зможе здогадатися, що це знаменита площа Тяньаньмень.
Що ми можемо ще сказати про зображення, розглядаючиїї? Чи можемо виділити об'єкти на зображенні, сказати, ось там люди, тут ближче - огорожа. Ось парасольки, ось будівля, ось плакати. Це приклади класів дуже важливих об'єктів, пошуком яких займаються на даний момент.
Ще ми можемо витягти деякі ознаки або атрибути об'єктів. Наприклад, тут ми можемо визначити, що це не портрет якогось рядового китайця, а саме Мао Цзедуна.
По автомобілю можна визначити, що церухомий об'єкт, і він жорсткий, тобто під час руху не деформується. Про прапори можна сказати, що це об'єкти, вони також рухаються, але вони не жорсткі, постійно деформуються. А також в сцені присутній вітер, це можна визначити по розвивається прапору, і навіть можна визначити напрям вітру, наприклад, він дме зліва направо.
Значення відстаней і довжин в комп'ютерному зорі
Дуже важливою є метрична інформація в науці про комп'ютерний зір. Це всілякі відстані.Наприклад, для марсохода це особливо важливо, тому що команди з Землі йдуть близько 20 хвилин і відповідь стільки ж. Відповідно, зв'язок туди-назад - 40 хвилин. І якщо ми будемо складати план руху по командам Землі, то потрібно це враховувати.
Вдало технології комп'ютерного зоруінтегровані в відеоіграх. За відео можна побудувати тривимірні моделі об'єктів, людей, а по призначених для користувача фотографій можна відновити тривимірні моделі міст. А потім гуляти по ним.
комп'ютерне зір - це досить широка область. Вона тісно переплітається з різними іншими науками. Частково комп'ютерний зір захоплює область обробки зображень і іноді виділяє область машинного зору, історично так склалося.
Аналіз, розпізнавання образів - шлях до створення вищого розуму
Розберемо ці поняття окремо.
Обробка зображень - це область алгоритмів, в яких на вході і на виході - зображення, і ми вже з ним щось робимо.
Аналіз зображення - це область комп'ютерного зору, яке фокусується на роботі з двовимірним зображенням і робить з цього висновки.
Розпізнавання образів - це абстрактнаматематична дисципліна, яка розпізнає дані у вигляді векторів. Тобто на вході - вектор і нам щось з ним потрібно робити. Звідки цей вектор, нам не так уже й важливо знати.
Комп'ютерне зір - це спочатку буловідновлення структури з двомірних зображень. Зараз ця область стала ширшою і її можна трактувати взагалі як прийняття рішень про фізичні об'єкти, грунтуючись на зображенні. Тобто це завдання штучного інтелекту.
Паралельно з комп'ютерним зором зовсім в іншій області, в геодезії, розвивалася фотограмметрія - це вимірювання відстаней між об'єктами по двомірним зображенням.
Роботи можуть «бачити»
І останнє - це машинне зір. Під машинним зором мається на увазі зір роботів. Тобто рішення деяких виробничих завдань. Можна сказати, що комп'ютерний зір - це одна велика наука. Вона об'єднує в собі деякі інші науки частково. А коли комп'ютерний зір отримує якусь конкретну програму, то воно перетворюється в машинний зір.
Область комп'ютерного зору має масупрактичних застосувань. Воно пов'язане з автоматизацією виробництва. На підприємствах ефективніше стає замінювати ручна праця машинним. Машина не втомлюється, не спить, у неї ненормований робочий графік, вона готова працювати 365 днів на рік. А значить, використовуючи машинна праця, ми можемо отримати гарантований результат в певний час, і це досить цікаво. Всі завдання для систем комп'ютерного зору мають наочне застосування. І немає нічого кращого, ніж побачити результат відразу по картинці, тільки на стадії розрахунків.
На порозі в світ штучного інтелекту
Плюс області - це складно!Істотна частина мозку відповідає за зір і вважається, що якщо навчити комп'ютер «бачити», тобто в повній мірі застосувати комп'ютерний зір, то це одна з повних задач штучного інтелекту. Якщо ми зможемо вирішити проблему на рівні людини, швидше за все, одночасно ми вирішимо завдання ІІ. Що дуже добре! Або не дуже добре, якщо дивитися «Термінатор 2».
Чому зір - це складно? Тому що зображення одних і тих же об'єктів може сильно відрізнятися в залежності від зовнішніх факторів. Залежно від точок спостереження об'єкти виглядають по-різному.
Наприклад, одна і та ж фігура, яку вилучили з різнихракурсів. І що найцікавіше, у фігури може бути одне око, два очі або півтора. А в залежності від контексту (якщо це фото людини в футболці з намальованими очима), то очей може бути і більше двох.
Комп'ютер ще не розуміє, але вже «бачить»
Ще один фактор, який створює складності - цеосвітлення. Одна і та ж сцена з різним освітленням буде виглядати по-різному. Розмір об'єктів може варіюватися. Причому об'єктів будь-яких класів. Ну як можна сказати про людину, що його зріст 2 метри? Ніяк. Зростання людини може становити і 2.3 м, і 80 см. Як і об'єктів інших типів, проте це об'єкти одного і того ж класу.
Особливо живі об'єкти зазнають самірізноманітні деформації. Волосся людей, спортсмени, тварини. Подивіться знімки біжать коней, визначити, що відбувається з їх гривою і хвостом просто неможливо. А перекриття об'єктів на зображенні? Якщо підсунути таку картинку комп'ютера, то навіть найпотужніша машина затрудняється видати правильне рішення.
Наступний вид - це маскування.Деякі об'єкти, тварини маскуються під навколишнє середовище, причому досить вміло. І плями такі ж і забарвлення. Але тим не менше ми їх бачимо, хоча не завжди здалеку.
Ще одна проблема - це рух. Об'єкти в русі зазнають неймовірні деформації.
Багато об'єктів дуже мінливі. Ось, наприклад, на двох фото нижче об'єкти типу "крісло".
І на цьому можна сидіти.Але навчити машину, що такі різні речі за формою, кольором, матеріалом все є об'єктом "крісло" - дуже складно. В цьому і полягає завдання. Інтегрувати методи комп'ютерного зору - це навчити машину розуміти, аналізувати, припускати.
Інтеграція комп'ютерного зору в різні платформи
У маси комп'ютерне зір почав проникати щев 2001 році, коли створили перші детектори осіб. Зробили це два учасника: Viola, Jones. Це був перший швидкий і досить надійний алгоритм, який продемонстрував міць методів машинного навчання.
Зараз у комп'ютерного зору є досить нове практичне застосування - розпізнавання людини по обличчю.
Але розпізнавати людину, як показують вфільмах - в довільних ракурсах, з різними умовами освітлення - неможливо. Але вирішити задачу, один це або різні люди з різним освітленням або в різній позі, схожі, як на фотографії в паспорті, можна з високим ступенем впевненості.
Вимоги до паспортних фотографій багато в чому обумовлені особливістю алгоритмів розпізнавання по обличчю.
Наприклад, якщо у вас є біометричний паспорт, то в деяких сучасних аеропортах ви можете скористатися автоматичною системою паспортного контролю.
Невирішена задача комп'ютерного зору - це здатність розпізнавати довільний текст
Можливо, хтось користувався системоюрозпізнавання тексту. Одна з таких - це Fine Reader, дуже популярна в Рунеті система. Є багато форм, де потрібно заповнювати дані, вони прекрасно скануються, інформація розпізнається системою дуже добре. А ось з довільним текстом на зображенні справа йде набагато гірше. Це завдання поки залишається невирішеною.
Ігри за участю комп'ютерного зору, захоплення руху
Окрема велика область - це створеннятривимірних моделей і захоплення руху (який досить успішно реалізований в комп'ютерних іграх). Перша програма, комп'ютерний зір використовує, - система взаємодії з комп'ютером за допомогою жестів. При її створенні було багато чого відкрито.
Сам алгоритм влаштований досить просто, але для йогонастройки потрібно було створити генератор штучних зображень людей, щоб отримати мільйон картинок. Суперкомп'ютер з їх допомогою підібрав параметри алгоритму, за якими він тепер працює найкращим чином.
Ось так мільйон зображень і тиждень рахунковогочасу суперкомп'ютера дозволили створити алгоритм, який споживає 12% потужності одного процесора і дозволяє сприймати позу людини в реальному часі. Це система Microsoft Kinect (2010 рік).
Пошук зображень за змістом дозволяє завантажувати фотографію в систему, і за результатами вона видасть всі знімки з таким же змістом і зроблені з того ж ракурсу.
Приклади комп'ютерного зору: тривимірні і двомірні карти зараз робляться з його допомогою. Карти для навігаторів автомобілів регулярно оновлюються за даними з відеореєстраторів.
Існує база з мільярдами фотографій згеометкамі. Завантажуючи знімок в цю базу, можна визначити, де він був зроблений і навіть з якого ракурсу. Природно, за умови, що місце досить популярне, що свого часу там побували туристи і зробили ряд фотографій місцевості.
роботи всюди
Робототехніка в нинішній час всюди, без неїніяк. Зараз існують автомобілі, в яких є спеціальні камери, що розпізнають пішоходів і дорожні знаки, щоб передавати команди водієві (така в деякому сенсі комп'ютерна програма для зору, яка допомагає автолюбителю). І є повністю автоматизовані роботи-автомобілі, але вони не можуть покладатися тільки на систему відеокамер без використання великої кількості додаткової інформації.
Сучасний фотоапарат - це аналог камери-обскура
Поговоримо про цифрове зображення.Сучасні цифрові камери влаштовані за принципом камери-обскури. Тільки замість отвори, через яке проникає промінь світла і проектує на задній стінці камери контур предмета, у нас є спеціальна оптична система під назвою об'єктив. Завданням її є зібрати великий пучок світла і перетворити його таким чином, щоб всі промені проходили через одну віртуальну точку з метою отримати проекцію і сформувати зображення на плівці або матриці.
Сучасні цифрові фотоапарати (матриця)складаються з окремих елементів - пікселів. Кожен піксель дозволяє вимірювати енергію світла, який падає на цей піксель сумарно, і на виході видавати одне число. Тому в цифровій камері ми отримуємо взамін відображення набір вимірів яскравості світла, що потрапив в окремий піксель - комп'ютерні поля зору. Тому при збільшенні зображення ми бачимо не плавні лінії і чіткі контури, а сітку з пофарбованих у різні тони квадратиків - пікселів.
Нижче ви бачите перше цифрове зображення в світі.
Але що на цьому зображенні відсутній? Колір. А що таке колір?
Психологічне сприйняття кольору
Колір - це те, що ми бачимо.Колір об'єкта, одного і того ж предмета для людини і кішки буде різним. Так як у нас (у людей) і у тварин оптична система - зір, відрізняється. Тому колір - це психологічна властивість нашого зору, що виникає при спостереженні об'єктів і світла. А не фізичне властивість об'єкта і світла. Колір - це результат взаємодії компонентів світла, сцени і нашої зорової системи.
Програмування комп'ютерного зору на Python з допомогою бібліотек
Якщо ви вирішили всерйоз зайнятися вивченнямкомп'ютерного зору, варто відразу приготуватися до ряду труднощів, наука ця не сама легка і ховає в собі ряд підводних каменів. Але "Програмування комп'ютерного зору на Python" в авторстві Яна Еріка Солем - це книга, в якій все викладається максимально простою мовою. Тут ви познайомитеся з методами розпізнавання різних об'єктів в 3D, навчитеся працювати з стереозображення, віртуальною реальністю і багатьма іншими додатками комп'ютерного зору. У книзі досить прикладів на мові Python. Але пояснення представлені, так би мовити, узагальнено, щоб не перенавантажувати занадто наукової і важкої інформацією. Праця підійде студентам, просто любителям і ентузіастам. Завантажити цю книгу і інші про комп'ютерний зір (pdf-формату) можна в мережі.
На даний момент існують відкрита бібліотекаалгоритмів комп'ютерного зору, а також обробки зображень і чисельних алгоритмів OpenCV. Це реалізовано на більшості сучасних мов програмування, має відкритий вихідний код. Якщо говорити про комп'ютерний зір, Python використовує в якості мови програмування, то це також має підтримку даної бібліотеки, крім того, вона постійно розвивається і має велике співтовариство.
Компанія "Майкрософт" надає своїApi-сервіси, здатні навчити нейромережі для роботи саме із зображеннями облич. Є можливість застосовувати також комп'ютерний зір, Python використовує в якості мови програмування.