dissertação mestrado marcus lima

71
UNIVERSIDADE ESTADUAL DE CAMPINAS Faculdade de Engenharia Mecânica MARCUS VINICIUS PONTES LIMA Reconstrução e Regularização de Trajetórias via Odometria Visual e Redes Neurais CAMPINAS 2015

Upload: marcus-lima

Post on 14-Apr-2017

235 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Dissertação Mestrado Marcus Lima

UNIVERSIDADE ESTADUAL DE CAMPINAS

Faculdade de Engenharia Mecânica

MARCUS VINICIUS PONTES LIMA

Reconstrução e Regularização de Trajetórias

via Odometria Visual e Redes Neurais

CAMPINAS

2015

Page 2: Dissertação Mestrado Marcus Lima
Marvi
Rectangle
Page 3: Dissertação Mestrado Marcus Lima

Agência(s) de fomento e nº(s) de processo(s): FAPEAM, 002/2014

Ficha catalográficaUniversidade Estadual de Campinas

Biblioteca da Área de Engenharia e ArquiteturaLuciana Pietrosanto Milla - CRB 8/8129

Lima, Marcus Vinicius Pontes, 1991- L628r LimReconstrução e regularização de trajetórias via odometria visual e redes

neurais / Marcus Vinicius Pontes Lima. – Campinas, SP : [s.n.], 2015.

LimOrientador: Paulo Roberto Gardel Kurka. LimDissertação (mestrado) – Universidade Estadual de Campinas, Faculdade

de Engenharia Mecânica.

Lim1. Redes neurais (Computação). 2. Blender (Programa de computador). 3.

Fluxo óptico. 4. Visão por computador. 5. Navegação autônoma. 6.Processamento de imagens. I. Kurka, Paulo Roberto Gardel,1958-. II.Universidade Estadual de Campinas. Faculdade de Engenharia Mecânica. III.Título.

Informações para Biblioteca Digital

Título em outro idioma: Reconstruction e regularization of trajectories via visual odometryand neural networksPalavras-chave em inglês:Neural networks (Computer)Blender (Computer program)Optical FlowComputer visionAutonomous navigationImage processingÁrea de concentração: Mecânica dos Sólidos e Projeto MecânicoTitulação: Mestre em Engenharia MecânicaBanca examinadora:Paulo Roberto Gardel Kurka [Orientador]Grace Silva DeaectoJuliana Aparecida FracarolliData de defesa: 26-11-2015Programa de Pós-Graduação: Engenharia Mecânica

Powered by TCPDF (www.tcpdf.org)

Page 4: Dissertação Mestrado Marcus Lima
Marvi
Rectangle
Marvi
Rectangle
Marvi
Rectangle
Page 5: Dissertação Mestrado Marcus Lima

DEDICATÓRIA

Dedico este trabalho à minha querida mãe.

Page 6: Dissertação Mestrado Marcus Lima

AGRADECIMENTOS

Este trabalho teve colaboração de diversas pessoas, gostaria de prestar meus

agradecimentos:

A Deus, por ser a esperança do impossível.

À minha mãe, pelo incentivo em todos os momentos da minha vida.

À minha querida namorada, por todo o apoio e por manter a minha vida em

ordem.

Ao meu orientador, Prof. Dr. Paulo Kurka que foi além do seu papel de

orientador e sempre me deu apoio quando necessário e confiou na minha capacidade para

desenvolver este trabalho.

A todos os professores e colegas da UNICAMP, que contribuíram com seu

tempo, conselhos, críticas e parte de suas pesquisas. Em especial, à Profa. Dra. Grace Deaecto

por ter acreditado no meu potencial e sempre me dado conselhos valiosos, ao Prof. Dr. Ely

Paiva pelos excelentes ensinamentos e por sempre estar presente quando necessário e à Profa.

Dra. Juliana Fracarolli por ter gentilmente aceito participar na banca avaliadora e mostrar-se

interessada na pesquisa.

A todos, muito obrigado.

Page 7: Dissertação Mestrado Marcus Lima

“No man is an island”

(John Donne)

Page 8: Dissertação Mestrado Marcus Lima

RESUMO

Aplicações na área de navegação e localização autônoma visual (vSLAM) utilizam

sensores auxiliares à visão para diminuição dos erros de estimativa de posição. Neste trabalho,

demonstra-se uma metodologia para a recuperação e a regularização de uma trajetória

percorrida por um robô utilizando somente imagens estereoscópicas capturadas com uma

determinada frequência durante sua movimentação. A simulação da movimentação e a captura

de imagens são realizadas em um ambiente virtual desenvolvido na plataforma de computação

gráfica 3D – Blender. A dinâmica de movimentação do robô, a recuperação da trajetória e a

filtragem são implementados no MATLAB e o processamento de imagens é realizado no Visual

Studio em C++ utilizando a biblioteca OpenCV.

Utilizando o algoritmo de processamento de imagens de Shi-Tomasi, são encontrados

pontos de interesse em casa imagem. Com estes pontos e a técnica de fluxo óptico de Lucas

Kanade, estima-se o deslocamento destes pontos em coordenadas de pixel. Utilizando relações

geométricas, é possível converter essa movimentação para coordenadas do mundo, ou seja,

recuperando a trajetória original do robô. Esta estimativa possui um erro de escala e rotação em

relação à original; utiliza-se então um filtro projetado com redes neurais para melhoria dos

resultados.

Palavras Chave: vSLAM; Imagens Esteroscópicas; Blender; Fluxo Óptico; Shi-Tomasi; Lucas

Kanade; OpenCV; Robô.

Page 9: Dissertação Mestrado Marcus Lima

ABSTRACT

Applications in the autonomous visual localization and mapping (vSLAM) field make

use of auxiliary sensors to the vision in order to reduce the trajectory estimation error. In this

work, it is presented a methodology to recover and regularize a trajectory of a robot using only

stereoscopic images captured in a determined frequency during its path. The simulation of the

robot’s movement and the capture of images are done in a virtual environment designed in the

3D creation suite – Blender. The robot’s dynamics, trajectory recovery and regularization

(filtering) are implemented in MATLAB. Image processing is achieved in Visual Studio using

C++ and OpenCV library.

Using the image-processing algorithm to find good points to track of Shi-Tomasi and

the Optical Flow from Lucas Kanade, interest points are determined on the stereo image and

their displacement is estimated in pixel coordinates. Using geometrical relations, it is possible

to convert such displacement in world coordinates, i.e. recover the robot’s original trajectory.

Such estimation has a scale and rotation error in comparison to the original; a filter designed

using neural network is applied for improvement.

Key Words: vSLAM; Stereo Images; Blender; Optical Flow; Shi-Tomasi; Lucas Kanade;

OpenCV; Robot.

Page 10: Dissertação Mestrado Marcus Lima

LISTA DE ILUSTRAÇÕES

1.1 Crescimento do erro de posição horizontal na utilização de diferentes IMUs................15

1.2 Erro de posição em metros vs. tempo (hora) com GPS (a) e sem GPS(b)......................16

1.3 Imagem de disparidade (a) e Identificação de obstáculos (b). Em verde, a área navegável

e em azul, os obstáculos...................................................................................................17

1.4 Razão de acerto de correlação em relação ao número do frame das imagens de uma

sala..................................................................................................................................18

2.1 Bordas-degrau (step edges).............................................................................................21

2.2 Mapa de cantos obtido por diferentes métodos e a imagem de referência. (a) Imagem

Original. (b) Imagem de referência. (c) mapa SOHT. (d) mapa UTHT. (e) mapa do método

proposto...............................................................................................................................22

2.3 Varredura ao longo de uma borda (a) e ao longo de um canto (b).................................23

2.4 Detecção de bolhas na imagem (a) utilizando diferente métodos: (b)Frangi’s. (c) Li’s.

(d)Método proposto.............................................................................................................25

2.5 Campo de visão de câmeras estereoscópicas e sua área de convergência (verde)..........27

2.6 Duas imagens obtidas por câmeras estereoscópicas.......................................................28

2.7 Imagens estereoscópicas retiradas do rover da NASA em MARTE..............................29

2.8 Correlação da região selecionada na imagem esquerda com a direita............................29

2.9 Representação da imagem em escala de cinza e por fluxo óptico em cores...................31

2.10 Representação do fluxo óptico por campo de cores e setas..........................................31

2.11 Representação do fluxo óptico por campo de cores e setas. (a) Câmera se deslocando

para a esquerda; (b) Câmera se aproximando do centro. (c) Câmera se afastando do

centro...................................................................................................................................32

3.1 Processamento de dados em um neurônio. A ativação de um neurônio implica no valor

de gatilho (threshold)..........................................................................................................34

3.2 Função de Fermi parametrizada......................................................................................36

3.3 Modelo da Rede Neural com pesos (w) e biases (b).......................................................37

4.1 Ambiente de desenvolvimento Visual Studio 2010........................................................40

4.2 Aplicação de uma máscara para definição da área de busca dos feature points.............41

4.3 Modelo de câmera pinhole..............................................................................................43

4.4 Projeção perspectiva de uma câmera pinhole.................................................................43

Page 11: Dissertação Mestrado Marcus Lima

LISTA DE ILUSTRAÇÕES

4.5 Modelo simplificado da composição de movimentação do robô a cada instante...........45

4.6 Geometria perspectiva de câmeras estereoscópicas........................................................46

4.7 Seleção dos dados de entrada e targets para o treinamento............................................48

4.8 Etapa de validação e teste dos dados..............................................................................48

4.9 Seleção dos dados de entrada e targets para o treinamento............................................49

4.10 Etapa de treinamento da Rede Neural......................................................................50

5.1 Modelo do robô terrestre do tipo diferencial..................................................................51

5.2 Ambiente virtual de uma sala fechada com chão e paredes texturizadas.......................52

5.3 Imagem capturada em uma câmera virtual no ambiente do Blender..............................53

5.4 Identificação de pontos nas imagens da esquerda e direita das câmeras virtuais.......... 53

5.5 Funcionamento do processamento das imagens aplicado no Visual Studio...................53

5.6 Estrutura do arquivo de texto contendo os pontos identificados nas imagens

capturadas............................................................................................................................54

5.7 Trajetórias circular, octogonal e quadrada aplicadas no treinamento da rede neural.....55

5.8 Fluxograma da etapa de treinamento (a) e aplicação da rede neural (b)..........................55

6.1 Resultado da performance da rede neural após o treinamento: Histograma de erro (a), Erro

Médio Quadrático/Época (b), Saída/Target dos dados de treinamento e teste (c) e

Parâmetros da rede neural (d).............................................................................................56

6.2 Resultado da estimativa das trajetórias circular, octogonal e quadrada por odometria

visual...................................................................................................................................57

6.3 Resultado da aplicação das trajetórias circular, octogonal e quadrada na rede neural

treinada................................................................................................................................57

6.4 Trajetória composta estimada apenas por odometria visual (esquerda) e regularizada por

rede neural (direita).............................................................................................................58

Page 12: Dissertação Mestrado Marcus Lima

LISTA DE TABELAS

1.1 Estatísticas dos erros da trajetória, em metros e porcentagem da trajetória.................16

4.1 Função goodFeaturesToTrack (Shi-Tomasi) e seus parâmetros..................................41

6.1 Erro médio quadrático das posições com odometria visual e rede neural....................59

6.2 Tempo de execução da odometria visual, treinamento e aplicação da rede.................59

Page 13: Dissertação Mestrado Marcus Lima

LISTA DE ABREVIATURAS E SIGLAS

SLAM Simultaneous Localization and Mapping

vSLAM Visual Simultaneous Localization and Mapping

O.V. Odometria Visual

GPS Global Positioning System

GNSS Global Navigation Satellite System

IMU Inertial Measurement Unit

SINS Strapdown Inertial Navigation System

ORB Oriented FAST and Rotated BRIEF

SURF Speeded Up Robust Features

SIFT Scale-invariant Feature Transform

V.O. Visual Odometry

SBA Sparse Bundle Adjustment

RMS Root Mean Square

SOHT Subset and Overset for Hysteresis Thresholds

UTHT Unimodal thresholding for Hysteresis Thresholds

WSSD Weighted Sum of Squared Differences

SSD Sum of Squared Differences

CPU Central Processing Unit

GPU Graphics Processing Unit

SVD Singular Value Decomposition

SSE Sum of Squared Errors

SSW Sum of Squared Weights

Nftool Neural Fitting Tool

SVM Support Vector Machines

KNN “K” Nearest Neighbours

Page 14: Dissertação Mestrado Marcus Lima

SUMÁRIO

1 INTRODUÇÃO .......................................................................................................... 15

1.1 Objetivo do Trabalho .................................................................................................... 19

1.2 Estrutura do Trabalho ................................................................................................... 19

2 PROCESSAMENTO DE IMAGENS E ESTIMATIVA DE MOVIMENTO ....... 20

2.1 Detecção de Pontos Característicos (feature points) .................................................... 20

2.2 Correlação de Regiões na Imagem ............................................................................... 26

2.3 Estimativa do Movimento Utilizando Fluxo Óptico .................................................... 30

3 REGULARIZAÇÃO POR REDES NEURAIS ARTIFICIAIS ............................. 34

3.1 Estrutura da Rede Neural .............................................................................................. 34

3.2 Aprendizado e Treinamento da Rede Neural ............................................................... 37

4 PROPOSTA DE REGULARIZAÇÃO DE TRAJETÓRIAS ESTIMADAS.........40

4.1 Aplicação da Detecção de Pontos e do Fluxo Óptico ................................................... 40

4.2 Conversão de Coordenadas e Composição da Trajetória do Robô .............................. 42

4.3 Treinamento e Aplicação da Rede Neural .................................................................... 47

5 ANÁLISE EXPERIMENTAL ................................................................................... 51

6 RESULTATOS ........................................................................................................... 56

7 CONCLUSÕES E TRABALHOS FUTUROS ......................................................... 61

REFERÊNCIAS.......................................................................................................... 63

APÊNDICE A..............................................................................................................66

Page 15: Dissertação Mestrado Marcus Lima

15

1 INTRODUÇÃO

A localização e mapeamento simultâneos (SLAM1) é uma tarefa primária na navegação

de robôs autônomos como visto em Weiss (2011). O uso de imagens para a realização de tal

tarefa muda a abreviação para (vSLAM), onde o “v” refere-se a visual, neste caso, a estimativa

de movimentação do robô é denominada odometria visual (O.V.). As aplicações nesta área

englobam robôs terrestres Lategahn (2011), aéreos Fu (2014) e aquáticos Burguera (2014).

Mesmo em projetos atuais, verifica-se a utilização de sensores auxiliares à visão, como

GPS, IMU, encoders, para tratar problemas de precisão presentes nos algoritmos de

recuperação de trajetória por imagens. Informações de odometria de encoders rotacionais e

sensores inerciais fornecem informações relevantes para a odometria mas estão sujeitos a

problemas de deslizamento das rodas e acumulação de erros – tornando-as eficientes apenas

para curtos movimentos em pequenos intervalos de tempo. A Figura 1.1 ilustra o efeito de drift

presente na estimativa utilizando diferentes modelos de IMU. Cada cor identifica um modelo

diferente do sensor.

Figura 1.1: Crescimento do erro de posição horizontal na utilização de diferentes IMUs em

uma aplicação sem GNSS (Gobal Navigation Satellite System).

Fonte: Phoenix Aerial Systems (2014).

1 Do inglês Simultaneous Localization and Mapping

Page 16: Dissertação Mestrado Marcus Lima

16

A performance não está somente relacionada com o fabricante, mas também à

tecnologia e os componentes internos do sensor. Fazendo com que o preço deste varie de

U$15,00 (menor precisão) a U$ 31.000,00 (maior precisão) (Damien Douxchamps, 2015).

Trabalhos recentes utilizam GPS e SINS (Strapdown Inertial Navigation System)

combinados para calcular a posição do robô. O SINS é composto por sensores de movimento

(acelerômetros) e sensores de rotação (giroscópios). O trabalho de Zhang (2012) utiliza tais

sensores e uma rede neural para estimar o posicionamento de um robô. A Figura 1.2 Ilustra um

dos resultados do trabalho, destacando a diferença da precisão obtida com e sem GPS e SINS.

Figura 1.2: Erro de posição em metros vs. tempo (hora) com GPS (a) e sem GPS(b).

Fonte: Zhang (2012).

Mesmo com GPS, o método apresentou um erro de aproximadamente 3 metros em 1

hora e sem GPS um erro exorbitante de 30 metros em 1 hora. Tal técnica não seria adequada

para um controle de trajetória.

Outro método bastante explorado é a fusão de Odometria Visual com IMU. Um trabalho

de grande relevância nesta área é o de Konolige (2011). A tabela 1.1 ilustra o erro máximo e a

média quadrática nas posições “XYZ”. Little Bit e Ft. Carson são os locais de teste.

Tabela 1.1 Estatísticas dos erros da trajetória, em metros e porcentagem da trajetória.

Fonte: Konolige (2011).

a) b)

Page 17: Dissertação Mestrado Marcus Lima

17

Apesar do erro relativo em porcentagem ser pequeno, se for analisado em termos

absolutos, o erro chega em até 295 metros utilizando apenas a odometria visual. Percebe-se

então a necessidade de uma metodologia que consiga, apenas utilizando odometria visual,

resultados bons o suficiente para serem aplicados em um controle de trajetória. Principalmente

em locais onde a utilização de navegação por satélite não é possível.

Outra questão não abordada nos trabalhos citados é que a utilização de câmeras na

odometria se torna muito vantajosa devido à grande quantidade de informações de podem ser

retiradas de uma imagem. A Figura 1.3 mostra a aplicação de uma técnica de segmentação em

uma imagem em um ambiente externo:

Figura 1.3: Imagem de disparidade (a) e Identificação de obstáculos (b). Em verde, a área

navegável, em azul, os obstáculos e em vermelho, o caminho aconselhado.

Fonte: Agrawal (2007).

A segmentação é importante para distinguir áreas navegáveis de áreas proibidas para

compor no algoritmo de planejamento de trajetória. Na Figura 1.3, poder-se-ia definir que o

caminho indicado por uma reta vermelha seria uma possível trajetória indicada ao robô e a

região em azul são os obstáculos que devem ser evitados.

Ademais, existem muitas outras técnicas que podem ser aplicadas como: realce,

filtragem, representação, classificação; trazendo uma grande quantidade de detalhes que podem

ser utilizadas na navegação do robô. Além disso, trabalhos como o de Kao (2013) utilizam a

câmera presente em celulares com o sistema operacional Android para realizar o vSLAM,

demonstrando que é possível, mesmo com uma câmera de baixo custo, realizar uma navegação

visual em ambientes internos de maneira aceitável. Além disto, o trabalho de Nowicki (2014)

a) b)

Page 18: Dissertação Mestrado Marcus Lima

18

realiza a comparação de técnicas de detecção de pontos utilizando uma câmera de um

dispositivo Android.

A Figura 1.4 ilustra a taxa de acerto de correlação entre frames utilizando uma câmera

em um dispositivo com o sistema operacional Android. Em alguns frames, observa-se uma taxa

de correlação acima de 80% dependendo do método utilizado – reforçando a possibilidade de

uso de câmeras de baixo custo para aplicações em vSLAM. As cores representam diferentes

técnicas de detecção de pontos de interesse na imagem.

Figura 1.4: Razão de acerto de correlação em relação ao número do frame das imagens

de uma sala.

Fonte: Nowicki (2014).

O uso de câmeras como sensor para navegação móvel autônoma traz muitas vantagens

em relação às outras alternativas. Primeiramente, tendem a ter um custo menor em relação aos

sensores de alta precisão como lasers, sonar, GPS; em adição, câmeras são sensores de baixo

consumo de energia por serem sensores passivos, ou seja, não precisam emitir nenhum tipo de

sinal para obter as informações, apenas recebem a luz e a transforma em uma imagem digital.

Em adição, câmeras não dependem de uma estrutura externa, como o GPS, por exemplo

– possibilitando aplicações em ambientes isolados e até em lugares não habitados (exploração

planetária).

Apesar de ser um sensor versátil, o grande impacto que a câmera traz no processo de

navegação está intimamente ligado com a parte de software, ou seja, a lógica (algoritmo) que

Page 19: Dissertação Mestrado Marcus Lima

19

se utiliza para adquirir as informações. A grande questão desta interação é que se a programação

for ineficiente, o processo pode ser tornar lento e acabar consumindo mais energia do que o

esperado. Isto gera um grande desafio que é: como conseguir o máximo de informações com o

mínimo de processamento possível?

1.1 Objetivo do Trabalho

O objetivo principal deste trabalho é apresentar uma metodologia para recuperação e

regularização de trajetórias de robôs terrestres utilizando apenas câmeras como sensor e um

filtro de redes neurais, levando aos seguintes objetivos específicos:

Obtenção das imagens que descrevem o caminho do robô;

Aplicar técnicas de processamento de imagem para adquirir os pontos de

interesse;

A cada passo de imagem, estimar o deslocamento dos pixels referentes aos

pontos selecionados e armazenar os dados em um arquivo de texto;

Realizar a reconstrução da trajetória e converter para coordenadas de mundo;

Treinar a rede neural a partir de certas trajetórias pré-definidas;

Utilizar a rede neural, previamente treinada, para regularização da trajetória; e

Fazer um comparativo da trajetória real com a estimada pela odometria visual

(O.V.) e a regularizada por redes neurais;

1.2 Estrutura do Trabalho

O presente trabalho é organizado do seguinte modo: os capítulos 2, 3 apresentam os

principais fundamentos teóricos sobre o processamento de imagens, odometria visual e redes

neurais. O Capítulo 4 discorre sobre a proposta de regularização de trajetórias. O capítulo 5

expõe o detalhamento do experimento realizado. O capítulo 6 discorre e ilustra os resultados

obtidos. Por fim, no capítulo 7, apresentam-se as conclusões e sugestões para trabalhos futuros.

Page 20: Dissertação Mestrado Marcus Lima

20

2 PROCESSAMENTO DE IMAGENS E ESTIMATIVA DE

MOVIMENTO

A recuperação da trajetória original do robô através da O.V. é realizada a partir do

cálculo de deslocamentos e rotações incrementais. Neste trabalho, tal processo é efetuado

através do processamento das imagens estereoscópicas adquiridas por câmeras fixas ao robô.

Dividindo-se esta tarefa em etapas, tem-se: detecção de pontos característicos, correlação dos

pontos encontrados e estimativa da movimentação dos pontos em coordenadas de pixel. Tais

etapas são descritas a seguir:

2.1 Detecção de Pontos Característicos

A detecção e a correlação de pontos em uma imagem são etapas cruciais para a odometria

visual. Quanto melhor for a correlação dos pontos em duas imagens subsequentes, maior a

precisão da estimativa de movimento e vice-versa.

Os pontos característicos e sua detecção possuem três principais vertentes: identificação

de bordas, cantos e bolhas.

Existem diversas definições para caracterizar uma borda, cada uma podendo ser aplicada

em diversas situações específicas. Uma das mais comuns e mais gerais definições é a borda

degrau ideal, ilustrado na Figura 2.1.

A primeira complicação na caracterização de uma borda acontece devido à digitalização.

É improvável que a imagem será amostrada de uma maneira tal que todas as bordas

correspondam exatamente na fronteira de um pixel. De fato, a mudança de nível pode se

estender através de um número de pixels (Figuras 2.1b, 2.1c e 2.1d). A atual posição do canto

é considerada como sendo o centro da rampa conectando o nível mais baixo de cinza ao mais

alto. Esta rampa é apenas uma representação matemática, já que depois que a imagem se torna

digital (amostrada), a rampa tem uma aparência pontual de uma escada (Parker, 2011).

A segunda complicação é o problema, geralmente presente no mundo real, do ruído.

Acontece devido a muitos fatores como a intensidade de luz, tipo de câmera e lentes,

movimento e vibração, temperatura, efeitos atmosféricos, poeira, entre outros. É muito

Page 21: Dissertação Mestrado Marcus Lima

21

improvável que dois pixels que correspondem precisamente ao mesmo nível de cinza na cena

real terão o mesmo nível na imagem digitalizada. O ruído é um efeito aleatório e pode ser

caracterizado apenas estatisticamente. O resultado do ruído em uma imagem é produzir uma

variação aleatória no nível de intensidade de pixel a pixel e, portanto, uma transição suave das

rampas ideais são muito improváveis em imagens reais.

Figura 2.1: Bordas-degrau.

Fonte: Parker (2011).

Na Figura 2.1(a), a mudança de nível ocorre exatamente no pixel 10. Em (b) A mesma

mudança ocorre como em (a) mas durante 4 pixels, com o centro do degrau localizado no pixel

10. Em (c) e (d) ocorre similarmente a (b) mas sendo que o primeiro tem uma transição mais

longa e o segundo uma mudança de nível menor.

Uma borda é definida como sendo uma mudança no nível de cinza, logo, um operador

que é sensível a este tipo de mudança irá operar como um detector de bordas. Na literatura, os

detectores de borda mais tradicionais são os de Sobel (1968), Canny (1986), e Harris(1988).

Considerando imagens bidimensionais (2D), é importante considerar mudanças de nível

em diversas direções. Neste caso, as derivadas parciais de uma imagem são utilizadas em

relação as direções principais x e y. Uma forma de se estimar a direção atual de um canto pode

ser obtida utilizando as derivadas em x e y como componentes da direção atual ao longo dos

eixos e computar a soma vetorial. O operador envolvido nesta situação é o gradiente.

Page 22: Dissertação Mestrado Marcus Lima

22

Para uma imagem bidimensional A que é função de duas variáveis (x,y) , o gradiente é

definido como:

∇𝐴(𝑥, 𝑦) = (𝜕𝐴

𝜕𝑥,𝜕𝐴

𝜕𝑦) (2.1)

Onde 𝜕𝐴/𝜕𝑥 e 𝜕𝐴/𝜕𝑦 são as derivadas parciais da imagem. Como uma imagem é

discreta, deve-se utilizar diferenças para o cálculo do gradiente; isto é, a derivada de um pixel

é aproximada pela diferença de níveis de cinza sob uma região local. Uma possível aproximação

seria:

∇x𝐴(𝑥, 𝑦) = 𝐴(𝑥 + 1, 𝑦) − 𝐴(𝑥 − 1, 𝑦) (2.2)

∇y𝐴(𝑥, 𝑦) = 𝐴(𝑥, 𝑦 + 1) − 𝐴(𝑥, 𝑦 − 1) (2.3)

Este operador é simétrico com respeito ao pixel (x,y), apesar de não considerar o valor

do pixel em (x,y). Independente do operador usado para computar o gradiente, o vetor resultante

contém informações da intensidade da borda em um determinado pixel e qual a sua direção.

A Figura 2.2 ilustra o processo de detecção de bordas utilizando um método adaptado

do método de Canny. O trabalho de Medina-Carnicer (2011) combina informações do gradiente

com as informações obtidas por um processo de ligação aplicado a todos os candidatos.

Figura 2.2: Mapa de cantos obtido por diferentes métodos e a imagem de referência. (a)

Imagem Original. (b) Imagem de referência. (c) mapa SOHT. (d) mapa UTHT. (e) mapa do

método proposto.

Fonte: Medina-Carnicer (2011).

Page 23: Dissertação Mestrado Marcus Lima

23

A Figura 2.2a é a imagem de entrada, a Figura 2.2b ilustra o melhor resultado com

parâmetros inseridos manualmente e as Figuras 2.2c, 2.2d e 2.2e são resultados obtidos

automaticamente por diferentes métodos.

A detecção de um canto utiliza os mesmos princípios de gradiente aplicados nas bordas,

entretanto, seguindo a ideia de Harris, na borda, não há mudança ao longo de sua direção e no

canto, há uma mudança significativa em todas as direções. Detectores de cantos mais abordados

em literaturas são os de Moravec (1977), Forstner (1986), Harris (1988), Shi-Tomasi (1994).

A Figura 2.3 ilustra como seria o processo de varredura na detecção de uma borda e de

um canto. Em 2.3(a), percebe-se que se a varredura for feita ao longo da borda, não haverá

mudança na intensidade desta. Já em 2.3(b), quando chega-se em um canto, haverá uma

mudança significativa ao longo de todas as direções naquele determinado ponto.

Figura 2.3: Varredura ao longo de uma borda (a) e ao longo de um canto (b).

Fonte: Harris (1988).

Assumindo uma imagem em tons de cinza bidimensional 𝐴, toma-se uma área da

imagem (𝑢, 𝑣) e deslocando-a por (𝑥, 𝑦). A soma ponderada dos quadrados das diferenças

(WSSD2) é dado por:

S(x, y) = ∑ ∑ 𝑤(𝑢, 𝑣)(𝐴(𝑢 + 𝑥, 𝑣 + 𝑦) − 𝐴(𝑢, 𝑣))2

𝑣u

(2.4)

Onde 𝐼(𝑢 + 𝑥, 𝑣 + 𝑦) pode ser aproximado por uma expansão de Taylor. Adotando 𝐴𝑥

e 𝐴𝑦 como as derivadas parciais de 𝐼, tal que:

2 Do inglês Weighted Sum of Squared Differences

(b) (a)

Page 24: Dissertação Mestrado Marcus Lima

24

𝐴(𝑢 + 𝑥, 𝑣 + 𝑦) ≈ 𝐴(𝑢, 𝑣) + 𝐴𝑥(𝑢, 𝑣)𝑥 + 𝐴𝑦(𝑢, 𝑣)𝑦 (2.5)

Onde 𝐴𝑥 e 𝐴𝑦 são as derivadas parciais da imagem 𝐴. A equação 2.5 produz a

aproximação:

S(x, y) ≈ ∑ ∑ 𝑤(𝑢, 𝑣)(𝐴𝑥(𝑢, 𝑣)𝑥 + 𝐴𝑦(𝑢, 𝑣)𝑦)2

𝑣u

(2.6)

A equação 2.6 pode ser escrita na forma matricial:

S(x, y) ≈ (x y)𝑇𝑒 (𝑥𝑦) (2.7)

Na equação 2.7, 𝑇𝑒 é denominado tensor estrutural (structure tensor):

𝑇𝑒 = ∑ ∑ 𝑤(𝑢, 𝑣) [𝐴𝑥

2 𝐴𝑥𝐴𝑦

𝐴𝑥𝐴𝑦 𝐴𝑦2 ]

𝑣u

(2.8)

Tal matriz é conhecida como matriz de Harris. Um canto (em geral, um ponto de

interesse) é caracterizado por uma grande variação de S (Eq. 2.7) em todas as direções do vetor

(𝑥 𝑦).

Analisando os autovalores de 𝑇𝑒 (𝜆1 e 𝜆2), esta caracterização pode ser expressa da

seguinte forma: O termo 𝑇𝑒 deve ter dois autovalores de grande magnitude para um ponto de

interesse. Baseado no valor absoluto dos autovalores, as seguintes inferências podem ser feitas:

1) Se λ1 ≈ 0 𝑒 𝜆2 ≈ 0, então o pixel (x, y) não possui pontos de interesse.

2) Se λ1 ≈ 0 𝑒 𝜆2 for um valor alto positivo, então uma borda foi encontrada.

3) Se λ1 𝑒 𝜆2 forem dois valores altos positivos, então um canto foi encontrado.

Os valores denominados altos positivos são relativos à cada imagem. Em uma região da

imagem que contém bordas, serão observados os maiores valores encontrados.

Harris e Stephens notaram que o cálculo exato dos autovalores é computacionalmente

caro, já que é necessário calcular uma raiz quadrada, então sugeriram a seguinte função:

R = 𝜆1𝜆2 − 𝜅(𝜆1 + 𝜆2)2 = det(𝑇𝑒) − 𝜅𝑡𝑟𝑎𝑐𝑒2(𝑇𝑒) (2.9)

Onde 𝜅 é um parâmetro de sensibilidade ajustável e 𝑅 um valor utilizado no limiar.

Page 25: Dissertação Mestrado Marcus Lima

25

O detector de cantos de Shi-Tomasi computa diretamente a função de limiar da seguinte

forma:

R = min (𝜆1, 𝜆2) (2.10)

Na equação 2.10, se 𝜆1, 𝜆2 são maiores que um valor mínimo 𝜆𝑚𝑖𝑛 (gatilho), o pixel é

considerado um canto.

Outra importante característica são as bolhas. A detecção deste tipo de característica é

desejável em muitas aplicações na biomedicina, como a identificação de nódulos em

radiografias e contagem de células.

O trabalho de Liu (2010) propõe a detecção automática de bolhas por análise Hessiana

e escalonamento. A Figura 2.4 ilustra um dos resultados do método proposto.

Figura 2-4: Detecção de bolhas na imagem (a) utilizando diferente métodos: (b) Frangi’s. (c)

Li’s. (d) Método proposto por Liu.

Fonte: Liu (2010).

A detecção ilustrada na Figura 2-4 poderia servir para catalogar determinadas espécies

de borboleta, por exemplo. Na robótica, as aplicações são inúmeras, podendo-se detectar peças

com certo formato para manipulação com um robô pick-and-place, detecção de rostos,

obstáculos e até mesmo detecção de bolas em competições de futebol robótico.

Uma bolha, é uma região de uma imagem tal que algumas propriedades são constantes

ou variam pouco. Todos os pontos dentro de uma bolha podem ser considerados, em algum

sentido, similares entre si.

Page 26: Dissertação Mestrado Marcus Lima

26

Um dos primeiros e mais comuns detectores de bolhas é baseado no Laplaciano da

Gaussiana. Dada uma imagem de entrada A(x,y), esta imagem é convolucionada por um kernel

Gaussiano:

g(x, y, t) =1

2𝜋𝑡2𝑒

−𝑥2+𝑦2

2𝑡2 (2.11)

A uma certa escala t para uma representação no espaço de escalas:

L(x, y; t) = 𝑔(𝑥, 𝑦, 𝑡) ∗ 𝐴(𝑥, 𝑦) (2.12)

Então o resultado de se aplicar o operador Laplaciano:

∇2𝐿 = 𝐿𝑥𝑥 + 𝐿𝑦𝑦 (2.13)

é computado, normalmente resultando em respostas fortemente positivas para bolhas

escuras de extensão √2𝑡 e fortemente negativas para bolhas brilhantes de tamanho similar.

Um problema nessa abordagem é que quando aplica-se esse operador em uma única

escala, a resposta se torna dependente da relação entre o tamanho da bolha no domínio da

imagem e o tamanho do kernel Gaussiano usado para pré-suavização. Para trabalhar de forma

automática, capturando bolhas de diferentes (desconhecidos) tamanhos no domínio da imagem,

uma abordagem multi-escala é necessária. Uma forma mais direta para se obter um detector de

bolhas multi-escala é considerar o operador Laplaciano normalizado em escala:

∇𝑛𝑜𝑟𝑚2 𝐿(𝑥, 𝑦; 𝑡) = 𝑡(𝐿𝑥𝑥 + 𝐿𝑦𝑦) (2.14)

2.2 Correlação de Regiões na Imagem

Em tarefas de visão que utilizam câmeras estereoscópicas ou necessitam estimar

movimento, que é o caso neste projeto, encontrar características correspondentes entre duas

imagens adjacentes e subsequentes é necessário.

Para isto, leva-se em consideração que a maioria dos pontos é visível em ambas as

imagens (esquerda e direita) e que as regiões correspondentes das imagens são similares. É

Page 27: Dissertação Mestrado Marcus Lima

27

preciso ter em mente que no caso de câmeras estereoscópicas, haverá sempre uma região de

convergência no campo de visão e uma área exclusiva a cada câmera. A Figura 2.5 ilustra esta

situação.

Observando a Figura 2.5, devemos considerar que os pontos obtidos em cada imagem

devem estar dentro do campo de convergência. Garantindo assim, uma possível correlação entre

os pontos obtidos.

Figura 2.5: Campo de visão de câmeras estereoscópicas e sua área de convergência (verde).

Fonte: Autor.

Um dos desafios na correlação é a busca de pontos na imagem esquerda que

correspondam na imagem direita. Uma abordagem para tornar a busca mais rápida é utilizar

uma varredura apenas na área onde o campo de visão das duas câmeras converge.

Além disso, a correlação de imagens de câmeras estereoscópicas pode ser estendida para

análise de similaridades entre frames. Ou seja, a cada instante uma imagem é salva e então

comparada com a anterior. Neste caso, se houve deslocamento, as imagens devem ter um fator

de translação e de rotação que dificultam na correlação de pontos.

As técnicas a serem apresentadas nesta seção servem tanto para a correlação entre

imagens estereoscópicas quando para imagens de uma mesma câmera mas em instantes

diferentes.

Existem duas classes de algoritmos que são muito utilizados nessa tarefa: correlation-

based e feature-based. No primeiro, é produzido uma grande quantidade de conjuntos de

correspondência e no segundo, uma pequena quantidade. Neste trabalho, serão utilizados

principalmente os algoritmos correlation-based. A tarefa então é encontrar regiões de

similaridade em ambas as imagens (esquerda e direita). A figura 2.6 ilustra duas imagens

similares e possíveis regiões de correlação.

Câmera 1 Câmera 2

Page 28: Dissertação Mestrado Marcus Lima

28

Figura 2.6: Duas imagens obtidas por câmeras estereoscópicas.

Fonte: Collins (2012).

Na figura 2.6, escolhe-se arbitrariamente uma região na imagem da esquerda (quadrado

vermelho). Deseja-se encontrar a mesma região na imagem direita, considerando diversas

regiões selecionadas ao acaso (quadrados verdes), como encontrar a região correspondente?

Primeiramente, deve-se definir uma função que consiga, através da intensidade dos

pixels das regiões, dizer se as áreas são correspondentes ou não. Ao mesmo tempo, através desta

função deve-se encontrar um equilíbrio entre simplicidade e eficiência para não tornar o

processo muito custoso computacionalmente.

Assumindo que a imagem da esquerda é uma função do tipo A(x,y) e a da direita B(x,y),

algumas possíveis medidas a serem consideradas são:

max[𝑥,𝑦]∈𝑅

|𝐴(𝑥, 𝑦) − 𝐵(𝑥, 𝑦)| (2.15)

∑ |𝐴(𝑥, 𝑦) − 𝐵(𝑥, 𝑦)|

[𝑥,𝑦]∈𝑅

(2.16)

∑ (𝐴(𝑥, 𝑦) − 𝐵(𝑥, 𝑦))2

[𝑥,𝑦]∈𝑅

(2.17)

∑ 𝐴(𝑥, 𝑦)𝐵(𝑥, 𝑦)

[𝑥,𝑦]∈𝑅

(2.18)

A equação 2.17 é uma das medidas mais utilizadas. É aplicada na obtenção de cantos

pelo algoritmo de Harris. Pode-se criar uma relação entre as equações 2.17 e 2.18 da seguinte

forma:

Page 29: Dissertação Mestrado Marcus Lima

29

∑ (𝐴(𝑥, 𝑦) − 𝐵(𝑥, 𝑦))2

[𝑥,𝑦]∈𝑅

=

∑ 𝐴(𝑥, 𝑦)2

[𝑥,𝑦]∈𝑅

+ ∑ 𝐵(𝑥, 𝑦)2

[𝑥,𝑦]∈𝑅

− 2 ∑ 𝐴(𝑥, 𝑦)𝐵(𝑥, 𝑦)

[𝑥,𝑦]∈𝑅

(2.19)

Supondo que deseja-se encontrar a correlação da região em amarelo na imagem da

esquerda na imagem da direita. Se for aplicado a função de correlação da equação 2.17,

conhecido como soma do quadrado das diferenças (SSD)3, nas imagens da Figura 2.7 e então

sobrepondo-as, tem-se o resultado da Figura 2.8.

Figura 2.7: Imagens estereoscópicas retiradas do rover da NASA em MARTE.

. Fonte: NASA (2012).

Figura 2.8: Correlação da região selecionada na imagem esquerda com a direita.

. Fonte: Collins (2012).

3 Do inglês Sum of Squared Differences

Page 30: Dissertação Mestrado Marcus Lima

30

Na Figura 2.8, percebe-se que foi possível encontrar uma correspondência bem sucedida

para a região selecionada, ou seja, o maior índice de correlação na imagem coincide com a

localização correta neste caso. Claramente nem sempre isto ocorrerá, muitas vezes é necessário

customizar a função para atender necessidades específicas e considerar que a imagem pode

sofrer alterações de iluminação, conter ruídos, estar distorcida e embaçada.

2.3 Estimativa do Movimento Utilizando Fluxo Óptico

O fluxo óptico, também conhecido como velocidade da imagem é utilizado em diversas

aplicações, principalmente na área de acompanhamento de objetos, interpretação de cenas,

reconhecimento de gestos, e navegação robótica.

Se uma câmera ou um objeto na cena se move, este deslocamento resulta em uma função

dependente do tempo descrevendo a mudança da intensidade dos pixels na sequência de

imagens. O resultado bidimensional do campo de movimento aparente no domínio da imagem

é chamado de campo de fluxo óptico.

Uma suposição comumente realizada na estimativa do fluxo óptico é a de constância de

brilho, isto é, a intensidade de um determinado pixel correspondente em dois frames

consecutivos deve ser a mesma. Infelizmente, nem sempre que um objeto se move há uma

mudança na intensidade de pixel e nem sempre uma mudança na intensidade é gerada por uma

movimentação de um corpo.

Para representar a direção de deslocamento dos pixels em um campo de fluxo óptico,

existem duas maneiras mais utilizadas: codificação por cores e por setas. Na primeira, uma

circunferência é dividida em quadrantes, cada um com uma cor diferente, indica a direção de

deslocamento dos pixels de acordo com uma determinada cor, onde a intensidade da cor é maior

nas bordas (indicando um maior deslocamento) e menor no centro, onde a cor branca representa

que houve muito pouco ou nenhum deslocamento. A cor representa a direção dos pixels na

região da imagem.

No segundo, um campo de setas é desenhado, onde a direção em que a seta está

apontando é a direção que a determinada região da imagem está seguindo. Neste caso não há

necessidade de diferenciar as direções por cores, já que a seta, independentemente da cor, já

indica a direção de movimento. As Figuras 2.9 e 2.10 ilustram as duas representações.

Page 31: Dissertação Mestrado Marcus Lima

31

Figura 2.9: Representação da imagem em escala de cinza e por fluxo óptico em cores.

Fonte: Wedel (2011).

Na imagem 2.9, percebe-se que as cores do canto estão aumentando de intensidade de

acordo com o quadrante a que pertencem. Isto indica que a movimentação da cena é para frente,

pois os pixels estão se movimentando para fora da imagem.

Na imagem 2.10 se torna mais fácil de perceber a movimentação das regiões destacadas.

Neste caso, o pesquisador estima a velocidade de um cardume de peixes.

Figura 2.10: Representação do fluxo óptico por campo de cores e setas.

Fonte: Leblanc (2014).

Um detalhe importante é que os vetores de movimento do campo de fluxo óptico

geralmente possuem direção oposta ao movimento da câmera. A Figura 2.11 ilustra alguns

exemplos.

Page 32: Dissertação Mestrado Marcus Lima

32

Figura 2.11: Representação do fluxo óptico por campo de cores e setas. (a) Câmera se

deslocando para a esquerda; (b) Câmera se aproximando do centro. (c) Câmera se afastando

do centro.

Fonte: Autor.

Para computar o fluxo óptico é apropriado trabalhar com uma imagem em tons de cinza.

Desta forma, alguns cálculos são simplificados. A restrição do fluxo óptico considera que o

valor de cinza de um pixel em movimento continua constante ao longo do tempo. Isto implica

que:

𝐼(𝑥, 𝑦, 𝑡) = 𝐼(𝑥 + 𝑢, 𝑦 + 𝑣, 𝑡 + 1) (2.20)

Onde I(x,t,y) é um conjunto de imagens amostradas em cada instante t , u e v são os

incrementos de posição no instante t+1. A forma linearizada da versão da função de imagem

(utilizando a aproximação de Taylor de primeira ordem) é dada:

𝐼(𝑥, 𝑦, 𝑡) ≈ 𝐼(𝑥 + 𝑢, 𝑦 + 𝑣, 𝑡 + 1) + ∇𝐼(𝑥, 𝑦, 𝑡 + 1)𝑇 (𝑢𝑣

)

0 = 𝐼(𝑥, 𝑦, 𝑡 + 1) − 𝐼(𝑥, 𝑦, 𝑡) + ∇𝐼(𝑥, 𝑦, 𝑡 + 1)𝑇 (𝑢𝑣

) (2.21)

Onde 𝑇 indica a ordem da derivada. Implicando na seguinte equação:

𝑂(𝑢, 𝑣): 𝐼𝑡 + 𝐼𝑥𝑢 + 𝐼𝑦𝑣 = 0. (2.22)

Onde as derivadas parciais da imagem são denotadas como: 𝐼𝑡, 𝐼𝑥, 𝐼𝑦 . Esta função do

fluxo óptico implica um problema: uma equação para resolver um problema de duas variáveis

(sistema subdeterminado). Sabe-se que um sistema de equações deste tipo possui um infinito

número de soluções.

(a) (b) (c)

Page 33: Dissertação Mestrado Marcus Lima

33

Uma maneira comum de se resolver esse problema de ambiguidade é assumir um campo

de fluxo óptico constante em uma pequena vizinhança de um pixel x. Tal vizinhança ℳ

normalmente consiste de n x n pixels com 𝑛 menor que 15. Esta condição é então avaliada com

respeito a todos os pixels dentro desta janela ℳ. A operação agora resulta em um sistema com

mais equações do que variáveis (sistema sobredeterminado).

Em geral, não existe nenhuma solução direta. Minimizar o quadrado da soma das

derivações resulta na aproximação de mínimos quadrados, primeiramente proposto por Lucas

e Kanade (1981):

min𝑢,𝑣

{ ∑ (𝐼𝑡(𝑥′) + 𝐼𝑥(𝑥′)𝑢 + 𝐼𝑦(𝑥′)𝑣)2

𝑥′∈ ℳ(𝑥)

} (2.23)

Extensões dessa aproximação foram propostas. Incluindo a substituição do quadrado da

soma dos erros com uma medida de erro absoluta ou utilizar filtros de Kalmann para futuros

ganhos de robustez ao longo do tempo.

O fluxo vetorial resultante tem precisão em nível de sub-pixel, mas devido à

aproximação de Taylor na função do fluxo óptico, este método é somente válido para vetores

de pequenos deslocamentos onde o efeito em termo de maior ordem em 2.21 são desprezíveis.

Um modo de medir a qualidade do fluxo vetorial resultante é utilizar a soma da diferença

dos valores de cinza dentro da vizinhança ℳ. Se o valor for maior que um valor pre-

determinado (gatilho), pode significar que mais iterações são necessárias ou o processo ficou

parado em um mínimo local.

Atualmente, o método de Lucas Kanade está além de uma aplicação de tempo real se o

vetor de fluxo é estimado para cada pixel da imagem de entrada utilizando uma implementação

com uma CPU comum. Aplicações recentes baseadas em GPU são capazes de rastrear até

10.000 pontos de imagem a cadência de 25 Hz (Wedel, 2011).

Neste trabalho, o fluxo óptico é utilizado para estimar a direção dos pontos

característicos encontrados na imagem. O rastreamento apenas de alguns pontos pré-

selecionados funciona como um filtro, onde os pontos mais relevantes são escolhidos e com a

aplicação do fluxo óptico, pode-se então estimar o deslocamento destes pontos em coordenadas

de pixel.

Page 34: Dissertação Mestrado Marcus Lima

34

3 REGULARIZAÇÃO ATRAVÉS DE REDES NEURAIS

ARTIFICIAIS

Redes neurais são complexos modelos não-lineares construídos com componentes que,

individualmente, se comportam como um modelo de regressão. Apesar da estrutura de uma

rede neural ser explicitamente desenvolvida antes, o processamento que a rede neural realizada

para produzir a hipótese evolui durante o processo de aprendizado. Isto permite a rede neural a

ser utilizada como um solucionador auto-programado, diferente de típicos algoritmos que

devem ser desenvolvidos e codificados explicitamente (Cowan, 2013).

3.1 Estrutura da Rede Neural

Uma rede neural é composta de neurônios, conexões e pesos. Os pesos podem ser

implementados em uma matriz quadrada de pesos W ou em um vetor com o número da linha

indicando onde a conexão inicia e o número da coluna indicando qual é o neurônio alvo. A

Figura 3.1 ilustra o processamento de dados em um neurônio. Dados são transferidos entre

neurônios através de conexões com o peso conectado sendo excitatório ou inibitório.

Observando um neurônio j, normalmente encontram-se diversos neurônios conectados

a este, logo, transferindo suas saídas para j. Para este neurônio j, a função de propagação recebe

as saídas 𝑜𝑖1, … , 𝑜𝑖𝑛 de outros neurônios 𝑖1, 𝑖2, … , 𝑖𝑛 (conectados a j) e as transforma de acordo

com os pesos conectados para dentro da entrada da rede (network input) para poder ser

futuramente processada pela função de ativação. Portanto, a entrada da rede é o resultado da

função de propagação. Uma função de propagação bastante utilizada é a soma ponderada, isto

é:

∑(𝑜𝑖 ∙ 𝑤𝑖,𝑗)

𝑖∈𝐼

(3.1)

Onde 𝑤𝑖,𝑗 são os pesos de cada neurônio i conectado ao neurônio j e I um conjunto de

neurônios {𝑖1, 𝑖2, … , 𝑖𝑛} .

Page 35: Dissertação Mestrado Marcus Lima

35

Figura 3.1: Processamento de dados em um neurônio. A ativação de um neurônio implica no

valor de gatilho.

Fonte: Autor.

A ativação é o estado alternante de um neurônio. Considerando um neurônio j, seu

estado de ativação 𝑎𝑗, em uma ativação curta, é explicitamente assinalado a j, indicando a

extensão da atividade de um neurônio e resulta da função de ativação.

Perto do valor de gatilho (threshold), a função de ativação de um neurônio reage

particularmente de modo sensível. O valor deste gatilho normalmente é definido na função de

ativação. Cada neurônio pode ter seu próprio valor de gatilho que normalmente define o valor

de máximo gradiente da função de ativação.

Diferentemente de outras variáveis dentro da rede neural, a função de ativação, também

conhecida como função de transferência, normalmente é definida globalmente para todos os

neurônios ou pelo menos para um conjunto de neurônios onde somente os valores de gatilho

são diferentes de cada neurônio. Os valores de gatilho podem ser modificados por um processo

de aprendizagem (learning). Em alguns casos, pode-se relacionar este valor como uma função

no tempo. Uma função de ativação muito comum é a função de Fermi ou função logística:

𝑓(𝑥) =1

1 + 𝑒−𝑥 (3.2)

Page 36: Dissertação Mestrado Marcus Lima

36

Tal função mapeia valores no intervalor de (0 a 1). Esta mesma função pode ser

parametrizada na seguinte forma:

𝑓(𝑥) =1

1 + 𝑒−𝑥𝑇

(3.3)

Onde 𝑇 é um parâmetro variável. Quanto menor for o valor de T mais a função é

comprimida, ou seja, apresenta uma transição menos suave até se aproximar de uma função

degrau, como visto na Figura 3.2.

Existem outras funções de ativação que não são explicitamente definidas mas dependem

de uma entrada de acordo com uma distribuição aleatória (funções de ativação estocásticas).

Figura 3.2: Função de Fermi parametrizada.

Fonte: Kriesel (2005).

Com isso, pode-se definir o conceito de hipótese em redes neurais – um conjunto de

dados de entrada aplicados a uma função de transferência ótima não-linear. Isto é representado

na seguinte equação:

ℎ𝜃(�⃗�) = 𝑔(�⃗�𝜃) (3.4)

Onde 𝜃 é a matriz definindo a transformação linear dos parâmetros de entrada, x é um

vetor coluna de entradas e 𝑔(𝑘) é a função de transferência não-linear.

Um outro componente que pode ser adicionado à rede neural é o bias (viés) que é um

valor constante, podendo ser diferente para cada neurônio, adicionado a fim de se realizar uma

compensação. A Figura 3.3 ilustra a estrutura de tal rede.

Page 37: Dissertação Mestrado Marcus Lima

37

Figura 3.3: Modelo da Rede Neural com pesos (w) e biases (b).

Fonte: Autor.

3.2 Aprendizado e Treinamento da Rede Neural

Um processo essencial para a eficiência de uma rede neural é o aprendizado. Este

processo é movido por um conjunto de “m” exemplos, ou seja, “m” valores de �⃗� (entrada) para

quais os valores correspondentes de y (saída) são conhecidos. O conjunto de valores de �⃗� podem

ser agrupados em uma matriz X e os valores correspondente valores de y em uma matriz Y.

A hipótese4 então se torna:

ℎ𝜃(𝑋) = 𝑔(𝑋𝜃) (3.5)

O processo de aprendizagem pode ser agora definido como um processo que minimiza

a função de custo:

𝐽𝜃(𝜀), onde 𝜀 = ||ℎ𝜃(𝑋) − 𝑌||2 (3.6)

Esta função de valores não negativos fornece algumas indicações da precisão da atual

hipótese ℎ𝜃 no conjunto de dados [Y, X] e o objetivo da etapa de aprendizado é minimizar o

valor de 𝐽𝜃.

No improvável evento de que a matriz X for quadrada e não-singular, a inversa pode ser

usada para encontrar 𝜃. Para outros casos, a pseudo-inversa pode ser utilizada:

𝑌 = 𝑋𝜃 → 𝜃 = (𝑋𝑇𝑋)−1𝑋𝑇𝑌 (3.7)

4 Hipótese pois o resultado é apenas uma suposição gerada a partir da transformação dos dados de entrada.

Page 38: Dissertação Mestrado Marcus Lima

38

Esse procedimento minimiza ||𝑋𝜃 − 𝑌||2 ou seja, assuma que ℎ𝜃(𝑋) = 𝑋𝜃. Já que a

matriz a ser invertida é simétrica e tipicamente semi-definida positiva, pode-se utilizar a

decomposição em valores singulares (S.V.D.5).

Aproximações sucessivas do mínimo da função de custo podem ser obtidas através do

gradiente descendente:

𝜃𝑖+1 = 𝜃𝑖 − 𝛼∇⃗⃗⃗𝐽𝜃 (3.8)

Onde 𝛼 é a taxa de aprendizagem que define a velocidade com que o algoritmo de

aprendizagem converge. Um 𝛼 pequeno irá resultar em um aprendizado lento, enquanto um

maior valor de 𝛼 resultará em oscilações em torno de um mínimo, impedindo a convergência.

A função com decaimento regular pode ser utilizada no lugar da constante 𝛼 para

fornecer uma rápida convergência em direção a um mínimo mas também reduzir a distância

final do mínimo se o algorítmo oscilar.

Se as características no vetor de entradas possuírem diferentes escalas, um processo de

normalização pode ser aplicado da seguinte maneira:

𝑥𝑛𝑜𝑟𝑚 =𝑥 − 𝜇

𝜎 (3.9)

Onde 𝜇 é a média e 𝜎 o desvio padrão de 𝑥. Na equação 3.9, a média e o desvio padrão

de uma lista x contendo N valores são respectivamente:

𝜇 =1

𝑁∑ 𝑥𝑖

𝑁

𝑖=1

(3.10)

𝜎 = √1

𝑁∑(𝑥𝑖 − 𝜇)2

𝑁

𝑖=1

(3.11)

O método de aprendizado abordado minimiza o resíduo ||ℎ𝜃(𝑋) − 𝑌||, mas

consequentemente ajusta o ruído e erros nos dados de aprendizado também. Para prevenir isto,

5 Do inglês Singular Value Decomposition

Page 39: Dissertação Mestrado Marcus Lima

39

outros termos podem ser adicionados no processo de minimização. Um exemplo é a adição da

magnitude dos valores de aprendizado 𝜃, modificando o resíduo para:

||ℎ𝜃(𝑋) − 𝑌||2

+ 𝜆||𝜃||2 (3.12)

A variável 𝜆, neste caso, é o parâmetro de regularização e determina quando o processo

de aprendizagem minimiza a magnitude do vetor de parâmetros 𝜃, que resulta em subajuste

(minimizando 𝜆) ou quando o processo realiza um sobreajuste dos dados de treinamento (X ,Y)

(aumentado 𝜆).

Existem diversos algoritmos de aprendizagem, os principais são: Levenberg-Marquardt

de Moré (1978), Bayesian Regularization de MacKay (1992) e Scaled Conjugate Gradient de

Møller (1993). Todos atualmente estão implementados no toolbox de redes neurais do

MATLAB.

Neste trabalho, a regularização ou interpolação Bayesiana é a mais adequada pois obtém

bons resultados com conjuntos de dados pequenos e ruidosos – presentes em aplicações de

processamento de imagens onde possam existir ruídos de iluminação e vibração.

A regularização Bayesiana é realizada com a soma do quadrado dos erros e é modificada

para incluir um termo que consiste de uma soma de quadrados dos erros e pesos da rede:

𝐹𝑟𝑒𝑔 = 𝛽 ∙ 𝑆𝑆𝐸 + 𝛼 ∙ 𝑆𝑆𝑊 (3.13)

𝑆𝑆𝐸 e 𝑆𝑆𝑊 são dados por:

𝑆𝑆𝐸 = ∑ 𝑒𝑞2(𝑥)

𝑁

𝑞=1

(3.14)

𝑆𝑆𝑊 = ∑ 𝑤𝑗2

𝑛

𝑗=1

(3.15)

Onde 𝑛 e N são o número total de biases e pesos respectivamente, 𝑤𝑗 são os valores do

pesos na rede e 𝑒𝑞 os erros em cada posição da entrada. O índice de performance em 3.12 força

os pesos e as biases a serem pequenas, o que produz uma resposta mais suave e evita

sobreajuste. Os valores de 𝛼 e 𝛽 são valores determinados de maneira automática

(interpolação).

Page 40: Dissertação Mestrado Marcus Lima

40

4 PROPOSTA DE REGULARIZAÇÃO DE TRAJETÓRIAS

ESTIMADAS

A Proposta de regularização de trajetórias estimadas pode ser dividida em quatro etapas

principais:

Aplicação da detecção de pontos e do fluxo óptico em um banco de imagens ou

vídeo descrevendo a trajetória do robô;

Conversão das coordenadas de pixel para coordenadas de mundo;

Utilização de câmeras estereoscópicas para reconstrução do movimento do robô;

Regularização por Redes Neurais;

4.1 Aplicação da Detecção de Pontos e do Fluxo Óptico

A aplicação do algoritmo de Fluxo Óptico será implementada na linguagem de

programação C++ utilizando o ambiente de desenvolvimento Visual Studio e a biblioteca de

processamento de imagens OpenCV. A Figura 4.1 Ilustra a interface deste ambiente.

Figura 4.1: Ambiente de desenvolvimento Visual Studio 2010.

Fonte: Autor.

Page 41: Dissertação Mestrado Marcus Lima

41

A aplicação utilizará como entrada um banco de imagens ou vídeos descrevendo a

trajetória do robô. Um detalhe importante é que as imagens devem estar indexadas de forma a

respeitar a movimentação do robô a cada passo. Se as imagens estiverem embaralhadas ou o

vídeo corrompido a estimativa não poderá ser realizada com precisão.

Após a identificação do vídeo descrevendo a trajetória do robô, deve-se definir as

dimensões da máscara de busca de pontos característicos. Só poderão ser encontrados pontos

que estão dentro da área de busca. Esta máscara não pode ser maior que a imagem e deve ter

pelo menos 50% de área em relação à área total da imagem. A Figura 4.2 Ilustra a aplicação de

tal máscara.

Figura 4.2: Aplicação de uma máscara para definição da área de busca dos pontos

característicos.

Fonte: Autor.

Após da definição da região de busca, aplica-se a técnica de Shi-Tomasi para encontrar

pontos característicos na imagem. A função que aplica tal técnica, utilizando a biblioteca

OpenCV, tem a seguinte estrutura:

Tabela 4.1: Função goodFeaturesToTrack (Shi-Tomasi) e seus parâmetros.

goodFeaturesToTrack

Parâmetros

Imagem

Var.

Saída

(int)

Num.

máximo

de

cantos

(double)

Nível de

Qualidade

(double)

Distância

Mínima

Máscara

(int)

Tamanho

do Bloco

(double)

𝑘

(Parâmetro de

Sensibilidade)

Fonte: Autor.

Máscara Região de busca

Page 42: Dissertação Mestrado Marcus Lima

42

Imagem: Variável de entrada do tipo matriz que contém os dados da imagem;

Var. Saída: Variável onde são armazenadas as posições dos pontos encontrados;

Num. Máximo de Cantos: Variável do tipo inteiro que limita a quantidade de

cantos a serem encontrados;

Nível de Qualidade: Variável do tipo double que define um parâmetro para

qualidade dos pontos a serem encontrados. Quanto menor este valor, melhores

os pontos, porém restringe a busca podendo encontrar um número menor de

pontos;

Distância Mínima: Variável do tipo double que define a mínima distância

Euclidiana possível entre os cantos a serem encontrados;

Máscara: Variável criada anteriormente que define a região de busca;

Tamanho do Bloco: Variável do tipo inteiro que define o tamanho do bloco para

computar a matriz de covariação derivativa em cada vizinhança do pixel; e

𝑘: Parâmetro de Sensibilidade do detector de Harris;

Após a obtenção dos pontos de interesse, como o interesse é recuperar a trajetória

original de um robô, deseja-se realizar uma conversão de coordenadas de pixel para

coordenadas de câmera e então para coordenadas de mundo. Este processo é realizado através

de geometria epipolar.

4.2 Conversão de Coordenadas e Composição da Trajetória do Robô

Levando em consideração uma câmera do tipo pinhole representado na Figura 4.3, onde

P é o objeto no mundo, D é a distância no orifício da câmera ao objeto, f é a distância focal, C

representa o centro do referencial da câmera, 𝑥𝑐 , 𝑦𝑐, 𝑧𝑐 coordenadas do ponto no referencial de

câmera e 𝑋𝑚, 𝑌𝑚, 𝑍𝑚 coordenadas do ponto em referencial de mundo.

As imagens capturadas pela câmera são projetadas no plano imagem de forma

perspectiva, ou seja, em cada ponto do objeto real fotografado, traça-se uma reta imaginária até

a origem do sistema de coordenadas da câmera e essa linha intercepta o plano imagem, logo,

este ponto de intersecção é o que forma a imagem no espaço bidimensional. A Figura 4.4 ilustra

a projeção perspectiva de um ponto qualquer visto pela câmera.

Page 43: Dissertação Mestrado Marcus Lima

43

Figura 4.3: Modelo de câmera pinhole.

Fonte: Autor.

Figura 4.4: Projeção perspectiva de uma câmera pinhole.

Fonte: Autor.

Page 44: Dissertação Mestrado Marcus Lima

44

Onde, na Figura 4.4, p se refere ao ponto do mundo em coordenadas de câmera.

Através de semelhança de triângulos, as seguintes relações são definidas:

𝑋𝑚

𝑍𝑚=

𝑥𝑐

𝑓 𝑒

𝑌𝑚

𝑍𝑚=

𝑦𝑐

𝑓 (4.1)

Onde 𝑋𝑚, 𝑌𝑚 e 𝑍𝑚 são as coordenadas de mundo, 𝑓 é a distância focal, 𝑥𝑐, 𝑦𝑐 e 𝑧𝑐 as

coordenadas no referencial da câmera. Isolando as coordenadas de câmeras obtém-se:

𝑥𝑝 = 𝑓𝑋𝑚

𝑍𝑚 𝑒 𝑦𝑝 = 𝑓

𝑌𝑚

𝑍𝑚 (4.2)

Vetorialmente, pode-se representar 𝑃 (mundo) e 𝑝 (câmera) da seguinte forma:

𝑃 = [𝑋𝑚

𝑌𝑚

𝑍𝑚

] 𝑒 𝑝 = [

𝑥𝑝

𝑦𝑝

𝑓] (4.3)

Isto implica que:

𝑝 =𝑓

𝑍𝑚∙ 𝑃 (4.4)

Levando em consideração que no processo de odometria visual, primeiramente são

encontrados pontos na imagem, coordenadas (x,y) em pixels. Precisa-se convertê-los para

coordenadas de câmera para então obter as coordenadas de mundo. A relação entre o sistema

de unidades métricas e o sistema de unidades de imagem (pixels) é dada por dois parâmetros

intrínsecos da câmera, 𝑎𝑥 e 𝛼𝑦, dados por:

𝛼𝑥 =𝑁𝑥

𝐿𝑥 𝑒 𝛼𝑦 =

𝑁𝑦

𝐿𝑦 (4.5)

Onde 𝑁𝑥 e 𝑁𝑦 são, respectivamente, as dimensões horizontal e vertical do plano de

imagem dadas em pixels (resolução), 𝐿𝑥 e 𝐿𝑦 seus respectivos comprimentos em unidades

métricas.

As coordenadas de imagem correspondentes a um ponto com projeções métricas

(𝑥𝑐 , 𝑦𝑐) na câmera são dadas pela equação 4.6

Page 45: Dissertação Mestrado Marcus Lima

45

𝑢𝑝 = 𝛼𝑥𝑥𝑐 + 𝑢0 𝑒 𝑣𝑝 = 𝛼𝑦𝑦𝑐 + 𝑣0 (4.6)

Onde 𝑢𝑝 𝑒 𝑣𝑝 são as coordenadas do ponto em questão em pixels e 𝑢0 e 𝑣0 as

coordenadas da origem do sistema em pixels. A equação 4.6 pode ser escrita na forma vetorial

utilizando a equação 4.3 da seguinte maneira:

�̂� =1

𝑓𝐴 ∙ 𝑝 (4.7)

Onde �̂� são as coordenadas do ponto na imagem e 𝐴 a matriz de parâmetros intrínsecos:

�̂� = [

𝑢𝑝

𝑣𝑝

1] 𝑒 𝐴 = [

𝛼𝑥𝑓 0 𝑢𝑜

0 𝛼𝑦𝑓 𝑣0

0 0 1

] (4.8)

Pode-se então, tomando por base a equação 4.7, converter pontos em pixels para

pontos em coordenada de câmera fazendo:

𝑝 = 𝑓𝐴−1 ∙ �̂� (4.9)

Para compor a movimentação do robô, precisa-se encontrar uma matriz de rotação e o

vetor de translação a cada passo. A figura 4.5 ilustra este processo:

Figura 4.5: Modelo simplificado da composição de movimentação do robô a cada instante.

Fonte: Autor.

A realização dessa composição é possível utilizando câmeras estereoscópicas. A

posição do mesmo ponto visto num mesmo instante por duas câmeras é estimada utilizando a

geometria epipolar descrita nas próximas equações e com base na Figura 4.6.

Page 46: Dissertação Mestrado Marcus Lima

46

Figura 4.6: Geometria perspectiva de câmeras estereoscópicas.

Fonte: Autor.

𝑋𝑚 =𝑥𝑒𝑠𝑞

𝑥𝑒𝑠𝑞 − 𝑥𝑑𝑖𝑟𝐷𝑐𝑎𝑚𝑒𝑟𝑎𝑠 (4.10)

𝑍𝑚 =𝑋𝑚

𝑥𝑒𝑠𝑞𝑓 (4.11)

𝑌𝑚 =𝑍𝑚

𝑓𝑦𝑒𝑠𝑞 (4.12)

Onde 𝐷𝑐𝑎𝑚𝑒𝑟𝑎𝑠 é a distância entre as câmeras, 𝑥𝑒𝑠𝑞 e 𝑦𝑒𝑠𝑞 as coordenadas de câmera do

ponto visto pela câmera da esquerda e 𝑥𝑑𝑖𝑟 pela câmera da direita.

Para estimação das matrizes de rotação 𝑅𝑘 e do vetor de translação 𝑡𝑘 do robô, utiliza-

se a seguinte relação:

[𝑅𝑘 𝑡𝑘

0 1] = [

𝑃𝑤1(𝑘) 𝑃𝑤2(𝑘) … 𝑃𝑤𝑛(𝑘)1 1 … 1

] [𝑃𝑤1(𝑘 + 1) 𝑃𝑤2(𝑘 + 1) … 𝑃𝑤𝑛(𝑘 + 1)

1 1 … 1]

+

(4.13)

Onde 𝑃𝑤𝑖(𝑘), 𝑖 = 1,2 … 𝑛 é o vetor de coordenadas globais de um ponto característico

no instante de tempo “k” e + é o operador pseudo-inversa.

O mapa completo de trajetórias é então calculado utilizando a equação 4.14

Page 47: Dissertação Mestrado Marcus Lima

47

𝑋(𝑘) = 𝑋(𝑘 − 1) + (∏ 𝑅𝑖

𝑘−1

𝑖=1

) 𝑡𝑘 (4.14)

Onde 𝑋(𝑘) é o vetor de coordenadas globais que é paralelo ao sistema de coordenadas

do robô no instante 𝑘 = 0. A matrix 𝑅𝑖 e o vetor 𝑡𝑘 representam as estimativas de rotação e

translação do robô através da captura de duas imagens subsequentes.

Evidentemente, tal estimativa não é perfeita devido aos erros presentes na correlação

dos pontos encontrados na imagem e acumulação de erros nos cálculos realizados. O próximo

passo é aplicar um filtro para melhoria dos resultados obtidos. A próxima seção descreve o uso

de redes neurais neste processo.

4.3 Treinamento e Aplicação da Rede Neural

A regularização de trajetórias estimadas por odometria visual é um passo importante

para a aplicação no controle de trajetória. Em um projeto de um sistema de controle clássico de

malha fechada, o sensor de uma determinada variável é utilizado para emitir dados que são

utilizados no cálculo do erro (valor esperado – valor medido) e então o controlador utiliza essa

informação para corrigir a dinâmica do processo de maneira adequada. É evidente que quanto

maior a imprecisão da medida do sensor, maior a incerteza no cálculo do erro – fazendo com

que o controlador atue de forma inadequada.

Nesse caso, a rede neural age como um filtro que tentará, através de técnicas de

treinamento, prever o erro da estimativa de odometria visual e então regularizar o resultado de

forma a tornar a medição mais próxima do valor real.

O desenvolvimento de uma rede neural pode ser um problema muito complexo. Para

isto, existem pacotes prontos que facilitam sua aplicação. Neste projeto, utilizou-se a toolbox

do Matlab – nftool (Neural Fitting Tool). As Figuras de 4.7 a 4.10 ilustram o processo de criação

e treinamento da rede.

A etapa de seleção de dados (Figura 4.7) é onde são definidas as entradas utilizadas no

treinamento da rede e exatamente a saída (target) desejada. Neste caso, a entrada é a estimativa

do deslocamento realizado pela odometria visual e a saída é a movimentação real (conhecida)

do robô.

Page 48: Dissertação Mestrado Marcus Lima

48

Figura 4.7: Seleção dos dados de entrada e targets para o treinamento.

Fonte: Autor.

Figura 4.8: Etapa de validação e teste dos dados.

Fonte: Autor.

Page 49: Dissertação Mestrado Marcus Lima

49

Na validação e teste dos dados (Figura 4.8), são definidas as porcentagens dos dados

inseridos na fase de seleção que serão usados para treinamento, validação e teste.

Respectivamente, 70%, 15% e 15%. Onde, o primeiro varia de 30% a 70% e os demais de 5%

a 35%.

Os dados de treinamento são utilizados no aprendizado e a rede neural é ajustada de

acordo com o erro computado.

A validação é utilizada para medir a generalização da rede e é um parâmetro que finaliza

o treinamento quando o grau de generalização atinge seu máximo.

O teste não influencia no treinamento. É utilizado para fornecer uma medida

independente da performance da rede durante e após o treinamento.

Na etapa da arquitetura da rede (Figura 4.9), deve-se apenas selecionar o número de

neurônios. Tal quantidade depende da complexidade do problema e pode ser otimizada

empiricamente.

Figura 4.9: Seleção dos dados de entrada e targets para o treinamento.

Fonte: Autor.

Finalmente, a etapa de treinamento (Figura 4.10). Nesta, deve-se selecionar o algoritmo

de treinamento, dentre os disponíveis na ferramenta estão: Levenberg-Marquardt, Bayesian

Regularization e Scaled Conjugate Gradient.

Page 50: Dissertação Mestrado Marcus Lima

50

Figura 4.10: Etapa de treinamento da Rede Neural.

Fonte: Autor.

Resumidamente, aplicação de rede neural pode ser descrita em dois passos:

1º) Treinamento (Entradas e Targets Conhecidos) (offline)

- Entrada: X’, Y’, PSI’ (Posições cartesianas e orientação estimadas pela O.V.);

- Target: X,Y,PSI reais (Posições cartesianas e orientações conhecidas);

- Utilização de trajetórias contendo caminhos diversos para treinamento da rede

neural (retas horizontais e verticais, diagonais e circulares).

2º ) Aplicação da Rede (online)

- Depois da rede ser treinada, uma variável do tipo rede neural é criada e então

pode ser utilizada como uma função do tipo:

[Saída] = nome_da_rede(Entrada)

Page 51: Dissertação Mestrado Marcus Lima

51

5 ANÁLISE EXPERIMENTAL

Neste capítulo, será descrito o experimento realizado para a análise da proposta de

regularização de trajetórias estimadas por O.V. descritas no capítulo anterior.

Para questões de prova de conceito, toda a análise será feita computacionalmente. Desta

forma, é possível realizar diversas simulações mais rapidamente e, com isso, fazer os ajustes

necessários para a melhoria do desempenho da técnica ou verificar sua viabilidade.

Primeiramente, como o esperado é aplicar as técnicas de odometria visual em robôs

terrestres, precisa-se definir um meio de obter uma trajetória virtual que correspondesse com a

movimentação de um robô em um ambiente real.

O trabalho desenvolvido em Bastos (2015) utiliza a dinâmica de um robô diferencial

aplicado na ferramenta Simulink do Matlab (Figura 5.1) para navegar em um ambiente virtual

(Figura 5.2) desenvolvido no software Blender.

Figura 5.1: Modelo do robô terrestre do tipo diferencial.

Fonte: Bastos (2015)

O robô diferencial possui duas rodas traseiras independentes e uma roda fixa

centralizada na parte frontal. Isto faz com que o robô possa girar em torno de seu próprio eixo.

Page 52: Dissertação Mestrado Marcus Lima

52

Figura 5.2: Ambiente virtual de uma sala fechada com chão e paredes texturizadas.

Fonte: Bastos (2015).

Esse ambiente de uma sala texturizada é ideal para aplicar técnicas de odometria

visual. Para isto, é necessário capturar imagens à medida que o robô se movimenta.

Convenientemente, o software Blender possui câmeras digitais que podem ser facilmente

implementadas – basta monta-las na estrutura do robô.

As câmeras são posicionadas na parte frontal do robô viradas para baixo, isto é,

capturando imagens do chão do ambiente. Essa escolha foi feita pelo simples fato de que,

considerando que o ambiente é plano, posicionar as câmeras para baixo traz o benefício de que

os pontos identificados na parte do processamento sempre terão a mesma profundidade –

facilitando e melhorando a estimativa pela odometria visual. A Figura 5.3 ilustra um exemplo

de uma imagem capturada no ambiente virtual. A resolução da imagem é de 720x580 pixels.

Com a trajetória definida, o robô então se movimenta no ambiente virtual e, em

determinados passos, as câmeras capturam fotos do chão ao longo da trajetória. Após a

finalização da movimentação do robô, um conjunto de imagens é convertido em um vídeo com

a mesma resolução das imagens e com taxa de 30 frames por segundo. O vídeo é então

carregado pelo Visual Studio onde um algoritmo, baseado na biblioteca que contém diversas

ferramentas de processamento de imagens – OpenCV, analisa o vídeo frame a frame e identifica

pontos de interesse para estimar o deslocamento de cada pixel selecionado. A Figura 5.4 ilustra

um exemplo de tal seleção e a Figura 5.5 o programa em funcionamento.

Page 53: Dissertação Mestrado Marcus Lima

53

Figura 5.3: Imagem capturada em uma câmera virtual no ambiente do Blender.

Fonte: Autor

Figura 5.4: Identificação de pontos nas imagens da esquerda e direita das câmeras virtuais.

Fonte: Autor

Figura 5-5: Funcionamento do processamento das imagens aplicado no Visual Studio.

Fonte: Autor

Page 54: Dissertação Mestrado Marcus Lima

54

Os pontos são salvos em um arquivo de texto representando as coordenadas de cada

ponto em coordenadas de pixel (x, y) da imagem da esquerda, direita e os mesmos pontos

rastreados no frame subsequente. A Figura 5.5 ilustra tal organização.

O arquivo de texto contendo as informações dos pontos é então lido por um script no

Matlab, onde toda a álgebra para conversão das coordenadas de pixel para coordenadas de

mundo e composição da movimentação do robô é realizada.

A princípio, é esperado que a estimativa realizada pela odometria visual forneça um

resultado com uma precisão não adequada para a utilização em um controle de trajetória. Tendo

isto em consideração, é necessária a aplicação de algum filtro para reduzir o erro gerado pela

estimativa, neste caso uma rede neural.

Figura 5.5: Estrutura do arquivo de texto contendo os pontos identificados nas imagens

capturadas.

Fonte: Autor.

O treinamento da rede neural é feito utilizando as trajetórias da Figura 5.6. A escolha

dessas trajetórias se dá pelo motivo de dar a capacidade para a rede neural aprender a corrigir

os erros em tipos de caminhos diferentes: retas horizontais, verticais e diagonais e curvas.

Com isso, espera-se que qualquer trajetória realizada pelo robô, composta pelos

caminhos do treino, apresente um bom resultado de estimativa. A Figura 5.7 ilustra um

esquema do treinamento e aplicação da rede neural.

Número de pontos em cada frame

x esquerda

frame 1

y esquerda

frame 1

x direita

frame 1

y direita

frame 1

x esquerda

frame 2

y esquerda

frame 2

x direita

frame 2

y direita

frame 2

Page 55: Dissertação Mestrado Marcus Lima

55

Figura 5.6: Trajetórias circular, octogonal e quadrada aplicadas no treinamento da rede

neural.

Fonte: Autor.

Figura 5.7 Fluxogramas da etapa de treinamento (a) e aplicação da rede neural (b).

Fonte: Autor.

Com a rede neural treinada, pode-se aplicar uma trajetória ao robô que seja composta

das trajetórias de treinamento. A expectativa é que haja uma melhora significativa da

estimativa.

a)

b)

a)

b)

Page 56: Dissertação Mestrado Marcus Lima

56

6 RESULTADOS

Neste capítulo, são apresentados os resultados do treinamento da rede neural, a

estimativa por odometria visual das trajetórias aplicadas, a regularização realizada pela rede

neural treinada e o trabalho científico gerado com este estudo.

Primeiramente, sobre o treinamento da rede neural, a Figura 6.1 apresenta os resultados

obtidos durante o treinamento da rede realizado com as trajetórias descritas no capítulo anterior.

Figura 6.1: Resultado da performance da rede neural após o treinamento: Histograma de erro

(a), Erro Médio Quadrático/Época (b), Parâmetros da rede neural (c) e Saída/Target dos dados

de treinamento e teste (d).

Fonte: Autor.

O histograma de erro com 20 bins apresentou um resultado desejado. Uma distribuição

gaussiana, onde a maior concentração está no meio (menor erro).

A performance de treinamento da rede visto na Figura 6-1b atinge um resultado bom

em aproximadamente 200 épocas e o melhor resultado em 1000 épocas. O rápido declínio do

erro indica que a rede está configurada corretamente.

a) b) c)

d)

Page 57: Dissertação Mestrado Marcus Lima

57

A Figura 6.2 mostra o resultado da estimativa de odometria visual apenas nas trajetórias

utilizadas no treinamento da rede neural.

Figura 6.2: Resultado da estimativa das trajetórias circular, octogonal e quadrada por

odometria visual.

Fonte: Autor

Percebe-se um erro em relação à escala e rotação. O próximo passo é testar a rede neural

treinada. A Figura 6.3 ilustra a aplicação das trajetórias utilizadas para o treinamento na rede

neural treinada.

Figura 6.3: Resultado da aplicação das trajetórias circular, octogonal e quadrada na rede

neural treinada.

Fonte: Autor

Como esperado, a rede neural conseguiu regularizar as trajetórias com um erro mínimo.

Isto só comprova que a rede foi treinada adequadamente, já que aplicar a rede neural treinada

Page 58: Dissertação Mestrado Marcus Lima

58

nas trajetórias de treinamento não fornece informações da performance da rede em caminhos

diversos.

Para testar o desempenho da rede neural, define-se uma trajetória que deve ser composta

por parte das trajetórias de treinamento: retas horizontais, verticais, diagonais e curvas

circulares. A Figura 6.4 ilustra tal trajetória composta estimada apenas por odometria visual e

regularizada pela rede neural.

Figura 6.4: Trajetória composta estimada apenas por odometria visual (esquerda) e

regularizada por rede neural (direita).

Fonte: Autor.

O resultado estimado apenas por odometria visual, assim como nas trajetórias de

treinamento, apresentam um erro de escala e rotação. Com a aplicação da rede neural, a resposta

é melhorada de maneira significante, um erro máximo aproximadamente de 100mm em “x” e

50mm em “y”. As regiões de maior erro são principalmente nas curvas, onde a velocidade

angular do robô dificulta a correlação de pontos. Uma solução para tal problema é diminuir a

velocidade do robô antes das curvas. A tabela 6.1 mostra os resultados de forma quantitativa.

Verifica-se que, em todos os casos, há uma diminuição significante no erro médio

quadrático, com mais relevância na trajetória composta, já que esta não foi utilizada no

treinamento da rede e sim para validação. A tabela 6.2 ilustra o tempo de execução das etapas.

Page 59: Dissertação Mestrado Marcus Lima

59

A execução do algoritmo de processamento de imagens é realizada no software Visual

Studio, a odometria e a rede neural são aplicadas no Matlab. O computador utilizado tem o

sistema operacional Windows 7, processador Intel I7 4790k de 4.0Ghz e placa de vídeo

GeForce GTX 660.

Tabela 6.1: Erro médio quadrático das posições com odometria visual e rede neural

Erro Médio Quadrático

Trajetória Posição X (Real

vs. O.V.)

Posição Y (Real

vs. O.V.)

Posição X (Real vs.

O.V. + R.N.)

Posição Y (Real vs.

O.V. + R.N)

Quadrado 0.4285 0.2027 1.86 ∙ 10−5 1.13 ∙ 10−5

Octógono 199.1667 43.7371 0.67 ∙ 10−3 0.19 ∙ 10−3

Círculo 0.0272 8.2991 0.66 ∙ 10−3 0.07 ∙ 10−5

Composta 361.0754 26.8454 0.4853 0.0216

Fonte: Autor

Tabela 6.2: Tempo de execução da odometria visual, treinamento e aplicação da rede.

Tempo de Execução

Trajetória Comprimento do

Percurso

Processamento

das Imagens

Odometria

Visual

Treinamento

da Rede

O.V. +

Aplicação da

Rede

Quadrado 12 metros 3𝑚44𝑠 1𝑚34𝑠 2𝑚05𝑠 1𝑚42𝑠

Octógono 4.83 metros 5𝑚57𝑠 2𝑚46𝑠 2𝑚05𝑠 2𝑚51𝑠

Círculo 6.28 metros 4𝑚33𝑠 1𝑚53𝑠 2𝑚05𝑠 1𝑚58𝑠

Composta 7.78 metros 8𝑚45𝑠 3𝑚26𝑠 - 3𝑚32𝑠

Fonte: Autor

Page 60: Dissertação Mestrado Marcus Lima

60

Claramente, o maior tempo de execução é no processamento de imagens, isto ocorre

devido à resolução relativamente grande das imagens e também da quantidade de passos do

robô. O tempo médio de atraso no processo em cada passo do programa com a rede trainada é

de aproximadamente 1.18 segundos. Este tempo pode ser reduzido com a melhoria dos

algoritmos de processamento e estimativa e também com a unificação de todo o processo em

um único software.

O treinamento da rede pode ser relativamente demorado, dependendo da quantidade de

dados inseridos. A grande vantagem é que, após o treinamento, a rede adiciona pouco tempo

de processamento em sua aplicação e melhora os resultados de maneira relevante.

O estudo apresentado neste trabalho gerou, uma apresentação no congresso

internacional IPIN-2015 onde o artigo será publicado nos anais do evento. O artigo gerado é

apresentado no apêndice A.

Page 61: Dissertação Mestrado Marcus Lima

61

7 CONCLUSÕES E TRABALHOS FUTUROS

A navegação autônoma por odometria visual traz muitas vantagens em relação aos

métodos tradicionais. A não dependência de um sistema de navegação por satélite possibilita a

navegação em ambientes isolados, subterrâneos ou sem cobertura de sinal. Técnicas atuais que

utilizam um sistema de lasers fornecem uma grande quantidade de informações complexas para

o processamento e dependem do índice de reflexão dos materiais. A utilização de imagens traz

uma grande quantidade de informações que podem ser extraídas. Dentre elas: separação,

identificação e contagem de objetos, segmentação de áreas. É possível também introduzir o

conceito de profundidade (reconstrução 3-D) descrita na proposta deste trabalho utilizando

imagens estereoscópicas e conhecendo os parâmetros intrínsecos da câmera e a distância entre

ambas.

Em contrapartida, o processamento de imagens é altamente dependente das condições

de iluminação do ambiente, bem como questões de estabilidade (vibração). Este projeto

considera a navegação em um ambiente plano e com iluminação distribuída regularmente

(ambiente estruturado).

Utilizando apenas a odometria visual com as técnicas descritas neste projeto, é possível

prever a forma e o tamanho da trajetória do robô com certo erro na escala e rotação. Apesar de

ser um resultado relativamente bom, a estimativa pura não poderia ser utilizada adequadamente

para controle de uma trajetória.

A aplicação da rede neural para regularização do erro presente na estimativa de

odometria visual se mostrou muito eficiente. Diferente de outros filtros, a rede neural adiciona

pouco tempo de processamento em relação ao resultado trazido. Por outro lado, a rede neural

pode ter um elevado tempo de treinamento e geralmente é sensível às mudanças na aplicação

não consideradas no treinamento. Uma proposta para resolver tal questão é criar diversos

ambientes virtuais com características diferentes, treinar uma rede neural para cada um e no

final ter um conjunto de redes neurais que podem ser selecionadas para cada situação. Este

método pode ser inclusive dinâmico – quando o robô passa de um determinado tipo de terreno

para outro, é selecionado um tipo de rede mais adequada para a situação.

Sabe-se que, na aplicação das técnicas descritas neste trabalho em uma situação real,

podem ocorrer grandes disparidades na estimativa de odometria visual devido às questões de

Page 62: Dissertação Mestrado Marcus Lima

62

iluminação e vibração. Isto sugere um estudo sequencial que aplique técnicas de normalização

da imagem a fim de minimizar tais efeitos indesejados.

Outra questão é a elevação do ambiente. Para ambientes internos isto não é tão

alarmante, contudo, para uma navegação em ambientes externos, isto deve ser considerado no

treinamento da rede. Uma sugestão para solucionar este problema seria introduzir na rede neural

mais uma variável. Além de (𝑥′, 𝑦′𝑒 𝑝𝑠𝑖′), ter-se-ia uma variável ℎ (elevação) que poderia ser

medida tanto por processamento de imagens quanto por um sensor inercial, por exemplo.

A execução deste projeto só foi possível pela integração de três programas: Matlab,

Blender e Visual Studio. Utilizar três softwares diferentes traz uma grande quantidade de

funcionalidades diferentes. Todavia, tal comunicação pode gerar problemas de conflito e acaba

reduzindo muito a eficiência no tempo de processamento do processo. O próximo passo é

converter todo o processamento para um único aplicativo, preferencialmente programado em

uma linguagem que possa ser embarcada como: Python ou Java. Isto definitivamente irá reduzir

o tempo de processamento e praticamente eliminar problemas de compatibilidade, além de

poder ser aplicado em um dispositivo móvel: um celular, tablet ou uma placa processadora.

Ainda que o fluxo óptico tenha resolvido o problema proposto, existem outras técnicas

de processamento de odometria visual como Sift/Surf (Suaib, 2014) e ORB (Rublee, 2011) que

precisam ser avaliadas. A rede neural também pode ser substituída por um filtro de Kalman

(Chen, 2012) ou um descritor do tipo SVM-KNN (Zhang, 2006). Uma possível tese de

doutorado seria um estudo aprofundado das técnicas mencionadas realizando testes

comparativos e então propor qual seria a melhor configuração, em termos quantitativos e

qualitativos, para uma navegação autônoma visual com melhor estimativa de posição.

Por fim, com o estudo realizado, verificou-se que o tema de navegação autônoma visual

é bastante discutido na atualidade e que ainda não possui um caminho nem uma solução ótima

para o problema. Por ser uma questão abrangente, este trabalho levante diversos aspectos que

podem ser temas de dissertações de mestrado ou até teses de doutorado. Acredita-se que este

tipo de estudo tem uma grande relevância militar, principalmente na exploração planetária.

Page 63: Dissertação Mestrado Marcus Lima

63

REFERÊNCIAS

AGRAWAL, Motilal; KONOLIGE, Kurt. Real-time localization in outdoor environments

using stereo vision and inexpensive gps. In: Pattern Recognition, 2006. ICPR 2006. 18th

International Conference on. IEEE, 2006. p. 1063-1068.

BASTOS, Vinicius Benites. Desenvolvimento e Integração de Ambiente 3D de Simulação

para Algoritmos de Navegação por Imagem. 2015. 117 f. Dissertação (Mestrado) - Curso de

Engenharia Mecânica, Unicamp, Campinas, 2015.

BURGUERA, Antoni; GONZÁLEZ, Yolanda; OLIVER, Gabriel. RANSAC Based Data

Association for Underwater Visual SLAM. In: ROBOT2013: First Iberian Robotics

Conference. Springer International Publishing, 2014. p. 3-16.

CANNY, John. A computational approach to edge detection. Pattern Analysis and Machine

Intelligence, IEEE Transactions on, n. 6, p. 679-698, 1986.

CHEN, S. Y. Kalman filter for robot vision: a survey. Industrial Electronics, IEEE

Transactions on, v. 59, n. 11, p. 4409-4420, 2012.

COLLINS, Robert. Correspondence Matching. Penn State: Collins, 2012. 33 slides, color.

Disponível em: <http://www.cse.psu.edu/~rtc12/CSE486/lecture07.pdf>. Acesso em: 14 abr.

2015.

DOUXCHAMPS, Damien. A small list of IMU / INS / INU. 2015. Disponível em:

<http://damien.douxchamps.net/research/imu/>. Acesso em: 14 abr. 2015.

DUDA, Richard O. et al. Pattern classification and scene analysis. New York: Wiley, 1973. FÖRSTNER, Wolfgang. A feature based correspondence algorithm for image

matching. International Archives of Photogrammetry and Remote Sensing, v. 26, n. 3, p.

150-166, 1986.

FU, Changhong et al. Monocular visual-inertial SLAM-Based collision avoidance strategy for

fail-safe UAV using fuzzy logic controllers. Journal of Intelligent & Robotic Systems, v. 73,

n. 1-4, p. 513-533, 2014.

HARRIS, Chris; STEPHENS, Mike. A combined corner and edge detector. In: Alvey vision

conference. 1988. p. 50.

Page 64: Dissertação Mestrado Marcus Lima

64

KAO, Wei-Wen; HUY, Bui Quang. Indoor navigation with smartphone-based visual SLAM

and Bluetooth-connected wheel-robot. In: Automatic Control Conference (CACS), 2013

CACS International. IEEE, 2013. p. 395-400.

KONOLIGE, Kurt; AGRAWAL, Motilal; SOLA, Joan. Large-scale visual odometry for rough

terrain. In: Robotics Research. Springer Berlin Heidelberg, 2011. p. 201-212.

LATEGAHN, Henning; GEIGER, Andreas; KITT, Bernd. Visual SLAM for autonomous

ground vehicles. In: Robotics and Automation (ICRA), 2011 IEEE International

Conference on. IEEE, 2011. p. 1732-1737.

LEBLANC, Simon. Dynamics of group hunting and collective evasion in schooling

fish. 2014. Disponível em: <http://www.princeton.edu/~sleblanc/en/research.html>. Acesso

em: 14 abr. 2015.

LIU, Jiamin; WHITE, Jacob M.; SUMMERS, Ronald M. Automated detection of blob

structures by hessian analysis and object scale. In: Image Processing (ICIP), 2010 17th IEEE

International Conference on. IEEE, 2010. p. 841-844.

MACKAY, David JC. Bayesian interpolation. Neural computation, v. 4, n. 3, p. 415-447,

1992.

MEDINA-CARNICER, Rafael et al. A novel method to look for the hysteresis thresholds for

the Canny edge detector. Pattern Recognition, v. 44, n. 6, p. 1201-1211, 2011.

MØLLER, Martin Fodslette. A scaled conjugate gradient algorithm for fast supervised

learning. Neural networks, v. 6, n. 4, p. 525-533, 1993.

MORAVEC, Hans P. TOWARDS AUTOMATIC VISUAL BBSTACLE AVOIDANCE.

In: International Conference on Artificial Intelligence (5th: 1977: Massachusetts Institute

of Technology). 1977.

MORÉ, Jorge J. The Levenberg-Marquardt algorithm: implementation and theory.

In: Numerical analysis. Springer Berlin Heidelberg, 1978. p. 105-116. NASA. Mars Curiosity. Disponível em:

<http://www.nasa.gov/mission_pages/msl/images/index.html>. Acesso em: 14 abr. 2015.

NOWICKI, Michal; SKRZYPCZYNSKI, Piotr. Performance comparison of point feature

detectors and descriptors for visual navigation on Android platform. In: Wireless

Page 65: Dissertação Mestrado Marcus Lima

65

Communications and Mobile Computing Conference (IWCMC), 2014 International.

IEEE, 2014. p. 116-121.

PARKER, Jim R. Algorithms for image processing and computer vision. John Wiley &

Sons, 2010.

RUBLEE, Ethan et al. ORB: an efficient alternative to SIFT or SURF. In:Computer Vision

(ICCV), 2011 IEEE International Conference on. IEEE, 2011. p. 2564-2571.

SHI, Jianbo; TOMASI, Carlo. Good features to track. In: Computer Vision and Pattern

Recognition, 1994. Proceedings CVPR'94., 1994 IEEE Computer Society Conference on.

IEEE, 1994. p. 593-600.

SUAIB, Norhayati Mohd et al. Performance evaluation of feature detection and feature

matching for stereo visual odometry using SIFT and SURF. In:Region 10 Symposium, 2014

IEEE. IEEE, 2014. p. 200-203.

SYSTEMS, Phoenix Aerial. Comparison of Inertial Measurement Units (IMUs). 2014.

Disponível em: <http://www.phoenix-aerial.com/information/imu-comparison/>. Acesso em:

13 abr. 2015.

WEDEL, Andreas; CREMERS, Daniel. Stereo scene flow for 3D motion analysis. Springer

Science & Business Media, 2011.

WEISS, Stephan; SCARAMUZZA, Davide; SIEGWART, Roland. Monocular‐SLAM–based

navigation for autonomous micro helicopters in GPS‐denied environments. Journal of Field

Robotics, v. 28, n. 6, p. 854-874, 2011.

ZHANG, Hao et al. SVM-KNN: Discriminative nearest neighbor classification for visual

category recognition. In: Computer Vision and Pattern Recognition, 2006 IEEE Computer

Society Conference on. IEEE, 2006. p. 2126-2136.

ZHANG, Tao; XU, Xiaosu. A new method of seamless land navigation for GPS/INS integrated

system. Measurement, v. 45, n. 4, p. 691-701, 2012.

Page 66: Dissertação Mestrado Marcus Lima

66

APÊNDICE A – ARTIGO APRESENTADO NO IPIN 2015

Page 67: Dissertação Mestrado Marcus Lima

67

Page 68: Dissertação Mestrado Marcus Lima

68

Page 69: Dissertação Mestrado Marcus Lima

69

Page 70: Dissertação Mestrado Marcus Lima

70

Page 71: Dissertação Mestrado Marcus Lima

71