<\/HEAD>
Motivação<\/STRONG><\/SPAN><\/P>A Amazon lançou recentemente uma câmera habilitada para deep learning chamada DeepLens (https:\/\/aws.amazon.com\/deeplens\/<\/A>). O DeepLens permite que desenvolvedores construam, treinem e implantem modelos de deep learning para realizar tarefas personalizadas de visão computacional. O Laboratório de Protótipos de Aplicações obteve um DeepLens e começou a explorar suas capacidades e limitações.<\/P><\/P>
Uma das tarefas mais comuns em visão computacional é a detecção de objetos. Essa tarefa é um pouco mais complexa do que a classificação de imagens, pois requer a localização do objeto no espaço da imagem. Neste verão, exploramos a detecção de objetos e como poderíamos expandi-la para atender às nossas necessidades. Por exemplo, um caso de uso poderia ser detectar e reconhecer diferentes espécies animais em uma reserva natural. Fazendo isso, podemos coletar informações relevantes baseadas na localização e usar essas informações para realizar ações específicas.<\/P>
<\/P>
A detecção de espécies animais foi testada usando a API de Detecção de Objetos do Tensorflow, que permitiu construir um modelo que poderia ser facilmente implantado no DeepLens. No entanto, precisávamos reduzir nossa demonstração de detecção para facilitar os testes no campus da ESRI. Para isso, focamos na detecção facial.<\/P>
<\/P>
O DeepLens vem com projetos de exemplo, incluindo aqueles que realizam detecção de objetos e faces. Para fins experimentais, decidimos ver se poderíamos expandir o exemplo de detecção facial para reconhecer e distinguir entre diferentes pessoas.<\/P>
<\/P>
Serviços e Frameworks<\/STRONG><\/SPAN><\/H1>Ao longo do verão, construímos uma demonstração de reconhecimento facial usando vários serviços da Amazon e da ESRI. Esses serviços incluem:<\/P>O Console AWS DeepLens (para facilitar a implantação dos projetos no DeepLens)<\/LI>Amazon Lambda (para desenvolver as funções Lambda em Python que executam os modelos de inferência)<\/LI>Amazon S3 (para armazenar o banco de dados treinado, bem como os modelos necessários para inferência)<\/LI>O Console AWS IoT (para facilitar a comunicação para e do DeepLens)<\/LI>Um serviço de feição e mapa web hospedados no ArcGIS (para armazenar os dados das detecções do DeepLens)<\/LI>Operations Dashboard (um para cada DeepLens, para exibir as informações relevantes)<\/LI><\/UL><\/P>Para realizar a inferência neste experimento, usamos os seguintes frameworks/ferramentas de machine learning:<\/P>MxNet (o modelo padrão MxNet treinado para detecção facial e otimizado para o DeepLens)<\/LI>Dlib (uma ferramenta com funcionalidade de detecção de marcos faciais que ajuda no reconhecimento facial)<\/LI><\/UL><\/P>Fluxo de Trabalho<\/STRONG><\/SPAN><\/H1>Os modelos MxNet e Dlib são implantados no DeepLens junto com uma função lambda de inferência. O DeepLens carrega os modelos e começa a capturar quadros da sua entrada de vídeo. Esses quadros são processados pelos modelos de detecção e reconhecimento facial para encontrar uma correspondência dentro do banco de dados armazenado em um bucket Amazon S3. Se o rosto for reconhecido, o serviço de feição é atualizado com informações relevantes, como nome, hora da detecção, ID do DeepLens e localização do DeepLens, e o processo de reconhecimento continua.<\/P><\/P>Se não houver correspondência no banco de dados ou se o modelo de reconhecimento estiver inseguro, ainda assim é retornada uma correspondência com "Não Identificado" como nome. Quando isso acontece, acionamos o DeepLens para treinamento. Para isso, temos um aplicativo local rodando no mesmo dispositivo que o dashboard. Ao encontrar um objeto não identificado, o aplicativo solicita à pessoa que inicie o treinamento. Se o treinamento for acionado, o DeepLens reproduz instruções em áudio e captura as informações relevantes dos marcos faciais para se treinar. O banco de dados no bucket S3 é finalmente atualizado com esses dados, e o processo de reconhecimento é retomado.<\/P>
<\/P>Resultados<\/STRONG><\/SPAN><\/P>O modelo de reconhecimento facial retorna um resultado se sua inferência tiver uma precisão mínima de 60%. O modelo tem conseguido retornar o resultado correto, seja identificado ou não identificado, em cerca de 80% dos testes. Houve alguns casos de falsos positivos e negativos, mas isso foi reduzido significativamente ao ajustar os valores limiares e retornar apenas detecções consistentes (em múltiplos quadros). A precisão das detecções do DeepLens pode ser aumentada com ajustes adicionais nos parâmetros do modelo e valores limiares.<\/P><\/P>O modelo foi inicialmente treinado e testado em um banco contendo dados dos marcos faciais para quatro pessoas. Desde então, o banco aumentou para conter dados de dez pessoas. Isso levou a uma redução na ocorrência de falsos positivos.O modelo tem maior probabilidade de ser preciso se houver mais pessoas treinadas e armazenadas no banco.<\/SPAN><\/P><\/P>A detecção de objetos ou espécies animais pode ser implementada no DeepLens se tivermos um modelo treinado com dados suficientes (relacionados ao(s) objeto(s) que pretendemos detectar). Esses dados devem consistir em positivos (imagens contendo o objeto a ser detectado) bem como negativos (imagens que não contêm o objeto) para melhor precisão.<\/SPAN> Uma vez que tenhamos os modelos prontos, o processo para executá-los no DeepLens é muito semelhante ao usado na demonstração da detecção facial.<\/P><\/P>Limitações<\/STRONG><\/SPAN><\/H1>Atualmente, o DeepLens suporta apenas funções Lambda escritas em Python 2.7, mas a Amazon parece estar trabalhando para oferecer suporte ao Python 3.x.<\/P><\/P>O otimizador de modelos para o DeepLens suporta apenas otimizar certos modelos MxNet, Tensorflow e Caffe para a GPU embutida. Outros frameworks e modelos ainda podem ser usados no DeepLens, mas a velocidade da inferência será drasticamente reduzida.<\/P><\/P>Trabalho Futuro<\/STRONG><\/SPAN><\/H1>Descobrimos que o DeepLens possui um microfone simples. Embora o DeepLens seja projetado principalmente para tarefas de visão computacional, seria interessante realizar testes de análise de áudio e executá-los junto com outras tarefas de visão computacional, por exemplo, para saber quando uma porta foi aberta ou fechada.<\/P><\/BODY><\/HTML>