Cree una búsqueda inteligente de fotografías con Amazon Rekognition, Amazon Neptune y Amazon Bedrock

La gestión de grandes colecciones de fotografías presenta importantes desafíos para organizaciones e individuos. Los enfoques tradicionales se basan en el etiquetado manual, metadatos básicos y organización basada en carpetas, lo que puede resultar poco práctico cuando se trata de miles de imágenes que contienen varias personas y relaciones complejas. Los sistemas inteligentes de búsqueda de fotografías abordan estos desafíos combinando visión por computadora, bases de datos gráficas y procesamiento del lenguaje natural para transformar la forma en que descubrimos y organizamos el contenido visual. Estos sistemas capturan no sólo quién y qué aparece en las fotografías, sino también las complejas relaciones y contextos que las hacen significativas, permitiendo consultas en lenguaje natural y descubrimiento semántico.

En esta publicación, le mostramos cómo crear un sistema integral de búsqueda de fotografías utilizando el kit de desarrollo en la nube de AWS (AWS CDK) que integra Amazon Rekognition para la detección de rostros y objetos, Amazon Neptune para el mapeo de relaciones y Amazon Bedrock para subtítulos con tecnología de inteligencia artificial. Demostramos cómo estos servicios funcionan juntos para crear un sistema que comprende consultas en lenguaje natural como "Buscar todas las fotos de abuelos con sus nietos en fiestas de cumpleaños" o "Muéstrame fotos del auto familiar durante los viajes por carretera".

El beneficio clave es la capacidad de personalizar y personalizar el enfoque de búsqueda en personas, objetos o relaciones específicas mientras se escala para manejar miles de fotografías y estructuras familiares u organizativas complejas. Nuestro enfoque demuestra que la integración de las capacidades de la base de datos de gráficos de Amazon Neptune con los servicios de IA de Amazon permite la búsqueda de fotografías en lenguaje natural que comprende el contexto y las relaciones, yendo más allá del simple etiquetado de metadatos al descubrimiento inteligente de fotografías. Mostramos esto a través de una implementación completa sin servidor que puede implementar y personalizar para su caso de uso específico.

Descripción general de la solución

Esta sección describe la arquitectura técnica y el flujo de trabajo de nuestro sistema inteligente de búsqueda de fotografías. Como se ilustra en el siguiente diagrama, la solución utiliza servicios de AWS sin servidor para crear un sistema escalable y rentable que procesa fotografías automáticamente y permite la búsqueda en lenguaje natural.

La arquitectura sin servidor se escala de manera eficiente para múltiples casos de uso:

Corporativo: reconocimiento de empleados y documentación de eventos. Salud: gestión de fotografías conforme a HIPAA con seguimiento de relaciones. Educación: organización de fotografías de estudiantes y profesores en todos los departamentos. Eventos: fotografía profesional con etiquetado automatizado y entrega al cliente.

La arquitectura combina varios servicios de AWS para crear un sistema de búsqueda de fotografías contextualmente consciente:

El sistema sigue un flujo de trabajo optimizado:

Las imágenes se cargan en depósitos de S3 con activadores Lambda automáticos. Las fotografías de referencia en las caras/prefijo se procesan para crear modelos de reconocimiento. Las fotos nuevas activan Amazon Rekognition para la detección de rostros y el etiquetado de objetos. Neptuno almacena conexiones entre personas, objetos y contextos. Amazon Bedrock crea descripciones contextuales utilizando caras y relaciones detectadas. DynamoDB almacena metadatos con capacidad de búsqueda con capacidades de recuperación rápida. Las consultas en lenguaje natural atraviesan el gráfico de Neptuno para obtener resultados inteligentes.

El código fuente completo está disponible en GitHub.

Requisitos previos

Antes de implementar esta solución, asegúrese de tener lo siguiente:

Implementar la solución

Descargue el código fuente completo del repositorio de GitHub. Hay instrucciones más detalladas de configuración e implementación disponibles en el archivo README.

El proyecto está organizado en varios directorios clave que separan las preocupaciones y permiten el desarrollo modular:

smart-photo-caption-and-search/ ├── lambda/ │ ├── face_indexer.py # Indexa rostros de referencia en Rekognition │ ├── faces_handler.py # Enumera rostros indexados a través de API │ ├── image_processor.py # Canal de procesamiento principal │ ├── search_handler.py # Maneja consultas de búsqueda │ ├── style_caption.py # Genera subtítulos con estilo │ ├── Relations_handler_neptune.py # Administra las relaciones de Neptune │ ├── label_relationships.py # Consulta jerarquías de etiquetas │ └── neptune_search.py # Análisis de relaciones de Neptune ├── lambda_layer/ # Capa de procesamiento de imágenes de almohada ├── neptune_layer/ # Capa Gremlin Python Neptune ├── ui/ │ └── demo.html # Interfaz web con autenticación Cognito ├── app.py # Punto de entrada de la aplicación CDK ├── image_name_cap_stack_neptune.py # Pila de CDK habilitada para Neptune └── requisitos_neptune.txt # Dependencias de Python

La solución utiliza las siguientes funciones clave de Lambda:

image_processor.py – Procesamiento central con reconocimiento facial, detección de etiquetas y generación de subtítulos enriquecidos con relaciones search_handler.py – Procesamiento de consultas en lenguaje natural con recorrido de relaciones de varios pasos Relations_handler_neptune.py – Gestión de relaciones basada en configuración y conexiones de gráficos label_relationships.py – Consultas de etiquetas jerárquicas, asociaciones objeto-persona y descubrimiento semántico

Para implementar la solución, complete los siguientes pasos:

Ejecute el siguiente comando para instalar dependencias:

instalación de pip -r requisitos_neptune.txt

Para una configuración inicial, ejecute el siguiente comando para iniciar AWS CDK:

arranque del cdk

Ejecute el siguiente comando para aprovisionar recursos de AWS:

implementar cdk

Configure las credenciales del grupo de usuarios de Amazon Cognito en la interfaz de usuario web. Cargue fotografías de referencia para establecer la línea base de reconocimiento. Cree relaciones familiares de muestra utilizando la API o la interfaz de usuario web.

El sistema maneja automáticamente el reconocimiento facial, la detección de etiquetas, la resolución de relaciones y la generación de subtítulos de IA a través de un canal sin servidor, lo que permite consultas en lenguaje natural como "la madre de una persona con un automóvil" impulsadas por recorridos de gráficos de Neptune.

Funciones clave y casos de uso

En esta sección, analizamos las características clave y los casos de uso de esta solución.

Automatizar el reconocimiento y etiquetado de rostros

Con Amazon Rekognition, puede identificar automáticamente a personas a partir de fotografías de referencia, sin etiquetado manual. Cargue algunas imágenes claras por persona y el sistema las reconocerá en toda su colección, independientemente de la iluminación o los ángulos. Esta automatización reduce el tiempo de etiquetado de semanas a horas, lo que respalda directorios corporativos, archivos de cumplimiento y flujos de trabajo de gestión de eventos.

Habilitar la búsqueda basada en relaciones

Al utilizar Neptune, la solución comprende quién aparece en las fotos y cómo están conectados. Puede ejecutar consultas en lenguaje natural como "gerente de Sarah" o "mamá con sus hijos", y el sistema atraviesa relaciones de múltiples saltos para devolver imágenes relevantes. Esta búsqueda semántica reemplaza la clasificación manual de carpetas con un descubrimiento intuitivo y contextual.

Comprender objetos y contexto automáticamente

Amazon Rekognition detecta objetos, escenas y actividades, y Neptune los vincula con personas y relaciones. Esto permite consultas complejas como "ejecutivos con vehículos de la empresa" o "profesores en las aulas". La jerarquía de etiquetas se genera dinámicamente y se adapta a diferentes dominios, como atención médica o educación, sin configuración manual.

Genere subtítulos contextuales con Amazon Bedrock

Al utilizar Amazon Bedrock, el sistema crea subtítulos significativos y conscientes de las relaciones, como "Sarah y su gerente discutiendo los resultados trimestrales", en lugar de genéricos. Los subtítulos se pueden ajustar según el tono (como objetivo para cumplimiento, narrativa para marketing o concisos para resúmenes ejecutivos), lo que mejora tanto la capacidad de búsqueda como la comunicación.

Ofrezca una experiencia web intuitiva

Con la interfaz de usuario web, los usuarios pueden buscar fotografías usando lenguaje natural, ver subtítulos generados por IA y ajustar el tono dinámicamente. Por ejemplo, consultas como "madre con hijos" o "actividades al aire libre" arrojan resultados relevantes con subtítulos al instante. Esta experiencia unificada admite flujos de trabajo empresariales y colecciones personales.

La siguiente captura de pantalla muestra el uso de la interfaz de usuario web para la búsqueda inteligente de fotografías y el estilo de subtítulos.

Escalar relaciones de gráficos con jerarquías de etiquetas

Neptune escala para modelar miles de relaciones y etiquetar jerarquías entre organizaciones o conjuntos de datos. Las relaciones se generan automáticamente durante el procesamiento de imágenes, lo que permite un descubrimiento semántico rápido y al mismo tiempo mantiene el rendimiento y la flexibilidad a medida que crecen los datos.

El siguiente diagrama ilustra un ejemplo de gráfico de relación entre personas (basado en la configuración).

Las relaciones entre personas se configuran a través de estructuras de datos JSON pasadas a la función inicialize_relationship_data(). Este enfoque basado en la configuración admite casos de uso ilimitados sin modificaciones de código; simplemente puede definir su gente y sus relaciones en el objeto de configuración.

El siguiente diagrama ilustra un gráfico de jerarquía de etiquetas de ejemplo (generado automáticamente desde Amazon Rekognition).

Las jerarquías de etiquetas y los patrones de coocurrencia se generan automáticamente durante el procesamiento de imágenes. Amazon Rekognition proporciona clasificaciones de categorías que crean las relaciones pertenece_a, y las relaciones aparece_con y co_ocurs_con se crean dinámicamente a medida que se procesan las imágenes.

La siguiente captura de pantalla ilustra un subconjunto del gráfico completo y muestra tipos de relaciones de varias capas.

Métodos de generación de bases de datos.

El gráfico de relaciones utiliza un enfoque flexible basado en la configuración a través de la función inicialize_relationship_data(). Esto mitiga la necesidad de codificación y admite casos de uso ilimitados:

# Estructura de configuración genérica config = { "personas": [ {"nombre": "alice", "género": "mujer", "rol": "madre"}, {"nombre": "jane", "género": "niña", "rol": "hija"} ], "relaciones": [ {"from": "alice", "to": "jane", "type": "parent_of", "subtype": "mother_of"}, {"from": "jane", "to": "david", "type": "sibling_of", "bidireccional": True} ] } # Creación de relación genérica para rel en Relations_data: gV().has('name', rel["from"]).addE(rel["type"]).to( __.V().has('name', rel["to"]) ).property('type', rel["subtype"]).next() # Ejemplo de negocio: simplemente cambie la configuración business_config = { "people": [{"name": "sarah", "role": "manager"}], "relationships": [{"from": "sarah", "to": "john", "type": "administra", "subtype": "manager_of"}] }

La base de datos de relaciones de etiquetas se crea automáticamente durante el procesamiento de imágenes mediante la función store_labels_in_neptune():

# Rekognition proporciona etiquetas con categorías respuesta = rekognition.detect_labels( Image={'Bytes': image_bytes}, MaxLabels=20, MinConfidence=70 ) # Extrae etiquetas y categorías para la etiqueta en respuesta.get('Labels',[]): label_data = { 'nombre': etiqueta['Nombre'], # por ejemplo, "Coche" 'categorías': [gato['Nombre'] para gato en label.get('Categorías',[])] # por ejemplo, ["Vehículo", "Transporte"] } # Creación automática de jerarquía en Neptune para categoría en categorías: # Crear relación pertenece_a (Coche -> Vehículo -> Transporte) gV().has('nombre', nombre_etiqueta).addE('belongs_to').to( __.V().has('nombre', nombre_categoría) ).property('tipo', 'jerarquía').next() # Crear aparece_con relación (Persona -> Coche) gV().has('nombre', nombre_persona).addE('aparece_con').to( __.V().has('nombre', nombre_etiqueta) ).property('confianza', confianza).next()

Con estas funciones, puede administrar grandes colecciones de fotografías con consultas de relaciones complejas, descubrir fotografías por contexto semántico y encontrar colecciones temáticas a través de patrones de coexistencia de etiquetas.

Consideraciones de rendimiento y escalabilidad

Considere los siguientes factores de rendimiento y escalabilidad:

Manejo de cargas masivas: el sistema procesa grandes colecciones de fotografías de manera eficiente, desde pequeños álbumes familiares hasta archivos empresariales con miles de imágenes. La inteligencia integrada gestiona los límites de tasa de API y facilita el procesamiento confiable incluso durante los períodos pico de carga. Optimización de costos: la arquitectura sin servidor garantiza que solo pague por el uso real, lo que la hace rentable tanto para equipos pequeños como para grandes empresas. Como referencia, procesar 1000 imágenes normalmente cuesta aproximadamente entre 15 y 25 dólares (incluida la detección de rostros de Amazon Rekognition, la generación de subtítulos de Amazon Bedrock y la ejecución de la función Lambda), mientras que el clúster Neptune cuesta entre 100 y 150 dólares mensuales, independientemente del volumen. Los costos de almacenamiento siguen siendo mínimos, por debajo de 1 dólar por cada 1000 imágenes en Amazon S3. Escalamiento del rendimiento: el enfoque de base de datos de gráficos de Neptune escala de manera eficiente desde pequeñas estructuras familiares hasta redes de escala empresarial con miles de personas. El sistema mantiene tiempos de respuesta rápidos para consultas sobre relaciones y admite el procesamiento masivo de grandes colecciones de fotografías con lógica de reintento automático y seguimiento del progreso.

Seguridad y privacidad

Esta solución implementa medidas de seguridad integrales para proteger datos confidenciales de imágenes y reconocimiento facial. El sistema cifra los datos en reposo mediante cifrado AES-256 con claves administradas de AWS Key Management Service (AWS KMS) y protege los datos en tránsito con TLS 1.2 o posterior. Las funciones de Neptune y Lambda operan dentro de subredes de nube privada virtual (VPC), aisladas del acceso directo a Internet, y API Gateway proporciona el único punto final público con políticas CORS y limitación de velocidad. El control de acceso sigue principios de privilegios mínimos con políticas de AWS Identity and Access Management (IAM) que otorgan solo los permisos mínimos requeridos: las funciones Lambda solo pueden acceder a depósitos S3 específicos y tablas de DynamoDB, y el acceso a Neptune está restringido a operaciones de bases de datos autorizadas. Los datos de reconocimiento facial y de imágenes permanecen dentro de su cuenta de AWS y nunca se comparten fuera de los servicios de AWS. Puede configurar políticas de ciclo de vida de Amazon S3 para la gestión automatizada de la retención de datos, y AWS CloudTrail proporciona registros de auditoría completos de acceso a datos y llamadas API para monitoreo de cumplimiento, compatible con los requisitos de GDPR e HIPAA con monitoreo adicional de Amazon GuardDuty para detección de amenazas.

Limpiar

Para evitar incurrir en cargos futuros, complete los siguientes pasos para eliminar los recursos que creó:

Eliminar imágenes del depósito S3:

aws s3 rm s3://YOUR_BUCKET_NAME –recursivo

Elimine el clúster de Neptune (este comando también elimina automáticamente las funciones Lambda):

cdk destruir

Eliminar la colección de rostros de Amazon Rekognition:

aws reconocimiento eliminar-colección –collection-id colección de caras

Conclusión

Esta solución demuestra cómo Amazon Rekognition, Amazon Neptune y Amazon Bedrock pueden trabajar juntos para permitir una búsqueda inteligente de fotografías que comprenda tanto el contenido visual como el contexto. Construido sobre una arquitectura totalmente sin servidor, combina visión por computadora, modelado de gráficos y comprensión del lenguaje natural para brindar experiencias de descubrimiento escalables y similares a las humanas. Al convertir las colecciones de fotografías en un gráfico de conocimiento de personas, objetos y momentos, redefine cómo los usuarios interactúan con los datos visuales, haciendo que la búsqueda sea más semántica, relacional y significativa. En última instancia, refleja la fiabilidad y confiabilidad de las tecnologías de gráficos e inteligencia artificial de AWS al permitir una comprensión fotográfica segura y consciente del contexto.

Para obtener más información, consulte los siguientes recursos:

Sobre los autores

kara yang

Kara Yang es científica de datos e ingeniera de aprendizaje automático en AWS Professional Services y se especializa en inteligencia artificial generativa, modelos de lenguaje grandes y visión por computadora. Sus proyectos abarcan energía, automoción, aeroespacial y fabricación, donde diseña arquitecturas AgentCore y sistemas multiagente con experiencia en ingeniería rápida, diseño de barreras de seguridad y evaluación rigurosa de LLM para ofrecer soluciones de IA escalables y de grado de producción.

Billy Dean

Billy Dean es ejecutivo de cuentas de ProServe y arquitecto de soluciones de inteligencia artificial en Amazon Web Services con más de 20 años de experiencia en ventas empresariales al servicio de las principales empresas de venta minorista/CPG, energía, seguros y viajes y hotelería. Se especializa en impulsar los resultados comerciales de los clientes a través de soluciones innovadoras en la nube y asociaciones estratégicas.