• Nenhum resultado encontrado

Arquiteturas deep learning aplicadas em veículos autônomos

N/A
N/A
Protected

Academic year: 2021

Share "Arquiteturas deep learning aplicadas em veículos autônomos"

Copied!
44
0
0

Texto

(1)

Universidade Federal Fluminense

Instituto de Computação

Departamento de Ciência da Computação

Lucas Hippertt Stuart Boden

ARQUITETURAS DEEP LEARNING APLICADAS EM

VEÍCULOS AUTÔNOMOS

Niterói-RJ

2017

(2)

ii LUCAS HIPPERTT STUART BODEN

ARQUITETURAS DEEP LEARNING APLICADAS EM VEÍCULOS AUTÔNOMOS

Monografia apresentada ao Departamento de Ciência da Computação da Universidade Federal Fluminense, como requisito parcial para obtenção do Grau de Bacharel em Ciência da Computação.

Orientador: Prof. Dr. Luis Martí Orosa

Niterói-RJ 2017

(3)

Ficha Catalográfica elaborada pela Biblioteca da Escola de Engenharia e Instituto de Computação da UFF

B666 Boden, Lucas Hippertt Stuart

Arquiteturas deep learning aplicadas em veículos autônomos / Lucas Hippertt Stuart Boden. – Niterói, RJ : [s.n.], 2017.

42 f.

Projeto Final (Bacharelado em Ciência da Computação) – Universidade Federal Fluminense, 2017.

Orientador: Luis Martí Orosa.

1. Veículo autônomo. 2. Aprendizado de máquina. 3. Inteligência artificial. I. Título.

(4)
(5)
(6)

vi

Agradecimentos

Gostaria de agradecer à minha avó Lucia, que foi como mãe e pai para mim e meus irmãos, que ela esteja bem aonde quer que esteja. À minha mãe Marcelle por toda luta e sacrifício para conseguir formar os seus três filhos e ser o exemplo que é para todos os três. Aos meus tios Márcia e Ruben por terem cuidado de mim enquanto morei com eles e por sempre estarem perto em momentos de necessidade. À minha avó Laura por ser esse exemplo de amor ao próximo, por todas as vezes que acordou cedo e me viu com sono e me animava com um abraço, um beijo e um pão com manteiga. À minha namorada Jaqueline, por ser meu suporte e meus sorrisos quando o desespero me alcançava. Ao meu orientador, professor Luis Martí, por todo o esforço e dedicação ao me orientar para que esse trabalho fosse feito da melhor forma possível. E a todos os que confiaram em mim e me auxiliaram de alguma forma para que conseguisse alcançar o meu objetivo.

(7)

vii

Resumo

Existem diversos modelos e parâmetros que podem ser utilizados ao classificarmos imagens utilizando Deep Learning. Essas diversas variações afetam diretamente a qualidade das predições realizadas, e no contexto de veículos autônomos, esses valores podem ser a dife-rença entre o carro se manter na estrada ou não. Por este motivo, este projeto visa realizar um estudo de como a utilização de diferentes técnicas e arquiteturas de Deep Learning afetam a qualidade da predição do ângulo que o veículo deve tomar para a tarefa de direção autônoma, através da realização de experimentos teóricos e práticos, com o intuito de obter resultados que possam ser utilizados tanto na tarefa de direção autônoma de veículos quanto em tarefas semelhantes.

Palavras-chave: Deep Learning. Veículos Autônomos. Aprendizado de Máquina. Inteligência Artificial

(8)

viii

Abstract

There are several models and parameters that can be used to classify images using Deep Learning. These variations directly affect the quality of the assumptions made, and in context of autonomous vehicles, these values can be deferred in the car whether to stay on the road or not. For this reason, this project aims to perform a study of how the use of techniques and architectures of Deep Learning affect the quality of the angle prediction that the vehicle must take to the task of autonomous steering, through the realization of theoretical experiments and practical, in order to obtain results that are used both in the task of autonomous steering of vehicles and in similar tasks.

(9)

Sumário

Resumo vii Abstract viii Lista de Figuras xi 1 Introdução 1 1.1 Descrição do problema . . . 1 1.2 Motivação . . . 2 1.3 Objetivo . . . 2 1.4 Organização . . . 3 2 Conceitos Básicos 4 2.1 Aprendizado de Máquina . . . 4 2.2 Redes Neurais . . . 5 2.3 Multilayer Perceptron . . . 6 2.3.1 Função de erro . . . 6 2.3.2 Backpropagation . . . 7 2.3.3 Overfitting . . . 8 2.4 Aprendizagem profunda . . . 8 2.4.1 Funções de ativação . . . 10

2.4.2 Redes neurais convolucionais . . . 13

3 Deep Learning para Veículos Autônomos 16 3.1 Obtenção dos dados . . . 19

3.2 Pré-processamento . . . 20

3.2.1 Aumento de dados . . . 20 ix

(10)

x 3.2.2 Recorte . . . 21 3.3 Treinamento . . . 22 4 Experimentos e Resultados 24 5 Conclusões 29 5.1 Trabalhos Futuros . . . 29

(11)

xi

Lista de Figuras

2.1 Exemplo do funcionamento do dropout. Fonte: [Srivastava et al. 2014]. . . 9 2.2 Exemplo de uma arquitetura CNN para classificação de imagens. Fonte: [Britz

2015] . . . 13 2.3 Exemplo de camada de convolução. Fonte: [Pacheco 2017]. . . 14 2.4 Exemplo de camada de agrupamento utilizando a função de máximo. Fonte:

[Boureau, Ponce e LeCun 2010]. . . 15 3.1 Arquitetura original. CNN com 9 camadas, aproximadamente 27 milhões de

conexões e 250 mil parâmetros. Fonte: [Bojarski et al. 2016] . . . 18 3.2 Vistas laterais e central das câmeras do veículo no simulador. Fonte: Próprio

autor. . . 19 3.3 Distribuição inicial dos dados obtidos. Fonte: [Pagadala 2017]. . . 20 3.4 Exemplo de imagem após a operação de rotação. Fonte: [Pagadala 2017] . . . 21 3.5 Exemplo de imagem após a operação de ajuste de brilho. Fonte: [Pagadala

2017] . . . 21 3.6 Exemplo de imagem após a operação de crop. Fonte: [Pagadala 2017] . . . 22 3.7 Arquitetura CNN simplificada utilizada no experimento. Fonte: Próprio autor 23 4.1 Gráfico dos erros de validação em cada configuração estudada. Fonte: Próprio

(12)

Capítulo 1

Introdução

Uma das principais causas do estresse nos dias atuais está relacionada ao trânsito [Ibope 2016]. Dirigir tornou-se uma tarefa complexa, exigindo paciência e removendo das pessoas horas do seu dia por causa do trânsito, fazendo com que muitos prefiram nem sair de casa para evitar o estresse, enquanto outros optam por entrar em ônibus com a esperança de irem sentados para poder evitar um pouco do estresse causado pela direção.

A introdução de veículos autônomos no mercado, com capacidade para dirigir de forma igual ou até melhor do que humanos, faria com que o número de acidentes fosse reduzido e o tempo gasto dirigindo fosse gasto com outras tarefas, como por exemplo dormir, melhorando assim a qualidade de vida da população.

Atualmente muitos estudos são feitos na área de veículos autônomos, e uma das técni-cas mais utilizadas recentemente, e sobre a qual esse trabalho se desenvolveu, é a de utilizar diferentes tecnologias da área de Deep Learning para fazer com que o software responsável pela direção do veículo aprenda a dirigir a partir de dados obtidos em simulações com pessoas reais. Essa técnica onde o software aprende uma determinada tarefa a partir da observação do comportamento de seres humanos solucionando essa tarefa é chamado de aprendizado por imitação.

1.1

Descrição do problema

Ao se estudar alguns dos modelos e técnicas atuais que utilizam Deep Learning para a tarefa de predição de direção para veículos autônomos, observa-se a necessidade da utilização de diferentes técnicas que visam solucionar problemas comuns de Machine Learning, além de

(13)

2 otimizar o processo de simular a ação humana na direção de veículos. Ao estudar as soluções adotadas para a resolução dos problemas nessa simulação, observa-se que os métodos de resolução de problemas e de otimização não se aplicam apenas à tarefa de direção de veículos, eles são replicáveis para quase todas as outras tarefas que utilizam Machine Learning.

1.2

Motivação

A área de Deep Learning é atualmente uma das mais promissoras segundo o Panetta 2017 e ao se estudar essa área, observa-se um aumento nos estudos sobre a mesma muito recente, guiado pelo barateamento e aumento no poder de processamento de sistemas com-putacionais e no grande aumento da disponibilidade de dados.

Dentro dessa área, uma das aplicações mais estudadas é a de veículos autônomos. Grandes empresas do setor tecnológico, como a Google, e do setor automobilístico, como a Tesla, investem fortemente no desenvolvimento de novos modelos que possam fazer com que um carro não precise de nenhuma interferência humana para ser dirigido. Recentemente, observando a qualidade das tecnologias que utilizam inteligência artificial, a Volkswagen fez uma parceria com a NVIDIA para utilizar essa tecnologia em diferentes campos de sua em-presa, além da aplicação em veículos autônomos [Gabriel 2017].

Estudando e observando modelos já existentes para a tarefa de simulação de direção de veículos, observa-se a frequente necessidade de combinações de técnicas para solução de problemas, que muitas vezes não são solucionados, são apenas minimizados.

1.3

Objetivo

Neste trabalho iremos estudar como diferentes técnicas e algoritmos de Deep Learning podem ser utilizados para prever qual direção um veículo autônomo deve tomar, ou seja, se ele deve virar para a esquerda, para a direita ou seguir reto, baseado em imagens obtidas através de câmeras acopladas ao mesmo. Será realizado um experimento através da combinação da utilização de diferentes valores na função de dropout e quatro diferentes funções de ativação; ReLU, SELU, ELU e LReLU, aplicando esses valores e essas funções em dois modelos distin-tos utilizando redes neurais convolucionais, o primeiro com nove camadas e o segundo com apenas três.

(14)

3 Iremos analisar como a utilização dessas técnicas, tais como o dropout, o aumento de dados e diferentes funções de ativação afetam a predição da direção que o carro deve tomar baseado em imagens tiradas de diferentes ângulos do carro sendo dirigido por humanos. Fa-remos um estudo empírico acerca deste assunto, demonstrando o resultado obtido através de experimentos.

O objetivo geral deste projeto é obter resultados e análises que possam ajudar a solu-cionar problemas recorrentes em modelos de Deep Learning na tarefa de simulação da direção de veículos autônomos, para posteriormente replicar as soluções encontradas especificamente para essa tarefa, para outras tarefas utilizando modelos semelhantes e estudar seus compor-tamentos.

1.4

Organização

Neste capítulo foi apresentado o tema da monografia, sua importância e a motivação por trás da mesma.

No capítulo 2 será feita a introdução a alguns conceitos importantes de serem com-preendidos, antes de se aprofundar mais na leitura da monografia.

No capítulo 3 é apresentado o modelo base utilizado e o processo de obtenção e tra-tamento de imagens. A partir do modelo, são demonstradas as alterações feitas no mesmo, gerando novos modelos, com parâmetros diferentes.

No capítulo 4 são demonstrados os dados do experimento, explicando como o mesmo foi obtido e quais informações podem ser obtidas a partir do experimento.

No capítulo 5 é realizada a conclusão do trabalho, apresentando como a experimenta-ção abordada contribui para o objetivo do projeto, as limitações dos experimentos realizados e quais devem ser os próximos passos para o estudo do tema proposto.

(15)

Capítulo 2

Conceitos Básicos

Neste capítulo abordaremos questões básicas que devem ser compreendidas para en-tendimento do restante do trabalho.

2.1

Aprendizado de Máquina

Aprendizado de Máquina, tradução do inglês Machine Learning, é uma área da ciência da computação, sendo subárea da inteligência artificial, que estuda como um computador pode exercer funções de forma mais natural possível, sem que pareça que foi explicitamente programado para isso. De forma simples, os algoritmos de Machine Learning permitem que os computadores tomem decisões inteligentes baseados em comportamento que não foi direta-mente programado, mas sim aprendido ou adaptado por meio de algum conhecimento [Reis 2017].

Existem diversas classes de problemas de Machine Learning, sendo as mais comuns a classificação (onde ao se entregar um determinado dado nunca visto antes para o algoritmo de Machine Learning, ele deve ser capaz de dizer à qual ou quais das já conhecidas classes do problema esse novo dado pertence), clusterização (onde o objetivo é agrupar os dados em classes de acordo com suas semelhanças, sem conhecer previamente as classes existentes) e regressão (que é semelhante à classificação, mas os valores a serem previstos são contínuos e não discretos como na classificação), que será o que possuirá mais enfoque neste trabalho.

(16)

5

2.2

Redes Neurais

Existem diferentes algoritmos e técnicas de Machine Learning, sendo uma das princi-pais delas as redes neurais artificiais, ou simplesmente redes neurais.

O trabalho com redes neurais tem sido motivado desde o começo pelo reconhecimento de que o cérebro de animais processa informações de uma forma inteiramente diferente do computador digital convencional. O cérebro é um computador, um sistema de processamento de informação altamente complexo, não linear e paralelo [Haykin 1994].

Além disso, o cérebro possui a capacidade de se adaptar ao ambiente em que se en-contra e aprender com os experimentos passados. Somos capazes de, por exemplo, identificar um rosto conhecido no meio de um ambiente não conhecido em questão de milissegundos, ou então um morcego que é capaz, através do sinal recebido pelo seu sonar, identificar o ta-manho da sua presa, a velocidade em que ela se encontra e a distância até a mesma [Suga 1990].

Com a percepção desse alto poder de processamento do cérebro, cientistas começaram a tentar replicar esse processamento para os computadores, criando assim as redes neurais. A primeira rede neural conhecida foi criada em 1943 [McCulloch e Pitts 1943], utilizando circuitos digitais para replicar o funcionamento dos neurônios.

A rede então é composta por vários neurônios, onde cada neurônio é uma unidade de processamento de informação. Para realizar esse processamento, são enviados para esses neurônios sinais de entrada relativos aos dados que estamos utilizando para realizar o trei-namento da rede. Esses sinais são então multiplicados por pesos que são relacionados a cada canal de entrada do neurônio. A atualização desses pesos é o que é chamado de aprendizado. Após a multiplicação entre os pesos e os sinais de entrada, é adicionado um valor de viés, visando permitir uma melhor adaptação, por parte da rede neural, ao conhecimento a ela fornecido. No final, o resultado dessas operações é dado como entrada para uma função, cha-mada de função de ativação, que serve para definir se a informação obtida naquele neurônio é importante ou não para a tarefa a ser realizada.

A maneira pela qual os neurônios são estruturados está intimamente relacionada com o algoritmo de aprendizagem utilizado para treinar a rede [Haykin 1994].

Existem três tipos principais de estruturas para redes neurais. A estrutura de redes alimentadas adiante com duas camadas, onde os neurônios são organizados em camadas, é estruturada de forma que haja uma camada de entrada e uma camada de saída, sendo

(17)

6 que a camada de entrada recebe os sinais de entrada dos dados e a camada de saída recebe como entrada a saída da camada de entrada. Essa estrutura é conhecida como Perceptron [Rosenblatt 1961].

Outro tipo são as redes alimentadas diretamente com múltiplas camadas, onde além das camadas de entrada e saída, são adicionadas camadas intermediárias, também conhecida como camada oculta, que possuem o objetivo de extrair estatísticas de ordem elevada, o que é muito útil em problemas com uma grande quantidade de neurônios na camada de entrada. Esse tipo de estrutura é geralmente conhecido como Multilayer Perceptron.

A terceira forma estrutural são as redes neurais recorrentes, onde pelos menos uma saída de um dos neurônios das camadas posteriores é utilizado como entrada para neurônios de camadas anteriores, processo esse chamado de realimentação. Essa terceira estrutura é conhecida comumente como rede recorrente (Recurrent Neural Network).

2.3

Multilayer Perceptron

Como visto na seção anterior, o Multilayer Perceptron é uma topologia de rede neural que funciona com três ou mais camadas de neurônios [Rumelhart, Hinton e Williams 1985]. No Multilayer Perceptron, o processo de aprendizagem é realizado de uma maneira supervi-sionada, onde os dados de treinamento possuem conhecimento prévio do valor ou classe a ser estimada, conhecido como retropropagação (mais comumente chamado pelo seu termo em inglês backpropagation), que utiliza uma função de erro para calcular a diferença entre o resultado obtido e o esperado.

Entretanto, o uso dessa técnica de aprendizado costuma causar um grande problema para o treinamento de redes neurais, o sobreajuste, que é mais conhecido pelo seu termo em inglês overfitting.

2.3.1

Função de erro

A função de erro é a unidade de medida utilizada para saber o quão bem a rede neural está em relação aos dados de treinamento e o resultado esperado [Phylliida 2016].

A função de erro mais utilizada para o backpropagation é a função conhecida como erro quadrático médio ou MSE (do inglês mean squared error). Ela é calculada realizando a substração entre o resultado obtido pela rede neural e o resultado esperado e elevando esse

(18)

7 valor obtido ao quadrado. Esse processo é realizado para todos os exemplos de entrada da rede e então são somados e é calculada uma média para obter o valor final do erro para aquela etapa do treinamento.

A função MSE é equacionada conforme

E = PN k=1(yk− y 0 k)2) N . (2.1)

2.3.2

Backpropagation

O backpropagation é um algoritmo para aprendizado supervisionado que utiliza uma estratégia conhecida como descida do gradiente. Dada uma rede neural artificial e uma função de erro, o método calcula o gradiente da função de erro com respeito aos pesos da rede neural [Rumelhart, Hinton e Williams 1985].

O algoritmo de treinamento de uma rede neural utilizando backpropagation funciona em três etapas. Na primeira etapa, conhecida como passagem dos padrões de treinamento (ou pelo termo em inglês feedforward, os sinais de entrada são passados para a primeira camada da rede. Esses sinais são passados para a camada seguinte, de forma que o valor recebido por cada neurônio seja de acordo com

in = v +

N

X

i=1

wi,jxi, (2.2)

onde v é o valor do viés associado ao neurônio que está recebendo o sinal, wi,j é o valor do

peso relacionado à conexão entre o neurônio i da camada anterior e o neurônio j da camada que está recebendo o sinal e xi é o valor da saída da camada anterior. Esse valor então é

passado para a função de ativação do neurônio, encontrando um valor f (in) que passará esse novo valor para a camada seguinte, até chegar na última camada, que é a camada de saída. Na camada de saída, cada neurônio realizará o mesmo cálculo que os neurônios das camadas ocultas, chegando a um resultado final y.

Na segunda etapa, cada neurônio de saída calcula um valor ∂ = (ye − y)f0(in), onde ye é a saída esperada para aquele neurônio, y é a saída efetiva do neurônio, f0() é a derivada da função de ativação do neurônio e in é a entrada recebida pelo neurônio, calculado na etapa 1. Após achar esse valor, o neurônio deve calcular o seu termo de correção de pesos, utili-zando a fórmula ∆w = α∂f (in), onde α é chamado de taxa de aprendizagem, um parâmetro

(19)

8 geralmente entre (0, 1], ∂ o valor obtido anteriormente e f (in) o valor da saída da camada an-terior. O neurônio também deve calcular o seu termo de correção de viés, conforme fórmula ∆b = ∂α.

Nos neurônios da camada oculta, o cálculo deve ser feito da seguinte forma. Primeiro calcula o ∂, conforme fórmula ∂in =PN

k=i(∂kwk), onde ∂ké o valor calculado nos neurônios da

camada superior que possuem conexão com o neurônio k onde está sendo realizado o cálculo e wko peso do neurônio que possui relação com o neurônio onde está sendo feito o cálculo.

Após esse cálculo, é encontrado o valor ∂j = ∂inf0(in), que então é multiplicado pelo

valor da taxa de aprendizagem e pelo valor de entrada no neurônio, achando um valor de taxa de correção de peso ∆w e achando o valor da taxa de correção de viés através da fórmula ∆v = α∂k. Na terceira fase, os pesos e viéses antigos são adicionados às taxas de correção de

peso e vieses, respectivamente, para então encontrar os novos valores.

2.3.3

Overfitting

O sobre-ajuste, ou overfitting, é um dos principais problemas em redes com múltiplas camadas e do aprendizagem de máquina em geral. O overfitting se dá quando uma rede sim-plesmente decora o comportamento dos dados de entrada no treinamento e tenta replicá-los sempre. Dessa forma, a rede funciona muito bem para dados similares aos utilizados no trei-namento, mas não tão bem para entradas com comportamentos diferentes dos já conhecidos. Existem diferentes técnicas utilizadas para evitar esse comportamento indesejado, como pa-rar o treinamento quando o desempenho nos dados de validação está ficando pior, ou técnicas de penalização de pesos como a regularização L1 e L2. [Srivastava et al. 2014] Entretanto, ire-mos utilizar uma técnica conhecida como dropout, que funciona permitindo que os valores de saída dos neurônios na camada anterior ao dropout apenas sejam passados para a camada se-guinte se um valor gerado aleatoriamente for maior do que o parâmetro do dropout, chamado de probabilidade de permanência (em inglês keep probability).

2.4

Aprendizagem profunda

Aprendizagem profunda, tradução do seu termo em inglês Deep Learning, é uma téc-nica de Machine Learning que visa ensinar ao computador a fazer o que os humanos fazem naturalmente: aprender a partir de exemplos [Goodfellow, Bengio e Courville 2016]. Com o

(20)

9

(a) Rede completamente conectada. (b) Rede depois do dropout.

Figura 2.1 – Exemplo do funcionamento do dropout. Fonte: [Srivastava et al. 2014]. estudo e experiências em Machine Learning, foi observado que a utilização de mais camadas dentro de uma rede neural gera resultados muito mais precisos para as tarefas desejadas. Isso se deve ao fato de que redes com mais camadas possuem maiores níveis de não-linearidade, enquanto que redes com menos camadas possuem maior dificuldade para obter esses níveis. Com isso, muitos cientistas pensaram que bastaria adicionar novas camadas aos seus mode-los que resolveriam o problema. Porém, isso não ocorre de fato. Um dos motivos para que isso não ocorra é devido à natureza do backpropagation.

O backpropagation é realizado utilizando derivadas. Pelo que foi visto no tópico de backpropagation, se possuirmos muitas camadas na rede, a regra da cadeia aplicada para cal-cular o fator de correção daquela camada se tornará uma multiplicação tão grande quanto o número de camadas após a camada onde estamos calculando o fator na rede. Dessa forma, caso o valor das derivadas seja um número pequeno, a multiplicação de diversos números pequenos convergirá para um número muito próximo de 0, que mesmo que não chegue a zero, devido a limitação de representação dos computadores, este número será tratado como 0, fazendo com que os pesos das camadas inicias não sejam alterados, ou seja, não há apren-dizado nas camadas iniciais, tornando elas camadas inúteis. Esse tipo de problema é chamado de problema do desaparecimento do gradiente, ou em inglês vanishing gradient problem [Ho-chreiter 1991, Ho[Ho-chreiter et al. 2001]. Para minimizar esse problema, são utilizadas funções de ativação que apresentem menos problema de saturação, dependendo da necessidade do aumento no número de camadas da rede.

(21)

10 Outro problema do Deep Learning é a necessidade de uma grande quantidade de da-dos. Quanto maior for a necessidade de generalização do problema, maior a quantidade de dados necessários. O problema da necessidade de grande quantidade de dados não é a obten-ção dos dados em si, pois com a internet, muitos dados estão disponíveis, mas as arquiteturas de Deep Learning funcionam melhor se os dados disponíveis forem classificados com rela-ção à tarefa que desejamos, e esses dados são mais difíceis de arrumar, pois requisitam um especialista que classifique-os antes de serem enviados para treinamento na rede. Por isso, geralmente se recorre a técnicas que visam ajustar os dados que já se possui de forma que eles funcionem como novos dados, como por exemplo rotacionar uma imagem de um gato na tarefa de reconhecer uma figura. A figura contínua sendo a de um gato, mas para a rede é como uma nova figura. Isso serve também para informar indiretamente à rede que a posição do gato na figura não interfere na tarefa de classificação.

Existem diferentes técnicas de Deep Learning. A primeira já foi vista no tópico anterior, que são os Multilayer Perceptrons. Outras duas muito populares são as redes neurais convo-lucionais (CNN, do inglês Convolutional Neural Network) e redes neurais recorrentes (RNN, do inglês Recurrent Neural Networks). E existe também uma quarta, que tem ganhado muita força nos últimos anos que são as redes geradoras adversárias (GANs, do inglês Generative Adversarial Nets), que possuem esse nome pelo fato de possuírem duas redes sendo treina-das ao mesmo tempo, uma primeira, que gera instâncias falsas, e uma segunda, que tenta diferenciar entre tais instâncias falsas (aquelas geradas pela primeira rede) e as entradas de fato. [Goodfellow et al. 2014]

2.4.1

Funções de ativação

Como visto anteriormente, um dos principais problemas dos modelos de Deep Lear-ning é o vanishing gradient problem. Para solucionar esse problema, muitos estudos estão sendo feitos, em sua maioria voltados para a utilização de diferentes funções de ativação nos neurônios das camadas. A seguir são demonstradas algumas dessas funções e como ela auxi-liam na minimização desse problema, visto que ele ainda é um problema sem solução.

(22)

11 2.4.1.1 Unidade linear retificada (ReLU)

A função de ativação ReLU, do inglês Rectified Linear Unit é dada conforme

f (x) = max(0, x) . (2.3) Essa função é bastante utilizada, pois como visto anteriormente, para treinarmos redes neurais é necessário tanto fazer cálculos com a função de ativação quanto com a derivada da mesma. Observando a função ReLU, observa-se que calcular o valor da função é simples computacionalmente, e a derivada dela também, pois a derivada será 1 se x for positivo e 0 se x for negativo. Dessa forma, mesmo que tenhamos um grande número de multiplicações, o cálculo será simples e rápido. Porém, essa função tem um problema. Os neurônios com essa função de ativação são desativados quando a entrada deles é negativa. Isso pode em muitos casos bloquear o processo de backpropagation pois o valor dos gradientes será 0 após uma entrada negativa para a função de ativação [Maas, Hannun e Ng 2013]. Além disso, ela não é derivável para o valor 0, de forma que pode causar problemas para o processo de backpropagation.

2.4.1.2 Unidade linear retificada vazada (LReLU)

A fórmula para a função de ativação LReLU, do inglês Leaky Rectified Linear Unit, é dada abaixo: f (x) = max(αx, x) (2.4) e derivada: f0(x) =      1 se x ≥ 0, α em caso contrário. (2.5)

Essa função foi proposta [Maas, Hannun e Ng 2013] como uma forma de solucionar o problema da ReLU, multiplicando o valor de entrada por um número muito pequeno, ge-ralmente próximo a 0.2, fazendo com que tanto o valor da função para entradas negativas quanto a sua derivada não zerem. Entretanto, essa função não soluciona o vanishing gradient problem visto que a derivada para números negativos também será um número pequeno.

(23)

12 2.4.1.3 Unidade linear exponencial (ELU)

A função ELU, do inglês Exponential Linear Unit [Clevert, Unterthiner e Hochreiter 2015] é dada conforme à fórmula:

f (x, α) =      x se x ≥ 0,

α(ex − 1), em caso contrário.

(2.6) f0(x, α) =      1 se x ≥ 0, f (x, α) + α em caso contrário. (2.7)

ELU também soluciona o problema da ReLU de desativar um neurônio com entrada negativa, entretanto, por ser necessário realizar cálculos de exponencial, ela se torna um mé-todo mais lento se comparado a LReLU e ReLU, mas conforme mostrado no artigo de proposta da mesma [Maas, Hannun e Ng 2013], ela possui melhor performance quando comparadas com as outras duas.

2.4.1.4 Unidade linear exponencial escalonada (SELU)

A função SELU, do inglês scaled exponential linear unit, é bem parecida com a fun-ção ELU, mas ela possui uma pequena diferença conforme mostrado nas fórmulas abaixo, da função e de sua respectiva derivada, onde por convenção, λ = 1.0507 e α = 1.6732.

f (x) = λ      x se x > 0

α(ex − 1), em caso contrário.

(2.8) e derivada: f0(x) = λ      1 se x > 0

αex, em caso contrário.

(2.9)

A ideia principal dessa função é realizar a normalização dos dados dentro da função, não sendo necessário técnicas externas para realizar essa tarefa.

(24)

13

Figura 2.2 – Exemplo de uma arquitetura CNN para classificação de imagens. Fonte: [Britz 2015]

2.4.2

Redes neurais convolucionais

Redes neurais convolucionais (CNN, do inglês Convolutional Neural Networks) [LeCun et al. 1989], são um tipo de modelo de Deep Learning amplamente utilizado para tarefas de classificação e aprendizado através de imagens. A ideia do modelo é diminuir o tamanho das imagens ao mesmo tempo que extrai-se delas características não conhecidas das camadas anteriores e então, a partir dessas características, obter a informação desejada, como por exemplo reconhecer qual objeto está presente na imagem, ou, no exemplo deste trabalho, descobrir qual direção o veículo deve seguir.

Elas foram primeiramente propostas em 1998 [LeCun et al. 1989], sendo utilizada para reconhecer dígitos escritos a mão, atingindo uma taxa de acerto de de 99,2%, atingindo assim um novo estado da arte. A Figura 2.2 mostra uma arquitetura típica de CNN.

2.4.2.1 Camada de convolução

Essa camada é a camada mais importante da rede (Figura 2.3). Ela possui a maior parte do processamento da rede convolucional, sendo também responsável por dar o nome ao modelo. Nela, é passada uma matriz de filtro de tamanho definido, contendo valores que podem ser interpretados como pesos. Essa matriz é multiplicada pela entrada da camada, fazendo multiplicações matriciais percorrendo toda a imagem, da esquerda para a direita e de baixo para cima, sempre andando um número pré-definido de pixeis, conhecido como passo, ou em inglês stride. Essa camada é capaz de identificar características específicas de pequenas partes da imagem. Ela também é capaz de aprender, já que os valores da matriz de filtros são tratados como pesos, e como o filtro é o mesmo em todas as partes da imagem, esse peso é chamado de peso compartilhado, tipo de peso que reduz a quantidade de operações de aprendizagem.

(25)

14

Figura 2.3 – Exemplo de camada de convolução. Fonte: [Pacheco 2017]. 2.4.2.2 Camada de agrupamento

A camada de agrupamento, tradução do inglês para pooling layer, é uma camada seme-lhante à camada de convolução, onde é passado um filtro pelos dados de entrada da camada sendo guiado pelo stride. Entretanto, ao contrário da camada de convolução onde é feito uma multiplicação matricial, o filtro da camada de agrupamento é uma função que é aplicada ao dado de entrada. Existem diferentes funções utilizadas para essa tarefa, sendo a mais utili-zada a função de máximo, que faz com que, dentro do pedaço do dado sendo analisado pelo filtro, apenas o maior valor seja passado para a camada seguinte, fazendo assim com que seja passado apenas o valor que em tese possuiria mais impacto para a tarefa desejada na utilização do modelo. A Figura 2.4 mostra um exemplo do processo antes descrito.

(26)

15

Figura 2.4 – Exemplo de camada de agrupamento utilizando a função de máximo. Fonte: [Boureau, Ponce e LeCun 2010].

2.4.2.3 Camada totalmente conectada

A camada totalmente conectada, como o próprio nome já sugere, é completamente conectada com a camada anterior [Pacheco 2017], ou seja, todos os neurônios de uma ca-mada se conectam com todos os neurônios da caca-mada seguinte. Como todos os neurônios de uma camada precisam se conectar com todos os da anterior, e geralmente as camadas total-mente conectadas vem após as camadas de convolução, e as camadas de convolução possuem saídas com profundidade, é necessário que seja realizado um processo de aplainar, também conhecido como sua pronuncia em inglês flatten, para que todos os neurônios da camada de convolução consigam se conectar aos neurônios da camada totalmente conectada. O principal objetivo dessa camada é realizar as tarefas que desejamos na nossa rede, tanto de classificação quanto de regressão, baseados nas características extraídas pelas camadas anteriores.

(27)

Capítulo 3

Deep Learning para Veículos

Autônomos

Veículos autônomos são há muito tempo temas de ficção científica e discutidos pela população. Entretanto, eles não estão apenas no mundo das ideias. Grandes empresas de tec-nologia e do ramo automobilístico estão unindo forças para concretizar essa ideia, já havendo alguns modelos capazes de dirigir durante longos períodos de tempo sem acidentes provo-cados pelo mesmo, sob determinadas condições, como é o caso do carro desenvolvido pela Google [Waymo 2017], que atualmente já dirigiu mais de 126.000 milhas sem ação externa.

Existem cinco diferentes níveis de autonomia na direção de veículos. Autonomia de funções específicas, como estacionamento, autonomia de funções integradas, como manter o veículo no centro da pista, autonomia limitada, quando o veículo transfere para o usuário a direção do veículo, por se encontrar em uma situação de perigo ou que não possui conheci-mento, autonomia sobre condições específicas, quando o veículo dirige sem a ajuda externa, mas apenas em condições específicas, como pistas com marcações, e autonomia total, quando o veículo é capaz de dirigir sem qualquer necessidade de intervenção humana sobre qualquer condição [Litman 2017].

Atualmente, o estado da arte para veículos autônomos é a utilização de combinações de técnicas de Deep Learning para realizar tarefas como detecção de pedestres, detecção de pista, detecção de veículos, identificação de sinais luminosos, etc. Como as principais tarefas de direção podem ser traduzidas como tarefas de reconhecimento de imagens, os modelos mais utilizados são CNN, que foram recentemente impulsionados pelo grande poder de pa-ralelismo de processamento das GPU e pela massiva quantidade de dados disponível através

(28)

17 da internet.

Os primeiros estudos feitos utilizando Deep Learning para a tarefa de simular a direção humana de um veículo foram feitos por Pormelau [Pormelau 1989], que utilizou um modelo com três camadas totalmente conectadas para, tendo como entradas para a sua rede vídeos feitos por uma câmera acoplada ao veículo e uma distância entre o veículo e os objetos da cena, calculada através de um sensor de laser acoplado ao veículo. Como foi um estudo de 1989, houveram dificuldades relacionadas à obtenção de dados, armazenamento dos dados, processamento, o que dificultou o funcionamento do modelo, mas de qualquer forma ele ser-viu como base para estudos futuros. Esse modelo criado por Pormelau ficou conhecido como Alvinn, sigla em inglês para veículo terrestre autônomo utilizando redes neurais.

Cientistas da Agência de Projetos de Pesquisa Avançada de Defesa (DARPA) [DARPA 2017] dos Estados Unidos, utilizando os estudos de Pormelau como base, desenvolveram um projeto conhecido como DAVE, sigla em inglês para veículo autonômo da Darpa, que foi trei-nado utilizando vídeos capturados por duas câmeras acopladas a um veículo guiado por hu-manos, que apenas davam o sinal de esquerda ou direita para o veículo, como forma de simular a direção. Entretanto, DAVE não obteve marcas tão expressivas, conseguindo apenas andar em média vinte metros em estradas complexas.

Alguns meses depois, o projeto DAVE foi retomado por uma equipe da NVIDIA, co-mandada pela Karol Zieba [Bojarski et al. 2016], visando aplicar os estudos anteriores para realizar testes em estradas públicas. Eles desenvolveram um modelo CNN com cinco camadas de convolução e três camadas totalmente conectadas, além de uma camada inicial de norma-lização, utilizada para acelerar e otimizar o processo de treinamento. O modelo utilizado se encontra na figura 3.1.

Com esse modelo, foi possível percorrer dez mil milhas em uma estrada sem nenhuma intervenção humana. Também foi possível percorrer ruas urbanas com apenas 2% do tempo sendo necessária intervenção humana, sem contar as mudanças de faixa. Esses resultados foram obtidos com apenas setenta e duas horas de captura de vídeo para treinamento da rede.

A partir desse estudo da NVIDIA, foram desenvolvidas diferentes implementações que visam replicar ou melhorar os resultados obtidos pela equipe.

Os modelos estudados para esse projeto utilizaram de uma ideia conhecida como aprendizagem por imitação, que visa imitar o comportamento humano em uma determinada

(29)

18

Figure 4: CNN architecture. The network has about 27 million connections and 250 thousand parameters.

To remove a bias towards driving straight the training data includes a higher proportion of frames that represent road curves.

5.2 Augmentation

After selecting the final set of frames we augment the data by adding artificial shifts and rotations to teach the network how to recover from a poor position or orientation. The magnitude of these perturbations is chosen randomly from a normal distribution. The distribution has zero mean, and the standard deviation is twice the standard deviation that we measured with human drivers. Artificially augmenting the data does add undesirable artifacts as the magnitude increases (see Section 2).

6 Simulation

Before road-testing a trained CNN, we first evaluate the networks performance in simulation. A simplified block diagram of the simulation system is shown in Figure 5.

The simulator takes pre-recorded videos from a forward-facing on-board camera on a human-driven data-collection vehicle and generates images that approximate what would appear if the CNN were, instead, steering the vehicle. These test videos are time-synchronized with recorded steering com-mands generated by the human driver.

5

Figura 3.1 – Arquitetura original. CNN com 9 camadas, aproximadamente 27 milhões de conexões e 250 mil parâmetros. Fonte: [Bojarski et al. 2016]

tarefa, no caso, a de dirigir um veículo. Nessa técnica, um agente (um modelo de Machine Learning) é treinado para realizar tarefas a partir de exemplos, realizando um mapeamento entre as observações e as ações. [Hussein et al. 2017]

Ao se estudar essas diferentes implementações, observou-se que em quase sua totali-dade, as implementações tiveram a necessidade da utilização de uma camada de dropout, e todas as estudadas apenas utilizaram as funções de ativação ReLU ou ELU. Observando isso, desenvolveu-se a ideia desse projeto, que visa estudar como a utilização de diferentes funções de ativação e de diferentes valores de keep probability utilizados na função de dropout afetam a robustez dos diferentes modelos estudados na tarefa de predição angular do veículo.

(30)

19

(a) Vista da lateral esquerda. (b) Vista da lateral direita.

(c) Vista central.

Figura 3.2 – Vistas laterais e central das câmeras do veículo no simulador. Fonte: Próprio autor.

3.1

Obtenção dos dados

Para a obtenção dos dados e futuros testes, utilizou-se um simulador [Brown et al. 2017], tendo em vista que testes e obtenção de dados reais seriam inviáveis para esse trabalho. Esse simulador possui duas pistas, com apenas o veículo que está sendo dirigido. Esse veículo possui três câmeras acopladas a ele, sendo uma em seu centro e duas nas laterais, todas mirando a frente do veículo. Essas imagens são então salvas como frames e é criado um arquivo de log contendo as informações das pastas onde estão salvas as imagens, da veloci-dade do veículo, ângulo de rotação do volante, profundiveloci-dade do acelerador e profundiveloci-dade do freio.

Ao final dessa simulação, os dados se encontram com a distribuição demonstrada na figura 3.3.

Esse tipo de configuração, com muitos dados concentrados em um único ponto é ge-ralmente ruim para fins de Machine Learning, pois pode influenciar o modelo a tomar a deci-são de apenas tentar predizer que o dado de entrada vai possuir um valor igual à esse valor mais concentrado, e mesmo assim acertar na maioria das vezes, ou seja, nesse caso o modelo pode apenas retornar sempre um ângulo zero e mesmo assim ele irá ter uma resposta

(31)

apa-20

Figura 3.3 – Distribuição inicial dos dados obtidos. Fonte: [Pagadala 2017].

rentemente boa, mas que na prática não será tão boa assim, pois não estará generalizando o modelo. Para evitar que esse tipo de situação aconteça, geralmente se adotam duas alterna-tivas: ou mais dados são gerados, tentando minimizar essa discrepância, ou mais dados são criados. Nós assumiremos a segunda alternativa, que será demonstrada na próxima sessão.

3.2

Pré-processamento

Antes do modelo receber os dados, são aplicadas técnicas que visam melhorar o de-sempenho do sistema, removendo informações desnecessárias das imagens, e aumentando a quantidade de imagens existentes. Essas técnicas são úteis pois diminuem a necessidade de obtenção exaustiva de dados, contribuindo para o objetivo de generalização do modelo, onde o veículo deve ser capaz de funcionar do mesmo modo em pistas conhecidas e pistas nunca antes vistas.

3.2.1

Aumento de dados

Nessa etapa do pré-processamento, são aplicadas diferentes técnicas visando aumen-tar a quantidade de dados disponíveis para o treinamento do modelo.

Para realizar essa tarefa, o sistema seleciona aleatoriamente uma das três imagens de cada momento, com o seu respectivo ângulo de direção. Dependendo da imagem selecionada

(32)

21

Figura 3.4 – Exemplo de imagem após a operação de rotação. Fonte: [Pagadala 2017]

Figura 3.5 – Exemplo de imagem após a operação de ajuste de brilho. Fonte: [Pagadala 2017] (esquerda, centro ou direita), é necessária uma alteração no ângulo da direção registrado no arquivo de log, pois o que está registrado é o ângulo em relação a câmera central. Após a seleção, a imagem é rotacionada em torno de seu eixo y, com uma probabilidade de 0,5. Caso a imagem receba a rotação, é necessário também atualizar o ângulo da direção, que passa a valer o negativo do ângulo anterior.

Outra tarefa de aumento de dados aplicada é a de ajustar o brilho da imagem aleatori-amente. Dessa forma, o sistema consegue aprender a dirigir em qualquer tipo de iluminação, o que é bom para o objetivo de generalização do modelo.

3.2.2

Recorte

O recorte, tradução do termo em inglês crop, é a técnica utilizada para remoção de informações da imagem que não são de interesse do modelo. O crop realizado no sistema remove da imagem o céu e a parte dianteira do veículo, pois para a tarefa de descobrir qual a

(33)

22

Figura 3.6 – Exemplo de imagem após a operação de crop. Fonte: [Pagadala 2017] direção a ser tomada pelo veículo, esses dados não são importantes e poderiam atrapalhar o treinamento.

3.3

Treinamento

Para o processo de treinamento, foram realizadas todas as combinações possíveis entre os valores passados. Dessa forma, foi possível realizar diferentes combinações de diferentes modelos, diferentes funções de ativação e diferentes valores de keep probability. Esses parâ-metros foram escolhidos com o intuito de verificar o funcionamento da rede com os mesmos, permitindo dessa forma saber se seria possível desenvolver modelos mais potentes sem que ocorresse o problema do vanishing gradient. Além disso, deseja-se verificar o impacto do pa-râmetro de keep probability na generalização do modelo, verificando se o aumento ou a dimi-nuição desse parâmetro afeta tanto a qualidade da direção do veículo na pista utilizada para treinamento quanto a qualidade na pista utilizada para testes, pista essa que não foi utilizada na tarefa de obtenção dos dados.

Nesse processo, foram escolhidos dois modelos para serem utilizados. O primeiro é o modelo demonstrado no artigo da NVIDIA [Bojarski et al. 2016], observado nos tópicos an-teriores. O segundo, utiliza uma arquitetura CNN bastante simplificada, possuindo apenas a camada de normalização, semelhante ao modelo da NVIDIA, uma camada de convolução e uma camada totalmente conectada. A escolha desse modelo se deu visando observar se é possível utilizar um modelo mais simples, que teoricamente será mais rápido e mais leve com-putacionalmente, comparando os resultados obtidos com os resultados do modelo da NVIDIA. Para realização do treinamento, os dados foram separados em dados de treinamento e dados de validação. A cada etapa do treinamento, foram enviadas para a rede pequenas quantidades de imagens, conhecidas como lotes, escolhidas aleatoriamente dentro dos dados de treinamento, fazendo com que não fosse necessário que todos os dados de treinamento estejam na memória ao mesmo tempo. Dessa forma, a rede aprende a cada passagem de lote,

(34)

23

Figura 3.7 – Arquitetura CNN simplificada utilizada no experimento. Fonte: Próprio autor não sendo necessário atualizar a rede a cada imagem, o que, devido ao número de imagens seria custoso computacionalmente. Ao final da passagem de uma determinada quantidade de lotes pré-definida, conhecida como época, a rede é testada utilizando os dados de validação. Caso o resultado desse teste seja o melhor entre os testes utilizando a combinação atual, o modelo é salvo para realização dos testes no simulador.

(35)

Capítulo 4

Experimentos e Resultados

Todo o experimento foi realizado utilizando Python [Rossum 1995], a IDE Jupyter No-tebook [Kluyver et al. 2016], Pandas [McKinney 2010] para carregamento dos dados e cri-ação dos datasets, Matplotlib [Hunter 2007] para gercri-ação e visualizcri-ação dos gráficos, Scikit Learn [Pedregosa et al. 2011] para separar os dados em dados de validação, treinamento e teste, Keras [Chollet et al. 2015] para criação das camadas dos modelos e Numpy [Walt, Col-bert e Varoquaux 2011] para tratamento de matrizes.

Como visto no capítulo anterior, o experimento consiste combinação das funções de ativação ReLU, LReLU, ELU, e SELU, dos valores de keep probability no dropout de 0.25, 0.5 e 0.75 e dos dois modelos apresentados, o modelo da NVIDIA [Bojarski et al. 2016] e o CNN simplificado.

Essa combinação foi repetida 30 vezes, gerando um total de 720 modelos. Dentro des-ses modelos foram pegos os que obtiveram a menor função de erro em relação aos dados de validação, para cada uma das 24 combinações possíveis, e então foi feita uma comparação entre eles.

Apenas o processo de treinamento das redes para o experimento levou um total de 186 horas aproximadamente, o que requisitou que, para evitar interferências no experimento, fosse utilizada uma máquina com o intuito de não rodar nenhuma outra aplicação durante o experimento, limitando assim a realização de uma maior quantidade de experimentos.

(36)

25

Figura 4.1 – Gráfico dos erros de validação em cada configuração estudada. Fonte: Próprio autor.

Os resultados do experimento podem ser examinados na Figura 4.1. Ao se observar esse gráfico, é possível perceber uma piora esperada nos testes ao se utilizar um modelo mais simples. Além disso, é possível observar que, para o modelo original, a função de ativação ReLU mostrou-se a com melhores resultados no teste de validação, enquanto que a função LReLU obteve melhores resultados no modelo simplificado. A função de ativação SELU obteve um resultado ruim que já era esperado, pois essa função requisita que haja um outro tipo de inicialização de pesos, diferente do que foi utilizado para o experimento, que seguiu o mesmo tipo de inicialização realizada pelo artigo utilizado como base para este projeto. Porém, o mau resultado da função de ativação ELU foi surpreendente, pois ela foi a função mais utilizada pelos projetos semelhantes ao experimento e obteve resultado ruim nos dois modelos.

A Tabela 4.1 mostra os resultados da Figura de forma tabulada. Além disso também mostra informações sobre os testes no simulador. O tempo na tabela se refere ao tempo da época que obteve o melhor resultado no teste de validação utilizando as configurações apontadas na primeira coluna, sendo elas combinações de “Ori” ou “Sim” representando os tipos do modelo, onde “Ori” representa o modelo original com 9 camadas e “Sim” o modelo com apenas 3 camadas, "ReLU", "LReLU", "ELU"ou "SELU"as funções de ativação utilizadas e

(37)

26 Tabela 4.1 – Resultados para cada configuração estudada. O tempo na tabela se refere ao tempo médio na etapa da época que obteve o melhor resultado no teste de validação do mo-delo original (Ori) ou o simplificado (Sim). ReLU, LReLU, ELU ou SELU as funções de ativação utilizadas e 0.25, 0.5 ou 0.75 o valor da variável keep probability do dropout.

Modelo Tempo Erro de validação Tempo em Pista 1 Tempo em Pista 2 Núm. de Toques OriReLU0.25 92s 0.0111 +10m 3s 0 OriReLU0.5 91s 0.0118 +10m 3s 10 OriReLU0.75 92s 0.0122 +10m 3s 0 OriLReLU0.25 98s 0.0109 +10m 5s 4 OriLReLU0.5 98s 0.0118 +10m 5s 0 OriLReLU0.75 97s 0.0121 +10m 5s 10 OriELU0.25 92s 0.0108 +10m 28s 20 OriELU0.5 92s 0.0125 24s 14s 1 OriELU0.75 93s 0.0117 +10m 5s 24 OriSELU0.25 99s 0.0121 +10m 3s 0 OriSELU0.5 97s 0.0115 +10m 8s 0 OriSELU0.75 98s 0.0120 +10m 4s 20 SimReLU0.25 78s 0.0128 +10m 3s 0 SimReLU0.5 76s 0.0123 +10m 3s 0 SimReLU0.75 77s 0.0122 3m 3s 12 SimLReLU0.25 78s 0.0122 50 3s 4 SimLReLU0.5 77s 0.0119 +10m 4s 10 SimLReLU0.75 78s 0.0121 +10m 4s 3 SimELU0.25 84s 0.0135 23s 4s 100000 SimELU0.5 82s 0.0132 23s 3s 100000 SimELU0.75 83s 0.0137 23s 3s 100000 SimSELU0.25 85s 0.0141 48s 4s 3 SimSELU0.5 86s 0.0142 26s 3s 1 SimSELU0.75 85s 0.0138 33s 3s 1

0.25, 0.5 ou 0.75 o valor da variável keep probability do dropout. A coluna de erro na validação é o valor da função de erro MSE aplicada nos dados de validação, na época que obteve o melhor resultado. Pista1 é o tempo que o veículo se manteve na pista utilizada para treinamento, sem nenhuma interferência e Pista2 o tempo na pista que nunca foi vista pelo modelo. A coluna de Toques informa a quantidade de vezes que o veículo tocou a lateral da pista, sem sair da mesma ou saindo e voltando automaticamente, sem necessidade de interferência.

A partir dessa tabela, é possível observar que, como esperado, a utilização do modelo simplificado possuiu impacto direto na qualidade da simulação. Entretanto, ao se utilizar as funções de ativação ReLU e LRELU foi possível fazer com que o veículo ficasse na pista, apesar de ter atingindo a lateral da mesma algumas vezes. A quantidade de toques na faixa lateral nos apresenta um outro fator importante na observação do comportamento do veículo. Apesar de

(38)

27 ele ter conseguido completar as voltas na pista, ele demonstrou uma instabilidade na direção do veículo muito maior do que quando utilizado o modelo com mais camadas. Isso se deve ao fato de o modelo simplificado obter menos características da pista do que o modelo com mais camadas. Com isso, o modelo conseguiu aprender características como para não sair da pista mas não conseguiu obter características suficientes para se manter a uma distância suficiente do fim da mesma.

Outra importante informação obtida a partir do experimento e dos resultados conse-guidos foi a da impossibilidade de se testar os modelos baseando-se apenas na primeira volta da pista, pois no caso do modelo simplificado utilizando função ReLU com 0.75 de keep proba-bility, o veículo completou uma volta, mas na terceira volta ele saiu da pista. Nos resultados OriELU0.75, OriLReLU0.25, SimLReLU0.25 e SimLReLU0.75 esse comportamento também é observável, pois o número de toques por volta na pista não se manteve constante. Nesses casos, em algumas voltas o veículo chegava próximo à lateral da pista, mas não a tocava, enquanto que em outras voltas, na mesma posição da pista, o veículo tocava a lateral. Esse comportamento se deve ao fato de que as imagens obtidas no simulador durante as voltas não eram as mesmas durante as voltas, nos mesmos pontos da pista, principalmente nos mode-los que demonstraram uma maior instabilidade na direção do veículo. Foi colocado um valor de cem mil na coluna de Toques nos modelos simplificados utilizando a função ELU pois no curto período de tempo em que o veículo se manteve na pista, ele andou todo o tempo na faixa lateral da mesma.

Comprovando os dados obtidos pelo gráfico, a função de ativação ELU se apresentou a com piores resultados, tanto no modelo com nove camadas quanto no simplificado. No modelo original essa função, apesar de conseguir completar mais do que dez voltas na pista, ela tocou a lateral da pista pelo menos duas vezes em cada volta, demonstrando fragilidade na realização de curvas. Entretanto, estudos mais profundos com as mesmas são necessários, pois mesmo demonstrando instabilidade nas curvas da pista de treinamento, a configuração utilizando essa função de ativação foi a única que conseguiu ultrapassar a segunda curva da pista de testes, conseguindo chegar até a sexta curva, sendo as curvas da segunda pista curvas mais fechadas e em ladeiras, enquanto que na primeira pista as curvas são mais abertas e não possuem ladeiras.

Já a função SELU contrariou o esperado pelos testes teóricos, e se mostrou a função com maior estabilidade na direção dentro do modelo original. Isso demonstra que essa é uma

(39)

28 função que pode substituir a função ELU como a mais utilizada, pois mesmo não trabalhando essa função em seu estado ideal, utilizando uma inicialização de pesos diferente do proposto pelo autor da mesma, ela obteve bons resultados na simulação.

Com os resultados do experimento, é possível intuir que a utilização de um modelo sim-plificado é possível, como na utilização da função de ativação ReLU, que se mostrou com maior velocidade no treinamento. Em um treinamento em maior escala, com maior quantidade de dados, maior variedades de parâmetros a serem otimizados e maior carga de teste, esses pou-cos segundos podem ter influência positiva na decisão de qual modelo escolher.Entretanto, como na tarefa de direção de veículos autônomos, a principal é a estabilidade do veículo, uti-lizar modelos com maior número de camadas deve ser priorizado, pois esse tipo de modelo se mostrou possuidor de maior confiança do que o modelo simplificado.

(40)

Capítulo 5

Conclusões

Como dito anteriormente, o objetivo do experimento era observar e analisar o impacto que diferentes técnicas de Deep Learning teriam na tarefa de simulação da direção de veículos autônomos, através da combinação dessas técnicas aplicadas em diferentes arquiteturas.

Os resultados apresentados anteriormente demonstraram uma boa aproximação deste objetivo. A partir deles é possível concluir que é possível utilizar modelos mais simples para a tarefa de direção autônoma de veículos, acelerando assim o processo de treinamento, apesar de possuir um alto grau de instabilidade no experimento, fazendo com que seja necessário um estudo mais profundo visando aumentar a estabilidade dos veículos que utilizem essa arquitetura.

Outro fato que deve ser melhor estudado é a utilização da função ELU, que não apre-sentou resultados tão bons no experimento, tanto na parte teórica quanto na prática, apesar de ser a única que conseguiu ser utilizada na tarefa de generalização.

5.1

Trabalhos Futuros

Com os resultados obtidos neste projeto, seria possível, através de aprendizado por transferência [Pratt 2017], estender o problema para outros veículos, como caminhões ou mo-tos, e avaliar os resultados. Com isso, não seria necessário começar esses estudos do zero, podendo utilizar este projeto como base e apenas realizar as alterações necessárias para o bom funcionamento em outros veículos.

Existem diversos outros parâmetros que poderiam ser estudados para detectar a in-fluência dos mesmos na tarefa principal do projeto, como a taxa de aprendizagem, a

(41)

30 zação dos pesos da rede, o tamanho do filtro nas camadas de convolução. Outra característica que deve ser estudada é a estrutura da rede e o impacto dela na tarefa,visto que foi apontado que essa característica afeta diretamente a qualidade da direção. Muitos estudos estão sur-gindo visando utilizar modelos de redes neurais recorrentes e redes geradoras adversárias na área de veículos autônomos. Esses estudos visam utilizar a característica de que a direção do veículo em determinado momento seria baseada na direção do mesmo em momentos anterio-res. Além disso, com as GANs, seria possível detectar outros problemas existentes na direção de veículos, ignorados neste projeto por motivo de simplificação, como outros veículos nas pistas, pedestres e sinais luminosos.

Baseado na implementação deste trabalho, é possível perceber que a utilização da mesma metodologia para diferentes simuladores é possível, como a utilização destes modelos em jogos de video game, pois seria necessário apenas implementar a captura de imagens no simulador utilizado e o arquivo de conexão entre o simulador e o programa que utiliza o modelo desenvolvido para direção.

Outra utilização que pode ser dada para este projeto é o desenvolvimento de um carro de controle remoto com câmeras acopladas ao mesmo e a utilização do mesmo em algumas pistas reduzidas, simulando veículos e pistas reais, o que seria uma maneira menos custosa de se testar os resultados obtidos, quando comparado a utilização de veículos reais, além de complementar os resultados obtidos neste projeto.

Com este trabalho, foi possível perceber que, com a utilização de redes neurais, está sendo possível se obter excelentes resultados na área de veículos autônomos, demonstrando assim que não está longe o dia em que a ficção científica se encontrará com a realidade, onde não será mais necessário que nos preocupemos com o trânsito nem com acidentes, pois a direção será toda automatizada.

(42)

Referências Bibliográficas

BOJARSKI, M. et al. End to end learning for self-driving cars. arXiv preprint arXiv:1604.07316, 2016.

BOUREAU, Y.-L.; PONCE, J.; LECUN, Y. A theoretical analysis of feature pooling in visual recognition. In: Proceedings of the 27th International Conference on Machine Learning (ICML-10). [S.l.: s.n.], 2010. p. 111–118.

BRITZ, D. Understanding Convolutional neural networks for NLP. [S.l.]: WildML, 2015. BROWN, A. et al. Self Driving Car Simulator. [S.l.]: GitHub, 2017. <https://github.com/ udacity/self-driving-car-sim>.

CHOLLET, F. et al. Keras. [S.l.]: GitHub, 2015. <https://github.com/fchollet/keras>. CLEVERT, D.-A.; UNTERTHINER, T.; HOCHREITER, S. Fast and accurate deep network learning by exponential linear units (ELUs). arXiv preprint arXiv:1511.07289, 2015.

DARPA. Defense Advanced Projects Agency. 2017. Último acesso em 13/12/2017. Disponível em: <https://www.darpa.mil/>.

GABRIEL, J. ao. Volkswagen e Nvidia fazem parceria para desenvolver IA além dos carros autônomos. 2017. <https://adrenaline.uol.com.br/2017/06/28/50413/

volkswagen-e-nvidia-fazem-parceria-para-desenvolver-ia-alem-dos-carros-autonomos/>. Último acesso em 14/12/2017.

GOODFELLOW, I.; BENGIO, Y.; COURVILLE, A. Deep Learning. [S.l.]: MIT Press, 2016. <http://www.deeplearningbook.org>.

GOODFELLOW, I. et al. Generative adversarial nets. In: Advances in Neural Information Processing Systems. [S.l.: s.n.], 2014. p. 2672–2680.

HAYKIN, S. Neural networks: A comprehensive foundation. [S.l.]: Prentice Hall PTR, 1994. HOCHREITER, S. Untersuchungen zu dynamischen neuronalen netzen. Diploma, Technische Universität München, v. 91, 1991.

HOCHREITER, S. et al. Gradient flow in recurrent nets: The difficulty of learning longterm dependencies. In: . A Field Guide to Dynamical Recurrent Networks. Wiley-IEEE Press, 2001. p. 464–. ISBN 9780470544037. Disponível em: <http://ieeexplore.ieee.org/xpl/ articleDetails.jsp?arnumber=5264952>.

HUNTER, J. D. Matplotlib: A 2d graphics environment. Computing In Science & Engineering, IEEE COMPUTER SOC, v. 9, n. 3, p. 90–95, 2007.

(43)

32 HUSSEIN, A. et al. Imitation learning: A survey of learning methods. ACM Comput. Surv., ACM, New York, NY, USA, v. 50, n. 2, p. 21:1–21:35, abr. 2017. ISSN 0360-0300. Disponível em: <http://doi.acm.org/10.1145/3054912>.

IBOPE. Paulistano passa, em média, 1 mês e meio no trânsito por ano. 2016. <https: //veja.abril.com.br/brasil/paulistano-passa-em-media-1-mes-e-meio-no-transito-por-ano>. KLUYVER, T. et al. Jupyter notebooks - a publishing format for reproducible computational workflows. In: ELPUB. [S.l.: s.n.], 2016.

LECUN, Y. et al. Backpropagation applied to handwritten ZIP code recognition. Neural computation, MIT Press, v. 1, n. 4, p. 541–551, 1989.

LITMAN, T. Autonomous Vehicle Implementation Predictions. 2017. <https://www.vtpi.org/ avip.pdf>. Último acesso em 13/12/2017.

MAAS, A. L.; HANNUN, A. Y.; NG, A. Y. Rectifier nonlinearities improve neural network acoustic models. In: Proceedings International Conference on Machine Learning. [s.n.], 2013. v. 30, n. 1. Disponível em: <http://web.stanford.edu/~awni/papers/relu_hybrid_icml2013_ final.pdf>.

MCCULLOCH, W. S.; PITTS, W. A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics, Springer, v. 5, n. 4, p. 115–133, 1943.

MCKINNEY, W. Data structures for statistical computing in python. In: WALT, S. van der; MILLMAN, J. (Ed.). Proceedings of the 9th Python in Science Conference. [S.l.: s.n.], 2010. p. 51 – 56.

PACHECO, A. Redes Neurais Convolutivas – CNN. 2017. <http://www.computacaointeligente. com.br/artigos/redes-neurais-convolutivas-cnn/>. Último acesso em 13/12/2017.

PAGADALA, S. Deep Learning to Clone Driving Behavior. 2017. <https://srikanthpagadala. github.io/serve/carnd-behavioral-cloning-p3-report.html>. Último acesso em 14/12/2017. PANETTA, K. End to End Learning for Self-Driving

Cars. 2017. <https://www.gartner.com/smarterwithgartner/

top-trends-in-the-gartner-hype-cycle-for-emerging-technologies-2017>. Último acesso em 29/11/2017.

PEDREGOSA, F. et al. Scikit-learn: Machine learning in Python. Journal of Machine Learning Research, v. 12, p. 2825–2830, 2011.

PHYLLIIDA. A list of cost functions used in neural networks, alongside applications. 2016. Cross Validated. URL:https://stats.stackexchange.com/q/154880 (version: 2016-11-08). Disponível em: <https://stats.stackexchange.com/q/154880>.

PORMELAU, D. A. An Autonomous Land Vehicle In a Neural Network. 1989. <http: //repository.cmu.edu/cgi/viewcontent.cgi?article=2874&context=compsci>. Último acesso em 13/12/2017.

PRATT, L. Y. Discriminability-Based Transfer between Neural Networks. 2017. <http:

//papers.nips.cc/paper/641-discriminability-based-transfer-between-neural-networks.pdf>. Último acesso em 14/12/2017.

(44)

33 REIS, L. Machine Learning: entendendo a evolução dos algoritmos. 2017.

<http://blog.cedrotech.com/machine-learning-a-evolucao-dos-algoritmos/?gclid=

EAIaIQobChMIq4Ta5ZWF2AIVVgWRCh1rBw29EAAYBCAAEgKcofD_BwE>. Último acesso em 12/12/2017.

ROSENBLATT, F. Principles of neurodynamics. perceptrons and the theory of brain mechanisms. Buffalo, NY, USA, 1961.

ROSSUM, G. Python Reference Manual. Amsterdam, The Netherlands, The Netherlands, 1995.

RUMELHART, D. E.; HINTON, G. E.; WILLIAMS, R. J. Learning internal representations by error propagation. [S.l.], 1985.

SRIVASTAVA, N. et al. Dropout: A simple way to prevent neural networks from overfitting. Journal of Machine Learning Research, v. 15, n. 1, p. 1929–1958, 2014.

SUGA, N. Biosonar and neural computation in bats. Scientific American, v. 262, n. 6, p. 60–68, 1990.

WALT, S. van der; COLBERT, S. C.; VAROQUAUX, G. The numpy array: A structure for efficient numerical computation. Computing in Science Engineering, v. 13, n. 2, p. 22–30, March 2011. ISSN 1521-9615.

Referências

Documentos relacionados

Valor de TnT medido no sistema cobas h 232 POC com o teste Roche CARDIAC T Quantitativo padronizado com Elecsys cTnT-hs (ng/L) Trop T 50 - 100 ng/L Trop T 116 ng/L Trop T 242

Nessa perspectiva, este capítulo objetiva apresentar a composição taxo- nômica, abundância e diversidade da comunidade de fitoplâncton presente na microbacia do

C urso: Registro de Preços (Passo a passo)– 22 e 23 de Julho/Curitiba Página 27 O servidor integrante de uma CPL, então, não pode se dar ao luxo de ser uma “Maria vai com as

Evolução das teorias da administração Evolução da administração pública no Brasil (após 1930), reformas administrativas, a nova gestão pública. Modelo

um funcionário de seu ambiente de trabalho), sobre os impactos que ele gera para as pessoas e o custo para as empresas, mas fala-se pouco sobre o presenteísmo. Em resumo,

3 - Qualquer situação de assistência médica em unidade de saúde, na Região Autónoma da Madeira, relacionada com o consumo de qualquer uma das substâncias previs-

• A Revolução Industrial corresponde ao processo de industrialização que teve início na segunda metade do.. século XVIII no

O conhecimento das variações anatômicas que podem interferir no sucesso do tratamento endodôntico é de extrema importância para o endodontista, uma vez que essas