Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

Tecnologias e modelos para o nosso futuro sistema de visão computacional foram criados e aprimorados gradativamente e em diferentes projetos da nossa empresa - em Mail, Cloud, Search. Amadureciam como um bom queijo ou conhaque. Um dia percebemos que nossas redes neurais apresentam excelentes resultados de reconhecimento e decidimos combiná-las em um único produto b2b - Vision - que agora usamos e oferecemos para você usar.

Hoje, nossa tecnologia de visão computacional na plataforma Mail.Ru Cloud Solutions está funcionando com sucesso e resolvendo problemas práticos muito complexos. É baseado em uma série de redes neurais treinadas em nossos conjuntos de dados e especializadas na resolução de problemas aplicados. Todos os serviços são executados em nossos servidores. Você pode integrar a API pública Vision em seus aplicativos, por meio da qual todos os recursos do serviço estão disponíveis. A API é rápida – graças às GPUs do servidor, o tempo médio de resposta em nossa rede é de 100 ms.

Vá até o gato, há uma história detalhada e muitos exemplos do trabalho da Vision.

Como exemplo de serviço em que nós próprios utilizamos as referidas tecnologias de reconhecimento facial, podemos citar Eventos. Um de seus componentes são os estandes fotográficos Vision, que instalamos em diversas conferências. Se você se aproximar de tal estande fotográfico, tirar uma foto com a câmera embutida e inserir seu e-mail, o sistema encontrará imediatamente entre o conjunto de fotos aquelas em que você foi capturado pelos fotógrafos da equipe da conferência e, se desejar, enviaremos as fotografias encontradas para você por e-mail. E não estamos falando de retratos encenados – o Vision reconhece você mesmo no fundo de uma multidão de visitantes. Claro que não são os estandes de fotos que são reconhecidos, são apenas tablets em lindos estandes que simplesmente tiram fotos dos convidados com suas câmeras embutidas e transmitem informações aos servidores, onde toda a mágica do reconhecimento acontece. E vimos mais de uma vez como a eficácia da tecnologia é surpreendente, mesmo entre os especialistas em reconhecimento de imagem. Abaixo falaremos sobre alguns exemplos.

1. Nosso modelo de reconhecimento facial

1.1. Rede neural e velocidade de processamento

Para reconhecimento, usamos uma modificação do modelo de rede neural ResNet 101. O pool médio no final é substituído por uma camada totalmente conectada, semelhante a como é feito no ArcFace. No entanto, o tamanho das representações vetoriais é 128, e não 512. Nosso conjunto de treinamento contém cerca de 10 milhões de fotos de 273 pessoas.

O modelo funciona muito rapidamente graças a uma arquitetura de configuração de servidor cuidadosamente selecionada e à computação GPU. Demora cerca de 100 ms para receber uma resposta da API em nossas redes internas - isso inclui detecção de rosto (detectar um rosto em uma foto), reconhecer e retornar PersonID na resposta da API. Com grandes volumes de dados recebidos – fotos e vídeos – levará muito mais tempo para transferir os dados para o serviço e receber uma resposta.

1.2. Avaliando a eficácia do modelo

Mas determinar a eficiência das redes neurais é uma tarefa muito ambígua. A qualidade do seu trabalho depende de quais conjuntos de dados os modelos foram treinados e se eles foram otimizados para trabalhar com dados específicos.

Começamos a avaliar a precisão do nosso modelo com o popular teste de verificação LFW, mas ele é muito pequeno e simples. Depois de atingir 99,8% de precisão, não é mais útil. Existe uma boa competição para avaliação de modelos de reconhecimento - Megaface, na qual atingimos gradativamente 82% do ranking 1. O teste Megaface consiste em um milhão de fotografias - distratores - e o modelo deve ser capaz de distinguir bem vários milhares de fotografias de celebridades do Facescrub conjunto de dados de distratores. No entanto, depois de limpar o teste de erros do Megaface, descobrimos que com a versão limpa atingimos uma precisão de 98% na classificação 1 (fotos de celebridades geralmente são bastante específicas). Por isso, criaram um teste de identificação separado, semelhante ao Megaface, mas com fotografias de pessoas “comuns”. Em seguida, melhoramos a precisão do reconhecimento em nossos conjuntos de dados e avançamos muito. Além disso, usamos um teste de qualidade de agrupamento que consiste em vários milhares de fotos; simula marcação facial na nuvem do usuário. Neste caso, os clusters são grupos de indivíduos semelhantes, um grupo para cada pessoa reconhecível. Verificamos a qualidade do trabalho em grupos reais (verdadeiro).

É claro que erros de reconhecimento ocorrem com qualquer modelo. Mas tais situações são muitas vezes resolvidas ajustando os limites para condições específicas (para todas as conferências utilizamos os mesmos limites, mas, por exemplo, para sistemas de controlo de acesso temos de aumentar significativamente os limites para que haja menos falsos positivos). A grande maioria dos visitantes da conferência foi reconhecida corretamente pelas nossas cabines fotográficas Vision. Às vezes, alguém olhava para a visualização recortada e dizia: “Seu sistema cometeu um erro, não fui eu”. Aí abrimos a foto inteira, e descobrimos que realmente havia esse visitante na foto, só que não estávamos fotografando ele, mas sim outra pessoa, a pessoa simplesmente estava no fundo na zona de desfoque. Além disso, a rede neural muitas vezes reconhece corretamente mesmo quando parte do rosto não está visível, ou a pessoa está de perfil, ou mesmo meio virada. O sistema pode reconhecer uma pessoa mesmo que o rosto esteja na área de distorção óptica, por exemplo, ao fotografar com uma lente grande angular.

1.3. Exemplos de testes em situações difíceis

Abaixo estão exemplos de como nossa rede neural funciona. As fotos são enviadas para a entrada, que ela deve rotular usando PersonID - um identificador exclusivo de uma pessoa. Se duas ou mais imagens tiverem o mesmo ID, então, de acordo com os modelos, essas fotos retratam a mesma pessoa.

Notemos imediatamente que durante o teste, temos acesso a vários parâmetros e limites de modelo que podemos configurar para alcançar um determinado resultado. A API pública é otimizada para máxima precisão em casos comuns.

Vamos começar com o mais simples, com o reconhecimento facial frontal.

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

Bem, isso foi muito fácil. Vamos complicar a tarefa, adicionar uma barba e alguns anos.

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

Alguns dirão que isso também não foi muito difícil, porque em ambos os casos todo o rosto fica visível e muitas informações sobre o rosto ficam à disposição do algoritmo. Ok, vamos transformar Tom Hardy em perfil. Este problema é muito mais complexo e despendemos muito esforço para resolvê-lo com sucesso, mantendo uma baixa taxa de erro: selecionamos um conjunto de treinamento, pensamos na arquitetura da rede neural, aprimoramos as funções de perda e melhoramos o pré-processamento de fotografias.

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

Vamos colocar um cocar nele:

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

Aliás, esse é um exemplo de situação particularmente difícil, já que o rosto está muito obscurecido e na foto de baixo também há uma sombra profunda escondendo os olhos. Na vida real, muitas vezes as pessoas mudam de aparência com a ajuda de óculos escuros. Vamos fazer o mesmo com Tom.

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

Ok, vamos tentar incluir fotos de idades diferentes e, desta vez, experimentaremos com um ator diferente. Vejamos um exemplo muito mais complexo, onde as mudanças relacionadas à idade são especialmente pronunciadas. A situação não é rebuscada, ocorre com bastante frequência quando é preciso comparar a foto do passaporte com o rosto do portador. Afinal, a primeira fotografia é adicionada ao passaporte quando o proprietário tem 20 anos, e aos 45 a pessoa pode mudar muito:

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

Você acha que o principal especialista em missões impossíveis não mudou muito com a idade? Acho que até algumas pessoas combinariam as fotos de cima e de baixo, o menino mudou muito ao longo dos anos.

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

As redes neurais encontram mudanças na aparência com muito mais frequência. Por exemplo, às vezes as mulheres podem mudar bastante sua imagem com a ajuda de cosméticos:

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

Agora vamos complicar ainda mais a tarefa: suponha que diferentes partes do rosto estejam cobertas em diferentes fotografias. Nesses casos, o algoritmo não pode comparar amostras inteiras. No entanto, a Vision lida bem com situações como essa.

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

A propósito, pode haver muitos rostos em uma fotografia, por exemplo, mais de 100 pessoas podem caber em uma fotografia geral de um salão. Esta é uma situação difícil para redes neurais, uma vez que muitos rostos podem ser iluminados de forma diferente, alguns fora de foco. Porém, se a foto for tirada com resolução e qualidade suficientes (pelo menos 75 pixels por quadrado que cobre o rosto), o Vision será capaz de detectá-la e reconhecê-la.

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

A peculiaridade das fotografias de reportagem e das imagens das câmeras de vigilância é que as pessoas muitas vezes ficam desfocadas porque estavam fora de foco ou em movimento naquele momento:

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

Além disso, a intensidade da iluminação pode variar muito de imagem para imagem. Isso também muitas vezes se torna um obstáculo; muitos algoritmos têm grande dificuldade em processar corretamente imagens que são muito escuras e muito claras, sem falar em combiná-las com precisão. Deixe-me lembrá-lo que para alcançar este resultado você precisa configurar os limites de uma certa maneira; este recurso ainda não está disponível publicamente. Usamos a mesma rede neural para todos os clientes; ela possui limites adequados para a maioria das tarefas práticas.

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

Recentemente, lançamos uma nova versão do modelo que reconhece rostos asiáticos com alta precisão. Isso costumava ser um grande problema, que até era chamado de racismo de “aprendizado de máquina” (ou “rede neural”). As redes neurais europeias e americanas reconheceram bem os rostos caucasianos, mas com os rostos mongolóides e negróides a situação era muito pior. Provavelmente, na China a situação era exatamente oposta. Trata-se de treinar conjuntos de dados que reflitam os tipos dominantes de pessoas em um determinado país. Porém, a situação está mudando, hoje esse problema não é tão agudo. A visão não tem problemas com pessoas de raças diferentes.

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

O reconhecimento facial é apenas uma das muitas aplicações da nossa tecnologia; a visão pode ser treinada para reconhecer qualquer coisa. Por exemplo, placas de veículos, inclusive em condições difíceis para algoritmos: em ângulos agudos, placas sujas e de difícil leitura.

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

2. Casos de uso prático

2.1. Controle de acesso físico: quando duas pessoas utilizam o mesmo passe

Com a ajuda do Vision, você pode implementar sistemas de registro de chegada e saída de funcionários. O sistema tradicional baseado em passes eletrônicos tem desvantagens óbvias, por exemplo, você pode passar duas pessoas usando um crachá. Se o sistema de controle de acesso (ACS) for complementado com Vision, ele registrará honestamente quem entrou/saiu e quando.

2.2. Controle de tempo

Este caso de uso do Vision está intimamente relacionado ao anterior. Se complementar o sistema de acesso com o nosso serviço de reconhecimento facial, este poderá não só detectar violações de controlo de acesso, mas também registar a presença real de funcionários no edifício ou instalação. Em outras palavras, o Vision o ajudará a levar em consideração honestamente quem veio trabalhar e saiu em que horário, e quem faltou ao trabalho, mesmo que seus colegas o protegessem na frente de seus superiores.

2.3. Análise de vídeo: rastreamento de pessoas e segurança

Ao rastrear pessoas usando o Vision, você pode avaliar com precisão o tráfego real de áreas comerciais, estações de trem, passagens, ruas e muitos outros locais públicos. Nosso rastreamento também pode ser de grande ajuda no controle de acesso, por exemplo, a um armazém ou outras instalações importantes de escritório. E, claro, rastrear pessoas e rostos ajuda a resolver problemas de segurança. Pegou alguém roubando na sua loja? Adicione seu PersonID, que foi retornado pela Vision, à lista negra do seu software de análise de vídeo e, da próxima vez, o sistema alertará imediatamente a segurança se esse tipo aparecer novamente.

2.4. No comércio

O varejo e diversas empresas de serviços estão interessadas no reconhecimento de filas. Com a ajuda do Vision, você pode reconhecer que não se trata de uma multidão aleatória de pessoas, mas de uma fila, e determinar sua duração. E então o sistema informa os responsáveis ​​sobre uma fila para que eles possam entender a situação: ou há um fluxo de visitantes e é necessário chamar mais trabalhadores, ou alguém está relaxando em suas tarefas.

Outra tarefa interessante é separar os funcionários da empresa dos visitantes no salão. Normalmente, o sistema é treinado para separar objetos usando determinadas roupas (dress code) ou com alguma característica distintiva (lenço de marca, crachá no peito e assim por diante). Isso ajuda a avaliar com mais precisão o comparecimento (para que os funcionários não “inflacionem” as estatísticas de pessoas no salão pela sua mera presença).

Utilizando o reconhecimento facial, você também pode avaliar o seu público: qual a fidelização dos visitantes, ou seja, quantas pessoas retornam ao seu estabelecimento e com que frequência. Calcule quantos visitantes únicos chegam até você por mês. Para otimizar os custos de atração e retenção, você também pode saber a variação do trânsito dependendo do dia da semana e até da hora do dia.

Franqueadores e redes de empresas podem solicitar uma avaliação fotográfica da qualidade da marca de diversos pontos de venda: presença de logotipos, letreiros, cartazes, banners e assim por diante.

2.5. Por transporte

Outro exemplo de garantia de segurança por meio de análise de vídeo é a identificação de itens abandonados nos corredores de aeroportos ou estações de trem. A visão pode ser treinada para reconhecer objetos de centenas de classes: móveis, bolsas, malas, guarda-chuvas, vários tipos de roupas, garrafas e assim por diante. Se o seu sistema de análise de vídeo detectar um objeto sem proprietário e o reconhecer usando o Vision, ele enviará um sinal ao serviço de segurança. Uma tarefa semelhante está associada à detecção automática de situações incomuns em locais públicos: alguém se sente mal, ou alguém fuma no lugar errado, ou uma pessoa cai nos trilhos, e assim por diante - todos esses padrões podem ser reconhecidos por sistemas de análise de vídeo por meio da API Vision.

2.6. Fluxo de documentos

Outra aplicação futura interessante do Vision que estamos desenvolvendo atualmente é o reconhecimento de documentos e sua análise automática em bancos de dados. Em vez de inserir manualmente (ou pior, inserir) séries intermináveis, números, datas de emissão, números de contas, dados bancários, datas e locais de nascimento e muitos outros dados formalizados, você pode digitalizar documentos e enviá-los automaticamente por um canal seguro através do API para a nuvem, onde o sistema reconhecerá esses documentos em tempo real, os analisará e retornará uma resposta com dados no formato necessário para entrada automática no banco de dados. Hoje a Vision já sabe classificar documentos (inclusive PDF) - distingue entre passaportes, SNILS, TIN, certidões de nascimento, certidões de casamento e outros.

É claro que a rede neural não é capaz de lidar imediatamente com todas essas situações. Em cada caso, um novo modelo é construído para um cliente específico, muitos fatores, nuances e requisitos são levados em consideração, conjuntos de dados são selecionados e são realizadas iterações de treinamento, testes e configuração.

3. Esquema de operação da API

A “porta de entrada” da Vision para os usuários é a API REST. Ele pode receber fotos, arquivos de vídeo e transmissões de câmeras de rede (streams RTSP) como entrada.

Para usar o Vision, você precisa registrar no serviço Mail.ru Cloud Solutions e receba tokens de acesso (client_id + client_secret). A autenticação do usuário é realizada usando o protocolo OAuth. Os dados de origem nos corpos das solicitações POST são enviados para a API. E em resposta, o cliente recebe da API um resultado de reconhecimento no formato JSON, e a resposta é estruturada: contém informações sobre os objetos encontrados e suas coordenadas.

Com barba, óculos escuros e de perfil: situações difíceis para a visão computacional

Exemplo de resposta

{
   "status":200,
   "body":{
      "objects":[
         {
            "status":0,
            "name":"file_0"
         },
         {
            "status":0,
            "name":"file_2",
            "persons":[
               {
                  "tag":"person9"
                  "coord":[149,60,234,181],
                  "confidence":0.9999,
                  "awesomeness":0.45
               },
               {
                  "tag":"person10"
                  "coord":[159,70,224,171],
                  "confidence":0.9998,
                  "awesomeness":0.32
               }
            ]
         }

         {
            "status":0,
            "name":"file_3",
            "persons":[
               {
               "tag":"person11",
               "coord":[157,60,232,111],
               "aliases":["person12", "person13"]
               "confidence":0.9998,
               "awesomeness":0.32
               }
            ]
         },
         {
            "status":0,
            "name":"file_4",
            "persons":[
               {
               "tag":"undefined"
               "coord":[147,50,222,121],
               "confidence":0.9997,
               "awesomeness":0.26
               }
            ]
         }
      ],
      "aliases_changed":false
   },
   "htmlencoded":false,
   "last_modified":0
}

A resposta contém um parâmetro interessante de grandiosidade - esta é a “frieza” condicional de um rosto em uma foto, com sua ajuda selecionamos a melhor foto de um rosto da sequência. Treinamos uma rede neural para prever a probabilidade de uma foto ser curtida nas redes sociais. Quanto melhor a qualidade da foto e mais sorridente o rosto, maior será a grandiosidade.

API Vision usa um conceito chamado espaço. Esta é uma ferramenta para criar diferentes conjuntos de faces. Exemplos de espaços são listas negras e brancas, listas de visitantes, funcionários, clientes, etc. Para cada token no Vision você pode criar até 10 espaços, cada espaço pode ter até 50 mil PersonIDs, ou seja, até 500 mil por ficha. Além disso, o número de tokens por conta não é limitado.

Hoje a API oferece suporte aos seguintes métodos de detecção e reconhecimento:

  • Reconhecer/Definir - detecção e reconhecimento de rostos. Atribui automaticamente um PersonID a cada pessoa única, retorna o PersonID e as coordenadas das pessoas encontradas.
  • Excluir - exclui um PersonID específico do banco de dados de pessoas.
  • Truncar - limpa todo o espaço do PersonID, útil se ele foi usado como espaço de teste e você precisa redefinir o banco de dados para produção.
  • Detectar - detecção de objetos, cenas, placas, pontos de referência, filas, etc. Retorna a classe dos objetos encontrados e suas coordenadas
  • Detectar documentos - detecta tipos específicos de documentos da Federação Russa (distingue passaporte, SNILS, número de identificação fiscal, etc.).

Em breve também terminaremos os trabalhos de métodos de OCR, determinação de género, idade e emoções, bem como resolução de problemas de merchandising, ou seja, de controlo automático da exposição de mercadorias nas lojas. Você pode encontrar a documentação completa da API aqui: https://mcs.mail.ru/help/vision-api

4. Conclusão

Agora, por meio da API pública, você pode acessar o reconhecimento facial em fotos e vídeos; é suportada a identificação de diversos objetos, placas, pontos de referência, documentos e cenas inteiras. Cenários de aplicação – o mar. Venha, teste nosso serviço, defina as tarefas mais complicadas. As primeiras 5000 transações são gratuitas. Talvez seja o “ingrediente que falta” para os seus projetos.

Você pode acessar instantaneamente a API após registro e conexão. Visão. Todos os usuários do Habra recebem um código promocional para transações adicionais. Por favor, escreva para mim o endereço de e-mail que você usou para registrar sua conta!

Fonte: habr.com

Adicionar um comentário