Usa la API de Vision con C#

1. Descripción general

La API de Google Cloud Vision permite a los desarrolladores integrar con facilidad funciones de detección de visión en las aplicaciones, como el etiquetado de imágenes, la detección de rostros y puntos de referencia, el reconocimiento óptico de caracteres (OCR) y el etiquetado de contenido explícito.

En este codelab, te enfocarás en usar la API de Vision con C#. Aprenderás a detectar texto, puntos de referencia y rostros.

Qué aprenderás

  • Cómo usar Cloud Shell
  • Cómo habilitar la API de Google Cloud Vision
  • Cómo autenticar solicitudes a la API
  • Cómo instalar la biblioteca cliente de la API de Vision para C#
  • Cómo realizar la detección de etiquetas
  • Cómo realizar la detección de texto
  • Cómo realizar la detección de puntos de referencia
  • Cómo realizar la detección de rostros

Requisitos

  • Un proyecto de Google Cloud Platform
  • Un navegador como Chrome o Firefox
  • Conocimientos de C#

Encuesta

¿Cómo usarás este instructivo?

Ler Leer y completar los ejercicios

¿Cómo calificarías tu experiencia con C#?

Principiante Intermedio Avanzado

¿Cómo calificarías tu experiencia con el uso de los servicios de Google Cloud Platform?

Principiante Intermedio Avanzado

2. Configuración y requisitos

Configuración del entorno de autoaprendizaje

  1. Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla cuando quieras.
  • El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto (suele identificarse como PROJECT_ID). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usa el mismo durante todo el proyecto.
  • Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
  1. A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no costará mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.

Inicia Cloud Shell

Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.

Activar Cloud Shell

  1. En la consola de Cloud, haz clic en Activar Cloud Shelld1264ca30785e435.png.

cb81e7c8e34bc8d.png

Si es la primera vez que inicias Cloud Shell, aparecerá una pantalla intermedia en la que se describirá qué es. Si apareció una pantalla intermedia, haz clic en Continuar.

d95252b003979716.png

El aprovisionamiento y la conexión a Cloud Shell solo tomará unos minutos.

7833d5e1c5d18f54.png

Esta máquina virtual está cargada con todas las herramientas de desarrollo necesarias. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Gran parte de tu trabajo en este codelab, si no todo, se puede hacer con un navegador.

Una vez que te conectes a Cloud Shell, deberías ver que te autenticaste y que el proyecto se configuró con tu ID del proyecto.

  1. En Cloud Shell, ejecuta el siguiente comando para confirmar que tienes la autenticación:
gcloud auth list

Resultado del comando

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. En Cloud Shell, ejecuta el siguiente comando para confirmar que el comando gcloud conoce tu proyecto:
gcloud config list project

Resultado del comando

[core]
project = <PROJECT_ID>

De lo contrario, puedes configurarlo con el siguiente comando:

gcloud config set project <PROJECT_ID>

Resultado del comando

Updated property [core/project].

3. Habilita la API de Vision

Antes de comenzar a usar la API de Vision, debes habilitarla. Con Cloud Shell, puedes habilitar la API con el siguiente comando:

gcloud services enable vision.googleapis.com

4. Instala la biblioteca cliente de la API de Google Cloud Vision para C#

Primero, crea una aplicación de consola simple en C# que usarás para ejecutar muestras de la API de Vision:

dotnet new console -n VisionApiDemo

Deberías ver la aplicación creada y las dependencias resueltas:

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

A continuación, navega a la carpeta VisionApiDemo:

cd VisionApiDemo/

Y agrega el paquete NuGet Google.Cloud.Vision.V1 al proyecto:

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

Ya está todo listo para usar la API de Vision.

5. Realiza la detección de etiquetas

Una de las funciones básicas de la API de Vision es identificar objetos o entidades en una imagen, lo que se conoce como anotación de etiquetas. La detección de etiquetas identifica objetos generales, ubicaciones, actividades, especies de animales, productos y mucho más. La API de Vision toma una imagen de entrada y devuelve las etiquetas más probables que se aplican a esa imagen. Devuelve las etiquetas que mejor coinciden junto con una puntuación de confianza de la coincidencia con la imagen.

En este ejemplo, realizarás la detección de etiquetas en una imagen de una escena callejera en Shanghái. Abre el editor de código en la parte superior derecha de Cloud Shell:

92ea233083f961c5.png

Navega al archivo Program.cs dentro de la carpeta VisionApiDemo y reemplaza el código por lo siguiente:

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)}%)");
            }
        }
    }
}

Tómate un minuto o dos para estudiar el código y ver cómo se usa la biblioteca de C# de la API de Vision para realizar la detección de etiquetas.

De regreso en Cloud Shell, ejecuta la app:

dotnet run 

Deberías ver el siguiente resultado:

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%)

Resumen

En este paso, pudiste realizar la detección de etiquetas en una imagen de una escena callejera en China y mostrar las etiquetas más probables asociadas a esa imagen. Obtén más información sobre la detección de etiquetas.

6. Realiza la detección de texto

La detección de texto de la API de Vision realiza reconocimiento óptico de caracteres. Detecta y extrae texto dentro de una imagen, y admite una amplia variedad de idiomas. También cuenta con identificación automática de idioma.

En este ejemplo, realizarás la detección de texto en una imagen de una pantalla de actualización de software del sistema.

Navega al archivo Program.cs dentro de la carpeta VisionApiDemo y reemplaza el código por lo siguiente:

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);
                }
            }
        }
    }
}

Tómate un minuto o dos para estudiar el código y ver cómo se usa la biblioteca de C# de la API de Vision para realizar la detección de texto.

De regreso en Cloud Shell, ejecuta la app:

dotnet run 

Deberías ver el siguiente resultado:

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

Resumen

En este paso, pudiste realizar la detección de texto en una imagen de un cruce de nutrias y, luego, imprimir el texto reconocido de la imagen. Obtén más información sobre la detección de texto.

7. Realiza la detección de puntos de referencia

La detección de puntos de referencia de la API de Vision detecta estructuras populares naturales y artificiales en una imagen.

En este ejemplo, realizarás la detección de puntos de referencia en una imagen de la Torre Eiffel.

Navega al archivo Program.cs dentro de la carpeta VisionApiDemo y reemplaza el código por lo siguiente:

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);
                }
            }
        }
    }
}

Tómate un minuto o dos para estudiar el código y ver cómo se usa la biblioteca de C# de la API de Vision para realizar la detección de puntos de referencia.

De regreso en Cloud Shell, ejecuta la app:

dotnet run

Deberías ver el siguiente resultado:

Eiffel Tower

Resumen

En este paso, pudiste detectar el punto de referencia en la imagen de la Torre Eiffel. Obtén más información sobre la Detección de lugares.

8. Realiza la detección de rostros emocionales

La detección de rostro puede detectar varios rostros en una imagen junto con atributos faciales clave asociados a ellos, como el estado emocional o si tienen el estado wearing headwear.

En este ejemplo, detectarás la probabilidad del estado emocional a partir de cuatro probabilidades emocionales diferentes: alegría, enojo, tristeza y sorpresa.

Navega al archivo Program.cs dentro de la carpeta VisionApiDemo y reemplaza el código por lo siguiente:

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}");
            }
        }
    }
}

Tómate un minuto o dos para estudiar el código y ver cómo se usa la biblioteca de C# de la API de Vision para realizar la detección de rostros emocionales.

Ejecuta la app.

dotnet run

Deberías ver el siguiente resultado para nuestro ejemplo de face_no_surprise:

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

Resumen

En este paso, pudiste realizar la detección de rostros emocionales. Obtén más información sobre la Detección de rostros.

9. ¡Felicitaciones!

Aprendiste a usar la API de Vision con C# para realizar diferentes detecciones en imágenes.

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos de esta guía de inicio rápido:

  • Ve a Cloud Platform Console.
  • Selecciona el proyecto que deseas cerrar y, luego, haz clic en "Borrar" en la parte superior para programar su eliminación.

Más información

Licencia

Este trabajo cuenta con una licencia Atribución 2.0 Genérica de Creative Commons.