paint-brush
Uso de Amazon Rekognition para crear una función de detección de objetos de imagen para una startup de redes socialespor@aidenwalton
300 lecturas
300 lecturas

Uso de Amazon Rekognition para crear una función de detección de objetos de imagen para una startup de redes sociales

por Aiden Walton6m2024/04/14
Read on Terminal Reader

Demasiado Largo; Para Leer

Rekognition nos permitió crear rápidamente una función de detección de objetos de imagen que es precisa, rápida y escalable.
featured image - Uso de Amazon Rekognition para crear una función de detección de objetos de imagen para una startup de redes sociales
Aiden Walton HackerNoon profile picture


La capacidad de recopilar información a partir de imágenes tiene un gran potencial empresarial. Y bueno, también puede ser simplemente divertido. En este artículo, describiré cómo usamos Reconocimiento de Amazon para crear rápidamente una función de detección de objetos de imagen para una startup de redes sociales.

¿Qué es la detección de objetos de imagen?

En pocas palabras, la detección de objetos de imagen es el proceso de detectar y extraer información sobre entidades en una imagen determinada. Se trata de detectar objetos, actividades, lugares, animales, productos, etc.


La detección de objetos de imagen tiene una amplia gama de casos de uso en una variedad de industrias. Sectores importantes como bancos, seguros, redes sociales, aplicaciones de citas, agencias de noticias y FinTech utilizan la detección de objetos de una forma u otra.

Nuestro caso de uso

Recientemente, se nos asignó la tarea de crear una función de detección de objetos de imágenes para una startup de redes sociales. El caso de uso era simple: los usuarios deberían poder seleccionar algunas de sus fotos favoritas y enviarlas para que aparezcan en una de las páginas de redes sociales de la startup.


El equipo de marketing de redes sociales necesitaba una forma de buscar ciertos temas en las imágenes enviadas, como fotografías del océano, lugares populares, animales, conciertos de música, etc.

Análisis de imágenes mediante aprendizaje profundo

Analizar imágenes y clasificarlas según el paisaje y los objetos dentro de la imagen no es una tarea sencilla. La vista humana es nada menos que extraordinaria, y crear una aplicación que sea capaz de replicar la capacidad del cerebro para detectar objetos es inmensamente complejo. Existe toda una industria de la visión por computadora dedicada a hacer precisamente eso.


Realizar la detección de objetos desde cero suele ser un proceso de varios pasos que implica:

  • Recopilar imágenes y etiquetar los objetos que contienen.
  • Entrenando los modelos ML
  • Uso de los modelos entrenados para realizar el análisis.
  • La optimización del rendimiento
  • Y repetir…


Nuestro objetivo para esta característica, como todas las demás en el proyecto, era construirla rápidamente y probar su eficacia en un entorno de producción lo antes posible. Además, no queríamos dedicar recursos de desarrollo a crear una solución desde cero cuando podíamos aprovechar los servicios de nube existentes.


Cue Serverless: todo el backend de la startup es completamente sin servidor y está controlado por eventos. Con esta arquitectura, podemos tener equipos de desarrolladores que solo necesitan centrarse en funciones que diferencian la aplicación de redes sociales de otras. La tecnología sin servidor también nos permite crear servicios altamente escalables y al mismo tiempo pagar solo por exactamente lo que usamos, una consideración importante para una startup en expansión.


Entonces, para lograr esta función, utilizamos Amazon Rekognition, un servicio de análisis de imágenes y videos totalmente sin servidor. Con Rekognition, pudimos desarrollar este flujo de trabajo complejo y crítico en cuestión de horas . Profundicemos en ello.

¿Qué es el reconocimiento de Amazon?

Amazon Rekognition es una oferta de AWS Serverless que utiliza el aprendizaje profundo para realizar análisis de imágenes y videos. Ser completamente sin servidor significa que con Rekognition no necesitamos preocuparnos por la complejidad de la infraestructura subyacente; Pagamos solo por lo que usamos y nos proporciona software preescrito para tareas de análisis de imágenes y videos. Rekognition ofrece una variedad de funciones, que incluyen detección de etiquetas de imágenes, detección de rostros, detección de celebridades, moderación de contenido y detección de texto.


¿La mejor parte? Rekognition abstrae el trabajo pesado de crear, entrenar y analizar modelos de aprendizaje profundo. El análisis de imágenes y vídeos es rápido y sencillo, y requiere una configuración mínima. No necesitábamos preocuparnos por crear y entrenar nuestros propios conjuntos de datos ni por aprovisionar la capacidad del servidor para que nuestro servicio pudiera escalar. Lo único de lo que teníamos que preocuparnos era de integrarnos.

Arquitectura

La arquitectura es sencilla. Nuestra aplicación móvil carga imágenes de los teléfonos de los usuarios en un depósito S3. La carga a S3 luego activa una función Lambda que a su vez llama a la API de Rekognition y almacena los resultados en DynamoDB para consultarlos.


Diagrama de arquitectura de detección de objetos de imágenes sin servidor utilizando AWS

El código

Escribir código es divertido, ¿verdad? Bueno, escribir menos código es aún más divertido.


Rekognition expone un conjunto de API a las que envía datos de imágenes para realizar el análisis y devolver los resultados. Para nuestro caso de uso, utilizamos el detectar etiquetas API.


Una versión simplificada de nuestro archivo de infraestructura como código de marco sin servidor se ve así:

 //serverless.yamlfunctions: imageLabelDetection: handler: image-label-detection.handler events: - s3: bucket: my-image-bucket event: s3:ObjectCreated:* existing: true iamRoleStatements: - Effect: Allow Action: rekognition:DetectLabels Resource: "*" - Effect: Allow Action: s3:GetObject Resource: arn:aws:s3:::my-image-bucket


Nuestro código Lambda simplemente llama a la API de Rekognition y almacena los resultados en DynamoDB, pero puede usar lo que tenga sentido para su caso de uso. Obtenemos el nombre del depósito S3 y el nombre del objeto de la imagen del evento S3 y los pasamos a la función detectLabels del SDK de reconocimiento .


También pasamos dos parámetros opcionales (MaxLabels y MinConfidence) para especificar el umbral del nivel de confianza y el número máximo de etiquetas que queremos que se devuelvan. En el siguiente ejemplo, solo obtendremos hasta 20 etiquetas en la respuesta y todas las etiquetas tendrán un nivel de confianza superior al 80%.


 //image-label-detecion.jsconst AWS = require("aws-sdk");const rekognition = new AWS.Rekognition();exports.handler = async (event) => { const imageDetails = event.Records[0].s3; const bucketName = imageDetails.bucket.name; const objectKey = imageDetails.object.key; const rekognitionResp = await rekognition .detectLabels({ Image: { S3Object: { Bucket: bucketName, Name: objectKey, }, }, MaxLabels: 20, MinConfidence: 80, }) .promise(); // Send to data store, eg DynamoDB // ... };

¿A quién no le encanta una foto de un perro? A continuación se muestra una respuesta para una imagen que cargamos en nuestro depósito S3. Como puede ver, Rekognition determina correctamente que es una imagen de un perro en un camino de grava al aire libre (¡y nos dice en qué parte de la imagen está el perro!).

Respuesta de reconocimiento (izquierda), imagen cargada (derecha).

Pensamientos finales

Entonces, ¿qué pienso después de usar Rekognition en producción durante unos meses? Aquí hay una lista de conclusiones clave:

  • Totalmente sin servidor: evite el trabajo pesado e indiferenciado de administrar la complejidad de la infraestructura subyacente y utilice software y modelos prediseñados.


  • Rendimiento: el reconocimiento es rápido, alrededor de 600 ms en la mayoría de los casos.


  • Fácil de usar: la API es sencilla y fácil de integrar.


  • Mejora continua: AWS mantiene e itera constantemente Rekognition, lo que significa que será cada vez mejor con el tiempo.


  • Precisión: Rekognition aprovecha el amplio conjunto de clientes de Amazon; lo que resulta en una detección de etiquetas de imágenes de alta precisión.


  • Tiene un generoso nivel gratuito, por lo que puedes probarlo antes de decidirte.


  • Costo: pagamos solo por lo que usamos. Rekognition nos permite ampliar y reducir según las necesidades del negocio.

Resumen

TLDR: Rekognition nos permitió crear rápidamente una función de detección de objetos de imagen que es precisa, rápida y escalable.