Com o advento da inteligência artificial (IA) e do aprendizado de máquina (ML), os clientes e o público em geral tornaram-se cada vez mais conscientes de sua privacidade, bem como do valor que ela representa no mundo atual, orientado por dados. As empresas estão ativamente buscando e comercializando soluções que priorizam a privacidade, especialmente no domínio da Visão Computacional (CV). Eles precisam garantir aos seus clientes que informações pessoais, como rostos, são anonimizadas e geralmente mantidas em segurança.
O desfoque facial é uma das práticas mais conhecidas para anonimizar imagens e vídeos. Geralmente envolve primeiro detectar o rosto em uma imagem/vídeo e, em seguida, aplicar uma bolha de pixels ou outros efeitos de distorção nele. Essa carga horária pode ser considerada uma tarefa de CV. Primeiro analisamos os pixels da imagem/vídeo até que um rosto seja reconhecido, depois extraímos a área onde o rosto está em cada quadro e por fim aplicamos uma máscara nos pixels encontrados anteriormente. A primeira parte disso pode ser alcançada com ferramentas de ML e Deep Learning, como Reconhecimento da Amazônia, enquanto a segunda parte é a manipulação de pixels padrão.
Nesta postagem, demonstramos como o AWS Step Functions pode ser usado para orquestrar AWS Lambda funções que chamam Vídeo do Amazon Rekognition para detectar rostos em vídeos e usar uma biblioteca de software de CV e ML de código aberto chamada OpenCV para desfocá-los.
Visão geral da solução
Em nossa solução, Funções de etapa da AWS, um serviço de fluxo de trabalho visual de baixo código usado para orquestrar serviços da AWS, automatizar processos de negócios e criar aplicativos sem servidor, é usado para orquestrar as chamadas e gerenciar o fluxo de dados entre AWS Lambda funções. Quando um objeto é criado em um Serviço de armazenamento simples da Amazon (S3), por exemplo, por upload de um arquivo de vídeo, um ObjectCreated
O evento é detectado e uma primeira função Lambda é acionada. Esta função Lambda faz uma chamada assíncrona para o Reconhecimento da Amazônia API de detecção facial de vídeo e inicia a execução do fluxo de trabalho do AWS Step Functions.
Dentro do fluxo de trabalho, usamos uma função Lambda e um estado de espera até que a análise assíncrona do Amazon Rekognition Video iniciada anteriormente termine a execução. Posteriormente, outra função Lambda recupera o resultado do processo concluído do Amazon Rekognition e o passa para outra função Lambda que usa OpenCV para desfocar os rostos detectados. Para usar facilmente o OpenCV com nossa função Lambda, construímos uma imagem Docker hospedada em Amazon Elastic Container Registry (ECR)e, em seguida, implantado no AWS Lambda graças a Suporte para imagem de contêiner.
A arquitetura é totalmente sem servidor, portanto não precisamos provisionar, dimensionar ou manter nossa infraestrutura. Também usamos o Amazon Rekognition, um serviço de IA da AWS altamente escalonável e gerenciado que não requer experiência em aprendizado profundo.
Além disso, construímos nosso aplicativo com o Kit de desenvolvimento da Nuvem AWS (AWS CDK), uma estrutura de desenvolvimento de software de código aberto. Isso nos permite escrever infraestrutura como código (IaC) usando Python, tornando o aplicativo fácil de implantar, modificar e manter.
Vejamos mais de perto a arquitetura sugerida:
- O fluxo de eventos começa no momento da ingestão de vídeo no Amazon S3. O Amazon Rekognition Video oferece suporte aos formatos de arquivo MPEG-4 e MOV, codificados usando o codec H.264.
- Depois que o arquivo de vídeo for armazenado no Amazon S3, ele inicia automaticamente um evento que aciona uma função Lambda.
- A função Lambda usa os atributos do vídeo (nome e localização no Amazon S3) para iniciar o trabalho de detecção facial no Amazon Rekognition por meio de uma chamada de API.
- A mesma função do Lambda inicia a máquina de estado do Step Functions, encaminhando os atributos do vídeo e o ID do trabalho do Amazon Rekognition.
- O fluxo de trabalho do Step Functions começa com uma função Lambda aguardando a conclusão do trabalho do Amazon Rekognition. Feito isso, outra função Lambda obtém os resultados do Amazon Rekognition.
- Finalmente, uma função Lambda com Suporte para imagem de contêiner busca sua imagem Docker, que oferece suporte a OpenCV do Amazon ECR, desfoca os rostos detectados pelo Amazon Rekognition e armazena temporariamente o vídeo de saída localmente.
- Em seguida, o vídeo desfocado é colocado no bucket S3 de saída e removido dos arquivos locais.
Fornecer acesso de função sem servidor ao OpenCV é mais fácil do que nunca com Suporte para imagem de contêiner. Em vez de fazer upload de um pacote de código para o AWS Lambda, o código da função reside em uma imagem Docker hospedada em Registro do Amazon Elastic Container.
Se você quiser criar seu próprio aplicativo usando a detecção facial do Amazon Rekognition para vídeos e o OpenCV para processar vídeos com Python, considere o seguinte:
- As respostas da API do Amazon Rekognition para vídeos contêm carimbos de data/hora detectados por rostos em milissegundos
- OpenCV funciona em quadros e usa a taxa de quadros do vídeo para combinar quadros em um vídeo
Portanto, você deve converter as informações do Amazon Rekognition para torná-las utilizáveis com o OpenCV. Você pode encontrar nossa implementação no apply_faces_to_video
função, em /rekopoc-apply-faces-to-video-docker/video_processor.py
.
Implantar o aplicativo
Se você quiser implantar o aplicativo de amostra em sua própria conta, acesse este repositório do GitHub. Clone-o em seu ambiente local (você também pode usar ferramentas como Nuvem AWS9) e implante-o via cdk deploy. Encontre mais detalhes na seção posterior “Implantar o aplicativo AWS CDK”. Primeiro, vamos dar uma olhada na estrutura do projeto do repositório.
Estrutura do projeto
Este projeto contém código-fonte e arquivos de suporte para um aplicativo sem servidor que você pode implantar com o AWS CDK. Inclui os seguintes arquivos e pastas.
- rekognition_video_face_blurring_cdk/ – Código CDK Python para implantação do aplicativo.
- rekopoc-apply-faces-to-video-docker/ – Código para função Lambda: usa OpenCV para desfocar rostos por quadro no vídeo, carrega o resultado final para o bucket S3 de saída.
- rekopoc-check-status/ – Código para função Lambda: obtém resultados de detecção facial para análise do Amazon Rekognition Video.
- rekopoc-get-timestamps-faces/ – Código para função Lambda: obtém caixas delimitadoras de rostos detectados e carimbos de data/hora associados.
- rekopoc-start-face-detect/ – Código para função Lambda: é acionado por um evento S3 quando um novo arquivo de vídeo .mp4 ou .mov é carregado, inicia a detecção assíncrona de rostos em um vídeo armazenado e inicia a execução da máquina de estado do AWS Step Functions.
- requisitos.txt – Pacotes necessários para implantar o aplicativo AWS CDK.
O aplicativo usa vários recursos da AWS, incluindo AWS Step Functions, funções Lambda e buckets S3. Esses recursos são definidos no rekognition_video_face_blurring_cdk/rekognition_video_face_blurring_cdk_stack.py deste projeto. Atualize o código Python para adicionar recursos da AWS por meio do mesmo processo de implantação que atualiza o código do seu aplicativo. Dependendo do tamanho do vídeo que você deseja tornar anônimo, pode ser necessário atualizar a configuração das funções do Lambda e ajustar a memória e o tempo limite. Você pode provisionar no máximo 10,240 MB (10 GB) de memória e configurar suas funções do AWS Lambda para serem executadas por até 15 minutos por execução.
Implante o aplicativo AWS CDK
O AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software de código aberto para definir os recursos de aplicativos em nuvem usando linguagens de programação familiares. Este projeto usa o AWS CDK em Python.
Para construir e implantar seu aplicativo pela primeira vez, você deve:
Etapa 1: certifique-se de ter o Docker em execução.
Você precisará do Docker em execução para criar a imagem antes de enviá-la ao Amazon ECR.
Etapa 2: configure suas credenciais da AWS.
A maneira mais fácil de satisfazer esse requisito é emitir o seguinte comando em seu shell:
Para obter orientações adicionais sobre como configurar a instalação da AWS CLI, siga o Configuração rápida com aws configure no guia do usuário da AWS CLI.
Etapa 3: Instale o AWS CDK e os requisitos.
Basta executar o seguinte em seu shell:
- O primeiro comando instalará o AWS CDK Toolkit globalmente usando o Node Package Manager.
- O segundo comando instalará todos os pacotes Python necessários ao AWS CDK usando o gerenciador de pacotes pip. Este comando deve ser emitido a partir da pasta raiz do repositório GitHub clonado.
Etapa 4: inicialize seu ambiente AWS para o CDK e implante o aplicativo.
- O primeiro comando provisionará os recursos iniciais que o AWS CDK precisa para realizar a implantação. Esses recursos incluem um bucket do Amazon S3 para armazenar arquivos e funções do IAM que concedem as permissões necessárias para realizar implantações.
- Finalmente,
cdk deploy
irá implantar a pilha.
Etapa 5: teste o aplicativo.
Faça upload de um vídeo para o bucket S3 de entrada por meio do AWS Management Console, da AWS CLI ou do SDK e encontre o resultado no bucket de saída.
Limpar
Para excluir o aplicativo de exemplo que você criou, use o AWS CDK:
Conclusão
Nesta postagem, mostramos como implantar uma solução para desfocar vídeos automaticamente sem provisionar nenhum recurso para sua conta AWS. Usamos o recurso de detecção facial do Amazon Rekognition Video, Container Image Support para funções AWS Lambda para trabalhar facilmente com OpenCV e orquestramos todo o fluxo de trabalho com AWS Step Functions. Por fim, tornamos nossa solução abrangente e reutilizável com o AWS CDK para facilitar a implantação e a adaptação.
Próximos Passos
Se você tiver comentários sobre esta postagem, envie-os na seção de comentários abaixo. Para mais informações, visite os links a seguir sobre as ferramentas e serviços que utilizamos e siga o código em GitHub. Aguardamos seus comentários e contribuições!
Sobre os autores
Anastasia Pachni Tsitiridou é arquiteto de soluções na AWS. Ela está baseada em Amsterdã e apoia ISVs em todo o Benelux em sua jornada para a nuvem. Ela estudou Engenharia Elétrica e de Computação antes de ser apresentada à Visão Computacional. O que ela mais gosta hoje em dia é trabalhar na intersecção entre CV e ML.
Oliver Sutter é arquiteto de soluções na França. Ele está baseado em Paris e sempre coloca os melhores interesses de seus clientes como sua principal prioridade. Com uma sólida formação acadêmica em matemática aplicada, ele começou a desenvolver sua paixão por IA/ML na universidade e agora prospera aplicando esse conhecimento em casos de uso do mundo real com seus clientes.
Davide Gallitelli é arquiteto de soluções especializado em IA/ML na região EMEA. Ele está baseado em Bruxelas e trabalha em estreita colaboração com clientes em todo o Benelux. Ele é desenvolvedor desde muito jovem, começando a programar aos 7 anos. Ele começou a aprender IA/ML desde os últimos anos da universidade e se apaixonou por isso desde então.
Fonte: https://aws.amazon.com/blogs/machine-learning/blur-faces-in-videos-automatically-with-amazon-rekognition-video/- '
- 100
- 7
- Acesso
- Conta
- Adicional
- AI
- Todos os Produtos
- Amazon
- Reconhecimento da Amazônia
- amsterdam
- análise
- api
- app
- Aplicação
- aplicações
- arquitetura
- ÁREA
- inteligência artificial
- Inteligência artificial (AI)
- AWS
- AWS Lambda
- MELHOR
- construir
- negócio
- processos de negócios
- chamada
- mais próximo
- Na nuvem
- código
- comentários
- Visão de Computador
- Configuração
- cônsul
- Recipiente
- Credenciais
- Clientes
- dados,
- deep learning
- Detecção
- Developer
- Desenvolvimento
- Estivador
- Engenharia
- Meio Ambiente
- Evento
- execução
- Rosto
- rostos
- Característica
- Finalmente
- Primeiro nome
- primeira vez
- fluxo
- seguir
- para a frente
- Quadro
- França
- função
- Geral
- gif
- GitHub
- Globalmente
- conceder
- guia
- Como funciona o dobrador de carta de canal
- Como Negociar
- HTTPS
- IAC
- IAM
- imagem
- Incluindo
- INFORMAÇÕES
- Infraestrutura
- Inteligência
- IT
- Trabalho
- de emergência
- Conhecimento
- Idiomas
- mais recente
- aprendizagem
- Biblioteca
- local
- localmente
- localização
- gosta,
- aprendizado de máquina
- Fazendo
- de grupos
- Manipulação
- Marketing
- máscara
- matemática
- ML
- aberto
- open source
- OpenCV
- Outros
- Paris
- pixels
- política de privacidade
- Programação
- linguagens de programação
- projeto
- público
- Python
- Requisitos
- Recursos
- Resultados
- Execute
- corrida
- seguro
- Escala
- Sdk
- busca
- Serverless
- Serviços
- conjunto
- concha
- simples
- Tamanho
- So
- Software
- desenvolvimento de software
- Soluções
- começo
- começado
- Estado
- armazenamento
- lojas
- ajuda
- suportes
- teste
- tempo
- ferramentas
- topo
- universidade
- Atualizar
- Atualizações
- us
- casos de uso
- valor
- Vídeo
- VÍDEOS
- visão
- esperar
- Atividades:
- de gestão de documentos
- trabalho
- mundo
- anos