Clasificación de imágenes en Azure

Azure Blob Storage
Azure Computer Vision
Azure Cosmos DB
Azure Event Grid
Azure Functions

Mediante los servicios de Azure, como Computer Vision API y Azure Functions, las empresas pueden eliminar la necesidad de administrar servidores individuales, al tiempo que reducen los costos y utilizan los conocimientos que Microsoft ya ha desarrollado con el procesamiento de imágenes con Cognitive Services. En concreto, este es un escenario de ejemplo de procesamiento de imágenes. Si tiene distintas necesidades de inteligencia artificial, tenga en cuenta el conjunto completo de Cognitive Services.

Architecture

Architecture for image classification

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo

Este escenario trata los componentes de back-end de una aplicación web o móvil. Los datos fluyen por el escenario de la siguiente manera:

  1. Agregar nuevos archivos (cargas de imágenes) en Blob Storage desencadena un evento en Azure Event Grid. El proceso de carga se puede orquestar a través de la web o una aplicación móvil. Como alternativa, las imágenes se pueden cargar por separado en Azure Blob Storage.
  2. Event Grid envía una notificación que desencadena el Azure Functions.
  3. Azure Functions llama a la API de Azure Computer Vision para analizar la imagen recién cargada. Computer Vision accede a la imagen a través de la dirección URL del blob que analiza Azure Functions.
  4. Azure Functions conserva la respuesta de la API de Computer Vision en Azure Cosmos DB. Esta respuesta incluye los resultados del análisis, junto con los metadatos de la imagen.
  5. Los resultados se pueden consumir y reflejar en el front-end web o móvil. Tenga en cuenta que este enfoque recupera los resultados de la clasificación, pero no la imagen cargada.

Componentes

  • Computer Vision API es parte del conjunto de productos Cognitive Services y se usa para recuperar información acerca de cada imagen.
  • Azure Functions proporciona la API de back-end para la aplicación web. Esta plataforma también proporciona procesamiento de eventos para imágenes cargadas.
  • Azure Event Grid desencadena un evento cuando se carga una nueva imagen en Blob Storage. A continuación, la imagen se procesa con Azure Functions.
  • Azure Blob Storage almacena todos los archivos de imagen que se cargan en la aplicación web, así como también los archivos estáticos que consume la aplicación web.
  • Azure Cosmos DB almacena los metadatos de cada imagen que se haya cargado, incluidos los resultados del procesamiento de la API de Computer Vision.

Alternativas

  • Custom Vision Service. Computer Vision API devuelve un conjunto de categorías basadas en la taxonomía. Si necesita procesar la información que Computer Vision API no devuelve, considere la posibilidad de usar Custom Vision Service, que permite crear clasificadores de imágenes personalizados.
  • Cognitive Search (anteriormente Azure Search). Si su caso de usuario implica consultar los metadatos para buscar las imágenes que cumplen determinados criterios, considere la posibilidad de usar Cognitive Search. Actualmente en versión preliminar, Cognitive Search se integra sin problemas en este flujo de trabajo.
  • Logic Apps. Si no necesita reaccionar en tiempo real a los archivos agregados a un blob, puede considerar el uso de Logic Apps. Una aplicación lógica que puede comprobar si se ha agregado un archivo podría iniciarse con el desencadenador de periodicidad o el desencadenador de ventana deslizante.

Detalles del escenario

Este escenario es pertinente para las empresas que necesitan procesar imágenes.

Algunas aplicaciones posibles son clasificar las imágenes de un sitio web de moda, analizar texto e imágenes para reclamaciones de seguros o reconocer los datos de telemetría de capturas de pantalla de juegos. Tradicionalmente, las empresas necesitaban convertirse en expertos en modelos de aprendizaje automático, entrenar los modelos y, por último, ejecutar las imágenes en su proceso personalizado para extraer los datos de las imágenes.

Posibles casos de uso

Esta solución es ideal para los sectores de venta al por menor, juegos, finanzas y seguros. Otros casos de uso pertinentes incluyen:

  • Clasificar las imágenes en un sitio web de moda. Los vendedores pueden usar la clasificación de imágenes mientras cargan imágenes de productos en la plataforma para la venta. Pueden automatizar el consiguiente etiquetado manual implicado. Los clientes también pueden buscar en la impresión visual de los productos.

  • Clasificar los datos de telemetría de las capturas de pantalla de juegos. La clasificación de videojuegos de capturas de pantalla está evolucionando en un problema relevante en las redes sociales, junto con Computer Vision. Por ejemplo, cuando los streamers de Twitch juegan diferentes juegos en sucesión, pueden omitir la actualización manual de su información de transmisión. Si no se actualiza la información de la secuencia, podría producirse una clasificación incorrecta de secuencias en las búsquedas de usuarios y podría provocar la pérdida de la posible audiencia tanto para los creadores de contenido como para las plataformas de streaming. Al introducir juegos noveles, una ruta de modelo personalizada podría resultar útil para introducir la capacidad de detectar imágenes nuevas de esos juegos.

  • Clasificar imágenes para las reclamaciones de seguros. La clasificación de imágenes puede ayudar a reducir el tiempo y el costo del procesamiento y la suscripción de notificaciones. Podría ayudar a analizar los daños ante desastres naturales, los daños del vehículo e identificar las propiedades residenciales y comerciales.

Consideraciones

Estas consideraciones implementan los pilares del marco de buena arquitectura de Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad de una carga de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft Azure.

Al implementar esta solución, tenga en cuenta estos puntos:

Escalabilidad

La mayoría de los componentes usados en este escenario de ejemplo son servicios administrados que escalan automáticamente. Hay un par de excepciones destacables: Azure Functions tiene un límite máximo de 200 instancias. Si necesita escalar más allá de este límite, considere la posibilidad de usar varias regiones o planes de aplicación.

Solo puede aprovisionar Azure Cosmos DB para la escalabilidad automática en Azure Cosmos DB for NoSQL. Si tiene previsto usar otras API, consulte la guía sobre cómo calcular los requisitos en Unidades de solicitud. Para aprovechar al máximo el escalado en Azure Cosmos DB, obtenga información sobre cómo funcionan las claves de partición en Azure Cosmos DB.

Las bases de datos NoSQL suelen renunciar a la coherencia (en el sentido del teorema CAP) frente a la disponibilidad, escalabilidad y creación de particiones. En este escenario de ejemplo, se usa un modelo de datos de pares clave-valor y la coherencia de la transacción rara vez es necesaria porque, por definición, la mayoría de las operaciones son atómicas. Para más información sobre cómo elegir el almacén de datos correcto, consulte el Centro de arquitectura de Azure. Si su implementación requiere una coherencia alta, puede elegir el nivel de coherencia en Azure Cosmos DB.

Para obtener instrucciones generales sobre cómo diseñar soluciones escalables, consulte la lista de comprobación de eficiencia del rendimiento en el Centro de arquitectura de Azure.

Seguridad

La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Managed Service Identities para recursos de Azure (MSI) se utiliza para proporcionar a otros recursos internos acceso a su cuenta y, a continuación, se asigna a Azure Functions. Permita el acceso solo a los recursos necesarios en esas identidades para evitar exponer nada que no sea necesario a las funciones (y, potencialmente, a sus clientes).

Para instrucciones generales de diseño de soluciones seguras, consulte Documentación de Azure Security Center.

Resistencia

En este escenario, todos los componentes son administrados, por lo que, en un nivel regional, son resistentes de forma automática.

Para obtener instrucciones generales sobre el diseño de soluciones resistentes, consulte Diseño de aplicaciones resistentes de Azure.

Optimización de costos

La optimización de costos trata de buscar formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para más información, vea Información general del pilar de optimización de costos.

Para explorar el costo de ejecutar este escenario, todos los servicios están preconfigurados en la calculadora de costos. Para ver cómo cambiarían los precios en su caso concreto, cambie las variables pertinentes para que coincidan con el tráfico esperado.

Hemos proporcionado tres ejemplos de perfiles de costo según la cantidad de tráfico (hemos dado por hecho que todas las imágenes tienen un tamaño de 100 KB):

  • Pequeño: se corresponde con un procesamiento de menos de 5000 imágenes al mes.
  • Mediano: se corresponde con un procesamiento de 500 000 imágenes al mes.
  • Grande: se corresponde con un procesamiento de 50 millones de imágenes al mes.

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Creadores de entidad de seguridad:

Pasos siguientes

Documentación del producto

Para conocer una ruta de aprendizaje guiado, consulte:

Antes de implementar este escenario de ejemplo en un entorno de producción, consulte los procedimientos recomendados para optimizar el rendimiento y confiabilidad de Azure Functions.

Enriquecimiento mediante inteligencia artificial con procesamiento de imágenes y lenguaje natural en Azure Cognitive Search