• Nenhum resultado encontrado

A Inteligência Artificial no Ambiente Acadêmico

N/A
N/A
Protected

Academic year: 2023

Share "A Inteligência Artificial no Ambiente Acadêmico"

Copied!
62
0
0

Texto

Inteligência artificial no ambiente acadêmico: Utilizando reconhecimento facial para monitorar a frequência dos alunos. O presente estudo visa facilitar o acesso dos estudantes universitários a determinadas áreas do campus e ainda substituir a frequência presencial pela implementação de um sistema de reconhecimento facial.

OBJETIVOS

GERAL

ESPECIFICOS

Inteligência Natural

Nele podemos ver a grande diferença entre as teorias e a capacidade de processamento da nossa mente. A capacidade de resolver problemas permite que uma pessoa aborde uma situação em que um objetivo deve ser alcançado e encontre uma forma adequada de atingir esse objetivo.

Inteligência Artificial

Podemos ver com mais clareza hoje o progresso da inteligência artificial, o melhor exemplo disso é o robô criado em 2016 pelo americano David Hanson, chamado Sophia. Alguns exemplos de uso de inteligência artificial que se destacam são: reconhecimento facial para detecção de pessoas perdidas (BASILIO, 2019), rastreamento de movimentos migratórios de aves (CECCON, 2019), redes neurais utilizando eletrocardiograma para prever problemas de saúde (CECCON, 2019) , entre muitos outros.

Reconhecimento Facial

Eigenfaces

O reconhecimento facial utilizando códigos de computador pode ser uma tarefa difícil quando a ação é observada da perspectiva da máquina. Kirby (1987) trata do reconhecimento facial através das melhores coordenadas entre eles, chamadas de autoimagens. Em geral, descobriram que o rosto pode ser dividido em várias escalas de cinza.

Nossa abordagem trata o reconhecimento facial como um problema de reconhecimento bidimensional, aproveitando o fato de que os rostos são tipicamente verticais e podem, portanto, ser descritos por um pequeno conjunto de imagens características 2D. O espaço de faces é definido pelas "faces próprias", que são os vetores próprios do conjunto de faces; não correspondem necessariamente a características isoladas como olhos, ouvidos e nariz. E a ideia principal na formulação de autofaces é capturar diversas imagens, armazená-las em um banco de dados e capturar e comparar faces conhecidas usando as características obtidas nas imagens base.

Quando uma nova imagem é encontrada, um conjunto de pesos é calculado com base na imagem de entrada. Finalmente, como opção, se uma imagem desconhecida for vista mais de uma vez, seus pesos de recurso padrão serão calculados e adicionados às faces conhecidas.

OpenCV

Haarcascades

Para entender melhor como funciona o processo de reconhecimento de imagem, vamos começar com os arquivos principais de todo o projeto: Haarcascades. No entanto, esses arquivos são muito complexos e difíceis de encontrar gratuitamente – muitas empresas vendem esses arquivos – mas ainda existem alguns que o OpenCV distribui gratuitamente. Para criar esses arquivos é necessário comparar diversas imagens, que podem ser chamadas de imagens negativas e positivas.

Os negativos referem-se a tudo que não é o traço estudado; como no exemplo se trata de uma Haircascade com olho, suas imagens negativas serão imagens sem olhos. Para isso são utilizados computadores com alto poder de processamento, caso contrário levariam meses para processar as imagens. Existem alguns passos para criar um Haarcascade: ter um servidor, baixar as fontes OpenCV, ter as imagens negativas e positivas e criar arquivos de texto com os caminhos das imagens.

As imagens podem ser obtidas em qualquer lugar, desde que se refiram ao objeto ou parte do corpo em estudo. A etapa final é criar dois arquivos de texto com os caminhos das imagens negativas e positivas, neste caso um arquivo para cada.

Python

Paradigmas de Programação

Um dos paradigmas mais antigos desenvolvidos, a programação imperativa, é a base da arquitetura de computadores atual, além de oferecer. De forma simplificada, este paradigma está diretamente relacionado à atribuição de tipos de dados e à alocação de memória. É amplamente utilizado em diversas linguagens de programação, sendo C um dos primeiros a implementar este paradigma.

Desde que surgiram do modelo von Neumann-Eckert, todas as linguagens imperativas incluem a atribuição como elemento central. As expressões são interpretadas pegando os valores reais das variáveis ​​​​nomeadas de seus respectivos locais na memória e calculando um resultado desses valores. Este paradigma é a base para a criação de loops de iteração, estruturas condicionais e praticamente qualquer estrutura relacionada a algoritmos.

Ao contrário da programação imperativa, não existe conceito de estado e, portanto, não há necessidade de uma instrução de atribuição. Assim, o efeito loop é conseguido através da repetição, pois não há como aumentar ou diminuir o valor de uma variável de estado porque não existem variáveis.

Erros

Foi notória a dificuldade que as linguagens imperativas trouxeram para facilitar o desenvolvimento deste tipo de abordagem. Doravante, a reutilização e facilidade de compreensão do código, e consequentemente na sua produção, é altamente desenvolvida e muito voltada para o futuro. Porém, em Python não há necessidade de fazer essa declaração, pois a própria linguagem reconhece o tipo com base no valor selecionado, como vemos na Figura 9.

Assim, uma variável que recebe um tipo inteiro não pode receber nenhum outro tipo. A Figura 10 revela um erro nesse sentido, onde variáveis ​​inteiras recebem um valor String, que retorna a exceção mostrada na Figura 11. Como esta linguagem é fortemente tipada e dinâmica, temos uma grande vantagem em termos de reutilização de código e também facilidade de declaração variáveis.

Python pode exibir dois tipos de erros ao usuário: erros de sintaxe, como já vimos, e exceções. Esses tipos de erros parecem fatais, mas não são porque a própria linguagem tem uma maneira de lidar com esses tipos de problemas, chamada tratamento de exceções.

Estudo de Caso

Configuração do Ambiente de Estudo

Primeiro, instalamos o Python 3.7.4 do site de origem, https://www.python.org/downloads/, conforme mostrado na Figura 12, e imediatamente após o download continuamos com o assistente até que o processo fosse concluído. Dependendo do ambiente em que será instalada (como é o caso do Microsoft Windows 7), esta biblioteca pode representar desafios para quem pretende utilizá-la. Portanto, basta procurar o arquivo específico do projeto atual, neste caso OpenCV, e poderemos encontrar diversas versões dele.

Uma observação importante é que o usuário baixe as versões contidas no pacote de contribuição, caso o objetivo seja estudar reconhecimento de faces e objetos. Pois é somente nessas versões que se encontram as configurações necessárias para a utilização do OpenCV para esse fim. A próxima etapa na configuração do ambiente é instalar o IDE utilizado para implementar este projeto.

Para isso, utilizamos o PyCharm Community Edition, ferramenta de software distribuída pela Jetbrains que nos proporcionou um ambiente satisfatório para a construção do projeto. Por fim, escrevemos nosso primeiro código utilizando OpenCV como biblioteca, iniciando assim nossos primeiros passos no mundo do reconhecimento facial.

Reconhecimento Facial utilizando o OpenCV

  • Protótipo de Reconhecimento Facial de Discentes
  • Algoritmo de Captura de Imagens
  • Treinamento das Imagens
  • Reconhecimento Facial

Começamos importando a biblioteca OpenCV, que é o passo mais importante para a codificação do reconhecimento facial; não apenas rostos, mas objetos e outros tipos de imagens pessoais, mas esse não é o foco aqui. Logo no final das linhas de código da Figura 17, temos mais dois métodos responsáveis ​​por fechar esse exemplo básico de reconhecimento facial: release e destroyAllWindows. O objetivo é fechar toda e qualquer janela onde foi aberta após a execução do algoritmo. Agora, caso o aluno ainda dentro do limite acesse o ambiente, a câmera local fará o reconhecimento facial e identificará se o aluno está cadastrado ou não.

Construímos três arquivos python diferentes: um para captura (abordaremos esta aula aqui), outro para treinamento de imagem e um para reconhecimento facial. Enfim, resumindo, a câmera do notebook utilizado neste projeto liga e inicia o reconhecimento facial. Concluída a fase de captura de imagens, passaremos para outro processo muito importante no reconhecimento facial e a parte que requer mais processamento relacionado à máquina, o treinamento das imagens capturadas.

Por ser o primeiro algoritmo projetado para reconhecimento de faces e objetos, o eigenfaces pode ser considerado o “mais simples” de todos. Seu percentual de sucesso no reconhecimento facial é o mais alto, devido ao fato do nível de proximidade entre as faces do vetor ser o mais distante. Ao final do algoritmo chamamos o método responsável por treinar as imagens processadas ao longo do processo (chamado train) e como parâmetros passamos as duas listas criadas anteriormente.

A diferença aqui é que teremos reconhecimento facial completo com o número de proximidade dos autovetores e o nome dos respectivos indivíduos que se voluntariaram para o projeto.

Metodologia

Análise dos Resultados

Essas aulas consistem basicamente na criação de arquivos com os três algoritmos disponíveis e no teste propriamente dito, que envolve alterar os parâmetros de acordo com o nível de luminância, a distância dos próprios rostos e outros fatores. Na linha 8, vemos o reconhecimento facial realizado com histogramas de padrões binários locais, onde notamos a diferença entre os parâmetros, a saber: raio, vizinhos, gri_x, grid_y e limite. Os parâmetros iniciais apresentados na Figura 31 foram escolhidos aleatoriamente e como ponto de partida, pois não existe um padrão pré-determinado para a realização dos testes ou alteração desses parâmetros.

No restante do algoritmo, podemos perceber uma semelhança com a classe de treinamento explorada anteriormente mostrada na Figura 24. Ao final da execução, o algoritmo acessará a pasta de imagens base de Yale e realizará o treinamento com três algoritmos e criará três arquivos finais com informações de todas as imagens treinadas. Onde este algoritmo reconhece outro lote de imagens - provenientes do mesmo banco de dados - com os mesmos indivíduos, mas com expressões faciais diferentes.

Desta forma criamos arquivos de treinamento com novos parâmetros e a classe de teste mostrará os novos resultados. Ao final dos testes, escolhemos o algoritmo de reconhecimento facial Fisherfaces com parâmetros: número de componentes em 10 e limite em 3.000.

Conclusão

A gentileza é a chave para lidar com as pessoas, diz o criador do robô com cidadania: As criações recentes apreciam uma abordagem amigável para acostumar as pessoas às máquinas. Disponível em: . Aplicativo da Microsoft usa IA para rastrear pessoas desaparecidas: Ferramenta, lançada em colaboração com a ONG paulista Mães da Sé, usa reconhecimento facial para identificar pessoas em situação de suspeita de abandono.

Disponível em: . Disponível em:

Referências

Documentos relacionados