UNIVERSIDADE VIRTUAL DO ESTADO DE SÃO PAULO Carlos Aldiran Ferreira Menezes – RA 1711295 Magnovaldo Oliveira Carneiro – RA 1713790 Robert Marques Maia – RA 1704055 Inteligência Artificial para detecção de máscara facial Vídeo de Apresentação São Paulo - SP 2021 UNIVERSIDADE VIRTUAL DO ESTADO DE SÃO PAULO Inteligência Artificial para detecção de máscara facial Monografia apresentada na disciplina Trabalho de Conclusão de Curso para Engenharia da Computação da Universidade Virtual do Estado de São Paulo (UNIVESP). Orientador: Lucas Exposto Soares São Paulo - SP 2021 FICHA DE AVALIAÇÃO DA BANCA Identificação dos alunos: Nome: Carlos Aldiran Ferreira Menezes Nome: Magnovaldo Oliveira Carneiro Nome: Robert Marques Maia RA: 1711295 RA: 1713790 RA: 1704055 Curso: Graduação em Engenharia de Computação Turma: 5 butantã Nome da Monografia: Inteligência Artificial para Detecção de Máscara Facial Principais objetivos, que descrevem brevemente a Monografia: BANCA: Prof. ______________________________________ _____________________ Prof. ______________________________________ _____________________ Orientador: Dr. Lucas Exposto Soares ___________________ Data: São Paulo, ________________________ Ficha catalográfica MENEZES, Carlos A. F.; CARNEIRO, Magnovaldo O.; MAIA, Robert M Inteligência Artificial para detecção de máscara facial / Carlos Aldiran Menezes; Magnovaldo Oliveira Carneiro; Robert Marques Maia 2021. XXp.(Número de páginas da monografia) Monografia (Graduação) - Universidade Virtual do Estado de São Paulo - UNIVESP, 2021. Orientador: Lucas Exposto Soares. 1. Inteligência Artificial 2. Reconhecimento Facial 3. Rede Neural Artificial 4. Aprendizado de Máquina DEDICATÓRIA Escrever uma dedicatória para cada um, ordenado alfabeticamente por autor. AGRADECIMENTOS Escrever um agradecimento para cada um, ordenado alfabeticamente por autor ou um único em conjunto. RESUMO O mundo tem lutado contra a pandemia, e os governos vem adotando diversas medidas para reduzir os níveis de contaminação e mortes. Neste momento, enquanto a vacinação não está acessível a toda população as únicas formas de combate e prevenção são distanciamento social, higiene constante e uso contínuo de máscara facial. O objetivo deste trabalho é oferecer uma solução utilizando Inteligência Artificial e Aprendizado de Máquina fazendo uso da visão computacional na forma de detecção de máscara facial ajudando a monitorar seu uso em diversos locais como condomínios, escolas, hospitais, bancos, aeroportos, etc. A técnica de detectar os rostos das pessoas e separá-los em duas classes, ou seja, pessoas com máscaras e pessoas sem máscaras, é feita com a ajuda de rede neural artificial. PALAVRAS-CHAVE: Covid-19; Inteligência Artificial; Aprendizado de Máquina; Processamento de Imagem; ABSTRACT The world has been fighting the pandemic, and governments have been taking several actions to reduce levels of infection and deaths. Currently, while vaccination is not accessible to the entire population, the only ways to combat and prevent it are social distance, constant hygiene, and continuous wearing face mask. The objective of this project is to offer a solution using Artificial Intelligence and Machine Learning using computer vision in the form of face mask detection helping to monitor its use in different places such as condominiums, schools, hospitals, banks, airports, etc. The technique of detecting people's faces and segregating them into two classes, namely people with masks and people without masks, is done with the help of image processing and machine learning. (Consertar a tradução do resumo) KEYWORDS: Covid-19; Artificial Intelligence; Machine Learning; Image processing. ÍNDICE DE FIGURAS Nenhuma entrada de índice de ilustrações foi encontrada. LISTA DE ABREVIATURA E SIGLAS AM Aprendizado de Máquina AP Aprendizagem Profunda EPI Equipamento de Proteção Individual IA Inteligência Artificial OMS Organização Mundial da Saúde PFF Peça Facial Filtrante RI Reconhecimento de Imagem RNA Rede Neural Artificial RNC Rede Neural Convolucional E AÍ VAI... SUMÁRIO 1 INTRODUÇÃO................................................................................................................... 12 1.1 Objetivos..............................................................................................................13 1.1.1 OBJETIVO GERAL ..................................................................................................................... 13 1.1.2 OBJETIVO ESPECÍFICO............................................................................................................. 13 1.2 Justificativa..........................................................................................................13 1.3 Métodos e Instrumentos de Pesquisa ............................................................14 2 REFERENCIAL TEÓRICO .............................................................................................. 15 3 Apresentação do ESTUDO ............................................................................................. 25 3.1 Estudo inicial .......................................................................................................25 3.1.1 FLUXO DE TRABALHO NO TEACHABLE MACHINE .................................................................... 25 3.2 3.3 3.4 3.5 Estudo com ferramenta local ...........................................................................26 Testes práticos....................................................................................................29 Marcos faciais .....................................................................................................30 Imagem de Fundo (Background).....................................................................33 4 CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS ........................................... 34 5 ANEXO I ............................................................................................................................. 35 6 REFERÊNCIAS BIBLIOGRÁFICAS............................................................................... 36 1 INTRODUÇÃO De acordo com (OMS, 2021), a doença SARS-Cov2, conhecida popularmente como COVID-19 ou coronavírus, já infectou globalmente, até o momento do relatório, 166.352.007 pessoas globalmente, causando 3.449.189 óbitos pelo vírus. Conforme amplamente mostrado pela imprensa, indivíduos que contraíram COVID-19 tiveram uma ampla gama de sintomas – indo de manifestações respiratórias suaves a graves. O impacto gerado por todos esses casos deixou o mundo muito próximo de um colapso nos diversos sistemas de saúde, o que contribuiu com o estabelecimento de muitas tentativas – vale ressaltar que todas controversas e carecendo de muito debate científico – de conter e diminuir o impacto da doença. Uma dessas tentativas é o uso de máscaras por indivíduos que necessitam transitar por locais que tenham fluxo de pessoas. A despeito dessa medida ser correta ou não, o que não é objetivo deste trabalho esse questionamento, muitos governos nacionais e locais determinaram regras que obrigam o uso de máscaras em ambientes que tendem a gerar aglomeração de pessoas. Como objetivo secundário, resultado do investimento na pesquisa e aprofundamento no tema, busca-se o desenvolvimento dos membros da equipe deste projeto na área de Inteligência Artificial, Aprendizado de Máquina e Aprendizagem Profunda, entre outras, à medida que há necessidade de buscar conhecimento e aculturamento nestas soluções que estão sendo utilizadas cada vez mais no apoio a sociedade e organizações. É esperado que ao final deste trabalho tenha sido desenvolvido competências nas áreas de IA que possibilitem a aquisição de novos conhecimentos relacionados ao tema proposto. 1.1 Objetivos Um trabalho acadêmico deve se pautar pela identificação de um problema e, de forma subsequente, pela busca de uma resposta satisfatória à questão levantada. Conforme (KANT, 2021), em tradução livre, “pensamentos sem conteúdo são vazios, instituições sem conceito são cegas”. Com esta premissa em foco, temos como objetivo de qualquer trabalho que se proponha o desenvolvimento do conhecimento humano. Além de objetivar a contribuição para o desenvolvimento das disciplinas relacionadas com inteligência artificial e de apresentar uma visão sobre o assunto, é objetivo deste trabalho proporcionar aos seus integrantes qualificação nos assuntos abordados, não sendo, no entanto, pretensão deste ser um ponto final sobre o assunto, mas pelo contrário, ser um ponto inicial. 1.1.1 Objetivo geral Demonstrar a aplicação de um sistema de reconhecimento facial para verificação com o uso de máscaras baseado em inteligência artificial. 1.1.2 Objetivo específico Testar em diversas configurações um sistema leve de reconhecimento facial, experimentar os datasets disponibilizados com a ferramenta utilizada e sugerir formas de qualificar o dataset fornecido para que se possa melhorar a precisão e tornar mais eficiente o reconhecimento de máscaras. 1.2 Justificativa O momento atual de pandemia em que estamos inseridos nos traz diversos desafios relativos ao relacionamento humano a que estamos acostumados, e que nos é natural, em contraponto a um comportamento que não nos é natural, trazendo um novo paradigma na forma como a humanidade se relaciona. Também é verdade que vivemos uma época de rápidas transformações tecnológicas, onde nos últimos 20 anos, ou melhor, nestes 20 anos iniciais do século XXI, ocorreram mais transformações da forma como nos relacionamos por causa da tecnologia que em comparação com todo o século XX. Baseado nessas mudanças e em consonância com os dados de (OMS, 2021), o Brasil possui, no momento do relatório, 15.970.949 casos de infecções e 446.309 mortes por COVID-19. Pelas políticas estabelecidas no intuito de diminuir a curva de infectados, das dificuldades de fiscalização por parte das autoridades e da falta de conscientização da população, pensou-se, para a execução deste trabalho, na utilização de reconhecimento facial para facilitar a verificação do correto uso do EPI. 1.3 Métodos e Instrumentos de Pesquisa A abordagem metodológica utilizada neste trabalho é a de pesquisa exploratória. Conforme (GIL, 2001): Estas pesquisas têm como objetivo proporcionar maior familiaridade com o problema, com vistas a torná-lo mais explícito ou a constituir hipóteses. Pode-se dizer que estas pesquisas têm como objetivo principal o aprimoramento de idéias ou a descoberta de intuições. Seu planejamento é, portanto, bastante flexível, de modo que possibilite a consideração dos mais variados aspectos relativos ao fato estudado. Na maioria dos casos, essas pesquisas envolvem: (a) levantamento bibliográfico; (b) entrevistas com pessoas que tiveram experiências práticas com o problema pesquisado; e (c) análise de exemplos que "estimulem a compreensão" (Selltiz et al., 1967, p. 63). Embora o planejamento da pesquisa exploratória seja bastante flexível, na maioria dos casos assume a forma de pesquisa bibliográfica ou de estudo de caso [...]. Além da consulta em vários materiais para compreender os assuntos dos quais versam esta produção, utilizou-se como base uma visita à bibliografia que trata sobre os assuntos de IA, RNA, AM e RI. Juntamente a essa revisão bibliográfica, foram realizadas experimentações para compreender melhor sobre o tema, utilizando plataformas já estabelecidas para a realização dos testes. Após a definição da metodologia a ser utilizada, procurou-se obter um entendimento inicial sobre as tecnologias envolvidas através de experiências com plataforma já estabelecida, objetivando a aquisição de parâmetros para a realização de experimentos com outros recursos, que serão apresentados no decorrer deste trabalho. 2 REFERENCIAL TEÓRICO Inteligência Conceituar inteligência é uma tarefa complexa. O conceito tem sido estudado há séculos por filósofos e pesquisadores. De forma bastante simplificada, pode-se dizer que inteligência é uma característica humana, que pressupõe que, a partir de experiências anteriores, conhecimentos transferidos, ou desenvolvimento de novos conhecimentos derivados de reflexões, o ser inteligente pode resolver questões do cotidiano que lhe são impostas no decurso da vida. O conceito de inteligência é, por muitas vezes, confundido - ou mesmo misturado - a outros conceitos, como o de sabedoria ou capacidade de raciocínio, o que torna seu entendimento ainda mais complexo e confuso. Mas se for levado em consideração a descrição dada por um dicionário, como no dicionário online Michaelis, que diz que a "Inteligência é a capacidade de resolver situações novas com rapidez e êxito, adaptando-se a elas por meio do conhecimento adquirido". Baseado nesta definição dada pelo dicionário, e que serve de forma satisfatória para fins deste estudo, podemos inferir que quanto mais situações ou informações a que um ser inteligente for submetido, maior o arcabouço de exemplos que ele disporá para resolver os desafios a ele apresentados, tornando sua inteligência mais desenvolvida. Define-se, portanto, para fins deste trabalho, inteligência como a capacidade de criar respostas a partir de experiências adquiridas pelo próprio ser ou pela transmissão de conhecimento a partir de outro ser de igual ou maior inteligência. Inteligência artificial Existem muitas controvérsias acerca da definição do termo inteligência artificial. Mesmo grandes nomes na área como Alan Turing, quando propõe a questão, em seu trabalho intitulado Computing Machinery and Intelligence, “As máquinas podem pensar?” (tradução livre), ou John McCarthy, referenciado como o criador do termo Inteligência Artificial em 1956, quando afirma que a ideia de uma máquina inteligente é antiga logo no início de seu trabalho Some Philosophical Problems From The Standpoint Of Artificial Intelligent", além de inúmeros outros autores, não oferecem um conceito definitivo sobre o que é IA. Mas, a despeito das muitas controvérsias, uma definição válida para o termo e adequada aos propósitos deste trabalho é dada por (COPIN, 2013), "Inteligência Artificial envolve utilizar métodos baseados no comportamento inteligente de humanos e outros animais para solucionar problemas complexos". Ainda de acordo com (COPIN, 2013), temos uma diferença entre dois tipos de IAs, as IAs fortes e as IAs fracas. A diferença fundamental entre elas é que a visão de uma IA forte pressupõe que, com capacidade computacional adequada, é possível que uma IA se torne consciente e tenha capacidade de pensar da mesma forma que um ser humano, o que, ainda de acordo com o autor, muitos filósofos e pesquisadores consideram essa visão como sendo absurda ou infundada, relegada a obras de ficção científica, e que raramente se considera em pesquisas a possibilidade de se desenvolver máquinas com capacidade de consciência e de possuir emoções. Conforme descrito por (COPIN, 2013) em seu livro: Por outro lado, IA fraca é simplesmente a visão de que comportamento inteligente pode ser modelado e utilizado por computadores para solucionar problemas complexos. Este ponto de vista defende que apenas o fato de um computador agir inteligentemente não prova que ele seja verdadeiramente inteligente no sentido humano. Levando em consideração que não se tem, ainda, condições para a criação de máquinas que possam expressar de forma espontânea sentimentos ou emoções e de serem conscientes, uma vez que a própria natureza humana possui muitas controvérsias em suas ações, pode-se inferir que o tipo de conceito mais adequado à inteligência artificial é exatamente o descrito por IA fraca. Cabe levar em consideração ainda que (COPIN, 2013) diferencia IA forte de IA fraca e afirma que o conceito não se mistura ao de método forte e método fraco: Discutimos as diferenças entre as alegações da IA fraca e da IA forte. Essa diferença não deve ser confundida com a diferença entre métodos fortes e métodos fracos. Os métodos fracos da Inteligência Artificial usam sistemas tais como lógica, raciocínio automatizado e outras estruturas gerais que podem ser aplicadas a uma ampla gama de problemas, mas que não necessariamente incorporam qualquer conhecimento genuíno sobre o mundo do problema que está sendo solucionado. Por outro lado, solucionar problemas por métodos fortes depende de um sistema dispor de sólidos conhecimentos sobre o seu mundo e sobre os problemas que ele deve encontrar. Solucionar problemas por métodos fortes depende dos métodos fracos, pois um sistema com conhecimento, sem alguma metodologia para lidar com este conhecimento, é inútil. Assim sendo, podemos nos utilizar também do conceito de método fraco para fins de embasamento deste trabalho. Ainda cabe ressaltar, conforme (ROSA, 2011) que a Inteligência Artificial trabalha basicamente com duas abordagens: a abordagem simbólica, baseada na lógica, e a abordagem conexionista, baseada nas redes neurais artificiais, ou seja, simulação do cérebro humano. Aprendizado de máquina Dentro do campo de estudo da inteligência artificial encontramos uma das disciplinas que vem ganhando mais importância, chamada de aprendizado de máquina, ou mais comumente conhecida pelo seu nome em inglês, machine learning. Aprendizado de máquina pressupõe que as máquinas possam aprender - ou desenvolver sua inteligência - a partir de exemplos adquiridos e experimentações de forma autônoma. Conforme (LOPES, 2014), Algoritmos de Aprendizado de Máquina têm como objetivo descobrir o relacionamento entre as variáveis de um sistema (entrada/saída) a partir de dados amostrados. Estes algoritmos se originam de muitas áreas de aplicações: Estatística, Física, Engenharia, Computação etc. Quando os relacionamentos entre todas as variáveis do problema (entrada/saída) não são completamente compreendidos, os Algoritmos de Aprendizagem de Máquina são necessários; este é o caso de muitos dos problemas reais com os quais nos defrontamos no cotidiano. Ainda de acordo com (LOPES, 2014), o aprendizado de máquina pode ser classificado como supervisionado, não supervisionado ou por reforço. Aprendizado de máquina supervisionado Aprendizado de máquina supervisionado é um modelo que fornece um resultado a partir de exemplos pré-determinados fornecidos à máquina. De longe, este é o mais utilizado dos modelos no AM, onde os problemas a serem resolvidos, em sua maioria, são conhecidos. Assim, são apresentados ao algoritmo dados de entrada e suas saídas, possibilitado que ele compreenda os padrões. Dentro deste modelo encontra-se ainda a divisão entre modelo supervisionado de regressão e modelo supervisionado de classificação. No modelo de regressão, avalia-se o comportamento de uma saída de acordo com as variações de entrada e tem uma abordagem numérica, como nas regressões lineares. Já no modelo de classificação, busca-se organizar a saída dentro de determinados requisitos, classificando o resultado de acordo com uma abordagem comparativa e geralmente binária, como nas regressões logísticas. Aprendizado de máquina não supervisionado O aprendizado de máquina não supervisionado busca identificar uma estrutura que demonstre os possíveis caminhos para que se possa atingir um resultado, onde são oferecidas ao algoritmo um conjunto de entradas e é deixado a cargo deste determinar os possíveis caminhos para se chegar a saídas prováveis. É um modelo pouco utilizado se comparado ao AM supervisionado, mas é de grande importância quando se avaliam resultados que não possuem uma ordenação definida. Aprendizado de máquina por reforço O modelo de AM por reforço permite que a máquina aprenda por tentativas, contabilizando os erros e acertos e buscando maximizar a quantidade de sucessos. Se comparado aos modelos supervisionado e não supervisionado, este modelo está mais próximo de como funciona o aprendizado humano, pois busca obter o maior valor de acertos possíveis, que são traduzidos em recompensas. Entretanto ele tem alguns fatores que não o torna tão versátil, como possuir uma rigidez em relação ao problema tratado necessitando ser modelado para cada aplicação a que se destina, ou seja, quando se muda o objeto, as mudanças realizadas no modelo são mais profundas que nos supervisionados e não supervisionados. A autonomia deste modelo é alta em comparação com os modelos anteriores, pois a intervenção humana se dá somente no ajuste do algoritmo ao ambiente e do sistema de recompensas e penalidades, ou acertos e erros, deixando a cargo dele aprender por conta própria como chegar num resultado satisfatório. Rede neural artificial Durante o desenvolvimento dos estudos sobre RNA, as pesquisas esbarraram em muitas dificuldades, sobretudo com relação ao tipo de máquina disponível. As máquinas seguiam – e ainda seguem em sua maioria, mas não mais exclusivamente – a arquitetura de Von Newman. É uma arquitetura que tem como premissa o processamento serial em contraposição ao processamento paralelo. A Arquitetura de Von Newman não pressupõe que a máquina tenha capacidade de aprendizado, generalização, adaptabilidade e tolerância a falhas. Entretanto, com o alvorecer do século XXI, a tecnologia de hardware evoluiu muito no sentido de permitir paralelização e tolerância a falhas, e os algoritmos foram sendo aprimorados para aproveitar essa capacidade de análise paralela e criar simulações do comportamento do cérebro humano. Ainda no século XX, sobretudo a partir do pós-guerra da segunda guerra mundial, muitos trabalhos foram realizados em busca de máquinas que pudessem realizar trabalhos de forma análoga a que humanos realizariam. Ainda durante a segunda guerra, em 1943, trabalhos de McCulloch e Pitts já tratavam sobre a neuro computação. Quando Donald Hebb escreve seu livro The Organization of Behavior, apesar de suas ideias não serem inéditas, foi quem descreveu como o aprendizado ocorria a partir da conexão e do fortalecimento dessas conexões entre os neurônios. No ano de 1951, Marvin Minky construiu o primeiro neuro computador, chamado de Snark, que conseguia realizar seus ajustes de peso automaticamente, mas nunca foi utilizado para nenhum tipo de processamento útil. Em 1956 surgiu a diferenciação entre IA simbólica e IA conexionista. Conforme (FURTADO, 2019): Inteligência Artificial Simbólica tenta simular o comportamento inteligente humano desconsiderando os mecanismos responsáveis por tal, ou seja, não possui uma inspiração biológica. A Inteligência Artificial Conexionista acredita que construindo um sistema que simule a estrutura do cérebro, este sistema apresentará inteligência, será capaz de aprender, assimilar, errar e aprender com seus erros. Em 1958, Frank Rosenblatt realizou um trabalho chamado Project PARA, sigla para Perceiving And Recognizing Automaton, que definiu o elemento inicial para uma rede neural artificial, que é o Perceptron, que pode-se chamar de neurônio eletrônico. Conforme o estudo desenvolvido por (ROSENBLATT, 2021): Estudos teóricos recentes deste autor indicam que deve ser viável construir um sistema eletrônico ou eletromecânico que aprenderá a reconhecer semelhanças ou identidades entre padrões de informação ótica, elétrica ou tonal, de uma maneira que pode ser intimamente análogo aos processos perceptivos de um cérebro biológico. O sistema proposto depende de princípios probabilísticos ao invés de determinísticos para sua operação, e ganha sua confiabilidade a partir das propriedades de medidas estatísticas obtidas de grandes populações de elementos. Um sistema que opera de acordo com esses princípios será chamado de perceptron. Nota-se no trabalho de Rosenblatt que o perceptron é uma inteligência de um neurônio, ou seja, de uma só camada. Quando esses perceptrons são combinados com outros, eles passam a formar uma rede neural artificial. Uma rede neural artificial é um complexo conjunto de elementos computacionais organizados e interconectados para se comportarem de forma análoga ao comportamento de uma rede de neurônios de seres inteligentes. Conforme (FURTADO, 2019): Uma Rede Neural Artificial consiste em uma estrutura conexionista, na qual o processamento é distribuído por um grande número de pequenas unidades densamente interligadas. Este paradigma procura entender e emular as propriedades decorrentes do alto grau de paralelismo e conectividade dos sistemas biológicos. Uma RNA deve ser capaz de aprender a partir de seu ambiente, ou seja, a partir das entradas que ela recebe, testar os caminhos de resolução de problemas de forma iterativa, ajustando seus parâmetros de acordo com os pesos definidos, até obter um resultado que seja adequado a uma classe de problema. Quando a rede atinge um nível de maturidade ótimo de acordo com os pesos atribuídos. Este é o momento em que a rede aprende. Aprendizagem profunda Aprendizagem profunda, rede neural profunda, rede profunda ou deep learning, é uma das disciplinas dentro do campo de inteligência artificial, que visa dar condições a máquinas de realizar tarefas complexas do ponto de vista computacional e forma análoga ao que acontece com os seres humanos, como reconhecer a fala, identificar imagens e até fornecer previsões sobre algum assunto ou mesmo articular diálogos e sobretudo de aprender com suas próprias experiências. Algoritmos de AP pressupõem que determinados parâmetros básicos sejam configurados e, a partir das entradas, o computador possa aprender sozinho através de detecção de padrões, em algumas – ou em muitas – camadas de processamento, realizando autoajuste dos parâmetros. Este é um processo iterativo, onde a máquina realiza várias operações com objetivo de aperfeiçoar e atingir um nível ótimo de acerto. Da mesma forma que nas RNAs, no AP temos as mesmas dificuldades com relação a tecnologia de computadores, ainda fortemente baseados na máquina de Von Newman, mas essas dificuldades vêm sendo transpostas com uma evolução gradual e consistente de máquinas de processamento paralelo, sobretudo com o uso de GPUs. De acordo com (CETAX, 2021): O que difere uma Rede Neural Artificial de uma Rede Neural Profunda é a quantidade de neurônios e de conexões, sendo significativamente maior no segundo caso. Uma Rede Neural simples possui até 5 camadas, já uma Rede Profunda possui mais de 5 camadas. Um computador de mesa comum já não tem capacidade de processamento suficiente para treinar redes profundas, dependendo da arquitetura de rede utilizada, o que gera a necessidade de avanço de técnicas de processamento paralelo e em GPU (Graphic Processing Unit, Unidade de Processamento Gráfico). Estes processadores GPU permitem que sejam realizadas mais tarefas simples de forma simultânea, proporcionando um ganho de desempenho no processamento dessas redes que permite que se desenvolvam algoritmos com mais perceptrons e mais camadas e que sejam executados de forma simultânea com mais rapidez e com menor custo de troca de contexto que em processadores com poucas unidades computacionais. Rede neural convolucional Rede neural convolucional é um tipo de algoritmo de inteligência artificial baseado no processo de reconhecimento visual do ser humano, utilizado principalmente no reconhecimento de imagens. Mas alguns outros usos podem ser dados, por exemplo, quando se analisam espectrogramas, que são representações gráficas de um fonograma, ou áudio. Os algoritmos trabalham em um pequeno subconjunto da imagem, reconhecendo elementos em camadas especializadas. Como na visão humana, a entrada corresponde aos olhos, que são compostos de sensores que captam e transmite ao cérebro os impulsos elétricos gerados pela excitação de células nervosas. As camadas que processam podem ser comparadas ao córtex visual, que possui campos que identificam contornos, luminosidade, cores, profundidade, e outros componentes da imagem. Numa rede convolucional existem camadas especializadas em determinados conjuntos de características, ela decompõe um trecho da imagem em certas características, processa e une essas características para entregar a uma rede de perceptrons de múltiplas camadas e, ao final, na saída, apresentar o resultado da análise da rede. Reconhecimento de imagens O reconhecimento de imagens por computador é a aplicação da inteligência artificial que visa reconhecer, classificar e identificar uma imagem a partir da realização de mapeamento de características e comparação com padrões aprendidos por uma IA. Através dessa técnica, é possível criar modelos para serem reconhecidos com precisão em muitos casos acima de 99,9%. Em todos os casos, existe uma dependência de como a IA foi ensinada e qual o conjunto de padrões que ela conseguiu desenvolver para realizar suas classificações. É através dessa técnica que uma IA pode reconhecer elementos numa imagem, como objetos ou pessoas. Em conjunto com esta técnica, além de reconhecer elementos em imagens estáticas, recursos como visão computacional, que é o recurso que permite a máquina enxergar o ambiente por si mesma, permitem que seja empregada a técnica de reconhecimento de imagens em tempo real, possibilitando o uso em veículos autônomos, processos de fabricação, entre outros usos que requeiram a aquisição de imagens e sua classificação de modo rápido. 3 APRESENTAÇÃO DO ESTUDO 3.1 Estudo inicial Inicialmente foram feitas pesquisas sobre o tema e a partir os resultados obtidos chegamos a uma ferramenta chamada Teachable Machine, ou “máquina ensinável” disponibilizada pelo Google no endereço https://teachablemachine.withgoogle.com/. O recurso foi utilizado para compreensão do funcionamento de reconhecimento de imagem, mais especificamente com o objetivo de fazer reconhecimento facial. No primeiro teste seguiu-se as instruções dadas pelo site para a criação das classes, e em seguida foram tiradas algumas fotos através da própria ferramenta para compor um dataset básico de aprendizado, possibilitando o teste de reconhecimento de uso de máscara. No site disponibilizado pelo Google, ficou explícito o que é classe. A classificação de acordo com o uso ou não de máscaras foi feito juntamente com uma terceira hipótese de situações que não correspondem ao objetivo da identificação. 3.1.1 Fluxo de trabalho no Teachable Machine 1 – Criação de registros para a Classe 1 e Classe 2, cada qual com conjuntos que correspondem a situações com máscara e sem máscara. Representação esquemática da ferramenta Teachable Machine. Interface de criação das classes do Teachable Machine. A Equipe do Google sugere que se altere o plano de fundo das imagens que irão compor cada classe para aumentar a diversificação do dataset dentro do Teachable Machine, pois isso contribui na geração do dataset a partir da comparação das imagens fornecidas e do banco de imagem do próprio Google. 2 – A estrutura do Google suporta a ferramenta Teachable Machine, que se utiliza da capacidade computacional da empresa para possibilitar sua utilização. Esse site gera automaticamente as linhas de código para utilização com o Keras e um dataset inicial. Esquema do conteúdo do Google para geração de aprendizado de máquina. 3.2 Estudo com ferramenta local A sequência do estudo foi realizada utilizando os códigos desenvolvidos por Balaji Srinivasan, após a experimentação de outras redes, a qual se mostrou mais adequada a este estudo. O material oferecido pelo desenvolvedor através do repositório GitHub no endereço https://github.com/balajisrinivas/Face-Mask- Detection contém os códigos para o treinamento e execução do modelo e um conjunto de fotografias separadas por categorias de pessoas com e sem máscaras. O dataset fornecido junto com a solução contém 1915 imagens de pessoas com máscaras e 1918 sem máscaras. É perceptível que a maioria das imagens são de pessoas de origem asiática, o que trouxe à equipe a discussão sobre a influência da etnia no sucesso da análise e na precisão do reconhecimento. A discussão se deu baseada no documentário da Netflix, Coded Bias, que investiga o viés racista e machista da IA por trás dos algoritmos de reconhecimento facial. De acordo com o documentário, a pesquisadora do Instituto de Tecnologia de Massachusetts, Joy Buolamwini, apresenta as falhas que descobriu nessa tecnologia na pesquisa que dá tom da produção. Entretanto, a equipe não conseguiu reproduzir o problema relatado, mesmo sendo todos os componentes de etnia diferente daquelas apresentadas no dataset fornecido, não considerando, portanto, este como um fator importante para o desenvolvimento com os estudos em curso. Foi realizado um teste com o dataset fornecido, e se identificou que por vezes ocorriam erros na identificação de utilização correta da máscara. Através da análise do resultado deste primeiro teste, levantou-se a hipótese de que o fato de não apresentar uma taxa de acerto adequada estava ligada à qualidade da escolha das imagens de treino da máquina. Para validar esta suposição, foi sugerido que a quantidade de imagens de treino fosse reduzida, mas que fossem selecionadas as imagens que com certeza absoluta atendiam aos requisitos dos grupos com e sem máscara. Sequência de refinamento do teste Para tanto, decidiu-se pelo uso do algoritmo Pycharm 2021.1 e foi estabelecida uma sequência de testes, em máquinas diferentes, com o objetivo de se apurar os resultados para comparação de tempo de treinamento e precisão no reconhecimento. Máquina Treinamento Com Máscaras Sem Máscaras Total de Imagens Máquina 1 Treinamento 1 1915 1915 3830 Máquina 1 Treinamento 2 1713 1713 3426 Máquina 1 Treinamento 3 638 638 1276 Máquina 1 Treinamento 4 500 500 1000 Máquina 2 Treinamento 5 638 638 1276 Máquina 2 Treinamento 6 1713 1713 3426 Máquina 2 Treinamento 7 6930 6930 13860 Tabela 1: Sequência de teste e seus parâmetros Após esta ação, verificou-se que houve uma melhora na detecção, entretanto ainda havia uma questão a ser desenvolvida, que são os casos dúbios de identificação, onde a pessoa utiliza a máscara de forma incorreta. Para contornar o problema foi selecionado um novo conjunto de imagens que dispunham de uso incorreto e agregado ao grupo sem máscara. Este novo grupo foi adicionado ao conjunto sem máscara, e realizado um novo treinamento para que o modelo passasse a identificar Treinamento 1 Treinamento 2 Treinamento 3 Treinamento 4 Treinamento 5 Treinamento 6 Treinamento 7 de forma mais eficaz todos os casos diferentes dos com máscara. Imagens Com Máscaras 1915 1713 638 500 638 1713 6930 Imagens Sem Máscaras 1915 1713 638 500 638 1713 6930 Total de Imagem 3830 3426 1276 1000 1276 3426 13860 Tempo de Processamento do treinamento 2053 1909 779 609 425 1158 4001 Perda Inicial 0,4262 0,4103 0,6024 0,6145 0,6753 0,4706 0,2014 Perda Final 0,0269 0,0277 0,0298 0,0297 0,2540 0,1472 0,044 Acurácia Inicial 0,8384 0,8482 0,7399 0,6923 0,6923 0,8188 0,9344 Acurácia Final 0,9911 0,993 0,9929 0,9018 0,9018 0,952 0,9858 Tabela 2: Resultados dos treinamentos Os testes dos dataset foram realizados em computadores para entender o treinamento de máquina, e ao mesmo tempo, obter um parâmetro de desempenho. Notou-se que mesmo em configurações mais modestas, o impacto no processo foi pequeno, quando não insignificante, o que contribui para uma implantação em plataformas de porte menor ou até mesmo com a possibilidade de se considerar o uso em SoC, como o Raspberry. 3.3 Testes práticos A partir dos resultados de perdas e acurácia foi feito o teste prático, e ficou evidenciado que o modelo precisa ser treinado com imagens que se adaptem a situação que for instalado. Caso sem máscara na Imagem Caso com máscara na Imagem e uso correto Caso com máscara na Imagem e uso incorreto e o modelo aponta que está de máscara, esse caso serviu para tirarmos a primeira conclusão do trabalho, do treinamento correto. Outras incoscistências foram surgindo e começamos a entender que o modelo testado tinham imagens sem esse detalhe do uso correto da máscara, no exemplo ao lado a máscara cobre a boca mas mostra o queixo. 3.4 Marcos faciais Para melhoria do dataset, a forma matemática de resolver é criar marcos faciais e no exemplo abaixo entre a boa e o nariz sendo criado duas elipses. o que estiver entre uma elipse e outra como marcação de máscara estaria usando a de forma errada. Nos marcos faciais tangenciando o queixo na parte inferior do rosto não deve conter nenhum marco facial porque assim seria também o uso errado da máscara. Para o desenvolvimento desse trabalho não foi criado marcos faciais, contudo esse passo seria determinante para a qualificação do dataset em reconhecimento do uso correto de máscaras. O detector de referência facial pré-treinado dentro da biblioteca dlib é usado para estimar a localização de 68 (x, y)-coordenadas que mapeiam para estruturas faciais no rosto. 3.4.1 Posicionamento da Câmera para criação do dataset Nos exemplos a seguir serviu para chegar na segunda conclusão sobre posicionamento da câmera, no dataset treinado a câmera foi predominantemente posicionada frontalmente a pessoa, mesmo que a pessoa esteja de lado o modelo constata o não uso de máscara. Predominância Vista Frontal e vista lateral Nos exemplos abaixo as máscaras estão posicionadas de forma incorreta abaixo do nariz, e devido o treinamento não ter contemplado essa situação, ora é mostrado o uso de máscara e ora é mostrado que não tem máscara, dai a observação é que dependendo da aplicação, é importante treinar o modelo conforme é solicitado, se a câmera for posicionada na parte superior as pessoas, deveria se ter imagens para que a acurácia do modelo não gere erros. Para melhoria do dataset é importante entender onde será posicionado a câmera, e treinar o modelo nas condições que será aplicado. 3.5 Imagem de Fundo (Background) A partir das pesquisas feitas diversos pesquisadores sugerem uma diversificação na imagem de fundo, e isso depende da aplicação. Nas imagens abaixo mostramos mapeamentos móveis que o background teria uma influência na quantidade de informação vai se coletar. Para câmeras fixas a alteração da imagem de fundo será a quantidade de pessoas, de acordo onde a câmera será aplicada. A Terceira conclusão sobre o modelo testado surgiu depois das pesquisas de artigos que fala sobre o background, que o modelo com a maior quantidade possível de possibilidades maior acurácia o mesmo terá, e da mesma forma da segunda conclusão isso irá variar de acordo com a aplicação. O uso em um local de muita circulação de passagens com a câmera fixa por cima, o background será quando não tiver ninguém circulando e quando estiver lotado. 4 CONSIDERAÇÕES FINAIS O trabalho foi desenvolvido entendendo que serão capturados dados de pessoas com máscaras e pessoas sem máscaras, sabemos que dados são amplamente capturados por todos os lados, mas trabalhos com esses dados precisarão ser melhor classificados qualitativamente, os tratamento de dados é de suma importância para que os treinamentos de dados sejam bem executados. Para esse trabalho foi visto que apesar de toda divulgação na internet é necessário que se faça uma Melhoria do dataset; descrevemos abaixo 3 melhorias sobre os datasets coletados. 1 – Limpeza do dataset de imagens que possam gerar dubiedade. 2 – Posicionamento das câmeras nos modelos devem ser de acordo com o treinamento do modelo e a aplicação. 3 – Conforme o uso é importante ter a maior quantidade de imagens de fundo. 5 ANEXO I Lista de Bibliotecas do Phycharm Nome do Pacote Versão do Teste Nome do Pacote Versão do Teste Keras Keras-Preprocessing Markdown Pillow PyYAML Werkzeug absl-py astunparse cachetools certifi chardet cycler flatbuffers gast google-auth google-auth-oauthlib google-pasta grpcio h5py idna imutils joblib keras-nightly kiwisolver matplotlib numpy oauthlib 2.4.3 1.1.2 3.3.4 8.2.0 5.4.1 2.0.1 0.12.0 1.6.3 4.2.2 2021.5.30 4.0.0 0.10.0 2.0 0.4.0 1.30.1 0.4.4 0.2.0 1.38.0 3.2.1 3.2 0.5.4 1.0.1 2.5.0.dev2021032900 1.3.1 3.4.2 1.20.3 3.1.0 opencv-python opt-einsum pip protobuf pyasn1 pyasn1-modules pyparsing python-dateutil requests requests-oauthlib rsa scikit-learn scipy setuptools six tensorboard tensorboard-data-server tensorboard-plugin-wit tensorflow tensorflow-estimator termcolor threadpoolctl typing-extensions urllib3 wheel wrapt 4.5.2.52 3.3.0 21.1.2 3.17.1 0.4.8 0.2.8 2.4.7 2.8.1 2.25.1 1.3.0 4.7.2 0.24.2 1.6.3 57.0.0 1.16.0 2.5.0 0.6.1 1.8.0 2.5.0 2.5.0 1.1.0 2.1.0 3.10.0.0 1.26.5 0.36.2 1.12.1 6 ANEXO II Valores Teste 1 Época 1/20 2/20 3/20 4/20 5/20 6/20 7/20 8/20 9/20 10/20 11/20 12/20 13/20 14/20 15/20 16/20 17/20 18/20 19/20 20/20 Tempo (S) 98 98 102 100 101 103 111 113 106 104 103 108 100 99 99 98 101 104 101 104 Perda 0,4262 0,1607 0,1078 0,0845 0,0726 0,0574 0,0532 0,0474 0,0490 0,0405 0,0400 0,0354 0,0403 0,0370 0,0338 0,0284 0,0289 0,0298 0,0279 0,0269 Acurácia 0,8384 0,9614 0,9673 0,9766 0,9776 0,9868 0,9832 0,9848 0,9848 0,9888 0,9871 0,9888 0,9878 0,9888 0,9888 0,9931 0,9914 0,9921 0,9904 0,9911 Valor da Perda 0,1712 0,0874 0,0643 0,0553 0,0443 0,0443 0,0421 0,0386 0,0399 0,0371 0,0380 0,0421 0,0374 0,0353 0,0323 0,0315 0,0306 0,0299 0,0298 0,0272 Valor da Acurácia 0,9804 0,9856 0,9869 0,9843 0,9883 0,9869 0,9856 0,9883 0,9869 0,9869 0,9869 0,9856 0,9869 0,9856 0,9896 0,9883 0,9883 0,9896 0,9896 0,9909 Valores Teste 2 Época 1/20 2/20 3/20 4/20 5/20 6/20 7/20 8/20 9/20 10/20 11/20 12/20 13/20 14/20 15/20 16/20 17/20 18/20 19/20 20/20 Tempo (S) 92 97 93 94 93 93 95 95 96 96 95 96 96 95 97 99 99 95 96 97 Perda 0,4103 0,1467 0,0948 0,0671 0,0609 0,0538 0,0520 0,0466 0,0463 0,0366 0,0390 0,0370 0,0344 0,0404 0,0342 0,0304 0,0289 0,0310 0,0218 0,0277 Acurácia 0,8482 0,9634 0,9801 0,9867 0,9849 0,9863 0,9867 0,9878 0,9863 0,9908 0,9889 0,9904 0,9908 0,9874 0,9908 0,9922 0,9937 0,9922 0,9948 0,9930 Valor da Perda 0,1759 0,1036 0,0772 0,0686 0,0610 0,0573 0,0566 0,0541 0,0503 0,0484 0,0573 0,0464 0,0438 0,0426 0,0438 0,0438 0,0409 0,0409 0,0405 0,0398 Valor da Acurácia 0,9621 0,9723 0,9810 0,9825 0,9825 0,9840 0,9810 0,9854 0,9854 0,9869 0,9796 0,9883 0,9898 0,9883 0,9898 0,9898 0,9898 0,9898 0,9883 0,9898 Valores Teste 3 Época 1/20 2/20 3/20 4/20 5/20 6/20 7/20 8/20 9/20 10/20 11/20 12/20 13/20 14/20 15/20 16/20 17/20 18/20 19/20 20/20 Tempo (S) 40 35 39 39 44 40 48 39 41 41 41 41 39 36 36 36 36 36 36 36 Perda 0,6024 0,2937 0,1823 0,1302 0,1020 0,0797 0,0714 0,0661 0,0477 0,0532 0,0500 0,0363 0,0491 0,0402 0,0373 0,0369 0,0280 0,0379 0,0322 0,0298 Acurácia 0,7399 0,9453 0,9646 0,9737 0,9808 0,9848 0,9818 0,9828 0,9919 0,9858 0,9909 0,9919 0,9868 0,9909 0,9889 0,9868 0,9960 0,9899 0,9909 0,9929 Valor da Perda 0,3324 0,1843 0,1232 0,0927 0,0761 0,0641 0,0560 0,0488 0,0451 0,0455 0,0391 0,0399 0,0340 0,0367 0,0303 0,0301 0,0292 0,0255 0,0250 0,0242 Valor da Acurácia 0,9648 0,9844 0,9883 0,9883 0,9883 0,9922 0,9883 0,9922 0,9922 0,9922 0,9922 0,9922 0,9922 0,9922 0,9961 0,9922 0,9922 0,9961 0,9961 0,9961 Valores Teste 4 Época 1/20 2/20 3/20 4/20 5/20 6/20 7/20 8/20 9/20 10/20 11/20 12/20 13/20 14/20 15/20 16/20 17/20 18/20 19/20 20/20 Tempo (S) 33 27 27 27 27 27 31 30 30 32 33 33 32 34 33 31 31 31 30 30 Perda 0,6145 0,2902 0,1955 0,1474 0,1214 0,0894 0,0751 0,0616 0,0620 0,0501 0,0420 0,0407 0,0334 0,0339 0,0365 0,0365 0,0274 0,0404 0,0281 0,0297 Acurácia 0,7163 0,9375 0,965 0,9737 0,9775 0,9862 0,9837 0,9925 0,9900 0,9887 0,9912 0,9925 0,9975 0,9962 0,9887 0,9875 0,9962 0,9887 0,9925 0,9912 Valor da Perda 0,3825 0,2214 0,1605 0,1273 0,1076 0,0964 0,0811 0,0789 0,0663 0,0663 0,0675 0,0637 0,0548 0,0606 0,0581 0,0616 0,0521 0,0481 0,0564 0,0536 Valor da Acurácia 0,9500 0,9700 0,9800 0,9800 0,9800 0,9800 0,9800 0,9800 0,9800 0,9800 0,9800 0,9800 0,9800 0,9800 0,9800 0,9800 0,9800 0,9850 0,9800 0,9800 Valores Teste 5 Época 1/20 2/20 3/20 4/20 5/20 6/20 7/20 8/20 9/20 10/20 11/20 12/20 13/20 14/20 15/20 16/20 17/20 18/20 19/20 20/20 Tempo (S) 26 23 23 24 22 22 23 21 22 20 20 20 20 20 19 21 21 20 19 19 Perda 0,6753 0,4966 0,3929 0,3747 0,3231 0,3083 0,2962 0,3144 0,2913 0,2920 0,2831 0,2653 0,2741 0,2690 0,2606 0,2561 0,2532 0,2582 0,2421 0,2540 Acurácia 0,6923 0,8168 0,8563 0,8502 0,8897 0,8917 0,8937 0,8816 0,8968 0,8846 0,8927 0,9079 0,8978 0,8978 0,8947 0,8988 0,9079 0,9069 0,9130 0,9018 Valor da Perda 0,5274 0,4380 0,3967 0,3718 0,3694 0,3548 0,3514 0,3483 0,3432 0,3357 0,3339 0,3243 0,3310 0,3162 0,3243 0,3120 0,3185 0,3158 0,3186 0,3135 Valor da Acurácia 0,8281 0,8398 0,8438 0,8516 0,8594 0,8555 0,8594 0,8633 0,8594 0,8633 0,8633 0,8711 0,8711 0,8711 0,8672 0,8750 0,8711 0,8711 0,8711 0,8750 Valores Teste 6 Época 1/20 2/20 3/20 4/20 5/20 6/20 7/20 8/20 9/20 10/20 11/20 12/20 13/20 14/20 15/20 16/20 17/20 18/20 19/20 20/20 Tempo (S) 57 53 53 54 56 53 54 57 57 55 57 56 54 65 62 63 65 63 61 63 Perda 0,4706 0,2629 0,2358 0,2181 0,2054 0,1935 0,1843 0,1832 0,1710 0,1675 0,1595 0,1613 0,1644 0,1513 0,1520 0,1450 0,1513 0,1438 0,1338 0,1472 Acurácia 0,8188 0,9203 0,9273 0,9254 0,9321 0,9347 0,9384 0,9347 0,9432 0,9406 0,9420 0,9439 0,9413 0,9454 0,9483 0,9502 0,9435 0,9465 0,9513 0,9520 Valor da Perda 0,2946 0,2385 0,2226 0,2112 0,2065 0,2057 0,1976 0,1946 0,1935 0,1966 0,1928 0,1856 0,1834 0,1825 0,1827 0,1822 0,1772 0,1779 0,1814 0,1826 Valor da Acurácia 0,9227 0,9198 0,9257 0,9271 0,9359 0,9388 0,9300 0,9286 0,9271 0,9373 0,9329 0,9315 0,9315 0,9315 0,9300 0,9344 0,9300 0,9344 0,9300 0,9359 Valores Teste 7 Época 1/20 2/20 3/20 4/20 5/20 6/20 7/20 8/20 9/20 10/20 11/20 12/20 13/20 14/20 15/20 16/20 17/20 18/20 19/20 20/20 Tempo (S) 286 230 197 196 288 191 187 187 193 184 181 181 185 178 179 179 193 190 200 196 Perda 0,2014 0,0977 0,0810 0,0716 0,0720 0,0674 0,0599 0,0611 0,0625 0,0579 0,0505 0,0533 0,0504 0,0524 0,0471 0,0487 0,0465 0,0451 0,0465 0,0440 Acurácia 0,9344 0,9754 0,9793 0,9802 0,9805 0,9826 0,9829 0,9819 0,9836 0,9834 0,9848 0,9845 0,9851 0,9839 0,9854 0,9854 0,9854 0,9857 0,9860 0,9858 Valor da Perda 0,0897 Valor da Acurácia 0,9769 7 REFERÊNCIAS BIBLIOGRÁFICAS CETAX. Deep Learning: O que é, conceitos e definições. https://www.cetax.com.br/blog/o-que-e-deep-learning/. Acessado em 10 jun. 2021. Disponível em: COPIN, Ben. Inteligência Artificial. 1. ed. Rio de Janeiro: LTC, 2013. FURTADO, Maria I. V. Redes neurais artificiais: uma abordagem para sala de aula. 1. ed. Ponta Grossa: Atena, 2019. GIL, Antônio Carlos. Como elaborar projetos de pesquisa. 4. ed. São Paulo: Atlas, 2002. KANT, Immanuel. Kritik der reinen Vernunft. Disponível em http://www.dominiopublico.gov.br/pesquisa/DetalheObraForm.do?select_action=&co_obra=36450. Acessado em: 19 abr. 2021. LOPES, Isaia L.; Santos, Flávia A. O.; Pinheiro, Carlos A. M. Inteligência Artificial. 1. ed. Rio de Janeiro: Elsevier, 2014. OMS. COVID-19 Weekly Epidemiological Update. Disponível https://apps.who.int/iris/bitstream/handle/10665/341525/CoV-weekly-sitrep25May21-eng.pdf. Acessado em: 10 jun. 2021. em: ROSA, João L. Garcia. Fundamentos da Inteligência Artificial. 1. ed. Rio de Janeiro: LTC, 2011. ROSENBLATT, Frank. THE PERCEPTRON: A PERCEIVING AND RECOGNITION AUTOMATON. Disponível em: https://blogs.umass.edu/brain-wars/files/2016/03/rosenblatt-1957.pdf. Acessado em: 10 jun. 2021. 8 BIBLIOGRAFIA DE APOIO PYIMAGESEARCH. Facial landmarks with dlib, OpenCV and Python. Disponível em: https://www.pyimagesearch.com/2017/04/03/facial-landmarks-dlib-opencv-python/. Acessado em 9 jun. 2021. SRINIVASAN, Balaji. Face Mask Detection using Python, Keras, OpenCV and MobileNet | Detect masks real-time video streams. Disponível em: https://www.youtube.com/watch?v=Ax6P93r32KU MICHAELIS. Dicionário Brasileiro da Língua Portuguesa. Disponível em: https://michaelis.uol.com.br/busca?r=0&f=0&t=0&palavra=intelig%C3%AAncia. Acessado em 07 jun. 2021