
O sistema permite que os usuários enviem sua imagem no banco de dados, que é usado para reconhecer seu rosto durante as verificações de participação. Os rostos reconhecidos são correspondidos com o banco de dados e a participação é atualizada em tempo real. O sistema também inclui um recurso de login seguro para os professores visualizarem os registros de presença.
Este projeto é um excelente exemplo de como a visão computacional e o aprendizado de máquina podem ser usados para automatizar processos tradicionais, tornando -os mais eficientes e precisos.
Nos sistemas de atendimento tradicionais, o processo de marcação de participação geralmente é manual, demorado e propenso a erros. Com o advento do aprendizado de máquina e da visão computacional, agora temos as ferramentas para automatizar esse processo e torná -lo mais eficiente e preciso.
Nosso sistema de atendimento de reconhecimento de rosto foi projetado para aproveitar essas tecnologias para fornecer uma solução de rastreamento de presença perfeita e automatizada. O sistema usa a tecnologia de reconhecimento de rosto para identificar indivíduos e marcar sua participação. Esse processo elimina a necessidade de entrada manual e reduz as chances de erros ou entradas fraudulentas.
O sistema é construído usando Python, Flask, OpenCV e FireBase. O Python e o Flask fornecem a funcionalidade de back -end, o OpenCV é usado para detecção e reconhecimento de rosto e o FireBase é usado como banco de dados para armazenar informações do usuário e registros de participação.
O sistema também inclui um recurso de login seguro para os professores, permitindo que eles visualizem os registros de presença. Esse recurso garante que apenas indivíduos autorizados tenham acesso aos dados de participação.
Seja você uma universidade que procura otimizar seu processo de rastreamento de presença ou uma empresa que procura automatizar o sistema de check-in de funcionários, nosso sistema de atendimento de reconhecimento de rosto fornece uma solução robusta e eficiente.
Clique na foto abaixo para o vídeo do projeto

O sistema de atendimento de reconhecimento de rosto vem com uma série de recursos projetados para tornar o rastreamento de participação o mais perfeito e eficiente possível:
Reconhecimento de rosto : o sistema usa a tecnologia avançada de reconhecimento de rosto para identificar indivíduos e marcar sua participação. Isso elimina a necessidade de entrada manual e garante a precisão do rastreamento de presença.
Rastreamento de participação em tempo real : o sistema rastreia a participação em tempo real. Assim que um indivíduo é reconhecido pelo sistema, sua participação é marcada e atualizada no banco de dados.
Login seguro para professores : o sistema inclui um recurso de login seguro para os professores. Isso permite que os professores visualizem os registros de presença e garantem que apenas indivíduos autorizados tenham acesso a esses dados.
Suporte de várias classes : o sistema suporta várias classes. Os alunos podem ser matriculados em várias aulas e sua participação é rastreada separadamente para cada classe.
Integração do banco de dados : o sistema é integrado ao FireBase, um banco de dados NoSQL baseado em nuvem. Isso permite armazenamento e recuperação eficientes das informações do usuário e registros de presença.
Suporte da webcam : o sistema suporta a entrada da webcam para reconhecimento de rosto. Isso facilita a configuração e o uso em uma variedade de configurações.
Interface amigável : o sistema apresenta uma interface amigável, facilitando a navegação e o uso do sistema.
Código aberto : o sistema é de código aberto. Os desenvolvedores podem contribuir e ajudar a melhorar o sistema.





Para colocar o sistema de atendimento de reconhecimento de rosto em funcionamento em sua máquina local, siga estas etapas:
Clone o repositório : primeiro, clone o repositório da sua máquina local. Você pode fazer isso executando o seguinte comando em seu terminal:
git clone https://github.com/turhancan97/Intelligent-Face-Recognition-Attendance-System.git
Crie um ambiente virtual e ative -o. Você pode fazer isso executando os seguintes comandos em seu terminal:
Ambiente Python
python3.8 -m venv your_env_name
source your_env_name/bin/activate
ou
Ambiente de Conde
conda create -n your_env_name python=3.8
conda activate your_env_name
Isso criará um ambiente virtual e o ativará. Todas as dependências serão instaladas neste ambiente virtual.
Instale dependências : navegue no diretório do projeto clonado e instale as dependências necessárias em execução:
pip install -r requirements.txt
Este comando instalará todas as bibliotecas e pacotes necessários listados no arquivo requirements.txt .
Observe que você precisa fazer o download do arquivo Predictor de Shape 'Shape_Predictor_68_Face_Landmarks.dat' no site do DLIB. Você pode baixar o arquivo aqui. Você pode colocar o arquivo na pasta de detecção e precisa gravar o caminho completo do arquivo no arquivo FACE_MATCHING.PY para a variável DATFILE , como abaixo.

Configurar o FireBase : o sistema usa o FireBase para operações de banco de dados. Você precisa configurar um projeto Firebase e substituir a configuração do Firebase no projeto por conta própria. Você pode seguir o Guia de Configuração do Firebase para obter instruções.



Execute o aplicativo : primeiro execute o comando abaixo e insira uma senha para o login do professor.
python generate_password_hash.py
Em seguida, copie o arquivo de configurações/database.yaml na seção Enter-Your-Teacher-Login-Hash.
Depois que toda a configuração estiver concluída, você pode executar o aplicativo executando o seguinte comando no terminal:
python app.py
Isso iniciará o servidor Flask e o aplicativo estará acessível em http://127.0.0.1:5000/ .
Observe que você precisa de uma webcam conectada à sua máquina para que o recurso de reconhecimento de rosto funcione. Se você estiver usando um laptop, a webcam embutida funcionará bem.
Depois de executar o sistema de atendimento de reconhecimento de rosto, você pode começar a usá -lo seguindo estas etapas:
Página inicial : abra seu navegador da web e navegue para http://127.0.0.1:5000/ . Isso o levará à página inicial do aplicativo.
Carregue uma nova face : para adicionar um novo aluno ao sistema, clique no botão "Carregar um novo rosto como imagem". Isso permitirá que você envie uma imagem do rosto do aluno. A imagem deve ser clara e o rosto do aluno deve ser visível. Além disso, você pode capturar a imagem da câmera clicando no botão "Capture uma nova face da câmera".
Adicione as informações do aluno : Após o upload da imagem, você será redirecionado para uma página onde poderá inserir as informações do aluno. Isso inclui o nome do aluno, o email, o tipo de usuário (aluno ou professor), aulas em que estão matriculadas e uma senha. Depois de inserir todas as informações, clique no botão "Enviar".
Reconhecimento do rosto : De volta à página inicial, você pode clicar no botão "Reconhecer o rosto". Isso iniciará o processo de reconhecimento de rosto. O sistema tentará corresponder à face em frente à webcam com as faces no banco de dados.
Seleção de classe : se uma correspondência for encontrada, você será redirecionado para uma página em que poderá selecionar a classe. A participação da classe selecionada será atualizada no banco de dados.
Login para professores : se você é professor, pode visualizar a participação clicando no botão "Login do professor" na página inicial. Você será solicitado a inserir uma senha. Depois que a senha correta for inserida, você será redirecionado para a página de presença, onde poderá ver a lista de alunos e a participação deles.
Lembre -se, o recurso de reconhecimento de rosto requer uma webcam. Se você estiver usando um laptop, a webcam embutida funcionará bem. Se você estiver usando um desktop, precisará conectar uma webcam à sua máquina.
O sistema de atendimento de reconhecimento de rosto depende de várias bibliotecas do Python para funcionar corretamente. Aqui está uma lista das principais dependências:
Flask : uma estrutura de aplicativo da Web leve. É usado para lidar com o lado do servidor da web do aplicativo.
OpenCV : Uma biblioteca de funções de programação destinada principalmente à visão computacional em tempo real. É usado para capturar imagens da webcam e executar a detecção de rosto.
Administrador de Firebase : uma biblioteca para interagir com os Serviços Firebase. É usado para interagir com o banco de dados em tempo real do Firebase e o armazenamento de Firebase.
Werkzeug : uma biblioteca abrangente de aplicativos da WSGI. É usado para lidar com uploads de arquivo no Flask.
Almofado : Uma biblioteca de imagens Python adiciona recursos de processamento de imagem ao seu intérprete Python.
Numpy : uma biblioteca para a linguagem de programação Python, adicionando suporte para grandes matrizes e matrizes multidimensionais, juntamente com uma grande coleção de funções matemáticas de alto nível para operar nessas matrizes.
Para instalar essas dependências, você pode usar o PIP, um gerenciador de pacotes para o Python. Basta executar o seguinte comando em seu terminal:
pip install -r requirements.txt Isso instalará todos os pacotes necessários. Verifique se você está no diretório correto ao executar este comando (o diretório deve conter o arquivo requirements.txt ).
As contribuições para o sistema de atendimento de reconhecimento de rosto são muito bem -vindas! Se você tiver uma solicitação de recurso, relatório de bug ou proposta de refatoração de código, sinta -se à vontade para abrir um problema ou criar uma solicitação de tração.
Aqui estão algumas maneiras de contribuir:
Melhorando a interface do usuário/UX : a interface atual é bastante básica. Se você tiver experiência com o desenvolvimento do front-end e tiver algumas idéias sobre como melhorar a interface do usuário ou a experiência do usuário, suas contribuições serão muito apreciadas.
Adicionando novos recursos : se você tiver uma idéia para um novo recurso que se encaixaria bem com este projeto, fique à vontade para sugeri -lo abrindo um problema. Se você gostaria de implementá -lo, melhor ainda! Abra uma solicitação de tração com suas alterações e nós a revisaremos.
Relatórios Bugs : se você encontrar algum bug ao usar o sistema, relate -os abrindo um problema. Inclua o máximo de informações possível sobre o bug e as circunstâncias em que ocorreu.
Refatorando o código : como em qualquer projeto de software, sempre há espaço para melhorias na base de código. Se você vir uma oportunidade de refatorar algum código para torná -lo mais limpo, mais eficiente ou mais robusto, ficaríamos felizes em revisar sua proposta.
Antes de contribuir, verifique os problemas existentes e puxe solicitações para evitar esforços de duplicação. Além disso, ao abrir uma solicitação de tração, inclua uma descrição clara e detalhada das alterações que você fez.
Obrigado pelo seu interesse em contribuir para o sistema de atendimento de reconhecimento de rosto!
Existem várias áreas em que o sistema pode ser melhorado ou expandido no futuro:
Atribuição de identificação do aluno : Atualmente, o ID do aluno é atribuído como um a mais que o número total de imagens no banco de dados. No futuro, planejamos otimizar esse processo atribuindo IDs de estudante ausentes (por exemplo, se os IDs forem 1,2,3,4, [], 6,7,8, o ID da nova imagem será 5).
Melhorias na interface do usuário : Nosso objetivo é aprimorar o apelo estético da interface para fornecer uma experiência mais envolvente do usuário.
Adição da imagem do banco de dados : A partir de agora, uma imagem é adicionada ao banco de dados assim que for capturado. Planejamos modificar esse processo para que uma imagem seja adicionada apenas ao banco de dados após a inserção das informações correspondentes.
Otimização do banco de dados : pretendemos otimizar as operações de banco de dados para acelerar o processo chamando -as apenas uma vez.
Aprimoramentos de segurança : planejamos implementar métodos mais seguros para manuseio de dados e autenticação do usuário.
Login do aluno : No futuro, planejamos permitir que os alunos efetuem login no sistema usando suas senhas.
Banco de dados de professores : Nosso objetivo é criar um banco de dados separado para os professores. Quando o botão 'Login do professor' for pressionado, um nome de usuário e senha serão solicitados.
Visualização do professor : Uma vez conectado, os professores poderão ver a participação dos alunos com base nas aulas que eles ensinam.
Implantação : atualmente, o sistema foi projetado para ser executado localmente. No futuro, planejamos implantar o sistema em uma plataforma como a Heroku, o que o tornaria acessível de qualquer lugar e não apenas na máquina local.
Manipulação de erros aprimorada e feedback do usuário : Embora o sistema atualmente lida com erros e forneça feedback ao usuário, esses aspectos podem ser aprimorados para tornar o sistema mais robusto e fácil de usar.
Atualizações em tempo real : No momento, os dados de participação são atualizados quando o aluno faz login. No futuro, poderíamos implementar atualizações em tempo real, para que os dados de presença sejam atualizados instantaneamente assim que o rosto de um aluno for reconhecido.
Integração com outros sistemas : o sistema pode ser integrado a outros sistemas usados em instituições educacionais, como sistemas de gerenciamento de aprendizagem ou sistemas de informação do aluno. Isso permitiria uma experiência mais perfeita para alunos e professores.
Recursos adicionais : existem muitos recursos adicionais que podem ser adicionados ao sistema, como suporte para várias câmeras, reconhecimento de várias faces de uma só vez ou a capacidade de lidar com diferentes condições de iluminação.
Essas são apenas algumas idéias para melhorias futuras. Estamos sempre abertos a novas idéias e sugestões, então fique à vontade para contribuir!
Este projeto está licenciado sob a licença do MIT. Isso significa que você é livre para usar, modificar e distribuir o projeto nos termos desta licença. Consulte o arquivo de licença para obter mais detalhes.
Observe que este projeto é fornecido "como está" sem qualquer garantia. Os autores não são responsáveis por nenhum dano ou problemas que possam surgir do uso do projeto. Sempre verifique o código antes de usá -lo em um ambiente de produção.
Aqui está uma visão de alto nível dos componentes do sistema e suas interações:

1. Sistema de reconhecimento de rosto: esse é o núcleo do seu projeto. Ele captura imagens ou quadros de vídeo, detectará rostos, extrairá recursos e combinará faces. Este sistema será desenvolvido usando Python e OpenCV.
2. Interface do usuário: esta é a parte do sistema com o qual os usuários (estudantes e instrutores) interagem. Ele exibirá informações do banco de dados Firebase e enviará entradas do usuário para o banco de dados. A interface será desenvolvida como um aplicativo da Web usando HTML, CSS e JavaScript.
3. Banco de dados de Firebase: é aqui que todos os dados necessários serão armazenados. O banco de dados armazenará informações do aluno, registros de participação e quaisquer outros dados necessários. O sistema de reconhecimento de rosto e a interface do usuário interagem com o banco de dados para armazenar e recuperar dados.
Interações:
O sistema de reconhecimento de rosto captura imagens ou quadros de vídeo da câmera do usuário, detectará rostos, extrairá recursos e combinará faces. Quando um rosto é correspondido, o sistema envia o ID do aluno e a data e a hora atuais para o banco de dados Firebase para registrar a participação.
A interface do usuário exibirá os registros de presença do banco de dados do Firebase. Quando um aluno ou instrutor faz login, a interface envia seu ID para o banco de dados Firebase para recuperar seus registros de participação. A interface também fornecerá opções para os alunos se registrarem para aulas e para os instrutores criarem classes, e essas ações também envolverão o envio de dados para o banco de dados FireBase.
O banco de dados Firebase armazenará todos os dados para o sistema. Quando recebe dados do sistema de reconhecimento de rosto ou da interface do usuário, ele atualizará os registros relevantes. Quando recebe uma solicitação de dados da interface do usuário, ele recuperará os registros solicitados e os enviará para a interface.
Esta é uma visão simplificada da arquitetura do sistema e as interações entre os componentes. Dependendo dos requisitos específicos do seu projeto, pode ser necessário adicionar mais componentes ou interações. Por exemplo, pode ser necessário adicionar um componente para lidar com a autenticação do usuário, se desejar garantir que apenas estudantes e instrutores registrados possam acessar o System.docs/images/database_design.png
Vamos agora projetar e desenhar o esquema de banco de dados para o Firebase. Isso inclui definir os dados que serão armazenados (por exemplo, informações do aluno, registros de participação etc.) e como esses dados serão estruturados e relacionados.

Coleção de usuários: esta coleção armazenará informações sobre todos os usuários, incluindo alunos e instrutores. Cada usuário terá um ID exclusivo e os dados armazenados para cada usuário podem incluir:
userID : um identificador exclusivo para o usuário.name : o nome completo do usuário.email : o endereço de e -mail do usuário.embeddings : incorporação de rosto do usuáriouserType : o tipo de usuário (aluno ou instrutor).password : a senha do usuário (armazenada com segurança).classes : Lista de programas nos quais o usuário está inscrito (para estudantes) e o número de participação desse alunoEsta é uma visão simplificada da estrutura do nosso banco de dados. Também armazenamos as imagens do aluno no armazenamento do Firebase. As imagens são armazenadas em uma pasta chamada estática/imagens e o nome das imagens são o ID do aluno.
Esta é uma parte crucial do seu projeto e envolve várias etapas:

Algoritmos de reconhecimento de face de pesquisa:
Implementar o sistema de reconhecimento de rosto:
Integre o sistema de reconhecimento de rosto com o Firebase Database: