Detecte a variação populacional de espécies ameaçadas usando o Amazon Rekognition PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Detecte a variação populacional de espécies ameaçadas usando o Amazon Rekognition

Nosso planeta enfrenta uma crise de extinção global. Relatório ONU mostra um número impressionante de mais de um milhão de espécies que se teme que estejam em vias de extinção. As razões mais comuns para a extinção incluem perda de habitat, caça furtiva e espécies invasoras. Diversos fundações de conservação da vida selvagem, pesquisadores, voluntários e guardas florestais anti-caça têm trabalhado incansavelmente para enfrentar esta crise. Ter informações precisas e regulares sobre animais ameaçados de extinção na natureza melhorará a capacidade dos conservacionistas da vida selvagem de estudar e conservar espécies ameaçadas. Cientistas da vida selvagem e equipe de campo usam câmeras equipadas com gatilhos infravermelhos, chamados armadilhas fotográficas, e coloque-os nos locais mais eficazes nas florestas para capturar imagens da vida selvagem. Essas imagens são então revisadas manualmente, o que é um processo muito demorado.

Neste post, demonstramos uma solução usando Rótulos personalizados do Amazon Rekognition juntamente com armadilhas de câmera com sensor de movimento para automatizar esse processo para reconhecer espécies geradas e estudá-las. O Rekognition Custom Labels é um serviço de visão computacional totalmente gerenciado que permite aos desenvolvedores criar modelos personalizados para classificar e identificar objetos em imagens específicas e exclusivas para seu caso de uso. Detalhamos como reconhecer espécies animais ameaçadas de extinção a partir de imagens coletadas de armadilhas fotográficas, obter informações sobre sua contagem populacional e detectar humanos ao seu redor. Essas informações serão úteis para os conservacionistas, que podem tomar decisões proativas para salvá-los.

Visão geral da solução

O diagrama a seguir ilustra a arquitetura da solução.

Esta solução usa os seguintes serviços de IA, tecnologias sem servidor e serviços gerenciados para implementar uma arquitetura escalonável e econômica:

  • Amazona atena – Um serviço de consulta interativa sem servidor que facilita a análise de dados no Amazon S3 usando SQL padrão
  • Amazon CloudWatch – Um serviço de monitoramento e observabilidade que coleta dados operacionais e de monitoramento na forma de logs, métricas e eventos
  • Amazon DynamoDB – Um banco de dados de valores-chave e documentos que oferece desempenho de milissegundos de um dígito em qualquer escala
  • AWS Lambda – Um serviço de computação sem servidor que permite executar código em resposta a gatilhos, como alterações nos dados, mudanças no estado do sistema ou ações do usuário
  • AmazonQuickSight – Um serviço de inteligência de negócios baseado em machine learning (ML) sem servidor que fornece insights, painéis interativos e análises avançadas
  • Reconhecimento da Amazônia – Usa ML para identificar objetos, pessoas, textos, cenas e atividades em imagens e vídeos, bem como detectar qualquer conteúdo impróprio
  • Rótulos personalizados do Amazon Rekognition – Usa o AutoML para ajudar a treinar modelos personalizados para identificar os objetos e cenas em imagens que são específicos para suas necessidades de negócios
  • Serviço de fila simples da Amazon (Amazon SQS) – Um serviço de enfileiramento de mensagens totalmente gerenciado que permite desacoplar e dimensionar microsserviços, sistemas distribuídos e aplicativos sem servidor
  • Serviço de armazenamento simples da Amazon (Amazon S3) – Serve como um armazenamento de objetos para documentos e permite o gerenciamento central com controles de acesso ajustados.

As etapas de alto nível nesta solução são as seguintes:

  1. Treine e construa um modelo personalizado usando o Rekognition Custom Labels para reconhecer espécies ameaçadas de extinção na área. Para este post, treinamos em imagens de rinocerontes.
  2. As imagens capturadas por meio das armadilhas de câmera do sensor de movimento são carregadas em um bucket do S3, que publica um evento para cada imagem carregada.
  3. Uma função Lambda é acionada para cada evento publicado, que recupera a imagem do bucket do S3 e a passa para o modelo personalizado para detectar o animal ameaçado.
  4. A função Lambda usa a API do Amazon Rekognition para identificar os animais na imagem.
  5. Se a imagem tiver alguma espécie de rinoceronte ameaçada de extinção, a função atualiza o banco de dados do DynamoDB com a contagem do animal, data da imagem capturada e outros metadados úteis que podem ser extraídos da imagem EXIF cabeçalho.
  6. O QuickSight é usado para visualizar a contagem de animais e os dados de localização coletados no banco de dados do DynamoDB para entender a variação da população animal ao longo do tempo. Ao examinar os painéis regularmente, os grupos de conservação podem identificar padrões e isolar causas prováveis, como doenças, clima ou caça furtiva, que podem estar causando essa variação e tomar medidas proativas para resolver o problema.

Pré-requisitos

Um bom conjunto de treinamento é necessário para criar um modelo eficaz usando os rótulos personalizados do Rekognition. Usamos as imagens do AWS Marketplace (Conjunto de dados de animais e vida selvagem da Shutterstock) e Kaggle para construir o modelo.

Implementar a solução

Nosso fluxo de trabalho inclui as seguintes etapas:

  1. Treine um modelo personalizado para classificar as espécies ameaçadas (rinoceronte em nosso exemplo) usando o recurso AutoML do Rekognition Custom Labels.

Você também pode executar essas etapas no console do Rekognition Custom Labels. Para obter instruções, consulte Criação de um projeto, Como criar conjuntos de dados de treinamento e teste e Como treinar um modelo de rótulos personalizados do Amazon Rekognition.

Neste exemplo, usamos o conjunto de dados do Kaggle. A tabela a seguir resume o conteúdo do conjunto de dados.

O rótulo Conjunto de treinamento Conjunto de teste
leão 625 156
Rinoceronte 608 152
Elefante africano 368 92
  1. Carregue as fotos capturadas das armadilhas fotográficas para um bucket S3 designado.
  2. Defina as notificações de eventos no Permissões seção do bucket do S3 para enviar uma notificação a uma fila SQS definida quando um objeto for adicionado ao bucket.

Definir notificação de evento

A ação de upload aciona um evento que é enfileirado no Amazon SQS usando a notificação de evento do Amazon S3.

  1. Adicione as permissões apropriadas por meio da política de acesso da fila do SQS para permitir que o bucket do S3 envie a notificação para a fila.

ML-9942-evento-não

  1. Configure um gatilho do Lambda para a fila do SQS para que a função do Lambda seja invocada quando uma nova mensagem for recebida.

Gatilho lambda

  1. Modifique a política de acesso para permitir que a função do Lambda acesse a fila do SQS.

Política de acesso à função do Lambda

A função do Lambda agora deve ter as permissões corretas para acessar a fila do SQS.

Permissões da função Lambda

  1. Configure as variáveis ​​de ambiente para que possam ser acessadas no código.

Variáveis ​​ambientais

Código da função lambda

A função do Lambda executa as seguintes tarefas ao receber uma notificação da fila do SNS:

  1. Faça uma chamada de API para o Amazon Rekognition para detectar rótulos do modelo personalizado que identificam as espécies ameaçadas:
exports.handler = async (event) => {
const id = AWS.util.uuid.v4();
const bucket = event.Records[0].s3.bucket.name;
const photo = decodeURIComponent(event.Records[0].s3.object.key.replace(/+/g, ' '));
const client = new AWS.Rekognition({ region: REGION });
const paramsCustomLabel = {
Image: {
S3Object: {
Bucket: bucket,
Name: photo
},
},
ProjectVersionArn: REK_CUSTOMMODEL,
MinConfidence: MIN_CONFIDENCE
}
let response = await client.detectCustomLabels(paramsCustomLabel).promise();
console.log("Rekognition customLabels response = ",response);

  1. Busque as tags EXIF ​​da imagem para obter a data em que a foto foi tirada e outros dados EXIF ​​relevantes. O código a seguir usa as dependências (pacote – versão) exif-reader – ^1.0.3, sharp – ^0.30.7:
const getExifMetaData = async (bucket,key)=>{
return new Promise((resolve) => {
const s3 = new AWS.S3({ region: REGION });
const param = {
Bucket: bucket,
Key : key
};

s3.getObject(param, (error, data) => {
if (error) {
console.log("Error getting S3 file",error);
resolve({status:false,errorText: error.message});
} else {
sharp(data.Body)
.metadata()
.then(({ exif }) => {
const exifProperties = exifReader(exif);
resolve({status:true,exifProp: exifProperties});
}).catch(err => {console.log("Error Processing Exif ");resolve({status:false});})
}
});
});
}

var gpsData = "";
var createDate = "";
const imageS3 = await getExifMetaData(bucket, photo);
if(imageS3.status){
gpsData = imageS3.exifProp.gps;
createDate = imageS3.exifProp.image.CreateDate;
}else{
createDate = event.Records[0].eventTime;
console.log("No exif found in image, setting createDate as the date of event", createDate);
}

A solução descrita aqui é assíncrona; as imagens são capturadas pelas armadilhas fotográficas e, posteriormente, enviadas para um bucket S3 para processamento. Se as imagens da armadilha fotográfica forem carregadas com mais frequência, você pode estender a solução para detectar humanos na área monitorada e enviar notificações aos ativistas preocupados para indicar possível caça furtiva nas proximidades desses animais ameaçados de extinção. Isso é implementado por meio da função Lambda que chama a API do Amazon Rekognition para detectar rótulos da presença de um humano. Se um humano for detectado, uma mensagem de erro será registrada no CloudWatch Logs. Uma métrica filtrada no log de erros aciona um alarme do CloudWatch que envia um e-mail para os ativistas de conservação, que podem tomar outras medidas.

  1. Expanda a solução com o seguinte código:
const paramHumanLabel = {
Image: {
S3Object: {
Bucket: bucket,
Name: photo
},
},
MinConfidence: MIN_CONFIDENCE
}

let humanLabel = await client.detectLabels(paramHumanLabel).promise();
let humanFound = humanLabel.Labels.filter(obj => obj.Name === HUMAN);
var humanDetected = false;
if(humanFound.length > 0){
console.error("Human Face Detected");
humanDetected = true;
}

  1. Se alguma espécie ameaçada for detectada, a função Lambda atualizará o DynamoDB com a contagem, data e outros metadados opcionais obtidos das tags EXIF ​​da imagem:
let dbresponse = await dynamo.putItem({
Item: {
id: { S: id },
type: { S: response.CustomLabels[0].Name },
image: {S : photo},
createDate: {S: createDate.toString()},
confidence: {S: response.CustomLabels[0].Confidence.toString()},
gps: {S: gpsData.toString()},
humanDetected: {BOOL: humanDetected}
},

TableName: ANIMAL_TABLENAME,
}).promise();

Consultar e visualizar os dados

Agora você pode usar o Athena e o QuickSight para visualizar os dados.

  1. Defina a tabela do DynamoDB como a fonte de dados do Athena.Fonte de dados do DynamoDB
  1. Adicione os detalhes da fonte de dados.

A próxima etapa importante é definir uma função do Lambda que se conecte à fonte de dados.

  1. Escolheu Criar função Lambda.

Função lambda

  1. Insira nomes para AthenaCatalogName e Balde de derramamento; o resto pode ser configurações padrão.
  2. Implante a função do conector.

Conector lambda

Depois que todas as imagens forem processadas, você poderá usar o QuickSight para visualizar os dados da variação da população ao longo do tempo do Athena.

  1. No console do Athena, escolha uma fonte de dados e insira os detalhes.
  2. Escolha Criar função Lambda para fornecer um conector ao DynamoDB.

Criar função Lambda

  1. No painel do QuickSight, escolha Nova Análise e Novo conjunto de dados.
  2. Escolha Athena como a fonte de dados.

Athena como fonte de dados

  1. Insira o catálogo, banco de dados e tabela para se conectar e escolha Selecionar.

Catálogo

  1. Criação completa do conjunto de dados.

Catálogo

O gráfico a seguir mostra o número de espécies ameaçadas capturadas em um determinado dia.

Gráfico QuickSight

Os dados GPS são apresentados como parte das tags EXIF ​​de uma imagem capturada. Devido à sensibilidade da localização desses animais ameaçados de extinção, nosso conjunto de dados não possuía a localização GPS. No entanto, criamos uma carta geoespacial usando dados simulados para mostrar como você pode visualizar locais quando os dados de GPS estão disponíveis.

Carta geoespacial

limpar

Para evitar incorrer em custos inesperados, certifique-se de desativar os serviços da AWS que você usou como parte desta demonstração — os buckets do S3, a tabela do DynamoDB, o QuickSight, o Athena e o modelo Rekognition Custom Labels treinado. Você deve excluir esses recursos diretamente por meio de seus respectivos consoles de serviço se não precisar mais deles. Referir-se Como excluir um modelo de rótulos personalizados do Amazon Rekognition para obter mais informações sobre como excluir o modelo.

Conclusão

Neste post, apresentamos um sistema automatizado que identifica espécies ameaçadas, registra sua contagem populacional e fornece informações sobre a variação da população ao longo do tempo. Você também pode estender a solução para alertar as autoridades quando humanos (possíveis caçadores furtivos) estiverem nas proximidades dessas espécies ameaçadas de extinção. Com os recursos de IA/ML do Amazon Rekognition, podemos apoiar os esforços de grupos de conservação para proteger espécies ameaçadas e seus ecossistemas.

Para obter mais informações sobre os rótulos personalizados do Rekognition, consulte Introdução aos rótulos personalizados do Amazon Rekognition e Moderando conteúdo. Se você é novo no Rekognition Custom Labels, pode usar nosso nível gratuito, que dura 3 meses e inclui 10 horas de treinamento gratuitas por mês e 4 horas de inferência gratuitas por mês. O nível gratuito do Amazon Rekognition inclui o processamento de 5,000 imagens por mês durante 12 meses.


Sobre os autores

autor-jyothiJyothi Goudar é Partner Solutions Architect Manager na AWS. Ela trabalha em estreita colaboração com o parceiro global integrador de sistemas para habilitar e oferecer suporte aos clientes que migram suas cargas de trabalho para a AWS.

Detecte a variação populacional de espécies ameaçadas usando o Amazon Rekognition PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Jay Rao é um arquiteto de soluções principal na AWS. Ele gosta de fornecer orientação técnica e estratégica aos clientes e ajudá-los a projetar e implementar soluções na AWS.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS