• Nenhum resultado encontrado

Estudo comparativo dos softwares de simulação para carros autônomos CARLA e Udacity

N/A
N/A
Protected

Academic year: 2021

Share "Estudo comparativo dos softwares de simulação para carros autônomos CARLA e Udacity"

Copied!
48
0
0

Texto

(1)

Universidade Federal Fluminense

Escola de Engenharia

Curso de Gradua¸

ao em Engenharia de

Telecomunica¸

oes

Carlos Eduardo de Almeida Bonon

Estudo comparativo dos softwares de simula¸c˜

ao para

carros autˆ

onomos CARLA e Udacity

Niter´

oi – RJ

2019

(2)

1 Carlos Eduardo de Almeida Bonon

Estudo comparativo dos softwares de simula¸c˜ao para carros autˆonomos CARLA e Udacity

Trabalho de Conclus˜ao de Curso apresentado ao Curso de Gradua¸c˜ao em Engenharia de Teleco-munica¸c˜oes da Universidade Federal Fluminense, como requisito parcial para obten¸c˜ao do Grau de Engenheiro de Telecomunica¸c˜oes.

Orientador: Prof. Dr. Jo˜ao Marcos Meirelles da Silva

Niter´oi – RJ 2019

(3)

ii .

(4)

iii Carlos Eduardo de Almeida Bonon

Estudo comparativo dos softwares de simula¸c˜ao para carros autˆonomos CARLA e Udacity

Trabalho de Conclus˜ao de Curso apresentado ao Curso de Gradua¸c˜ao em Engenharia de Teleco-munica¸c˜oes da Universidade Federal Fluminense, como requisito parcial para obten¸c˜ao do Grau de Engenheiro de Telecomunica¸c˜oes.

Aprovada em 25 de Novembro de 2019.

BANCA EXAMINADORA

Prof. Dr. Jo˜ao Marcos Meirelles da Silva - Orientador Universidade Federal Fluminese - UFF

Profa. Dra. Natalia Castro Fernandes Universidade Federal Fluminense - UFF

Prof. Dr. Vitor Hugo Ferreira Universidade Federal Fluminense - UFF

Niter´oi – RJ 2019

(5)

iv

Resumo

A grande maioria dos acidentes de trˆansito podem ser evitados, n˜ao fosse a imprudˆencia dos condutores. Solu¸c˜oes de automa¸c˜ao, inteligˆencia artificial e IoT para carros autˆ o-nomos j´a se encontram em estudo e desenvolvimento, como visto nos artigos usados no estudo deste trabalho. Neste trabalho, foram abordados os conceitos de aprendizado de m´aquina e comunica¸c˜ao entre sensores dentro de duas ferramentas de simula¸c˜ao para ve´ıculos autˆonomos dispon´ıveis no mercado, CARLA e Udacity. Levando em conta as caracter´ısticas individuais de cada ferramenta, este trabalho abordou os aspectos de pro-cessamento de imagens com t´ecnicas de aprendizado por refor¸co e t´ecnicas de aprendizado supervisionado. A partir das experiˆencias reunidas neste trabalho, foi poss´ıvel elaborar uma s´ıntese dos pontos fortes e fracos de cada ferramenta dentro de suas propostas atrav´es da avalia¸c˜ao de desempenho e verifica¸c˜ao da acur´acia dos modelos desenvolvidos dentro das ferramentas, juntamente com os resultados obtidos no decorrer no desenvolvimento e teste deste trabalho, formando assim uma tabela de an´alise resumindo os resultados obtidos dentro de crit´erios escolhidos para medir performance, com o intuito de ajudar iniciantes em uma aplica¸c˜ao dentro desta ´area e documentar os resultados e pontos fortes e fracos das an´alises relativas a cada modelo.

Palavras-chave: Aprendizado de M´aquina. Aprendizado por Refor¸co. Redes Neu-rais Artificiais. Processamento de Imagens. CARLA Simulator. Udacity Simulator. Ve´ıculos Autˆonomos.

(6)

v

Abstract

It is common knowledge that most of car accidents could be avoided if the drivers we-ren’t reckless. Solutions involving automation, machine learning and internet of things in autonomous cars are current studied and in development phase. However, there is still a big gap when it comes to having access to a development tool that may aid in creating those solutions. Besides only existing a few tools, not all of them are accessible or easy to understand and deploy applications. Having a development tool that is self-explanatory and easy to deploy is an ambitious proposal but also a necessary one. In this paper, the goal is to understand and test machine learning solutions and sensor communication in two of tools that are available in the market, CARLA and Udacity. Taking each tool’s characteristics into consideration, image processing and recognition solutions using rein-forcement learning and supervised learning were proposed. Next, a compilation with the experience was created, along with the resultant feedback. Finally, it was possible to create a summary with each tool’s strengths and weaknesses in order to aid those that choose to start to develop an application in this field.

Keywords: Machine Learning. Reinforcement Learning. Artificial Neural Networks. Image Processing. CARLA Simulator. Udacity Simulator. Autonomous Driving

(7)

vi

Dedico este trabalho aos meus pais, os pilares da minha vida.

(8)

vii

Agradecimentos

Agrade¸co primeiramente aos meus pais. Sem vocˆes nada aconteceria. `

A minha companheira, Luisa Jorge Souza, por toda a paciˆencia, disponibilidade e suporte nas horas cr´ıticas, os quais foram essenciais para que esse trabalho ficasse pronto. Ao professor Jo˜ao Marcos, pela incr´ıvel confian¸ca, disponibilidade para passar seus ensinamentos e empolga¸c˜ao em trabalharmos juntos.

Ao meu grande amigo e mentor em an´alise de dados, Hugo Siqueira Gomes, por todo o empenho em me passar seus conhecimentos e sempre estar dispon´ıvel para debater e discutir ideias.

Ao LATELCO por toda a estrutura fornecida.

A todos os professores da UFF, em especial aos professores do departamento de Telecomunica¸c˜oes, El´etrica, Estat´ıstica e Computa¸c˜ao.

`

A banca examinadora: Professores Jo˜ao Marcos Meirelles, Vitor Hugo Ferreira e Natalia Castro Fernandes.

(9)

viii

Lista de Figuras

2.1 Intera¸c˜ao agente-ambiente em uma MDP. Fonte [6] . . . 8

2.2 Representa¸c˜ao Simplificada de um neurˆonio matem´atico. Fonte [9] . . . 10

2.3 Exemplos de fun¸c˜oes de ativa¸c˜ao. Fonte [17] . . . 11

2.4 Exemplo de uma rede neural. Fonte [9] . . . 11

2.5 Redes neurais artificiais com uma camada e com m´ultiplas camadas escon-didas. Fonte [9] . . . 13

2.6 Filtro sendo aplicado em uma imagem RGB. Fonte [21] . . . 14

3.1 Imagem gerada pelo sensor do CARLA versus imagem p´os-processamento. 19 3.2 Arquivo gerado com dados sobre angula¸c˜ao do volante e seus quadros cor-respondentes. . . 20

3.3 Histograma com ˆangulos do volante. . . 23

3.4 Imagens das cˆameras central e lateral direita durante uma curva. . . 24

3.5 Histograma com angula¸c˜ao do volante ap´os tratamentos . . . 24

3.6 Arquitetura da rede neural do projeto da NVIDIA. Fonte: [10] . . . 25

3.7 Inspe¸c˜ao de performance em mais de 60 modelos diferentes. . . 26

3.8 Foco nos modelos com menor valor de perda e convergˆencia mais r´apida escolhidos para a fase de teste. . . 26

(10)

ix

Lista de Tabelas

(11)

Lista de Abrevia¸

oes

V2V Vehicle to Vehicle CARLA Car Learning to Act

API Application Programming Interface CNN Convolutional Neural Networks GPU Graphic Processing Unit

TORCS The Open Racing Car Game MPD Markov Decision Process

FMDP Finite Markov Decision Process RGB Red Green Blue

CSV Comma Separated Value RAM Random Access Memory ReLU Rectified Linear Unit

CUDA Compute Unified Device Architecture

(12)

Sum´

ario

Resumo iv

Abstract v

Agradecimentos vii

Lista de Figuras viii

Lista de Tabelas ix

1 Apresenta¸c˜ao 1

1.1 Introdu¸c˜ao . . . 1

1.2 Motiva¸c˜ao . . . 2

1.3 Objetivos . . . 2

1.4 Revis˜ao Bibliogr´afica . . . 3

2 Conceitos B´asicos de Aprendizado de M´aquina 5 2.1 Aprendizado de M´aquina . . . 5

2.1.1 Aprendizado Supervisionado . . . 6

2.1.2 Aprendizado por Refor¸co . . . 6

2.1.3 Redes Neurais Artificiais . . . 10

2.1.4 Aprendizado Profundo . . . 12

3 Estudos de caso 16 3.1 As ferramentas . . . 16

3.1.1 CARLA . . . 16

3.1.2 Udacity . . . 16

3.2 Aprendizado por refor¸co no CARLA . . . 17 xi

(13)

xii

3.2.1 Aquisi¸c˜ao de dados . . . 17

3.2.2 Atua¸c˜ao do agente . . . 19

3.2.3 Resultados . . . 21

3.3 Aprendizado Supervisionado na Udacity . . . 22

3.3.1 Aquisi¸c˜ao de dados . . . 22

3.3.2 Prepara¸c˜ao dos dados . . . 23

3.3.3 Escolha do modelo e treinamento . . . 24

3.3.4 Resultados . . . 27

3.4 Compara¸c˜ao dos Resultados . . . 28

3.4.1 Descri¸c˜ao das Pontua¸c˜oes . . . 29

4 Conclus˜ao 31

5 Sugest˜oes para trabalhos futuros 33

(14)

Cap´ıtulo 1

Apresenta¸

ao

1.1

Introdu¸

ao

O n´umero de mortes decorridas de acidentes no trˆansito ´e um problema alarmante n˜ao s´o no Brasil como no restante do mundo. Desde que os autom´oveis se tornaram bens de consumo mais populares, o n´umero de usu´arios cresceu abruptamente, juntamente com o n´umero de acidentes fatais e n˜ao-fatais ocorridos com autom´oveis. De acordo com o Conselho Federal de Medicina, a cada uma hora, cinco pessoas morrem em acidentes de trˆansito no Brasil [1].

Em 2017, o Brasil alcan¸cou a marca de um autom´ovel para cada quatro habitantes e, no presente, o autom´ovel se mant´em como escolha principal de meio de transporte dos brasileiros [2].

Uma proposta que se apresenta como a grande solucionadora para o n´umero alto de acidentes de trˆansito ´e o carro autˆonomo. Ao introduzir esse novo conceito, ´e poss´ıvel eliminar alguns fatores, tais como: imprudˆencia no trˆansito, condu¸c˜ao sob influˆencia de entorpecentes, dentre outros.

´

E poss´ıvel descrever um carro autˆonomo como a combina¸c˜ao de tecnologias como Internet das Coisas, Inteligˆencia Artificial e Automa¸c˜ao.

A grande atua¸c˜ao de algoritmos de aprendizado de m´aquina em carros autˆonomos se encontra principalmente no reconhecimento de imagens e na detec¸c˜ao de anomalias [3]. Em paralelo aos avan¸cos obtidos em carros autˆonomos, um paradigma de aprendi-zado de m´aquina ganhou importˆancia atualmente e se mostra como uma nova abordagem de solu¸c˜ao de problemas: o aprendizado por refor¸co.

(15)

Com o seu m´etodo caracter´ıstico de intera¸c˜ao de um agente com o meio ambiente, esse paradigma se tornou disruptivo e se mostrou capaz de ressaltar solu¸c˜oes inusitadas, muitas vezes n˜ao percebidas pelo programador quando aplicado `a um problema. [7]

1.2

Motiva¸

ao

O reconhecimento de imagens em tempo real ´e uma tarefa complexa, mas tamb´em extre-mamente importante em um ve´ıculo autˆonomo. O mesmo pode ser dito sobre a neces-sidade de um software que simule as condi¸c˜oes de um ve´ıculo deste tipo e que permita o teste de inova¸c˜oes em um ambiente controlado e que represente com maior fidelidade poss´ıvel o cen´ario verdadeiro.

O teste de novas solu¸c˜oes, como por exemplo o aprendizado por refor¸co, e tamb´em a coleta de dados para an´alise s˜ao processos demorados e de dif´ıcil implementa¸c˜ao em um carro real, podendo inclusive oferecer risco `a indiv´ıduos que estiverem localizados perto do ve´ıculo.

´

E evidente a necessidade de um software que permita uma f´acil implementa¸c˜ao e que permita que engenheiros e programadores analisem suas solu¸c˜oes, sejam de automa-¸c˜ao, aprendizado de m´aquina ou comunica¸c˜ao entre ve´ıculos.

1.3

Objetivos

Com o intuito de gerar um documento de avalia¸c˜ao para a comunidade de engenheiros e programadores sobre o desenvolvimento de aplica¸c˜oes de carros autˆonomos e IoT, este trabalho prop˜oe fazer uma an´alise t´ecnica de dois softwares de simula¸c˜ao presentes no mercado. Al´em disso, este trabalho tamb´em prop˜oe realizar uma aplica¸c˜ao de aprendizado de m´aquina dentro de cada software para observar os resultados.

A proposta foi primeiramente fornecer um entendimento mais profundo sobre os softwares de simula¸c˜ao, documentar esse entendimento e em seguida aplicar um algoritmo dentro da plataforma.

O in´ıcio da an´alise deu-se no software CARLA, Car Learning to Act, na qual o ambiente para um algoritmo de aprendizado por refor¸co foi elaborado [4].

Na segunda parte da an´alise, o software de simula¸c˜ao da Udacity foi utilizado. Nesta parte, um algoritmo de aprendizado supervisionado foi testado na plataforma.

(16)

3 Em todo o desenvolvimento do projeto, a preocupa¸c˜ao com a aplicabilidade, fa-cilidade de implementa¸c˜ao e fidelidade com a realidade foram sempre levadas em conta. Buscou-se o melhor resultado de modo que estudos futuros e aplica¸c˜oes V2V fossem pos-s´ıveis de aplicar.

1.4

Revis˜

ao Bibliogr´

afica

De modo a entender e avaliar solu¸c˜oes usando inteligˆencia artificial em ve´ıculos autˆonomos, diversos autores conduziram pesquisas e experimentos e documentaram seus resultados.

Em [13], os autores desenvolveram um ambiente de testes pr´oprio utilizando o software Unity para que fosse poss´ıvel modelar um ve´ıculo autˆonomo em um ambiente urbano com demais ve´ıculos. Para a an´alise, foram utilizados agregados de 4 quadros de uma cˆamera frontal e um sensor laser acoplado na frente do ve´ıculo. Os autores fizeram uso da t´ecnica de experience replay e forneceram esses dados como entrada para uma Deep Q-Network. O agente possu´ıa 5 op¸c˜oes de a¸c˜oes a serem realizadas: Seguir em frente, ir para a esquerda, ir para a direita, acelerar positivamente e acelerar negativamente. Ap´os o treinamento, foi poss´ıvel observar que a rede neural profunda era capaz de fornecer como sa´ıda as a¸c˜oes corretas, evitando colis˜oes na rodovia.

Em [14], os autores utilizaram 1237 imagens diurnas de sem´aforos de sub´urbios na ´India de modo a fornecer como entrada para um algortimo de Deep Learning para reco-nhecimento e detec¸c˜ao. Os sem´aforos indianos possuem 5 estados diferentes e o objetivo do modelo era, de forma confi´avel, de corretamente detectar o tipo de sem´aforo de uma imagem. Al´em de usar uma rede neural convolucional, os autores fizeram uso da t´ecnica de transfer learning para acelerar o treinamento do algoritmo e aumentar sua acur´acia. Ap´os o treinamento de aproximadamente 12 horas, o modelo apresentou um erro de 0,01, o que cumpria com o objetivo dos autores de atingir uma perda menor do que 0,05.

Em [15], os autores fizeram uso de uma variante da rede neural convolucional, denominada Region-Based CNN com o objetivo de detectar e classificar obst´aculos pre-sentes em rodovias. O treinamento do algoritmo ocorreu em uma GPU TITAN X. Apesar de terem obtido um frame rate acima de 10 frames popr segundo no processamento de v´ıdeos, os autores constataram que o algoritmo n˜ao foi capaz de detectar ve´ıculos comuns em ruas da ´India, mas que n˜ao estiveram presentes na base de dados PASCAL usado para

(17)

4 treinamento do modelo.

Em [16], os autores fizeram uso da plataforma de jogos TORCS (The Open Racing Car Game Simulator ) para um sistema end-to-end de ve´ıculo autˆonomo usando Deep Reinforcement Learning. O modelo utilizado foi o de Deep Deterministic Policy Gradient para mapear continuamente estados em a¸c˜oes. Ap´os o treinamento em 320.000 amostras e usando experience replay de 100.000 amostras, os autores constataram que o modelo foi capaz de tomar as decis˜oes corretas no cen´ario de dire¸c˜ao. Os autores tamb´em fizeram um estudo visualizando o agente graficamente e analisaram quais estados contribu´ıam para os tipos de decis˜ao.

Em [18], os autores usaram uma variante do Deep Q-Learning, denominada Double Deep Q-Learning, a qual consiste em 2 estimadores separados para o fun¸c˜ao Q. O objetivo do estudo foi aplicar este algoritmo ao problema de controlar a velocidade de um ve´ıculo autˆonomo. Os autores utilizaram uma nova abordagem chamada Naturalistic Driving, que consiste em dados de dire¸c˜ao gerados a partir de longas observa¸c˜oes de condutores sob uma condi¸c˜ao natural de pilotagem e dados do ve´ıculo e do seu redor, por exemplo: movimenta¸c˜ao das m˜aos do condutor, velocidade do ve´ıculo e densidade do tr´afego do ambiente em que o agente se encontra. Durante o treinamento, a t´ecnica de replay memory foi utilizada com um buffer de 2000 experiˆencias. Os autores observaram nos resultados que o modelo de Double Deep Q-Learning teve uma acur´acia 271,73 % maior do que o modelo de Deep Q-Learning.

(18)

Cap´ıtulo 2

Conceitos B´

asicos de Aprendizado

de M´

aquina

Nesta se¸c˜ao, ser˜ao apresentados os principais conhecimentos te´oricos acerca de aprendi-zado de m´aquina, mais especificamente aprendizado supervisionado e aprendizado por refor¸co, utilizados em fundamentos deste trabalho.

2.1

Aprendizado de M´

aquina

O aprendizado de m´aquina ´e um m´etodo de an´alise de dados que automatiza a constru¸c˜ao de modelos anal´ıticos. E um ramo da inteligˆ´ encia artificial baseado na ideia de que sistemas podem aprender com dados, identificar padr˜oes e tomar decis˜oes com o m´ınimo de interven¸c˜ao humana [19].

Existem trˆes passos comuns `a aplica¸c˜ao de solu¸c˜oes de aprendizado de m´aquina: an´alise explorat´oria dos dados, cria¸c˜ao de um modelo e valida¸c˜ao do modelo.

An´alise explorat´oria: Consiste na etapa de adquirir dados e trat´a-los com um prop´ o-sito. ´E nesta etapa que outliers s˜ao eliminados, processamentos s˜ao executados e valores faltantes s˜ao preenchidos, em outras palavras, realizar Feature Engineering, para que assim sejam extra´ıdas informa¸c˜oes ´uteis sobre o problema.

Cria¸c˜ao do Modelo: Etapa na qual ´e pensado um algoritmo de aprendizado e uma fun¸c˜ao erro que modele a acur´acia do algoritmo. Durante a fase de treinamento, os parˆametros do modelo s˜ao ajustados de modo a minimizar a fun¸c˜ao erro.

(19)

6 Valida¸c˜ao do Modelo: ´E nesta etapa que o modelo ´e testado com uma parte da amos-tra dos dados que n˜ao esteja enviesada, ou seja, que n˜ao participou da etapa de treinamento e ajuste de parˆametros. Dessa forma, ´e poss´ıvel estimar a capacidade de generaliza¸c˜ao do algoritmo.

Existem atualmente diversas t´ecnicas e varia¸c˜oes de algoritmos de aprendizado de m´aquina, por´em, apenas dois paradigmas s˜ao abordados neste trabalho.

2.1.1

Aprendizado Supervisionado

Aprendizado supervisionado consiste em fornecer ao algoritmo dados rotulados, na qual a sa´ıda esperada do algoritmo ´e conhecida previamente.

Para cada par pr´e-estabelecido (xi, yi), x representa um conjunto de caracter´ısticas

e y representa a sa´ıda decorrente da combina¸c˜ao das caracter´ısticas em x. O objetivo do algoritmo ´e tornar poss´ıvel o mapeamento de valores de x nos valores correspondentes de y.

Matematicamente, a fun¸c˜ao de mapeamento h(x) deve ser otimizada at´e que h(xi) ≈

yi. Sendo assim, essa otimiza¸c˜ao ´e relacionada a uma fun¸c˜ao erro, por exemplo, o erro

m´edio quadr´atico 2.1.

J (w) = 1 N

X

i

(yi− h(xi, w))2 (2.1)

2.1.2

Aprendizado por Refor¸

co

Aprendizado por refor¸co ´e um ramo estudado na estat´ıstica, psicologia, neurociˆencia e computa¸c˜ao. ´E um m´etodo de programa¸c˜ao que consiste na cria¸c˜ao de agentes e modela-gem da intera¸c˜ao desse agente com o meio que o mesmo se encontra. Isso ocorre atrav´es de um sistema de recompensas e puni¸c˜oes, de acordo com as a¸c˜oes tomadas pelo agente, n˜ao sendo necess´ario especificar como uma determinada tarefa deva ser realizada, isso cabe ao agente descobrir [6].

Aprendizado por refor¸co ´e um problema que consiste em otimizar o controlador de um sistema, ou seja, otimizar seu comportamento em um ambiente, de modo que seja alcan¸cado um valor num´erico m´aximo, representado por uma fun¸c˜ao objetivo de longo prazo.

(20)

7 A cada instante de tempo, o agente recebe uma observa¸c˜ao como input, s, o agente ent˜ao escolhe uma a¸c˜ao a ser realizada, a, e, ap´os interagir com o ambiente atrav´es da a¸c˜ao escolhida, recebe uma recompensa, simbolizada por um valor n´umerico, R.

O pr´oposito do aprendizado por refor¸co ´e propor algoritmos que aprendam a per-formar de maneira ´otima. O agente deve otimizar uma fun¸c˜ao comportamento, π(s), que mapeia um estado s a uma a¸c˜ao a. O agente deve, ent˜ao, encontrar o comportamento ´

otimo π∗(s). O ambiente ´e considerado n˜ao-determin´ıstico, o que implica que, para um mesmo estado, realizar uma determinada a¸c˜ao poder´a levar para lugares diferentes em ocasi˜oes distintas.

Vπ(s) = Eπ( ∞

X

t=0

(γi−1ri)), ∀s ∈ S. (2.2)

De forma que seja poss´ıvel modelar o ambiente, ´e necess´ario levar em conta o quanto o agente olhar´a para o futuro para determinar a melhor a¸c˜ao em um determinado instante. Como o ambiente em quest˜ao ´e modelado como n˜ao-determin´ıstico, nunca ter´a certeza que a recompensa se manter´a a mesma na pr´oxima vez que estiver em um par estado-a¸c˜ao. Sendo assim, atrav´es da Equa¸c˜ao 2.2, ´e poss´ıvel definir o valor de um estado s, denominado V (s), na qual r ´e a recompensa imediata, γ ´e o fator de desconto e s ´e o estado. A equa¸c˜ao retorna um valor n´umerico associado a um determinado estado e pode ser interpretada como a recompensa total esperada tomando como in´ıcio esse estado. O valor n´umerico do estado depende do comportamento π seguido pelo agente. Atrav´es do parˆametro γ ∈ [0, 1], ´e poss´ıvel determinar o quanto o futuro vai afetar o valor de um determinado estado.

∀s ∈ S : π∗(s) = argmaxπ Vπ(s) (2.3)

Sendo assim, como o objetivo do agente ´e encontrar o maior valor n´umerico de recompensa, ou seja, o melhor comportamento a ser seguido, atrav´es da equa¸c˜ao 2.3 ´e poss´ıvel descrever o comportamento ´otimo, retornando o valor m´aximo esperado de recompensa.

Existem diferentes m´etodos para a resolu¸c˜ao de problemas de aprendizado por refor¸co, alguns inclusive, como por exemplo algoritmos gen´eticos, que n˜ao fazem uso da concep¸c˜ao de uma fun¸c˜ao n´umerica de valor. Para o escopo deste trabalho, no entanto, o foco ´e em algoritmos baseados em fun¸c˜oes de valor. Para tais, se ´e necess´ario existir um

(21)

8

Figura 2.1: Intera¸c˜ao agente-ambiente em uma MDP. Fonte [6] Processo de Decis˜ao de Markov (MDP) que modele o problema proposto.

Como visto na Figura 2.1, uma MDP consiste de: Um conjunto de estados, S, um conjunto de a¸c˜oes poss´ıveis a serem tomadas em um determinado estado s, A(s), uma fun¸c˜ao de transi¸c˜ao que explicita a probabilidade de chegar no estado s0 se a a¸c˜ao a for tomada no estado s, T (s, a, s0), e uma recompensa dessa intera¸c˜ao, R(s, a, s0) [6].

Uma propriedade importante de uma MDP ´e sua despreocupa¸c˜ao com os estados passados. A probabilidade de transi¸c˜ao de um estado para outro depende apenas do estado atual e da a¸c˜ao tomada, e n˜ao da sequˆencia de estados que precederam o estado atual.

Um epis´odio, 2.4, pode ser descrito como uma sequˆencia finita de estados, a¸c˜oes e recompensas.

s0, a0, r1, s1, a1, r2, ..., sn−1, an−1, rn, sn (2.4)

Solucionar uma MDP significa encontrar o comportamento ´otimo π∗(s) que mapeie cada s ∈ S em uma a¸c˜ao a ∈ A.

Q-Learning

Q-Learning ´e um algoritmo model-free de aprendizado por refor¸co. O objetivo do Q-learning ´e achar o comportamento ´otimo, mas sem necessitar de um modelo do ambiente onde o agente se encontra. Q-learning ´e apto a lidar tamb´em em problemas com transi¸c˜oes e recompensas estoc´asticas [11].

Para qualquer FMDP (Finite Markov Decision Process), Q-Learning acha o com-portamento ´otimo no sentido de maximizar o valor n´umerico esperado de recompensa. A fun¸c˜ao Q(s, a) retorna o valor de realizar uma a¸c˜ao a em um determinado estado s.

(22)

9 Sendo assim, podemos descrever o comportamento do algoritmo one-step Q-learning de uma forma recursiva como a Equa¸c˜ao 2.5.

Q(s, a) = r + γ ∗ maxa0 Q(s0, a0) (2.5)

Esses valores s˜ao ent˜ao armazenados em uma tabela em mem´oria, com dimens˜ao de (S x A).

Replay Memory

Replay Memory ´e uma t´ecnica usada em aprendizado por refor¸co que consiste em ar-mazenar experiˆencias para que o algoritmo inicie tendo acesso `a valores de experiˆencias passadas, de modo que essas experiˆencias sejam utilizadas como entrada para treinar o algoritmo. Sendo assim, torna-se mais dif´ıcil do agente desconsiderar experiˆencias mais antigas e tamb´em, como as experiˆencias s˜ao aleat´orias ao iniciar o treinamento, isso per-mite eliminar a correla¸c˜ao entre estados (o quanto um estado s afeta na probabilidade de atingir um estado s0).

Algoritmo 1: Replay Memory Entrada: s, s0, R

Sa´ıda: Buffer com experiˆencias armazenadas

1 in´ıcio

2 iniciar dicion´ario vazio 3 repita

4 iniciar epis´odio 5 repita

6 escolher a¸c˜ao aleatoriamente 7 dict[s] ← s0, R

8 s ← s0

9 at´e s’ ser estado terminal ; 10 at´e dict full ;

11 fim

(23)

10

2.1.3

Redes Neurais Artificiais

Redes neurais s˜ao sistemas de computa¸c˜ao com n´os interconectados que funcionam como os neurˆonios do c´erebro biol´ogico. Usando algoritmos de aprendizado de m´aquina, elas s˜ao capazes de reconhecer padr˜oes escondidos e correla¸c˜oes em dados brutos, agrup´a-los e classific´a-los. [20]

Figura 2.2: Representa¸c˜ao Simplificada de um neurˆonio matem´atico. Fonte [9]

O neurˆonio matem´atico ´e um modelo simplificado do neurˆonio biol´ogico. Tais modelos foram inspirados a partir da an´alise da gera¸c˜ao e propaga¸c˜ao de impulsos el´etricos pela membrana celular dos neurˆonios. O neurˆonio matem´atico, representado na Figura 2.2, recebe um ou mais sinais de entrada, um sinal de bias e devolve um ´unico sinal de sa´ıda, que pode ser distribu´ıdo como sinal de sa´ıda da rede, ou como sinal de entrada para um ou v´arios outros neurˆonios da camada posterior. Os dendritos e axˆonios s˜ao representados matematicamente apenas pelas sinapses, e a intensidade da liga¸c˜ao ´e representada por uma grandeza denominada peso, w. Quando as entradas, x, s˜ao apresentadas ao neurˆonio, elas s˜ao multiplicadas pelos pesos correspondentes, gerando as entradas ponderadas, ou seja, x1 que multiplica w1, ..., xn−1 que multiplica wn−1. Por fim, essa sa´ıda ´e passada como

argumento para uma fun¸c˜ao de ativa¸c˜ao, normalmente n˜ao-linear. Isso descreve a base matem´atica do funcionamento de uma rede neural artificial.

O treinamento de uma rede neural padr˜ao consiste em 2 passos: forward pass, que consiste em propagar as entradas atrav´es das camadas da rede, ou seja, multiplicar as

(24)

11

Figura 2.3: Exemplos de fun¸c˜oes de ativa¸c˜ao. Fonte [17]

Figura 2.4: Exemplo de uma rede neural. Fonte [9]

matrizes de entradas, pesos, bias e aplicar `as fun¸c˜oes de ativa¸c˜ao e backpropagation, que consiste em otimizar os pesos da rede, de modo a minimizar a fun¸c˜ao de perda, J (w), escolhida.

y1 = act(w1 ∗ input) (2.6)

y2 = act(w2 ∗ y1) (2.7)

(25)

12 error = J (w) = output − y0 (2.9) w1 ← w1 − η(∂J (w) ∂w1 ) (2.10) w2 ← w2 − η(∂J (w) ∂w2 ) (2.11) w3 ← w3 − η(∂J (w) ∂w3 ) (2.12)

Usando as Figuras 2.3 e 2.4 como referˆencia, ´e poss´ıvel demonstrar as etapas de forwardpass 2.6, 2.7 e 2.8 e backpropagation 2.10, 2.11 e 2.12 em uma rede neural simples, na qual η ´e a taxa de aprendizado do algoritmo, y0 ´e o valor de supervis˜ao correto,

∂J (w)

∂wij ´e a derivada parcial do erro com rela¸c˜ao a um determinado peso, que pode ser

calculada atrav´es da regra da cadeia, pois, como visto acima nas equa¸c˜oes 2.6 at´e 2.9, toda sa´ıda de uma camada superior pode ser escrita em fun¸c˜ao dos pesos e ativa¸c˜ao de camadas anteriores e act() ´e fun¸c˜ao de ativa¸c˜ao diferenci´avel escolhida para uma camada de neurˆonios.

2.1.4

Aprendizado Profundo

Aprendizagem Profunda, ou Deep Learning, ´e uma sub´area da Aprendizagem de M´aquina, que emprega algoritmos para processar dados e imitar o processamento feito pelo c´erebro humano.

Deep Learning usa camadas de neurˆonios matem´aticos para processar dados, com-preender a fala humana ou reconhecer objetos visualmente. A informa¸c˜ao ´e passada atra-v´es de cada camada, com a sa´ıda da camada anterior fornecendo entrada para a pr´oxima camada. A primeira camada em uma rede ´e chamada de camada de entrada, enquanto a ´

ultima ´e chamada de camada de sa´ıda. Todas as camadas entre as duas s˜ao referidas como camadas ocultas. Cada camada ´e tipicamente um algoritmo simples e uniforme contendo um tipo de fun¸c˜ao de ativa¸c˜ao, das quais a Figura 2.3 cont´em exemplos [9].

A grande inova¸c˜ao do aprendizado profundo consistiu em abstrair do programador o modo como o algoritmo processa os dados. Atrav´es das camadas ocultas presentes, o modelo ´e capaz de criar n´ıveis mais aprofundados de hierarquia entre as entradas do

(26)

13

Figura 2.5: Redes neurais artificiais com uma camada e com m´ultiplas camadas escondi-das. Fonte [9]

algoritmo, mas com isso tornando abstrata sua rela¸c˜ao com a entrada fornecida. Pode-se dizer que as redes neurais profundas possuem uma extra¸c˜ao de recursos autom´atica gra¸cas `

as camadas profundas a mais que s˜ao adicionadas ao modelo, como visto na Figura 2.5, possibilitando encontrar padr˜oes dificilmente encontrados por humanos.

Redes Neurais Convolucionais

Uma Rede Neural Convolucional ´e um algoritmo de aprendizado profundo que permite captar uma imagem de entrada, atribuir importˆancia (pesos e vieses que podem ser apren-didos) a diferentes aspectos da imagem e ser capaz de diferenciar um do outro. O pr´ e-processamento exigido em uma CNN ´e muito menor em compara¸c˜ao com outros algorit-mos de classifica¸c˜ao. Enquanto nos m´etodos primitivos os filtros s˜ao feitos `a m˜ao, com treinamento suficiente, as CNNs tˆem a capacidade de aprender esses filtros caracter´ısticos. [9]

Matematicamente, uma convolu¸c˜ao ´e uma opera¸c˜ao linear que a partir de duas fun¸c˜oes, gera uma terceira. No contexto de imagens, podemos entender esse processo como um filtro que transforma uma imagem de entrada.

Um filtro ´e uma matriz utilizada para a opera¸c˜ao de multiplica¸c˜ao de matrizes. Esta opera¸c˜ao ´e aplicada diversas vezes em diferentes regi˜oes da imagem. A cada aplica¸c˜ao, a regi˜ao ´e alterada por um parˆametro conhecido como passo. Normalmente o passo possui o valor 1, o que significa que a transforma¸c˜ao ser´a aplicada em todos os pixels da imagem. Por exemplo, como visto na figura 2.6, em uma imagem com dimens˜oes (6 x 6 x

(27)

14

Figura 2.6: Filtro sendo aplicado em uma imagem RGB. Fonte [21]

3) e um filtro de tamanho (3 x 3) com passo de 1 pixel, o filtro passar´a pela imagem por completa, por cada um dos canais, tendo como resultado uma matriz de dimens˜oes (4 x 4 x 1).

Deep Q-Learning

A abordagem naive apresentada no Q-Learning ´e v´alida somente para ambientes de com-plexidade pequena. Quando o conjunto de estados poss´ıveis no ambiente de estudo se torna ilimitado, como no caso de imagens em um ve´ıculo autˆonomo, armazenar os valores em uma tabela na mem´oria n˜ao ´e mais uma solu¸c˜ao adequada.

Sendo assim, Deep Q-Learning faz uso de uma rede neural para mapear estados em a¸c˜oes. Pode-se descrever seu comportamento atrav´es da equa¸c˜ao 2.13, na qual os valores para cada par (estado, a¸c˜ao) s˜ao inicializados arbitrariamente e conforme o algoritmo ´e treinado, s˜ao ajustados. Os parˆametros da equa¸c˜ao simbolizam os mesmos parˆametros vistos na abordagem de Q-Learning

Q(st, at) ← Q(st, at) + α[Rt+1+ γ ∗ max Q(st+1, a) − Q(st, at)] (2.13)

(28)

15 O valor de uma tupla (s, a) ser´a estimado por uma rede neural, a qual tentar´a aproximar o valor de executar a a¸c˜ao a no estado s. Ap´os executada a a¸c˜ao, os valores de recompensa e estado novo s˜ao usados para treinar a rede atrav´es do backpropagation, usando o target como sa´ıda esperada da rede.

(29)

Cap´ıtulo 3

Estudos de caso

3.1

As ferramentas

3.1.1

CARLA

O simulador CARLA (Car Learning to Act ) ´e um aplicativo open-source que foi desenvol-vido com o prop´osito de auxiliar no desenvolvimento, treinamento e valida¸c˜ao de modelos de ve´ıculos autˆonomos. [4]

O CARLA possui um conjunto de acess´orios como arranjos de mapas, constru¸c˜oes, ve´ıculos e pedestres que podem ser usados. No momento de execu¸c˜ao deste trabalho, existem cinco vers˜oes de mapas poss´ıveis para escolha do usu´ario. ´E poss´ıvel tamb´em ex-portar mapas criados pelo usu´ario para dentro do CARLA utilizando ferramentas externas pagas.

Al´em disso, a aplica¸c˜ao tamb´em possui diversas classes de sensores que podem ser usadas para obter a telemetria e rea¸c˜oes f´ısicas do ve´ıculo em um determinado instante. No momento de execu¸c˜ao deste trabalho, existem mais de seis tipos de sensores poss´ıveis para escolha do usu´ario. ´E importante ressaltar tamb´em que o software possui uma API em Python consideravelmente flex´ıvel, o que permite compatibilidade com bibliotecas de aprendizado de m´aquina em Python.

3.1.2

Udacity

O simulador da Udacity foi inicialmente desenvolvido com o prop´osito de ajudar estu-dantes a treinar seus modelos de ve´ıculos autˆonomos ao longo do programa de ensino

(30)

17 Udacity’s Self-Driving Car Nanodegree.

Atualmente, o software encontra-se dispon´ıvel como ferramenta gratuita.

Devido ao vasto conjunto de sensores dispon´ıveis no software CARLA, de modo que ´e poss´ıvel obter facilmente atributos f´ısicos e espaciais do ve´ıculo em tempo real, foi escolhida a abordagem de aprendizado por refor¸co para fazer uma an´alise cr´ıtica em cima desta ferramenta.

Para o software da Udacity, devido `a sua estrutura menos flex´ıvel, foi escolhida a abordagem de aprendizado supervisionado para fazer uma an´alise cr´ıtica da ferramenta.

3.2

Aprendizado por refor¸

co no CARLA

A modelagem do problema se iniciou ao escolher um algoritmo dentre as op¸c˜oes de t´ecnicas dentro da categoria de aprendizado por refor¸co, para que assim o problema pudesse ser modelado de acordo com essa escolha.

Ap´os analisar publica¸c˜oes recentes, [13] [16] [18], o algoritmo de Deep Q-Learning foi escolhido baseado nos resultados promissores observados.

Utilizando o algoritmo de Deep Q-Learning, o pr´oximo passo foi determinar um sistema de recompensas nas intera¸c˜oes do agente com o meio. Por n˜ao existir um diretriz sobre qual valor usar, foram escolhidos valores atrav´es de pesquisa e observa¸c˜ao de quais valores eram utilizados nos artigos referentes `a aprendizado por refor¸co em carros autˆ o-nomos. Foram ent˜ao estabelecidos os valores de -1 a cada instante sem colis˜ao, -100 caso houvesse colis˜ao ou invas˜ao de pista de sentido contr´ario e +200 caso o tempo m´aximo de epis´odio proposto fosse alcan¸cado.

Foi estabelecido tamb´em que o ajuste de velocidade n˜ao faria parte do escopo deste trabalho, sendo o foco somente em controlar a sa´ıda correspondente ao ˆangulo do volante. Sendo assim, a velocidade foi estabelecida na mesma velocidade fornecida pelo modo piloto autom´atico do CARLA.

3.2.1

Aquisi¸

ao de dados

De modo a se ater `as pr´aticas comuns do conceito de aprendizado por refor¸co apresentadas nos materias de referˆencia, [13] [15] [16], fazendo com isso com que o algoritmo tenha uma maior chance de convergˆencia, foi utilizada a t´ecnica de experience replay. Sendo assim,

(31)

18 foi necess´ario realizar uma aquisi¸c˜ao pr´evia de dados, afim de gerar uma base de dados inicial contendo estado, recompensa atribu´ıda e estado seguinte.

Observou-se tamb´em que outra t´ecnica apresentada, agregado de quadros, se mos-trou necess´aria no escopo deste trabalho. Ao observar a imagem gerada pelo sensor do CARLA 3.1, n˜ao ´e poss´ıvel afirmar com certeza se o ve´ıculo se encontra parado, se est´a movendo para tr´as ou se est´a movendo para frente. Com o intuito de solucionar este pro-blema, um estado s deixou de ser composto apenas por um frame individual, mas agora por um conjunto de quatro quadros em sequˆencia. Desta forma, ´e poss´ıvel estabelecer uma dire¸c˜ao na qual o ve´ıculo se movimenta.

Atrav´es de m´etodos j´a existentes na API em Python do CARLA, foi poss´ıvel obter constantemente os valores de velocidade, frame atual, angula¸c˜ao do volante do ve´ıculo neste frame espec´ıfico e sa´ıda dos sensores escolhidos. Com isso, esses dados passavam por uma fun¸c˜ao que agregava os quadros e determinava a recompensa associada e o quadro seguinte, que em seguida eram anexados `a base de dados do experience replay. [5]

Dentre os sensores dispon´ıveis no CARLA, foram escolhidos dois para modelar o problema.

O primeiro sensor escolhido foi o de uma cˆamera RGB. Como o trabalho se prop˜oe a resolver um problema de reconhecimento e processamento de imagens, era imprescind´ıvel a presen¸ca deste sensor.

A API do CARLA permite escolher em qual posi¸c˜ao do carro a cˆamera ser´a posi-cionada, quantos frames ser˜ao obtidos por segundo e qual o tamanho da imagem gerada na sa´ıda do sensor. Sendo assim, foi escolhido que a cˆamera estaria acoplada na parte central superior do ve´ıculo, captando dados no menor intervalo poss´ıvel dispon´ıvel para o CARLA e fornecendo como sa´ıda imagens de dimens˜ao (350 x 256) pixels.

O segundo sensor escolhido foi pensado em sua intera¸c˜ao com a fase de atribui¸c˜ao de recompensas para o agente. Para isto, foi observado que o sensor de invas˜ao de pista seria o melhor para cumprir este prop´osito.

O sensor other lane invasion gera sa´ıdas nulas constantemente. O ´unico momento que o sensor gera sa´ıdas n˜ao-nulas ´e quando o ve´ıculo sendo usado como agente invade a pista na contra-m˜ao ou quando avan¸ca em uma cal¸cada, por exemplo. Sendo assim, quando o sensor de invas˜ao de pista gerava uma sa´ıda n˜ao-nula, o epis´odio era terminado, uma recompensa negativa era atribu´ıda e um novo epis´odio era iniciado.

(32)

19 Os sensores do CARLA funcionam como threads dentro do programa. Cada vez que um sensor ´e instanciado, uma fun¸c˜ao ´e passada como argumento ao m´etodo gerador de sensores, de modo que a sa´ıda desse sensor, sendo executado no plano de fundo, seja direcionada para essa fun¸c˜ao argumento. A fun¸c˜ao pode ser um processamento de imagem, gera¸c˜ao de recompensa, verifica¸c˜ao de estado terminal do agente ou apenas registro em disco dos dados obtidos, por exemplo.

3.2.2

Atua¸

ao do agente

Usando m´etodos da API do CARLA, ´e poss´ıvel enviar comandos atrav´es da interface servidor-cliente de modo a controlar a angula¸c˜ao do volante do ve´ıculo e sua velocidade e acelera¸c˜ao.

De modo que o problema pudesse ser modelado dentro da abordagem do Q-Learning, as a¸c˜oes poss´ıveis para serem executadas pelo agente foram discretizadas, de modo que a camada final da rede neural possu´ısse trˆes neurˆonios. Sendo assim, o agente pode decidir entre trˆes a¸c˜oes: virar para esquerda, virar para direita ou manter o volante reto.

A a¸c˜ao de virar para a esquerda foi discretizada como uma angula¸c˜ao de -0,3 graus, a a¸c˜ao de virar para a direita como uma angula¸c˜ao de 0,3 graus e manter o volante reto como uma angula¸c˜ao de 0 graus.

Figura 3.1: Imagem gerada pelo sensor do CARLA versus imagem p´os-processamento.

Cada frame gerado pelo agente era fornecido como entrada para uma fun¸c˜ao que o processava, cortando a imagem nos locais que eram mais importantes para a dete¸c˜ao de pontos cr´ıticos, em seguida passava a imagem para escala de cinza, de modo a diminuir processamento na rede neural e fazia agrupamentos de quatro frames 3.1.

(33)

20

Figura 3.2: Arquivo gerado com dados sobre angula¸c˜ao do volante e seus quadros corres-pondentes.

de extens˜ao CSV, contendo ˆangula¸c˜ao do volante, e matrizes correspondendo aos pixels relativos ao agregado de frames relacionados `a angula¸c˜ao previamente dita, como visto na Figura 3.2. De modo que o agente fosse capaz de percorrer estados pouco comuns durante o processo de gerar o experience replay, as a¸c˜oes executadas pelo agente era escolhidas aleatoriamente.

Ap´os montado o experience replay, o agente pˆode come¸car a atuar tendo dispon´ıvel um sele¸c˜ao de experiˆencias passadas com as quais pode ser treinado. O tamanho escolhido para o experience replay foi de 1000 experiˆencias. N˜ao existe um n´umero concreto para ser usado como tamanho do buffer, os valores s˜ao determinados na literatura atrav´es de tentativa e erro.

Os dados contidos no arquivo CSV gerados seria ent˜ao passados a uma rede neural convolucional que tentaria estimar o valor de cada a¸c˜ao estando dentro de um determinado estado e a sa´ıda desse algoritmo seria enviada para o servidor do CARLA.

O algoritmo teria uma probabilidade  de realizar uma a¸c˜ao aleat´oria e uma pro-babilidade 1 −  de usar a fun¸c˜ao Q(s, a) mapeada pela rede neural para tomar a decis˜ao, de modo a abrangir o dilema explore X exploit, onde o agente n˜ao fica preso em estados mais comuns.

(34)

21 Entretanto, um problema foi descoberto ao tentar manter um sincronismo entre os sensores. Ao observar os dados gerados, constatou-se que, mesmo o timestamp de ativa¸c˜ao de um sensor sendo condizente com o do outro, devido a atrasos de computa¸c˜ao do CARLA, ocorria um conflito de informa¸c˜oes. Isso fez com que a imagem correspondente ao momento que o agente invadia a cal¸cada, por exemplo, n˜ao era a imagem correta, e sim uma imagem correspondente a segundos depois, o que representou um erro crucial para o problema proposto. Foi necess´ario, ent˜ao, testar solu¸c˜oes e observar o desempenho. A solu¸c˜ao pensada foi de manter armazenado junto com os dados o timestamp de cada um. Sendo assim, no momento que o sensor de invas˜ao de pista era acionado, esse timestamp era armazenado e fornecido a uma fun¸c˜ao que percorria os dados gerados pela cˆamera e apagava quaisquer dados relativos a timestamps seguintes antes de um novo epis´odio ser iniciado.

Outro problema foi observado ao dar continuidade na atua¸c˜ao do agente. Os sensores permitem escolher o intervalo de tempo no qual dados ser˜ao capturados. Dentre essas op¸c˜oes, no entanto, existe uma que permite captar dados o mais r´apido poss´ıvel. Essa op¸c˜ao, apesar de ser a mais interessante e fornecida pela pr´opria API do CARLA, causou problemas de congelamento do software devido ao excesso de processamento e requisi¸c˜oes cliente-servidor. Sendo assim, foi necess´ario atentar para a quantidade de requisi¸c˜oes feitas dentro de um intervalo de tempo.

Enquanto era pensada uma solu¸c˜ao para este problema, os desenvolvedores do CARLA lan¸caram uma nova vers˜ao atualizada que continha um modo de sincronismo dispon´ıvel para ser utilizado pela API.

Para que fosse obtido ent˜ao sincronismo entre o cliente, processando dados e com-putando recompensas e agrupamentos de frames e o servidor, foi necess´ario usar esse novo m´etodo dispon´ıvel na API do CARLA. Desse modo, o servidor fica ausente e o cliente pode processar o dados o quanto for necess´ario. Quando finalizado o processamento, o cliente sinaliza ao servidor que pode avan¸car para o pr´oximo estado.

3.2.3

Resultados

Mesmo com o modo de sincronismo do CARLA ativado e com os timestamps monitorados, ao ser realizada a aquisi¸c˜ao de dados, observou-se que ainda estava havendo perda de sincronismo.

(35)

22 Parte dos frames no quais o agente invadia a pista na contra-m˜ao e o sensor de invas˜ao de pista disparava valores n˜ao-nulos possu´ıam recompensa zero, o que n˜ao deveria acontecer. O epis´odio, ent˜ao,itor reiniciava e os frames seguintes recebiam a recompensa de -100, o que indica uma falha no sincronismo entre o algoritmo e o servidor.

Ap´os tentativas de resolver o problema de sincronismo entre o algoritmo e o servidor terem sido realizadas, constatou-se que o problema era mais cr´ıtico, sendo necess´ario abordar com maior detalhamento o c´odigo fonte do software CARLA, o que significaria se distanciar do escopo deste trabalho. Sendo assim, foi tomada a decis˜ao de encerrar a an´alise do CARLA nesta etapa.

Outro problema importante a ser ressaltado ´e que o CARLA requer um hardware m´ınimo a ser utilizado. Este trabalho foi iniciado em um notebook Dell Inspiron 5558 com processador Intel I5, sem placa de v´ıdeo dedicada e com 8GB de RAM. Por´em, mesmo tentando operar no modo sem renderiza¸c˜ao do CARLA, esse hardware n˜ao foi suficiente para rodar o simulador, sendo ent˜ao necess´ario adquirir um novo hardware e esperar que o mesmo fosse entregue.

Os novos componentes de hardware consistiram em um gabinete com processador Intel I7, uma placa de v´ıdeo dedicada NVIDIA GTX 1060 Ti e 8GB de RAM. Com essa nova composi¸c˜ao, foi poss´ıvel rodar o simulador tanto no modo sem renderiza¸c˜ao quanto com renderiza¸c˜ao.

3.3

Aprendizado Supervisionado na Udacity

O in´ıcio da modelagem come¸cou ao ser escolhida uma dentre as duas pistas dispon´ıveis para o usu´ario. A primeira pista foi escolhida devido a sua simplicidade e ausˆencia de eleva¸c˜ao do trajeto ao longo do percurso.

3.3.1

Aquisi¸

ao de dados

Com o objetivo de formar uma base suficientemente grande para treinar o algoritmo, foi iniciada a etapa de obten¸c˜ao de dados.Para isto, foi utilizado o modo de dire¸c˜ao manual da Udacity, sendo poss´ıvel controlar o ve´ıculo manualmente pelo tempo que for necess´ario. Fazendo uso da facilidade do software da Udacity, no momento em que o usu´ario indica que o per´ıodo de obten¸c˜ao de dados foi conclu´ıdo, o software automaticamente gera

(36)

23 um arquivo com extens˜ao CSV contendo os dados relativos ao percurso feito.

Dentro deste arquivo ´e poss´ıvel encontrar dados de velocidade, angula¸c˜ao do volante e trˆes frames, um relativo a uma cˆamera acoplada na parte esquerda do ve´ıculo, uma acoplada na parte central do ve´ıculo e a outra acoplada na parte direita do ve´ıculo. Mantendo o padr˜ao de an´alise realizado no CARLA, o controle de velocidade n˜ao entrou no escopo deste trabalho, sendo ent˜ao desconsiderado como entrada para o algoritmo.

3.3.2

Prepara¸

ao dos dados

Ao iniciar uma an´alise explorat´oria sobre os dados obtidos em trˆes voltas ao redor da pista n´umero 1 da Udacity, alguns problemas foram observados.

O primeiro problema foi que, como a pista tem uma predominˆancia maior de curvas suaves para a esquerda, a grande maioria dos ˆangulos obtidos para an´alise se encontravam dentro do intervalo de -0,2 e 0. Isso pode ser visto na Figura 3.3

Figura 3.3: Histograma com ˆangulos do volante.

O segundo problema foi que, por estarem deslocadas em rela¸c˜ao ao eixo do carro, as cˆameras laterais n˜ao poderiam ser usadas no mesmo algoritmo sem terem recebido o devido processamento. Caso n˜ao feito tal processamento, estaria sendo perdidos dados ´

uteis para o treinamento do algoritmo. Isso pode ser observado na Figura 3.4.

Para resolver o primeiro problema, a seguinte t´ecnica de processamento de imagens foi utilizada: cada frame central processado relativo `a curvas para a esquerda tinha trinta por cento de chance de ser espelhado e ter sua angula¸c˜ao do volante correspondente mul-tiplicada por −1. Sendo assim, ap´os realizada uma subamostragem, foi poss´ıvel ampliar

(37)

24

Figura 3.4: Imagens das cˆameras central e lateral direita durante uma curva. consideravelmente o n´umero de amostras correspondentes a virar para a direita, deixando a base de dados mais heterogˆenea.

Para resolver o segundo problema, a seguinte t´ecnica de processamento de imagens foi utilizada: Cada frame lateral processado tinha dez por cento de chance de ser deslocado 0,2 graus no valor de angula¸c˜ao, caso fosse um frame lateral esquerdo, ou -0,2 caso fosse um frame lateral direito. Sendo assim, o n´umero de amostras dispon´ıveis para treinamento do algoritmo pˆode ser aumentada.

Figura 3.5: Histograma com angula¸c˜ao do volante ap´os tratamentos

Foi poss´ıvel observar que, ap´os todo o tratamento dos dados, a disposi¸c˜ao de an-gula¸c˜ao do volante ao longo do percurso se tornou mais heterogˆenea e se aproximou de uma distribui¸c˜ao normal, o que permite que o treinamento do algoritmo tenha maiores chances de sucesso, ao inv´es de ser enviesado por uma classe majorit´aria nas amostras.

3.3.3

Escolha do modelo e treinamento

A NVIDIA tornou dispon´ıvel a arquitetura da rede usada para treinar o carro autˆonomo usado em seu projeto de carros autˆonomos utilizando reconhecimento de imagens [10].

(38)

25

Figura 3.6: Arquitetura da rede neural do projeto da NVIDIA. Fonte: [10] Essa arquitetura se encontra representada na Figura 3.6.

Acreditou-se ser um bom ponto de referˆencia come¸car pelo modelo sugerido pela NVIDIA. Sendo assim, foi realizada uma avalia¸c˜ao da perfomance do algoritmo com estru-turas similares `a sugerida pelo artigo da NVIDIA 3.7, utilizando a ferramenta Tensorboard disponibilizada pelo Tensorflow, de modo a investigar o melhor modelo a ser usado no pro-blema em quest˜ao. Atrav´es da Figura, ´e poss´ıvel observar o desempenho dos diferentes tipos de arquitetura ao longo de dez ´epocas. Os parˆametros testados no Tensorboard foram n´umero de camadas profundas, n´umero de neurˆonio por camadas e n´umero de camadas convolucionais. [12]

Usando 6.018 amostras, divididas entre 4.212 para treinamento e 1.806 para vali-da¸c˜ao de parˆametros, seguindo o padr˜ao geral da liteturatura de dividir 60% para trei-namento e 40% para teste, a rede neural foi treinada durante 10 ´epocas com taxa de aprendizado 0,001.

Ap´os a an´alise no Tensorboard, foi poss´ıvel observar quais arquiteturas de rede eram as mais promissoras e com menor valor de perda durante o treinamento, e estas foram escolhidas para avan¸car para a etapa de teste. Na Figura 3.8, est˜ao ampliados os modelos que obtiveram a menor perda, ou seja, os que obtiveram menor erro m´edio entre

(39)

26

Figura 3.7: Inspe¸c˜ao de performance em mais de 60 modelos diferentes.

valor de predi¸c˜ao e valor real, ap´os o treinamento de dez ´epocas. Esses foram os modelos mais interessantes a serem levados para fase de testes.

N˜ao foram separadas amostras para a fase de teste, a qual consiste em avaliar se o modelo ´e capaz de generalizar para amostras n˜ao enviesadas pelo treinamento. No entanto, optou-se por manter a base de amostras e realizar a fase de teste por inspe¸c˜ao pr´atica da performance de cada arquitetura no pr´oprio simulador, de forma a observar os resultados.

Figura 3.8: Foco nos modelos com menor valor de perda e convergˆencia mais r´apida escolhidos para a fase de teste.

(40)

27 O m´etodo de otimiza¸c˜ao escolhido foi o Adaptive Moment Estimation Algorithm, a fun¸c˜ao erro escolhida foi o erro m´edio quadr´atico, a fun¸c˜ao de ativa¸c˜ao nas camadas foi a fun¸c˜ao ReLU e o treinamento da rede foi realizado em uma GPU com 1.280 CU DA cores.

3.3.4

Resultados

O objetivo do teste era conseguir obter um modelo que fosse capaz de guiar o carro ao longo da pista durante uma volta sem qualquer tipo de colis˜ao e a com a maior estabilidade poss´ıvel.

Ap´os treinada a rede, foi ativado o modo autˆonomo disponibilizado pelo pr´oprio software na interface do usu´ario, no qual a ferramenta habilita o modo servidor e ´e poss´ıvel que o usu´ario se conecte e utilize um modelo treinado para ser utilizado.

Fornecendo como entrada os modelos selecionados para o teste de campo, os quais se encontram na Figura 3.8, em apenas dois modelos foi poss´ıvel observar o ve´ıculo andar corretamente pela pista, durante uma volta, sem colidir com nenhum objeto ou parede, mostrando que esta arquitetura de rede neural conseguiu ajustar os pesos de modo a generalizar suficientemente e permitir guiar pela pista sem acidentes. Foram estes: modelo de 4 camadas convolucionais, 3 camadas densas e tamanho de camada 64 e modelo de 3 camadas convolucionais, 2 camadas densas e tamanho de camada 64. Os tamanhos de passo e tamanho do filtro foram mantidos iguais ao modelo NVIDIA.

O modelo de 4 camadas convolucionais, 3 camadas densas e tamanho de camada 64 foi escolhido como o modelo de resultado final, devido a sua capacidade de guiar o carro com maior seguran¸ca e estabilidade.

Tamb´em ´e importante ressaltar que durante todo o processo com o simulador da Udacity, exceto o treinamento da rede, foi utilizado um notebook Inspiron 5558, com processador I5, 8GB de RAM e sem placa de v´ıdeo dedicada.

´

E poss´ıvel usar o software Unity para criar pistas espec´ıficas a serem usadas no estudo, por´em foi visto que isto sairia do escopo do projeto, j´a que a pista n´umero um foi suficiente para testar o algoritmo.

(41)

28

3.4

Compara¸

ao dos Resultados

Os crit´erios utilizados para comparar as ferramentas, sendo avaliados em notas de 0 a 5, a nota 1 (um) representando um desempenho ruim e a nota 5 (cinco) representando um desempenho ´otimo, foram os seguintes:

Interface de uso: O quanto amig´avel ´e a interface dispon´ıvel para o usu´ario.

Realismo: O quanto a ferramenta se ateve `as leis da f´ısica que regem um cen´ario de transporte veicular e tamb´em `a fidelidade dos dados gerados pelos sensores. Pode-se citar como exemplo: velocidade, acelara¸c˜ao, for¸cas laterais, comportamento de colis˜ao, qualidade da imagem gerada, entre outros.

Requisitos de Hardware: Neste crit´erio foi avaliada a composi¸c˜ao necess´aria de equi-pamentos para que fosse poss´ıvel utilizar a ferramenta. Uma pontua¸c˜ao alta simbo-liza a op¸c˜ao de usar componentes de hardware mais simples e mais baratos.

Compatibilidade com aplica¸c˜oes IoT: Avaliou-se o quanto era poss´ıvel implementar solu¸c˜oes que tamb´em envolvessem IoT. Sensores semaf´oricos, sensores de pedestres, sensores veiculares e ambiente compartilhado entre m´ultiplos agentes foram quesitos levados em conta neste crit´erio.

Facilidade de uso: Foi avaliado a facilidade de implementa¸c˜ao de uma solu¸c˜ao end-to-end na ferramenta. Levou-se em conta os passos de instala¸c˜ao e acesso at´e visuali-za¸c˜ao e valida¸c˜ao de resultados.

Escalabilidade: Este crit´erio avaliou a capacidade que cada ferramenta tinha em adici-onar novos aspectos a um problema j´a modelado em produ¸c˜ao e a capacidade das ferramentas em crescer para um problema maior.

State-of-the-art Benchmarking : Foi realizada uma avalia¸c˜ao de documentos e pes-quisas dispon´ıveis para acesso, nos quais solu¸c˜oes s˜ao propostas utilizando as ferra-mentas, de forma que seja poss´ıvel usar estes documentos como base de compara¸c˜ao e avalia¸c˜ao de resultados.

(42)

29 Tabela 3.1: Compara¸c˜ao dos Resultados

Crit´erio CARLA Udacity Interface 2 5

Realismo 5 2

Requisito de Hardware 1 4 Compatibilidade com aplica¸c˜oes IoT 4 1 Facilidade de uso 3 3 Escalabilidade 4 2 State-of-the-art benchmarking 2 3

3.4.1

Descri¸

ao das Pontua¸

oes

Interface de uso: O simulador da Udacity recebeu nota m´axima por possuir uma in-terface embutida para in´ıcio da simula¸c˜ao, com atalhos para grava¸c˜ao de percursos e sendo poss´ıvel controlar o ve´ıculo atrav´es de atalhos no teclado. O CARLA, por outro lado, n˜ao possui interface de uso, sendo todos os passos realizados atrav´es do terminal de comando, al´em disso, o CARLA possui apenas compatibilidade com sistemas Linux, a compatibilidade com sistemas Windows ainda est´a em fase de testes.

Realismo: O CARLA recebeu nota m´axima devido ao fato de possuir dados relativos a modelagem f´ısica de ve´ıculos como, por exemplo, o valor de sa´ıda de um sensor de colis˜ao ter valores condizentes com a velocidade que o ve´ıculo estava sendo con-duzido. Al´em disso, o modo que o ve´ıculo se comporta em situa¸c˜oes de estresse tamb´em foi levado em conta. O simulador da Udacity, por outro lado, n˜ao possui acesso a informa¸c˜oes f´ısicas relativas ao ve´ıculo e n˜ao permite, por exemplo, uso de sem´aforos e pedestres.

Requisitos de Hardware: O CARLA recebeu uma pontua¸c˜ao baixa por necessitar de uma placa de v´ıdeo dedicada e um processador acima de m´edia para funcionar. J´a o simulador da Udacity foi capaz de ser utilizado em um hardware mediano.

Compatibilidade com aplica¸c˜oes IoT: Grande parte dos estudos recentes em aplica-¸c˜oes IoT reside em comunica¸c˜oes V2V e controle de tr´afego, por exemplo. O CARLA

(43)

30 permite ter controle de diversos sem´aforos e ve´ıculos e obter dados sobre todos eles. O simulador da Udacity, no entanto, n˜ao possui nenhum tipo de compatibilidade deste tipo.

Facilidade de uso: Apesar do fato de n˜ao possuir uma interface, a API em Python do CARLA ´e consideravelmente completa e possui m´etodos integrados que abstraem do programador a necessidade de fugir do escopo de seu trabalho. Pode-se citar como exemplo a existˆencia de um m´etodo cuja fun¸c˜ao ´e estabelecer a conex˜ao cliente-servidor com o simulador. Essa mesma funcionalidade, por´em, no simulador da Udacity fica sob encargo do programador desenvoler. Um ponto que ´e relativa-mente fraco em ambas as ferramentas ´e a ausˆencia de uma documenta¸c˜ao concreta e facilmente dispon´ıvel.

Escalabilidade: Atrav´es da API do CARLA, ´e poss´ıvel adicionar novos agentes no am-biente de estudo, ou ent˜ao alternar sensores ou mudar o jeito como se comportam. O software da Udacity, no entanto, n˜ao permite altera¸c˜oes nos sensores j´a existentes bem como n˜ao permite adicionar novos agentes ao problema estudado. Como o trei-namento dos modelos ocorre fora dos simuladores, ambos n˜ao possuem problemas em testar novos parˆametros para os modelos escolhidos.

State-of-the-art Benchmarking : Por ser uma ferramenta recente, existe uma dificul-dade em encontrar solu¸c˜oes aplicadas no CARLA para serem utilizadas em modo comparativo. Para o simulador da Udacity, no entanto, por ser uma ferramenta mais antiga, ´e poss´ıvel encontrar trabalhos de referˆencia com maior facilidade.

(44)

Cap´ıtulo 4

Conclus˜

ao

Alguns pontos podem discutidos ao avaliar as ferramentas escolhidas para an´alise neste trabalho. O software CARLA tem uma profundidade que permite que o usu´ario tenha uma intera¸c˜ao mais personalizada com o ambiente de estudo. Isso, por´em, traz consigo uma dificuldade maior ao utilizar a ferramenta e tamb´em acaba gerando uma interface menos amig´avel ao usu´ario e a quem n˜ao possui experiˆencia com desenvolvimento de aplica¸c˜oes.

Outro problema importante ´e que n˜ao ´e poss´ıvel utilizar este simulador em um notebook com requisitos medianos. ´E necess´ario possuir uma composi¸c˜ao de hardware acima da m´edia para que o simulador CARLA funcione corretamente.

´

E importante ressaltar tamb´em que o CARLA ´e uma excelente ferramenta para quem deseja simular ambientes de comunica¸c˜ao V2V, visto que ´e poss´ıvel instaciar diversos ve´ıculos, pedestres e tamb´em obter dados de cada um deles em tempo real e advindos de diversos sensores diferentes.

Grande parte dos problemas encontrados no CARLA no decorrer deste trabalho podem ser abordados em um estudo cujo o escopo seja de foco maior no CARLA. Como por exemplo, a quest˜ao do sincronimo entre cliente e servidor.

Sobre o software da Udacity, ´e uma ferramenta definitivamente mais amig´avel ao usu´ario, de modo que o cliente n˜ao precise adentrar em caracter´ısticas de formata¸c˜ao do simulador e pode apenas se dedicar a pesquisa a desenvolver sua solu¸c˜ao. Por ser um software mais antigo no mercado, existe um n´umero maior de solu¸c˜oes j´a testadas para serem usadas como benchmarking, como por exemplo [8]

(45)

32 da Udacity traz consigo um realismo consideravelmente aqu´em quando comparado ao CARLA, seja na f´ısica do ve´ıculo quanto na gama de dados associados ao agente de interesse.

Por n˜ao possibilitar instanciar m´ultiplos ve´ıculos e pedestres e tamb´em n˜ao per-mitir ter controle sobre objetos dentro da simula¸c˜ao, como sem´aforos, projetos de IoT de comunica¸c˜ao V2V, por exemplo, n˜ao seriam adequados para esta plataforma.

Sendo assim, com os resultados obtidos neste trabalho, constatou-se que, apesar de haver um d´eficit de ferramentas que auxiliem os testes de solu¸c˜oes aplicadas a ve´ıculos autˆonomos, ´e poss´ıvel observar avan¸cos e um aumento no interesse dos desenvolvedores em criar softwares mais robustos e que representem com fidelidade ambientes urbanos.

Para pesquisadores e engenheiros cuja inten¸c˜ao ´e montar uma plataforma end-to-end de ve´ıculos autˆonomos, o CARLA ´e a recomenda¸c˜ao mais forte. Atrav´es das s´ınteses obtidas no escopo deste trabalho, mostra-se o potencial do CARLA para gerar dados em tais aplica¸c˜oes e a fidelidade e realismo dos mesmos.

No entanto, para pesquisadores e engenheiros cuja inten¸c˜ao ´e se ater em desenvolver algoritmos de aprendizado de m´aquina e otimiz´a-los, a ferramenta disponibilizada pela Udacity ´e uma forte recomenda¸c˜ao para iniciar a pesquisa.

(46)

Cap´ıtulo 5

Sugest˜

oes para trabalhos futuros

Com base no trabalho desenvolvido, diversas vertentes de trabalhos futuros podem ser identificadas.

A primeira seria utilizar o CARLA em projetos de IoT com inteligˆencia artificial, por exemplo, coordena¸c˜ao de trˆansito utilizando utilizando os dados advindos de sensores semaf´oricos e de ve´ıculos criados no mapa.

A segunda ´e explorar o c´odigo fonte do CARLA e tornar poss´ıvel a aquisi¸c˜ao dos dados e sincronismo entre cliente e servidor, de modo que seja poss´ıvel aplicar solu¸c˜oes de aprendizado por refor¸co no CARLA.

A terceira consiste em fazer uso do segundo trajeto presente no software de simu-la¸c˜ao da Udacity. Por ser uma pista com diferentes eleva¸c˜oes, isso traz outras dificuldades para o escopo do problema. Pode-se, inclusive, usar o modelo gerado neste trabalho e realizar compara¸c˜oes.

A quarta e ´ultima sugest˜ao ´e fazer uma valida¸c˜ao inversa das t´ecnicas utilizadas e comparar os resultados com este trabalho, usando nesse caso aprendizado por refor¸co na Udacity e aprendizado supervisionado no CARLA.

(47)

34

Referˆ

encias Bibliogr´

aficas

[1] Artigo Jornal O Globo, https://g1.globo.com/carros/noticia/2019/05/23/a-cada- 1-hora-5-pessoas-morrem-em-acidentes-de-transito-no-brasil-diz-conselho-federal-de-medicina.ghtml. Acesso em 29/10/2019

[2] Artigo da Associa¸c˜ao Nacional dos DETRANS, http://www.and.org.br/brasil-ja-tem-1-carro-a-cada-4-habitantes-diz-denatran. Acesso em 29/10/2019

[3] Machine Learning Algorithms in Autonomous Driving https://iiot-world.com/machine-learning/machine-learning-algorithms-in-autonomous-driving. Acesso em 29/10/2019

[4] Site de apresenta¸c˜ao do CARLA, http://carla.org. Acesso em 29/03/2019

[5] Documenta¸c˜ao do CARLA, https://carla.readthedocs.io/en/latest/. Acesso em 29/03/2019

[6] SUTTON, Richard and BARTO, Andrew. Reinforcement Learning: An Introduction, Andrew Barto, 1992

[7] Artigo sobre IA modelando a brincadeira de pique-esconde e sendo disrup-tivo, https://www.vox.com/future-perfect/2019/9/20/20872672/ai-learn-play-hide-and-seek. Acesso em 29/10/2019

[8] Github do programador Siraj Raval, https://github.com/llSourcell/. Acesso em 02/07/2019

[9] Livro online Deep Learning Book, http://deeplearningbook.com.br. Acesso em 25/04/2019

(48)

35 [10] BOJARSKI, Mariusz and FIRNER, Ben and FLEPP, Beat and JACKEL, Larry and MULLER, Urs and ZIEBA, Karol and DEL TESTA, David, End-to-End Deep Learning for Self-Driving Cars

[11] P´agina da Wikipedia sobre Q-Learning, https://en.wikipedia.org/wiki/Q-learning. Acesso em 31/03/2019

[12] Documenta¸c˜ao sobre Tensorboard, https://www.tensorflow.org/tensorboard/. Acesso em 25/04/2019

[13] FAYJIE, Abdur and HOSSAIN, Sabir and OUALID, Doukhi and LEE, Deok-Jin, Driverless Car: Autonomous Driving Using Deep Reinforcement Learning in Urban Environment

[14] KULKARNI, Ruturaj and DHAVALIKAR, Shruti and BANGAR, Sonal, Traffic Light Detection and Recognition for Self Driving Cars Using Deep Learning

[15] PRABHAKAR, Gowdham and KAILATH, Binsu and NATARAJAN, Sudha and KUMAR, Rajesh, Obstacle detection and classification using deep learning for trac-king in high-speed autonomous driving

[16] ZHANG, Yi and SUN, Ping and YIN, Yuhan and LIN, Lin and WANG, Xuesong Human-like Autonomous Vehicle Speed Control by Deep Reinforcement Learning with Double Q-Learning

[17] SIQUEIRA GOMES, Hugo, Towards Deep Q-Caching

[18] XIA, Wei and LI, Huiyun and LI, Baopu A Control Strategy of Autonomous Vehicles Based on Deep Reinforcement Learning

[19] Artigo Statistical Analysis System, https://www.sas.com/ptb

r/insights/analytics/machine-learning.html. Acesso em 29/10/2019

[20] Artigo Statistical Analysis System, https://www.sas.com/ptb

r/insights/analytics/neural-networks.html. Acesso em 29/10/2019

Referências

Documentos relacionados

No prazo de 10 dias contada da deliberação, para os condóminos presentes, ou contada da sua comunicação, para os condómino ausentes, pode ser exigida ao administrador a convocação

• Não há inflação de alimentos, há inflação, causada por choques cambiais, auxílio emergencial, problemas fiscais e má gestão de estoques públicos;. • O Brasil precisa

v) por conseguinte, desenvolveu-se uma aproximação semi-paramétrica decompondo o problema de estimação em três partes: (1) a transformação das vazões anuais em cada lo-

Silva e Márquez Romero, no prelo), seleccionei apenas os contextos com datas provenientes de amostras recolhidas no interior de fossos (dado que frequentemente não há garantia

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

Com o intuito de aperfeic¸oar a realizac¸˜ao da pesquisa O/D, o objetivo do presente trabalho ´e criar um aplicativo para que os usu´arios do transporte p´ublico informem sua origem

Neste capítulo, será apresentada a Gestão Pública no município de Telêmaco Borba e a Instituição Privada de Ensino, onde será descrito como ocorre à relação entre

Assim, além de suas cinco dimensões não poderem ser mensuradas simultaneamente, já que fazem mais ou menos sentido dependendo do momento da mensuração, seu nível de