Использование Vision API с C#

1. Обзор

API Google Cloud Vision позволяет разработчикам легко интегрировать функции распознавания изображений в приложения, включая маркировку изображений, распознавание лиц и ориентиров, оптическое распознавание символов (OCR) и разметку контента откровенного характера.

В этом практическом занятии вы сосредоточитесь на использовании Vision API с C#. Вы научитесь распознавать текст, определять ориентиры и распознавать лица!

Что вы узнаете

  • Как использовать Cloud Shell
  • Как включить API Google Cloud Vision
  • Как аутентифицировать запросы API
  • Как установить клиентскую библиотеку Vision API для C#
  • Как выполнить обнаружение меток
  • Как выполнить распознавание текста
  • Как выполнить обнаружение ориентиров
  • Как выполнить распознавание лиц

Что вам понадобится

  • Проект Google Cloud Platform
  • Браузер, например Chrome или Firefox.
  • Знание языка C#

Опрос

Как вы будете использовать этот учебный материал?

Прочитайте только от начала до конца. Прочитайте текст и выполните упражнения.

Как бы вы оценили свой опыт работы с C#?

Новичок Средний Профессионал

Как бы вы оценили свой опыт использования сервисов Google Cloud Platform?

Новичок Средний Профессионал

2. Настройка и требования

Настройка среды для самостоятельного обучения

  1. Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Название проекта — это отображаемое имя участников данного проекта. Это строка символов, не используемая API Google. Вы всегда можете его изменить.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (его нельзя изменить после установки). Консоль Cloud автоматически генерирует уникальную строку; обычно вам неважно, какая она. В большинстве практических заданий вам потребуется указать идентификатор вашего проекта (обычно обозначается как PROJECT_ID ). Если сгенерированный идентификатор вас не устраивает, вы можете сгенерировать другой случайный идентификатор. В качестве альтернативы вы можете попробовать свой собственный и посмотреть, доступен ли он. После этого шага его нельзя изменить, и он сохраняется на протяжении всего проекта.
  • К вашему сведению, существует третье значение — номер проекта , которое используется некоторыми API. Подробнее обо всех трех значениях можно узнать в документации .
  1. Далее вам потребуется включить оплату в консоли Cloud для использования ресурсов/API Cloud. Выполнение этого практического задания не потребует больших затрат, если вообще потребует. Чтобы отключить ресурсы и избежать дополнительных расходов после завершения этого урока, вы можете удалить созданные ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.

Активировать Cloud Shell

  1. В консоли Cloud нажмите «Активировать Cloud Shell» . d1264ca30785e435.png .

cb81e7c8e34bc8d.png

Если вы запускаете Cloud Shell впервые, вам будет показан промежуточный экран с описанием его возможностей. Если вам был показан промежуточный экран, нажмите «Продолжить» .

d95252b003979716.png

Подготовка и подключение к Cloud Shell займут всего несколько минут.

7833d5e1c5d18f54.png

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

После подключения к Cloud Shell вы увидите, что прошли аутентификацию и что проект настроен на ваш идентификатор проекта.

  1. Выполните следующую команду в Cloud Shell, чтобы подтвердить свою аутентификацию:
gcloud auth list

вывод команды

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте:
gcloud config list project

вывод команды

[core]
project = <PROJECT_ID>

Если это не так, вы можете установить это с помощью следующей команды:

gcloud config set project <PROJECT_ID>

вывод команды

Updated property [core/project].

3. Включите Vision API.

Прежде чем начать использовать Vision API, необходимо его включить. В Cloud Shell это можно сделать с помощью следующей команды:

gcloud services enable vision.googleapis.com

4. Установите клиентскую библиотеку Google Cloud Vision API для C#.

Для начала создайте простое консольное приложение на C#, которое вы будете использовать для запуска примеров Vision API:

dotnet new console -n VisionApiDemo

Вы должны увидеть, что приложение создано и зависимости разрешены:

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

Далее перейдите в папку VisionApiDemo :

cd VisionApiDemo/

И добавьте в проект пакет NuGet Google.Cloud.Vision.V1 :

dotnet add package Google.Cloud.Vision.V1
info : Adding PackageReference for package 'Google.Cloud.Vision.V1' into project '/home/atameldev/VisionApiDemo/VisionApiDemo.csproj'.
log  : Restoring packages for /home/atameldev/VisionApiDemo/VisionApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Vision.V1' version '1.2.0' added to file '/home/atameldev/VisionApiDemo/VisionApiDemo.csproj'.

Теперь вы готовы использовать Vision API!

5. Выполните обнаружение меток.

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

В этом примере вы выполните обнаружение меток на изображении уличной сцены в Шанхае . Откройте редактор кода в правом верхнем углу Cloud Shell:

92ea233083f961c5.png

Перейдите к файлу Program.cs в папке VisionApiDemo и замените следующий код:

using Google.Cloud.Vision.V1;
using System;

namespace VisionApiDemo
{
    class Program
    {   
        static void Main(string[] args)
        {
            var client = ImageAnnotatorClient.Create();
            var image = Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg");
            var labels = client.DetectLabels(image);

            Console.WriteLine("Labels (and confidence score):");
            Console.WriteLine(new String('=', 30));

            foreach (var label in labels)
            {
                Console.WriteLine($"{label.Description} ({(int)(label.Score * 100)}%)");
            }
        }
    }
}

Уделите минуту-две изучению кода и посмотрите, как библиотека Vision API C# используется для обнаружения меток.

Вернувшись в Cloud Shell, запустите приложение:

dotnet run 

Вы должны увидеть следующий результат:

Labels (and confidence score):
==============================
Wheel (97%)
Tire (97%)
Photograph (94%)
Bicycle (94%)
Motor vehicle (89%)
Infrastructure (89%)
Vehicle (86%)
Mode of transport (84%)
Bicycle wheel (83%)
Asphalt (81%)

Краткое содержание

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

6. Выполните распознавание текста.

Функция распознавания текста в Vision API выполняет оптическое распознавание символов. Она обнаруживает и извлекает текст из изображения, поддерживая широкий спектр языков. Также имеется функция автоматического определения языка.

В этом примере вы выполните обнаружение текста на изображении экрана обновления системного программного обеспечения .

Перейдите к файлу Program.cs в папке VisionApiDemo и замените следующий код:

using Google.Cloud.Vision.V1;
using System;

namespace VisionApiDemo
{
    class Program
    {   
        static void Main(string[] args)
        {
            var client = ImageAnnotatorClient.Create();
            var image = Image.FromUri("gs://cloud-samples-data/vision/text/screen.jpg");
            var response = client.DetectText(image);
            foreach (var annotation in response)
            {
                if (annotation.Description != null)
                {
                    Console.WriteLine(annotation.Description);
                }
            }
        }
    }
}

Уделите минуту-две изучению кода и посмотрите, как библиотека Vision API C# используется для распознавания текста.

Вернувшись в Cloud Shell, запустите приложение:

dotnet run 

Вы должны увидеть следующий результат:

System Software Update
Back
Preparing to install...
After preparation is complete, the PS4 will automatically restart and the update file will be
installed.
37%
gus class
System
Software
Update
Back
Preparing
to
install
...
After
preparation
is
complete
,
the
PS4
will
automatically
restart
and
the
update
file
will
be
installed
.
37
%
gus
class

Краткое содержание

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

7. Выполните обнаружение ориентиров.

Функция обнаружения ориентиров в Vision API выявляет популярные природные и искусственные сооружения на изображении.

В этом примере вы выполните обнаружение ключевых точек на изображении Эйфелевой башни .

Перейдите к файлу Program.cs в папке VisionApiDemo и замените следующий код:

using Google.Cloud.Vision.V1;
using System;

namespace VisionApiDemo
{
    class Program
    {   
        static void Main(string[] args)
        {
            var client = ImageAnnotatorClient.Create();
            var image = Image.FromUri("gs://cloud-samples-data/vision/eiffel_tower.jpg");
            var response = client.DetectLandmarks(image);
            foreach (var annotation in response)
            {
                if (annotation.Description != null)
                {
                    Console.WriteLine(annotation.Description);
                }
            }
        }
    }
}

Уделите минуту-две изучению кода и посмотрите, как библиотека Vision API C# используется для обнаружения ключевых точек.

Вернувшись в Cloud Shell, запустите приложение:

dotnet run

Вы должны увидеть следующий результат:

Eiffel Tower

Краткое содержание

На этом этапе вы смогли выполнить обнаружение ориентиров на изображении Эйфелевой башни. Подробнее об обнаружении ориентиров читайте здесь.

8. Выполнить распознавание эмоциональных выражений лица.

Функция распознавания лиц обнаруживает несколько лиц на изображении, а также связанные с ними ключевые черты лица, такие как эмоциональное состояние или наличие головного убора.

В этом примере вы определите вероятность эмоционального состояния на основе четырех различных вариантов: радости, гнева, печали и удивления.

Перейдите к файлу Program.cs в папке VisionApiDemo и замените следующий код:

using Google.Cloud.Vision.V1;
using System;

namespace VisionApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = ImageAnnotatorClient.Create();

            var image = Image.FromUri("gs://cloud-samples-data/vision/face/face_no_surprise.jpg");
            var response = client.DetectFaces(image);
            foreach (var annotation in response)
            {
                Console.WriteLine($"Picture: {image}");
                Console.WriteLine($" Surprise: {annotation.SurpriseLikelihood}");
            }
        }
    }
}

Уделите минуту-две изучению кода и посмотрите, как библиотека Vision API C# используется для распознавания эмоциональных выражений лица.

Запустите приложение;

dotnet run

В примере face_no_surprise вы должны увидеть следующий вывод:

Picture: { "source": { "imageUri": "gs://cloud-samples-data/vision/face/face_no_surprise.jpg" } }
 Surprise: Likely

Краткое содержание

На этом этапе вы смогли выполнить распознавание эмоциональных выражений лица. Подробнее о распознавании лиц можно прочитать здесь.

9. Поздравляем!

Вы научились использовать Vision API на языке C# для выполнения различных операций обнаружения объектов на изображениях!

Уборка

Чтобы избежать списания средств с вашего счета Google Cloud Platform за ресурсы, использованные в этом кратком руководстве:

  • Перейдите в консоль облачной платформы .
  • Выберите проект, который хотите закрыть, затем нажмите кнопку «Удалить» вверху: это запланирует удаление проекта.

Узнать больше

Лицензия

Данная работа распространяется под лицензией Creative Commons Attribution 2.0 Generic.