Um breve guia para o reconhecimento de vídeos da BBC em pesquisa e desenvolvimento

Muitas vezes, são as tarefas que os humanos realizam sem pensar que exigem alguns dos mais complexos processos de bastidores. Provando comida, conversando com amigos, ouvindo música e, de fato, reconhecendo pessoas. Quando você assiste a um episódio de Eastenders, vê os diferentes atores em diferentes cenários, de diferentes ângulos e sob diferentes luzes, mas instantaneamente seu cérebro lida com essas variações para saber que são Dot Cotton e Phil Mitchell em cena. Como não pensamos no processamento envolvido, ficamos surpresos ao descobrir que essas tarefas são muito mais complexas do que pensávamos quando tentamos aplicá-las ao aprendizado de máquina.

Tire as seguintes imagens do príncipe Harry e Megan Markle na rua. Podemos ver Harry e Megan de diferentes ângulos aqui - frontal, lateral e traseira -, mas os reconhecemos facilmente por suas características: cor da pele, cor do cabelo e assim por diante. Também estamos levando em consideração certas dicas sociais. A multidão está olhando para eles, eles estão bem vestidos, estão no centro de cada cena e há uma continuidade óbvia de cenas da mesma cena. Existem muitas camadas de intuição humana aqui que tendemos a nem pensar, pois detectamos indicadores culturais e físicos.

Naturalmente, reconhecemos Harry e Megan, apesar dos diferentes ângulos nessas cenas

Então, como ensinamos um computador a aprender a fazer tudo isso? Embora não consigamos que um algoritmo pense como humano, podemos fazer o que o aprendizado de máquina faz melhor: detectar padrões em conjuntos de dados grandes e rotulados. Isso envolve coletar imagens, treinar o algoritmo, processar vídeos e reconhecer as pessoas nelas. A saída final é uma lista de pessoas reconhecidas em um vídeo, juntamente com a hora e o local nos quadros em que aparecem.

Já estamos trabalhando para construir essa tecnologia na BBC. Nosso sistema, chamado FaceRec, está sendo desenvolvido pela Equipe de Dados da Internet para Pesquisa e Serviços Futuros na Pesquisa e Desenvolvimento da BBC (salvaremos algumas teclas digitadas e as chamaremos de Equipe de Dados daqui em diante). Ele foi criado usando uma combinação de código interno e software de código aberto externo - particularmente o Seetaface, um mecanismo de reconhecimento facial C ++.

O FaceRec trabalha processando o vídeo através de uma série de etapas algorítmicas, cada uma resolvendo uma parte específica do problema geral. Vamos dar uma visão geral de como tudo funciona.

1. Detectar fotos

Para cada rosto a ser detectado em um vídeo, primeiro precisamos dividir o vídeo em suas fotos constituintes (uma foto é definida como uma série de quadros em execução por um período ininterrupto de tempo). Para fazer isso, o FaceRec usa a biblioteca de processamento de mídia FFmpeg, que usa uma função para retornar todos os horários de início e término de todas as fotos em um determinado vídeo.

2. Detectar rostos

O próximo passo é verificar cada quadro para ver se ele contém rostos humanos. Esse é um problema complicado - devemos tentar detectar todos os rostos de uma partida de futebol? Um rosto em uma camiseta conta? Tem fotos na frente dos jornais?

Iterando cada cena, o FaceRec tira os quadros da cena e os alimenta ao SeetaFace, que retorna as caixas delimitadoras de onde eles acham que os rostos estão. O mecanismo de detecção de rosto do SeetaFace discerne se um rosto "conta" o suficiente para incluir em sua saída. Observe que o SeetaFace não está dizendo quem pensa que são as pessoas detectadas, apenas que acredita que detectou um rosto em um determinado local dentro do quadro.

3. Crie faixas de rosto

Agora que coletamos todos os quadros que contêm rostos, a próxima tarefa é costurar esses rostos detectados para criar uma faixa de rosto. Um rastreio de face é um fluxo contínuo de caixas delimitadoras em torno de um rosto enquanto ele se move dentro do quadro da foto.

O FaceRec pega cada caixa delimitadora de face e tenta mapeá-la para a próxima caixa delimitadora lógica no quadro a seguir. Isso nem sempre é totalmente óbvio, pois os rostos podem ser temporariamente obscurecidos ou as caixas delimitadoras podem se cruzar quando uma pessoa se move atrás de outra.

Caixas delimitadoras rastreiam os rostos através de uma foto

Sob o capô, esse problema é resolvido usando o Dlib e o método Lucas-Kanade. Isso cria faixas de face definidas por pontos no tempo, uma lista de quadros e as caixas delimitadoras das faces.

4. Crie vetores de face para faixas

Os algoritmos de aprendizado de máquina geralmente funcionam convertendo o material de entrada em vetores matemáticos. Eles então aprendem quais partes desse "espaço vetorial" pertencem a categorias ou tipos de entrada específicos. Em termos de rostos, eles aprenderiam que os vetores que representam o rosto do príncipe Harry tendem a estar em uma área específica, enquanto os vetores de Megan tendem a terminar em uma seção diferente. Você também esperaria que vetores do rosto do príncipe William estivessem mais próximos neste espaço de Harry do que de Megan, já que eles estão relacionados e compartilham características semelhantes.

Para criar vetores para os rostos detectados, o FaceRec usa a biblioteca de identificação de rostos do SeetaFace. O FaceRec alimenta fotos cortadas dos rostos detectados dentro de suas caixas delimitadoras, a partir do ponto médio da faixa de rosto. Ele recebe de volta um vetor dimensional de 2024 que representa os recursos dessa face.

5. Reconheça os rostos das pessoas em vetores de rastreamento de rosto

Agora temos um vetor de rosto para cada faixa de rosto detectada. A próxima etapa é transformar esses vetores nos nomes reais das faces reconhecidas e sinalizar as faces que não reconhecemos (e, portanto, não podemos rotular).

A primeira pergunta aqui é: quem reconhecemos? Certamente não podemos construir um modelo para reconhecer todos que já viveram - e nem gostaríamos. Então, quem consideramos importantes o suficiente para esse sistema de reconhecimento facial?

Realisticamente, isso precisa ser motivado pelos jornalistas da BBC News e pelas pessoas com quem mais costumam relatar. Também precisamos estar cientes de que pessoas desconhecidas publicam as notícias todos os dias e, quando o fazem, podemos não ter nenhuma foto anterior delas. Com essas limitações em mente, a Equipe de Dados se concentrou principalmente em celebridades, líderes internacionais, políticos do Reino Unido no Parlamento e na Câmara dos Lordes ao treinar o FaceRec.

Para reconhecer essas pessoas, eles precisavam coletar dados de treinamento de cada pessoa - ou seja, muitas fotos rotuladas daquela pessoa contendo apenas essa pessoa. A equipe de dados coletou milhares de fotos e construiu seu próprio sistema front-end para visualizar e rotular facilmente as fotos individuais. A verdade desagradável do aprendizado de máquina é que coletar dados rotulados de qualidade geralmente é a parte mais cara, trabalhosa e, no entanto, importante da construção de um sistema de IA que funcione bem.

Depois de coletar as fotos, a Equipe de Dados as alimentou em um classificador de aprendizado de máquina chamado máquina de vetores de suporte para criar modelos treinados. Quando alimentados com um vetor de rosto do SeetaFace, esses modelos preveem o nome da pessoa na imagem original do rosto ou dizem se eles não reconheceram o rosto.

O IRFS criou dois modelos:

  1. Modelo de arquivo: pessoas famosas do século 20 em diante selecionadas por pessoas do BBC Archive. Este modelo continha cerca de 1.000 pessoas.
  2. Modelo de notícias: Ainda em desenvolvimento, isso se expandirá para incluir mais de 2.000 membros do Parlamento do Reino Unido e assembléias regionais, a Câmara dos Lordes e líderes globais. Imagens de treinamento foram obtidas da BBC News, Factual and Drama.

Esses modelos treinados são usados ​​para prever quais pessoas estão na faixa dos vídeos.

6. Trilhas de face de cluster

Agora que todas as faixas de rosto foram identificadas, a etapa final é coletar todas as faixas da mesma pessoa.

Para fazer isso, colocamos todos os vetores de face extraídos de um vídeo em um espaço vetorial, que chamaremos de espaço de face por diversão. Para visualizar o espaço de face, podemos usar uma ferramenta chamada Tensorboard, parte da biblioteca de aprendizado de máquina Tensorflow.

Olhando para esse espaço de face, esperamos que os vetores da mesma pessoa estejam próximos o suficiente e longe o suficiente das outras pessoas para que possamos agrupá-los automaticamente. Isso é conhecido no aprendizado de máquina como um problema de cluster.

Podemos ver os vetores de faixas projetadas nesse espaço para o vídeo de Harry e Megan abaixo. E vemos que a maioria das faixas de Megan são agrupadas, facilitando o agrupamento. Essa é uma maneira de sabermos que os vetores de face criados estão funcionando bem.

Visualizando rostos com o TensorBoard

Quem estiver familiarizado com o clustering verá a dificuldade do nosso problema de clustering de face. Para cada vídeo, haverá um número variável de clusters de tamanhos variados - com muitos vetores aparecendo uma vez e pertencendo a nenhum cluster.

Em vez de cair em um buraco escuro, tentando resolver perfeitamente esse problema, a equipe de dados decidiu executar com algumas heurísticas. O FaceRec divide o problema em duas categorias separadas: rostos de pessoas que ele reconhece e rostos de pessoas que não. Para rostos reconhecidos, simplesmente agrupa todas as faixas de rostos com o mesmo rótulo previsto (nome). Para rostos não reconhecidos, utiliza uma técnica chamada cluster hierárquico sobre os vetores de face para agrupá-los, mas não atribuir rótulos a eles.

7. Envie as informações

A última etapa do FaceRec é fornecer todas as informações coletadas nas diferentes etapas. Isso vem na forma de um arquivo JSON que contém:

Uma lista de faixas no vídeo. Para cada faixa, ela possui:

  • Pessoa prevista para essa faixa
  • Confiança da previsão
  • Rastrear UUID
  • Vetor de rosto para essa faixa
  • Lista de quadros nessa faixa

Na lista de quadros, as informações em cada quadro incluem:

  • Vetor de rosto para esse quadro, se ele tiver sido detectado
  • Coordenadas da caixa delimitadora da face
  • Tempo no vídeo em que o quadro ocorre

O que podemos fazer com esses dados? Você pode conferir nossa próxima postagem no blog para ver nossas idéias.

Embrulhar

É sobre isso mesmo. Espero que tenhamos ajudado você a entender as várias partes de um sistema de reconhecimento de rosto de vídeo. E talvez também tenhamos deixado você mais consciente de todas as dificuldades e ambiguidades que seu próprio cérebro lida centenas de vezes por dia ao reconhecer seus amigos e entes queridos.

Depois de entender o funcionamento interno do sistema FaceRec, a tarefa do News Labs era ver onde essa tecnologia poderia agregar valor comercial à BBC. Como mostramos as habilidades do FaceRec com uma demonstração intuitiva? Em quais sistemas de produção podemos ver o FaceRec se encaixando? Quais problemas de fluxo de trabalho ele poderia resolver? E importante, como as pessoas se sentem ao usar o reconhecimento facial? Falamos sobre os desafios de implantar uma nova tecnologia dentro de uma grande organização e as perguntas que enfrentamos ao desenvolver um protótipo de reconhecimento facial em “Reconhecimento facial - de que serve as redações?”.