• Nenhum resultado encontrado

Identificação de quedas de pessoas via aprendizagem de máquina

N/A
N/A
Protected

Academic year: 2021

Share "Identificação de quedas de pessoas via aprendizagem de máquina"

Copied!
68
0
0

Texto

(1)

CÂMPUS CURITIBA

ENGENHARIA DE CONTROLE E AUTOMAÇÃO

DIEGO GUEDES VIEGAS

RODOLFO VITURINO NOGUEIRA DA SILVA

IDENTIFICAÇÃO DE QUEDAS DE PESSOAS VIA APRENDIZAGEM

DE MÁQUINA

TRABALHO DE CONCLUSÃO DE CURSO

CURITIBA 2019

(2)

RODOLFO VITURINO NOGUEIRA DA SILVA

IDENTIFICAÇÃO DE QUEDAS DE PESSOAS VIA APRENDIZAGEM

DE MÁQUINA

Trabalho de Conclusão do Curso de Graduação em Engenharia de Controle e Automação apresentado à disciplina de Trabalho de conclusão de curso 2, do Departamento Acadêmico de Eletrotécnica (DAELT) da Universidade Tecnológica Federal do Paraná (UTFPR) como requisito para obtenção do título de Engenheiro de Controle e Automação.

Orientador: Prof. Glauber Gomes de Oliveira Brante

CURITIBA 2019

(3)

A folha de aprovação assinada encontra-se na Coordenação do Curso de Engenharia de Controle e Automação IDENTIFICAÇÃO DE QUEDAS DE PESSOAS VIA APRENDIZAGEM DE MÁQUINA Este Trabalho de Conclusão de Curso de Graduação foi julgado e aprovado como requisito parcial para a obtenção do Título de Engenheiro de Controle e Automação, do curso de Engenharia de Controle e Automaçãodo Departamento Acadêmico de Eletrotécnica (DAELT) da Universidade Tecnológica Federal do Paraná (UTFPR).

Curitiba, 26 de junho de 2019.

____________________________________

Paulo Sergio Walenia

Coordenador de Curso Engenharia de Controle e Automação

____________________________________ Prof. Marcelo de Oliveira Rosa ,Dr.

Responsável pelos Trabalhos de Conclusão de Curso de Engenharia de Controle e Automação do DAELT

ORIENTAÇÃO BANCA EXAMINADORA

______________________________________ Prof. Glauber Gomes de Oliveira Brante, Dr. Universidade Tecnológica Federal do Paraná Orientador

_____________________________________ Prof. Glauber Gomes de Oliveira Brante, Dr. Universidade Tecnológica Federal do Paraná

_____________________________________ Profa. Mariana Antonia Aguiar Furucho, Dra. Universidade Tecnológica Federal do Paraná

_____________________________________ Prof. Alexandre Tuoto Mello, Dr.

(4)
(5)

Ao professor Glauber Gomes de Oliveira Brante, pela correção e orientação, além seu grande desprendimento em ajudar-nos.

Aos professores Alexandre José Tuoto Silveira Mello e Mariana Antônia Aguiar Furucho, por não apenas participarem da banca de avaliação, mas contribuírem com melhorias na escrita e desenvolvimento deste trabalho.

Aos bons amigos e familiares que muito contribuíram, cedendo gentilmente grande parte das imagens utilizadas neste trabalho e que, sem elas, seria impossível concluí-lo.

(6)
(7)

RESUMO

VIEGAS, Diego G.; DA SILVA, Rodolfo V. N.. IDENTIFICAÇÃO DE QUEDAS DE

PESSOAS VIA APRENDIZAGEM DE MÁQUINA. 2019. 67 f. Trabalho de Conclusão de

Curso (Graduação – Curso de Engenharia de Controle e Automação). Universidade Tecnológica Federal do Paraná. Curitiba, 2019.

O objetivo principal no desenvolvimento deste trabalho foi treinar uma rede neural artificial convolucional, no ramo das aprendizagens profundas, com o propósito de identificar possíveis pessoas caídas no chão, especialmente as idosas ou que possuam algum tipo de debilitação. Este projeto foi elaborado com enfoque na verificação destas através de imagens, porém, tal verificação apenas ocorre após um sensor de ruído detectar um determinado nível de potência sonora. Para a criação efetiva do programa, empregou-se a linguagem de programação Python bem como o auxílio das bibliotecas Tensorflow, da empresa Google, e OpenCV. Para a criação do banco de dados, foram utilizadas imagens disponíveis gratuitamente na internet com uso livre, além de imagens próprias obtidas por câmeras convencionais. O sistema executa ativações em cascata, onde a primeira etapa é a detecção sonora, seguido por uma detecção da existência de um humano, realizado pela biblioteca OpenCV e, em caso afirmativo para a existência de uma pessoa no ambiente, a predição entre queda ou não queda, sendo todos estes processos realizados por meio de uma Raspberry integrada com uma câmera e um sensor de ruído.

Palavras-chave: Aprendizagem profunda. Monitoramento de quedas. OpenCV . Rede neural

(8)

ABSTRACT

VIEGAS, Diego G.; DA SILVA, Rodolfo V. N.. FALL IDENTIFICATION THROUGH

MACHINE LEARNING. 2019. 67 f. Trabalho de Conclusão de Curso (Graduação – Curso

de Engenharia de Controle e Automação). Universidade Tecnológica Federal do Paraná. Curitiba, 2019.

The main objective in the development of this work was to train an artificial convolutional neural network, in the field of deep learning, with the purpose of identifying possible people falling on the floor, especially the elderly or those who have some kind of debilitation. This project was elaborated focusing on the verification of these through images, however, such verification only occurs after a noise sensor detects a certain level of sound power. For the effective creation of this project, the programming language Python was used, as well as the aid of the Tensorflow library, from Google company and OpenCV. Images that were freely available on the internet and free of charge were used for the creation of the database, as well as own images obtained by conventional cameras. The system works with activations in cascade, where the first step is sound detection, followed by a determination of the existence of a human performed by the library OpenCV and, if so for the existence of a person in the environment, the prediction between fall or not fall, with all the processes being made by a Raspberry integrated with a camera and a noise sensor.

Keywords: Artificial neural network. Convolutional neural network. Deep learning. Fall

(9)

FIGURA 1 Fluxograma do trabalho. . . 19 –

FIGURA 2 Aprendizado de máquina no formato caixa preta. . . 21 –

FIGURA 3 Comparação do desempenho geral dos métodos tradicionais vs. métodos do deep learning. . . . 23 –

FIGURA 4 Modelo generalizado do neurônio de McCullogh-Pitts. . . 25 –

FIGURA 5 Alteração do potencial de ativação produzida pela presença do bias. . . . . 25 –

FIGURA 6 Função degrau unitário. . . 26 –

FIGURA 7 Uma função linear por partes combinando uma rampa com um degrau unitário. . . 26 –

FIGURA 8 Função sigmoide ϕ(z) = 1/(1 + exp(-z)). . . 27 –

FIGURA 9 Redes neurais: (a) rede neural com duas camadas de neurônios, (b) rede neural com uma camada de entrada, uma camada escondida e uma camada de saída. . . 29 –

FIGURA 10 Superfície de erro quadrática para um neurônio linear. . . 31 –

FIGURA 11 Visualização da superfície de erro como um conjunto de contornos. . . 31 –

FIGURA 12 A dificuldade de convergência quando a taxa de aprendizado η é muito grande. . . 32 –

FIGURA 13 Comparação entre alguns métodos de passo de aprendizagem adaptativo vs. AdaM. . . 38 –

FIGURA 14 Camadas de uma Rede Neural Convolucional. . . 39 –

FIGURA 15 Modelo esquemático da arquitetura Inception V3. . . . 42 –

FIGURA 16 Substituição de um filtro convolucional 5x5 por uma mini rede. . . 42 –

FIGURA 17 Processo esquemático do projeto. . . 45 –

FIGURA 18 Fluxograma detalhado do trabalho. . . 46 –

FIGURA 19 (a) e (b): amostras da composição do dataset da classe queda. (c) e (d): amostras da composição do dataset da classe não queda. . . 47

FIGURA 20 Comportamento da acurácia do treinamento e da validação ao avançar das épocas. Treinamento com 500 épocas. . . 49 –

FIGURA 21 Comportamento da função de erro cross-entropy do treinamento e da validação ao avançar das épocas. Treinamento com 500 épocas. . . 50 –

FIGURA 22 Figura 20 com ajuste de escala para melhor visualização de overfitting. . . 50

FIGURA 23 Figura 21 com ajuste de escala para melhor visualização de overfitting. . . 51

FIGURA 24 Comportamento da acurácia do treinamento e da validação ao avançar das épocas. Treinamento com 150 épocas. . . 51 –

FIGURA 25 Comportamento da função de erro cross-entropy do treinamento e da validação ao avançar das épocas. Treinamento com 150 épocas. . . 52 –

(10)

FIGURA 28 O ambiente 1 é representado pela letra (a), enquanto o ambiente 2 é representado pela letra (b) . . . 55 –

FIGURA 29 Imagens classificadas erroneamente. . . 57 –

FIGURA 30 Ambiente com muita poluição visual. Exemplo 1. . . 58 –

FIGURA 31 Ambiente com muita poluição visual. Exemplo 2. . . 58 –

FIGURA 32 Ambiente de pisos do chão iguais aos da parede. Banheiro. . . 59 –

(11)

TABELA 1 Taxa de acerto preditivo da CNN desenvolvida. . . 55 –

TABELA 2 Quantidade de erros e imagens processadas por ambiente. Imagens comprimidas. . . 56 –

(12)

AdaGrad Adaptive Gradient(Gradiente Adaptativo)

AdaM Adaptive Momentum(Momentum Adaptativo)

ARM Advanced RISC Machine

CNN Convolutional Neural Network(Rede Neural Convolucional)

dB Decibel

GB Gigabyte

GPU Graphics Processing Unit(Unidade de Processamento Gráfico)

Hz Hertz

IP Internet Protocol(Protocolo de Internet)

LMS Least Mean Square(Mínimo Erro Médio Quadrático)

RAM Random Access Memory(Memória de Acesso Aleatório)

ReLU Rectified Linear Unit(Unidade Linear Retificada)

RFID Radio-Frequency IDentification(Identificação por radiofrequência)

RMSProp Root Mean Square Propagation(Propagação da Raiz Média Quadrada)

SGD Stochastic Gradient Descent(Descida do Gradiente Estocástico)

(13)

1 INTRODUÇÃO . . . 13 1.1 TEMA . . . 13 1.1.1 Delimitação do Tema . . . 14 1.2 PROBLEMAS E PREMISSAS . . . 15 1.3 OBJETIVOS . . . 16 1.3.1 Objetivo Geral . . . 16 1.3.2 Objetivos Específicos . . . 16 1.4 JUSTIFICATIVA . . . 17 1.5 PROCEDIMENTOS METODOLÓGICOS . . . 18 1.6 ESTRUTURA DO TRABALHO . . . 20 2 REVISÃO BIBLIOGRÁFICA . . . . 21 2.1 APRENDIZADO DE MÁQUINA . . . 21 2.1.1 Aprendizagem Profunda . . . 22 2.2 REDES NEURAIS . . . 23

2.2.1 Neurônio Biológico vs. Artificial . . . 23

2.2.2 Funcões de Ativação Não Lineares . . . 27

2.3 REDES NEURAIS MULTICAMADAS . . . 28

2.3.1 Regra Delta - Descida do Gradiente . . . 30

2.3.2 Regra Delta Generalizada . . . 33

2.3.3 Descida do Gradiente Estocástico (SGD) . . . 34

2.3.4 Momento . . . 34

2.3.5 Passo de Aprendizagem Adaptativo . . . 35

2.3.6 Gradiente Adaptativo (AdaGrad) . . . 36

2.3.7 Média Móvel de Gradientes Exponencialmente Ponderados (RMSProp) . . . 36

2.3.8 Momentum Adaptativo (AdaM) . . . 37

2.4 REDE NEURAL CONVOLUCIONAL . . . 38

2.5 REGULARIZAÇÃO . . . 40

2.6 ARQUITETURAS . . . 41

3 SOLUÇÃO PROPOSTA E TREINAMENTO DA REDE . . . 44

3.1 IDENTIFICAÇÃO DE QUEDAS . . . 44

3.2 AQUISIÇÃO DE DADOS . . . 46

3.3 TREINAMENTO DA REDE NEURAL . . . 47

4 RESULTADOS . . . 49

4.1 LIMITAÇÕES DA REDE . . . 58

5 CONCLUSÕES . . . 61

(14)

1 INTRODUÇÃO

1.1 TEMA

Algoritmos avançados e novas tecnologias em aprendizagem de máquina vêm se mostrando um fator de sucesso em diversos setores. A aprendizagem de máquina é utilizada em quase todas as áreas da vida e do trabalho, sendo que algumas das áreas mais famosas são visão computacional, reconhecimento de falas, tradução de línguas e cuidados com a saúde (MCCLURE, 2017).

Tais algoritmos apresentam maior robustez e um ganho em percentagem na taxa de acerto e precisão significativos se comparados aos métodos tradicionais de processamento e classificação. Segundo Khan et al. (2018), os métodos da aprendizagem profunda resultaram em melhoras significativas do desempenho em aplicações de visão computacional, além de diversos frameworks de software terem sido desenvolvidos para facilitar tais implementações, como por exemplo, o Azure Machine Learning Studio, Google Cloud ML Engine, Tensorflow, Torch, Scikit-Learn, entre outros.

Para Kim (2017), a aprendizagem de máquina é uma técnica que descobre o modelo matemático através de dados, sendo tais dados tratados literalmente como uma informação, como documentos, áudios ou imagens. O sucesso deste tipo de inteligência artificial está intrinsicamente ligado a criações de modelos de aprendizagem mais sofisticados, além da disponibilidade de um conjunto de dados cada vez maior, bem como o desenvolvimento de plataformas de software que permitam fácil uso de recursos computacionais para manusear esta grande quantidade de dados.

O presente trabalho desenvolve uma aplicação de aprendizagem de máquina com o intuito de detectar uma possível queda de um indivíduo. Tal identificação possui importância para o cuidado não somente de idosos, como também pessoas debilitadas, ou que, através de doenças, sejam propensas a quedas. É também importante o monitoramento dentro de hospitais. Queda de idosos é uma ocorrência relativamente comum e que pode resultar em consequências dramáticas para a saúde.

A média de idade da população mundial está aumentando. De acordo com uma reportagem do ano de 2015 das Nações Unidas, é esperado que entre os anos de 2015 a 2030 o número de pessoas com mais de 60 anos aumente em 56% (QUADROS et al., 2018).

(15)

Em pessoas acima de 75 anos, a incidência estimada de quedas é superior a 30% ao ano (SIXSMITH; JOHNSON, 2004). Para abordar tais questões, é necessário não somente mão de obra qualificada da área de saúde, como também a presença e o uso de dispositivos de alta tecnologia (MISKELLY, 2001). Desta forma, qualquer detecção automática de queda, com ou sem ferimento, possibilitaria um atendimento imediato, evitando assim um agravamento secundário dessa lesão.

1.1.1 Delimitação do Tema

Desde a aprendizagem de máquina dos anos 50, a pesquisa concentrou-se principalmente em encontrar relações em dados e analisar processos para extrair tais relações, ao invés de construir verdadeiramente sistemas (GUYON et al., 2008). O propósito primário do trabalho é utilizar-se da denominada aprendizagem profunda, ou deep learning. Com o revigoramento das redes neurais nos anos 2000, a aprendizagem profunda tornou-se uma área bastante atrativa na pesquisa e que está abrindo caminhos para a aprendizagem de máquina moderna (BUDUMA; LOCASCIO, 2017).

Neste contexto, encontram-se as redes neurais convolucionais, ou CNN (Convolutional Neural Networks), usadas neste trabalho, com o objetivo de identificar possíveis quedas de pessoas adultas em ambientes variados. As redes neurais convolucionais são uma das mais conhecidas abordagens do deep learning, na qual camadas subsequentes são treinadas por meio do algoritmo de propagação reversa, ou backpropagation (FARAHBAKHSH et al., 2017).

CNN é agora a abordagem dominante para quase todas as tarefas de reconhecimento e detecção, podendo ainda imitar o desempenho humano em algumas tarefas (LECUN et al., 2015). Para a aprendizagem orientada por dados, conjuntos de informação em grande escala e armazenados também em grande escala, com características representativas de distribuição de dados, são cruciais para a aprendizagem de modelos mais precisos ou generalizáveis (SHIN et al., 2016).

Os modelos das redes neurais convolucionais treinados neste banco de dados servem como suporte para melhorar significativamente muitos problemas de detecção de objetos e segmentação de imagens usando outros conjuntos de dados (SHIN et al., 2016). Para melhorar seu desempenho, pode-se coletar conjuntos de dados maiores, aprender modelos mais poderosos e usar técnicas melhores para evitar o overfitting (ABADI et al., 2016). Overfitting é um termo comum e muito utilizado em estatística, o qual é capaz de descrever o conjunto de dados ao qual foi treinado de forma notável, mas que perde tal eficiência quando busca prever novos resultados

(16)

que não se encontrem no conjunto de dados inicial, ou seja, é uma espécie de sistema vicioso. De acordo com Bilbao e Bilbao (2017), é dito que um sistema entra em overfitting quando o erro da curva proposta (o modelo) do conjunto de dados equivale a zero ou próximo de zero. O autor cita ainda que nestes casos, é possível que o sistema esteja capturando o ruído dos dados, o que é algo indesejado. Em redes neurais, o overfitting pode acontecer quando o modelo apresenta um baixo viés, mas alta variância, além de um aumento da acurácia no conjunto de treinamento acompanhado por uma diminuição da acurárica nos dados de validação. Comumente, overfitting é um resultado proveniente de um modelo excessivamente preciso ou de modelos complicados (BILBAO; BILBAO, 2017).

Por outro lado, o sistema pode ainda apresentar o denominado underfitting. De acordo com Ghasemian et al. (2019), um sistema é dito em underfitting quando a acurácia é baixa em ambos os conjuntos de dados de treinamento e de validação, podendo encontrar pouquíssimos agrupamentos, ou mesmo agrupamentos errados. Em redes neurais, é comum que este problema aconteça quando se provoca uma parada antecipada do treinamento.

Com base no conjunto de dados, ou dataset, adquirido neste trabalho de conclusão de curso, foi treinada uma rede neural convolucional, a fim de processar imagens e obter como resposta um resultado entre queda e não queda. As imagens que constituem o dataset foram obtidas por meio de bancos de imagens de uso livre disponíveis na rede mundial de computadores bem como imagens capturadas por câmeras convencionais. O disparo da câmera interligada com o microprocessador é acionado via um sensor de ruído, que monitora a intensidade sonora do ambiente em que se encontra e, quando identificado determinado nível de intensidade, inicia-se o processo de detecção.

Este trabalho limitou-se somente em identificar determinada queda, não tendo como objetivo a entrega e o tratamento do que será feito com tal informação. A descrita abordagem é dada como sugestão de trabalho futuro.

1.2 PROBLEMAS E PREMISSAS

A obtenção do dataset foi limitado à quantidade de fotos possíveis de serem adquiridas no determinado tempo deste trabalho, visto que as imagens foram em sua maioria de autoria própria, devido ao assunto “quedas” e suas variações, que englobam as imagens nas posições necessárias para o treinamento da rede, possuir carência de imagens na maioria dos bancos de dados online.

(17)

O maior desafio deste trabalho foi realizar uma classificação com dada relevância preditiva, visto que tal dataset é limitado à uma reduzida quantidade de imagens. A eficácia da aprendizagem profunda requer grandes volumes de dados de treinamento de alta qualidade. Em muitos casos, o tamanho dos dados de treinamento não é grande o suficiente para treinar efetivamente um classificador de aprendizagem profunda.

Embora o algoritmo de classificação possa ter uma taxa de acerto baixa inicialmente, vale ressaltar que esta mesma taxa poderá aumentar conforme a quantidade de dados a serem treinados também aumentar. Aumento de dados é uma abordagem amplamente adotada para expandir a quantidade de informações de treinamento (DING et al., 2017).

1.3 OBJETIVOS

1.3.1 Objetivo Geral

Este projeto teve como objetivo o desenvolvimento de uma rede treinada para classificação em que, através de uma imagem capturada por uma câmera, possíveis quedas de humanos possam ser reconhecidas e categorizadas entre uma pessoa caída, não caída, ou mesmo não identificada, podendo assim ser difundida em aplicações posteriores.

1.3.2 Objetivos Específicos • Revisão bibliográfica.

• Criação e organização de imagens ao dataset de quedas. • Treinamento da rede neural convolucional.

• Análise de resultado dos hiperparâmetros empregados durante o treinamento da rede. • Utilização de um sensor de ruído integrado com um microprocessador para iniciar uma

predição.

• Capturar imagens e processá-las em tempo real.

• Classificação das imagens obtidas com base na rede neural desenvolvida bem como a biblioteca OpenCV.

(18)

1.4 JUSTIFICATIVA

O envelhecimento substancial da população causará desafios a serem vencidos. Pode-se citar o aumento do número de idosos, que acarreta em maiores necessidades de investimentos e pesquisa. Na contramão deste crescente número de idosos, Fu et al. (2008) diz que há uma diminuição na disponibilidade da mão de obra especializada de cuidadores de idosos, além de citar que a detecção de quedas é de particular importância para uma pessoa que viva sozinha. Neste cenário, a tecnologia de monitoramento poderá ter grande importância, visto que com um decremento de trabalhadores neste ramo, o desenvolvimento de um sistema autônomo e com algoritmos mais robustos deve se fazer necessário. Graças a isso, o termo Smart Health, ou saúde inteligente, tem ganho bastante relevância. Smart Health é importante para pessoas que necessitem monitoramento contínuo, o qual não consegue ser providenciado fora de hospitais (KHAN; CHATTOPADHYAY, 2017).

De acordo com Zigel et al. (2009), as soluções mais populares para detecção automática de quedas são os detectores de queda portáteis, que são baseados em combinação de acelerômetros e sensores de inclinação. A título de exemplo, Diaz et al. (2004) apresenta o uso de um dispositivo de detecção de queda provido de uma unidade de acelerômetro inteligente. Tal dispositivo foi baseado em leis de impacto, ao passo que buscava a distinção entre quedas reais e alarmes falsos. Desde que Lord e Colvin (1991) propuseram uma abordagem baseada num acelerômetro, vários tipos de sensores foram explorados para a detecção de queda nas últimas décadas, desde giroscópios, sensores de pressão barométrica, RFID, até smartphones (WANG et al., 2017).

A técnica baseada em smartphones emprega sensores para detectar as mudanças na aceleração ou velocidade em três eixos coordenados. No entanto, diferentes posições dos sensores no corpo do usuário podem demonstrar desempenho de detecção diferente (WANG et al., 2017). Ademais, dispositivos vestíveis devem ser usados continuamente, além de exigirem que as baterias sejam recarregadas, podendo, portanto, serem simplesmente esquecidos pelo usuário (STONE; SKUBIC, 2015).

Para tanto, esta presente proposta abordou a identificação de quedas com base na combinação entre uma câmera e um sensor capaz de detectar ruídos, pré-instalados em conjunto no local. Desta forma o método se torna convenientemente não invasivo ao corpo do usuário, além de evitar transtornos como a troca de baterias. Em contrapartida, quedas que não provoquem ruídos não poderão ser detectadas por este método.

(19)

1.5 PROCEDIMENTOS METODOLÓGICOS

A coleta de dados para a formação do dataset foi feita de forma manual, tendo este sido parcialmente criado com imagens obtidas via banco de dados online com uso livre e parcialmente criado com imagens de autoria própria, onde cada indivíduo pôde contribuir com um limite de até 10 % da quantidade de imagens total do dataset, não sendo utilizadas mais imagens do mesmo sujeito como forma de prevenir que o sistema entrasse em overfitting. Foram adquiridos dois tipos de imagens, com pessoas de idades e biótipos distintos. O primeiro tipo de imagem possui pessoas deitadas em localidades e disposições diferentes, simulando uma queda, enquanto o segundo tipo de imagem, preferencialmente dos mesmos indivíduos, foi obtido com estes agora sentados ou em pé, sem simular a queda. Para Wang e Perez (2017), é de comum acordo que quanto maior a quantidade de dados de entrada que o algoritmo de aprendizagem de máquina possuir acesso, mais efetivo ele poderá se tornar. No entanto, como a quantidade de imagens foi limitada devido ao curto tempo para a obtenção das mesmas, utilizou-se uma técnica denominada data augmentation. Data augmentation refere-se ao processo de criar novas amostras similares aos dados de treinamento, e pode ser reconhecido como um tipo de tecnologia de regularização (SHIJIE et al., 2017). Tal técnica consiste na amplificação e rotacionamento das imagens, bem como pequenas distorções e embaçamentos (conhecidos como blurring).

Um sensor capaz de detectar determinadas potências de ruídos, em dB, foi utilizado para detectar o momento em que uma possível queda ocorreu. No instante em que a devida intensidade sonora é detectada, esta serve de gatilho para que uma câmera, pré-instalada no local de forma a abranger a maior visão possível do ambiente, dispare, e assim registre uma foto do local.

Após a captura desta foto pela câmera, espera-se que a rede, treinada previamente com base no dataset criado, possa ser capaz de identificar corretamente entre a existência ou não de um ser humano (sendo esta parte realizado pela biblioteca OpenCV 1) e, em caso positivo para esta existência, identificar entre uma pessoa de fato caída ou em condição de não queda. A arquitetura da rede treinada foi desenvolvida no ramo da aprendizagem profunda (deep learning) do tipo CNN. Tal arquitetura de rede tem se mostrado bastante eficiente no reconhecimento de padrões, podendo os modelos preditivos atingir alta taxa de acerto caso haja um dataset suficientemente grande, como visto no trabalho de Ferreira (2017).

O OpenCV é uma ferramenta gratuita para uso comercial ou pesquisa, que contém uma biblioteca de aprendizado de máquina completa e de propósito geral. De acordo com Pulli

(20)

et al. (2012), a biblioteca OpenCV contém uma combinação de funções de processamento de imagem de baixo nível e algoritmos de alto nível, como reconhecimento facial, detecção de pedestres, correspondência de recursos, rastreamento, entre outros. É importante destacar que o OpenCVserviu como ferramenta auxiliar para este trabalho, o qual permitiu o algoritmo CNN restringir-se a predizer os dois principais cenários, queda ou não queda.

Para auxiliar o treinamento desta rede, foi utilizado o framework disponível pela empresa Google, denominado de TensorFlow2. TensorFlow é uma biblioteca de código aberto criada para facilitar implementações de aprendizagem de máquina bem como a aprendizagem profunda, além de permitir o treinamento da rede pelo núcleo da placa de vídeo, fazendo assim um treinamento mais rápido se comparado ao treinamento unicamente com uma Unidade de Processamento Central (CPU).

A Figura 1 ilustra o funcionamento geral do sistema proposto, ressaltando que a aquisição do dataset, bem como o treinamento, são feitos em uma etapa prévia ao funcionamento do sistema.

Figura 1: Fluxograma do trabalho.

Fonte: Autoria própria.

(21)

1.6 ESTRUTURA DO TRABALHO

Capítulo 1 - Introdução. Constituído pelo tema, problemas e premissas, objetivos gerais, objetivos específicos, e justificativa.

Capítulo 2 - Revisão bibliográfica. Este capítulo fornece informações técnicas bem como a teoria sobre redes neurais, assim como procedimentos essenciais para implementação em software desta tarefa. Desta forma, o capítulo simplificará para o leitor os conceitos aplicados neste trabalho.

Capítulo 3 - Solução proposta e treinamento da rede. Capítulo destinado à explanação da integração e execução entre o hardware e o software, os componentes utilizados e a forma como os dados foram obtidos e manipulados para o treinamento da rede proposta.

Capítulo 4 - Resultados. Os resultados das classificações de imagens são apresentados nesta seção, onde os valores e padrões obtidos ao longo do aprimoramento do projeto são analisados.

Capítulo 5 - Conclusões. Este capítulo apresenta as análises gerais do projeto implementado, correlacionando as classificações obtidas na prática com os resultados esperados.

(22)

2 REVISÃO BIBLIOGRÁFICA

2.1 APRENDIZADO DE MÁQUINA

Seres humanos são muito habilidosos em aprender e assimilar algo novo, podendo trabalhar com conjuntos complexos e, na maioria das vezes, não lineares, sem grande esforço. Por exemplo, a identificação visual ou mesmo sonora entre duas classes distintas, como gatos e cachorros. No entanto, este tipo de classificação para uma máquina não é algo trivial, mas complexo, dado a dificuldade em se aprender quais atributos são pertencentes única e exclusivamente àquela determinada classe (KETKAR et al., 2017).

O objetivo da aprendizagem de máquina é projetar métodos que realizem automaticamente a extração de atributos usando observações do mundo real (chamado de “dados de treinamento”), sem definição explícita de regras ou lógica pelos seres humanos (KHAN et al., 2018). Assim, amostras de dados adquiridas proporcionam a criação da programação do aprendizado de máquina, que evolui gradativamente a cada iteração do algoritmo.

A Figura 2 ilustra o processo generalizado do aprendizado de máquina.

Figura 2: Aprendizado de máquina no formato caixa preta.

Fonte: Autoria própria.

Existem três grandes e conhecidos grupos referentes ao tipo de aprendizado quando se trata de aprendizagem de máquina, sendo eles: aprendizado supervisionado, não supervisionado e aprendizado por reforço. O foco deste trabalho é o aprendizado supervisionado.

Na aprendizagem supervisionada, a rede tem sua saída comparada com respostas corretas conhecidas e recebe um retorno sobre quaisquer erros. Isso pode ser interpretado como quando um professor diz ao aluno se a resposta obtida está ou não correta. No caso da

(23)

máquina, um humano indica à rede se o que o modelo preditivo mostrou na camada de saída está correto ou incorreto (HERTZ et al., 1991).

Kia e Coghill (1991) em seu trabalho “A Mapping Neural Network Using Unsupervised and Supervised Training”, descreve que uma das mais importantes aplicações da rede neural artificial é realizar mapeamento matemático, onde a rede aprende a entregar um vetor de saída desejado como resposta ao vetor de entrada. É dito também que isto requer um treinamento supervisionado procedural, como as redes backpropagation.

2.1.1 Aprendizagem Profunda (Deep Learning)

O deep learning é uma subseção da aprendizagem de máquina. Uma rede neural profunda é genericamente uma rede neural artificial com duas ou mais camadas ocultas (SARIGÜL; AVCI, 2018). Para Pattanayak e John (2017), o deep learning possui inúmeras vantagens, como a possibilidade de se aprender atributos mais complexos conforme o número de camadas aumenta, ser possível automatizar este mesmo aprendizado de atributos, trabalhar melhor com dados não estruturados e superar com uma margem muito grande os métodos de machine learning tradicionais em diversos domínios, especialmente naqueles da visão computacional, reconhecimento de imagens e de falas.

No entanto, o aprendizado de máquina não é perfeito e possui algumas limitações. A rede neural profunda geralmente tende a possuir inúmeros parâmetros e, para tanto, as implementações deverão possuir um volume suficientemente grande de dados para treinamento. Caso não haja dados suficientes, as aproximações do aprendizado profundo não irão funcionar visto que o modelo poderá sofrer de overfitting (PATTANAYAK; JOHN, 2017). É citado ainda em Pattanayak e John (2017) que os atributos complexos são comumente difíceis de serem interpretados, além de exigir alto poder computacional. A diferença no desempenho entre modelos de machine learning tradicionais e entre modelos do deep learning pode ser visualizada na Figura 3.

(24)

Figura 3: Comparação do desempenho geral dos métodos tradicionais vs. métodos do deep learning.

Fonte: Adaptado de (PATTANAYAK; JOHN, 2017).

Khan et al. (2018) diz que devido ao grande sucesso de aprendizagem do deep learning, essas técnicas são atualmente o estado da arte para detecção, segmentação, classificação e reconhecimento de objetos em imagens.

2.2 REDES NEURAIS

2.2.1 Neurônio Biológico vs. Artificial

Construir máquinas artificialmente inteligentes exige que se resolvam alguns dos problemas computacionais mais complexos já lidados (BUDUMA; LOCASCIO, 2017). Em uma extremidade do espectro da inteligência artificial está o campo de raciocínio simbólico de alto nível. No outro extremo, tem-se os reducionistas, aqueles que acreditam que essa inteligência pode ser emulada em blocos menores de construção: ou seja, os neurônios (ROSS, 2006).

É importante reconhecer que os neurônios artificiais que se utilizam para construir as redes neurais são verdadeiramente primitivos em comparação com os encontrados no cérebro (HAYKIN, 2009). Embora as redes sejam muito simplificadas em comparação ao sistema biológico real, os avanços ao longo do tempo referentes às taxas de acerto preditivo e a velocidade à qual se obtém respostas são notáveis e satisfatórias. Em uma notícia publicada por Fenner (2018), é possível concluir que as máquinas estão a um passo de superar os humanos no quesito

(25)

preditivo em classificação.

O princípio de funcionamento de uma rede neural artificial dá-se através de neurônios. Esses neurônios, diferentemente dos neurônios biológicos e encontrados em seres vivos, são apenas biologicamente inspirados no funcionamento do córtex cerebral de mamíferos. Desta forma, é possível dizer que nada mais são que modelos matemáticos implementados computacionalmente capazes de simular de forma simplificada um neurônio real e complexo, a fim de tratar de problemas avançados e não lineares tais como nós humanos o fazemos.

Um modelo artificial do entendimento biológico simplificado foi proposto por McCulloch e Pitts (1943), conforme ilustra a Figura 4. Especificamente, o modelo do neurônio calcula uma soma ponderada de suas entradas de outras unidades, e gera como saída os valores um ou zero, dependendo se esta soma está acima ou abaixo de um certo limite (HERTZ et al., 1991). Assim, a partir dos pesos sinápticos do neurônio (wk j) e dos sinais de entrada (xj),

calculam-se os pesos intermediários

uk =

Õ

j

wk jxj, (1)

os quais não estão indicados na Figura 4, mas são entradas do elemento de junção de soma, de modo que

vk = uk+ bk, (2)

em que bk representa o viés (bias). Por fim, as saídas dos neurônios são dadas por:

yk= ϕ(vk), (3)

na qual ϕ(·) é a função de ativação (HAYKIN, 2009).

Em outras palavras, pode-se calcular a saída executando o produto escalar entre os vetores de entrada e de peso, adicionando o termo de polarização para produzir o modelo e, em seguida, aplicar a função de ativação escolhida (BUDUMA; LOCASCIO, 2017). Ao contrário do peso de uma sinapse no cérebro, o peso sináptico de um neurônio artificial pode estar em um intervalo que inclui valores negativos e positivos (HAYKIN, 2009, p. 10).

(26)

Figura 4: Modelo generalizado do neurônio de McCullogh-Pitts.

Fonte: Adaptado de (HAYKIN, 2009).

Em particular, dependendo se o bias bk é positivo ou negativo, a relação entre o

potencial de ativação vk do neurônio k e a saída do combinador linear uk é modificada da

maneira ilustrada na Figura 5 (HAYKIN, 2009).

Figura 5: Alteração do potencial de ativação produzida pela presença do bias.

Fonte: Adaptado de (HAYKIN, 2009).

(27)

unitário, representado pela Figura 6, que serviu como modelo base do neurônio McCullogh-Pitts original (ROSS, 2006). Nesse modelo, a saída de um neurônio assume o valor 1 se o potencial de ativação desse neurônio não é negativo, e 0 caso contrário. Essa função descontínua é usualmente referida como função de Heaviside. O emprego da função Heaviside na saída do neurônio k é expressada por:

ϕ(vk)=        1, se vk ≥ 1 0, se vk < 0. (4)

Figura 6: Função degrau unitário.

Fonte: (ROSS, 2006).

Esta função de ativação permite a esses neurônios a capacidade de emular funções booleanas básicas, como AND, OR, NAND, etc. A função ϕ(·) também pode ser linear por partes, como uma rampa unitária com um segmento de rampa conectando as partes 0 e 1 (Figura 7) (ROSS, 2006). No entanto, o principal interesse ocorre para funções de transferência não-lineares, as quais serão abordadas na seção 2.2.2. O uso de uma função de transferência não linear torna possível o aprendizado automático de uma rede neural (KHAN et al., 2018).

Figura 7: Uma função linear por partes combinando uma rampa com um degrau unitário.

(28)

2.2.2 Funcões de Ativação Não Lineares

As funções de ativação não lineares são diferenciáveis para que os parâmetros da rede possam ser ajustados usando backpropagation (KHAN et al., 2018). Em outras palavras, para aprender relacionamentos complexos, precisa-se usar neurônios que empregam algum tipo de não linearidade (BUDUMA; LOCASCIO, 2017). As três funções de ativação mais utilizadas são a função sigmoide, tangente hiperbólica, e ReLU (Rectified Linear Unit) (SEWAK et al., 2018). Por exemplo, a função sigmoide é ilustrada pela Figura 8.

Figura 8: Função sigmoideϕ(z) = 1/(1 + exp(-z)).

Fonte: (ROSS, 2006).

Buduma e Locascio (2017) citam que neurônios que se utilizam de uma função de ativação não linear com o formato baseado em “S”, como a sigmoide descrita acima, são preferíveis a utilizar a função de ativação tangente hiperbólica, devido ao fato desta última ser centrada em zero. Já a função ReLU é capaz de atingir um desempenho semelhante ao de uma função sigmoidal, mas com uma carga computacional muito inferior, o que impacta grandiosamente no tempo de treinamento da rede, consoante com McClure (2017). A função ReLU pode descrita por:

ϕ(z) = max(0, z). (5)

Por fim, uma outra função especial além das três já citadas, comumente aplicada na camada de saída da rede neural, é denominada softmax. A função softmax é utilizada quando se deseja que o vetor da camada saída seja uma distribuição de probabilidade sobre um conjunto de rótulos mutuamente exclusivos. De acordo com Buduma e Locascio (2017), usar a distribuição de probabilidade resulta em uma melhor ideia do quão confiante o sistema está, o que ocorre devido a soma de todas as saídas ser igual a 1. Através desta função, espera-se bons resultados preditivos com a classe correta próximo a 1 e as outras classes próximas a 0. A fórmula

(29)

matemática que expressa esta função é dada por ϕ(zk)= ezk ÍK j=0e zj, (6)

em que K é o número de neurônios (classes preditivas) da camada de saída.

2.3 REDES NEURAIS MULTICAMADAS

A maneira pela qual os neurônios de uma rede neural são estruturados está intimamente ligada ao algoritmo de aprendizagem usado para treinar a rede (HAYKIN, 2009). As redes neurais multicamadas são arquiteturas onde os neurônios são organizados em duas ou mais camadas de processamento, já que sempre irá existir pelo menos uma camada de entrada e uma de saída. Estas arquiteturas são as mais frequentemente encontradas na literatura referente a redes neurais artificiais (IYODA et al., 2000).

Redes neurais com apenas duas camadas são constituídas por uma camada de neurônios de entrada que se conectam a outra de saída. Os neurônios de entrada são especiais, e seu papel é exclusivamente distribuir cada uma das entradas da rede (sem modificá-las) a todos os neurônios do nível seguinte (IYODA et al., 2000). Um exemplo de rede neural com apenas duas camadas é apresentado na Figura 9(a), tendo este 3 neurônios na camada de entrada e 4 neurônios na de saída.

(30)

Figura 9: Redes neurais: (a) rede neural com duas camadas de neurônios, (b) rede neural com uma camada de entrada, uma camada escondida e uma camada de saída.

Fonte: (IYODA et al., 2000).

Segundo Haykin (2009), o desenho da arquitetura da Figura 9(b) ilustra o layout de uma rede neural 3–4–2, isto porque possui 3 nós de origem, 4 neurônios ocultos e 2 neurônios de saída. Como outro exemplo, uma rede neural com p entradas, h1 neurônios na primeira camada oculta, h2 na segunda camada oculta e q neurônios na camada de saída é dita ser uma rede p − h1 − h2 − q (IYODA et al., 2000). O conjunto de sinais de saída dos neurônios na camada de saída (final) da rede constitui a resposta geral da rede ao padrão de ativação fornecido pelos nós de origem na camada de entrada (primeira) (HAYKIN, 2009).

Os pesos de uma rede neural definem a importância entre as conexões dos neurônios. Esses pesos precisam ser definidos apropriadamente para que uma saída desejada possa executar uma tarefa designada, como exemplo detecção de objetos, reconhecimento ou classificação (KHAN et al., 2018). Os parâmetros da rede são ajustados sob a influência combinada do vetor de treinamento e do sinal de erro. O erro do sinal é definido como a diferença entre a resposta desejada e a resposta real da rede (HAYKIN, 2009). Finalmente, a função de ativação ϕ(.) de cada neurônio pode ser diferente de todos os outros neurônios. No entanto, como descrito por Aghdam e Heravi (2017), todos os neurônios na mesma camada geralmente têm a mesma função de ativação.

Para Shao et al. (2015), os aprendizados de máquina usuais bem como técnicas de mineração de dados estudam os dados de treinamento para inferências futuras, sob uma suposição

(31)

principal de que os dados futuros estão dentro do mesmo espaço de recurso ou têm a mesma distribuição que os dados de treinamento. Neste sentido, as próximas seções tratarão de técnicas de treinamento, ou seja, modelos de como os pesos e os outros hiperparâmetros de uma rede se ajustam de acordo com o dataset escolhido.

2.3.1 Regra Delta (Delta Rule) - Descida do Gradiente

A máquina é capaz de aprender a classificar objetos por meio de ajustes nos pesos das conexões entre os neurônios e em seus hiperparâmetros. Uma forma de ajustar tais pesos dá-se pela correção do erro. O objetivo da correção do erro é minimizar alguma função de custo baseada no erro do sinal, de modo que a resposta observada de cada neurônio da rede se aproxime da resposta desejada (IYODA et al., 2000). A seguir, é descrito uma forma básica de um algoritmo capaz de minimizar este erro, chamada de regra delta ou descida do gradiente. A regra delta foi proposta por Widrow et al. (1960), a qual é capaz de atualizar os parâmetros de pesos da rede com base na diferença entre a saída atual e a saída prevista. Essa diferença é calculada em termos do erro LMS (Least Mean Square), razão pela qual a regra de aprendizagem do delta também é referida como a regra do LMS.

As unidades de saída uk são funções lineares das entradas (KHAN et al., 2018),

descritas conforme a equação (1). Dessa forma, com rke ukdenotando as saídas esperada (real)

e a computada, respectivamente, o erro pode ser calculado por E= 1

2 Õ

k

(rk− uk)2. (7)

Supondo que o neurônio linear possua apenas duas entradas e, portanto, apenas dois pesos, w1e w2, pode–se então imaginar um espaço tridimensional onde as dimensões horizontais

são correspondentes aos pesos w1e w2, e a dimensão vertical é correspondente ao valor da função

de erro E. Neste espaço, os pontos no plano horizontal correspondem a diferentes configurações do espaço. Os pesos e a altura nesses pontos correspondem ao erro incorrido. Considerando todos os erros que se pode cometer sobre todos os pesos possíveis, é possível obter uma superfície neste espaço tridimensional, em particular, uma configuração côncava como mostrado na Figura 10 (BUDUMA; LOCASCIO, 2017).

(32)

Figura 10: Superfície de erro quadrática para um neurônio linear.

Fonte: Adaptado de (BUDUMA; LOCASCIO, 2017).

Em conformidade com Buduma e Locascio (2017), na Figura 11 se visualiza convenientemente essa superfície como um conjunto de contornos elípticos, onde o erro mínimo está no centro das elipses. Os contornos correspondem a configurações de w1e w2que avaliam o

mesmo valor de E. Quanto mais próximos os contornos estiverem um do outro, mais acentuada será a inclinação. De fato, a direção da descida mais íngreme é sempre perpendicular aos contornos. Essa direção é expressa como um vetor conhecido como gradiente. Assim, reavaliar a direção da descida mais íngreme é possível, tomando o gradiente desta atual coordenada e realizando um passo nesta nova direção. A partir da Figura 10 pode-se concluir que seguir essa estratégia acarreta um encontro ao ponto de erro mínimo global.

Figura 11: Visualização da superfície de erro como um conjunto de contornos.

Fonte: Adaptado de (BUDUMA; LOCASCIO, 2017).

(33)

aos parâmetros de pesos da rede: ∂w∂E k j. Assim, wktj+1= wktj+ η ∂E ∂wk j , (8)

onde t denota a iteração anterior do processo de aprendizagem. O hiperparâmetro η denota o tamanho do passo da atualização do parâmetro na direção do gradiente calculado, ou seja, a velocidade de aprendizado da rede (KHAN et al., 2018). Dado o gradiente, os pesos são atualizados iterativamente de acordo com a seguinte regra de aprendizagem:

wktj+1= wktj+ η(rk− uk)xj. (9)

Se o tamanho da etapa for pequeno demais, a rede levará mais tempo para convergir. Por outro lado, executar passos muito grandes pode resultar em um comportamento errático instável durante a etapa de treinamento (Figura 12), em um processo do qual a rede pode não convergir de forma alguma. Portanto, definir o tamanho correto do passo, bem como outros hiperparâmetros, é realmente importante para o treinamento de uma rede efetiva (KHAN et al., 2018).

Figura 12: A dificuldade de convergência quando a taxa de aprendizadoη é muito grande.

Fonte: Adaptado de (BUDUMA; LOCASCIO, 2017).

Neste quesito, conseguir ajustar os hiperparâmetros em uma rede neural, especialmente no deep learning, é uma das mais árduas tarefas. Pensando nisso, pesquisadores buscaram formas de melhorar o processo de sintonia de uma rede neural. Com isso foram desenvolvidos métodos para que o passo de aprendizagem, bem como outros parâmetros, como a taxa de aprendizagem, quantidade de neurônios, ou mesmo o número de camadas ocultas, ocorressem de forma mais automatizada. Assim foram concebidos os métodos adaptativos, os quais baseavam-se em

momentum como forma de limitar ou aumentar o passo de aprendizagem. Para descrever o

(34)

de otimização sobre os quais os algoritmos adaptativos se baseiam.

2.3.2 Regra Delta Generalizada (Generalized Delta Rule)

A regra delta calcula combinações lineares entre os pares de entrada e saída, e por este motivo torna-se muito limitada em aplicações práticas. Para superar essa limitação, surgiu a regra delta generalizada. A regra delta generalizada faz uso de funções de ativação não lineares em cada unidade de processamento para modelar relações também não lineares entre os domínios de entrada e saída. Desta forma, ela possibilita o uso de múltiplas camadas ocultas na arquitetura das redes neurais, um conceito que forma o coração da aprendizagem profunda (KHAN et al., 2018).

No entanto, diferente da regra delta original, os erros são recursivamente enviados para trás através de uma rede de multicamadas. Por esse motivo, a regra delta generalizada é também denominada de algoritmo de backpropagation. Como para o caso da regra delta generalizada, uma rede neural não só tem uma camada de saída, mas também camadas intermediárias (BUDUMA; LOCASCIO, 2017).

Dada a função de erro na equação (7), seu gradiente em relação aos parâmetros na camada de saída L para cada nó k pode ser calculado utilizando

∂E ∂wk j = δ L kxj, (10) δL k = (rk−ϕ(vk)) dϕk(vk) dvk , (11)

onde δLk é o gradiente local para o neurônio k na camada L e ϕ(vk) representa a saída do neurônio.

Caso seja a última camada, ϕ(vk) a predição. Utilizando a função sigmoide, conforme Khan et

al. (2018), a saída de cada neurônio pode ser escrita por ϕ(vk)=

1 1+ exp(−vk)

, (12)

enquanto sua derivada pode ser escrita em função do próprio termo de saída ϕ(vk), tal que

dϕk(vk)

dvk = ϕ(v

k)(1 − ϕ(vk)). (13)

Assim, o gradiente para os neurônios da camada de saída é dado por ∂E

∂wk j = (r

(35)

Da mesma forma, pode-se calcular o erro do sinal para as camadas ocultas intermediárias de uma arquitetura de rede neural multicamadas, através da propagação de erros, conforme δl k= f 0 (vkl)Õ j wlk+1δlj+1, (15)

onde l  { 1 . . . , L-1, L} denota o número total de camadas da rede. A equação (15) aplica a regra da cadeia para calcular progressivamente os gradientes dos parâmetros internos usando os gradientes de todas as camadas subsequentes (KHAN et al., 2018). Por sua vez, a atualização dos parâmetros da rede neural é dada por

wktj+1= wktj+ ηδlkxl−1j , (16)

onde xl−1j é a saída da camada anterior. O processo de aprendizagem completo geralmente envolve várias iterações e os parâmetros são continuamente atualizados até que a rede seja otimizada, ou seja, após um número definido de iterações ou quando wktj+1não muda (KHAN

et al., 2018).

2.3.3 Descida do Gradiente Estocástico (SGD: Stochastic Gradient Descent)

A descida do gradiente estocástico é o mais popular algoritmo de backpropagations (HEATON, 2015). Ela realiza uma atualização dos parâmetros para cada conjunto de entrada e saída presentes nos dados de treinamento. Desta forma, apresenta como resultado uma convergência muito mais rápida se comparado à descida de gradiente vista anteriormente. Conforme Buduma e Locascio (2017), sua única desvantagem é o comportamento da convergência ser comumente instável, especialmente quando se trata de um passo de aprendizagem relativamente alto, bem como quando o dataset contém exemplos muito variados.

2.3.4 Momento (Momentum)

Otimizações baseadas em momentum fornecem uma versão melhorada do SGD com melhores propriedades de convergência (KHAN et al., 2018). Conforme Ketkar et al. (2017), o uso de momentum mostrou empiricamente causar uma redução na oscilação além de uma convergência mais rápida. Um dos problemas ao se lidar com os métodos de otimização já citados é que o gradiente pode apontar para uma direção equivocada.

De acordo com Buduma e Locascio (2017), ao se analisar o erro da superfície de redes profundas, o desafio mais crítico da otimização seria encontrar a trajetória correta para

(36)

se locomover. Grandes problemas podem ocorrer quando o algoritmo se depara com mínimos locais, e o gradiente pode não ser um bom indicador da trajetória correta, especialmente quando o contorno não for perfeitamente circular. Conforme descrito no mesmo livro, a maioria dos contornos da aprendizagem profunda são bastante elípticos, e isto pode comprometer a direção correta do gradiente em até noventa graus.

Como tentativa de resolução deste problema, é possível calcular o quanto o gradiente se altera conforme se locomove para uma determinada direção. De forma matemática, usam-se segundas derivadas tal que

∂∂E ∂wj

∂wk . O resultado desta informação é então armazenado em uma matriz denominada de matriz Hessiana. A matriz Hessiana é uma matriz quadrada com suas linhas e colunas iguais ao número de pesos da rede neural artificial (HEATON, 2015). No entanto, computar esta matriz Hessiana pode ser uma tarefa difícil conforme cita Buduma e Locascio (2017).

Neste contexto, surgiu o termo momentum e com isso os algoritmos de otimização baseados neste. O momentum foca em como anular as flutuações da matriz Hessiana provenientes dos gradientes durante o treinamento. Pattanayak e John (2017) cita que quando o momentum é adotado juntamente ao método da descida do gradiente estocástico, sua chance de evitar um problemático mínimo local raso aumenta. A ideia geral por trás do momentum é computar uma combinação na atualização da última iteração com o gradiente atual através da componente velocidade, o que é possível de ser realizado observando um decaimento exponencialmente ponderado dos gradientes passados.

2.3.5 Passo de Aprendizagem Adaptativo

Um dos maiores problemas atuais quando se trabalha com redes neurais são os hiperparâmetros corretos a serem utilizados durante o treinamento da rede neural. Neste contexto, o passo de aprendizagem costumava ser uma característica problemática. De acordo com Buduma e Locascio (2017), o passo de aprendizagem era um dos aspectos de maior impacto no desempenho da rede. Segundo este mesmo autor, um passo de aprendizagem muito pequeno não aprende rápido o suficiente, ao mesmo tempo que um passo de aprendizagem muito grande pode apresentar dificuldades de convergência conforme se aproxima de um mínimo local.

Como forma de contornar tal problema do tamanho ideal do passo de aprendizagem, surgiram estudos na área de redes neurais profundas modernas para que se obtivesse um passo de aprendizagem que fosse adaptativo. Atualmente existem diversos tipos de algoritmos que tornam o passo de aprendizagem adaptativo, dentre eles, o gradiente adaptativo, Root Mean

(37)

Square Propagation(RMSProp) e o momentum adaptativo, explicados na sequência.

2.3.6 Gradiente Adaptativo (AdaGrad: Adaptive Grandient)

O algoritmo AdaGrad tenta adaptar o passo de aprendizagem global ao longo do tempo através do uso de um acúmulo histórico dos gradientes. A técnica do gradiente adaptativo foi proposto por Duchi et al. (2011) e, de acordo com o Khan et al. (2018), o método usa um passo de aprendizagem adaptativo para cada parâmetro individual i, sendo isto feito em cada passo de tempo tp, onde se divide a taxa de aprendizagem de cada parâmetro pelo acúmulo da raiz de

todo o histórico de gradientes para cada parâmetro wk. Esta operação pode ser visualizada na

fórmula a seguir wtkp = wtk p−1− η q Ítp τ=1ρkτ2+  ρk tp, (17)

em que ρ é o gradiente no intervalo de tempo tpcom respeito ao parâmetro wtkp, e  é simplesmente

uma constante somada ao denominador com o intuito de prevenir que aconteça uma divisão por zero.

De forma prática, este mecanismo de atualização significa de que os parâmetros com gradientes maiores sofrem um decaimento acelerado em sua taxa de aprendizagem, enquanto gradientes menores observam um decaimento desacelerado.

Para Buduma e Locascio (2017), na teoria, o algoritmo AdaGrad força um maior progresso em direções suavemente inclinadas da superfície de erros, o que poderia ajudar a superar superfícies do tipo ill conditioned, no entanto, treinar modelos de aprendizagem profunda com este método pode tornar-se problemático, visto que o mesmo possui tendência a causar uma prematura queda da taxa de aprendizagem.

2.3.7 Média Móvel de Gradientes Exponencialmente Ponderados (RMSProp: Root Mean Square Propagation)

O algoritmo previamente citado, AdaGrad, funciona bem para funções convexas simples. No entanto, não foi designado para trabalhar com as superfícies de erro complexas encontradas na aprendizagem profunda. O método RMSProp foi criado por Tieleman e Hinton (2012). Tal algoritmo busca resolver o problema da taxa de aprendizagem que cai prematuramente, e para tanto calcula a média móvel conforme

E[ρ2] tp= γE[ρ 2] tp−1+ (1 − γ)ρtp 2. (18)

(38)

Para Buduma e Locascio (2017), o fator de decaimento γ determina o quanto os gradientes mais antigos serão mantidos. Khan et al. (2018) diz que um valor típico para γ é 0,9 e a regra para a atualização dos novos parâmetros é dado por

wtkp= wtk p−1− η q E[ρ2] tp+  ρk tp. (19)

2.3.8 MomentumAdaptativo (AdaM: Adaptive Momentum)

O método do momentum adaptativo foi proposto por Kingma e Ba (2014). A publicação descreve um método que pode ser interpretado como uma combinação variante dos algoritmos RMSProp e momentum. Para Khan et al. (2018), a diferença entre o método AdaM e seus dois predecessores, RMSProp e AdaGrad, está no fato de que as atualizações são estimadas usando-se ambas as regras do primeiro momento (interpretado fisicamente como um componente de "velocidade") e segundo momento do gradiente (interpretado fisicamente como um componente de "aceleração", ou fricção), conforme segue:

E[ρ]tp= γ1E[ρ]tp−1+ (1 − γ1)ρtp, (20) E[ρ2] tp= γ2E[ρ 2] tp−1+ (1 − γ2)ρtp 2, (21)

nas quais, γ1 e γ2 representam os parâmetros para a média móvel da média e da variância

respectivamente.

Khan et al. (2018) cita ainda que como a estimação do momento inicial é definida para zero, ela pode manter-se muito pequena mesmo após várias iterações, especialmente quando γ1,2for diferente do valor um. Buduma e Locascio (2017) diz que uma forma de contornar este

viés é poder derivar o fator de correção de ambas estimações, obtendo assim: ˆ E[ρ]tp = E[ρ]tp 1 − (γ1)tp , (22) ˆ E[ρ2]t p = E[ρ2]t p 1 − (γ2)tp . (23)

Pode-se então utilizar estes momentos corrigidos para atualizar o parâmetro do vetor, resultando, portanto, na atualização final do método AdaM visto a seguir:

wtkp = wtk p−1− η q ˆ E[ρ2]t p+  ˆ E[ρ]tp. (24)

(39)

Os criadores do método dizem ainda que bons parâmetros testados para problemas em geral são de γ1 igual a 0,9, γ2 igual a 0,999 (fatores de decaimento) e com um passo de

aprendizagem de 0,001.

Para Buduma e Locascio (2017), o método AdaM ganhou popularidade devido a suas medidas corretivas tomadas contra a fraqueza do método RMSProp (bias de inicialização zero) e sua habilidade em combinar o núcleo central por trás do RMSProp com momentum mais eficientemente. A Figura 13, retirada e traduzida da publicação oficial do AdaM, denominada

“Adam: a method for stochastic optimization” mostra a comparação entre alguns métodos

anteriores a ele e sua melhora em relação aos mesmos no problema do reconhecimento de dígitos escritos à mão.

Figura 13: Comparação entre alguns métodos de passo de aprendizagem adaptativo vs. AdaM.

Fonte: Adaptado de (KINGMA; BA, 2014).

2.4 REDE NEURAL CONVOLUCIONAL (CNN: CONVOLUTIONAL NEURAL NETWORK)

As redes neurais convolucionais foram criadas por LeCun et al. (1998). Uma rede neural convolucional permite às redes profundas aprenderem funções em dados estruturados espacialmente, como por exemplo imagens, vídeo e texto (RAMSUNDAR; ZADEH, 2018).

(40)

Para Ramsundar e Zadeh (2018), matematicamente, essas redes providenciam ferramentas para explorar a estrutura local de dados mais eficientemente.

Shukla (2018) diz que a grande ideia por trás da CNN é que o entendimento local de uma imagem é bom o suficiente. O autor diz ainda que o benefício prático é que poucos parâmetros melhoram grandiosamente com o tempo de aprendizagem, além de diminuir a quantidade de dados necessários para se treinar o modelo. Ao impor restrições de conectividade local entre os neurônios das camadas adjacentes, a CNN explora a correlação especial local (PATTANAYAK; JOHN, 2017). A Figura 14 a seguir representa a arquitetura de uma rede neural convolucional geral.

Figura 14: Camadas de uma Rede Neural Convolucional.

Fonte: Adaptado de (MANASWI, 2018).

Conforme Pattanayak e John (2017), as operações de convolução visam revelar informações mais específicas de algum sinal. Por exemplo, através do processo de convolução de uma imagem em tons de cinza com um filtro ou kernel (núcleo), um sinal de saída contendo as bordas da imagem original pode ser obtido. Pattanayak e John (2017) expressam que existem componentes típicos de uma rede neural convolucional, sendo eles camada de entrada, camada convolucional, função de ativação, camada de pooling e camadas inteiramente conectadas (fully connected layer).

Pattanayak e John (2017) relatam que a função de ativação para as CNNs são comumente funções ReLU, previamente discutidas. A dimensão do vetor de saída é a mesma que a entrada após passar por esta ativação. O autor diz ainda que a camada ReLU adiciona não-linearidade à rede ao mesmo tempo em que provê gradientes não saturados para as entradas positivas dos inputsda rede.

Camadas de pooling são úteis para reduzir a dimensão dos dados de entrada de uma maneira estruturada (RAMSUNDAR; ZADEH, 2018), sendo que Aghdam e Heravi (2017) dizem que o objetivo principal de uma camada de pooling é reduzir a dimensão do mapa de

(41)

atributos, sendo por esta razão denominado de downsampling (ou sub-amostragem). Buduma e Locascio (2017) relatam que no deep learning é comum encontrar na camada de pooling o uso da função max pooling. É dito reduzir agressivamente a dimensão de um mapa de atributos e afiar os atributos localizados, sendo algumas vezes inserido esta camada de max pooling logo após uma camada convolucional.

Em uma camada inteiramente conectada, os neurônios entre duas camadas adjacentes são totalmente conectados em pares, mas não compartilham de quaisquer conexões dentro de uma camada (SEWAK et al., 2018). É possível, portanto, dizer que os neurônios desta camada possuem conexões completas para todas as ativações da camada anterior. O autor cita ainda que a diferença entre uma camada fully connected em relação à camada convolucional, é o fato de que neurônios da camada convolucional são conectados à uma região local da entrada, além de também compartilhar parâmetros.

2.5 REGULARIZAÇÃO

De acordo com Ramsundar e Zadeh (2018), a regularização é um termo genérico estatístico para uma operação matemática que limita a memorização enquanto promove aprendizado generalizado. Kim (2017) ressalta que uma forma de se evitar o overfitting proveniente de modelos mais complexos conforme se adicionam camadas ocultas e, consequentemente mais pesos, é adicionar termos de regularização que provêm a magnitude dos pesos à função de custo.

Para Skansi (2018), regularizar significa adicionar um termo à função de erro, sendo que adicionar termos de regularização diferentes geram técnicas de regularização também diferentes, assim,

Eaprimor ado= Eoriginal+ Termo de Regularização. (25) Um exemplo de regularização que evita o overfitting é a utilização da técnica denominada dropout. No dropout, treina-se apenas uma quantidade de nós selecionados aleatoriamente ao invés de se treinar toda a rede. Em conformidade com Ramsundar e Zadeh (2018), perder um nó (drop) significa alterar a contribuição da função de ativação correspondente para zero e, consequentemente, o gradiente do nó perdido cai a zero também. Esta técnica tende a aumentar levemente o poder preditivo do modelo para novos dados.

McClure (2017) diz que a regularização L2 é uma função de perda (loss function) que se utiliza da função de perda da norma Euclidiana, e que equivale ao quadrado da diferença

(42)

do alvo. Em geral, uma função de perda é sinônimo da função de custo, exceto que a função de custo pode conter termos de regularização extras se comparado à função de perdas, embora nem sempre seja necessário. Já a regularização L1, conhecida como função de perda absoluta, equivale ao valor da norma absoluto (ao invés de se tomar o quadrado da diferença). O autor cita ainda que a regularização L1 é melhor que a regularização L2 para casos isolados porque não se torna tão íngreme para valores maiores, no entanto, por não ser tão suave no alvo, isto pode resultar em um algoritmo que não converge muito bem.

Heaton (2015) diz que a função de erro quadrático pode algumas vezes levar um tempo longo para ajustar apropriadamente os parâmetros de peso da rede, e, portanto, deve ser evitada. Em seu lugar, a função que teve origem na teoria da informação, cross-entropy, deve ser utilizada. O motivo da melhora desta nova função de erro é que ela é capaz de criar um gradiente muito mais íngreme para os erros. Dessa forma este trabalho utiliza-se da função cross-entropy, especialmente devido a estabilidade proporcionada se comparada às outras funções descritas.

2.6 ARQUITETURAS

De acordo com Zaccone et al. (2017), a primeira arquitetura para a CNN foi criada por Yann LeCun em 1998, chamada de LeNet5. Ela consiste de uma rede do tipo feed-forward com multicamadas e foi especificamente criada para classificar dígitos escritos à mão. Nela, existem três camadas convolucionais e duas camadas de pooling, alternadas em sequência, além das duas últimas que consistem da tradicional camada fully connected.

Outra arquitetura bastante conhecida foi denominada de AlexNet e, como cita Pattanayak e John (2017), foi a primeira arquitetura a vencer as outras com uma grande margem em 2012. Esta arquitetura consiste de cinco camadas convolucionais, camada de max pooling, dropout e três camadas fully connected. Em seu tempo, esta arquitetura era computacionalmente cara e assim o treinamento era feito em duas GPUs distintas.

Manaswi (2018) diz que nos últimos anos muitas arquiteturas foram desenvolvidas e obtiveram um grande progresso, sendo citadas arquiteturas como VGG16, VGG19, ResNet50, Xception e Inception V3. A última arquitetura, Inception V3, foi a escolha de implementação deste trabalho devido à sua excelente generalização de problemas bem como baixa necessidade de pré-processamento dos dados de entrada. A Figura 15 representa o modelo esquemático da arquitetura para a CNN utilizada neste trabalho.

(43)

Figura 15: Modelo esquemático da arquitetura Inception V3.

Fonte: Adaptado de (CHEN et al., 2018).

Dois dos principais motivos do sucesso ao se aplicar esta arquitetura escolhida são o uso de uma transferência de aprendizagem (transfer learning) bem como redução do custo computacional através da fatoração dos filtros convolucionais (factorization). De acordo com Szegedy et al. (2016), qualquer redução em custos computacionais implicam uma redução do número de parâmetros. Ainda conforme o autor citado, isto significa que, com a fatoração adequada é possível reduzir o número de filtros utilizados e, portanto, atingir um treinamento mais rápido. Além disso, pode-se usar a economia computacional e de memória para aumentar os tamanhos dos bancos de filtros da rede, mantendo a capacidade de treinar cada réplica de modelo em um único computador.

De forma prática, é possível por exemplo substituir um filtro de tamanho 5x5 (que possui 25 atributos) por dois filtros de tamanho 3x3 (que possuem um total de 18 atributos) sem perda de generalidade. A Figura 16 representa essa substituição do filtro convolucional.

Figura 16: Substituição de um filtro convolucional 5x5 por uma mini rede.

(44)

Para Shao et al. (2015), devido à disponibilidade limitada de dados de treinamento rotulados, isto é, classificados por humanos, os dados de treinamento que permanecem no mesmo espaço de atributos, ou possuem a mesma distribuição que os dados futuros, não possuem garantia de serem suficientes para evitar o problema do ajuste excessivo (overfitting). Em aplicações do mundo real, além dos dados no domínio de destino, os dados relacionados em um domínio diferente também podem ser incluídos para expandir a disponibilidade do conhecimento anterior sobre os dados futuros de destino (SHAO et al., 2015). Xia et al. (2017) relata que o transfer learning é uma nova técnica de machine learning que permite utilizar um conhecimento prévio sobre um determinado ambiente e aplicá-lo em um problema novo (diferente), mas que possua alguma relação com o antigo problema.

Nos últimos anos, com a transferência de aprendizagem sendo aplicada à categorização visual, alguns problemas típicos, como exemplo, observar a divergência em tarefas de reconhecimento de ação e o conceito de derivação em tarefas de classificação de imagem, podem ser eficientemente resolvidos (SHAO et al., 2015).

Como o modelo Inception V3 possui um treinamento prévio realizado pela empresa Googlecom diversas classes, é possível aplicar esta transferência do aprendizado para alcançar o objetivo deste trabalho, assim como cita Xia et al. (2017), em que se mantêm os parâmetros das camadas anteriores e remove-se a última camada do modelo Inception V3, retreinando apenas esta última camada. O número de nós de saída da última camada é igual ao número de categorias do dataset.

(45)

3 SOLUÇÃO PROPOSTA E TREINAMENTO DA REDE

3.1 IDENTIFICAÇÃO DE QUEDAS

Para a construção deste projeto, foi utilizado um microcontrolador Raspberry pi 3 (modelo B), provido de um processador ARM Cortex-A53 64-bits com frequência de clock de 1.2 GHz quad-core e 1 GB de memória RAM.

O sistema embarcado recebe imagens transmitidas por uma câmera GoPro modelo Hero 4através de uma rede IP. A solicitação da imagem pelo sistema embarcado dependerá do acionamento do sensor de ruído sonoro LM393, que habilita sua porta digital quando uma faixa em dB for detectada, indicando que uma provável queda tenha ocorrido. A faixa de operação foi determinada via experimentação e ajustada por meio de um potenciômetro.

Uma vez que o sensor é ativado e a imagem recebida pelo sistema embarcado, a aplicação pré-instalada OpenCV analisa a presença de um humano na imagem. Caso nenhum humano seja detectado, o processo finaliza, indicando que nenhuma pessoa foi encontrada. Se a resposta para um humano for positiva, há a possibilidade entre dois resultados, sendo eles queda ou não queda. Para a obtenção da resposta deste último caso, a imagem é processada pela rede CNN treinada através do suporte da biblioteca Tensorflow.

O script do algoritmo CNN foi desenvolvido em Python1 através da instalação de um ambiente virtual no sistema operacional Windows denominado Anaconda2, o qual permite a instalação bem como o uso composto do interpretador, bibliotecas e scripts. Através da execução deste script no Windows, um arquivo de extensão “pb”, necessário para que a Raspberry possa identificar as quedas, é criado. As ferramentas do ambiente virtual necessárias para a criação, execução e testes do script de detecção de quedas incluem a linguagem Python na versão 3.6, o compilador Jupyter console, o framework Tensorflow bem como a biblioteca OpenCV. Os testes referentes ao treinamento da rede neural aconteceram através da análise de gráficos como a função de perda, análise de overfitting, taxa de acerto preditivo, entre outros, gerados pela ferramenta tensorboard. O microcontrolador Raspberry permite a criação de ambientes (environments) que sejam sem dependências um do outro, desta forma, funções voltadas para os testes da rede, como o tensorboard não se fazem necessárias nele.

1https://www.python.org/ 2https://www.anaconda.com/

Referências

Documentos relacionados

nesta nossa modesta obra O sonho e os sonhos analisa- mos o sono e sua importância para o corpo e sobretudo para a alma que, nas horas de repouso da matéria, liberta-se parcialmente

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

3.3 o Município tem caminhão da coleta seletiva, sendo orientado a providenciar a contratação direta da associação para o recolhimento dos resíduos recicláveis,

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Invólucro campanulado, 8-10 mm alt., 13-15 mm diâm., trisseriado, brácteas involucrais dimorfas, as da série externa foliáceas, expandidas, de maior tamanho que as internas, às

servidores, software, equipamento de rede, etc, clientes da IaaS essencialmente alugam estes recursos como um serviço terceirizado completo...

Promovido pelo Sindifisco Nacio- nal em parceria com o Mosap (Mo- vimento Nacional de Aposentados e Pensionistas), o Encontro ocorreu no dia 20 de março, data em que também

Os caçadores tinham estendido uma grossa corda ligada a uma rede, no caminho por onde o leão costumava passar, de maneira que, quando o leão tropeçou na corda, a rede caiu-- lhe em