Tivemos alguns dias entre grandes projetos e decidimos zombar da porta do chefe da unidade. Apenas por diversão. Porque os drones já nos reconhecem em nossos rostos - o que torna a porta pior?
No início do projeto de TI, já tínhamos um patch panel impresso em uma impressora 3D. Por dois dias, fizemos um protótipo de um dispositivo a partir de ferro, bibliotecas prontas e alguma mãe, que leva em conta os funcionários ou permite que você verifique se uma pessoa passou pela catraca por sua passagem.
Sem dinheiro Usamos apenas código aberto.
Você pode repetir isso em 15 a 20 minutos com o nosso script.
Idéia e abordagem de implementação
Tudo começou com uma residência de verão, onde descansamos após a conclusão de um grande projeto. Houve um momento em que era muito difícil acertar o portão com a chave. No sentido em que imediatamente pensamos que era ruim tirar as mãos dos bolsos no inverno, criamos várias outras aplicações, até verificar passes e identidades da equipe.
Na verdade, queríamos fazer um corredor com raios laser, como no filme Resident Evil, mas não tivemos tempo. Em geral, eu queria o efeito de interação com o sistema, para que ele também respondesse com uma voz.
Como queríamos um protótipo, aqui está a orientação máxima em termos de funcionalidade e resultados rápidos, em detrimento da aparência, dimensões e bela arquitetura. Acabou assustador, mas rápido e funciona.
Primeiro, dividimos o controle da porta em módulos e cada um começou a escrever o seu. O módulo de reconhecimento no primeiro dia era externo ao serviço da web do parceiro, ainda havia nosso antigo mecanismo de rede neural interna de outro projeto, além de soluções de código aberto. Como resultado, ele ganhou o código-fonte aberto: nosso próprio mecanismo exigia refatoração e atualização (isso levou muito tempo), o recurso da Web do parceiro queria dinheiro e não o deixou entrar, mas o código-fonte aberto é um código-fonte aberto.
Eletrônica e habitação
Inicialmente, eles consideraram a opção de simplesmente comprar uma fechadura controlada eletronicamente e substituí-la por uma fechadura interna padrão. Porém, devido à presença de vidro com persianas na porta, a trava interna era invulgarmente estreita e simplesmente não havia substituição eletrônica no mercado. Portanto, nosso engenheiro imprimiu um cadeado destacável, fornecendo contêineres para a unidade de controle e a unidade de abertura da trava.
Então, o projeto do edifício:
Nós o imprimimos a partir de um modelo que nós mesmos havíamos feito antes do projeto (a modelagem e o ajuste levaram mais tempo do que a escrita do código):
O design do estojo é feito em Compass-3D. Como resultado, Dima fez 3 versões do gabinete, desde que ele pudesse escolher o arranjo ideal de elementos e elementos de fixação.
Dentro da caixa de bloqueio, um motor MG-995 com uma força de 10 kg (a força real de acionamento é de 5 a 7 kg), um par de sensores infravermelhos para controlar a automação durante a entrada e saída, um microcontrolador Esp8266 com um módulo Wi-Fi e um servidor web que, por simplicidade, recebeu comandos de controle para abrir e fechar portas via http. O mesmo controlador girou as marchas da chave.
A parte do software do microcontrolador está escrita em C.
Imersos nos detalhes da fabricação do estojo e do enchimento, involuntariamente pensamos na complexidade de objetos aparentemente simples.
Total: a unidade de controle de bloqueio pode aceitar comandos de abertura via Wi-Fi.
Peça de reconhecimento de rosto
Precisamos de uma unidade de reconhecimento de rosto que envie um comando "aberto" para o castelo, se precisar ser aberto. Devido à arquitetura modular, ele pode trabalhar em um mini servidor em uma casa inteligente ou ser um serviço da Web na Internet. Também precisamos de um ponto de Wi-Fi na rede local com a unidade de controle de bloqueio: é um thin client ou um servidor doméstico. Implantamos o servidor diretamente no laptop antigo, ou seja, combinamos o servidor e o thin client. Eles conectaram a câmera ao laptop via USB.
Para o próprio reconhecimento, paramos na
biblioteca Python de reconhecimento facial sob uma licença aberta da Universidade de Tecnologia de Massachusetts.
Várias fotos de cada participante do projeto foram carregadas no modelo - na frente, no perfil e na natureza. Em teoria, quanto mais fotos você enviar para o modelo, maior será sua precisão, mas na maioria dos casos existem avatares suficientes do Facebook ou fotos do banco de dados de eychars.
Implantamos a infraestrutura como um serviço em nossa
nuvem Technoserv e depuramos rapidamente. A implantação de uma nova máquina virtual com todos os serviços levou 20 minutos. Em seguida, eles carregaram todo o código com bibliotecas em um laptop em funcionamento para um trabalho autônomo.
O sistema seleciona a maior face do quadro e a reconhece duas vezes com uma frequência de 0,5 segundos.
A webcam saiu da caixa de coisas esquecidas dos anos 90. O que já era, mas foi o suficiente.
O tempo total de reconhecimento é de pouco mais de três segundos. Isso ocorre porque o laptop é realmente antigo e não possui uma placa de vídeo. Com o vidyuha e a rápida velocidade de reconhecimento da câmera na web, aumentará significativamente.
Eles escreveram imediatamente um conector para reconhecimento de voz, já que apenas o rosto não é confiável (mais sobre isso mais tarde), dois fatores são necessários.
Demorou 6 horas para um protótipo mais ou menos depurado depois de escolher uma biblioteca.
Também conectamos um alto-falante bluetooth ao laptop para que ele pudesse conversar. O laptop em si estava escondido em um armário com cartas de agradecimento, como um dispositivo incorporado.
Testes
A descrição da biblioteca diz: “Construído usando o reconhecimento facial de última geração da
dlib , construído com aprendizado profundo. "O modelo tem uma precisão de 99,38% no benchmark
Faces rotuladas na natureza ". Naturalmente, não há 99,38%, mas muito menos. Como você precisa carregar fotos normais (e mais), defina uma câmera normal e equalize a luz. Mas, enquanto você está cavando na porta, ela consegue fazer de quatro a cinco quadros, geralmente abre quase imediatamente.
Erros: algumas vezes a porta ficou confusa e não nos deixou ir imediatamente. Estranhos de outros departamentos não podiam entrar pela porta.
Você pode fazer caretas na porta, ela entende tudo e se abre.
De acordo com a fotografia do funcionário, é claro, ela abre. Adicionamos o módulo de reconhecimento de pessoa inteira na próxima versão (fora desses dois dias), e ele começou a abrir apenas para o fracasso.
Depois, eles fizeram um teste de cores (a biblioteca de downsamplit e leva imagens em preto e branco para o processamento), movimentos faciais e piscando - você precisa de uma câmera melhor para ver uma pessoa quando ela ainda estiver em forma e tudo ficará bem.
Ou seja, como uma substituição importante, é claro que não, porque um segundo fator é necessário - por exemplo, voz. Mas adequado para portas não críticas. Para explicar os funcionários que passam pela porta também. Para verificar se um funcionário também corresponde ao passe no ponto de verificação. Você também pode reconhecer o cachorro voltando para casa pela porta. Se você se lembra da história do reconhecimento de padrões, uma das primeiras aplicações industriais foi que o desenvolvedor americano conseguiu um gato vizinho, uma porcaria no gramado. Ele reconheceu o gato no semi-agachamento e conectou o sistema de irrigação ao seu mini-servidor. Depois de alguns dias, o gato percebeu que era melhor não cagar. Nunca. Em lugar nenhum.
O case acabou por ser futurista e volumoso, na versão comercial não deve haver nada na porta, exceto uma câmera com microfone e uma tela pequena com um assistente visual e de áudio.
Repita em casa
Link para a biblioteca acima.
No próprio script, os nomes dos funcionários (Emp1, Emp2) correspondem aos arquivos com suas fotos no diretório, você precisa adicionar os seus. A resolução não importa, você pode pelo menos 640 x 480. Existem duas categorias de funcionários - segmentadas, a quem ignorar e aquelas que enviam imediatamente para casa.
Como câmera, usamos a webcam mais simples da Logitech. Em vez de um laptop, é bem possível usar um microcontrolador, mas você precisa entender como colocar python e bibliotecas selecionadas nele.
Resultado
A tecnologia foi sentida por vendedores de departamentos vizinhos que trabalhavam conosco no mesmo andar. A caixa de bloqueio sobreposta parece especialmente legal e com que som ela abre a porta! Não acredite, mas a promoção interna da tecnologia é tão necessária quanto a externa.
Nos perguntaram algumas vezes por que fizemos isso depois de horas.
A resposta é que eu realmente queria divertir nossos funcionários, para que eles sentissem as tecnologias que usamos em um dispositivo em funcionamento. Porque é um protótipo de hardware e software imediatamente e é uma sessão de treinamento tão pequena antes de projetos maiores. É improvável que o próprio protótipo seja usado em algum lugar, mas tem uma função educacional e moralidade.
Bem, garantimos a rapidez com que protótipos industriais podem ser feitos. Normalmente, fazemos projetos-piloto rápidos (2-3 semanas) para produção. A propósito, se é interessante calcular rapidamente algo em termos de automação e criar um piloto - essa é apenas a especialização de nossa equipe.
Envie um email para tmishin@technoserv.com, se houver.
Parece que depois de uma boa hackathon.
E agora temos um brinquedo.
Um colega veio correndo ontem e mostrou um vídeo de um
drone com um lança-chamas . Parece que temos algumas idéias ...
Eu também contei tudo isso ao fato de que, literalmente, há 3 ou 4 anos, era muito caro e demorado escrever detectores industriais para vigilância por vídeo. Controlar o tamanho da fração de material na correia transportadora, parar no caso de objetos estranhos, desligar ao trabalhar em uma zona de perigo e assim por diante. Hoje está sendo feito muito, muito rápido. E muito mais barato. Não é tão rápido quanto a porta, mas um piloto em duas semanas é uma estimativa muito realista.