A rede neural foi ensinada a minimizar todas as janelas abertas na tela quando o chefe se aproximava

imagem

Você pode automatizar muito, embora não todos. No entanto, com a ajuda da automação, você pode simplificar significativamente sua vida, tornando-a mais confortável e, em alguns casos, mais segura. Quero dizer, proteja-se dos chefes. Um dos desenvolvedores das redes neurais decidiu criar um sistema que, quando o chefe se aproximava, minimizava imediatamente "janelas inadequadas", escondendo-as fora de vista.

Para o usuário, as ações do sistema parecem bastante transparentes, pois a rede neural após a detecção de um chefe que se aproxima dá uma notificação correspondente. E só então ele minimiza as janelas, dando outro aviso. O próprio sistema está envolvido no fato de que, com a ajuda de uma webcam comum de boa qualidade, captura o rosto das pessoas que se aproximam da área de trabalho e, quando os chefes são identificados, remove rapidamente tudo da tela do computador, longe do pecado. No desenvolvimento, foi usada a biblioteca Keras, que simplificou a tarefa. Como tudo isso funciona?

Sim, nada de particularmente complicado, o desenvolvedor não recebeu nenhum problema especial na implementação do sistema. A propósito, uma das condições ao criar um sistema desse tipo era ensinar a rede neural a reconhecer o rosto do chefe de 5 a 7 metros, para não se preocupar com o fato de o chefe poder ver tudo de perto. Não há muito tempo para identificação do chefe - apenas cerca de 4-5 segundos.

Obviamente, não há nada de bom em trabalhar fora do trabalho. Este exemplo é apenas um sistema de trabalho, que foi feito, e não por diversão, e não por causa de alguns problemas reais das autoridades.



Então, o desenvolvedor decidiu fotografar constantemente tudo o que acontece ao seu redor, para perceber o chefe na hora certa. O sistema de detecção é chamado de sensor chefe.



O sistema é simples:

  • - « »;
  • ;
  • , , .

Ou seja, no sentido literal da palavra, você precisa: obter imagens de rosto, reconhecer, trocar de tela, o que permite ocultar janelas abertas de um dos desktops.

O desenvolvedor decidiu não filosofar maliciosamente, mas usar a câmera padrão Buffalo BSW20KM11BK.



Obviamente, você pode criar uma imagem usando software. Mas é melhor confiar no sistema - o trabalho durou um bom tempo; além disso, o sistema funciona com bastante precisão. No que diz respeito à obtenção de fotos, o desenvolvedor oferece a todos que se familiarizem com a fonte .

Quanto ao treinamento, tudo é relativamente simples aqui - sistemas similares existem há bastante tempo. Para atingir a meta, você precisa executar três etapas:

  • Coleção de imagens;
  • Pré-processamento de fotos;
  • Criando um sistema de autoaprendizagem.

Implementação de idéias


Coleção de imagens. Para que as redes neurais pudessem treinar, os criadores do sistema usaram milhares de fotos. Eles podem ser obtidos, tanto em coleções particulares quanto em outros pacotes de outros usuários. Para auto-estudo do sistema, você precisa de um grande número de fotos. Eles decidiram tirar de:

  • Google Image
  • Coleções de imagens do Facebook
  • Arquivos de vídeo base.

Inicialmente, o desenvolvedor recebeu milhares de imagens com rostos diferentes, mas seu sistema não conseguiu aprender automaticamente com base em fotos. A biblioteca ImageMagick foi usada para extrair rostos de um grande número de fotografias .

O resultado é um banco de dados com os rostos dos funcionários e do próprio chefe:



se você deseja reconhecer o rosto de uma pessoa, é melhor tentar a API da Web, para obter uma imagem - uma ferramenta como a API do Computer Vision nos Serviços Cognitivos. O desenvolvedor decidiu seguir seu próprio caminho. A rede neural criada por ele tinha uma certa estrutura:

Estrutura do programa
____________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
====================================================================================================
convolution2d_1 (Convolution2D) (None, 32, 64, 64) 896 convolution2d_input_1[0][0]
____________________________________________________________________________________________________
activation_1 (Activation) (None, 32, 64, 64) 0 convolution2d_1[0][0]
____________________________________________________________________________________________________
convolution2d_2 (Convolution2D) (None, 32, 62, 62) 9248 activation_1[0][0]
____________________________________________________________________________________________________
activation_2 (Activation) (None, 32, 62, 62) 0 convolution2d_2[0][0]
____________________________________________________________________________________________________
maxpooling2d_1 (MaxPooling2D) (None, 32, 31, 31) 0 activation_2[0][0]
____________________________________________________________________________________________________
dropout_1 (Dropout) (None, 32, 31, 31) 0 maxpooling2d_1[0][0]
____________________________________________________________________________________________________
convolution2d_3 (Convolution2D) (None, 64, 31, 31) 18496 dropout_1[0][0]
____________________________________________________________________________________________________
activation_3 (Activation) (None, 64, 31, 31) 0 convolution2d_3[0][0]
____________________________________________________________________________________________________
convolution2d_4 (Convolution2D) (None, 64, 29, 29) 36928 activation_3[0][0]
____________________________________________________________________________________________________
activation_4 (Activation) (None, 64, 29, 29) 0 convolution2d_4[0][0]
____________________________________________________________________________________________________
maxpooling2d_2 (MaxPooling2D) (None, 64, 14, 14) 0 activation_4[0][0]
____________________________________________________________________________________________________
dropout_2 (Dropout) (None, 64, 14, 14) 0 maxpooling2d_2[0][0]
____________________________________________________________________________________________________
flatten_1 (Flatten) (None, 12544) 0 dropout_2[0][0]
____________________________________________________________________________________________________
dense_1 (Dense) (None, 512) 6423040 flatten_1[0][0]
____________________________________________________________________________________________________
activation_5 (Activation) (None, 512) 0 dense_1[0][0]
____________________________________________________________________________________________________
dropout_3 (Dropout) (None, 512) 0 activation_5[0][0]
____________________________________________________________________________________________________
dense_2 (Dense) (None, 2) 1026 dropout_3[0][0]
____________________________________________________________________________________________________
activation_6 (Activation) (None, 2) 0 dense_2[0][0]
====================================================================================================
Total params: 6489634


O código pode ser encontrado aqui . O desenvolvedor diz que o sistema começou a reconhecer quase inconfundivelmente o chefe quando ele aparece perto da câmera.

Bem, agora você precisa definir instruções claras sobre esse ponto, se o chef aparecer em seguida.



Agora está tudo pronto e a tecnologia foi testada várias vezes. Agora você pode iniciar o sistema e fazê-lo responder ao chefe.

Após o teste, tudo acabou sendo viável. A poucos metros da câmera, o chefe permaneceu calmo e calmo. O sistema tirou todas as fotos necessárias, conduziu uma análise e conseguiu identificar corretamente o chefe do desenvolvedor. O teste mostrou claramente uma coisa - tudo funciona.

O código fonte desse sistema pode ser encontrado neste link .

O sistema de identificação primeiro determinou que realmente havia um chefe, depois ela conseguiu reconhecer a imagem e ... sim, minimizar todas as janelas. No momento, a detecção de rosto está usando o OpenCV. Talvez o Dlib melhore a precisão do reconhecimento.

É claro que existem projetos mais sérios, nos quais eles preparam, por exemplo, sistemas de visão de máquina que ensinam jogos de computador . As redes neurais estão se tornando cada vez mais populares - desenvolvedores de automóveis, cientistas, criadores de sistemas robóticos e outros especialistas trabalham com eles.

Source: https://habr.com/ru/post/pt400185/


All Articles