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
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.
Bem, isso foi muito fácil. Vamos complicar a tarefa, adicionar uma barba e alguns anos.
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.
Vamos colocar um cocar nele:
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.
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:
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.
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:
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.
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.
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:
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.
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.
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.
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
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:
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.
Fonte: habr.com