Skip to content

VitoriaCarvalho/MaskDetection

Repository files navigation


Detecção de Máscara em Python Usando OpenCV e Deep Learning

GitHub top language GitHub repo size GitHub last commit


😃 Sobre o repositório

Neste respositório, compartilho uma aplicação que eu desenvolvi para detecção de máscara em tempo real, utilizando OpenCV-Python e modelos de Deep Learning. Detalhei o desenvolvimento deste projeto em dois artigos no Medium, inclusive, te convido a dar uma lida: Detecção de Máscara em Python Usando OpenCV e Deep Learning - Parte 1/2 e Detecção de Máscara em Python Usando OpenCV e Deep Learning - Parte 2/2. Nesses artigos, expliquei passo a passo o projeto e a implementação, desde a escolha das tecnologias até os resultados finais :)


😷 Motivação

Em virtude do cenário de pandemia, diversas soluções computacionais têm sido propostas para apoiar as autoridades no controle das medidas restritivas, como por exemplo a detecção de máscara em tempo real. Os algoritmos de detecção de máscara podem ser utilizados em sistemas embarcados presentes em câmeras de supermercados, shoppings, aeroportos, hospitais, escolas e outros ambientes que acomodam um grande número de pessoas.

A ideia deste projeto foi desenvolver um algoritmo para detecção facial utilizando a biblioteca OpenCV e técnicas de Deep Learning. Espero que, compartilhando meu aprendizado, consiga te ajudar de alguma maneira \o/


🚀 Tecnologias utilizadas

Foram utilizadas as seguintes tecnologias no desenvolvimento do projeto:

  • Python
  • OpenCV
  • MTCNN
  • FaceNet
  • MLP

💻 Execução da aplicação

Inicialmente, clone este repositório executando:

git clone https://github.com/VitoriaCarvalho/MaskDetection.git

Antes de iniciar a instalação dos pacotes, te aconselho a criar um ambiente virtual para que os pacotes dessa implementação em nada interfiram com seu ambiente padrão. Com o anaconda, você consegue criar um ambiente facilmente:

conda create - name myenv
conda activate myenv

Com o ambiente criado e ativado, navegue para o diretório onde você clonou o repositório e execute o comando abaixo para instalar os pacotes necessários com o pip:

pip install -r requirements.txt

Se tudo ocorreu bem até aqui, agora você já pode executar os códigos :)

Observação 1: se você deseja executar o código de extração de características da base de imagens para treinar o modelo novamente, basta abrir o jupyter notebook ou o vs code dentro do diretório onde você clonou o repositório e acessar o notebook feature_extraction_and_classification.ipynb.

Observação 2: se você deseja executar apenas a aplicação final, onde os modelos são carregados e a detecção de máscara é feita na captura de vídeo, é totalmente possível, pois já disponibilizei os modelos treinados aqui no repositório. Basta abrir o jupyter notebook ou o vs code dentro do diretório onde você clonou o repositório e acessar o notebook pipeline.ipynb.

Nos dois casos, lembre-se de selecionar o kernel referente ao ambiente conda que você criou! 😃

Se tudo der certo com a execução, a OpenCV iniciará a captura dos frames da sua webcam ou vídeo e a detecção começará automaticamente, como no exemplo abaixo:


📝 Ideias de implementações futuras no algoritmo

No segundo post que eu escrevi no Medium sobre esse projeto, mencionei alguns aspectos onde a aplicação poderia melhorar:

  • Seria interessante adicionar mais imagens na base de treino, imagens capturadas pela própria OpenCV. Você poderia iniciar a captura de vídeo e salvar os frames alternando entre o uso e o não uso de máscara. Com essa base de treino incrementada, você pode treinar o classificador novamente;
  • Depois de adicionar novas imagens, seria legal executar um algoritmo de otimização de hiper parâmetros no classificador, como o Grid Search;
  • Dependendo dos resultados alcançados com os itens anteriores, você também poderia variar o limiar de confiança que eu atribuí na classificação até encontrar um novo valor ideal;
  • Eu testei outras abordagens alternativas de extração e classificação de características. Mas você conhece alguma outra abordagem mais otimizada que talvez proporcione melhores resultados? Se sim, vale a pena testar! 💪👏

💪 Como contribuir

  • Faça um fork desse repositório;
  • Crie uma branch com a sua feature: git checkout -b minha-feature;
  • Faça commit das suas alterações: git commit -m 'feat: Minha nova feature';
  • Faça push para a sua branch: git push origin minha-feature.

💡 Inspirações

Antes de colocar a mão na massa, eu tive várias ideias depois de assistir alguns cursos muito legais, que não poderia deixar de recomendá-los aqui: Reconhecimento Facial Descomplicado, Detector de Máscara com Deep Learning e Detector de Máscaras com Python. Obrigada por ajudarem a comunidade com conteúdos de qualidade, gratuitos e em português <3

📝 Licença

Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.


Desenvolvido com 💜 por Vitória Carvalho 👩💻