Google Cloud Vision API. Майбутнє Computer Vision as a service настав?

Рік тому Google сваял платформу Cloud Vision API. Ідея платформи — надати технології Computer Vision, в яких Google є безумовним лідером, як сервіс. Пару років тому під кожну задачу існувала своя технологія. Не можна було взяти щось спільне і домогтися, щоб алгоритм вирішував усе. Але Google замахнувся. Ось, пройшов вже рік. А технологія все так само не на слуху. На хабре одна стаття. Та й ще не про Cloud Vision api, а про Face api, яке було попередником. Англомовний інтернет теж не рясніє статтями. Хіба що від самого Google. Це провал?

Мені було цікаво подивитися що це таке ще навесні. Але сил повноцінно посидіти не вистачало. Зрідка щось окреме тестував. Періодично приходили замовники і запитували, чому не можна застосувати Cloud Api. Доводилося відповідати. Або навпаки, подаються з порога в цьому напрямку. І раптом зрозумів, що матеріалу на статтю вже досить. Поїхали.


Що входить в Cloud Vision Api
Гугл каже багато різних і гарних слів. Але це нецікаво. Все що вони вміють робити згідно з їх прайс-листу:

  • Label Detection — детектування класу до якого належить зображення, детектування того, що зображено на зображенні: котики, собачки, слоники, безтурботність, і. т. д.
  • OCR — розпізнавання тексту
  • Explicit Content Detection — детектування всякого недоброго контенту: вайп неграми і інші жахи життя.
  • Facial Detection — детектування осіб, чорт осіб, особливих точок на обличчях
  • Landmark Detection — детектування геолокації за фоточке
  • Logo Detection — детектування символів і піктограм
  • Image Properties — так і не зрозумів, що це означає
В статті я буду говорити про Label Detection, ORC, Facial Detection як про найбільш логічні ComputerVision задачки для яких мені відомі аналогії/варіанти. Трошки побіжно торкнуся Landmark Detection.

Label Detection
Так чи інакше, цією функцією від Google користуються всі. Пошук по картинці на google.com використовує саме її. По суті, Label Detection дає зображень характеристики. Характеристикою може бути об'єкт, зображений на фото. Може бути стиль фотографії, наприклад, «Макро», «Портрет», «Чорно-біле». А може щось дуже загальне: «ботанічний об'єкт», «атмосферний феномен».
Крім пошуку ця функція може розв'язати задачі:
  • Сортування бази зображень
  • Підпису тегів до якому-небудь фотобанку
  • Аналізу інтересів за фотографіями
  • І. т. д.
Аналоги. Але, як не дивно, саме в цьому напрямку у google є безліч конкурентів:
Microsoft. Вміє досить непогано описувати що відбувається на зображенні, а не тільки його складову частину. Немає онлайн-демки, щоб порівняти.
  • IBM куди більш бідна і погана распозновалка.
  • Cloud Sight — каламутне розводилово. Типо прикидаються, що у них автоматична система, яка в 100% правильно розпізнає. В реальності сидять індуси. Хочуть по 50 баксів за 800 зображень. У мене распознавало дуже погано. Але, може, просто всі вийшли покурити.
  • Clarifai. Працює офігенно. Я навіть не повірив. Але розпізнає і підписує краще, всіх на протязі 2-3 секунд. Іноді, правда, гугл перемагав
  • Є ще кілька дрібних гравців з гірше працюють розпізнаванням
  • Є навчені на ImageNet відкриті сітки, які можна налаштувати. Дешево і сердито. Але працювати буде не дуже.
Ось тут є велике і повноцінне порівняння. Я наведу лише кілька прикладів:

  • На думку гугла.
  • На думку IBM.
  • На думку CloudSight.
  • На думку Clarifi.
  • На думку навченої на ImageNet GoogleNet викладеної у відкритому доступі у Caffe це Сибірський Хаскі.
Приклад коли гугл не впорався: 1. Приклад коли він дав неточне, на мій погляд, опис: 1. Немає слова «яблуко». Але тільки cloudsight впорався. Немає слова «людина» — 2. Немає слова «ворона» — 3.

І тільки на цій картинці з тих, що я пробував, гугл обійшов всіх і знайшов кішку:

Решта не впоралися — 1,2,3
Висновок: працює непогано. Конкурентів, що йдуть в ногу хоч відбавляй. В домашніх умовах повторити майже неможливо.

Facial Detection
Розпізнавання особи. Що вміє гугл:
  • Знайти особа
  • Знайти особливі точки
  • Визначити вираз обличчя
Що він не вміє, але вміють конкуренти:
  • Визначити стать
  • Визначити вік
  • Порівняти дві особи і прийняти рішення однакові вони чи ні
Конкуренти, наприклад: 1, 2, 3. А взагалі десятки їх.

З чим має сенс порівнювати Google? Наприклад з виділенням осіб каскадами Хаара, як в OpenCV, або HOG, як в dLib. У них Google виграє. І точки обличчя краще знаходить, ніж dlib:
Dlib:

і .
Google:

і .

Але при цьому гугл — платний, а Dlib безкоштовний. Щоб налаштувати потрібно однакову кількість рядків. При цьому якщо запариться, то можна взяти замість dlib щось state-of-art і отримати точність майже не гірше гугла.

Вообщем цей раунд Google однозначно злив.

Landmark Detection
А ось цей пункт — ПЦ. і у Гугла тут немає рівних. І немає аналогів. Коли я зрозумів як це функція працює я подумав «ну, Кремль вона розпізнає». Але не тут то було. Крім Кремля вона успішно розпізнає всі мало-мальськи важливі туристичні об'єкти. Два приклади які мене выморозили:
Боровськ:

Ну фіг з ним, він більш-менш туристично популярний. Фотографій багато. Нехай пощастило.
— Заключье:

Садиба-піонертабір загублена між Москвою і Пітером недалеко від Боровичів.
Як він це робить, не знаю. Ось ще купа прикладів: 1, 2, 3, 4, 5, 6 7.

Сфэйлился він тільки один раз. Зате эпичнейшим чином:


OCR — Optical Carecter Recognition
І, нарешті, переходимо до самої цікавої частини. Саме заради цього я і поліз копатися. Наскільки добре Google розпізнає тексти. Саме це застосування найбільш промислове, саме тут десяткам виробників і споживачів було б цікаво мати готові рішення:
  • Розпізнавати книги
  • Розпізнавати цінники
  • Розпізнавати таблички
  • Розпізнавати автономери, номери поїздів, номери будинків, ...
  • І. т. д., застосувань не злічити
Спробуємо порівняти те, чого домігся гугл. Порівняємо з існуючими рішеннями. І порівняємо з його єдиним конкурентом як «загального розпізнавання» — Microsoft.

Книги, тексти
Для текстів у Google є сильний конкурент Abbyy. З того, що я затестил, мені здається, що рівень розпізнавання символів у них приблизно на одному рівні:


GooglePerform a wireless installation (wireless models only
Before starting the installation, verify that the
wireless access point is working correctly, the computer is connected to the
network, and the product is turned on
If there is not a solid blue light on the top of the to process A
If there is a solid blue light on the top of process ⟨B 1⟩
3. Connect the USB cable between the computer and the product.
The ⟨HP⟩1 ⟨Smart Install⟩4 program (see picture should start
automatically within 30 seconds. Note: If ⟨HP⟩1 Smart Install does not
start automatically. ⟨AutoPlay⟩6 might be disabled on your computer
⟨Browse My Computer⟩5and double-click the ⟨HP⟩1 Smart Install CD drive.
Double-click the ⟨SISetup.⟩7exe file to run the program to install the
product. If you cannot find the ⟨HP⟩1 Smart Install CD drive,
use the software CD to install the product.
2. Follow the onscreen instructions.
3. When prompted to select a connection type, select the ⟨Configure⟩11
to print over ⟨Wireless Network⟩10 option.
1. From the product control panel, press and hold the cancel button X
for 5 seconds, and then release it to print a Configuration page. This
page will have an ⟨lP⟩8address in the ⟨Network Information⟩9 section.
2. At the computer, open a Web browser, type the product IP address
in the address field, and press Enter the key to open the product
embedded web server page.
3. Click the ⟨HP⟩1 Smart Install табуляції, and then click the Download button.
4. Follow the onscreen instructions.


AbbyyPerform a wireless installation (wireless models only)
Before starting the installation, verify that the
point is working correctly, the computer is connected to the
network, and the product is turned on.
If there is not a solid blue light on the top of ?t u pfod-; to process A.
If there is a solid blue light on the top of the proa ct, g< f process B.
A.
1. Connect the USB cable between the computer and the product. The HP Smart Install program (see picture above) should start automatically within 30 seconds Note: If HP Smart Install does not start automatica ly AutoPlay might be disabled on your computer Browse My Computer and double-click the HP Smart Install CD drive. Double-click the SISetup.exe file to run the program to instal the product. If you cannot find the HP Smart Install CD drive, use the software CD to install the product
2. Follow the onscreen instructions.
3. When prompted to select a connection type, select the Configure to print over Wireless Network option
1. From the product control panel, press and hold the cancel button for X 5 seconds, and then release it to print a Configuration page. This page will have an IP address in the Network Information section
2. At the computer, open a Web browser, type the product IP address in the address field, and press Enter the ke>» to open the product embedded web server page
3. Click the HP Smart Install табуляції, dick and then the Download button
4. Follow the onscreen instructions.


MicrosoftPerform a wireless instanotion (wir&ss models 0+)
Before starting the installation. verify that the
pant is working correctly, the cornputer •s connected the
network. and the product is turned on.
If there is not a solid blue light on the top product.
to process A.
If there is 0 sohd blue light on the bp the product. 90 to
process B.
l. Connect the USB cable between the computer and
the product. The HP Smart Install program (see p•dure
above) should skirt automatically within 30 seconds-
Note: If HP Smart Install does not start automatically
AutoPlay rmght be disabled on your computer
Browse My Computer and double-click the
HP Smart Install CD drive. Double-click the
SISetup.exe file to run the program the
product. If you cannot find the HP Smart Install CD
drive, use the software CD to install the product.
2.
Follow the onscreen instructions.
3.
When prompted to select a connection type, select the
Configure to print over Wireless Network opt.on.
B.
. From the product control panel, press and hold the
cancel button for X 5 seconds, and then it to release
print a Configuration page. This page will have an IP
address in the Network Information section.
2. At the computer, open a Web browser, type
IP address in the address field. and press Enter the key
to open the product embedded web server page.
3. Click the HP Smart Install табуляції, and then click the
Download button.
4. Follow the onscreen instructions.


Видно, що реально конкурують тільки Google і Abbyy.
Але як тільки справа стосується навала тексту на сторінці, то тут перемагає Abbyy: він вміє структурувати текст, переказувати таблиці, колонтитули, і. т. д. Гугл видає навал тексту. Плюс у Гугла мало мов підтримки.
Вангую, що найближчим часом з'являться стартапи, які будуть використовувати Google Api для перекладу, а всю структурну аналітику + збір тексту зверху причіпляти. Враховуючи, що Abbyy хоче за переклад раз в 10 більше, ніж Google — це досить соковитий навар.

Зрозуміло, що в сегменті текстів немає жодного хорошого софта, який можна вдома запустити. Так що переходимо до наступної OCR задачі.

Цінники, інші таблички
Важливий момент — google не підтримує інші мови, на відміну від microsoft. Але в цілому обидва працюють, коли текст хороший, не змащений, не нахилений, не зашумлений і не блищить:

Microsoft:
175766
AHAHAC B AHAHACE
tıııışııııııı 175T
Google:
175 AHAHAC BAHAHACE 340167 000000 900708249

Microsoft: Не розпізнано нічого
Google:
K)cpeacrao ainocya. AOS Aqua Aqua ban.aasa an03 Depa Pocowe 100or — 912 mov

Microsoft: по нулях
Google:


В цілому, десь 60% етикеток — текст прочитується. І це на мій погляд просто офігенний результат. Тільки от як і навіщо цей текст потім збирати — незрозуміло.

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

Google

Microsoft


Але все одно, тексти різного формату не дуже добре розпізнаються:
Google

Microsoft


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

Плюс регулярні помилки в 1-2 символу:

Системи розпізнавання номера спираються на апріорну інформацію => працюють краще. Хоча, звичайно, для будь-яких застосувань може і гугла вистачить. Ідеальний знімок впритул до номера розпізнає.
Без апріорної інформації погано. Ще варіант технічного зору — номери поїздів. Microsoft взагалі не впорався. Google дав тільки 50 відсотків правильних. На решті постійно косячил:

Так що в задачах контролю якості, стабільного розпізнавання тексту Google і Microsoft годяться тільки для найпростіших завдань.
Звичайно, OpenSource рішень на тему таких завдань немає, але найчастіше їх можна своїми силами вирішити. Перебір простих гіпотез, пошук контуру, і. т. д. То ж виділення автомобільного номера досить стабільно працює, наприклад, у OpenCV. Там є і каскад Хаара і контурне виділення. Плюс можна LBP|HOG навчити.

Разом

  • Label Detection — Google попереду, але в тісному і щільної боротьби.
  • Facial Detection — Google відстав. Не зрозуміло про що взагалі його рішення.
  • Landmark Detection — Обожнювання! Цього ніде немає!
  • OCR — Справжня баталія розвивається тут. Google почав наступати на п'яти серйозних рішень, але поки що не може обійти. При цьому в області де чітка постановка завдання відсутня йде попереду. Microsoft досить далеко позаду, але намагається наздогнати.
Поки ще до стабільного CV вирішення всього і вся від гігантів далеко. Але вони повільно і плавно захоплюють під себе весь ринок. Так, їх рішення можуть працювати тільки в умовах доступу до інтернету. Але ж часто буде простіше зробити інтернет, ніж запив рішення самим.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.