Unity3d системи комп'ютерного зору приклади pdf. Комп'ютерне зір (Computer Vision). Що таке комп'ютерний зір? Це здатність комп'ютера «бачити»

Комп'ютерне зір і розпізнавання зображень є невід'ємною частиною (ІІ), який за минулі роки знайшов величезну популярність. У січні цього року відбулася виставка CES 2017, де можна було подивитися на останні досягнення в цій сфері. ось кілька цікавих прикладіввикористання комп'ютерного зору, які можна було побачити на виставці.

8 прикладів використання комп'ютерного зору

Вероніка Йолкіна

1. Безпілотні автомобілі

Найбільші стенди з комп'ютерним зором належать автомобільної промисловості. Зрештою, технології безпілотних і напівавтономних автомобілів працюють, багато в чому, завдяки комп'ютерному зору.

Продукти компанії NVIDIA, яка вже зробила великі кроки в області глибинного навчання, використовуються в багатьох безпілотних автомобілях. Наприклад, суперкомп'ютер NVIDIA Drive PX 2 вже служить базовою платформою для безпілотників, Volvo, Audi, BMW і Mercedes-Benz.

Технологія штучного сприйняття DriveNet від NVIDIA є самонавчального комп'ютерний зір, яке працює на основі нейронних мереж. З її допомогою лідари, радари, камери і ультразвукові датчики здатні розпізнаватиоточення, дорожню розмітку, транспорт і багато іншого.

3. Інтерфейси

Технології відстеження руху очей за допомогою комп'ютерного зору використовується не тільки в ігрових ноутбуках, але і в звичайних, і корпоративних комп'ютерах, для того щоб ними могли керувати люди, які не можуть скористатися руками. Tobii Dynavox PCEye Mini являє собою пристрій розміром з кулькову ручку, яке стане ідеальним і непомітним аксесуаром для планшетів і ноутбуків. Також ця технологія відстеження руху очей використовується в нових ігрових і звичайних ноутбуках Asus і смартфонах Huawei.

Тим часом продовжує розвиватися жестової управління(Технологія комп'ютерного зору, яке може розпізнавати особливі рухи руками). Тепер воно буде використовуватися в майбутніх автомобілях BMW і Volkswagen.

Новий інтерфейс HoloActive Touch дозволяє користувачам управляти віртуальними 3D-екранами і натискати кнопки в просторі. Можна сказати, що він являє собою просту версію справжнісінького голографічного інтерфейсу Залізної людини (він навіть точно так же реагує легкою вібрацією на натискання елементів). Завдяки таким технологіям, як ManoMotion, можна буде легко додати жестової управління практично в будь-який пристрій. Причому для отримання контролю над віртуальним 3D-об'єктом за допомогою жестів ManoMotion використовує звичайну 2D-камеру, так що вам не знадобиться ніяке додаткове обладнання.

Пристрій eyeSight's Singlecue Gen 2 використовує комп'ютерний зір (розпізнавання жестів, аналіз особи, визначення дій) і дозволяє керувати за допомогою жестів телевізором, «розумної» системою освітлення і холодильниками.

Hayo

Краудфандінговий проект Hayo, мабуть, є найцікавішим новим інтерфейсом. Ця технологія дозволяє створювати віртуальні кошти управління по всьому будинку - просто піднявши або опустивши руку, ви можете збільшити або зменшити гучність музики, або ж включити світло на кухні, змахнувши рукою над стільницею. Все це працює завдяки циліндричного пристрою, що використовує комп'ютерний зір, а також вбудовану камеру і датчики 3D, інфрачервоного випромінюванняі руху.

4. Побутові прилади

Дорогі камери, які показують, що знаходиться всередині вашого холодильника, вже не здаються такими революційними. Але що ви скажете про програму, яка аналізує зображення з вбудованою в холодильник камери і повідомляє, коли у вас закінчуються певні продукти?

Елегантне пристрій FridgeCam від Smarter кріпиться до стінки холодильника і може визначати, коли закінчується термін придатності, повідомляти, що саме знаходиться в холодильнику, і навіть рекомендувати рецепти страв з обраних продуктів. Пристрій продається по несподівано доступною ціною- всього за $ 100.

5. Цифрові вивіски

Комп'ютерне зір може змінити те, як виглядають банери і реклама в магазинах, музеях, стадіонах і розважальних парках.

На стенді Panasonic була представлена ​​демоверсія технології проектування зображення на прапори. За допомогою інфрачервоних маркерів, невидимих ​​для людського ока, і стабілізації відео, ця технологія може проектувати рекламу на висять банери і навіть на прапори, що розвіваються на вітрі. Причому зображення буде виглядати так, ніби-то воно дійсно на них надруковано.

6. Смартфони і доповнена реальність

Багато говорили про гру як про перший масовому додатку з елементами (AR). Однак як і інші додатки, які намагаються застрибнути на AR-поїзд, ця гра більше використовувала GPS і тріангуляцію, щоб у користувачів виникло відчуття, що об'єкт знаходиться прямо перед ними. Зазвичай в смартфонах практично не використовуються справжні технології комп'ютерного зору.

Однак в листопаді Lenovo випустила Phab2 - перший смартфон з підтримкою технології Google Tango. Ця технологія являє собою комбінацію датчиків і ПО з комп'ютерним зором, яка може розпізнавати зображення, відео та навколишній світ в реальному часі за допомогою лінзи фотокамери.

На виставці CES Asus вперше представила ZenPhone AR - смартфон з підтримкою Tango і Daydream VR від Google. Смартфон не тільки може відстежувати рухи, аналізувати оточення і точно визначати положення, але і використовує процесор Qualcomm Snapdragon 821, який дозволяє розподіляти завантаження даних комп'ютерного зору. Все це допомагає застосовувати справжні технології доповненої реальності, які насправді аналізують обстановку через камеру смартфона.

Пізніше в цьому році вийде Changhong H2 - перший смартфон з вбудованим молекулярним сканером. Він збирає світло, яке відбивається від об'єкта і розбивається на спектр, і потім аналізує його хімічний склад. завдяки програмному забезпеченню, Котрі використовують комп'ютерний зір, отримана інформація може використовуватися для різних цілей - від виписки ліків та підрахунку калорій до визначення стану шкіри і розрахунку рівня вгодованості.

15 вересня в Москві відбудеться конференція з великим даними Big Data Conference. У програмі - бізнес-кейси, технічні рішення та наукові досягнення кращих фахівців в цій області. Запрошуємо всіх, хто зацікавлений в роботі з великими даними і хоче їх застосовувати в реальному бізнесі. Слідкуйте за Big Data Conference в
  • Обробка зображень
  • Область застосування комп'ютерного зору дуже широка: від зчитувачів штрих-кодів в супермаркетах до доповненої реальності. З цієї лекції ви дізнаєтесь, де використовується і як працює комп'ютерний зір, як виглядають зображення в цифрах, які завдання в цій галузі вирішуються відносно легко, які важко, і чому.

    Лекція розрахована на старшокласників - студентів Малого Шадай, а й дорослі зможуть почерпнути з неї багато корисного.

    Можливість бачити і розпізнавати об'єкти - природна і звична можливість для людини. Однак для комп'ютера поки що - це надзвичайно складне завдання. Зараз робляться спроби навчити комп'ютер хоча б дещиці того, що людина використовує кожен день, навіть не помічаючи того.

    Напевно, найчастіше звичайна людина зустрічається з комп'ютерним зором на касі в супермаркеті. Звичайно, мова йде про зчитуванні штрих-кодів. Вони були розроблені спеціально саме таким чином, щоб максимально спростити комп'ютера процес зчитування. Але є і більш складні завдання: зчитування номерів автомобілів, аналіз медичних знімків, дефектоскопія на виробництві, розпізнавання осіб і т.д. Активно розвивається застосування комп'ютерного зору для створення систем доповненої реальності.

    Різниця між зором людини і комп'ютера
    Дитина вчиться розпізнавати об'єкти поступово. Він починає усвідомлювати, як змінюється форма об'єкту в залежності від його положення і освітлення. Надалі при розпізнаванні об'єктів людина орієнтується на попередній досвід. За своє життя людина накопичує величезну кількість інформації, процес навчання нейронної мережі не зупиняється ні на секунду. Для людини не представляє особливої ​​складності по плоскій картинці відновити перспективу і уявити собі, як би все це виглядало в трьох вимірах.

    Комп'ютера все це дається набагато складніше. І в першу чергу через проблеми накопичення досвіду. Потрібно зібрати величезну кількість прикладів, що поки що не дуже виходить.

    Крім того, людина при розпізнаванні об'єкта завжди враховує оточення. Якщо висмикнути об'єкт зі звичного оточення, дізнатися його стане помітно важче. Тут теж грає роль накопичений за життя досвід, якого у комп'ютера немає.

    Хлопчик чи дівчинка?
    Уявімо, що нам потрібно навчитися з одного погляду визначати стать людини (одягненого!) По фотографії. Для початку потрібно визначити фактори, які можуть вказувати на приналежність до того чи іншого об'єкту. Крім того, потрібно зібрати навчальну множину. Бажано, щоб воно було репрезентативним. У нашому випадку візьмемо в якості навчальної вибірки всіх присутніх в аудиторії. І спробуємо на їх основі знайти відмінні фактори: наприклад, довжина волосся, наявність бороди, макіяжу та одяг (спідниця або штани). Знаючи, у якого відсотка представників однієї статі зустрічалися ті чи інші фактори, ми зможемо створити досить чіткі правила: наявність тез чи інших комбінацій факторів з якоїсь ймовірністю дозволить нам сказати, людина якої статі на фотографії.
    машинне навчання
    Звичайно, це дуже простий і умовний приклад з невеликою кількістю верхнеуровневих факторів. В реальних задачах, які ставляться перед системами комп'ютерного зору, факторів набагато більше. Визначати їх вручну і прораховувати залежності - непосильне для людини завдання. Тому в таких випадках без машинного навчання не обійтися ніяк. Наприклад, можна визначити кілька десятків початкових чинників, а також задати позитивні і негативні приклади. А вже залежно між цими факторами підбираються автоматично, складається формула, яка дозволяє приймати рішення. Досить часто і самі чинники виділяються автоматично.
    Зображення в цифрах
    Найчастіше для зберігання цифрових зображень використовується колірний простір RGB. У ньому кожної з трьох осей (каналів) присвоюється свій колір: червоний, зелений і синій. На кожен канал виділяється по 8 біт інформації, відповідно, інтенсивність кольору на кожній осі може приймати значення в діапазоні від 0 до 255. Всі кольори в цифровому просторі RGB виходять шляхом змішування трьох основних кольорів.

    На жаль, RGB не завжди добре підходить для аналізу інформації. Експерименти показують, що геометрична близькість квітів досить далека від того, як людина сприймає близькість тих чи інших квітів один до одного.

    Але існують і інші колірні простору. Вельми цікаво в нашому контексті простір HSV (Hue, Saturation, Value). У ньому присутній вісь Value, що позначає кількість світла. На нього виділено окремий канал, на відміну від RGB, де це значення потрібно обчислювати кожен раз. Фактично, це чорно-біла версія зображення, з якої вже можна працювати. Hue представляється у вигляді кута і відповідає за основний тон. Від значення Saturation (відстань від центру до краю) залежить насиченість кольору.

    HSV набагато ближче до того, як ми уявляємо собі кольору. Якщо показати людині в темряві червоний і зелений об'єкт, він не зможе розрізнити кольору. У HSV відбувається те ж саме. Чим нижче по осі V ми просуваємося, тим менше стає різниця між відтінками, так як знижується діапазон значень насиченості. На схемі це виглядає як конус, на вершині якого гранично чорна точка.

    Колір і світло
    Чому так важливо мати дані про кількість світла? У більшості випадків в комп'ютерному зорі колір не має ніякого значення, так як не несе ніякої важливої ​​інформації. Подивимося на дві картинки: кольорову і чорно-білу. Дізнатися все об'єкти на чорно-білій версії не набагато складніше, ніж на кольоровий. Додаткового навантаження для нас колір в даному випадку не несе ніякої, а обчислювальних проблем створює безліч. Коли ми працюємо з кольоровою версією зображення, обсяг даних, грубо кажучи, зводиться до степеня куба.

    Колір використовується лише в рідкісних випадках, коли це навпаки дозволяє спростити обчислення. Наприклад, коли потрібно детектувати особа: простіше спочатку знайти його можливе розташування на зображенні, орієнтуючись на діапазон тілесних відтінків. Завдяки цьому відпадає необхідність аналізувати зображення цілком.

    Локальні і глобальні ознаки
    Ознаки, за допомогою яких ми аналізуємо зображення, бувають локальними і глобальними. Дивлячись на цю картинку, більшість скаже, що на ній зображена червона машина:

    Така відповідь має на увазі, що людина виділив на зображенні об'єкт, а значить, описав локальний ознака кольору. За великим рахунком на фото зображений ліс, дорога і трохи автомобіля. За площею автомобіль займає меншу частину. Але ми розуміємо, що машина на цій картинці - найважливіший об'єкт. Якщо людині запропонувати знайти картинки схожі на цю, він буде в першу чергу відбирати зображення, на яких присутня червона машина.

    Детектування і сегментація
    У комп'ютерному зорі цей процес називається детектуванням і сегментацією. Сегментація - це розподіл зображення на безліч частин, пов'язаних другз одним візуально, або семантично. А детектування - це виявлення об'єктів на зображенні. Детектування потрібно чітко відрізняти від розпізнавання. Припустимо, на тій же картинці з автомобілем можна детектувати дорожній знак. Але розпізнати його неможливо, так як він повернуть до нас зворотною стороною. Так само при розпізнаванні осіб детектор може визначити розташування особи, а «распознаватель» вже скаже, чиє це обличчя.

    Дескриптори і візуальні слова
    Існує багато різних підходів до розпізнавання.

    Наприклад, такий: на зображенні спочатку потрібно виділити цікаві точки або цікаві місця. Щось відмінне від фону: яскраві плями, переходи і т.д. Є кілька алгоритмів, що дозволяють це зробити.

    Один з найбільш поширених способів називається Difference of Gaussians (DoG). Розмиваючи картинку з різних радіусом і порівнюючи отримані результати, можна знаходити найбільш контрастні фрагменти. Області навколо цих фрагментів і є найбільш цікавими.

    На зображенні нижче зображено, як це приблизно виглядає. Отримані дані записуються в дескриптори.

    Щоб однакові дескриптори визнавалися такими незалежно від поворотів в площині, вони розгортаються так, щоб найбільші вектори були повернені в одну сторону. Робиться це далеко не завжди. Але якщо потрібно виявити два однакових об'єкта, розташованих в різних площинах.

    Дескриптори можна записувати в числовому вигляді. Дескриптор можна представити у вигляді точки в багатовимірному масиві. У нас на ілюстрації двовимірний масив. У нього потрапили наші дескриптори. І ми можемо їх кластеризувати - розбити на групи.

    Далі ми для кожного кластера описуємо область в просторі. Коли дескриптор потрапляє в цю область, для нас стає важливим не те, яким він був, а то, в яку з областей він потрапив. І далі ми можемо порівнювати зображення, визначаючи, скільки дескрипторів одного зображення виявилися в тих же кластерах, що і дескриптори іншого зображення. Такі кластери можна називати візуальними словами.

    Щоб знаходити не просто однакові картинки, а зображення схожих об'єктів, потрібно взяти безліч зображень цього об'єкта і безліч картинок, на яких його немає. Потім виділити з них дескриптори і кластеризувати їх. Далі потрібно з'ясувати, в які кластери потрапили дескриптори з зображень, на яких був присутній потрібний нам об'єкт. Тепер ми знаємо, що якщо дескриптори з нового зображення потрапляють в ті ж кластери, значить, на ньому присутня шуканий об'єкт.

    Збіг дескрипторів - ще не гарантія ідентичності містять їх об'єктів. Один із способів додаткової перевірки - геометрична валідація. У цьому випадку проводиться порівняння розташування дескрипторів відносно один одного.

    Розпізнавання і класифікація
    Для простоти припустимо, що ми можемо розбити всі зображення на три класи: архітектура, природа та портрет. У свою чергу, природу ми можемо розбити на рослини тварин і птахів. А вже зрозумівши, що це птах, ми можемо сказати, яка саме: сова, чайка або ворона.

    Різниця між розпізнаванням і класифікацією досить умовна. Якщо ми знайшли на зображенні сову, то це швидше за розпізнавання. Якщо просто птицю, то це якийсь проміжний варіант. А якщо тільки природу - це безперечно класифікація. Тобто різниця між розпізнаванням і класифікацією полягає в тому, наскільки глибоко ми пройшли по дереву. І чим далі просуватиметься комп'ютерний зір, тим нижче буде сповзати межа між класифікацією і розпізнаванням.

    Область застосування комп'ютерного зору дуже широка: від зчитувачів штрих-кодів в супермаркетах до доповненої реальності. З цієї лекції ви дізнаєтесь, де використовується і як працює комп'ютерний зір, як виглядають зображення в цифрах, які завдання в цій галузі вирішуються відносно легко, які важко, і чому.

    Лекція розрахована на старшокласників - студентів Малого Шадай, а й дорослі зможуть почерпнути з неї багато корисного.

    Можливість бачити і розпізнавати об'єкти - природна і звична можливість для людини. Однак для комп'ютера поки що - це надзвичайно складне завдання. Зараз робляться спроби навчити комп'ютер хоча б дещиці того, що людина використовує кожен день, навіть не помічаючи того.

    Напевно, найчастіше звичайна людина зустрічається з комп'ютерним зором на касі в супермаркеті. Звичайно, мова йде про зчитуванні штрих-кодів. Вони були розроблені спеціально саме таким чином, щоб максимально спростити комп'ютера процес зчитування. Але є і більш складні завдання: зчитування номерів автомобілів, аналіз медичних знімків, дефектоскопія на виробництві, розпізнавання осіб і т.д. Активно розвивається застосування комп'ютерного зору для створення систем доповненої реальності.

    Різниця між зором людини і комп'ютера
    Дитина вчиться розпізнавати об'єкти поступово. Він починає усвідомлювати, як змінюється форма об'єкту в залежності від його положення і освітлення. Надалі при розпізнаванні об'єктів людина орієнтується на попередній досвід. За своє життя людина накопичує величезну кількість інформації, процес навчання нейронної мережі не зупиняється ні на секунду. Для людини не представляє особливої ​​складності по плоскій картинці відновити перспективу і уявити собі, як би все це виглядало в трьох вимірах.

    Комп'ютера все це дається набагато складніше. І в першу чергу через проблеми накопичення досвіду. Потрібно зібрати величезну кількість прикладів, що поки що не дуже виходить.

    Крім того, людина при розпізнаванні об'єкта завжди враховує оточення. Якщо висмикнути об'єкт зі звичного оточення, дізнатися його стане помітно важче. Тут теж грає роль накопичений за життя досвід, якого у комп'ютера немає.

    Хлопчик чи дівчинка?
    Уявімо, що нам потрібно навчитися з одного погляду визначати стать людини (одягненого!) По фотографії. Для початку потрібно визначити фактори, які можуть вказувати на приналежність до того чи іншого об'єкту. Крім того, потрібно зібрати навчальну множину. Бажано, щоб воно було репрезентативним. У нашому випадку візьмемо в якості навчальної вибірки всіх присутніх в аудиторії. І спробуємо на їх основі знайти відмінні фактори: наприклад, довжина волосся, наявність бороди, макіяжу та одяг (спідниця або штани). Знаючи, у якого відсотка представників однієї статі зустрічалися ті чи інші фактори, ми зможемо створити досить чіткі правила: наявність тез чи інших комбінацій факторів з якоїсь ймовірністю дозволить нам сказати, людина якої статі на фотографії.
    машинне навчання
    Звичайно, це дуже простий і умовний приклад з невеликою кількістю верхнеуровневих факторів. В реальних задачах, які ставляться перед системами комп'ютерного зору, факторів набагато більше. Визначати їх вручну і прораховувати залежності - непосильне для людини завдання. Тому в таких випадках без машинного навчання не обійтися ніяк. Наприклад, можна визначити кілька десятків початкових чинників, а також задати позитивні і негативні приклади. А вже залежно між цими факторами підбираються автоматично, складається формула, яка дозволяє приймати рішення. Досить часто і самі чинники виділяються автоматично.
    Зображення в цифрах
    Найчастіше для зберігання цифрових зображень використовується колірний простір RGB. У ньому кожної з трьох осей (каналів) присвоюється свій колір: червоний, зелений і синій. На кожен канал виділяється по 8 біт інформації, відповідно, інтенсивність кольору на кожній осі може приймати значення в діапазоні від 0 до 255. Всі кольори в цифровому просторі RGB виходять шляхом змішування трьох основних кольорів.

    На жаль, RGB не завжди добре підходить для аналізу інформації. Експерименти показують, що геометрична близькість квітів досить далека від того, як людина сприймає близькість тих чи інших квітів один до одного.

    Але існують і інші колірні простору. Вельми цікаво в нашому контексті простір HSV (Hue, Saturation, Value). У ньому присутній вісь Value, що позначає кількість світла. На нього виділено окремий канал, на відміну від RGB, де це значення потрібно обчислювати кожен раз. Фактично, це чорно-біла версія зображення, з якої вже можна працювати. Hue представляється у вигляді кута і відповідає за основний тон. Від значення Saturation (відстань від центру до краю) залежить насиченість кольору.

    HSV набагато ближче до того, як ми уявляємо собі кольору. Якщо показати людині в темряві червоний і зелений об'єкт, він не зможе розрізнити кольору. У HSV відбувається те ж саме. Чим нижче по осі V ми просуваємося, тим менше стає різниця між відтінками, так як знижується діапазон значень насиченості. На схемі це виглядає як конус, на вершині якого гранично чорна точка.

    Колір і світло
    Чому так важливо мати дані про кількість світла? У більшості випадків в комп'ютерному зорі колір не має ніякого значення, так як не несе ніякої важливої ​​інформації. Подивимося на дві картинки: кольорову і чорно-білу. Дізнатися все об'єкти на чорно-білій версії не набагато складніше, ніж на кольоровий. Додаткового навантаження для нас колір в даному випадку не несе ніякої, а обчислювальних проблем створює безліч. Коли ми працюємо з кольоровою версією зображення, обсяг даних, грубо кажучи, зводиться до степеня куба.

    Колір використовується лише в рідкісних випадках, коли це навпаки дозволяє спростити обчислення. Наприклад, коли потрібно детектувати особа: простіше спочатку знайти його можливе розташування на зображенні, орієнтуючись на діапазон тілесних відтінків. Завдяки цьому відпадає необхідність аналізувати зображення цілком.

    Локальні і глобальні ознаки
    Ознаки, за допомогою яких ми аналізуємо зображення, бувають локальними і глобальними. Дивлячись на цю картинку, більшість скаже, що на ній зображена червона машина:

    Така відповідь має на увазі, що людина виділив на зображенні об'єкт, а значить, описав локальний ознака кольору. За великим рахунком на фото зображений ліс, дорога і трохи автомобіля. За площею автомобіль займає меншу частину. Але ми розуміємо, що машина на цій картинці - найважливіший об'єкт. Якщо людині запропонувати знайти картинки схожі на цю, він буде в першу чергу відбирати зображення, на яких присутня червона машина.

    Детектування і сегментація
    У комп'ютерному зорі цей процес називається детектуванням і сегментацією. Сегментація - це розподіл зображення на безліч частин, пов'язаних один з одним візуально, або семантично. А детектування - це виявлення об'єктів на зображенні. Детектування потрібно чітко відрізняти від розпізнавання. Припустимо, на тій же картинці з автомобілем можна детектувати дорожній знак. Але розпізнати його неможливо, так як він повернуть до нас зворотною стороною. Так само при розпізнаванні осіб детектор може визначити розташування особи, а «распознаватель» вже скаже, чиє це обличчя.

    Дескриптори і візуальні слова
    Існує багато різних підходів до розпізнавання.

    Наприклад, такий: на зображенні спочатку потрібно виділити цікаві точки або цікаві місця. Щось відмінне від фону: яскраві плями, переходи і т.д. Є кілька алгоритмів, що дозволяють це зробити.

    Один з найбільш поширених способів називається Difference of Gaussians (DoG). Розмиваючи картинку з різних радіусом і порівнюючи отримані результати, можна знаходити найбільш контрастні фрагменти. Області навколо цих фрагментів і є найбільш цікавими.

    На зображенні нижче зображено, як це приблизно виглядає. Отримані дані записуються в дескриптори.

    Щоб однакові дескриптори визнавалися такими незалежно від поворотів в площині, вони розгортаються так, щоб найбільші вектори були повернені в одну сторону. Робиться це далеко не завжди. Але якщо потрібно виявити два однакових об'єкта, розташованих в різних площинах.

    Дескриптори можна записувати в числовому вигляді. Дескриптор можна представити у вигляді точки в багатовимірному масиві. У нас на ілюстрації двовимірний масив. У нього потрапили наші дескриптори. І ми можемо їх кластеризувати - розбити на групи.

    Далі ми для кожного кластера описуємо область в просторі. Коли дескриптор потрапляє в цю область, для нас стає важливим не те, яким він був, а то, в яку з областей він потрапив. І далі ми можемо порівнювати зображення, визначаючи, скільки дескрипторів одного зображення виявилися в тих же кластерах, що і дескриптори іншого зображення. Такі кластери можна називати візуальними словами.

    Щоб знаходити не просто однакові картинки, а зображення схожих об'єктів, потрібно взяти безліч зображень цього об'єкта і безліч картинок, на яких його немає. Потім виділити з них дескриптори і кластеризувати їх. Далі потрібно з'ясувати, в які кластери потрапили дескриптори з зображень, на яких був присутній потрібний нам об'єкт. Тепер ми знаємо, що якщо дескриптори з нового зображення потрапляють в ті ж кластери, значить, на ньому присутня шуканий об'єкт.

    Збіг дескрипторів - ще не гарантія ідентичності містять їх об'єктів. Один із способів додаткової перевірки - геометрична валідація. У цьому випадку проводиться порівняння розташування дескрипторів відносно один одного.

    Розпізнавання і класифікація
    Для простоти припустимо, що ми можемо розбити всі зображення на три класи: архітектура, природа та портрет. У свою чергу, природу ми можемо розбити на рослини тварин і птахів. А вже зрозумівши, що це птах, ми можемо сказати, яка саме: сова, чайка або ворона.

    Різниця між розпізнаванням і класифікацією досить умовна. Якщо ми знайшли на зображенні сову, то це швидше за розпізнавання. Якщо просто птицю, то це якийсь проміжний варіант. А якщо тільки природу - це безперечно класифікація. Тобто різниця між розпізнаванням і класифікацією полягає в тому, наскільки глибоко ми пройшли по дереву. І чим далі просуватиметься комп'ютерний зір, тим нижче буде сповзати межа між класифікацією і розпізнаванням.

  • машинне навчання
  • Останні років вісім я активно займаюся завданнями, пов'язаними з розпізнаванням образів, комп'ютерним зором, машинним навчанням. Вийшло накопичити чималий багаж досвіду та проектів (щось своє, щось в ранзі штатного програміста, щось під замовлення). До того ж, з тих пір, як я написав пару статей на Хабре, зі мною часто зв'язуються читачі, просять допомогти з їх завданням, порадити щось. Так що досить часто натикаюся на абсолютно непередбачувані застосування CV алгоритмів.
    Але, чорт забирай, в 90% випадків я бачу одну і ту ж системну помилку. Раз за разом. За останні років 5 я її пояснював вже десяткам людей. Так що там, періодично і сам її здійснює операції з ...

    У 99% завдань комп'ютерного зору то уявлення про завдання, яке ви сформулювали у себе в голові, а тим більше той шлях вирішення, який ви намітили, не має з реальністю нічого спільного. Завжди будуть виникати ситуації, про які ви навіть не могли подумати. Єдиний спосіб сформулювати завдання - набрати базу прикладів і працювати з нею, як з огляду на ідеальні, так і найгірші ситуації. Чим ширше база-тим точніше поставлена ​​задача. Без бази говорити про завдання не можна.

    Тривіальна думка. Але все помиляються. Абсолютно всі. У статті я приведу декілька прикладів таких ситуацій. Коли завдання поставлене погано, коли добре. І які підводні камені вас чекають у формуванні ТЗ для систем комп'ютерного зору.

    Сама по собі завдання, на мій погляд, швидше за вирішувана. Якщо брати позначки як опорні точки і порівнювати тими ж методами, якими порівнюють. Але, знову ж таки, поки не протестіруешь базу хоча б на пару сотень прикладів - ніколи не дізнаєшся, чи можна роботу успішно виконати. Але чомусь така пропозиція не сподобалося автору статті ... Шкода!
    Це два найбільш осмислених і репрезентативних, на мій погляд, приклад. За ним можна зрозуміти, чому потрібно абстрагуватися від ідеї і дивитися реальні кадри.
    Ще кілька прикладів, з якими я зустрічався, але вже в двох словах. У всіх цих прикладах у людей не було жодної фотографії на момент, коли вони почали питати про можливості бути реалізованим завдання:
    1) Розпізнавання номерів у марафонців на футболках по відеопотоку (картинка з Яндикса)


    хи. Поки готував статтю натрапив на це. Дуже хороший приклад, на якому видно всі потенційні проблеми. Це і різні шрифти, це і нестабільний фон з тінями, це нерізкість і заминання кути. І найголовніше. Замовник пропонує ідеалізовану базу. Зняту на хороший фотоапарат сонячним днем. Спробуйте подивитися номери спортсменів на майках пошукавши пошуком яндикса.
    Хи.ХиЗа пару годин до публікації автор замовлення раптово вийшов на мене сам з пропозицією взятися за роботу, від якого я відмовився :) Все ж це карма, додати це до статті.

    2) Розпізнавання тексту на фотографіях екранів телефонів


    3) І, мій улюблений приклад. Лист на пошту:
    " потрібна програма в комерційний сектор для розпізнання избражение.
    Алгоритм роботи такий. оператор програми задає зображення предмета (-ів) в декількох ракурсах і т.п.
    потім при появленіні цього або максимально схожого зображення предмета, програма робить необхідну / задану дію.
    деталей природно не можу поки розповісти.
    "(Орфографія, пунктуація збережені)

    хороші
    Але не все так погано! Ситуація, коли ставиться завдання ідеально, зустрічається часто. Моя улюблена: «Потрібно ПО для автоматичного підрахунку лосів на фото.
    Приклад фото з лосями висилаю. »



    Обидва фото клікабельні.
    До сих пір шкодую, що з цим завданням не зрослося. Спочатку кандидатську захищав і був зайнятий, а потім замовник якось ентузіазм втратив (або знайшов інших виконавців).
    У постановці немає ні найменшої трактування рішення. Тільки дві речі: «що потрібно зробити», «вхідні дані». Багато вхідних даних. Всі.

    Думка - висновок

    Єдиний спосіб поставити задачу - набрати базу і визначити методологію роботи по цій базі. Що ви хочете отримати? Які межі застосування алгоритму? Без цього ви не тільки не зможете підійти до завдання, ви не зможете її здати. Без бази даних замовник завжди зможе сказати «У вас не працює такий-то випадок. Але це ж критична ситуація! Без нього я не прийму роботу ».

    Як сформувати базу

    Напевно, все це був приквел до статті. Ця стаття починається тут. Ідея того, що в будь-якій задачі CV і ML потрібна база для тестування - очевидна. Але як набрати таку базу? На моїй пам'яті три-чотири рази перша набрана база спускалася в унітаз. Іноді і друга. Тому що була нерепрезентативна. У чому складність?
    Потрібно розуміти, що «збір бази» = «постановка завдання». Зібрана база повинна:
    1. Відображати проблематику завдання;
    2. Відображати умови, в яких буде вирішуватися завдання;
    3. Формулювати завдання як таку;
    4. Приводити замовника і виконавця до консенсусу щодо того, що було зроблено.
    Пора року
    Пару років тому ми з другом вирішили зробити систему, яка могла б працювати на мобільниках і розпізнавати автомобільні номери .. На той момент ми були дуже навчені в CV системах. Знали, що потрібно збирати таку базу, щоб погано було. Щоб подивився на неї і відразу зрозумів всі проблеми. Ми зібрали таку базу:


    Зробили алгоритм, і він навіть непогано працював. Давав 80-85% розпізнавання виділених номерів.
    Ну да ... Тільки влітку, коли всі номери стали чисті й хороші точність системи просіла відсотків на 5 ...
    Біометрія
    Досить багато в своєму житті ми працювали з біометрією (,). І, здається, настали на всі можливі граблі при зборі біометричних баз.
    База повинна бути зібрана в різних приміщеннях. Коли апарат для збору бази варто тільки у розробників - рано чи пізно з'ясується, що він зав'язаний на сусідню лампу.
    В біометричних базах потрібно мати 5-10 знімків для кожної людини. І ці 5-10 знімків повинні бути зроблені в різні дні, в різний час дня. Підходячи до біометричного сканера кілька разів поспіль, людина сканується одним і тим же способом. Підходячи в різні дні - по-різному. Деякі біометричні характеристики можуть трошки змінюватися протягом доби.
    База, зібрана з розробників нерепрезентативна. Вони підсвідомо зчитуються так, щоб все спрацювало ...
    У вас нова модель сканера? А ви впевнені, що він працює зі старою базою?
    Ось очі зібрані з різних сканерів. Різні поля роботи, різні відблиски, різні тіні, різні просторові дозволу, і.т.д.





    База для нейронних мереж і алгоритмів навчання
    Якщо у вас в коді використовується якийсь алгоритм навчання - пиши пропало. Вам потрібно формувати базу для навчання з його урахуванням. Припустимо, у вашій задачі розпізнавання є два сильно відрізняються шрифту. Перший зустрічається в 90% випадків, другий в 10%. Якщо ви наріжете ці два шрифту в даній пропорції і навчитеся по ним єдиним класифікатором, то з високою ймовірністю літери першого шрифту будуть розпізнаватися, а букви другого немає. Бо нейронна мережа / SVM знайде локальний мінімум не там, де розпізнається 97% першого шрифту і 97% другого, а там де розпізнається 99% першого шрифту і 0% другого. У вашій базі повинно бути достатньо прикладів кожного шрифту, щоб навчання не пішло в інший мінімум.

    Як сформувати базу при роботі з реальним замовником

    Одна з нетривіальних проблем при зборі бази - хто це повинен робити. Замовник або виконавець. Спочатку наведу кілька сумних прикладів з життя.
    Я наймаю вас, щоб ви вирішили мені задачу!
    Саме таку фразу я почув одного разу. І млинець, не посперечаєшся. Але ось тільки базу потрібно було б збирати на заводі, куди б нас ніхто не пустив. А вже тим більше, не дав би нам монтувати обладнання. Ті дані, які давав замовник були марні: об'єкт розміром в кілька пікселів, сильно зашумлений камера з імпульсними перешкодами, яка періодично смикається, від сили двадцять тестових картинок. На пропозиції поставити більш хорошу камеру, вибрати більш хороший ракурс для зйомки, зробити базу хоча б на пару сотень прикладів, замовник відповів фразою з заголовка.
    У нас немає часу цим займатися!
    Одного разу директор вельми великої компанії (людина 100 штату + офіси в багатьох країнах світу) запропонував поспілкуватися. У продукті, який випускала ця компанія частина функціоналу була реалізована дуже старими і дуже простими алгоритмами. Директор розповів нам, що давно мріє про модифікацію даного функціоналу в сучасні алгоритми. Навіть наймав дві різні команди розробників. Але не зрослося. Одна команда за його словами занадто теоретизувати, а друга ніякої теорії не знала і трівіальщіну робила. Ми вирішили спробувати.
    На наступний день нам видали доступ до величезного масиву сирої інформації. Сильно більше, ніж я б зумів переглянути за рік. Витративши на аналіз інформації пару днів ми насторожилися запитали: «А що власне вам потрібно від нових алгоритмів?». Нам назвали десятка два ситуацій, коли поточні алгоритми не працюють. Але за пару днів я бачив лише одну-дві указних ситуації. Переглянувши ще пачку даних зміг знайти ще одну. На питання: «які ситуації турбують ваших клієнтів в першу чергу?», - ні директор ні його головні інженери не змогли дати відповіді. У них не було такої статистики.
    Ми досліджували питання і запропонували алгоритм рішення, який міг автоматично зібрати всі можливі ситуації. Але нам потрібно було допомогти з двома речами. По-перше, розгорнути обробку інформації на серверах самої фірми (у нас не було ні достатньої обчислювальної потужності, ні достатнього каналу до того місця, де зберігалися сирі дані). На це б пішов тиждень роботи адміністратора фірми. А по-друге, представник фірми повинен був класифікувати зібрану інформацію за важливістю і по тому як її потрібно обробляти (це ще дня три). До цього моменту ми вже витратили дві-три тижні свого часу на аналіз даних, вивчення статей з тематики і написання програм для збору інформації (ніякого договору підписано на цей момент не було, все робили на добровільних засадах).
    На що нам було заявлено: «Ми не можемо відволікати на цю задачу нікого. Розбирайтеся самі ». На чому ми відкланялися і віддалилися.
    Замовник дає базу
    Був і інший випадок. На цей раз замовник поменше. А система, якою займається замовник розкидана по всій території країни. Зате замовник розуміє, що ми базу не зберемо. І з усіх сил намагається зібрати базу. Збирає. Дуже велику і різноманітну. І навіть запевняє, що база є репрезентативною. Починаємо працювати. Майже доробляємо алгоритм. Перед здачею з'ясовується, що на зібраної базі-то алгоритм працює. І до умов договору ми задовольняємо. Але ось база-то була не репрезентативної. У ній немає 2/3 ситуацій. А ті ситуації, що є - представлені непропорційно. І на реальних даних система працює сильно гірше.
    Ось і виходить. Ми намагалися. Все що обіцяли - зробили, хоча завдання виявилося сильно складніше, ніж планували. Замовник намагався. Витратив багато часу на збір бази.
    Але підсумковий результат - хріновий. Довелося щось вигадувати на ходу, хоч якось затикати дірки ...
    Так хто повинен сформувати базу?
    Проблема в тому, що дуже часто завдання комп'ютерного зору виникають в складних системах. Системах, які робилися десятки років багатьма людьми. І розібратися в такій системі часто сильно довше, ніж вирішити саму задачу. А замовник хоче щоб розробка почалася вже завтра. І природно, пропозицію заплатити за підготовку ТЗ і бази суму в 2 рази більше вартості завдання, збільшити терміни в 3 рази, дати допуск до своїх систем і алгоритмам, виділити співробітника, який все покаже і розповість, викликає у нього подив.
    На мій погляд рішення будь-якої задачі комп'ютерного зору вимагає постійного діалогу між замовником і виконавцем, а так само бажання замовника сформулювати завдання. Виконавець не бачить всіх нюансів бізнесу замовника, не знає систему зсередини. Я жодного разу не бачив щоб підхід: «ось вам гроші, завтра зробіть мені рішення» спрацював. Рішення-то було. Але працювало воно як потрібно?
    Сам я як вогню намагаюся шарахатися від таких контрактів. Працюю я сам, або в якійсь фірмі, яка взяла замовлення на розробку.
    В цілому ситуацію можна змалювати таку картину: припустимо, ви хочете влаштувати своє весілля. Ви можете:
    Продумати і організувати все самому від початку до кінця. По суті даний варіант - «вирішувати завдання самому».
    Продумати все від початку до кінця. Написати всі сценарії. І найняти виконавців для кожної ролі. Тамаду для того щоб гості не нудьгували, ресторан, щоб все приготували і провели. Написати основну канву для тамади, меню для ресторану. Цей варіант - це діалог. Забезпечити даними виконавця, розписати все, що потрібно.
    Можна продумати великими блоками, не вникаючи в деталі. Найняти тамаду, нехай робить, що робить. Чи не погоджувати меню ресторану. Замовити модельєра підбір сукні, зачіски, іміджу. Головного болю мінімум, але коли почнуться конкурси на роздягання, то можна зрозуміти що щось було зроблено не так. Далеко не факт, що сформулювавши завдання в стилі «розпізнайте мені символ» виконавець і замовник зрозуміють одне і те ж.
    А можна все замовити весільному агентству. Дорого, думати зовсім не треба. Але ось, що вийде - вже не знає ніхто. Варіант - «зробіть мені добре». Швидше за все, якість буде залежати від вартості. Але не обов'язково

    Чи є завдання, де база не потрібна

    Є. По-перше, в задачах, де база - це занадто складно. Наприклад, розробка робота, який аналізує відео, і по ньому приймає рішення. Потрібен якийсь тестовий стенд. Можна зробити бази на якісь окремі функції. Але зробити базу по повному циклу дій зазвичай не можемо. По-друге, коли йде дослідницька робота. Наприклад, йде розробка не тільки алгоритмів, але і пристрої, яким буде набиратися база. Кожен день новий пристрій, нові параметри. Коли алгоритм змінюється по три рази на день. В таких умовах база марна. Можна створювати якісь локальні бази, що змінюються щодня. Але щось глобальне неусвідомлено.
    По-третє, це завдання, де можна зробити модель. Моделювання це взагалі дуже велика і складна тема. Якщо можливо зробити хорошу модельзадешево, то звичайно потрібно її робити. Хочете розпізнати текст, де є тільки один шрифт - найпростіше створити алгоритм моделювання (

    Інтерес до комп'ютерного зору виник одним з перших в області штучного інтелектупоряд з такими завданнями, як автоматичне доведення теорем та інтелектуальні ігри. Навіть архітектура першої штучної нейронної мережі - перцептрону - була запропонована Френк Розенблат, виходячи з аналогії з сітківкою ока, а її дослідження проводилося на прикладі задачі розпізнавання зображень символів.

    Значимість проблеми зору ніколи не викликала сумніву, але одночасно її складність істотно недооцінювалася. Наприклад, легендарним по своїй показовості став випадок, коли в 1966 р один з основоположників області штучного інтелекту, Марвін Мінський, навіть не сам зібрався вирішити проблему штучного зору, а доручив це зробити одному студенту за найближче літо. При цьому на створення програми, що грає на рівні гросмейстера в шахи, відводилося значно більший час. Однак зараз очевидно, що створити програму, обігравати людини в шахи, простіше, ніж створити адаптивну систему управління з підсистемою комп'ютерного зору, яка б змогла просто переставляти шахові фігури на довільній реальної дошці.

    Прогрес в області комп'ютерного зору визначається двома факторами: розвиток теорії, методів, і розвиток апаратного забезпечення. Довгий час теорія і академічні дослідження випереджали можливості практичного використання систем комп'ютерного зору. Умовно можна виділити ряд етапів розвитку теорії.

    • До 1970-х років сформувався основний понятійний апарат в області обробки зображень, що є основою для дослідження проблем зору. Також були виділені основні завдання, специфічні для машинного зору, пов'язані з оцінкою фізичних параметрів сцени (дальності, швидкостей руху, відбивної здатності поверхонь і т. Д.) По зображеннях, хоча ряд цих завдань все ще розглядався в дуже спрощеній постановці для «світу іграшкових кубиків ».
    • До 80-м сформувалася теорія рівнів представлення зображень в методах їх аналізу. Свого роду відміткою закінчення цього етапу служить книга Девіда Марра «Зір. Інформаційний підхід до вивчення подання та обробки зорових образів ».
    • До 90-м виявляється сформованим систематичне уявлення про підходи до вирішення основних, що вже стали класичними, завдань машинного зору.
    • З середини 90-х відбувається перехід до створення і дослідження великомасштабних систем комп'ютерного зору, призначених для роботи в різних природних умовах.
    • Поточний етап найбільш цікавий розвитком методів автоматичної побудови уявлень зображень в системах розпізнавання зображень і комп'ютерного зору на основі принципів машинного навчання.

    У той же час прикладні застосування обмежувалися обчислювальними ресурсами. Адже щоб виконати навіть найпростішу обробку зображення, потрібно хоча б один раз переглянути всі його пікселі (і зазвичай не один раз). Для цього потрібно виконувати як мінімум сотні тисяч операцій в секунду, що довгий час було неможливо і вимагало спрощень.

    Наприклад, для автоматичного розпізнаваннядеталей в промисловості могла використовуватися чорна стрічка конвеєра, що усуває необхідність відділення об'єкта від фону, або сканування об'єктів, що рухаються лінійкою фотодіодів зі спеціальною підсвіткою, що вже на рівні формування сигналу забезпечувало виділення інваріантних ознак для розпізнавання без застосування будь-яких складних методів аналізу інформації. У оптико-електронних системах супроводження і розпізнавання цілей використовувалися фізичні трафарети, що дозволяють «апаратно» виконувати узгоджену фільтрацію. Деякі з цих рішень були геніальними з інженерної точки зору, але були застосовні тільки в задачах з низькою апріорної невизначеністю, і тому мали, зокрема, поганою переносимістю на нові завдання.

    Тож не дивно, що на 1970-ті роки припав пік інтересу і до оптичних обчислень в обробці зображень. Вони дозволяли реалізувати невеликий набір методів (переважно кореляційних) з обмеженими властивостями інваріантності, але вельми ефективним чином.

    Поступово, завдяки зростанню продуктивності процесорів (а також розвитку цифрових відеокамер), ситуація змінилася. Подолання певного порогу продуктивності, необхідного для здійснення корисної обробки зображень за розумний час, відкрило шлях для цілої лавини додатків комп'ютерного зору. Слід, однак, відразу підкреслити, що цей перехід не був миттєвим і триває досі.

    В першу чергу, загальне застосування алгоритми обробки зображень стали доступні для спецпроцесорів - цифрових сигнальних процесорів (ЦСП) і програмованих логічних інтегральних схем (ПЛІС), нерідко спільно використовувалися і знаходять широке застосування до сих пір в бортових і промислових системах.

    Однак дійсно масове застосування методи комп'ютерного зору отримали лише менше десяти років тому, з досягненням відповідного рівня продуктивності процесорів у персональних і мобільних комп'ютерів. Таким чином, в плані практичного застосування системи комп'ютерного зору пройшли ряд етапів: етап індивідуального рішення (як в частині апаратного забезпечення, так і алгоритмів) конкретних завдань; етап застосування в професійних областях (особливо в промисловості і оборонній сфері) з використанням спецпроцесорів, спеціалізовані системи формування зображень і алгоритми, призначені для роботи в умовах низької апріорної невизначеності, однак ці рішення допускали масштабування; і етап масового застосування.

    Як видно, система машинного зору включає наступні основні компоненти:

    Найбільш масового застосування досягають системи машинного зору, що використовують стандартні камери і комп'ютери в якості перших двох компонент (саме до таких систем більше підходить термін «комп'ютерний зір», хоча чіткого поділу понять машинного і комп'ютерного зору немає). Однак, природно, інші системи машинного зору мають не меншу значимістю. Саме вибір «нестандартних» способів формування зображень (включаючи використання інших, крім видимого, спектральних діапазонів, когерентного випромінювання, структурованої підсвічування, гіперспектральних приладів, часопролітної, всеспрямованих і швидкодіючих камер, телескопів і мікроскопів і т. Д.) Істотно розширює можливості систем машинного зору . У той час як за можливостями алгоритмічного забезпечення системи машинного зору істотно поступаються зору людини, за можливостями отримання інформації про спостережувані об'єкти вони істотно перевершують його. Однак питання формування зображень становлять самостійну область, а методи роботи з зображеннями, отриманими з використанням різних сенсорів, настільки різноманітні, що їх огляд виходить за рамки даної статті. У зв'язку з цим ми обмежимося оглядом систем комп'ютерного зору, що використовують звичайні камери.

    Застосування в робототехніці

    Робототехніка є традиційною сферою застосування машинного зору. Однак основна частка парку роботів довгий час припадала на промисловість, де очувствленние роботів не було зайвим, але завдяки добре контрольованим умовам (низької недетермінованости середовища) можливими виявлялися вузькоспеціалізовані рішення, в тому числі і для задач машинного зору. Крім того, промислові додатки допускали використання дорогого устаткування, що включає оптичні та обчислювальні системи.

    У зв'язку з цим показово (хоча і не пов'язане тільки з системами комп'ютерного зору) то, що частка парку роботів, яка припадає на промислових роботів, стала менш 50% лише на початку 2000-х років. Стала розвиватися робототехніка, призначена для масового споживача. Для побутових роботів, на відміну від промислових, критичною є вартість, а також час автономної роботи, Що має на увазі використання мобільних та вбудованих процесорних систем. При цьому такі роботи повинні функціонувати в недетермінірованних середовищах. Наприклад, в промисловості довгий час (та й донині) використовувалися фотограмметричні мітки, які наклеюють на об'єкти спостереження або калібрувальні дошки, - для вирішення задач визначення внутрішніх параметрів і зовнішньої орієнтації камер. Природно, необхідність наклеювати користувачеві такі мітки на предмети інтер'єру істотно погіршила б споживчі якості побутових роботів. Тож не дивно, що ринок побутових роботів чекав для початку свого бурхливого розвитку досягнення певного рівня технологій, що сталося в кінці 90-х.

    Точкою відліку цієї події може служити випуск першої версії робота AIBO (Sony), який, незважаючи на порівняно високу ціну ($ 2500), користувався великим попитом. Перша партія цих роботів в кількості 5000 примірників була розкуплена в Інтернеті за 20 хв., Друга партія (також в 1999 р) - за 17 с, і далі темп продажів становив близько 20 000 примірників на рік.

    Також в кінці 90-х з'явилися в масовому виробництві пристрої, які можна було б назвати побутовими роботами в повному розумінні цього слова. Найбільш типовими автономними побутовими роботами є роботи-пилососи. Першою моделлю, випущеною в 2002 р фірмою iRobot, стала Roomba. Потім з'явилися роботи-пилососи, випущені фірмами LG Electronics, Samsung і ін. До 2008 р сумарні обсяги продажів роботів-пилососів в світі склали понад півмільйона примірників на рік.

    Показовим є те, що перші роботи-пилососи, оснащені системами комп'ютерного зору, з'явилися лише в 2006 р До цього моменту використання мобільних процесорівтипу сімейства ARM з частотою 200 МГц дозволяло домогтися зіставлення зображень тривимірних сцен всередині приміщень на основі інваріантних дескрипторів ключових точок з метою сенсорної локалізації робота з частотою близько 5 кадрів / с. Використання зору для визначення роботом свого місця розташування стало економічно виправданим, хоча ще недавно для цих цілей виробники воліли використовувати сонари.

    Подальше підвищення продуктивності мобільних процесорів дозволяє ставити нові завдання для систем комп'ютерного зору в побутових роботах, число продажів яких по всьому світу обчислюється вже мільйонами примірників на рік. Крім завдань навігації, від роботів, призначених для персонального використання, може знадобитися рішення задач розпізнавання людей і їх емоцій по особам, розпізнавання жестів, предметів обстановки, включаючи столові прилади і посуд, одяг, домашніх тварин і т. Д., В залежності від типу завдання, розв'язуваної роботом. Багато з цих завдань далекі від повного вирішення і є перспективними з інноваційної точки зору.

    Таким чином, сучасна робототехніка вимагає вирішення широкого кола завдань комп'ютерного зору, що включає, зокрема:

    • набір завдань, пов'язаних з орієнтацією в зовнішньому просторі (наприклад, завдання одночасної локалізації і картографування - Simultaneous Localization and Mapping, SLAM), визначенням відстаней до об'єктів і т. д;
    • завдання з розпізнавання різних об'єктів і інтерпретації сцен в цілому;
    • завдання з виявлення людей, розпізнаванню їх осіб і аналізу емоцій.

    Системи допомоги водієві

    Крім побутових роботів, методи комп'ютерного зору знайшли широке застосування в системах допомоги водієві. Роботи з детектування розмітки, перешкод на дорозі, розпізнаванню знаків і т. Д. Активно велися і в 90-х роках. Однак достатнього рівня (як по точності і надійності самих методів, так і по продуктивності процесорів, здатних в масштабі реального часу виконувати відповідні методи) вони досягли переважно в останньому десятилітті.

    Одним з показових прикладів є методи стереозрения, використовувані для виявлення перешкод на дорозі. Ці методи можуть бути дуже критичні до надійності, точності і продуктивності. Зокрема, з метою виявлення пішоходів може вимагатися побудова щільної карти дальності в масштабі, близькому до реального часу. Ці методи можуть вимагати сотень операцій на піксель і точності, що досягається при розмірах зображень не менше мегапікселя, тобто при сотнях мільйонів операцій на кадр (декількох мільярдів і більше операцій в секунду).

    Варто відзначити, що загальний прогрес в області комп'ютерного зору аж ніяк не пов'язаний тільки з розвитком апаратного забезпечення. Останнє лише відкриває можливості для застосування обчислювально витратних методів обробки зображень, але самі ці методи також мають потребу в розробці. За останні 10-15 років були доведені до ефективного практичного використання методи зіставлення зображень тривимірних сцен, методи відновлення щільних карт дальності на основі стереозрения, методи виявлення і розпізнавання осіб і т. Д. Загальні принципи розв'язання відповідних задач даними методами не змінилися, але вони збагатилися поруч нетривіальних технічних деталей і математичних прийомів, які зробили ці методи успішними.

    Повертаючись до систем допомоги водієві, не можна не згадати про сучасні методи детектування пішоходів, зокрема, на основі гістограм орієнтованих градієнтів. Сучасні методи машинного навчання, про які ще буде сказано пізніше, вперше дозволили комп'ютера краще людини вирішувати таку досить загальну зорову завдання, як розпізнавання дорожніх знаків, але не завдяки використанню спеціальних засобів формування зображень, а завдяки алгоритмам розпізнавання, які отримували на вхід в точності ту ж інформацію, що і людина.

    Одним з істотних технічних досягнень став безпілотний автомобіль Google, який, однак, використовує багатий набір сенсорів крім відеокамери, а також не працює на незнайомих (заздалегідь не знятих) дорогах і при поганих погодних умовах.

    Таким чином, для систем допомоги водієві потрібно рішення різних завдань комп'ютерного зору, включаючи:

    • стереозрения;
    • виявлення перешкод на дорогах;
    • розпізнавання дорожніх знаків, розмітки, пішоходів і автомобілів;
    • завдання, також вимагають згадки, пов'язані з контролем стану водія.

    Мобільні додатки

    Ще більш масовими в порівнянні з побутовою робототехнікою і системами допомоги водієві є завдання комп'ютерного зору для персональних мобільних пристроїв, Таких як смартфони, планшети і т. Д. Зокрема, число мобільних телефонів неухильно зростає і вже практично перевищило за чисельністю населення Землі. При цьому основна частка телефонів випускається зараз з камерами. У 2009 р кількість таких телефонів перевищила мільярд, що створює колосальний за розмірами ринок для систем обробки зображень і комп'ютерного зору, який далекий від насичення, незважаючи на численні R & D-проекти, що проводяться як самими фірмами - виробниками мобільних пристроїв, так і великим числом стартапів .

    Частина завдань з обробки зображень для мобільних пристроїв з камерами збігається із завданнями для цифрових фотоапаратів. Основна відмінність полягає в якості об'єктивів і в умовах зйомки. Для прикладу можна навести завдання синтезу зображень з розширеним динамічним діапазоном (HDRI) за кількома знімками, отриманими з різною експозицією. У разі мобільних пристроїв на зображеннях присутня більший шум, кадри формуються з великим інтервалом часу, і зміщення камери в просторі також більше, що ускладнює завдання отримання якісних HDRI-зображень, яку при цьому доводиться вирішувати на процесорі мобільного телефону. У зв'язку з цим рішення, здавалося б, ідентичних завдань для різних пристроївможе відрізнятися, що робить ці рішення досі затребуваними на ринку.

    Більший інтерес, однак, представляють нові додатки, які раніше були відсутні на ринку. Широкий клас таких додатків для персональних мобільних пристроїв пов'язаний з завданнями доповненої реальності, які можуть бути дуже різними. Сюди відносяться ігрові програми (що вимагають узгодженого відображення віртуальних об'єктів над зображенням реальної сцени при переміщенні камери), а також різні розважальні програми в цілому, туристичні програми (розпізнавання пам'яток з виведенням інформації про них), а також багато інших додатків, пов'язані з інформаційним пошуком і розпізнаванням об'єктів: розпізнавання написів на іноземних мовах з відображенням їх перекладу, розпізнавання візитних карток з автоматичним занесенням інформації в телефонну книгу, а також розпізнавання осіб з витяганням інформації з телефонної книги, Розпізнавання постерів фільмів (з заміною зображення постера на трейлер фільму) і т. Д.

    Системи доповненої реальності можуть створюватися у вигляді спеціалізованих пристроїв типу Google Glass, що ще більше збільшує інноваційний потенціал методів комп'ютерного зору.

    Таким чином, клас задач комп'ютерного зору, рішення яких можуть бути застосовані в мобільних додатках, вкрай широкий. Великий набір додатків є у методів зіставлення (ототожнення пов'язаних точок) зображень, в тому числі з оцінкою тривимірної структури сцени і визначенням зміни орієнтації камери і методів розпізнавання об'єктів, а також аналізу осіб людей. Однак може бути запропоновано необмежено велике число мобільних додатків, Для яких буде вимагатися розробка спеціалізованих методів комп'ютерного зору. Наведемо лише два таких приклади: запис на мобільний телефонз автоматичною дешифрацией партії в деякій настільній грі і реконструкція траєкторії руху ключки для гольфу при нанесенні удару.

    Інформаційний пошук та навчання

    Багато задач доповненої реальності тісно пов'язані з інформаційним пошуком (так що деякі системи, такі як Google Goggles, складно віднести до якоїсь конкретної області), що робить суттєвий самостійний інтерес.

    Завдання пошуку зображень за змістом також різноманітні. Вони включають зіставлення зображень при пошуку зображень унікальних об'єктів, наприклад архітектурних споруд, скульптур, картин і т. Д., Виявлення і розпізнавання на зображеннях об'єктів класів різного ступеня спільності (автомобілів, тварин, меблів, осіб людей і т. Д., А також їх підкласів), категоризація сцен (місто, ліс, гори, узбережжя і т. д.). Ці завдання можуть зустрічатися в різних додатках - для сортування зображень в домашніх цифрових фотоальбомах, для пошуку товарів за їхніми зображеннями в інтернет-магазинах, для вилучення зображень в геоінформаційних системах, для систем біометричної ідентифікації, для спеціалізованого пошуку зображень в соціальних мережах (наприклад, пошуку осіб людей, привабливих для користувача) і т. д., аж до пошуку зображень в Інтернеті.

    Як вже досягнутий прогрес, так і перспективи його продовження видно на прикладі конкурсу Large Scale Visual Recognition Challenge, в якому кількість розпізнаваних класів збільшилася з 20 у 2010 році до 200 в 2013-му.

    Розпізнавання об'єктів стількох класів зараз немислимо без залучення методів машинного навчання в область комп'ютерного зору. Одна з украй популярних напрямків тут - мережі глибокого навчання, призначені для автоматичної побудови багаторівневих систем ознак, за якими відбувається подальше розпізнавання. Затребуваність цього напрямку видно за фактами придбання різних стартапів такими корпораціями, як Google і Facebook. Так, корпорацією Google в 2013 р була куплена фірма DNNresearch, а в початку 2014 г. - стартап DeepMind. Причому за покупку останнього стартапу конкурував і Facebook (який до цього найняв такого фахівця, як Ян Ле Кун, для керівництва лабораторією, яка веде розробки в області глибокого навчання), а вартість покупки склала $ 400 млн. Варто зазначити, що і згадуваний метод, який виграв у конкурсі з розпізнавання дорожніх знаків, також заснований на мережах глибокого навчання.

    Методи глибокого навчання вимагають великих обчислювальних ресурсів, і навіть для адаптації розпізнавання обмеженого класу об'єктів можуть вимагатися кілька днів роботи на обчислювальному кластері. При цьому в майбутньому можуть бути розроблені ще більш потужні, але вимагають ще більших обчислювальних ресурсів методи.

    висновок

    Ми розглянули лише найбільш поширені програми комп'ютерного зору для масового користувача. Однак існує і безліч інших, менш типових програм. Наприклад, методи комп'ютерного зору можуть бути використані в мікроскопії, оптичної когерентної томографії, цифрової голографії. Численні додатки методів обробки та аналізу зображень в різних професійних областях - біомедицину, космічної галузі, криміналістиці і т. Д.

    Відновлення 3D-профілю листа металу, що спостерігається за допомогою мікроскопа, методом «глибина з фокусування»

    В даний час кількість актуальних додатківкомп'ютерного зору продовжує зростати. Зокрема, для вирішення стають доступними завдання, пов'язані з аналізом відеоданих. Активний розвиток тривимірного телебачення розширює замовлення на системи комп'ютерного зору, для створення яких не розроблені ще ефективні алгоритми і потрібні більш істотні обчислювальні потужності. Такий затребуваною завданням є, зокрема, завдання конвертації відео 2D в 3D.

    Не дивно, що на передньому фронті систем комп'ютерного зору продовжують активно використовуватися спеціальні обчислювальні засоби. Зокрема, зараз популярні графічні процесоризагального призначення (GPGPU) і хмарні обчислення. Однак відповідні рішення поступово перетікають в сегмент персональних комп'ютерів з істотним розширенням можливих додатків.