
Steve Jobs e Steve Wozniak uma vez trancaram em uma garagem e lançaram seu primeiro Mac. Seria legal se você sempre pudesse fechar os programadores na garagem e obter o MVP com grande potencial. No entanto, se você adicionar aos programadores algumas pessoas prontas para avaliar a experiência do usuário e procurar algo inovador, as chances de sucesso aumentarão.
Nossa equipe de 5 pessoas teve uma ideia, para a qual decidimos um pouco dominar o mundo cocô.
Descrição do MVP
Um aplicativo para gerentes de RH que permite determinar o psicótipo do candidato e os padrões de comportamento.
Componentes obrigatórios:
- Um banco de dados de perguntas, tipos de reações e um sistema para levar essas coisas a um psicótipo
- A definição de emoções humanas com base nas manifestações da AU - certos movimentos dos músculos da face.
- Frequência cardíaca sem contato
- Determinando a direção do olhar
- Detecção de taxa de piscada
- Um sistema para agregar os dados recuperáveis acima em um gráfico de estresse e outros metadados úteis.
O MVP para nós é uma ilha de segurança entre a ideia em si e o grande projeto Anne, para o qual estamos a caminho.
Como foi
A fim de evitar distrações durante o desenvolvimento, foi decidido alugar um apartamento na cidade turística mais próxima com comida. Chegando lá no domingo e organizando nossos trabalhos, imediatamente nos sentamos para uma discussão. Na primeira noite, foram determinados os tijolos que definitivamente deveriam estar no MVP final. E enquanto os caras poliram a idéia, foram à cidade para consultas com os gerentes de RH, os desenvolvedores (inclusive eu) já estavam preparando a fundação.
Parte técnica
Decidiu-se que a determinação das emoções era feita estritamente por meio do FACS , pois esse método tem justificativa científica suficiente em comparação com, por exemplo, uma abordagem tão grosseira. Consequentemente, a tarefa foi dividida em
- Rede de treinamento prevendo 68 pontos de referência
- Normalizar / filtrar imagens de rosto
- O algoritmo que detecta movimentos faciais na dinâmica
O treinamento, a propósito, foi realizado na Radeon RX580 usando o PlaidML, sobre o qual eu já falei no meu artigo anterior. Muito obrigado aqui, preciso dizer uma biblioteca imgaug , que permite aplicar transformações afins simultaneamente às imagens e pontos nela (no nosso caso, aos marcos).
Algumas imagens aumentadas:

Para determinar a direção do olhar, o algoritmo foi inicialmente usado na visão computacional clássica, procurando uma pupila na área dos olhos nos HOGs. Mas logo chegou a conclusão de que muitas vezes o aluno não é visível e a direção do olhar pode ser descrita não apenas por ele, mas também pela localização das pálpebras. Devido a essas dificuldades, a solução foi transferida para a abordagem de rede neural. Nós cortamos e marcamos a data, executando-a através do primeiro algoritmo e, em seguida, corrigimos manualmente os locais de seus erros.
Os primeiros desenvolvimentos começaram no verão e existiram como um script Python sujo:

A determinação da frequência de piscar seguiu a agregação de partes dos dois algoritmos descritos acima - a convergência do marco das pálpebras e a direção de olhar para baixo.
A determinação do pulso pela corrente de vídeo foi baseada na idéia de absorver o componente verde da luz por partículas sanguíneas e foi complementada por algoritmos para rastrear e extrair áreas de interesse (pele).
Uma máscara assustadora sai, é claro:

De fato, a criação dos tijolos descritos acima se resumiu à implementação de algoritmos de última geração, com aprimoramentos para melhorar a precisão em nosso caso específico. Felizmente, existe o arxiv.org .
Surgiram dificuldades ao criar a lógica para normalizar imagens de rosto e algoritmos para avaliar os dados recebidos. Por exemplo, ao reconhecer faces, o Modelo de aparência ativa é usado ativamente - a face é puxada pelos pontos encontrados na textura geral da face. Mas o arranjo mútuo de pontos é importante para nós! Como opção - filtre as faces muito giradas ou puxe a textura apenas pelas "âncoras", pontos-chave que não refletem o movimento dos músculos (por exemplo, um ponto na ponte do nariz e nas bordas da face). Esse problema agora é um dos principais e não permite obter dados confiáveis se a face estiver muito virada (também podemos contar o ângulo de rotação!). A faixa aceitável para hoje é de + -20 ° em ambos os eixos. Caso contrário, o rosto simplesmente não está sendo processado.
Claro, existem outros problemas:
- Definição de pontos de referência se uma pessoa com óculos
- Extraindo a linha de base se uma pessoa estiver fazendo uma careta
- Detecção de frequência cardíaca sob luz trêmula
Ah, sim, e qual é a linha de base ? Conceito fundamental no processamento de emoções usando métodos FACS. O algoritmo de extração de linha de base é provavelmente um dos conhecimentos mais importantes com base nos resultados de nossa hackathon.
Além dos algoritmos, há outro ponto importante que não podemos esquecer - o desempenho. Além disso, o limite de desempenho nem sequer é um PC, mas um laptop comum. Como resultado, todos os algoritmos foram criados o mais leve possível e as redes sofreram uma redução iterativa no tamanho, mantendo uma precisão aceitável.
O resultado é 30-40% no Intel i5 a 15-20 fps. É claro que há uma certa margem que desaparecerá à medida que módulos adicionais forem adicionados.
Os planos determinam:
- Dor de garganta
- Mudança na tez
- Frequência respiratória
- Intensidade de movimento corporal
- Padrões de pose humana
- Voz trêmula
O que mais podemos fazer?
Como fã de visão computacional e ML, falei um pouco sobre os algoritmos usados em nosso software. Porém, devido à sua incompletude, para esta aplicação, os recursos acima são, antes, uma adição agradável. A parte mais importante é o sistema desenvolvido para determinar o psicótipo de uma pessoa. Qual é o objetivo? Infelizmente, isso foi feito pelos meus colegas (amigos!) E não sei explicar o que e de onde. Mas, para um entendimento mínimo, você pode considerar o procedimento para trabalhar com o software resultante:
O RH define as qualidades especialmente necessárias para a vaga em questão:

O RH conduz uma entrevista, fazendo parte das perguntas do banco de dados preparado (durante a entrevista, o RH tem diante de si informações adicionais sobre as emoções e o nível de estresse)
Durante ou após a entrevista, o RH preenche respostas para perguntas e padrões de comportamento:

Através de matrizes desenvolvidas, o software cria infográficos que mostram a coincidência de qualidades dadas e específicas:

Após a entrevista, existe um registro que permite retornar à entrevista a qualquer momento e avaliar este ou aquele momento
Total

14 dias x 12 horas + 3 desenvolvedores + 2 especialistas no campo de determinação da mentira = MVP pronto. A imersão foi máxima - até o momento em que assistimos à série Deceive Me, na hora do almoço - eu recomendo.
Para não ser infundado, estou anexando um exemplo de como o aplicativo funciona agora:
Além do vídeo promocional da grande solução Anne, estamos caminhando em direção.
