paint-brush
Usando o Amazon Rekognition para criar um recurso de detecção de objetos de imagem para uma startup de mídia socialpor@aidenwalton
297 leituras

Usando o Amazon Rekognition para criar um recurso de detecção de objetos de imagem para uma startup de mídia social

por Aiden Walton6m2024/04/14
Read on Terminal Reader

Muito longo; Para ler

O Rekognition nos permitiu construir rapidamente um recurso de detecção de objetos de imagem que é preciso, rápido e escalável.
featured image - Usando o Amazon Rekognition para criar um recurso de detecção de objetos de imagem para uma startup de mídia social
Aiden Walton HackerNoon profile picture


A capacidade de coletar informações a partir de imagens tem um profundo potencial comercial. E, bem, também pode ser divertido. Neste artigo, descreverei como usamos Reconhecimento da Amazon para construir rapidamente um recurso de detecção de objetos de imagem para uma startup de mídia social.

O que é detecção de objetos de imagem?

Simplificando, a detecção de objetos de imagem é o processo de detecção e extração de informações sobre entidades em uma determinada imagem. Isso envolve detectar objetos, atividades, lugares, animais, produtos, etc.


A detecção de objetos de imagem tem uma ampla variedade de casos de uso em diversos setores. Grandes setores como bancos, seguros, mídias sociais, aplicativos de namoro, agências de notícias e FinTech usam a detecção de objetos de uma forma ou de outra.

Nosso caso de uso

Recentemente, recebemos a tarefa de construir um recurso de detecção de objetos de imagem para uma startup de mídia social. O caso de uso era simples: os usuários deveriam poder selecionar algumas de suas fotos favoritas e enviá-las para serem apresentadas em uma das páginas de mídia social da startup.


A equipe de marketing de mídia social precisava de uma maneira de pesquisar determinados temas nas imagens enviadas – como fotos do oceano, pontos turísticos populares, animais, shows musicais, etc.

Análise de imagem usando aprendizado profundo

Analisar imagens e classificá-las com base no cenário e nos objetos contidos na imagem não é uma tarefa simples. A visão humana é simplesmente notável, e construir um aplicativo capaz de replicar a capacidade do cérebro de detectar objetos é imensamente complexo. Existe toda uma indústria de visão computacional dedicada a fazer exatamente isso.


Realizar a detecção de objetos do zero normalmente é um processo de várias etapas que envolve:

  • Coletando imagens e rotulando os objetos dentro
  • Treinando os modelos de ML
  • Usando os modelos treinados para realizar a análise
  • Ajuste de desempenho
  • E repita…


Nosso objetivo com esse recurso, como todos os outros no projeto, era construí-lo rapidamente e testar sua eficácia em um ambiente de produção o mais rápido possível. Além disso, não queríamos dedicar recursos de desenvolvimento à criação de uma solução desde o início, quando poderíamos aproveitar os serviços de nuvem existentes.


Cue Serverless – todo o back-end da startup é totalmente sem servidor e orientado a eventos. Com essa arquitetura, conseguimos ter equipes de desenvolvedores que só precisam se concentrar em recursos que diferenciam o aplicativo de mídia social dos demais. Serverless também nos permite construir serviços altamente escaláveis e, ao mesmo tempo, pagar apenas exatamente pelo que usamos – uma consideração importante para uma startup em expansão.


Portanto, para alcançar esse recurso, usamos o Amazon Rekognition — um serviço de análise de imagens e vídeos totalmente sem servidor. Usando o Rekognition, conseguimos desenvolver esse fluxo de trabalho complexo e crítico em questão de horas . Vamos mergulhar nisso.

O que é o reconhecimento da Amazon?

Amazon Rekognition é uma oferta AWS Serverless que usa aprendizado profundo para realizar análises de imagens e vídeos. Ser totalmente sem servidor significa que com o Rekognition não precisamos nos preocupar com a complexidade da infraestrutura subjacente; pagamos apenas pelo que usamos e nos fornece software pré-escrito para tarefas de análise de imagens e vídeos. O Rekognition oferece uma variedade de recursos, incluindo detecção de rótulos de imagens, detecção de rosto, detecção de celebridades, moderação de conteúdo e detecção de texto.


A melhor parte? O Rekognition abstrai o trabalho pesado de construção, treinamento e análise de modelos de aprendizado profundo. A análise de imagens e vídeos é rápida e simples, com configuração mínima necessária. Não precisávamos nos preocupar em construir e treinar nossos próprios conjuntos de dados e provisionar a capacidade do servidor para que nosso serviço fosse escalonado. Tudo o que precisávamos nos preocupar era com a integração.

Arquitetura

A arquitetura é direta. Nosso aplicativo móvel carrega imagens dos telefones dos usuários em um bucket S3. O upload para o S3 aciona uma função Lambda que, por sua vez, chama a API Rekognition e armazena os resultados no DynamoDB para consulta.


Diagrama de arquitetura de detecção de objetos de imagem sem servidor usando AWS

O código

Escrever código é divertido, certo? Bem, escrever menos código é ainda mais divertido.


O Rekognition expõe um conjunto de APIs para as quais você envia dados de imagem, para as quais realiza a análise e retorna os resultados. Para nosso caso de uso, usamos o rótulos de detecção API.


Uma versão simplificada de nosso arquivo de infraestrutura como código de estrutura sem servidor se parece com isto:

 //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


Nosso código Lambda simplesmente chama a API Rekognition e armazena os resultados no DynamoDB, mas você pode usar o que fizer sentido para seu caso de uso. Obtemos o nome do bucket S3 e o nome do objeto da imagem do evento S3 e os passamos para a função detectLabels do SDK de reconhecimento .


Também passamos dois parâmetros opcionais (MaxLabels e MinConfidence) para especificar o limite do nível de confiança e um número máximo de rótulos que queremos retornar. No exemplo abaixo, obteremos apenas até 20 rótulos na resposta, e todos os rótulos terão um nível de confiança superior a 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 // ... };

Quem não ama a foto de um cachorro? Abaixo está uma resposta para uma imagem que carregamos em nosso bucket S3. Como você pode ver, o Rekognition determina corretamente que se trata da imagem de um cachorro em um caminho de cascalho ao ar livre (e nos diz onde o cachorro está na imagem!).

Resposta de reconhecimento (esquerda), imagem carregada (direita).

Pensamentos finais

Então, o que penso depois de usar o Rekognition em produção por alguns meses? Aqui está uma lista das principais conclusões:

  • Totalmente sem servidor — Evite o trabalho pesado indiferenciado de gerenciar a complexidade da infraestrutura subjacente e use software pré-construído e modelos pré-treinados.


  • Desempenho — O reconhecimento é rápido, cerca de 600ms na maioria dos casos.


  • Fácil de usar — A API é simples e fácil de integrar.


  • Melhoria contínua – a AWS mantém e itera constantemente o Rekognition, o que significa que ele se tornará cada vez melhor com o tempo.


  • Precisão — O Rekognition aproveita o amplo conjunto de clientes da Amazon; resultando em detecção de rótulo de imagem altamente precisa.


  • Tem um nível gratuito generoso, para que você possa testar antes de decidir.


  • Custo – Pagamos apenas pelo que usamos. O Rekognition nos permite aumentar ou diminuir a escala com base nas necessidades do negócio.

Resumo

TLDR: O Rekognition nos permitiu construir rapidamente um recurso de detecção de objetos de imagem que é preciso, rápido e escalonável.