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

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

Технології та моделі для нашої майбутньої системи комп'ютерного зору створювалися та вдосконалювалися поступово та в різних проектах нашої компанії – у Пошті, Хмарі, Пошуку. Визрівали як хороший сир чи коньяк. Одного разу ми зрозуміли, що наші нейромережі показують відмінні результати у розпізнаванні, і вирішили звести їх у єдиний b2b-продукт — Vision, яким ми тепер користуємося самі і пропонуємо скористатися вам.

Сьогодні наша технологія комп'ютерного зору на платформі Mail.Ru Cloud Solutions успішно працює та вирішує дуже складні практичні завдання. У її основі лежить ряд нейронних мереж, які навчені наших дата-сетах і спеціалізуються на вирішенні прикладних завдань. Усі сервіси крутяться на наших серверних потужностях. Ви можете інтегрувати у свої програми публічний API Vision, через який доступні всі можливості сервісу. API швидкодіючий – завдяки серверним GPU середній час відгуку всередині нашої мережі на рівні 100 мс.

Заходьте під кат, там детальна розповідь та багато прикладів роботи Vision.

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

1. Наша модель Face Recognition

1.1. Нейронна мережа та швидкість обробки

Для розпізнавання ми використовуємо модифікацію моделі нейронної мережі ResNet 101. Average Pooling наприкінці замінений повним шаром за аналогією з тим, як це зроблено в ArcFace. Однак розмір векторних уявлень дорівнює 128, а не 512. Наша навчальна вибірка містить близько 10 млн фотографій 273 персон.

Модель працює дуже швидко завдяки ретельно підібраній архітектурі серверної конфігурації та обчисленням на GPU. На отримання відповіді від API у наших внутрішніх мережах йде від 100 мс - сюди входить детектування особи (виявлення особи на фото), розпізнавання та повернення PersonID у відповіді API. При великих обсягах вхідних даних - фотографій і відео - набагато більше часу йтиме на передачу даних сервісу і на відповідь.

1.2. Оцінка ефективності моделі

А ось визначення ефективності роботи нейромереж — завдання дуже неоднозначне. Якість їхньої роботи залежить від того, на яких дата-сетах навчалися моделі та чи оптимізувалися вони під роботу з конкретними даними.

Оцінювати точність своєї моделі ми починали з популярного верифікаційного тесту LFW, але дуже маленький і простий. Після досягнення 99,8% точності від нього вже немає сенсу. Є хороше змагання для оцінки моделей розпізнавання - Megaface на ньому ми поступово дісталися до 82% rank 1. Тест Megaface складається з мільйона фотографій - дистракторів, - і модель повинна вміти добре відрізняти кілька тисяч фотографій знаменитостей з датасет Facescrub від дистракторів. Однак, очистивши тест Megaface від помилок, ми з'ясували, що на очищеному варіанті досягаємо точності 98% rank 1 (фотографії знаменитостей взагалі досить специфічні). Тому створили окремий ідентифікаційний тест, схожий на Megaface, але із фотографіями «звичайних» людей. Далі покращували точність розпізнавання на своїх датасетах та пішли далеко вперед. Крім того, ми використовуємо тест якості кластеризації, що складається з кількох тисяч фотографій; він симулює розмітку осіб у хмарі користувача. В даному випадку кластери - це групи схожих осіб, по групі на кожну людину, що розпізнається. Якість роботи ми перевіряли на справжніх (справжніх) групах.

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

1.3. Приклади тестування у складних ситуаціях

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

Відразу зазначимо, що під час тестування нам доступні різні параметри та пороги моделей, які ми можемо налаштовувати для досягнення того чи іншого результату. Публічне API оптимізовано під максимальну точність на загальних кейсах.

Почнемо з найпростішого, з розпізнавання обличчя у фас.

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

Це було дуже легко. Ускладнимо завдання, додамо бороду і жменю років.

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

Хтось скаже, що це теж було не надто складно, адже в обох випадках обличчя видно цілком, алгоритм доступно багато інформації про особу. Гаразд, повернемо Тома Харді у профіль. Це завдання набагато складніше, і на її успішне вирішення зі збереженням низького рівня помилок ми витратили чимало сил: підбирали навчальну вибірку, продумували архітектуру нейромережі, відточували функції втрат та вдосконалювали попередню обробку фотографій.

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

Одягнемо на нього головний убір:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2. Практичні приклади використання

2.1. Контроль фізичного доступу: коли двоє йдуть однією пропуском

За допомогою Vision можна реалізувати системи обліку приходу та догляду співробітників. У традиційної системи на основі електронних перепусток є очевидні недоліки, наприклад, можна пройти вдвох по одному бейджу. Якщо ж пропускну систему (СКУД) доповнити Vision, вона буде чесно фіксувати, хто і коли прийшов/пішов.

2.2. Облік робочого часу

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

2.3. Відеоаналітика: відстеження людей та безпека

Відстежуючи людей за допомогою Vision, можна точно оцінювати реальну прохідність торгових зон, вокзалів, переходів, вулиць та багатьох інших громадських місць. Також велику допомогу наш трекінг може надати у контролі доступу, наприклад, на склад чи інші важливі службові приміщення. І, звичайно ж, відстеження людей та осіб допомагає вирішувати завдання безпеки. Спіймали когось за крадіжкою у вашому магазині? Занесіть його PersonID, який повернув Vision, у чорний список вашого програмного забезпечення для відеоаналітики, і наступного разу система відразу попередить охорону, якщо цей тип знову у вас з'явиться.

2.4. В торгівлі

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

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

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

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

2.5. На транспорті

Інший приклад забезпечення безпеки за допомогою відеоаналітики – визначення залишених речей у залах аеропортів чи вокзалів. Vision можна навчити розпізнавати об'єкти сотень класів: меблі, сумки, валізи, парасольки, різні види одягу, пляшки і так далі. Якщо система відеоаналітики виявляє безхазяйний об'єкт і розпізнає його за допомогою Vision, то подає сигнал службі безпеки. Схоже завдання пов'язане з автоматичним визначенням нестандартних ситуацій у громадських місцях: комусь стало погано, або хтось курить у недозволеному місці, або людина впала на рейки, і так далі всі ці патерни системи відеоаналітики можуть розпізнавати через API Vision.

2.6. Документообіг

Ще одне цікаве майбутнє застосування Vision, яке ми зараз розробляємо - розпізнавання документів та їхній автоматичний парсинг до баз даних. Замість того, щоб вручну вбивати (або ще гірше, вписувати) нескінченні серії, номери, дати видачі, номери рахунків, реквізити банків, дати та місця народження та безліч інших формалізованих даних, можна буде сканувати документи та автоматично надсилати їх захищеним каналом через API у хмару, де система буде на льоту ці документи розпізнає, відпарсить і поверне відповідь з даними у потрібному форматі для автоматичного внесення до бази даних. Сьогодні Vision вже вміє класифікувати документи (у тому числі в PDF) — розрізняє паспорти, СНІЛС, ІПН, свідоцтва про народження, шлюб та інші.

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

3. Схема роботи API

"Вхідними воротами" Vision для користувачів є REST API. На вхід може приймати фотографії, відеофайли і трансляції з мережевих камер (RTSP-потоки).

Щоб скористатися Vision, потрібно зареєструватися у сервісі Mail.ru Cloud Solutions та отримати токени доступу (client_id + client_secret). Аутентифікація користувачів виконується за протоколом OAuth. Вихідні дані в тілах запитів POST відправляються в API. А у відповідь клієнт отримує від API результат розпізнавання в JSON-форматі, причому структурована відповідь: він містить інформацію про знайдені об'єкти та їх координати.

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

Приклад відповіді

{
   "status":200,
   "body":{
      "objects":[
         {
            "status":0,
            "name":"file_0"
         },
         {
            "status":0,
            "name":"file_2",
            "persons":[
               {
                  "tag":"person9"
                  "coord":[149,60,234,181],
                  "confidence":0.9999,
                  "awesomeness":0.45
               },
               {
                  "tag":"person10"
                  "coord":[159,70,224,171],
                  "confidence":0.9998,
                  "awesomeness":0.32
               }
            ]
         }

         {
            "status":0,
            "name":"file_3",
            "persons":[
               {
               "tag":"person11",
               "coord":[157,60,232,111],
               "aliases":["person12", "person13"]
               "confidence":0.9998,
               "awesomeness":0.32
               }
            ]
         },
         {
            "status":0,
            "name":"file_4",
            "persons":[
               {
               "tag":"undefined"
               "coord":[147,50,222,121],
               "confidence":0.9997,
               "awesomeness":0.26
               }
            ]
         }
      ],
      "aliases_changed":false
   },
   "htmlencoded":false,
   "last_modified":0
}

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

В API Vision використовують таке поняття, як спейс (space). Це інструмент для створення різних множин осіб. Приклади спейсів - чорні та білі списки, списки відвідувачів, співробітників, клієнтів і т. д. Для кожного токена у Vision можна створити до 10 спейсів, у кожному спейсі може бути до 50 тис. PersonID, тобто до 500 тис. на один токен . При цьому кількість токенів на один обліковий запис не обмежена.

Сьогодні API підтримує такі методи визначення та розпізнавання:

  • Recognize/Set - визначення та розпізнавання осіб. Автоматично надає PersonID кожній унікальній особі, повертає PersonID та координати знайдених осіб.
  • Delete — видалення конкретного PersonID з бази даних осіб.
  • Truncate – очищення всього спейсу від PersonID, корисно якщо він використовувався як тестовий і потрібно обнулити базу для продакшену.
  • Detect — визначення об'єктів, сцен, автомобільних номерів, пам'яток, черг тощо. Повертає клас знайдених об'єктів та їх координати
  • Detect для документів - детектує конкретні типи документів РФ (відрізняє паспорт, снілс, інн та ін).

Також ми незабаром закінчуємо роботу над методами для OCR, визначення статі, віку та емоцій, а також вирішення завдань мерчендайзингу, тобто для автоматичного контролю викладення товарів у магазинах. Повну документацію з API ви знайдете тут: https://mcs.mail.ru/help/vision-api

4. висновок

Зараз через публічний API можна отримати доступ до розпізнавання облич на фотографіях та відео, підтримується визначення різних об'єктів, автомобільних номерів, пам'яток, документів та цілих сцен. Сценаріїв застосування – море. Приходьте, тестуйте наш сервіс, ставте перед ним найкаверзніші завдання. Перші 5000 транзакцій – безкоштовно. Можливо, він виявиться «недостатнім інгредієнтом» для ваших проектів.

Доступ до API можна миттєво отримати під час реєстрації та підключення Vision. Всім хабракористувачам – промокод на додаткові транзакції. Пишіть у личку адресу електронної пошти, на яку реєстрували обліковий запис!

Джерело: habr.com

Додати коментар або відгук