<jupyter_start><jupyter_text>Análisis de imagen con el servicio Computer Vision

![Un robot sujetando una fotografía](./images/computer_vision.jpg)

*Computer Vision* forma parte de la inteligencia artificial y explora el desarrollo de sistemas de IA que pueden “ver” el mundo, ya sea en tiempo real mediante una cámara o mediante el análisis de archivos de imágenes y vídeos. Esto es posible gracias a que las imágenes digitales son, básicamente, un conjunto de valores numéricos de píxeles que podemos usar como *características* para entrenar modelos de aprendizaje automático que puedan clasificar imágenes, detectar determinados objetos en una imagen e incluso generar resúmenes textuales sobre las fotografías.

 Usar Computer Vision, de Cognitive Services

Microsoft Azure incluye los conocidos como *Cognitive Services*, entre los que encontramos funciones habituales de IA, incluidas algunas que pueden ayudar a crear soluciones de Computer Vision.

*Computer Vision* es un punto de inicio natural de nuestra explicación de Computer Vision en Azure. Utiliza modelos de aprendizaje automático entrenados previamente para analizar imágenes y extraer información sobre ellas.

Por ejemplo, supongamos que la empresa Northwind Traders ha decidido implementar una tienda inteligente, en la que los servicios de IA supervisan la tienda para identificar a los clientes que necesiten ayuda y avisar a los empleados para que los ayuden. Gracias al servicio Computer Vision, las imágenes de las cámaras de la tienda se pueden analizar para proporcionar descripciones acertadas sobre lo que aparece en ellas.

 Crear un recurso de Cognitive Services

Para empezar, cree un recurso de **Cognitive Services** en su suscripción de Azure:

1. En la pestaña de otro explorador, abra Azure Portal (https://portal.azure.com) e inicie sesión con su cuenta de Microsoft.
2. Haga clic en el botón **&65291;Crear un recurso**, busque *Cognitive Services* y cree un recurso de **Cognitive Services** con esta configuración:
    - **Suscripción**: *su suscripción de Azure*.
    - **Grupo de recursos**: *seleccione o cree un grupo de recursos con un nombre único.*
    - **Región**: *seleccione cualquier región disponible*:
    - **Nombre**: *escriba un nombre único*.
    - **Plan de tarifa**: S0
    - **Confirmo que he leído y comprendido las notificaciones**: seleccionado.
3. Espere a que la implementación finalice. Vaya al recurso de Cognitive Services y, en la página **Información general**, haga clic en el vínculo para administrar las claves del servicio. Necesitará el punto de conexión y las claves para conectarse a su recurso de Cognitive Services desde aplicaciones de cliente.

 Obtener la clave y el punto de conexión de un recurso de Cognitive Services

Para usar su recurso de Cognitive Services, las aplicaciones de cliente necesitan su clave de autenticación y su punto de conexión:

1. En Azure Portal, en la página **Claves y punto de conexión** de su recurso de Cognitive Services, copie la **Key1** de su recurso y péguela en el siguiente código, en sustitución de **YOUR_COG_KEY**.
2. Copie el **Punto de conexión** de su recurso y péguelo en el siguiente código, en sustitución de **YOUR_COG_ENDPOINT**.
3. Seleccione la celda siguiente y haga clic en **Run cell** (&9655;), a la izquierda de la celda, para ejecutar su código.<jupyter_code>cog_key = 'YOUR_COG_KEY'
cog_endpoint = 'YOUR_COG_ENDPOINT'

print('Ready to use cognitive services at {} using key {}'.format(cog_endpoint, cog_key))<jupyter_output><empty_output><jupyter_text>Ahora que ha configurado la clave y el punto de conexión, puede usar el servicio Computer Vision para analizar una imagen.

Ejecute la siguiente celda para obtener una descripción de una imagen en el archivo */data/vision/store_cam1.jpg*.<jupyter_code>from azure.cognitiveservices.vision.computervision import ComputerVisionClient
from msrest.authentication import CognitiveServicesCredentials
from python_code import vision
import os
%matplotlib inline

# Get the path to an image file
image_path = os.path.join('data', 'vision', 'store_cam1.jpg')

# Get a client for the computer vision service
computervision_client = ComputerVisionClient(cog_endpoint, CognitiveServicesCredentials(cog_key))

# Get a description from the computer vision service
image_stream = open(image_path, "rb")
description = computervision_client.describe_image_in_stream(image_stream)

# Display image and caption (code in helper_scripts/vision.py)
vision.show_image_caption(image_path, description)<jupyter_output><empty_output><jupyter_text>Parece bastante acertado.

Vamos a probar con otra imagen.<jupyter_code># Get the path to an image file
image_path = os.path.join('data', 'vision', 'store_cam2.jpg')

# Get a description from the computer vision service
image_stream = open(image_path, "rb")
description = computervision_client.describe_image_in_stream(image_stream)

# Display image and caption (code in helper_scripts/vision.py)
vision.show_image_caption(image_path, description)<jupyter_output><empty_output><jupyter_text>Parece que la información sigue siendo precisa.

 Analizar características de una imagen

Hasta ahora, hemos usado Computer Vision para generar una descripción de algunas imágenes. Podemos ir mucho más allá. El servicio Computer Vision incluye capacidades de análisis que pueden extraer información detallada como esta:

- Las ubicaciones de tipos habituales de objetos detectados en la imagen.
- La ubicación y edad aproximada de las caras humanas de la imagen.
- Si la imagen incluye contenido adulto, racista o inapropiado.
- Etiquetas relevantes que se pueden asociar con la imagen en una base de datos para que sea más fácil encontrarla.

Ejecute el siguiente código para analizar la imagen de un cliente.<jupyter_code># Get the path to an image file
image_path = os.path.join('data', 'vision', 'store_cam1.jpg')

# Specify the features we want to analyze
features = ['Description', 'Tags', 'Adult', 'Objects', 'Faces']

# Get an analysis from the computer vision service
image_stream = open(image_path, "rb")
analysis = computervision_client.analyze_image_in_stream(image_stream, visual_features=features)

# Show the results of analysis (code in helper_scripts/vision.py)
vision.show_image_analysis(image_path, analysis)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.06051508927160689, 'fraction_numerical': 0.003318059725075051, 'mean_word_length': 5.465781409601634, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '620973', 'license': 'MIT', 'n_tokens_mistral': 1955, 'n_tokens_neox': 1948, 'n_words': 795, 'path': '01 - Image Analysis with Computer Vision.ipynb', 'repo_name': 'MicrosoftLearning/AI-900ES-Microsoft-Azure-AI-Fundamentals', 'size': '6329'}