O problema que essa solução resolve
Um dos maiores obstáculos na construção de aplicações de IA no mundo real sempre foi a desconexão entre três capacidades fundamentais: sistemas que enxergam, sistemas que raciocinam e sistemas que agem. Desenvolvedores frequentemente precisam gerenciar múltiplas APIs, criar integrações customizadas e lidar com soluções frágeis para conectar essas peças — o que resulta em implementações ineficientes e caras.
Para endereçar esse desafio, a AWS publicou uma arquitetura de referência que converge três tecnologias-chave: Visão Computacional, Strands Agents e o Protocolo de Contexto de Modelo (MCP). Juntas, essas tecnologias formam um pipeline onde informações visuais podem ser capturadas, compreendidas e utilizadas dentro de um único framework unificado — reduzindo as barreiras tradicionais entre percepção, tomada de decisão e ação.
Visão geral da arquitetura
Na arquitetura proposta, o cliente interage com múltiplos serviços AWS por meio de uma função centralizada do Gerenciamento de Identidade e Acesso da AWS (IAM), que atua como gateway de segurança para o gerenciamento de permissões. Esse modelo elimina a necessidade de credenciais incorporadas no cliente e simplifica o controle de acesso entre os serviços envolvidos.
Os serviços que compõem a solução são:
- Amazon Simple Storage Service (Amazon S3): armazenamento de objetos para recuperar e gerenciar os dados visuais.
- Amazon OpenSearch: capacidades de busca para consultar dados indexados.
- Amazon Bedrock: acesso a modelos de IA generativa para tarefas como geração de texto pelo agente.
- Amazon Rekognition: análise de imagens, incluindo detecção de objetos e identificação de labels.
As três tecnologias centrais
A solução é sustentada por três pilares tecnológicos que vale entender individualmente antes de ver como se integram:
- Visão Computacional: foca no processamento de informações visuais, como fotos e vídeos.
- Strands Agents: é um framework para construção de agentes de IA que suporta múltiplos provedores de modelos e ambientes de implantação. Oferece um loop de agente customizável com capacidades de produção, incluindo observabilidade, rastreamento e implantação escalável.
- Protocolo de Contexto de Modelo (MCP): é um padrão criado para simplificar como sistemas de IA se integram com ferramentas e fontes de dados, substituindo a necessidade de construir conexões separadas para cada par de modelo e fonte de dados.
Interface com o usuário (cliente MCP)
A interface da aplicação é construída com Streamlit e oferece um chat UI intuitivo. No painel lateral, o usuário pode selecionar o modelo de fundação preferido para análise — o padrão é o Claude 4 Sonnet com capacidades de raciocínio, mas também há suporte ao Claude 3.7 Sonnet. Há ainda um botão dedicado para resetar o histórico da conversa.
A seção central da interface permite o upload de conteúdo visual. O sistema aceita imagens (PNG, JPG, JPEG, GIF, WEBP) e vídeos (MP4, AVI, MOV, MKV, WEBM, MPEG4), com limite de 200 MB por arquivo. Após o upload, o agente de IA pode realizar tarefas como recorte de objetos, detecção de labels e análise detalhada do conteúdo. O usuário interage pelo campo de mensagem na parte inferior da tela.
Servidores MCP de Visão Computacional
A implementação é composta por dois servidores: o servidor CV e o servidor OpenSearch. Cada um trata tipos diferentes de requisições.
Servidor CV
O servidor CV da AWS consolida três serviços de IA da Amazon em um protocolo padronizado, permitindo que agentes de IA acessem e processem conteúdo visual por meio de uma API consistente. As ferramentas disponíveis são:
describe_image: usa o modelo Claude no Amazon Bedrock para analisar imagens com base em instruções de monitoramento específicas. Recupera imagens do Amazon S3 e as processa pelas capacidades multimodais do Claude. É útil para gerar descrições ou identificar atributos específicos dentro das imagens.analyze_video: usa as capacidades de análise de vídeo do Amazon Nova para processar arquivos de vídeo armazenados no S3, de acordo com instruções específicas fornecidas pelo usuário.detect_labels: integra-se ao Amazon Rekognition para detecção de labels e análise de propriedades de imagens. Oferece controle sobre parâmetros como limiares de confiança, contagem máxima de labels e filtros customizados. Identifica objetos, cenas e atividades, fornecendo coordenadas de bounding box para localização espacial.crop_bounding_box: também usa o Amazon Rekognition para detectar elementos-chave como faces, objetos ou texto, e então fornece coordenadas precisas de bounding box para recorte inteligente da imagem.remove_background: usa a biblioteca rembg para remoção de fundo de imagens sem exigir configurações complexas ou expertise avançada em aprendizado de máquina (ML).
O código abaixo ilustra a estrutura geral da ferramenta describe_image, mostrando como a imagem é recuperada do S3, validada quanto ao tipo de conteúdo e enviada ao Claude para análise:
async def describe_image(image_file_name: str, monitoring_instructions: str) ...
try:
# Get the image from S3
prefix = f"mcp/{image_file_name}"
print(f"\n[DEBUG] Attempting to analyze image at s3://{Connections.agent_bucket_name}/{prefix}\n")
response = Connections.s3_client.get_object(
Bucket=Connections.agent_bucket_name,
Key=prefix
)
image_data = response['Body'].read()
content_type = response['ContentType']
# Ensure content type is supported by Bedrock
valid_content_types = ['image/jpeg', 'image/png', 'image/gif', 'image/webp']
if content_type not in valid_content_types:
# Try to determine from file extension
if image_file_name.lower().endswith(('.jpg', '.jpeg')):
content_type = 'image/jpeg'
elif image_file_name.lower().endswith('.png'):
content_type = 'image/png'
elif image_file_name.lower().endswith('.gif'):
content_type = 'image/gif'
elif image_file_name.lower().endswith('.webp'):
content_type = 'image/webp'
else:
content_type = 'image/jpeg' # Default fallback
print(f"[DEBUG] Content type corrected to: {content_type}")
# Create the prompt for Claude
prompt = create_multimodal_prompt(
image_data=image_data,
text=monitoring_instructions,
content_type=content_type,
system_prompt=(
"You are a helpful assistant that analyzes images. "
"Provide detailed, accurate descriptions based on the user's instructions."
)
)
# Get analysis from Claude
analysis = invoke_bedrock_model(prompt)
return ImageAnalysisResponse(
status="success",
source=prefix,
analysis=analysis,
message="Image analysis completed successfully"
)
except Exception as e:
logger.error(f"Error analyzing image: {str(e)}")
return ImageAnalysisResponse(
status="error",
source=image_file_name,
analysis=None,
message=f"Error analyzing image: {str(e)}"
)
Servidor OpenSearch
O servidor OpenSearch fornece uma interface unificada para ingestão e recuperação de imagens. As ferramentas disponíveis são:
generate_image_description: usa os modelos Claude do Amazon Bedrock para analisar imagens e gerar descrições em linguagem natural, processando as imagens pelas capacidades multimodais do Claude.generate_multimodal_embedding: usa os modelos Amazon Titan multimodais para criar representações vetoriais de alta dimensão (embeddings) que capturam informações visuais e textuais, codificando relações semânticas entre imagens e texto em um espaço vetorial compartilhado.ingest_image_to_opensearch: oferece um pipeline completo para processar e armazenar imagens no OpenSearch, combinando geração de descrição e criação de embeddings multimodais, indexando essas informações com metadados adequados.query_images_by_text: permite busca em linguagem natural em coleções de imagens usando os embeddings multimodais armazenados no OpenSearch. Consultas em texto são convertidas em embeddings e comparadas com os embeddings de imagens para encontrar os matches mais semanticamente similares.query_images_by_image: implementa busca baseada em imagem, permitindo que usuários encontrem imagens similares usando uma imagem como entrada de consulta.bulk_ingest_images: oferece capacidade de processamento em lote para ingestão de imagens em larga escala, gerenciando processamento paralelo e utilização de recursos.
Casos de uso práticos
Caso de uso 1: Pipeline de visão computacional sem infraestrutura dedicada
A arquitetura permite implementar capacidades de análise visual sem a complexidade tradicional de configurar e manter infraestrutura extensa. Desenvolvedores podem realizar tarefas como geração de bounding boxes, criação de descrições detalhadas de imagens e análise de vídeos — tudo sem servidores dedicados ou sistemas de gerenciamento complexos. O modelo de pagamento por uso e a implantação rápida são diferenciais importantes dessa abordagem.
Caso de uso 2: Catálogo inteligente de imagens com embeddings
Ao gerar e armazenar embeddings de imagens em um banco de dados vetorial, a solução vai além das limitações de buscas tradicionais baseadas em palavras-chave, permitindo recuperação de imagens com compreensão contextual. O sistema usa modelos de IA para criar embeddings ricos que capturam a essência semântica das imagens, permitindo encontrar conteúdo visualmente similar mesmo quando não há correspondência exata de palavras-chave. Isso cria um sistema de catalogação escalável que entende relações e contextos visuais — especialmente valioso para grandes coleções de imagens.
Caso de uso 3: Banco de memória visual para raciocínio contextual
Este caso de uso combina o pipeline de visão computacional com busca por similaridade baseada em embeddings. O sistema processa cenas para extrair objetos e seus bounding boxes, gera embeddings para cada elemento e os armazena com metadados ricos — incluindo informações temporais e espaciais. Isso permite raciocínio contextual entre múltiplas câmeras e períodos de tempo, respondendo perguntas complexas sobre indivíduos, suas associações e a presença de objetos em áreas específicas. A integração com agentes de monitoramento de vídeo viabiliza funcionalidades como detecção de atividades suspeitas e análise de padrões históricos.
Como implantar a solução
Para começar, é necessário ter instalado: AWS Command Line Interface (AWS CLI), uma conta AWS ativa e Python. O processo de implantação completo está documentado no README do repositório GitHub da solução.
Limpeza de recursos
Para evitar cobranças contínuas após os testes, a AWS recomenda as seguintes etapas: esvaziar o bucket do S3 utilizado e excluir a stack do AWS CloudFormation criada durante a implantação.
Conclusão
A integração entre as capacidades de IA do Amazon Bedrock, os protocolos padronizados do MCP e os serviços de visão computacional da AWS demonstra como aplicações modernas de visão computacional podem ser ao mesmo tempo sofisticadas e acessíveis. A solução endereça desafios recorrentes no campo: reduz a complexidade de infraestrutura por meio de arquiteturas serverless, oferece compreensão semântica, capacidades de raciocínio contextual e interfaces padronizadas que simplificam o desenvolvimento e a implantação.
A combinação de protocolos padronizados, modelos de IA poderosos e opções flexíveis de implantação posiciona essa solução como base para a próxima geração de aplicações de inteligência visual — onde padronização, acessibilidade e integração serão cada vez mais determinantes para construir sistemas práticos e escaláveis que conectam percepção visual e ação inteligente.
Fonte
Agentic vision: Building visual intelligence with Amazon Bedrock and MCP servers (https://aws.amazon.com/blogs/machine-learning/agentic-vision-building-visual-intelligence-with-amazon-bedrock-and-mcp-servers/)
Leave a Reply