/detector-de-mascaras

Script utilizando OpenCV e modelo Machine Learning para detectar o uso de máscaras.

Primary LanguagePythonMIT LicenseMIT

Reconhecendo máscaras

Este repositório contém um script em Python3 que reconhece se um rosto está ou não portando uma máscara!

O código utiliza da biblioteca OpenCV para o processamento das imagens e scikit-learn para o treinamento do modelo que classifica um rosto que porta ou não uma máscara.

O conjunto de imagens utilizadas para o treinamento do modelo pode ser encontrada na pasta imagens e foi retirado desse link.

Mais sobre o código

Em open_cam.py (com detecção facial) e em open_cam_no_face_detection.py (sem detecção facial) temos scripts que viabilizam que a webcam do seu computador seja iniciada.

Nesses scripts carregamos um dataframe partindo do conjunto de imagens que temos e treinamos um modelo K-Nearest Neighbor para classificar os rostos.

Para a detecção das faces, utiliza-se o CascadeClassifier, já incluso dentro da biblioteca do OpenCV. De modo geral, esse método de treinamento utiliza de um arquivo .xml, que também já é incluso no pacote, para treinar um modelo que reconheça rostos de forma genérica, utilizando o método Viola-Jones e AdaBoost para o melhoramento do desempenho.

O algoritmo de Machine Learning escolhido para classificação foi o K-Nearest Neighbor, pois foi o que apresentou melhor desempenho diante o conjunto de teste e de validação. A ideia é que, em um próximo experimento, esse mesmo código possa ser refeito utilizando uma CNN!

Modo de detecção facial e modo sem detecção facial Por conta de uma issue acerca de um vício em máscaras claras e também uma dificuldade do OpenCV detectar faces quando as tonalidades das máscaras são mais escuras foi proposta essa divisão de modos. O modo DETECÇÃO FACIAL utiliza uma solução do OpenCV para identificar a face na imagem, enquanto o modo SEM DETECÇÃO FACIAL pede que o usuário centralize seu rosto na imagem para que a classificação seja realizada.

Alguns links

Aqui vou deixar uns links de referência com o que pesquisei sobre o assunto para desenvolver o código!