- PVSM.RU - https://www.pvsm.ru -
Год назад Google сваял платформу Cloud Vision API. Идея платформы — предоставить технологии Computer Vision, в которых Google является безусловным лидером, как сервис. Пару лет назад под каждую задачу существовала своя технология. Нельзя было взять что-то общее и добиться, чтобы алгоритм решал всё. Но Google замахнулся. Вот, прошёл уже год. А технология всё так же не на слуху. На хабре одна статья [1]. Да и та ещё не про Cloud Vision api, а про Face api, которое было предшественником. Англоязычный интернет тоже не пестрит статьями. Разве что от самого Google. Это провал?
Мне было интересно посмотреть что это такое ещё весной. Но сил полноценно посидеть не хватало. Изредка что-то отдельное тестировал. Периодически приходили заказчики и спрашивали, почему нельзя применить Cloud Api. Приходилось отвечать. Или наоборот, отсылать с порога в этом направлении. И внезапно понял, что материала на статью уже достаточно. Поехали.
Что входит в Cloud Vision Api
Гугл говорит много разных и красивых слов. Но это неинтересно. Всё что они умеют делать согласно их прайс-листу:
В статье я буду говорить про Label Detection, ORC, Facial Detection как про наиболее логичные ComputerVision задачки для которых мне известны аналогии/варианты. Немножко вскользь коснусь Landmark Detection.
Label Detection
Так или иначе, этой функцией от Google пользуются все. Поиск по картинке на google.com [2] использует именно её. По сути, Label Detection даёт изображениям характеристики. Характеристикой может быть объект, изображённый на фото. Может быть стиль фотографии, например «Макро», «Портрет», «Чёрно-белое». А может что-то очень общее: «ботанический объект», «атмосферный феномен».
Кроме поиска эта функция может решить задачи:
Аналоги. Но, как ни странно, именно в этом направлении у google есть множество конкурентов:
Microsoft [3]. Умеет достаточно неплохо описывать что происходит на изображении, а не только его составную часть. Нет онлайн-демки, чтобы сравнить.
Вот тут есть большое и полноценное сравнение. Я приведу лишь несколько примеров:
Пример когда гугл не справился: 1 [11]. Пример когда он дал неточное, на мой взгляд, описание: 1 [12]. Нет слова «яблоко». Но только cloudsight справился. Нет слова «человек» — 2 [13]. Нет слова «ворона» — 3 [14].
И только на этой картинке из тех, что я пробовал, гугл обошёл всех и нашёл кошку:
Остальные не справились — 1 [15],2 [16],3 [17]
Вывод: работает неплохо. Конкурентов, идущих в ногу хоть отбавляй. В домашних условиях повторить почти невозможно.
Facial Detection
Распознавание лица. Что умеет гугл:
Что он не умеет, но умеют конкуренты:
Конкуренты, например вот: 1 [18], 2 [19], 3 [20]. А вообще десятки их.
С чем имеет смысл сравнивать Google? Например с выделением лиц каскадами Хаара, как в OpenCV, или HOG, как в dLib. У них Google выигрывает. И точки лица лучше находит, чем dlib:
Dlib:
Ещё [21] и ещё [22].
Google:
Ещё [23] и ещё [24].
Но при этом гугл — платный, а Dlib бесплатный. Чтобы настроить нужно одинаковое количество строчек. При этом если запариться, то можно взять вместо dlib что-то state-of-art и получить точность почти не хуже гугла.
Вообщем этот раунд Google однозначно слил.
Landmark Detection
А вот этот пункт — ПЦ. и у Гугла тут нет равных. И нет аналогов. Когда я понял как это функция работает я подумал «ну, Кремль она распознает». Но не тут то было. Кроме Кремля она успешно распознаёт все мало-мальски значимые туристические объекты. Два примера которые меня выморозили:
Боровск:
Ну фиг с ним, он более-менее туристически популярный. Фотографий много. Пусть повезло.
— Заключье:
Усадьба-пионерлагерь затерянная между Москвой и Питером недалеко от Боровичей.
Как он это делает, не знаю. Вот ещё куча примеров: 1 [25], 2 [26], 3 [27], 4 [28], 5 [29], 6 [30], 7 [31].
Сфэйлился он только один раз. Зато эпичнейшим образом:
OCR — Optical Carecter Recognition
И, наконец, переходим к самой интересной части. Именно ради этого я и полез копаться. Насколько хорошо Google распознаёт тексты. Именно это применение наиболее промышленное, именно тут десяткам производителей и потребителей было бы интересно иметь готовые решения:
Попробуем сравнить то, чего добился гугл. Сравним с существующими решениями. И сравним с его единственным конкурентом как «общего распознавателя» — Microsoft [3].
Книги, тексты
Для текстов у Google есть сильный конкурент Abbyy [32]. По тому, что я затестил, мне кажется, что уровень распознавания символов у них примерно на одном уровне:
Видно, что реально конкурируют только 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 пока конкретно лажают. Из нескольких десятков проверенных автомобильных номеров Microsoft распознал процентов 20. Google процентов 60, да и те без региона. Регион распознавал только в идеальной ситуации, когда крупный номер без грязи. Как только грязь — отдельный кусок распознаёт и всё.
Плюс регулярные ошибки в 1-2 символа:
Системы распознавания номера опираются на априорную информацию => работают лучше. Хотя, конечно, для каких-то применений может и гугла хватит. Идеальный снимок в упор к номеру распознает.
Без априорной информации плохо. Ещё вариант технического зрения — номера поездов. Microsoft вообще не справился. Google дал только процентов 50 правильных. На остальных постоянно косячил:
Так что в задачах контроля качества, стабильного распознавания текста Google и Microsoft годятся только для самых простых задач.
Конечно, OpenSource решений на тему таких задач нет, но зачастую их можно своими силами решить. Перебор простых гипотез, поиск контура, и.т.д. То же выделение автомобильного номера достаточно стабильно работает, например, у OpenCV. Там есть и каскад Хаара и контурное выделение. Плюс можно LBP|HOG обучить.
Итого
Пока ещё до стабильного CV решения всего и вся от гигантов далеко. Но они медленно и плавно захватывают под себя весь рынок. Да, их решения могут работать только в условиях доступа к интернету. Но ведь зачастую будет проще сделать интернет, чем запилить решение самим.
Автор: ZlodeiBaal
Источник [34]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/algoritmy/201054
Ссылки в тексте:
[1] статья: https://habrahabr.ru/company/rambler-co/blog/266885/
[2] google.com: https://www.google.com
[3] Microsoft: https://www.microsoft.com/cognitive-services/en-us/computer-vision-api
[4] IBM: https://visual-recognition-demo.mybluemix.net/
[5] Cloud Sight: https://cloudsightapi.com/
[6] Clarifai: https://www.clarifai.com/demo
[7] гугла: https://habrastorage.org/files/d65/9db/360/d659db360c584c5dab115db9f0e11368.JPG
[8] IBM: https://habrastorage.org/files/ddc/c0a/662/ddcc0a66222a4f13bd992b60cbfec442.JPG
[9] CloudSight: https://habrastorage.org/files/a1e/ca4/d12/a1eca4d1275b4d66907af61e58cfc609.JPG
[10] Clarifi: https://habrastorage.org/files/5e9/9b5/676/5e99b567673e419c911cdd27ccf5d9ba.JPG
[11] 1: https://habrastorage.org/files/058/ff1/6bc/058ff16bc2404714bd3124686aa43107.JPG
[12] 1: https://habrastorage.org/files/998/57f/6b4/99857f6b417a4cc6bde9b9e2ad0d11d0.JPG
[13] 2: https://habrastorage.org/files/941/8b7/131/9418b7131acd40f7a67afbe6934d0a69.JPG
[14] 3: https://habrastorage.org/files/b56/e7b/809/b56e7b809e1a4eaeafc16c45c667f1c6.JPG
[15] 1: https://habrastorage.org/files/ed0/e3d/d81/ed0e3dd816df4aedac87d047fdeb4d0c.JPG
[16] 2: https://habrastorage.org/files/b33/26f/f53/b3326ff53d47461ba7fd605e48843083.JPG
[17] 3: https://habrastorage.org/files/8dd/d15/96c/8ddd1596ca54495196002d67a715397d.JPG
[18] 1: https://www.kairos.com/face-recognition-api
[19] 2: https://www.microsoft.com/cognitive-services/en-us/face-api
[20] 3: https://www.betafaceapi.com/wpa/
[21] Ещё: https://habrastorage.org/files/840/59b/bd2/84059bbd21f24a268c0214605cb887b4.jpg
[22] ещё: https://habrastorage.org/files/68e/849/43e/68e84943e36c498a89f4532c374eaf95.jpg
[23] Ещё: https://habrastorage.org/files/914/eae/4fa/914eae4faac84c8e886c6042cd859d5f.JPG
[24] ещё: https://habrastorage.org/files/14c/67c/ddc/14c67cddc5ae4dd1b30545b199640d23.JPG
[25] 1: https://habrastorage.org/files/283/b32/2cb/283b322cbc7b458d9361c9318f5b12db.JPG
[26] 2: https://habrastorage.org/files/bc6/99c/058/bc699c0589664199bf65a4310fa2aee4.JPG
[27] 3: https://habrastorage.org/files/006/648/6cb/0066486cb70c4c29b053ed87577f174e.JPG
[28] 4: https://habrastorage.org/files/b02/7a8/2b7/b027a82b724f4603ab2a9541a13a7ce6.JPG
[29] 5: https://habrastorage.org/files/f80/75d/cff/f8075dcff0a44918817b074c7fe4d342.JPG
[30] 6: https://habrastorage.org/files/dc7/b64/4f1/dc7b644f10fd4b5bb954f59ee42b6353.JPG
[31] 7: https://habrastorage.org/files/557/a95/02c/557a9502c6dd45e89153898d725e20ba.JPG
[32] Abbyy: https://finereaderonline.com/ru-ru
[33] Image: https://habrastorage.org/files/e85/db7/ec5/e85db7ec538d4bd3b06a2e1ad149aab2.jpg
[34] Источник: https://habrahabr.ru/post/312714/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.