Java, UX, HTML, CSS, WEB-design

Мощный анализ изображений с Google Cloud Vision и Python

Краткое описание по статье Мощный анализ изображений с Google Cloud Vision и Python

Название: Мощный анализ изображений с Google Cloud Vision и Python . Краткое описание: ⭐ Бартош Бис . Дата публикации: 25.01.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года


  • Бартош Бискупски

  • 0 Комментарии

Мощный анализ изображений с Google Cloud Vision и Python

  • 8 минут чтения

  • Опыт проектирования, машинное обучение, API, приложения

Краткое резюме ↬

Возможности применения сервиса Google Cloud Vision практически безграничны. Благодаря доступной библиотеке Python она, безусловно, может помочь вам пробудить более глубокий интерес к технологиям машинного обучения.

Совсем недавно я создал веб-приложение для управления личными расходами пользователей. Его основные функции заключаются в сканировании чеков покупок и извлечении данных для дальнейшей обработки. Google Vision API оказался отличным инструментом для получения текста из фотографии. В этой статье я проведу вас через процесс разработки с помощью Python в примере проекта.

Если вы новичок, не волнуйтесь. Вам понадобятся только самые базовые знания этого языка программирования — никаких других навыков не требуется.

Давайте начнем, не так ли?

Никогда не слышали о Google Cloud Vision?

Это API, который позволяет разработчикам анализировать содержимое изображения с помощью извлеченных данных. Для этой цели Google использует модели машинного обучения, обученные на большом наборе изображений. Все это доступно с помощью одного запроса API. Механизм, лежащий в основе API, классифицирует изображения, обнаруживает объекты, лица людей и распознает печатные слова на изображениях.

В качестве примера возьмем всеми любимый Giphy. Они внедрили API для извлечения данных подписей из GIF-файлов, что привело к значительному улучшению взаимодействия с пользователем. Другим примером является сайт realtor.com, который использует OCR Vision API для извлечения текста из изображений вывесок «Продается», сделанных в мобильном приложении, чтобы предоставить более подробную информацию об объекте недвижимости.

Краткий обзор машинного обучения

Начнем с ответа на вопрос, который многие из вас наверняка уже слышали — что такое машинное обучение?

Общая идея состоит в том, чтобы разработать программируемую модель, которая находит закономерности в предоставленных данных. Чем более качественные данные вы предоставляете и чем лучше дизайн модели, которую вы используете, тем более разумным будет результат. Благодаря «дружественному машинному обучению» (как Google называет свои услуги машинного обучения через API) вы можете легко включить часть искусственного интеллекта в свои приложения.

Рекомендуемое чтение: Начало работы с машинным обучением

Еще после прыжка! Продолжить чтение ниже ↓

Как начать работу с Google Cloud

Начнем с регистрации в Google Cloud. Google требует аутентификации, но это просто и безболезненно — вам нужно только сохранить файл JSON, включающий ключ API, который вы можете получить непосредственно из Google Cloud Platform.

Загрузите файл и добавьте его путь к переменным среды:

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/apikey.json

Кроме того, в процессе разработки вы можете поддержать себя с помощью from_serivce_account_json() метод, который я опишу далее в этой статье. Чтобы узнать больше об аутентификации, ознакомьтесь с официальной документацией Cloud.

Google предоставляет пакет Python для работы с API. Добавим последнюю версию облачное видение Google == 0,33 в ваше приложение. Время кодировать!

Как объединить Google Cloud Vision с Python

Во-первых, давайте импортируем классы из библиотеки.

from google.cloud import vision
from google.cloud.vision import types

Когда об этом позаботятся, теперь вам понадобится экземпляр клиента. Для этого вы будете использовать функцию распознавания текста.

client = vision.ImageAnnotatorClient()

Если вы не будете хранить свои учетные данные в переменных среды, на этом этапе вы можете добавить их непосредственно в клиент.

client = vision.ImageAnnotatorClient.from_service_account_file(
'/path/to/apikey.json'
)

Предполагая, что вы храните изображения для обработки в папке «images» внутри каталога вашего проекта, давайте откроем одно из них.

Изображение чека, которое может быть обработано Google Cloud Vision

Пример простой квитанции, которую может обработать Google Cloud Vision. (Большой превью)

image_to_open = 'images/receipt.jpg'

with open(image_to_open, 'rb') as image_file:
    content = image_file.read()

Следующим шагом является создание объекта Vision, который позволит вам отправить запрос на продолжение распознавания текста.

image = vision.types.Image(content=content)

text_response = client.text_detection(image=image)

Ответ состоит из обнаруженных слов, хранящихся в качестве ключей описания, их местоположения на изображении и предсказания языка. Например, давайте подробнее рассмотрим первое слово:

[
...
description: "SHOPPING"
bounding_poly {
  vertices {
    x: 1327
    y: 1513
  }
  vertices {
    x: 1789
    y: 1345
  }
  vertices {
    x: 1821
    y: 1432
  }
  vertices {
    x: 1359
    y: 1600
  }
}
...
]

Как видите, чтобы отфильтровать только текст, нужно получить описание «по всем элементам». К счастью, на помощь приходит мощное понимание списков Python.

texts = [text.description for text in text_response.text_annotations]

['SHOPPING STOREnREG 12-21n03:22 PMnCLERK 2n618n1 MISCn1 STUFFn$0.49n$7.99n$8.48n$0.74nSUBTOTALnTAXnTOTALnCASHn6n$9. 22n$10.00nCHANGEn$0.78nNO REFUNDSnNO EXCHANGESnNO RETURNSn', 'SHOPPING', 'STORE', 'REG', '12-21', '03:22', 'PM', 'CLERK', '2', '618', '1', 'MISC', '1', 'STUFF', '$0.49', '$7.99', '$8.48', '$0.74', 'SUBTOTAL', 'TAX', 'TOTAL', 'CASH', '6', '$9.', '22', '$10.00', 'CHANGE', '$0.78', 'NO', 'REFUNDS', 'NO', 'EXCHANGES', 'NO', 'RETURNS']

Если внимательно присмотреться, можно заметить, что первый элемент списка содержит весь обнаруженный на изображении текст, хранящийся в виде строки, а остальные — отдельные слова. Распечатаем.

print(texts[0])

SHOPPING STORE
REG 12-21
03:22 PM
CLERK 2
618
1 MISC
1 STUFF
$0.49
$7.99
$8.48
$0.74
SUBTOTAL
TAX
TOTAL
CASH
6
$9. 22
$10.00
CHANGE
$0.78
NO REFUNDS
NO EXCHANGES
NO RETURNS

Довольно точно, правда? И, очевидно, весьма полезно, так что давайте играть больше.

Что вы можете получить от Google Cloud Vision?

Как я уже упоминал выше, Google Cloud Vision не только распознает текст, но и позволяет обнаруживать лица, ориентиры, свойства изображений и веб-соединения. Имея это в виду, давайте выясним, что он может рассказать вам о веб-ассоциациях изображения.

web_response = client.web_detection(image=image)

Окей, Google, ты действительно знаешь, что изображено на полученном изображении?

web_content = web_response.web_detection
web_content.best_guess_labels
>>> [label: "Receipt"]

Хорошая работа, Гугл! Это действительно квитанция. Но давайте дадим вам еще немного упражнений — вы видите что-нибудь еще? Как насчет большего количества прогнозов, выраженных в процентах?

predictions = [
(entity.description, '{:.2%}'.format(entity.score))) for entity in web_content.web_entities
]

>>> [('Receipt', '70.26%'), ('Product design', '64.24%'), ('Money', '56.54%'), ('Shopping', '55.86%'), ('Design', '54.62%'), ('Brand', '54.01%'), ('Font', '53.20%'), ('Product', '51.55%'), ('Image', '38.82%')]

Много ценных идей, молодец, мой всемогущий друг! Можно также узнать, откуда взялось изображение и есть ли у него копии?

web_content.full_matching_images
 >>> [
url: "https://www.rcapitalassociates.com/wp-content/uploads/2018/03/receipts.jpg", 
url:"https://media.istockphoto.com/photos/shopping-receipt-picture-id901964616?k=6&m=901964616&s=612x612&w=0&h=RmFpYy9uDazil1H9aXkkrAOlCb0lQ-bHaFpdpl76o9A=", 
url: "https://www.pakstat.com.au/site/assets/files/1172/shutterstock_573065707.500x500.jpg"
]

Я впечатлен. Спасибо, Гугл! Но одного недостаточно, не могли бы вы привести мне три примера похожих изображений?

web_content.visually_similar_images[:3]
>>>[
url: "https://thumbs.dreamstime.com/z/shopping-receipt-paper-sales-isolated-white-background-85651861.jpg", 
url: "https://thumbs.dreamstime.com/b/grocery-receipt-23403878.jpg", 
url:"https://image.shutterstock.com/image-photo/closeup-grocery-shopping-receipt-260nw-95237158.jpg"
]

Сладкий! Отличная работа.

Есть ли искусственный интеллект в Google Cloud Vision?

Как вы можете видеть на изображении ниже, работа с квитанциями может быть немного эмоциональной.

Мужчина кричит и выглядит напряженным, держа длинную квитанцию

Пример стресса, который вы можете испытать, получая квитанцию. (Большой превью)

Давайте посмотрим, что Vision API может сказать вам об этой фотографии.

image_to_open = 'images/face.jpg'

with open(image_to_open, 'rb') as image_file:
    content = image_file.read()
image = vision.types.Image(content=content)

face_response = client.face_detection(image=image)
face_content = face_response.face_annotations

face_content[0].detection_confidence
>>> 0.5153166651725769

Не так уж плохо, алгоритм более чем на 50% уверен, что на картинке есть лицо. Но можете ли вы узнать что-нибудь об эмоциях, стоящих за этим?

face_content[0]
>>> [
...
joy_likelihood: VERY_UNLIKELY
sorrow_likelihood: VERY_UNLIKELY
anger_likelihood: UNLIKELY
surprise_likelihood: POSSIBLE
under_exposed_likelihood: VERY_UNLIKELY
blurred_likelihood: VERY_UNLIKELY
headwear_likelihood: VERY_UNLIKELY
...
]

Удивительно, но с помощью простой команды вы можете проверить вероятность некоторых основных эмоций, а также головной убор или свойства фотографии.

Когда дело доходит до обнаружения лиц, я должен обратить ваше внимание на некоторые потенциальные проблемы, с которыми вы можете столкнуться. Вы должны помнить, что вы передаете фотографию машине, и хотя API Google использует модели, обученные на огромных наборах данных, вполне возможно, что он вернет некоторые неожиданные и вводящие в заблуждение результаты. В сети можно найти фотографии, показывающие, как легко можно обмануть искусственный интеллект, когда дело доходит до анализа изображений. Некоторые из них могут показаться забавными, но есть тонкая грань между невинными и оскорбительными ошибками, особенно когда ошибка касается человеческого лица.

Без сомнения, Google Cloud Vision — надежный инструмент. Более того, с ним интересно работать. Архитектура API REST и широко доступный пакет Python делают его еще более доступным для всех, независимо от того, насколько вы продвинуты в разработке Python. Только представьте, насколько значительно вы можете улучшить свое приложение, используя его возможности!

Рекомендуемое чтение: Приложения машинного обучения для дизайнеров

Как вы можете расширить свои знания о Google Cloud Vision

Возможности применения сервиса Google Cloud Vision практически безграничны. Имея доступную библиотеку Python, вы можете использовать ее в любом проекте на основе языка, будь то веб-приложение или научный проект. Это, безусловно, может помочь вам пробудить более глубокий интерес к технологиям машинного обучения.

Документация Google содержит отличные идеи о том, как применять функции Vision API на практике, а также дает вам возможность узнать больше о машинном обучении. Я особенно рекомендую ознакомиться с руководством по созданию расширенного приложения для поиска изображений.

Можно сказать, что то, что вы увидели в этой статье, похоже на волшебство. В конце концов, кто бы мог подумать, что простой и легкодоступный API поддерживается таким мощным научным инструментом? Все, что осталось сделать, это написать несколько строк кода, дать волю своему воображению и ощутить безграничный потенциал анализа изображений.

Сокрушительная редакция
(рб, ра, иль)




Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Мощный анализ изображений с Google Cloud Vision и Python

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Кнопка «Наверх»