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

1. Обзор

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

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

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

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

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

  • Проект облачной платформы Google
  • Браузер, например Chrome или Firefox.
  • Знакомство с C#

Опрос

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

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

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

Новичок Средний Опытный

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

Новичок Средний Опытный

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

Самостоятельная настройка среды

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

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

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

Запустить Cloud Shell

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

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

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

cb81e7c8e34bc8d.png

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

d95252b003979716.png

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

7833d5e1c5d18f54.png

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

После подключения к 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, вы должны включить API. Используя Cloud Shell, вы можете включить API с помощью следующей команды:

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/

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

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 License.