Você está na página 1de 93

Dissertação apresentada à Pró-Reitoria de Pós-Graduação e Pesquisa do Instituto

Tecnológico de Aeronáutica, como parte dos requisitos para obtenção do título de


Mestre em Ciências e Tecnologias Espaciais no Programa de Pós-Graduação em
Ciências e Tecnologias Espaciais, Área de Sensores e Atuadores Espaciais.

Remo César Carnevalli

METODOLOGIA PARA ACELERAÇÃO DO DESEMPENHO


EM SISTEMAS EMBARCADOS EM VANTS COM
PROCESSAMENTO DE IMAGENS EM TEMPO REAL

Dissertação aprovada em sua versão final pelos abaixo assinados

Prof. Dr. Pedro Teixeira Lacava


Pró-Reitor de Pós-Graduação

Campo Montenegro
São José dos Campos, SP – Brasil
2020
Dados Internacionais de Catalogação-na-Publicação (CIP)
Divisão de Informação e Documentação
Carnevalli, Remo César
Metodologia para aceleração do desempenho em sistemas embarcados em vants com processamento de
imagens em tempo real / Remo César Carnevalli.
São José dos Campos, 2020.
92f.

Dissertação de mestrado – Programa de Pós-graduação em Ciẽncias e Tecnologias Espaciais – Áreade


Sensores e Atuadores , Instituto Tecnológico de Aeronáutica, 2020. Orientador: Prof. Dr. Lamartine
Nogueira Frutuoso Guimaraes. Coorientador: Prof. Dr. Elcio Hideiti Shiguemori.

1. Sensores. 2. Sistemas embarcados. 3. Alto desempenho. I. Instituto Tecnológico de Aeronáutica. II.Título

REFERÊNCIA BIBLIOGRÁFICA

CARNEVALLI, R.C. Metodologia para aceleração de desempenho para sistemas


embarcados em VANTS e com processamento de imagens em tempo real. 2020. 93f.
Dissertação mestrado em Tecnologia e Ciências Espaciais – Instituto Tecnológico de
Aeronáutica, São José dos Campos.

CESSÃO DE DIREITOS

NOME DO AUTOR: Remo César Carnevalli


TÍTULO DO TRABALHO: Metodologia para aceleração de desempenho para sistemas embarcados
em VANTS e com processamento de imagens em tempo real.
TIPO DO TRABALHO/ANO: Dissertação / 2020

É concedida ao Instituto Tecnológico de Aeronáutica permissão para reproduzir cópias desta


dissertação e para emprestar ou vender cópias somente para propósitos acadêmicos e científicos.
O autor reserva outros direitos de publicação e nenhuma parte desta dissertação ou tese pode ser
reproduzida sem a sua autorização (do autor).

__________________________________
Remo César Carnevalli
Av. Nove de Julho 34, apt 11, Jd. Apolo
CEP: 12.243.001, São José dos Campos - SP
iii

METODOLOGIA PARA ACELERAÇÃO DE DESEMPENHO


PARA SISTEMAS EMBARCADOS EM VANTS COM
PROCESSAMENTO DE IMAGENS EM TEMPO REAL

Remo César Carnevalli

Composição da Banca Examinadora:

Prof. Dr. Álvaro José Damião Presidente - ITA


Prof. Dr. Lamartine N. F. Guimaraes Orientador - IEAv
Prof. Dr. Élcio H. Shiguemori Coorientador - IEAv
Prof(a) Dra. Maria José Pinto Membro - IEAv
Prof. Dr. Álvaro Luís Fazenda Membro Externo - UNIFESP

ITA
iv

Dedico este trabalho á minha esposa e aos meus filhos pelo enorme incentivo que sempre me
deram e também aos meus colegas de trabalho pelo apoio.
v

Agradecimentos

Agradeço aos meus orientadores Prof. Dr. Lamartine Nogueira Frutuoso Guimarães e
ao Prof. Dr. Elcio Hideiti Shiguemori pela oportunidade que me concederam de ter participado
deste curso de pós-graduação. Agradeço não só pelo apoio mas também pelo incentivo e
motivação que nunca faltaram. Registro aqui também meus agradecimentos aos colegas de
trabalho que durante todo meu período de estudo sempre me deram muita força para que eu
finalizasse com êxito mais uma etapa e um agradecimento especial á minha esposa que sempre
esteve presente e sempre persistente para que eu não perdesse o ritmo e o foco nos estudos.
vi

"O homem convence pelas palavras


e conquista pelos seus atos.”

Carlos Carnevalli
vii

Resumo

As aplicações com uso de Veículos Aéreos Não Tripulados (VANT) e equipados com câmeras
estão expandindo e exigindo cada vez mais respostas rápidas e apuradas para auxiliar nas
tomadas de decisões. Com isso, cresce também a demanda por sistemas de processamento de
imagens em tempo real e embarcados, aumentando-se os requisitos de tempo de processamento,
consumo de memória e energia. O emprego de tecnologias de alto desempenho computacional
mostra-se como o estado da arte para este cenário. Pouco se tem explorado o uso de tecnologias
de alto desempenho computacional em sistemas embarcados onde ocorrem restrições como
capacidade de processamento, alimentação elétrica, limitação de espaço, aquecimento, peso,
problemas de comunicação com a estação solo, interferências eletromagnéticas e até mesmo
com o clima. Neste contexto, esta dissertação de mestrado visa apresentar uma metodologia
que busca melhorar o desempenho de um sistema de processamento de imagens obtidas por
VANT para processamento em tempo real aplicado á navegação autônoma. São empregadas
técnicas de processamento paralelo, programação híbrida e também fatores de otimização
considerando o cenário computacional envolvido visando a aceleração da aplicação, redução
no tempo de processamento e também extraindo a melhor performance oferecida pelo ambiente
computacional. Para os testes de validação foram utilizados dois modelos de computadores de
placa única, adequados para ambientes embarcados, e um algoritmo que utiliza técnicas de
redes neurais no tratamento das imagens coletadas e as compara com uma base de dados local.
A seção de resultados e estudos de casos apresenta os ganhos de desempenho em função da
metodologia aplicada.
viii

Abstract

Applications using unmanned aerial vehicles equipped with cameras are increasing and
demanding quick and more accurate answers for supporting the decision making process. As
result, the demand for real-time and embedded image processing systems the requirements for
processing time, memory and energy consumption. The use of high-performance computational
technologies is shown to be the state of the art for this scenario. Little has been explored the
use of high computational performance technologies in embedded systems where restrictions
such as processing capacity, power supply, space limitations, heating, weight, communication
problems with the ground station, electromagnetic interference and even the weather occur. In
this context, this master's thesis aims to present a methodology that seeks to improve the
performance of an image processing system obtained by Unmanned Aerial Vehicles for real-
time processing applied to autonomous navigation. Parallel processing techniques, hybrid
programming and optimization factors are used considering the computational scenario
involved aiming at accelerating the application, reducing the distance between the application's
needs and also extracting the best performance offered by the computational environment. For
the validation tests, two models of single board computers were used, suitable for embedded
environments, and an algorithm that uses neural network techniques in the treatment of the
collected images and compares them with a local database. In the results and case studies
section, performance gains are presented according to the applied methodology.
ix

Lista de Figuras

FIGURA 01: Elementos de um sistema sensor imageador ................................... 29


FIGURA 02: Tipo de sensores imageadores ......................................................... 30
FIGURA 03: Algoritmo de registro automático de imagem .................................. 33
FIGURA 04: Comparação das dimensões de um SBC .......................................... 36
FIGURA 05: SBC Nvidia Jetdon ........................................................................... 37
FIGURA 06: SBC Labrador ................................................................................... 37
FIGURA 07: Estrutura de uma CPU ..................................................................... 38
FIGURA 08: Estrutura de uma GPU ...................................................................... 38
FIGURA 09: Memória compartilhada ................................................................... 40
FIGURA 10: Memória Distribuída ........................................................................ 40
FIGURA 11: Modelo Fork-Join ............................................................................ 43
FIGURA 12: Exemplo da implementação da API OpenMP em código C/C++ .... 44
FIGURA 13: SBC Raspberry PI B-1 ...................................................................... 47
FIGURA 14: SBC Zybo Z7000 .............................................................................. 47
FIGURA 15: SBC Raspberry PI-3B ....................................................................... 47
FIGURA 16: SBC Odroid-XU4S ........................................................................... 47
FIGURA 17: Sensor Flir Duo ................................................................................. 48
FIGURA 18: VANT Phantom 3 Standart ............................................................... 49
FIGURA 19: Exemplo de imagens capturas em voo no campus do IEAv ............. 50
FIGURA 20: Proposta do cenário computacional .................................................. 52
FIGURA 21: Cenário computacional - visão em camadas ..................................... 53
FIGURA 22: Desempenho dos cartões micros ....................................................... 57
FIGURA 23: Exemplo de sequência de imagens capturadas. Campus do IEAv.... 61
FIGURA 24: Composição do 1º. cenário computacional em camadas .................. 61
FIGURA 25: Resposta do software Gprof ............................................................. 62
FIGURA 26: Implementação do paralelismo utilizando OpenMP ........................ 62
FIGURA 27: Processamento modo original e paralelo .......................................... 63
FIGURA 28: Ajuste da memória virtual ............................................................... 68
FIGURA 29: Evolução nos tipos de processamento ............................................. 64
FIGURA 30: Cálculo da Eficiência ........................................................................ 64
FIGURA 31: Compilação padrão x compilação com otimização .......................... 65
x

FIGURA 32: Exemplo de sequência de imagens capturadas. Campus do IEAv.... 68


FIGURA 33: Imagem de referência. Campus do IEAv ......................................... 68
FIGURA 34: Resultado do processamento de 120 imagens no Raspberry PI-3B.. 68
FIGURA 35: Exemplo de sequência de imagens capturadas. Campus do IEAv.... 69
FIGURA 36: Resultado do processamento de 208 imagens .................................. 69
FIGURA 37: Helicóptero autônomo RMAX ........................................................ 70
FIGURA 38: Sequência de imagens obtidas pelo VANT RMAX ....................... 70
FIGURA 39: Imagem de referência. Revinge, Suécia .......................................... 71
FIGURA 40: Resultado do Processamento de 1500 imagens ................................ 71
FIGURA 41: Composição do 2º. cenário computacional em camadas .................. 72
FIGURA 42: Treinamento com 18 imagens utilizando o Odroid .......................... 73
FIGURA 43: Sequência de imagens obtidas pelo VANT Phantom3 ..................... 74
FIGURA 44: Resultado do processamento de 120 imagens utilizando o Odroid... 74
FIGURA 45: Exemplo de sequência de imagens capturadas. Campus do IEAv.... 75
FIGURA 46: Resultado do processamento de 208 imagens utilizando o Odroid... 76
FIGURA 47: Sequência de imagens obtidas pelo VANT RMAX ......................... 77
FIGURA 48: Imagem de referência. Revinge, Suécia ........................................... 77
FIGURA 49: Processamento das 1500 imagens utilizando o Odroid .................... 77
FIGURA 50: Ganho de desempenho no processo de rotação ................................ 79
FIGURA 51: Ganho de desempenho no processo de extração de bordas .............. 79
FIGURA 52: Ganho de desempenho no processo de correlação ........................... 80
xi

Lista de Tabelas

TABELA 01: Vantagens e desvantagens dos modelos de sensores ....................... 30


TABELA 02: Quesitos de desempenho ................................................................. 45
TABELA 03: Especificações dos computadores utilizados .................................... 48
TABELA 04: Características da câmera Flir Duo ................................................. 49
TABELA 05: Caracteristicas do VANT Phantom 3 .............................................. 50
TABELA 06: Fatores relevantes para aceleração na camada 1 ............................. 54
TABELA 07: Fatores relevantes para aceleração na camada 2 ............................. 55
TABELA 08: Fatores relevantes para aceleração na camada 3 ............................. 55
TABELA 09: Tipos de cartões MicroSD e suas taxas de I/O ................................ 55
TABELA 10: Fatores relevantes para aceleração na camada 4 ............................. 56
TABELA 11: Fatores relevantes para aceleração na camada 5............................... 58
TABELA 12: Fatores relevantes para aceleração na camada 6 .............................. 58
TABELA 13: Fatores relevantes para aceleração na camada 7 ............................. 59
TABELA 14: Modelos de compilação ................................................................... 65
TABELA 15: Resultado das métricas de desempenho – Compilação padrão ....... 66
TABELA 16: Resultado das métricas de desempenho – Compilação otimizado.. 66
TABELA 17: Tempo de processamento original x modelo otimizado.................. 66
TABELA 18: Modelos de processamento .............................................................. 67
TABELA 19: Resultado das métricas de desempenho. Fase1-1º caso .................. 69
TABELA 20: Resultado das métricas de desempenho. Fase1-2º caso ................... 70
TABELA 21: Resultado das métricas de desempenho. Fase 1-3ºcaso ................... 72
TABELA 22: Resultado das métricas de desempenho 18 frames .......................... 73
TABELA 23: Resultado das métricas de desempenho. Fase II-1º caso ................. 74
TABELA 24: Resultado das métricas de desempenho. Fase II-2º caso ................. 76
TABELA 25: Resultado das métricas de desempenho. Fase II-3º caso ................. 77
TABELA 26: Resumo dos estudos de casos .......................................................... 78
TABELA 27: Tempo de execução dos algoritmos para a detecção de bordas ....... 80
TABELA 28: Resultado do desempenho nas fases do algoritmo ......................... 81
xii

Lista de Abreviaturas e Siglas


ALU Unidades de Aritmética e Lógica
ANAC Agência Nacional de Aviação Civil
API Application Programming Interface
ARM Acorn RISC Machine
ARP Aeronave Remotamente Pilotada
CPU Central Processing Unit
DECEA Departamento de Controle do Espaço Aéreo
FLIR Forward Looking Infrared
FPGAs Field Programmable Gate Arrays
GCC GNU Compiler Collection
GNSS Global Navigation Satellite Systems
GPU Graphics Processing Unit
HPC High performance computing
IEAv Instituto de Estudos Avançados
INS Sistema de Navegação Inercial
IRLS Infrared Linescanner
ISO International Organization for Standardization
ITA Instituto Tecnológico de Aeronáutica
MLP Multilayer Perceptron
MPI Message Passing Interface
ONU Organização das Nações Unidas
OpenCV Open Source Computer Vision
OpenMP Open Multi-Processing
OSI Open System Interconnection
PAD Processamento de Alto Desempenho
PITER Processamento de Imagens em Tempo Real
RISC Reduced Instruction Set Computer
RNA Rede Neural Artificial
SBC Single Board Computer
STR Sistema de Tempo Real
UHS Ultra High Speed
VANT Veículos aéreos não tripulados
xiii

Sumário
1 Introdução .......................................................................................................... 15
1.1 Problema de Pesquisa .............................................................................. 16

1.2 Objetivo .................................................................................................... 17

1.3 Motivação ................................................................................................ 18

1.4 Contribuição ............................................................................................ 19

1.5 Trabalhos Relacionados ........................................................................... 19

2 Fundamentação Teórica .................................................................................... 22


2.1 . Sistemas de navegação: INS e GPS ....................................................... 22

2.2 Veículo Aéreo Não Tripulado - VANT .................................................... 23

2.3 Navegação Autônoma .............................................................................. 24

2.4 Navegação por Visão Computacional ..................................................... 25

2.5 Processamento de imagem em tempo real .............................................. 26

2.7 Sistema imageador termal ....................................................................... 29

2.9 Processamento de alto desempenho ........................................................ 32

2.10 Processadores ARM ............................................................................. 33

2.11 Computador de Placa Única .................................................................. 34

2.12 Arquitetura CPU e GPU ....................................................................... 36

2.13 Computação Paralela ............................................................................. 37

3 Metodologia .......................................................................................................... 39

3.1 Algoritmo de estimação de posição por imagens .................................... 39

3.3 Métricas de desempenho .......................................................................... 43

3.4 Equipamentos utilizados .......................................................................... 45

3.4.1 Computadores SBC.......................................................................45


3.4.2 Sensor ótico embarcado:………………………………………..46
3.4.3 VANT Phantom 3………………………………………………..47
3.5 Cenário computacional ...................................................................................... 49
3.5.2 Visualização do cenário computacional ............................................... 51
xiv

3.5.3 Extração dos fatores de aceleração....................................................... 52

4 Resultados.............................................................................................................. 58

4.1.1. Primeiro Estudo de Caso: 120 Frames - Raspberry PI-3B ................ 65

4.1.2 Segundo Estudo de Caso: 208 Frames - Raspberry PI-3B ................. 67

4.1.3 Terceiro Estudo de Caso: 1500 Frames - Raspberry PI-3B................. 68

4.1.5 Quarto Estudo de Caso – 120 Frames - Odroid XU4 .......................... 71

4.1.6 Quinto Estudo de Caso – 208 Frames - Odroid XU4 ........................... 72

4.1.7 Sexto Estudo de Caso – 1500 Frames - Odroid XU4 ............................ 74

4.1.8 Avaliação das etapas fundamentais do algoritmo. ............................... 75

5 Conclusão ............................................................................................................. 79

5.1 Proposta de trabalhos futuros ........................................................................... 80


6 Referências ......................................................................................................... 81
1 Introdução

O uso de sistemas de imageamento embarcado em satélites e aeronaves aumentou


consideravelmente nos últimos anos e o número de satélites pode quintuplicar na próxima
década de acordo com Ryan-Mosley et al. (2019). Além disso, o uso de VANT tem aumentado
rapidamente. Segundo Pacheco (2019) no acumulado até abril de 2019, a Agência Nacional de
Aviação Civil (ANAC) autorizou a operação de 24.427 VANTs para uso profissional. Os
VANTs também são conhecidos por Aeronaves Remotamente Pilotadas (ARP) (PRUDKIN e
BREUNIG, 2019).
Como resultado, a quantidade de dados e a necessidade de processar as imagens geradas
por esses sistemas também aumentaram (SOUZA, 2017), dado que as aplicações nas áreas de
Sensoriamento Remoto têm sido solicitadas. Arantes et al. (2019) apresentam as vantagens de
se utilizar VANTs na agricultura digital. Em Jung et al. (2018) VANT são aplicados no
monitoramento e diagnóstico de linhas de distribuição e linhas de transmissão no setor de
energia. Em Mirzaeinia et al. (2020), a aplicação da tecnologia de processamento de imagens
por VANT é aplicada além-fronteiras, visando a redução dos custos operacionais com
patrulhamento. A partir de 2013, a Organização das Nações Unidas (ONU) introduziu o uso de
VANTs na Missão de Estabilização da ONU na República Democrática do Congo. O trabalho
utiliza o emprego de VANTs no Congo para fazer algumas considerações sobre o uso dessa
tecnologia nas operações de paz (AGUILAR e SANTOS, 2018). Os VANTs também fornecem
uma ferramenta de pesquisa eficiente e econômica para mapeamento e medição topográfica
(TURNER et al., 2016).
Dentro desta diversidade de aplicações, diferentes tipos de sensores imageadores têm sido
embarcados. Por exemplo, satélites e aeronaves (tripuladas ou não) foram equipadas com
sensores ópticos (TANG, 2015), térmicos (SAMPAIO et al., 2019), hiperespectrais
(OLIVETTI, 2019), Radar de Abertura Sintética (SAR) (MOREIRA et al., 2019) e LIDAR
(LEE, 2019), ( INOUE E YOKOYAMA., 2019).
Um dos desafios, então, é empregar e desenvolver tecnologias para processar esse grande
volume de dados para extração automática de informações (XU et al., 2018). Neste sentido,
diversas abordagens tem sido consideradas, entre elas, o uso de inteligência artificial
(TEIXEIRA, 2019), redes neurais artificiais (FLECK et al., 2016) e visão computacional
(BACKES et al., 2019). Dentre as técnicas de IA destacam-se o aprendizado de máquina, com
16

as Redes Neurais Artificiais (LEMLEY et al.,2017). Estas técnicas são adequadas e empregadas
nestas situações pois com o aprendizado auxiliam diretamente nas tomadas de decisões. Neste
sentido, da mesmo forma que os seres humanos quanto mais se alimenta a IA, melhor será sua
resposta e seu desempenho (DUAN et at., 2019).
Por exemplo, Sun et al. (2019), apresentam o emprego de uma técnica de aprendizagem
de máquina na detecção de objetos em sistemas embarcados, com uso de redes neurais
convolucionais. Para Kinaneva et al. (2019) a aplicação da inteligência artificial e visão
computacional está voltada ao reconhecimento e detecção de fumaça ou fogo, com base nas
imagens estáticas ou imagens capturadas por um VANT. Já Weber (2019) demonstra técnicas
de visão computacional aplicadas na pecuária, onde com auxílio de um VANT realiza a
contagem e identificação de animais. Outros estudos enfocam o uso de tecnologias visuais e
técnicas de aprendizado profundo, um ramo do aprendizado de máquina que tem suas raízes na
matemática, ciência da computação e na neurociência. Carletti et al. (2020) utiliza o
aprendizado profundo na identificação e análises de rostos e Zeyu e Guozhu (2019) na tomada
de decisões durante a inspeção de grandes obras.
Com estas tecnologias cada vez mais presentes, cresce a necessidade de processar um
grande volume de dados no menor tempo possível. Soluções envolvendo técnicas que buscam
a melhoria no desempenho computacional, destacando-se as técnicas de processamento
paralelo, vêm ganhando um grande destaque nesse cenário (JEON et al 2018).
Esta dissertação explora o processamento paralelo sendo aplicado diretamente na
linguagem de programação onde utiliza-se o modelo de programação paralela com
compartilhamento de memória e também explora outros fatores dentro do ambiente
computacional como GPU, meio de armazenamento, técnicas de compilação entre outros
elementos que possam contribuir com a aceleração de desempenho da aplicação.
Para abordar este problema, neste trabalho são considerados alguns estudos de casos onde
são apresentados os resultados de diferentes modelos de processamento visando alcançar o
menor tempo possível no tratamento de imagem em tempo real durante uma navegação
autônoma em um VANT.

1.1 Problema de Pesquisa

O emprego da computação de alto desempenho ou HPC (High performance computing)


geralmente está associado ao uso de computadores de maior porte ou á interconexão de vários
computadores com o objetivo de somar o potencial computacional. As técnicas indicadas para
17

explorar este poder computacional sempre estiveram voltadas ao uso do processamento paralelo
e em técnicas de programação para explorarem cada vez mais os diversos processadores
disponíveis.
De acordo com Edwards (2019) no mundo atual, a computação de alto desempenho está
emergindo como a plataforma ideal para quem buscam obter conhecimentos profundos sobre
áreas tão diversas quanto genômica, química computacional, modelagem de riscos financeiros
e imagens sísmicas. Inicialmente adotada por pesquisadores que precisavam realizar cálculos
matemáticos complexos, a HPC agora está chamando a atenção de um número maior de
instituições, abrangendo uma variedade de aplicações.
Ampliando os campos da computação de alto desempenho o problema abordado nesta
pesquisa considera-se o mesmo conceito de HPC para ambientes reduzidos, onde neste trabalho
são abordados os sistemas embarcados em VANT e principalmente quando estão em navegação
autônoma. Além disso, é necessário processar todos os dados coletados em tempo de voo. Nos
sistemas embarcados reduzidos e, para processamento de tempo real, geralmente encontra-se
uma série de restrições tais como: espaço, energia, autonomia, temperatura. Respeitando as
dimensões disponíveis, o computador a ser embarcado também terá suas restrições como
limitação de espaço para armazenamento, pouca memória e um poder de processamento bem
abaixo dos encontrados nos computadores de maior dimensão.
Face a este cenário e, com restrições temporais a serem cumpridas o processamento dos
dados coletados não pode estar restrito ao uso convencional do computador embarcado.

1.2 Objetivo

Esta dissertação tem por objetivo apresentar uma metodologia para encontrar e explorar
fatores de aceleração de desempenho em ambientes computacionais reduzidos. Desta forma,
determinar o cenário computacional dentro de um sistema embarcado preparado para
processamento de imagens em tempo real e além disso encontrar fatores que possam contribuir
com o desempenho final da aplicação tem relação direta com esta proposta.

Para o cumprimento deste objetivo geral, propõe-se os seguintes objetivos específicos:


a) Empregar técnicas de visão computacional, dado que o contexto explora o
processamento de imagem em sistemas embarcados;
b) Estudar sobre as diferentes técnicas e processamento paralelo e programação
híbrida que são fundamentais quando o foco está na aceleração de desempenho;
18

c) Estudar sobre as características dos sensores de imageamento e o modelo de


dados que eles proporcionam é de vital importância para a definição do
processamento adequado;
d) Trabalhar com plataforma de softwares abertos (open source) ou de domínio
público, facilitando assim a portabilidade dos códigos voltados ao
processamento de imagens.
e) Realizar testes e aplicar em estudos de casos com dados reais coletados e
processados em tempo de voo, para validar o estudo apresentado;
f) Propor a medição do tempo de processamento conforme o fator de aceleração
utilizado, para a análise adequada do ganho de desempenho.

1.3 Motivação

Muitas pesquisas apontam o emprego de técnicas de processamento de imagens,


inteligência artificial e visão computacional, para aplicação na navegação aérea autônoma
(BRAGA, 2018). O emprego destas técnicas têm-se mostrado eficientes para estimar a posição
do VANT com algum tipo de processamento local (SILVA FILHO, 2016; ROSS, 2019).
Entretanto ainda existem lacunas pouco exploradas que busquem a melhoria do desempenho
computacional em ambientes embarcados que necessitam de processamento de dados em tempo
real (NAGATA, 2018).
De modo geral, os VANTs, principalmente os de baixo custo e com limitações físicas,
fazem uso de sistemas computacionais embarcados com baixa capacidade de armazenamento e
processamento (MERA-ROMO et al., 2019).
Mesmo ciente das restrições dos computadores embarcados o desafio está em explorar
novos elementos, dentro desde mesmo ambiente, que venham a contribuir para ampliar e
acelerar o desempenho computacional. Isso pode ser de vital importância considerando uma
tomada de decisão em uma operação aérea autônoma.
Como continuidade das pesquisas realizadas em estudos prévios por Braga, (2018),
sugere-se o estudo de técnicas de paralelismo a serem implementadas no algoritmo de registro
automático de imagens proposto pelo autor, com o objetivo de acelerar o desempenho da
aplicação.
19

1.4 Contribuição

As principais contribuições presentes nesta dissertação, para o problema da aceleração de


desempenho em sistemas embarcados com processamento de imagem em tempo real são:

Apresentar proposta de aceleração de desempenho para Single Board Computer em


sistemas embarcados;
Mostrar que é possível obter uma computação com alto desempenho mesmo estando
em um sistema computacional reduzido;
Apresentar uma metodologia a ser seguida em aplicações que buscam aceleração de
desempenho, quando se trabalha com sistemas computacionais reduzidos.
Propor a metodologia para auxiliar no processo de manutenção e documentação de
sistemas computacionais embarcados em VANT.

A proposta aqui apresentada também poderá ser aplicada em operações aéreas que utilizem
um modelo de sistema embarcado para processamento de dados em tempo de voo.

1.5 Trabalhos Relacionados

Braga (2018) propõe o desenvolvimento de um sistema de visão computacional, que utiliza


imagens capturadas e processadas em tempo de voo, quando um VANT sobrevoa regiões
urbanas sem a participação de pilotos em terra e também sem utilizar GNSS para sua
localização. No estudo, o autor apresenta um método para estimar posição de um VANT por
registro automático de imagens em um método para localização de VANT por odometria visual.
Além disso, apresenta técnicas baseadas em RNA para extração de bordas de imagens.

Silva (2016) propõe um método capaz de estimar a posição geográfica de um VANT


durante um voo noturno com uso de imagens aéreas no infravermelho, capturadas em voo, e
buscando esta mesma região em uma imagem de satélite georreferenciada. Neste processo a
autora utiliza informações de bordas extraídas de RNA e também faz uso do cálculo do
coeficiente de correlação para fazer a estimação da posição da aeronave .

Curvello (2016) apresenta uma proposta para aceleração de desempenho de uma


plataforma embarcada, onde utilizou visão computacional e um fluxo de imagens capturas de
20

uma webcam. O trabalho desenvolvido utilizou uma GPU embarcada para acelerar a execução
de algoritmos de processamento de imagens aplicando rotinas com OpenGL. Os testes de ganho
de desempenho comparados a uma CPU embarcada foram através do algoritmo Filtro de Sobel.

Sulzbach (2014) analisa a implementação de API (Application Programming Interface)


voltada ao processamento paralelo em aplicações híbridas, verificando se as mesmas refletem
positivamente no desempenho e produtividade da aplicação, mas também procura identificar as
principais limitações no desenvolvimento de aplicações híbridas. Neste trabalho, o autor
analisa a programação paralela híbrida para CPU e GPU e faz uma avaliação das APIs
OpenACC, OpenMP e CUDA que são métodos recomendados para acelerar aplicativos de
maneira incremental. Geralmente estas interfaces de programação utilizam diretivas de
compilação e estão associadas ao modelo de memória utilizado pelo computador.
Os trabalhos apresentados nesta seção contribuíram no desenvolvimento desta
dissertação. O algoritmo utilizado nos estudos de casos foi apresentado e desenvolvido por
Braga (2018). A contribuição atribuída a Silva (2016) vem da possibilidade de utilizar imagens
aéreas no infravermelho, capturadas em voo noturno. Curvelo (2016) apresenta vantagens na
utilização de GPU em sistemas embarcados e o trabalho de Sulzbach (2014) contribuiu com a
proposta de se obter produtividade utilizando programação híbrida.

1.6 Estrutura da Dissertação

Esta dissertação está estruturada da seguinte forma:

No Capítulo 2, a Fundamentação Teórica, apresenta-se os principais conceitos


referentes à plataforma adotada para o desenvolvimento deste trabalho. Entre os
principais conceitos estão o processamento de imagem em tempo real, a navegação
autônoma, a visão computacional, os processadores ARM e a computação paralela.

O Capítulo 3 trata da Metodologia desenvolvida nesta dissertação e apresenta os


elementos fundamentais para o processo de aceleração de desempenho em ambiente
embarcado, com destaque para visualização do cenário computacional e da extração dos
fatores de aceleração.
21

No Capítulo 4 são detalhados os experimentos e estudos de casos realizados, assim


como, a análise dos resultados com base nas métricas adotadas, demonstrando assim os
ganhos de desempenho obtidos.

No Capítulo 5 apresenta-se uma conclusão deste trabalho e algumas propostas para


trabalhos futuros.
22

2 Fundamentação Teórica

Sistemas embarcados estão transformando os nossos hábitos diários, começando pelos


nossos celulares, smartphones, relógios computadorizados, oferta de novos serviços
envolvendo transporte terrestre até o uso de VANTs (SOUZA, 2020). Diferentes aplicações e
novos desenvolvimentos surgem a cada momento contribuindo com diversos setores da nossa
sociedade (KWON et al., 2019).
Este Capítulo introduz as áreas que compõem o cenário e o foco desta pesquisa onde
analisa-se o desempenho computacional dentro de uma missão de processamento de imagens
em tempo real a partir de VANTs.

2.1 . Sistemas de navegação: INS e GPS

Os sistemas de navegação são utilizados para se obter determinações automáticas da


posição e velocidade de um objeto. Um sistema de navegação pode ser dependente de
infraestrutura externa ou o componente extra para determinar posição e velocidade (GROVES,
2008; MORI, 2013).
De acordo com o Departamento de Controle do Espaço Aéreo Brasileiro (DECEA), o Sistema de
Navegação Inercial (INS) ou sistema autônomo de navegação presente em certas aeronaves,
permite obter e determinar a posição em relação ao ponto de partida em latitude e longitude,
por meio do processamento de dados fornecidos por giroscópios e acelerômetros. O uso mais
corrente do INS é de complementação do Sistema Global de Posicionamento (GPS) que segundo o
DECEA, consiste de um sistema composto por satélites em órbita média, de estações de controle
e de monitoramento em terra e de receptores do usuário, que fornece continuamente sinais para
localização geográfica e informação de horário de alta precisão. Em desenvolvimento a partir
dos anos 60 do século XX e de propriedade do Departamento de Defesa dos EUA, foi oferecido
em 1994 para uso da aviação civil, principalmente para fins de navegação aérea, sem custos
diretos.
De acordo com os estudos de Bai et al. (2017), o GPS é um sistema bastante preciso,
porém pode receber interferência em seu sinal, ou ficar inoperante num dado intervalo de tempo
até que seja possível receber, de um número mínimo de satélites, os sinais necessários para o
cálculo de sua posição.
23

Em função do GPS não trabalhar em todos os ambientes, ou trabalhar de forma


inadequada, Marques Filho (2011) propõe uma solução para prover a falta de informações na
porção do tempo onde o GPS não opera, explorando a integração de sensores inerciais com o
GPS. Sensores inerciais de baixo custo têm a desvantagem de apresentar um grande e contínuo
acúmulo de erros, acarretando baixo desempenho no sistema. Para Roos (2018), técnicas de
visão computacional, podem ser utilizadas como alternativa ou complemento aos sistemas de
navegação com uso de GPS e INS.

2.2 Veículo Aéreo Não Tripulado - VANT

A definição para VANT, segundo o Departamento de Defesa dos Estados Unidos da


América, é: toda aeronave motorizada, que não possui piloto a bordo, que pode ser remotamente
pilotada ou voar autonomamente, para fins não-recreativos, recuperável após o cumprimento
da missão para o qual foi projetada e que transporta uma carga, que pode ser letal ou não. São
excluídos da categoria de VANT os artefatos mais leves que o ar, como pipas, balões e
dirigíveis, e os mísseis rádio-controlados. Esta é a mesma definição para VANT aplicada no
Brasil (ANAC, 2017; Braga, 2018).
O VANT também chamado de ARP ou Drone (zangão, em português), é qualquer tipo
de aeronave que não necessita de piloto a bordo para ser guiada, sendo controlada á distância
por meios eletrônicos e computacionais, supervisionada e controlada por humanos, ou sem a
sua intervenção. Neste último caso, a navegação será realizada de forma autônoma
(SILVA,2016)
Roos (2018) apresenta que a denominação “drone” também tem sido aplicada para VANTs de
menor porte, dotados de maior robotização e maior autonomia. Eles costumam ser associados,
na maior parte das vezes, a fins recreativos. Por outro lado, Aeronave Remotamente Pilotada
(ARP) se refere aos VANTs com navegação controlada remotamente por um piloto.
Inicialmente, os VANTs possuíam finalidades exclusivamente militares. Por volta de
1990, a crescente miniaturização de componentes ópticos e eletrônicos permitiu um maior
desenvolvimento e aperfeiçoamento dos veículos não tripulados.
De acordo com Velho (2019) o emprego de VANTs apresenta um crescimento, com
diversas aplicações, tais como: monitoramento ecológico, agricultura de precisão, operações de
busca e resgate e em projetos de engenharia.
24

Quebrajo et al. (2018) utilizam um VANT para analisar a influência da variabilidade do


solo no cultivo de beterraba partir de imagens térmicas capturadas em voo. Eles propõem
índices de estresse hıd́ rico, calculados a partir das imagens térmicas, para complementar a
informação de umidade do solo e, assim, melhor orientar a escolha de estratégias de irrigação.
Informações com respeito à temperatura demonstraram ser um bom estimador do teor de açúcar
da beterraba sacarina, plantada em solos variados.
Li et al. (2018) propõem imageamento termal e visível, realizado com o uso de VANTs,
na detecção de focos de incêndio em mina de carvão na China. As imagens RGBs formam um
mosaico, que é segmentado e classificado em níveis de água, vegetação, construção e outros.
Atualmente estamos presenciando a multiplicação dos VANTs com aplicações em
diferentes setores da sociedade. Seu uso no monitoramento e registro de eventos em tempo real,
tem se mostrado de baixa custo e com precisão. Sua capacidade na prestação de serviços está
diretamente associada à sua configuração e também à autonomia de voo.

2.3 Navegação Autônoma

A navegação autônoma é estudada e desenvolvida em veículos aquáticos, terrestres e


aéreos. Em veículos aéreos particularmente, a navegação autônoma tem sido realizada por
diferentes técnicas, com uso de sistemas inerciais associados ao GPS e mais recentemente com
uso de imagens (SILVA et al., 2015).
A busca por tecnologias que proporcionem aos VANTs uma navegação independente,
autônoma e segura tem sido o grande desafio de vários grupos de pesquisas. Um dos desafios é
encontrar técnicas que venham substituir ou corrigir os sensores responsáveis em fornecer
medidas de posicionamento (INS e GNSS)(BALAMURUGAN et al., 2016). Tais sensores
acumulam erros, principalmente os INS de baixo custo utilizados em VANTs de pequeno porte.
Este acúmulo de erro ocorre devido ao uso prolongado o que impede que seja utilizado para a
navegação sem a associação com outro sensor, como o GPS, para sua correção (BRAGA, 2018).
Neste sentido, técnicas que utilizam de processamento de imagens e visão computacional para
extrair informações das imagens obtidas por câmeras embarcadas na aeronave podem ser
consideradas como alternativa ou complemento ao INS/GNSS para estimar a posição do drone
na falta do GNSS (KUROSWISKI et al., 2018).
Atualmente, um dos temas de pesquisas na área de VANT é a busca por um sistema que
permita sua navegação autônoma em caso de falha do sinal do GNSS e em ambiente onde não
seja possível o imageamento com câmera, que captura apenas a energia eletromagnética no
25

comprimento de onda visível, como por exemplo, ambientes com baixa ou sem luminosidade
ou em regiões cobertas por água (SILVA, 2016). Embora muito tenha sido estudado, ainda
existem questões em aberto sobre como desenvolver um sistema de visão computacional para
a navegação de VANT nas condições anteriormente citadas. Neste sentido, destaca-se a
importância do desenvolvimento da metodologia proposta por Braga (2018), que permite a
navegação de VANT em caso de falha do sinal do GNSS, em ambiente urbano durante o dia,
com baixa ou sem luminosidade e sobre regiões cobertas por água, para ser embarcada em uma
aeronave.
Utilizar técnicas processamento de alto desempenho computacional incorporado neste
cenário, é de grande importância para o sucesso da missão. O sucesso de uma navegação aérea
autônoma depende de vários fatores, entre eles, a localização do veículo aéreo autônomo em
um espaço geográfico (HARTLEY et al., 2018). De forma a atingir esse objetivo, existem
técnicas que combinam o sinal do sistema de navegação por satélites, com o do sistema de
navegação inercial (RODRIGUES, 2016). Porém, essas técnicas dependem de dados externos
não controlados, que podem não estar disponíveis durante a operação do veículo. Quando o
sistema de navegação por satélite não está disponível, a visão computacional é uma alternativa
para a navegação (MELO et al., 2016).

2.4 Navegação por Visão Computacional

A visão computacional é o processo de modelagem e replicação da visão humana usando


software e hardware. Trata-se de uma área que estuda como reconstruir, e compreender uma
cena em três dimensões a partir de suas imagens com duas dimensões em termos das
propriedades da estrutura presente na cena. O processo de visão computacional envolve, desde
reconhecimento de objetos e caracteres até análise de texto e sentimentos. O reconhecimento
de imagens em si, que inclui a análise de pixel e a utilização de padrões de imagens, é parte
integrante do processo de visão computacional (Data Science Academy, 2018).
Sensores visuais e sistemas de computação embarcada têm sido frequentemente
integrados a VANTs, possibilitando o processamento e o fornecimento de imagens de alta
qualidade em tempo real. O desenvolvimento do imageamento SAR, RGB, multiespectral,
hiperespectral, LIDAR e infravermelho termal tem permitido a expansão da navegação
autônoma baseada em visão computacional, a fim de suprir as falhas ou a escassez do sinal
GNSS.
26

O uso de um sistema de visão computacional para a navegação de VANT oferece


algumas vantagens, uma vez que não depende de sinal externo e a tecnologia envolvida com os
algoritmos de processamento de imagens e visão computacional faz uso de componentes e
sensores embarcados no VANT, que custam bem menos do que o desenvolvimento e
manutenção de um GNSS (RIZK et al, 2020). Silva (2016) utiliza a visão computacional
aplicada à estimação de posição por meio de Reconhecimento de Marcos e aplica algoritmos
tradicionais de detecção de caracterıś ticas e algoritmos descritores em tempo real.
Em Kuroswiski (2017) e Roos (2018) a visão computacional é aplicada por meio da
Odometria Visual. Esta técnica utiliza as diferenças visuais e as informações do sistema inercial
para analisar a evolução entre imagens consecutivas de voo e, assim, estimar a posição do
VANT. Comparando imagens subsequentes, e tendo conhecimento acerca das caracterıś ticas
de funcionamento do sensor imageador, dos dados da geometria de imageamento, da altitude e
da atitude, é possıv́ el identificar pontos correspondentes nas imagens e, desse modo, fazer uma
estimação do deslocamento do veıć ulo e da posição atual.
Já o trabalho desenvolvido por Braga (2018) apresenta uma abordagem para estimar o
posicionamento de um VANT, quando este sobrevoa regiões urbanas (em qualquer condição
de luminosidade) e cobertas por água, sem a participação de um piloto em uma estação terrestre
e que não utilize GNSS para a sua localização. Nesta abordagem Braga (2018) utiliza a fusão
de dados de duas técnicas de visão computacional, odometria visual e registro automático de
imagens, por meio de um filtro de partículas adaptativo (FPA) para estimar a posição da
aeronave, com o objetivo de obter melhores resultados de estimação do que os que podem ser
alcançados utilizando uma das técnicas isoladamente.
Resumindo, a aplicação da visão computacional pode seguir quatro etapas fundamentais
que são: aquisição de imagem, tratamento da imagem, extração de informações relevantes e
apoio na tomada de decisão (CHOI et al, 2016).

2.5 Processamento de imagem em tempo real

Segundo Kay (2017), processamento de tempo real é aquele que garante uma
computação correta no tempo determinado, ou seja, é necessário que o sistema possua
determinismo para que o dado seja entregue no tempo correto. Já para Medeiros (2020) um
Sistema de Tempo Real (STR) é um sistema computacional que deve reagir a estímulos
oriundos do seu ambiente em prazos específicos.
O projeto PITER (Processamento de Imagens em Tempo Real), desenvolvido no IEAv
(Instituto de Estudos Avançados), apresenta em suas pesquisas o conceito de navegação
27

autônoma por imagens para VANT’s. Neste projeto, imagens da região sobrevoada são
captadas, processadas e comparadas em tempo real com um conjunto de imagens
georreferenciadas, visando a estimação da posição do VANT.
Goltz (2011) utilizou redes neurais artificiais e técnicas de visão computacional para
estimação da posição de um VANT. No entanto, não explorou o uso de tecnologias de alto
desempenho computacional em sistemas embarcados com processamento em tempo real, o que
vem a ser o foco principal deste trabalho.
Silva (2016) propõe um método capaz de estimar a posição geográfica de um
VANT durante um voo noturno. São utilizados técnicas de casamento de padrões entre uma
imagem na faixa do visível e imagens termais obtidas por VANT.
Curvello (2016) apresenta uma proposta para aceleração de desempenho de uma
plataforma embarcada, onde utilizou visão computacional e um fluxo de imagens capturadas
de uma webcam.
Braga (2018) propõe o desenvolvimento de um sistema de visão computacional, que
utiliza imagens capturadas e processadas em tempo de voo para determinar a localização de um
VANT. São utilizadas imagens na faixa do visível e Lidar. A implementação também ocorre
em FPGA.
No trabalho de Guerra, et. al. (2017) foi feita uma avaliação de diferentes plataformas
de computação de alto desempenho para imagens hiperespectrais.
O processamento de imagens com uso de técnicas de inteligência artificial tem sido feito
em diferentes hardwares: Desktops, Workstation, Clusters, GPGPU, FPGA e também em
computadores de maior porte. Este mesmo modelo de processamento vem sendo transferido
para computadores de menor porte como os SBC. Este tipo de computador foi projetado para
ser de baixo custo e baixo consumo de energia. Outras características do SBC está em operar
com pouca memória, armazenamento e processamento reduzido, e em função de suas
dimensões também reduzidas são indicados para atividades em sistemas embarcados. Acelerar
o desempenho de uma aplicação pode ser vital para uma operação embarcada e principalmente
se estiver ocorrendo em voo autônomo e com restrição temporal. A seção 2.11 apresenta um
detalhamento maior sobre as Single Board Computer.
28

2.6 Sistemas Imageadores


Em Oliveira (2017) descreve-se um sistema sensor como sendo o responsável por
converter e armazenar valores da energia provenientes dos objetos. A Figura 01 ilustra os
elementos de um sistema sensor que é composto por uma fonte de energia incidente, um sistema
coletor que irá receber a energia através de uma lente, com a energia capturada seleciona a faixa
do espectro e processa o sinal registrado disponibilizando a imagem ao usuário ou para ser
encaminhada a um processo computacional (INPE, 2020).

Sistema Sensor

Fonte de Coletor
Detetor Processador Produto
Energia Receptor
FIGURA 01 : Elementos de um sistema sensor imageador
(INPE, 2006)

Para Meneses (2012) a definição de sensores imageadores vem como instrumentos eletro-
óptico capazes de obter múltiplas imagens simultâneas da superfície terrestre, desde o
comprimento de onda da luz visível azul, até a região termal. Os sensores ópticos e termais
operam, praticamente, da mesma forma. O mais comum é ter os dois sensores operando
simultaneamente na mesma plataforma, apenas em módulos instrumentais distintos. Os
sensores imageadores são largamente utilizados, porque não necessitam de refrigeração,
podendo funcionar em condições ambiente (ROGALSKI, 2010). Os sistemas imageadores
podem ser classificados em três tipos: imageadores de quadro; varredores mecânicos, e matriz
linear. No sistema de captura por quadros, a imagem é projetada sobre um arranjo de detectores
ou sobre um tubo fotossensível com um sistema de varredura por feixe de elétrons, obtendo-se
uma grande imagem instantânea de uma área da superfície. a qual foi projetada. A captação
das imagens através do sistema de varredura mecânica ocorre a partir um espelho plano que
oscila perpendicularmente ao deslocamento da plataforma. Neste movimento oscilatório o
imageamento do terreno é feito pixel a pixel ao longo de uma linha que pode ter dezenas de
quilômetros. Já o imageamento linear utiliza um sistema óptico no qual a cena é imageada em
sua totalidade através de um arranjo linear de detectores (NOVO, 2010).
29

FIGURA 02: Tipo de sensores imageadores


(JENSEN, 2009)

De acordo com Novo (2010) e Oliveira (2017), entre estes modelos de sensores existem
algumas vantagens e desvantagens que estão elencadas na Tabela 01.

TABELA 01: Vantagens e desvantagens dos diferentes tipos de sensores


Quadro Mecânico Linear
Boa fidelidade Detetores simples. Maior fidelidade ao
Vantagens geométrica de Varreduras mais longo da linha de
imageamento no amplas. varredura.
formato digital
Menor fidelidade Necessidade de um
Desvantagens Dificuldade de geométrica grande campo de
produz filtros visada

2.7 Sistema imageador termal

Os imageadores termais são capazes de coletar e detectar a radiação infravermelho


termal emitida pelos alvos e gerar uma imagem correspondente. Utilizam o sistema de varredura
de linha IRLS (do inglês, "Infrared Linescanner" ) e os chamados FLIR (do inglês, "Forward
Looking Infrared" ) que utilizam visada frontal. Estes tipos de sensores podem ser utilizados
em diferentes aplicações, principalmente em aplicações militares em reconhecimento aéreo.
São empregados, em particular, em missões nas quais a aeronave faz somente uma passagem
sobre o alvo (LUCCA E BASTOS, 2001).
A agricultura de precisão utiliza ferramentas e tecnologias para identificar a
variabilidade do solo e das culturas no campo para melhorar as práticas agrícolas e otimizar os
insumos agrícolas. Sensores óticos de baixo custo, com sistemas aéreos não tripulados vem
30

disponibilizando imagens com altas resoluções espaciais e temporais, o que aumentou as


oportunidades para entender a variabilidade do campo, condições de cultivo e solo úteis
auxiliando assim várias tomadas de decisões (KHANAL et al.,2017).
Outras áreas e aplicações também fazem uso de sistemas imageadores termais como,
reconhecimento facial (DING et al., 2018), reconhecimento de marcos (ROSS, 2018) e no
auxílio à navegação autônoma de VANT (CAMPOS VELHO, 2019).

2.8 Registro automático de imagem

O desenvolvimento de um sistema de visão computacional, que utiliza imagens


capturadas e processadas em tempo de voo para determinar a localização do VANT, pode
substituir a informação do GNSS. Neste contexto, os estudos apresentados em Braga (2018)
apresentam uma metodologia que estima a posição geográfica de um VANT quando este
sobrevoa regiões cobertas por água e regiões com baixa ou sem luminosidade utilizando
imagens provenientes de um sensor ativo denominado Light Detection And Ranging (LIDAR).
A metodologia proposta por Braga (2018) utiliza técnicas de fusão de dados, por um
Filtro de Partículas, e duas técnicas de visão computacional, odometria visual e registro
automático de imagens, para estimar a posição da aeronave. O sistema de estimação da posição
requer que o processamento seja feito em sistemas embarcados e em tempo de voo, por este
motivo, a metodologia proposta é desenvolvida em computadores portáteis e de baixo consumo
e que permitam uma computação massiva.
Esta técnica tem sido utilizada em diferentes aplicações tais como tomografia
computadorizada, ressonância magnética, detecção de mudanças do solo ente outras áreas. O
registro de imagens é o processo de sobreposição de duas imagens de uma mesma cena, porém,
capturadas em instantes de tempo diferentes ou sob um diferente ponto de vista, utilizando
diferentes sensores (PEDRINI; SCHARTZ, 2008).
Existem alguns métodos para se realizar a estimação da posição de um VANT por
meio da correlação entre duas imagens. O cálculo da correlação por soma da diferença
quadrática (HISHAM et al., 2015); cálculo da correlação cruzada normalizada (HISHAM et
al., 2015) e o cálculo da correlação cruzada (CONTE E DOHERTY, 2008). Braga (2018)
desenvolveu seus trabalhos utilizando o método de correlação cruzada.
A correlação cruzada, entre as imagens com as bordas detectadas, é aplicada para a
obtenção da estimação da posição do VANT. A correlação cruzada é calculada entre
31

a imagem aérea, capturada pelo VANT, e a imagem georreferenciada da região sobrevoada.


A vantagem da técnica de correlação entre imagens é de poder ser aplicada em áreas onde
não há pontos de referência no solo sendo que imagens com pequenos detalhes podem
influenciar o resultado final da similaridade (CONTE E DOHERTY, 2008).
Nos trabalhos realizados por Conte e Doherty (2008), Goltz et al. (2011), Silva et al. (2015)
e Braga (2018) são implementados métodos baseados na correlação entre imagens para
estimação da posição geográfica do VANT e os autores denominam esta técnica como registro
automático de imagens.
Para processar o modelo de tratamento de imagem escolhido o algoritmo tem implementado
uma Rede Neural Artificial aplicada no processamento de extração de bordas e também técnicas
de visão computacional utilizando a biblioteca OpenCV (do inglês, Open Source Computer
Vision). Trata-se de uma biblioteca de código aberto que contribui na eficiência e desempenho
computacional (GOULART et al., 2018). De acordo com Braga (2018) o algoritmo se
desenvolve da seguinte forma: o sensor acoplado ao VANT captura a imagem em tempo de
voo. Em seguida, ocorre o processo da conversão da imagem para tons de cinza, porque as
demais fases do algoritmo trabalham com imagens em tons de cinza. Na fase seguinte a imagem
passa pela etapa de filtragem, que é de extrema necessidade pois elimina uma série de ruídos
presentes na imagem capturada pelo sensor imageador (HUGHES et al., 2013). Para diminuir
o erro no processo de registro automático, a imagem aérea passa também por ajuste de escala e
rotação em relação à imagem georreferenciada. Finalizando o algoritmo de estimação da
posição do VANT é calculado o índice de correlação entre a área de correlação e a imagem
aérea capturada pelo sensor imageador em uso.
Na Figura 03 é apresentado um diagrama de blocos onde é possível visualizar as etapas
fundamentais deste processo, iniciando na captura da imagem pelo sensor até a obtenção da
posição do VANT.
32

Recebe imagem
Imagem
aérea do sensor
Georreferênciada
(imagem aérea)

Converter imagem Converter Imagem


para tons de cinza para tons de cinza

Imagem aérea
monocromática Imagem
Georreferênciada
Monocromática

Filtragem da imagem

Filtragem da imagem

Ajuste de escala da imagem

Seleção da Àrea
de Correlação

Ajuste de rotação da imagem

Extração de Bordas da
Área de Correlação

Extração de Borda da imagem

Imagem da Àrea
de Correlação
Imagem Aérea
(Imagem Borda)
(Imagem Borda)

Correlação Cruzada

Obtenção da Posição do Vant

FIGURA 03 : Algoritmo de registro automático de imagem


Braga (2018)

Uma vez apresentada as áreas que integram o cenário desta pesquisa, esta seção
apresenta os fundamentos dos principais elementos que foram trabalhados ao longo do
desenvolvimento desta pesquisa. Estes elementos compõem a estrutura básica de um sistema
embarcado preparado para processamento de imagem em tempo real e também sustentam os
métodos propostos nesta dissertação.

2.9 Processamento de alto desempenho

O emprego de tecnologias de alto desempenho computacional para processamento de


dados de imageamento mostra-se como o estado da arte para extração automática de
informações a partir de grandes quantidades de imagens no menor tempo possível (GULO,
2015). De acordo com Cresson et. al, (2018) a quantidade de imagens de sensoriamento remoto
está crescendo constantemente devido ao aumento da quantidade de satélites com altíssima
resolução ou tempo de revisitação muito curto. Neste contexto, o uso de técnicas de
33

computação/processamento de alto desempenho está se tornando uma prática comum para lidar
com a complexidade computacional na extração de informações de imagens da Terra.
O Processamento de Alto Desempenho (PAD) é a utilização, de forma maximizada, dos
componentes e tecnologias de uma área da computação que emprega equipamentos e
conhecimento na vanguarda do poder computacional. Seu objetivo é de reduzir o tempo de
processamento de algum programa/aplicação ou fazê-lo processar um volume maior de
informações. É pertinente à área de PAD termos como “paralelismo”, “aceleração”,
“otimização”, “recodificação” e vários outros. No contexto de PAD os componentes básicos da
computação – equipamentos e programas – são diferenciados. Os equipamentos
computacionais, algumas vezes denominados supercomputadores, são compostos por
muitas unidades de processamento (CPU, do inglês “Central Processing Unit”), aceleradores
de cálculos (como uma GPU, do inglês, “Graphics Processing Unit”), redes de comunicação
de altíssima velocidade e enorme capacidade de armazenamento e memória. (EXAFLOP,
2019).
Ponce, et al., (2018) apresentam uma tendência atual entre o processamento de alto
desempenho e a manipulação de dados massivos (Big Data). No entanto, pouco tem-se
analisado e explorado o uso de tecnologias aplicadas em computação de alto desempenho em
sistemas embarcados onde ocorre uma restrição de processamento, limitação de espaço,
problemas com aquecimento, problemas de comunicação com a estação solo, interferências
externas como spoofing, jamming ou até mesmo interferências do clima (LORENZON, 2014).

2.10 Processadores ARM

Conforme apresentado em Garcia (2017), há um crescente uso de tecnologia ARM


(Acorn RISC Machine). Com 95 bilhões de chips já produzidos, os processadores ARM atingem
vários seguimentos computacionais. A tecnologia ARM desenvolvida pela empresa Acorn
Digital Computers, está presente em 80% nos aparelhos celulares atualmente utilizados por
toda a população mundial.
É importante ressaltar a arquitetura RISC (do inglês, Reduced Instruction Set
Computer) que tem influência direta no desenvolvimento do projeto ARM. Estudos sobre a
tecnologia RISC tem início nos anos 70 na IBM já com o objetivo de atuar com um conjunto
simplificado e reduzido de instruções e seu primeiro chip foi apresentado em 1980. De acordo
com Bez et al. (2015) o processador ARM sempre apresentou baixo custo, alta
34

velocidade, tamanho pequeno e baixo consumo de energia. Com estas prerrogativas, facilitou e
impulsionou as aplicações do processador ARM em sistemas embarcados.
Outra característica relevante está na compatibilidade entre os diferentes modelos de
processadores ARM. O conjunto reduzido de instruções aplicado em toda família de
processadores facilita esta compatibilidade. Os códigos gerados ficam mais compactos e
exploram ao máximo os recursos disponíveis. Aplicações em tempo real, sistemas críticos,
sistemas embarcados e controle industrial tem sido o segmento de aplicação dos processadores
ARM.
Curvello (2016), utiliza uma arquitetura ARM, presente em inúmeros dispositivos
móveis e também implementável em sistemas embarcados. Esta arquitetura segue o
padrão RISC com um número menor de instruções, resultando assim em custos menores de
desenvolvimento, menor dissipação de calor e consumo energético, fatores estes fundamentais
para serem considerados em sistemas embarcados.

2.11 Computador de Placa Única


Um Computador de Placa Única ou Single Board Computer (SBC) é um computador de
forma reduzida e pronto para uso. Pode ser considerado como uma solução genérica em
hardware e software que pode ser utilizada no desenvolvimento de sistemas embarcados.
Muitas vezes, o desenvolvimento de um protótipo é considerado difícil e caro devido aos custos
de projeto de hardware, design e desenvolvimento de software, bem como fabricação e
construção de hardware. O crescente barateamento e miniaturização do hardware na
computação levaram a aplicação do Computador de Placa Única ao desenvolvimento de
diferentes projetos e consequentemente os com custos reduzidos (MATTHEWS et al. 2016).
Um dos modelos mais populares dos chamados SBC é o Raspberry PI-3B que surgiu
em 2006 e foi criado por cientistas de computação da Universidade de Cambrigde. Estes
cientistas tinham como objetivo principal chegar a um equipamento de baixo custo para poder
equipar as escolas e assim estimular o ensino básico da ciência da computação. Sem ter esta
intenção, este grupo de cientistas abriram um novo mercado de computadores projetados em uma
única e pequena placa, como ilustra a Figura 04.
35

FIGURA 04 : Comparação das dimensões de um SBC

Outras soluções de hardware prontas para uso já existem, como a SBC Nvidia Jetson
que disponibiliza uma GPU com 128 núcleos e com 4 GB de memória RAM e a placa brasileira
Labrador, projetada pela Universidade de São Paulo, uma SBC de 64 bits que permite o
desenvolvimento de aplicações personalizadas, ilustradas nas Figuras 05 e 06, respectivamente.

FIGURA 05 : SBC Nvidia Jetson FIGURA 06 : SBC Labrador


(NVIDIA, 2020) (CANINOSLOUCOS, 2018)

Os diferentes computadores de placa única disponíveis no mercado já permitem o uso


do sistema operacional Linux, oferecem uma plataforma completa para o desenvolvimento de
produtos finais para diversas aplicações, como na área médica (HAFID et al, 2018), de
automação industrial (VIEIRA et al, 2020), aeroespacial (O´Noeil e RAMIREZ, 2018) e de
robótica (RAHMAN et al. 2009). Apesar de sua dimensão reduzida e trabalhar com baixo
consumo de energia vale observar que estes dispositivos são alimentados geralmente por
baterias. Portanto, estar ciente e ter indicadores do consumo de energia destes equipamentos é
36

de vital importância para os desenvolvedores de aplicação e também para futuros usuários


(ARDITO e TORCHIANO, 2018).
O uso de SBC também está presente e com grandes vantagens na área militar
(STRATTON et al, 2013). Estes computadores são extremamente úteis para acelerar a análise
de dados em tempo real, principalmente em atividades de comando, controle e inteligência
(Lorenzana-Gerardo, et al., 2018). Primeiro, suas dimensões e facilidades de programação os
tornam muito versáteis. O armazenamento em memória do tipo flash permite acesso rápido aos
dados sem a latência ou o consumo de energia do armazenamento em discos convencionais
(COX, et al., 2014). Por fim, seus processadores com tecnologia System-on-a-Chip (SoC)
permitem capacidades de armazenamento e processamento de dados que em alguns casos
superam os microcontroladores e os FPGAs (do inglês, Field Programmable Gate Arrays).
Com uma ampla variedade de portas de comunicação os SBC podem ser usados como
computadores autônomos ou acoplados em outros dispositivos para uma variedade de
aplicações (MATTHEWS, 2018).

2.12 Arquitetura CPU e GPU


De acordo com Tanembaum (1999) a Unidade Central de Processamento (CPU, do
inglês, Central Process Unit), está presente em todos os computadores digitais sendo o principal
componente. É a parte do computador responsável pela manipulação e transformação dos dados
ou informações. Sua arquitetura é composta de uma unidade de controle, responsável em buscar
as instruções na memória, decodifica-las e encaminha-las. Cabe as unidades de aritmética e
lógica (ALU) executar as instruções que lhes foram destinadas e as memórias atuam como apoio
a unidade de controle armazenando temporariamente os dados e instruções. Para melhor
entendimento sobre o funcionamento da CPU, o artigo de Lacerda (2004) propõe o estudo e
desenvolvimento de um projeto de uma CPU simples, que contém as características básicas de
um processador digital, permitindo assim o estudo do seu funcionamento completo.
Basicamente a Unidade de Processamento Gráfico (GPU, do inglês Graphics Processing Unit)
contêm os mesmos elementos que uma CPU, conforme ilustrado nas Figuras 07 e Figura 08. A
diferença está na disposição destes elementos e na quantidade de unidades de processamento
que é muito superior à de uma CPU.
37

UC
------------------ ALU ALU ALU ALU ALU ALU
CACHE
ALU ALU
UC
------------------ ALU ALU ALU ALU ALU ALU
CACHE
UNIDADE DE
CONTROLE UC
------------------ ALU ALU ALU ALU ALU ALU
CACHE
ALU ALU
UC
------------------ ALU ALU ALU ALU ALU ALU
CACHE

UC
------------------ ALU ALU ALU ALU ALU ALU
CACHE
MEMÓRIA CACHE
UC
------------------ ALU ALU ALU ALU ALU ALU
CACHE

MEMÓRIA DRAM MEMÓRIA DRAM

FIGURA 07 : Estrutura de uma CPU FIGURA 08: Estrutura de uma GPU

Na GPU suas atividades e instruções estão mais concentradas nas unidades de aritmética
e lógica (ALU, do inglês Arithmetic Logical Units), o que as tornam bem mais eficientes quando
se trata de processamento massivo. Já as CPUs reservam uma grande parte do seu tempo de
atividade à unidade de controle. Por esse motivo, a GPU está sendo amplamente utilizada não
apenas para computação gráfica, mas também para processamento paralelo maciço e com
aplicações que utilizam inteligência artificial (BAJI, 2018).
A maioria das aplicações podem se beneficiar ao utilizar as duas arquiteturas em
conjunto, mas as aplicações com poucas iterações e com modelo de processamento linear
podem ser executadas melhor pela CPU. Assim, é preciso avaliar qual unidade é mais adequada
para se processar parte do programa (CPU ou GPU), explorando assim a capacidade da
computação paralela heterogênea, combinado CPU e GPU (KIRK E HWU, 2011).

2.13 Computação Paralela

De acordo com Trobec et al. (2018) atualmente, todos os computadores são


essencialmente paralelos. Isso significa que em todos os computadores sempre existem
atividades que, de uma maneira ou de outra, são executadas em paralelo ou seja, ao mesmo
tempo. As atividades paralelas podem surgir e terminar independentemente umas das outras ou
podem ser criadas propositadamente para envolver a execução simultânea de várias operações
cuja interação acabará por levar ao resultado desejado. Grande parte das pesquisas que
envolvem a computação paralela estão direcionadas em reduzir atrasos e aumentar a velocidade
efetiva de execução dos programas. Como não é possível aumentar a frequência do processador
e das memórias indefinidamente, pelo menos não com a atual tecnologia, e o consequente
38

aumento do consumo de energia, aplicar as técnicas de computação paralela com velocidade


mais baixa do processador pode evitar estas implicações indesejáveis do aumento da frequência.
Para Philippe et al. (2011), a motivação para se utilizar técnicas de processamento
paralelo está diretamente relacionada à melhoria de desempenho, à redução do tempo de
execução da aplicação, à minimização da probabilidade de falhas, à utilização de uma
linguagem que expresse o paralelismo sem complexidades e ao aproveitamento máximo dos
recursos disponíveis.
O processamento paralelo, ao contrário do sequencial, é realizado pela execução
simultânea de instruções de programas que foram alocados em múltiplos processadores com o
simples objetivo de rodar um programa em menos tempo ou conseguir resolver problemas mais
complexos e de maior dimensão. De uma forma simples, o processamento paralelo pode ser
definido como o uso simultâneo de vários recursos computacionais (arquiteturas paralelas com
diversos processadores ou núcleos de processamento) de forma a reduzir o tempo necessário
para resolver um determinado problema (BOTOR E HABIBALLA, 2017; FAVORETTO,
2018).
O modelo de paralelismo a ser adotado está relacionado à arquitetura do computador
adotado. Esta arquitetura pode seguir dois sistemas de organização e disponibilização do uso
de memória. A arquitetura mais comum e disponibilizada nos computadores pessoais, utiliza o
sistema de memória compartilhada. Neste sistema o número de processadores é limitado e é
composto somente por um banco de memórias para atender todos os processadores. Em um
segundo modelo o sistema de memória distribuída tem seu próprio banco de memórias. Nesta
arquitetura o poder computacional pode ser expandido com o acoplamento de outros módulos
(CPU + Memória). Em termos de programação para distribuição das tarefas entre os diversos
processadores, o sistema de memória compartilhada utiliza uma metodologia mais simplificada
que o sistema de memória distribuída.
Na Figura 09 é ilustrado o sistema de memória compartilhada com uso de N CPUs. Na
Figura 10 é apresentado o modelo de memória distribuída.
CPU 1

CPU 1 MEMÓRIA 1 CPU 2 MEMÓRIA 2

CPU N MEMÓRIA CPU 2

CPU N MEMÓRIA N CPU 3 MEMÓRIA 3


CPU 3

FIGURA 09 : Memória compartilhada FIGURA 10: Memória Distribuída


39

3 Metodologia

Nesta seção são abordados os elementos fundamentais que compõem a estrutura para
implementação de um processo de aceleração de desempenho em sistemas embarcados em
VANTs, com processamento de imagens em tempo real. Sendo assim, pode-se considerar
alguns elementos e tecnologias que precisam fazer parte desta estrutura, tais como: softwares,
computadores, técnicas de processamento paralelo, métodos de análise dos resultados, o sensor
responsável pela captura das imagens e o VANT que conduz e proporciona o ambiente do
sistema embarcado.

3.1 Algoritmo de estimação de posição por imagens

Diferentes estudos buscam soluções para estimar posição quando se utiliza um sistema
de navegação autônoma para VANT. As técnicas mais utilizadas estão na fusão das informações
dos sensores inerciais (INS) com sistemas de posicionamento global (GPS). Mesmo com
grande utilização dentro deste contexto, há muitas ocorrências e situações em que este modelo
de navegação não está disponíveis. Neste sentido, diversos estudos utilizando imagens
capturadas em voo se apresentam como soluções alternativos ao INS/GPS.
Como já comentado anteriormente, Goltz (2011) utiliza redes neurais artificiais e
técnicas de visão computacional para estimação da posição de um VANT. Silva (2016) propõe
um método capaz de estimar a posição geográfica de um VANT durante um voo noturno. Silva
Filho (2016) desenvolve uma metodologia prática e abrangente para a autolocalização de
VANTs, através da identificação de marcos em imagens aéreas capturadas durante o voo.
Roos, (2018) utiliza técnica de odometria visual para navegação autônoma de um VANT.
O algoritmo de processamento de imagens para estimar a posição do VANT selecionado
para validar a metodologia apresentada nesta dissertação foi proposto por Braga (2018), no qual
foram utilizadas técnicas de registro automático de imagens, com o objetivo de estimar a
posição de um VANT durante um voo autônomo, conforme apresentado na seção 3.1.

Braga (2018) considera dois ambientes computacionais em sua pesquisa, SBC


Raspberry PI-3B e o SBC Zybo onde desenvolveu suas atividades utilizando a linguagem de
programação C/C++ e FPGA, no entanto, não explora critérios que buscam a aceleração de
40

desempenho de seus experimentos, tais como, as técnicas de computação de alto desempenho


envolvendo processamento paralelo.

3.2 API para Paralelismo - Programação Paralela


A computação paralela e distribuıd́ a tem se mostrado essencial para lidar com
processamentos que exigem alto desempenho em computação, normalmente associado ao
processamento de grandes volumes de dados (PONCE et al. 2018). O Paralelismo, antes
tratado como exceção entre os programadores, hoje se tornou regra. Diferentes linguagens, API
(Application Programming Interface) têm sido propostos nos últimos anos (ROSTAMI E
GHAFFARI-MIAB, 2019).
Reed e Dongarra (2015) chamam a atenção para o fato de que sistemas de alto
desempenho podem não ser implantados devido a restrições impostas pelo alto consumo de
energia, logo, além de medir e analisar o poder computacional dos sistemas paralelos é
importante que o consumo energético de tais sistemas também seja medido.
Lorenzon (2014) aborda em sua pesquisa a avaliação de desempenho e o consumo
energético. Demonstra que quando se utiliza uma API de programação paralela, estes pontos
podem variar de acordo com as características da aplicação e do processador selecionados. Em
seus resultados apresentados, o processador ARM Cortex-A9, em seu melhor caso com
OpenMP consumiu 2% menos energia que a API Pthreads; 6% menos que API MPI-1; e 15%
menos que API MPI-2 (versão mais nova) para o mesmo conjunto de benchmarks.

Neste trabalho a API escolhida foi o OpenMP (Open Multi-Processing) por suas
características de portabilidade entre diferentes sistemas operacionais, ser de fácil
implementação e também por não alterar as a estrutura original do código. OpenMP é uma
especificação que fornece um modelo de programação paralela de memória compartilhada para
arquiteturas de múltiplos processadores. Contém três componentes básicos: diretivas de
compilação, biblioteca de execução e variáveis de ambiente. Esta API permite ao programador
controle sobre a paralelização do código e está disponível para uso com os compiladores C/C++
e Fortran. O código pode ser executado em ambientes Unix, Linux e Windows (CENAPAD,
2014).

De acordo com Fazenda e Stringhini (2019) OpenMP constitui-se de um padrão que


define um conjunto de diretivas de programação juntamente com algumas rotinas de biblioteca
(API – Application Programming Interface - Interface de Programação de Aplicações) para
41

programação com threads que são normalmente unidades de execução dentro do escopo de um
processo.

Para Sena et al. (2008) o OpenMP não é uma linguagem de programação, ele representa
um padrão que define como os compiladores devem gerar códigos paralelos através da
incorporação, nos programas sequenciais, de diretivas que indicam como o trabalho é dividido
entre os processadores ou núcleos de processamento.

A paralelização ocorre com a implementação de múltiplas threads dentro de um mesmo


processo. A criação de threads é uma forma de um processo dividir o processo em várias tarefas
que podem ser executadas simultaneamente. Esse modelo de programação é conhecido na
literatura como fork-join e está ilustrado na Figura 11.

F J
O O
R I
K N

Região
Região Região Paralela Sequencial
Sequencial
FIGURA 11: Modelo fork-join

Na Figura 12 destaca-se a implementação das diretivas de compilação utilizando a API


OpenMP. Neste exemplo, é possível observar que o código original é preservado e
simplesmente as diretivas acionam o paralelismo. Elas são inseridas em regiões críticas do
programa ou mesmo em locais onde ocorre um processamento massivo.
42

#include <omp.h>
#include <iostream>
int main (int argc, char *argv[]) {
int t_id, nt_id;

#pragma omp parallel private(th_id)


{
th_id = omp_get_thread_num();

#pragma omp barrier

if ( th_id == 0 ) {
nt_id = omp_get_num_threads();
}
.
.
.
#pragma omp parallel

{int i,j;
#pragma omp for private (j)
for(int j=0; j<1500; j++){
POS_PIOBJ[j] = new double[2];}
}
..
#pragma omp target map(tofrom:input)
#pragma omp teams distribute parallel for

for(int j=1; j<linhas_ortho-1; j++){


for(int i=1; i<colunas_ortho-1; i++){
for(int lin=-1; lin<=1; lin++){
for(int col=-1; col<=1; col++){
input[cont] = imagem[j-lin][i-col];
cont++;
FIGURA 12: Exemplo da implementação da API OpenMP em código C/C++

De acordo com Schnorr (2014), o sucesso do projeto de uma aplicação paralela e do seu
desempenho em tempo de execução dependem diretamente de como é feito o mapeamento entre
os requerimentos da aplicação e os recursos disponíveis. Uma vez a aplicação paralela
implementada e livre de erros de programação, o desenvolvedor procede para a etapa de análise
de desempenho. O objetivo da análise é verificar se a implementação obtém um bom
desempenho considerando as peculiaridades e características do sistema computacional em uso
e das escolhas feitas no momento do projeto e implementação da aplicação. Para avaliar o
desempenho destas técnicas, existem diferentes métricas de desempenho que podem ser
adotadas.
43

3.3 Métricas de desempenho


Os grandes benefícios da computação paralela são apresentar um maior desempenho se
comparado a uma execução sequencial, e permitir a solução de problemas mais complexos e de
difícil solução (COUTO, 2016). Mensurar o quanto pode ser mais rápida a execução de um
determinado programa, com a introdução de n processadores, ou medir o quanto realmente o
algoritmo foi eficiente são tarefas muito importantes quando se trabalha com paralelismo e
aceleração de desempenho.
Na avaliação de desempenho, os quesitos a serem atingidos estão relacionados à
aplicação, conforme apresentado na Tabela 02:

TABELA 02: Quesitos de desempenho de acordo com a aplicação


APLICAÇÃO QUESITOS DE DESEMPENHO
Uso geral Tempo de resposta e utilização
Alta disponibilidade Tempo de resposta, disponibilidade e produtividade
Tolerância a falhas Disponibilidade e recuperação
Tempo real Tempo de resposta e carga de trabalho
Economia de energia Processador e API utilizado
(PATTERSON E HENNESSY, 2013; LORENZON, 2014)

Para avaliação deste trabalho, foram selecionados 3 modelos de métricas, sendo a


primeira, gerada pelo paralelismo, a segunda, pelo uso dos recursos computacionais e, a terceira
métrica, fazendo uma avaliação global da aplicação em função da metodologia para explorar
diferentes setores dentro do cenário computacional adotado.

a) Speedup

Segundo Gebali (2011), speedup é uma métrica que mede o tempo que se leva para
concluir uma tarefa em um único processador em relação ao tempo que se leva para completar
a mesma tarefa com n processadores em paralelo. Esta métrica é uma das mais utilizadas em
trabalhos de alto desempenho convencional. A aceleração de um programa paralelo pode ser
obtida por:

𝑇𝑝(1)
𝑆(𝑛) =
𝑇𝑝(n)
44

Onde:
S(n) : representa o speedup de n processadores paralelos
Tp(1): representa o tempo de processamento em um único processador
Tp(n): representa o tempo de processamento em n processadores.

b) Eficiência

Eficiência é a medida do grau de aproveitamento dos recursos computacionais, onde é


calculada a relação ou proporção entre o grau de desempenho e os recursos computacionais
utilizados.
𝑆(𝑝)
𝐸(𝑛) =
𝑝
Onde :

E(n): representa a eficiência de p processadores


S(p): representa o speedup de p processadores e
p : representa o número de unidades de processamento.

c) Variação percentual

O conceito de variação percentual é usado para descrever a relação entre dois valores
ou resultados. Neste caso espera-se uma redução percentual entre o tempo de processamento
ocorrido no modelo original do algoritmo, sem otimização, em relação ao tempo de
processamento com fatores de otimização implementados. Está métrica é extremamente útil
pois permite avaliar a integração de todos os fatores de aceleração envolvidos na aplicação.

𝑇𝑓
Vp = ( − 1 ) ∗ 100
𝑇𝑖

Onde:

Vp : é a variação percentual;
Ti : é o tempo inicial de processamento – tempo somente em CPU
Tf : é o tempo de processamento otimizado
45

3.4 Equipamentos utilizados

Nesta seção são apresentados os dois computadores utilizados no processamento das


imagens, o sensor embarcado que coletou as imagens e o VANT responsável pela realização
dos voos proporcionando a captura das imagens e seu devido tratamento.

3.4.1 Computadores SBC

Assim como em Curvello (2016), que utiliza uma arquitetura ARM em seu desenvolvimento,
Braga (2018) utiliza dois modelos de computadores “single-board” que podem ser embarcados
em VANTs devido ao seu baixo consumo energético e de tamanho reduzido, são eles :
Raspberry PI Model B-1 e o Zybo Z7000, ilustradas nas Figuras 13 e 14, respectivamente.

FIGURA 13: SBC Raspberry PI B-1 FIGURA 14: SBC Zybo Z7000.
(SPARKFUN, 2020) (DIGILENT, 2020)

A arquitetura escolhida para o desenvolvimento deste trabalho também segue os


mesmos padrões, pois trabalham com um número menor de instruções, resultando assim em
custos menores de desenvolvimento, menor dissipação de calor e menor consumo energético,
fatores fundamentais para serem adicionados em sistemas embarcados. Os computadores
selecionados para o processamento das imagens e validação da proposta desta dissertação são:
Raspberry PI 3 Model-B e Odroid XU4, , ilustradas nas Figuras 15 e 16, respectivamente.
46

FIGURA 15 – SBC Raspberry PI-3B FIGURA 16: Odroid-XU4S


(SPARKFUN, 2020) (AMERIDROID, 2020)

TABELA 03 : Especificações dos computadores utilizados


Hardware Raspberry PI 3 Model B Odroid XU4S
Processador BCM Broadcom 2837 64bits Samsung Exynos5422 64 bits
Arquitetura ARM v7L ARM v7L
CPU(s) 4 8
Clock 1.2 GHz 2 GHz
Threads por núcleos 1 1
Memória principal 1G 2G
GPU Videocore IV Mali400 quad
Rede Gigabit Ethernet Gigabit Ethernet
Portas 1 HDMI e 4 USB 1 USB
Alimentação 5V/3A 5V/2.5A
Wireless BCM43438 Lan Não possui
Dimensões 85 x 56 x 17 mm 55 x 45 x 17 mm
Peso 45g 80g

3.4.2 Sensor ótico embarcado:


O sensor termal utilizado para captar as imagens durante o período de voo foi a câmera
de baixo custo FLIR Duo (do inglês, Forward Looking Infrared). Este sensor foi projetado para
uso em VANT sendo capaz de realizar o imageamento no espectro visível e no espectro termal.
A câmera, ilustrada na Figura 17, permite a gravação em cartão micro SD de imagem ou vídeo,
sendo eles no espectro visível e/ou termal, utilizando dois formatos diferentes de arquivos. Os
formatos JPEG ou TIFF de 14-bits, para as fotografias; e os formatos H264 de 8 bits ou TIFF
de 14 bits, para os vídeos. Na tabela 04 são apresentadas as principais características do sensor
Flir Duo.
47

FIGURA 17: Sensor Flir Duo


(FLIR, 2020)

TABELA 04: Características da câmera Flir Duo (FLIR, 2020)

Resolução do sensor 160 × 120


Opções de lente 57° × 44°
Banda espectral 7.5 – 13.5 µm
Taxas de quadros térmicos 7.5 Hz (NTSC); 8.3 Hz
Resolução de câmera visível 1920 × 1080
Câmera visível FOV 90°
Tamanho 41 × 59 × 30 mm
Peso 84g
Tensão de entrada 5.0 - 26.0 VDC
Dissipação de energia (Peak) 2.2 W (3.3 W)
Interface MAVLink
Saída de vídeo digital Micro-HDMI; HDMI
Faixa de temperatura operacional 0°C to +50°C
Amplitude Térmica de armazenamento -20°C to +60°C
Altitude operacional +12,000 pés

3.4.3 VANT Phantom 3

Os VANTs, como já comentado anteriormente, podem ser definidos como uma


aeronave pilotada por controle remoto ou um computador de bordo. Existe uma vasta gama de
VANTs, em termos de capacidades e preços. Nos últimos anos, os VANTs têm sido cada vez
mais populares entre os consumidores e a comunidade de pesquisa (PECHARROMÁN E
VEIGA, 2018). Neste trabalho, o VANT selecionado para realizar os voos experimentais e
coletar as imagens para o seu devido processamento foi o modelo Phantom 3 Standart da
empresa DJI (TRUJANO et al., 2016), ilustrado na Figura 18.
48

FIGURA 18: VANT Phantom 3 Standart


(DJI, 2020)

Na Tabela 05, são apresentadas algumas características do VANT Phantom 3, que


devem ser levadas em consideração na hora de um planejamento de uma missão aérea,
principalmente onde ocorre processamento embarcada e em tempo real. Este modelo dispõe de
uma autonomia de 25 minutos, pode atingir uma velocidade de 16 m/s, chegando a uma altura
máxima de 6 Km.

TABELA 05: Características do VANT Phantom 3


Autonomia de Voo: 25 minutos
Alcance Máximo: 4 Km
Velocidade máxima: 16 m/s
Dimensão: 350 mm (diagonal)
Peso: 1236 gramas
Altura Máxima: 6 Km
Bateria tipo: LiPo 4s
Capacidade: 4480 mAh
Energia: 68 Wh
Potência Máxima: 100W
Faixa de Temperatura: 0 até 40 graus C
Motor 2312 CW 14,8V 800rpm/V
Máximo de empuxo 850g

Exemplificando o uso de uma câmera Flir Duo (sensor) acoplado ao VANT Phantom 3,
a Figura 19 ilustra uma sequência de imagens capturadas em tempo de voo.
49

FIGURA 19: Exemplo de imagens capturas em voo no campus do IEAv.

Nesta seção foram definidos os elementos que compõem a estrutura deste trabalho
como os computadores adequados a compor um sistema embarcado, o sensor responsável pela
captura das imagens, o algoritmo selecionado para o tratamento das imagens coletadas, o padrão
de programação para explorar os recursos disponíveis, as métricas de desempenho e o próprio
VANT responsável pela missão aérea com todos estes elementos a bordo. Vale ressaltar que o
peso total do sistema embarcado está dentro margem segurança, de acordo com as
características técnicas apresentadas na TABELA 05. No primeiro caso utilizando a SBC
Raspberry PI-3B o peso do sistema é de 129 gramas e no segundo caso utilizando a SBC Odroid
XU4 é de 164 gramas, não alterando assim o comportamento das operações com o Drone. A
próxima etapa apresenta um método de visualização de um cenário computacional embarcado.

3.5 Cenário computacional

Um dos propósitos deste trabalho está em explorar a plataforma computacional em


sistema embarcado voltado ao processamento de imagens em tempo real. Neste sentido, o
desempenho é um dos principais parâmetros a se considerar, juntamente com custo, tamanho,
segurança, confiabilidade e, em alguns casos, consumo de potência. Para a aplicação, o
desempenho não depende apenas da velocidade bruta do processador, mas do conjunto de
instruções, da escolha da linguagem de implementação, da eficiência do compilador e da
habilidade da programação feita para implementar a aplicação (STALLINGS, 2010).
50

Como o desempenho não está associado a um único elemento, partiu-se para determinar
um cenário que contenha os principais componentes envolvidos na computação embarcada e
separá-lo em setores para que possam ser analisados individualmente.
A meta então consiste em encontrar nestes setores, elementos ou fatores que possam ser
otimizados para contribuir com aceleração do desempenho computacional. Sendo assim, a
Figura 20 apresenta a proposta da composição do cenário computacional dentro do contexto
proposto, que é o processamento de imagem em tempo real ocorrendo em um VANT em voo
autônomo.

FIGURA 20 –Proposta do cenário computacional

A proposta inicia na análise de requisitos e busca por fatores que possam ser manipulados e
otimizados, visando-se a aceleração da aplicação. Sabe-se que a relação entre cada setor ocorre
de forma hierárquica, portanto cada um deles pode contribuir com fatores de aceleração
sabendo que cada setor contribui diretamente no desempenho dos demais setores, colaborando
assim, para atingir um melhor desempenho computacional. Então para atingir performance
melhores, pode se considerar que o melhor resultado será dependente da integração dos fatores
encontrados e otimizados.
51

3.5.2 Visualização do cenário computacional

Na seção anterior foi apresentado o cenário computacional contextualizando-se que, para


se atingir uma aceleração de desempenho em sistemas computacionais reduzidos, é necessário
a integração e união de todos os setores envolvidos, conforme Figura 20. Nesta seção, é
proposta a visualização do mesmo cenário, em camadas, tendo como referência o conceito
implementado no modelo OSI (do inglês, Open System Interconnection) lançado em 1984 pela
ISO (do inglês, International Organization for Standardization) e largamente utilizado em
projetos e atividades com redes de computadores (MARTINS et al., 2015). Sendo assim, as
camadas são organizadas partindo-se do meio físico, no caso, a alimentação elétrica, até as
camadas lógicas chegando nas imagens coletadas pelos sensores em tempo de voo. Na Figura
21 apresenta-se esta proposta ilustrando as 7 camadas.

FIGURA 21: Cenário computacional - visão em camadas

Este modelo em camadas, não só facilita a visualização, como também a manutenção do


sistema computacional. Tendo este cenário organizado, cada camada pode ser analisada e
trabalhada individualmente extraindo-se fatores de otimização que irão contribuir com a
melhoria do desempenho computacional. Como as camadas estão relacionadas entre si, cada
fator de otimização encontrado ou proposto contribui diretamente no desempenho da camada
superior e colabora no desempenho final da aplicação.
52

3.5.3 Extração dos fatores de aceleração

Com o cenário definido e organizado em camadas, inicia-se a busca por componentes e


fatores relevantes que possam ser otimizados visando a aceleração de desempenho. Seguindo
as 7 camadas apresentadas na Figura 21, esta análise deve ser iniciada pelo meio físico, onde
se encontra a infraestrutura computacional disponível (camadas 1,2 e 3). Nesta fase deve-se
observar e atender os requisitos funcionais apontados pelo fabricante para o melhor
desempenho dos equipamentos. As próximas etapas estão relacionadas aos elementos lógicos
(camadas 4, 5, 6 e 7) que também poderão ser otimizadas. Vale ressaltar que cada camada pode
contribuir com diferentes elementos e fatores de aceleração.
Neste sentido, foram elencados alguns fatores e ações em cada camada, que devem ser
considerados quando se pretende elevar a aceleração computacional em sistemas embarcados,
principalmente, em casos de restrições computacionais e limitações físicas.
A Tabela 06, apresenta alertas sobre o uso da alimentação elétrica correta, sendo o
ponto de partida para um projeto de aceleração de desempenho. Seguir as orientações do
fabricante do computador a ser embarcado, torna-se fundamental. Além disso, alimentação
inadequada leva à subtensão, o que prejudica diretamente o desempenho do computador de
bordo. Ainda, a aplicação pode funcionar corretamente, mas não se atingirá o desempenho que
os elementos envolvidos na computação podem oferecer.

TABELA 06: Fatores relevantes para aceleração na camada 1


Camada (1): Alimentação elétrica
a) Verificar formas de alimentação
b) Utilizar fonte de alimentação correta
c) Evitar o under voltage / subtensão

Escolher o computador que será utilizado a bordo é fundamental para modelo de


desenvolvimento das aplicações. A Tabela 07 apresenta alguns fatores relevantes que devem
ser observados antes de iniciar o desenvolvimento, principalmente se o projeto pretende
explorar técnicas de paralelismo. A escolha de um único computador ou um conjunto de SBC,
formando-se assim um cluster, irá definir o modelo do paralelismo a ser aplicado. Deve-se
verificar a existência de GPU para auxiliar no processamento massivo e no caso de
processamento de imagens em tempo real, deve-se atentar para a disponibilidade e
compatibilidade de bibliotecas que auxiliam este tipo de processamento. Controlar a dissipação
de calor e adotar um sistema de resfriamento é também uma atividade fundamental, pois um
aquecimento não controlado pode alterar o desempenho ou até mesmo o funcionamento
53

adequado de um SBC, principalmente se o projeto adotar o uso de um cluster (IZARIO, et al.,


2019). Outro fator que pode comprometer o desempenho de uma aplicação nesta camada está
relacionado á conectividade oferecida pelo computador escolhido, ou seja, as portas de
comunicação como GPIO, USB, RJ45, WIFI e HDMI que são responsáveis pelo
interfaceamento com outros equipamentos. No caso desta pesquisa o interfaceamento ocorre
com sensor imageador, responsável em capturar as imagens e enviar para o devido
processamento.

TABELA 07: Fatores relevantes para aceleração na camada 2


Camada (2): Computador
a) Pesquisar o SBC mais adequado a sua aplicação
b) Verificar a quantidade de núcleos de
processamento
c) Verificar se existe GPGPU
d) Definir modelo de memória: Compartilhada ou
distribuída Placa única ou cluster
e) Pesquisar disponibilidade de bibliotecas
f) Monitorar aquecimento e modelos de resfriamento
g) Verificar conectividade

O algoritmo escolhido para validar esta metodologia, conforme Capítulo 3 item 1, está
preparado para receber dados de um sensor e também ler dados armazenados. O tempo
destinado à leitura de dados, principalmente neste caso que estamos trabalhando com um
conjunto de imagens, tem um peso considerável no desempenho final da aplicação. Neste
sentido a Tabela 08, apresenta dois itens importantes referente ao armazenamento. Escolher o
cartão de memória adequado e que atenda as expectativas de desempenho é de vital
importância. Um atraso ou tempo de resposta não compatível com o processamento
compromete o desempenho das camadas superiores. A Tabela 09 apresenta os principais
modelos de cartões MicroSD e seus respectivos desempenhos.

TABELA 08: Fatores relevantes para aceleração na camada 3


Camada (3): Armazenamento
a) Verificar barramento para cartão MicroSD
b) Utilizar cartão de memória rápido
54

TABELA 09: Tipos de cartões MicroSD e suas taxas de I/O


Modelos de cartões MicroSD
Normal Speed 12.5 MB/s (Velocidade máxima)
High Speed 25 MB/s
UHS-I: 50 MB/s – 104 MB/s
UHS-II: 156 MB/s – 312 MB/s
Classe 10: 10 MB/s – 80MB/s
UHS 1: 10 MB/s (Velocidade mínima)
UHS 3: 30 MB/s (Velocidade mínima)
A1: 10 MB/s 1000 IOPS leitura e 500 para escrita
scandisk.com/especificações e compatibilidade

Com o objetivo de portabilidade e flexibilidade de uma solução sem vínculo com


nenhum fabricante de computador ou software proprietário é proposto o uso de elementos Open
Source. Neste sentido adotou-se o sistema operacional Linux, pois pode ser instalado em
diferentes modelos de computadores, desde estações de trabalhos com configurações para alto
desempenho, até computadores de placa única como os SBC. Neste sentido a Tabela 10 traz
elementos do sistema operacional que devem ser trabalhados pois agem diretamente no fator
desempenho.
TABELA 10: Fatores relevantes para aceleração na camada 4
Camada (4): Sistema Operacional
a) Open Source
b) Verificar Sistema Operacional já otimizado
c) Atualizar Sistema Operacional
d) Customizar o Sistema Operacional
e) Eliminar componentes e serviços não úteis
f) Monitorar memória e espaço no MicroSD
g) Ajustar memória virtual

Dado que as atividades computacionais em um sistema embarcado são direcionadas á


propósitos específicos, como neste caso a coleta e processamento de imagens auxiliando um
voo autônomo, não há necessidade de se ter a bordo um sistema operacional com múltiplas
funcionalidades e preparado para gerenciar diferentes tipos de serviço. Sendo assim, configurar
o sistema operacional com o mínimo necessário e suficiente para o processamento local, deixa
o sistema computacional mais leve economizando-se memória e espaço em disco. Os sistemas
baseados em Linux proporcionam meios para configura e implementar uma versão otimizada.
Alguns fabricantes de SBC já oferecem um pacote otimizado para ser instalado, como é o caso
dos SBC Odroid. Por se tratar de ambiente embarcado, também não há necessidade de se
instalar o modo gráfico do sistema operacional. Os sistemas Linux podem ser otimizados de
diferentes maneiras, ficando ao desenvolvedor do projeto, a tarefa de escolher a configuração
55

mais adequada. Ter o sistema operacional atualizado pode facilitar a utilização de alguns meios
de comunicação ou até mesmo ajudar na compatibilidade com as bibliotecas voltadas ao
tratamento de imagem. Para esta aplicação, o ajuste e a configuração da memória virtual através
do sistema operacional, pode trazer ganhos de desempenho, conforme apresentado na Figura
22.

Desempenho dos cartões MicroSD 985


Capacidade de R/W MB/S

624

312
156
104
12 25 50

DEFAULT HIGH UHS-I UHS-I UHS-II UHS-II UHS-III EXPRESS


Barramento
FIGURA 22 – Desempenho dos cartões MicroSD
Adaptado de (ALECRIN, 2018)

A Tabela 11 destaca o uso de parâmetros de otimização durante o processo de compilação do


código desenvolvido ou modificado. Esta fase é fundamental no processo de aceleração de
desempenho, mas cabem ressalvas quando se trata de um sistema com restrições de memória e
armazenamento. O compilador GCC (GNU Compiler Colletiction) presente em quase todas as
distribuições do sistema operacional Linux fornece vários parâmetros e opções de otimização
durante o processo de compilação do código fonte. Entre essas opções, há aquelas que atuam
na otimização do código e influenciam no tempo de execução do programa. Ocorre que não há
uma regra ou modelo de compilação que venha ser a melhor na aceleração de desempenho.
Cada caso deve ser analisado para que a opção de otimização escolhida produza um resultado
benéfico para a aplicação em desenvolvimento. Vale ressaltar que a opção -O3 de mais alto
nível de otimização pode aumentar a velocidade do executável resultante, mas também pode
gerar um código-objeto maior do que outras opções de compilação. Sob algumas circunstâncias
em que essas otimizações não são favoráveis, essa opção pode tornar o programa mais lento
(CÁCERES et al., 2017).
Chegar à melhor combinação de parâmetros ou método de compilação não é uma tarefa
trivial. Nesta etapa, o desenvolvedor deve dedicar-se na busca da opção de compilação correta.
O processo de compilação para se obter um código otimizado pode ser o principal fator de
aceleração de desempenho dentro das sete camadas. Dependendo do resultado que se espera
56

quanto ao desempenho da aplicação, o uso das melhores opções de compilação já pode ser o
suficiente para atender a demanda de processamento (MEDEIROS, 2020).

TABELA 11: Fatores relevantes para aceleração na camada 5


Camada (5): Compilador
a) Não utilizar ambiente gráfico
b) Pesquisar parâmetros de otimização
c) Várias opções no gcc -Os -O1 -O2 -O3 -Og -Ofast
-pipe e -O0

Na camada atribuída ao código fonte, cabem as boas práticas de programação visando


a economia de memória e agilidade quando o mesmo estiver em operação. A Tabela 12
apresenta os fatores relevantes que podem contribuir com a aceleração da aplicação. Cada
desenvolvedor de software cria seus próprios métodos de programação, mas quando se busca
por aceleração de desempenho, ainda mais em um ambiente com várias limitações, cada detalhe
ou ganho passa a ser de suma importância. Neste sentido, vale lembrar do dimensionamento
adequado das variáveis, evitar variáveis globais, levar em consideração que o uso de variáveis
inteiras é mais eficiente que processar variáveis do tipo Double ou Float. Além disso, as
chamadas de funções, chamadas de bibliotecas ou, até mesmo, chamadas ao sistema
operacional são operações que comprometem o desempenho do algoritmo (MYALAPALLI et
al., 2015). Ainda, regiões do código onde ocorre um processamento massivo deve ser analisada
a viabilidade de se utilizar técnicas de processamento paralelo. Compartilhar o processamento
com GPU também contribui no processo de aceleração de desempenho, mas deve ser bem
projetado, principalmente, quando já se utiliza uma API de paralelismo, pois pode ocorrer do
código ficar mais lento que a versão original (NUNES, 2018).

TABELA 12: Fatores relevantes para aceleração na camada 6


Camada (6): Código Fonte
a) Evitar variáveis Double, Float
b) Dar preferência a variáveis tipo Inteiro ou Char
c) Evitar variáveis globais
d) Utilizar tamanho correto da variável
e) Analisar o uso de chamadas de função
f) Rever passagem de parâmetros número de itens
g) Verificar chamadas de Bibliotecas
h) Evitar chamadas ao sistema operacional
i) Encontrar regiões com processamento massivo
j) Identificar gargalos com GNU Gprof
k) Aplicar técnicas de processamento paralelo
57

Camada (6): Código Fonte


l) Memória compartilhada OpenMP
m) Memória distribuída MPI
n) Explorar GPU

Para a última camada, fica reservada a tarefa de organização e identificação dos dados
(imagens) que serão processados pelo algoritmo selecionado e dentro do cenário computacional
estabelecido. A Tabela 13 ressalta alguns fatores que devem ser levantados junto ao sensor que
irá fornecer as imagens. Conhecer as características do sensor imageador é importante, pois
evita a incompatibilidade e agiliza o processamento.

TABELA 13: Fatores relevantes para aceleração na camada 7


Camada (7): Dados
a) Identificar modelos de dados do sensor imageador
b) Definir padrão de dado - tipo do arquivo
c) Definir tamanho do dado fornecido (imagem)

3.5.4 Overclock

O overclock é usado para obter desempenho adicional de determinados componentes


como CPU, GPU e memória, aumentando sua velocidade operacional. Através do overclock,
um computador é configurado a operar mais rápido que a frequência de clock fabricada. O
aumento da taxa de clock de um componente faz com que ele execute mais operações por
segundo. Overclock é um processo complexo. Existem diferentes métodos de overclocking que
podem ser usados para melhorar o desempenho do computador. (THOMAS E
SHANMUGASUNDARAM, 2018).
A utilização desta técnica tem um preço pois, com o aumento da frequência, o chip
ficará mais quente acarretando uma dissipação térmica do processador. Este aquecimento irá
levar a um aumento do consumo de energia, o que pode levar à necessidade de um sistema de
dissipação de calor mais adequado. Embora seja possível alterar o desempenho desta forma, o
computador de placa única, como o Raspberry PI-3B, pode trabalhar de maneira instável,
podendo ocorrer corrupção de arquivos no cartão MicroSD. (UPTON E GAFACREE, 2017).
Por utilizarmos um ambiente embarcado que já possui uma série de restrições e
necessidades temporais e também buscando um cenário computacional estável e sem riscos que
atenda um sistema de processamento de imagem em tempo real ocorrendo em voo autônomo,
optou-se pela não utilização desta técnica.
58

4 Resultados

Esta seção de resultados está dividida em duas fases, sendo a primeira reservada ao
treinamento e preparação dos cenários computacionais. A fase de treinamento foi estipulada
para preparar e testar o cenário computacional e também para extrair os primeiros resultados
seguindo a metodologia proposta. O objetivo desta fase também foi deixar preparado o
ambiente para a realização da segunda fase, onde ocorrem os estudos de casos com dados reais.
Como mencionado na Seção 3.4.1, os computadores selecionados para o processamento dos
dados são o Rasberry PI-3B e Odroid XU4S. Assim, as atividades práticas tiveram início
seguindo os fatores de aceleração propostos em cada camada, conforme apresentado na seção
3.5.
Os primeiros testes foram realizados com o computador Raspberry PI-3B, utilizando um
cartão de memória Sandisk Classe 10 com capacidade de 32GB e velocidade de até 80MB/s.
Para alimentação elétrica, foi selecionada uma fonte com tensão de saída de 5V (DC) e com
corrente de 3A.
Para gerenciar este primeiro computador, foi selecionado o sistema operacional Raspberry
PI OS Lite, sistema Linux baseado na distribuição Debian e otimizado pela própria Raspberry
PI Foundation, fabricante e distribuidora do SBC Raspberry PI.
Como o algoritmo de registro automático de imagem, descrito na seção 3.1, utiliza uma
biblioteca de visão computacional no tratamento das imagens coletadas, foi necessário instalar
a biblioteca OpenCV para atender as funcionalidades do algoritmo. Esta biblioteca é de código
aberto e contribui na eficiência e desempenho computacional.
Finalizando os requisitos propostos pela metodologia utilizou-se uma base de dados de 18
imagens de 360 x 288 pixels coletadas em voo no campus do IEAv com uso da câmera Flir Duo
acoplada ao VANT Phantom 3. Na Figura 23 são ilustradas algumas destas imagens.

FIGURA 23 – Exemplo de sequência de imagens capturadas. Campus do IEAv

Seguindo a proposta de se trabalhar em camadas, facilitando e organizando a visualização


do cenário computacional, a composição ficou estabelecida conforme demostrado na Figura 24.
59

FIGURA 24: Composição do 1º. cenário computacional em camadas

Com o cenário definido, a etapa seguinte consistiu em preparar o código para a leitura das
imagens e estabelecer um padrão de compilação incluindo a biblioteca OpenCV. Foram
realizados vários testes, com depuração, validação e compilação do algoritmo de registro
automático de imagem, chegando a um tempo de processamento das 18 imagens de 4,27
segundos. Este resultado foi considerado referência pois trata-se da execução do algoritmo em
seu estado original e a implementação sem fatores de aceleração nas camadas lógicas (4,5,6 e
7), sendo que as camadas (1,2 e 3) estão fixas. Com este resultado de referência, iniciou-se a
busca por fatores de otimização que pudessem contribuir para a aceleração de desempenho da
aplicação. Neste contexto, partiu-se para uma análise mais detalhada do algoritmo com o
propósito de identificar o que se diz no jargão popular de “gargalos” no tempo de
processamento, também conhecidos por hot spots (Fazenda e Stringhini ,2019) que pudessem
ser otimizados. Existem várias ferramentas e métricas para auxiliar nesta tarefa (MEIRELES,
2013), neste trabalho utilizou-se o software GProf (GNU profiling), que pertence à família do
GCC (GNU Compiler Collection) pela sua praticidade. Trata-se de uma ferramenta simples e
útil para analisar e melhorar o desempenho de um algoritmo. O GProf apresenta como resultado
um relatório demonstrando o tempo gasto por cada função e o número de vezes que cada função
foi requisitada durante a execução de um algoritmo. De posse desta informação é possível
observar onde o algoritmo está gastando mais tempo permitindo, assim, avaliar a viabilidade
de uma otimização. Na Figura 25 é ilustrado o resultado do Gprof depois da análise do algoritmo
de Registro Automático de Imagem.
60

FIGURA 25: Resposta do software Gprof

Observando-se as indicações apresentadas pelo software GProf, foi possível visualizar que
apesar de uma grande quantidade de chamadas às funções da biblioteca OpenCV, o tempo
maior de processamento ainda estava ocorrendo na função principal. De posse deste resultado
e analisando o algoritmo, foi possível observar a viabilidade da implementação de técnicas de
paralelismo, com o objetivo de melhorar o desempenho computacional nas regiões onde
ocorrem um fluxo de processamento muito intenso. Como a arquitetura do computador
escolhido usa memória compartilhada, e também para não alterar o código original, a API
OpenMP (Open Multi-Processing) mostrou-se mais adequada para explorar e implementar o
paralelismo. A Figura 26 ilustra uma região do algoritmo de registro automático de imagem
com a implementação de técnicas de paralelismo através das diretivas de compilação, linhas
iniciando com o símbolo (#), da API OpenMP.

FIGURA 26: Implementação do paralelismo utilizando OpenMP

Com o paralelismo implementado, conforme exemplificado na Figuras 26 , repetiu-se o


processamento com a mesma base de dados anterior e o tempo de processamento reduziu para
4,12 segundos, obtendo uma redução no processamento de 3,5% em relação ao processamento
original. Para avaliar esta redução no tempo de processamento é importante considerar as
caraterísticas e restrições do computador utilizado nesta tarefa. A Figura 27 apresenta um
gráfico comparativo entre os dois resultados obtidos.
61

18 Frames - Raspberry PI-3B

Típo de Processamento
PARALELO 4.12

ORIGINAL 4.27

4 4.05 4.1 4.15 4.2 4.25 4.3


Tempo de Processamento (s)

FIGURA 27: Processamento modo original e paralelo

Face a este resultado, partiu-se para uma análise mais abrangente buscando outros fatores e
elementos que pudessem contribuir com a aceleração do processamento, obtendo-se, assim, um
melhor desempenho no tratamento das imagens. A Figura 28 ilustra os testes realizados com a
memória virtual utilizando os valores de 5, 10, 60 e 100. Como o padrão do sistema operacional
customizado para Raspberry PI, vem com 100MB de espaço para memória virtual (Swap),
foram realizados testes com diferentes valores visando a melhor configuração. Para observar o
comportamento dos valores configurados para a área de Swap, utilizou-se a configuração e o
código original, sem a implementação do paralelismo, justamente para observar o
comportamento deste fator de aceleração isoladamente. Analisando o gráfico é possível
observar uma aceleração de 0,06 segundos, o que equivale à uma redução de 1,4% no tempo de
processamento original.

Configurando memória virtual


Tempo de Processamento

4.27
4.24
4.23
(s)

4.21

SW-5 SW-10 SW-60 SW-100

Paramentros do Swap

FIGURA 28 – Ajuste da memória virtual

Com mais um fator de desempenho configurado, a etapa seguinte foi reservada para
reavaliar o código-fonte, com o objetivo de localizar regiões com processamento massivo, rever
a implementação de processamento paralelo e explorar o uso de GPU, chegando assim a um
62

modelo de programação híbrida. Neste modelo é possível explorar recursos da CPU e GPU
simultaneamente. A Raspberry PI 3 modelo B, dispõe de uma GPU VideoCore IV com 4
núcleos de processamento. A API OpenMP em sua versão 4.5 disponibiliza recursos para
utilizar a GPU.
Como treinamento e validação dos fatores de otimização e aceleração de desempenho,
a distribuição do processamento utilizando GPU ocorreram em duas regiões do algoritmo. A
Figura 29 ilustra a evolução no ganho de desempenho, onde foram realizados 4 tipos de
processamentos: com o código original; incluindo as técnicas de paralelismo; ativando a região
do código que faz uso de GPU e, incluindo todas as otimizações anteriores.
Na Figura 30 ressalta-se a eficiência na utilização dos recursos computacionais
disponíveis após a implementação dos fatores de aceleração.

Evolução no desempenho
Tempo de processamento (s)

4.27 4.12

2.72

CPU Paralelo GPU


FIGURA 29- Evolução nos processamentos

Métrica: Eficiência
Tempo de processamento (s)

0.387

0.256

Paralelo GPU

FIGURA 30 – Cálculo da Eficiência

Mesmo com resultados mostrando a eficiência no uso dos recursos computacionais,


ainda foram explorados outros pontos em busca de se melhorar o desempenho. Seguindo a
proposta da metodologia, partiu-se para análise e testes com modelos e opções de compilação.
63

Conforme apresentado na Tabela 11 da Seção 5.3, existem várias opções de otimização que
deverão ser utilizadas com cautela e serem bem avaliadas, tanto no processo de compilação
como no resultado apresentado pelo algoritmo, pois podem ocorrer falhas na execução e até
quebra de acesso à bibliotecas (BRANCO E HENRIQUES, 2015). Durante este processo de
análises das opções de otimização do compilador GCC, a opção -O3 trouxe resultados
expressivos sem apresentar problemas e não sobrepôs os fatores de aceleração anteriores.

A Tabela 14 ilustra dois modelos de compilação utilizados durante a fase de treinamento


e estudos de casos. O primeiro modelo gera um código para ser executado exclusivamente por
uma CPU. Já o segundo modelo habilita a opção de otimização do código (-O3) e também
integra os recursos para utilização do paralelismo (-fopenmp).

TABELA 14: Modelos de compilação


Modelos de compilação
1) g++ -std=c++11 main.cpp -o m2 ´pkg-config –libs -- cflags opencv´
2) g++ -std=c++11 -O3 -fopenmp main.cpp -o m2 `pkg-config --libs --cflags opencv`

A Figura 31 ilustra um comparativo dos tempos de processamento obtidos com e sem a


opção de otimização. Em azul os 4 modelos de processamento utilizando modelo de
compilação padrão e em laranja o resultado obtido na execução dos 4 modelos utilizando a
opção -O3 no processo de compilação.

Compilação: Padrão X Otimizado


Tempo de processamento (s)

Padrão Otimizado
4.27 4.12

2.72

1.47 1.42 1.25

CPU PARALELO GPU


Típos de processamento

FIGURA 31 – Compilação padrão x compilação com otimização

As Tabelas 15 e 16 ilustram as métricas de desempenho após a execução do algoritmo de


registro automático de imagem ser compilado utilizando o modelo de compilação padrão e o
modelo de compilação com opção de otimização.
64

TABELA 15 - Resultado das métricas de desempenho – Compilação padrão


Código Speedup Eficiência Variação Percentual
Paralelo 1,036 0,259 3,51
GPU 1,569 0,392 36,29

TABELA 16 - Resultado das métricas de desempenho – Compilação otimizado


Código Speedup Eficiência Variação Percentual
Paralelo 1,035 0,259 4,08
GPU 1,176 0,294 14,96

A Tabela 17 destaca a redução no tempo de processamento entre a execução original do


algoritmo registro automático de imagem com a versão utilizando os fatores de aceleração
propostos (cartão MicroSD, memória virtual, paralelismo, GPU e compilação com otimização) .

TABELA 17 – Tempo de processamento original x modelo otimizado


Código CPU GPU Variação Percentual
Tempo 4,27 1,25 70,72
Proc.

Com o cenário computacional previamente definido, durante a fase de treinamento, a


etapa seguinte foi destinada à realização de alguns estudos de casos visando validar a
metodologia proposta nesta dissertação e verificar a aceleração de desempenho em um sistema
embarcado com processamento de imagem em tempo real. Para a realização dos estudos de
casos utilizou-se 3 conjuntos de imagens obtidas por VANTs, sendo cada grupo diferenciado
pela localização da captura das imagens, tamanho da imagen coletada e tipo da imagem
fornecida pelo sensor. Estas imagens são processadas em duas fases, sendo a primeira
utilizando-se o SBC Raspberry PI-3B e na segunda utilizando-se o SBC Odroid XU4S, ambos
os computadores disponíveis nos laboratórios do IEAv. Cada computador tem a tarefa de
processar os 3 conjuntos de imagens utilizando quatro modelos de processamento. Estes
modelos estão organizados da seguinte forma: o primeiro é o algoritmo original, conforme
recebido do autor sem otimização ou fator de aceleração implementado; o segundo, com
implementação de processamento paralelo, utilizando-se OpenMP; o terceiro, mantendo o
paralelismo e incluindo o acesso à GPU, tornando-se assim um modelo de processamento
híbrido; e, por último, o modelo otimizado que reúne os modelos anteriores e acrescenta a
otimização na compilação. É importante observar que em um sistema embarcado onde ocorrem
restrições, a soma dos fatores de otimização mostra-se como uma opção promissora para
65

sistemas de tempo real. A Tabela 18 apresenta os modelos para os processamentos que são
realizados durante os estudos de casos.

TABELA 18 – Modelos de processamento


Modelo Descrição
1 Serial Algoritmo original utilizando apenas CPU
2 Paralelo Modelo 1 com adição de paralelismo OpenMP
3 Híbrido Modelo 2 com adição da GPU
4 Otimizado Modelo 3 com o adição da otimização na compilação

Para cada estudo de caso são apresentadas: uma imagem georreferenciada, requisito do
algoritmo de registro automático de imagem, uma sequência de imagens capturadas pelo sensor
no momento do voo e os resultados dos processamentos realizados. A imagem georreferenciada
é da mesma região sobrevoada pela aeronave e fica armazenada no computador embarcado.
Finalizando os estudos de casos, avaliou-se o comportamento de algumas etapas fundamentais
do algoritmo de registro automático de imagem após a implementação dos fatores de
aceleração.

4.1.1. Primeiro Estudo de Caso: 120 Frames - Raspberry PI-3B

No primeiro estudo de caso, as imagens foram obtidas por um VANT Phanthom 3, onde
foram coletadas 120 imagens diurnas com uso do sensor Flir Duo. O tamanho de cada imagem
coletada é de 160 x 120 pixels, gerando um arquivo de aproximadamente 42 Kbytes. A Figura
32 apresenta uma sequencia de imagens coletadas durante o voo.

FIGURA 32 – Exemplo de sequência de imagens capturadas. Campus do IEAv

A Figura 33 apresenta a imagem utilizada como referência, conforme estabelecido pelo


algoritmo de registro automático de imagem apresentado na seção 3.1 . Esta mesma figura
também é utilizada como referência no segundo, quarto e quinto estudos de casos.
66

FIGURA 33: Imagem de referência. Campus do IEAv

A Figura 34 ilustra o resultado dos 4 modelos de processamento para as 120 imagens


capturadas pelo VANT Phantom 3 durante o voo no campus do IEAv.

120 Frames - Raspberry PI-3B

OTIMIZADO 6.59
Típo de Processamento

HÍBRIDO 7.98

PARALELO 8.62

SERIAL 9.01

Tempo de Processamento (s)


FIGURA 34 – Resultado do processamento de 120 imagens no Raspberry PI-3B

Na Tabela 19 são apresentados os resultados das métricas de desempenho após o


processamento das 120 imagens pela SBC Raspberry PI-3B.
TABELA 19 - Resultado das métricas de desempenho. Fase I -1º.caso
Speedup Eficiência Variação Percentual
Paralelo 1,045 0,261 4,32
Híbrido 1,129 0,282 11,43
Otimizado 1,367 0,341 26,85

Como pode ser visto, à medida que os fatores de desempenho são implementados, há
aceleração no tempo total de processamento. Vale ressaltar que a métrica redução é calculada
tendo, como valor de referência, o tempo de processamento do modelo serial, onde não ocorre
fator de aceleração, execeto os implementados no meio físico. Então, se compararmos o tempo
do primeiro processamento (9,01 segundos) com o quarto processamento (6,59 segundos),
como mostra a Figura 33, observamos um ganho de desempenho de mais de 26%.
67

4.1.2 Segundo Estudo de Caso: 208 Frames - Raspberry PI-3B

No segundo estudo de caso utilizou-se um conjunto de 208 imagens termais obtidas de


um sensor Flir Duo em período noturno, com tamanho de 160 × 120 pixels, gerando um arquivo
de aproximadamente 42 Kbytes. A Figura 35 apresenta exemplos de imagens coletadas durante
o voo.

FIGURA 35 – Exemplo de sequência de imagens capturadas. Campus.

Após a realização dos 4 modelos de processamento, serial, paralelo, híbrido e otimizado, os


resultados encontrados estão apresentados na Figura 36.

208 Frames - Raspberry PI-3B

OTIMIZADO 9.04
Típo de Processamento

HÍBRIDO 12.32

PARALELO 13.69

SERIAL 14.38

Tempo de Processamento (s)

FIGURA 36 – Resultado do processamento de 208 imagens

Na tabela 20 são apresentados os resultados das métricas de desempenho após o


processamento realizado pela SBC Raspberry PI-3B das 208 imagens termais.

TABELA 20 - Resultado das métricas de desempenho. Fase I-2º.caso


Speedup Eficiência Variação Percentual
Paralelo 1,050 0,262 4,79
Híbrido 1,167 0,291 14,32
Otimizado 1,590 0,397 37,13

Podemos observar na Tabela 20, o aumento da eficiência computacional e uma crescente


redução no tempo de processamento em função da somatória dos fatores de aceleração. Então,
68

se compararmos o tempo do primeiro processamento (14,38 segundos) com o quarto


processamento (9,04 segundos), observamos um ganho de desempenho de mais de 37%.

4.1.3 Terceiro Estudo de Caso: 1500 Frames - Raspberry PI-3B

Este estudo de caso utiliza um conjunto de dados obtidos por sensor óptico passivo (a
câmera de vídeo do VANT) que captura imagens na banda do visível. O conjunto de imagens
utilizado neste estudo de caso foi obtido durante um voo real da aeronave autônoma RMAX
fabricado pela Yamaha Motor Company, apresentado na Figura 37.

FIGURA 37 Helicóptero autônomo RMAX.


Braga (2018)

Esta base de dados é composta de 1500 imagens de resolução 360 × 288 pixels e um
tamanho de 103,7 Kbytes. Estas imagens foram obtidas em Braga (2018) para avaliação do
algoritmo de estimação da posição do VANT por registro automático de imagens.

FIGURA 38: Sequência de imagens obtidas pelo VANT RMAX


Braga (2018)

Na Figura 40 ilustra-se a imagem da região de Revinge na Suécia, utilizada como


referência neste estudo de caso, requisito do algoritmo de registro automático de imagem.
69

FIGURA 39: Imagem de referência. Revinge, Suécia.


Braga (2018)

Na Figura 40, os tempos de processamento das 4 propostas de processamento são


mostrados, de acordo com o uso incremental dos fatores de aceleração.

1500 Frames - Raspberry PI-3B

OTIMIZADO 39
Típo de Processamento

HÍBRIDO 99

PARALELO 120

SERIAL 136

Tempo de Processamento (s)

FIGURA 40 – Resultado do Processamento de 1500 imagens

Na Tabela 21 são apresentados os resultados das métricas de desempenho após o


processamento realizado pela SBC Raspberry PI-3B das 1500 imagens de 360 x 288 pixels,
capturadas em Revinge na Suécia.

TABELA 21 - Resultado das métricas de desempenho. Fase I-3º.caso


Speedup Eficiência Variação Percentual
Paralelo 1,133 0,283 11,76
Híbrido 1,373 0,343 27,21
Otimizado 3,487 0,872 71,32

Podemos ver que o ganho de desempenho neste terceiro caso foi muito superior ao
alcançado no primeiro caso. Foi obtida uma redução de 1 minuto e 37 segundos no tempo de
processamento , representando redução no tempo de processamento de 71,32%, em relação ao
tempo de processamento somente em CPU e sem nenhum fator de aceleração. Isso indica que
70

a metodologia proposta tem se mostrado positiva ao ser aplicada no processamento de imagens


em ambiente embarcado e em tempo real.

4.1.4 Preparando o cenário para o SBC Odroid XU4

Para os testes e estudos de casos com computador Odroid XU4S foram adotadas as mesmas
regras, base de dados e procedimentos aplicados na fase de treinamento anterior, quando foi
utilizado o computador Raspberry PI-3B. Na preparação deste ambiente, utilizou-se uma fonte
de alimentação com tensão de saída 5Volts e com corrente de 2,5 amperes, conforme indicado
pelo fabricante. Para armazenamento dos dados foram selecionados cartões MicroSD classe 10.
Já o sistema operacional instalado foi o Linux Ubuntu Minimal, já preparado para ambientes
computacionais reduzidos. Oajuste da memória virtual ficou semelhante ao adotado na fase
anterior.
Portanto, a composição do cenário computacional segue a forma apresentada na Figura 41.

FIGURA 41: Composição do 2º. cenário computacional em camadas

Para que pudessemos fazer uma comparação de desempenho entre os dois modelos de
computadores selecionados, nos primeiros testes e ensaios com o computador Odroid XU4S,
foram utilizados o mesmo conjunto de 18 imagens com 360 x 288 pixels, ocupando 102 Kbytes
cada imagem.
A Figura 42 traz o resultado do processamento do algoritmo de registro automático de
imagem sendo executado pelo computador Odroid XU4S em dois tipos de processamento. O
primeiro utilizando o código original, sem implementação de fatores de aceleração
(representado no gráfico pelo tipo serial) e, o segundo processamento, com técnicas para utilizar
processamento paralelo.
71

Treinamento 18 frames no Odroid

Típos de Processamentos
PARALELO 2.53

SERIAL 5.07

0 2 4 6
Tempo de Processamento (s)

FIGURA 42: Treinamento com 18 imagens utilizando o Odroid

Observando a Tabela 22 podemos verificar a diferença de comportamento entre os dois


modelos de computadores. A Raspberry PI-3B se apresenta com melhor desempenho no modo
serial, mas o computador Odroid XU4S se mostrou bem mais expressivo no processamento
paralelo. Este desempenho apresentado pelo computador Odroid, ocorre em função de um
maior número de núcleos de processamento disponíveis.

TABELA 22 - Resultado das métricas de desempenho 18 frames


SBC CPU Tempo Tempo Variação
Núcleos Serial (s) Paralelo (s) Percentual
Raspberry PI-3B 4 4,27 4,12 3,5
Odroid XU4 8 5,07 2,53 50,1

4.1.5 Quarto Estudo de Caso – 120 Frames - Odroid XU4

Após a fase de treinamento e configurações, foi realizado o primeiro estudo de caso com
o computador Odroid XU4S com uso da base de dados com 120 imagens diurnas coletas pela
camera Flir Duo, de 160 × 120 pixels. A Figura 43 traz um sequencia de imagens capturadas
em no momento do voo.

FIGURA 43: Sequência de imagens obtidas pelo VANT Phantom3


72

Utilizando os fatores de aceleração, definidos e utilizados na primeira fase dos estudos


de casos, foram obtidas reduções nos tempos de processamentos e aumento na eficiência do uso
dos recursos computacionais à medida que os fatores de aceleração foram inseridas. A Figura
44 ilustra o desempenho obtido com uso do computador Odroid XU4S e seu comportamento
em relação aos 4 tipos processamentos propostos.

120 Frames - Odroid XU4S


Tíop de Processamento

OTIMIZADO 3.18

HÍBRIDO 4

PARALELO 4.33

SERIAL 5.26

Tempo de Processamento (s)


FIGURA 44: Resultado do processamento de 120 imagens utilizando o Odroid

Na Tabela 23 são apresentados os resultados das métricas de desempenho após o


processamento das 120 imagens pela SBC Odroid XU4S.

TABELA 23 - Resultado das métricas de desempenho. Fase II-1º caso


Speedup Eficiência Variação
Percentual
Paralelo 1,214 0,151 17,68
Hibrido 1,315 0,164 23,95
Otimizado 1,654 0,206 39,54

Por oferecer mais núcleos de processamento o computador Odroid tem resultados


superiores aos resultados apresentados na primeira fase dos estudos de casos. Como porde ser
visto o processamento no modelo otimizado atingiu uma redução de 39,54% de aceleração,
sendo que para processar este mesmo conjunto de imagens a Raspberry PI-3B obteve 26,85%.

4.1.6 Quinto Estudo de Caso – 208 Frames - Odroid XU4

O segundo estudo de caso, com uso do computador Odroid XU4S, faz uso da base de
dados com 208 imagens termais obtidas de um sensor Flir Duo em período noturno com
tamanho de 160 × 120 pixels. A FIGURA 45 ilustra exemplos de imagens coletadas durante o
voo.
73

FIGURA 45 – Exemplo de sequência de imagens capturadas. Campus do IEAv.

Na Figura 46 é apresentado o desempenho obtido com o computador Odroid XU4 e seu


comportamento em relação aos 4 tipos processamentos propostos.

208 Frames - Odroid XU4S

OTIMIZADO 6.54
Tipo do Processamento

HÍBRIDO 12.7

PARALELO 15.06

SERIAL 16.51

Tempo de Processamento (s)


FIGURA 46: Resultado do processamento de 208 imagens utilizando o Odroid

A Tabela 24 apresenta as métricas de desempenho de acordo com o resultado do


processamento das 208 imagens ilustrados na Figura 46.

TABELA 24- Resultado das métricas de desempenho. Fase II-2º caso


Speedup Eficiência Variação
Percentual
Paralelo 1,096 0,137 8,78
Híbrido 1,300 0,162 23,07
Otimizado 2,524 0,315 60,38

Podemos observar que mesmo aumentando o número de núcleos de processamento, a


aceleração de desempenho utilizando técnicas de processamento paralelo para manipular
imagens termais foi pouco expressivo, apenas 8.78%. Ao acrescentar outros fatores de
aceleração atingiu-se uma redução no tempo de processamento de 60,38%.
74

4.1.7 Sexto Estudo de Caso – 1500 Frames - Odroid XU4


No terceiro estudo de caso aplicado ao SBC Odroid, utilizou-se o mesmo conjunto de
1500 imagens de 360 x 288 pixels e um tamanho de 103 Kbytes que foram aplicadas no terceiro
estudo de caso da fase I, assim como a imagem georreferenciada. Estas imagens foram obtidas
por um sensor ótico passivo atuando na banda do visível. O VANT utilizado foi o RMAX.

FIGURA 47: Sequência de imagens obtidas pelo VANT RMAX


Braga (2018)

A Figura 48 ilustra a imagem da região de Revinge na Suécia, utilizada como referenciada


neste estudo de caso, conforme requisito do algoritmo de registro automático de imagem.

FIGURA 48: Imagem de referência. Revinge, Suécia.


Braga (2018)

Na Figura 49, estão expressos os tempos de processamento de cada modelo de processamento


proposto.

1500 Frames - Odroid XU4S

OTIMIZADO
Tipo de Processamento

27.49

HÍBRIDO 44.2

PARALELO 46.95

SERIAL 71.52

Tempo de Processamento (s)

FIGURA 49: Processamento das 1500 imagens utilizando o Odroid


Na Tabela 25 são ilustrados o rendimento da computação paralela através do speedup e
a aumento da eficiência computacional em função da evolução da metodologia aplicada.
75

TABELA 25- Resultado das métricas de desempenho. Fase II-3º caso.


Speedup Eficiência Variação
Percentual
Paralelo 1,523 0,190 34,35
Híbrido 1,618 0,202 38,19
Otimizado 2,601 0,325 61,56

Para este estudo de caso onde o número de imagens processadas é bem maior que as
bases de dados anteriores, os processamentos paralelo e híbrido apresentam-se com
desempenhos superiores aos estudos anteriores. Aproveitando a aceleração de desempenho
atingida pelos modelos paralelo e híbrido, o modelo otimizado que contêm todos os fatores de
aceleração aplicados anteriormente, somando a compilação otimizada atinge o percentual de
61,56% de aceleração em relação ao processamento no modelo serial.

Na Tabela 26 é apresentado um resumo dos resultados obtidos durante os estudos de


casos realizados da Fases I utilizando o SBC Raspberry PI-3B e na Fase II utilizando o SBC
Odroid XU4S. São observados os tempos de processamento do modo serial, onde o algoritmo
faz uso de somente uma CPU com o modo otimizado que traz os fatores de aceleração propostos
nesta dissertação.

TABELA 26 - Resumo dos estudos de casos


Estudo de Quant. Casos Tempo (s) Tempo (s) Ganho de
Casos Imagens Modo Serial Modo Desempenho
Otimizado (%)
1º. 120 1º 9,01 6,59 26,85
2º 5,26 3,18 39,54
2º. 208 3º 14,38 9,04 37,13
4º 16,51 6,54 60,38
3º. 1500 5º 136,00 39,00 71,32
6º 71,52 27,49 61,56

Vale ressaltar que na execução dos estudos de casos foram realizados 28 experimentos, sendo
4 experimentos realizados nas fases de treinamento e preparação do ambiente computacional.
Como pode ser observado a aceleração de desempenho ocorreu em todos os casos apresentados.

4.1.8 Avaliação das etapas fundamentais do algoritmo.

O objetivo desta avaliação é avaliar a aceleração de desempenho, com uso da


metodologia proposta, em 3 fases fundamentais do algoritmo de registro automático de imagem,
rotação da imagem, extração de bordas e um processo de correlação entre imagens. Para
realização da avaliação, o computador selecionado foi o computador Raspberry PI-3B,
76

incluindo uma base de dados com 1500 imagens, semelhante ao que ocorreu no terceiro estudo
de caso da Fase I e da Fase II. O algoritmo de registro automático de imagem calcula, para cada
imagem processada, o tempo de execução ao executar rotação, extração de borda e correlação.
Para a análise da aplicação da metodologia proposta neste trabalho, foram calculados o tempo
médio de processamento para cada uma destas etapas, após o processamento das 1500 imagens.
A Figura 50 apresenta os resultados referentes aos tempos médios das 1500 imagens
processadas considerando-se quatro tipos de processamento o Otimizado, o Híbrido, o Paralelo
e o Serial.

Tempo Médio de Rotação

OTIMIZADO 5.70E-04
Típo do Processamento

HÍBRIDO 5.90E-04

PARALELO 6.30E-04

SERIAL 6.60E-04

Tempo de Processamento (s)

FIGURA 50: Ganho de desempenho no processo de rotação

Na Figura 51 são apresentados os resultados dos tempos de processamento do processo


de detecção de bordas que é aplicado para evitar que variações na iluminação do ambiente
interfiram no resultado final do registro de imagens.

Tempo médio de Extração de Bordas


Tipo do Processamento

OTIMIZADO 0.013

HÍBRIDO 0.048

PARALELO 0.059

SERIAL 0.061

Tempo de Processamento (s)


FIGURA 51: Ganho de desempenho no processo de extração de bordas

Com relação à extração de bordas, existem dois algoritmos tradicionais que são os
operadores para detecção de bordas Sobel e Canny (Kutty et al., 2014). Braga (2018) faz uso
de um SBC Raspberry PI-3B e destes operadores para registrar o tempo de execução na
detecção de bordas das imagens coletadas pelo VANT após o ajuste de escala.
77

A Tabela 27 traz os resultados encontrado por Braga (2018), utilizando os operadores


Sobel e Canny e os resultados atingidos nesta dissertação após aplicar a metodologia de
aceleração de desempenho no algoritmo de registro automático de imagem e no cenário
computacional selecionado.

TABELA 27: Tempo de execução dos algoritmos para a detecção de bordas


Algoritmo Modelo Processamento Tempo de Execução (s)
Sobel CPU 0,083
Canny CPU 0,074
Registro Automático de CPU 0,061
Imagem OTIMIZADO 0,024

Já a correlação cruzada, entre as imagens com as bordas detectadas, é aplicada para a


obtenção da estimação da posição do VANT. A correlação cruzada é calculada entre a imagem
aérea, capturada pelo VANT, e a imagem georreferenciada da região sobrevoada. O resultado
da correlação cruzada de duas imagens é uma matriz cujo o seu maior valor representa a posição
do VANT na imagem georreferenciada (SARANYA, et al., 2016).
Os resultados dos tempos de processamento da correlação entre as imagens são
ilustrados na Figura 52. Pode-se observar um ganho de desempenho em torno de 53% entre o
resultado do processamento híbrido em relação ao resultado do processamento paralelo.

Tempo Médio de Correlação

OTIMIZADO
Típo do Processamento

0.024

HÍBRIDO 0.033

PARALELO 0.071

SERIAL 0.08

Tempo de Processamento (s)

FIGURA 52: Ganho de desempenho no processo de correlação

Na Tabela 28 são apresentados os resultados dos tempos de processamento das 3 etapas,


rotação, extração e correlação. No modo serial, utilzando o algoritmo original e sem os fatores
de aceleração e no modo otimizado configurado com os fatores de aceleração propostos. Pode-
se observar um ganho acentuado na etapa de extração de bordas onde obteve um índice de 78%
de redução no tempo de processamento.
78

TABELA 28- Resultado do desempenho nas fases do algoritmo


Fases do Algoritmo Tempo (s) Tempo (s) Variação
Modo Serial Modo Percentual
Otimizado
Rotação da imagem 6,60E-04 5,70E-04 13,63
Extração de borda 0,061 0,013 78,68
Correlação 0,080 0,024 70,00

Após a realização de 44 experimentos realizados e demonstrados neste capítulo, ficou


comprovada a eficiência e eficácia da metodologia proposta em realizar aceleração de
desempenho em sistemas embarcados com processamento de imagem em tempo real.
79

5 Conclusão

De modo geral, quando se fala em processamento de alto desempenho computacional


ou computação de alto desempenho, já se associa o uso de supercomputadores ou computadores
muito bem configurados com super placas para processamento gráfico, muito espaço de
armazenamento e muita memória disponível. Neste ambiente o alto desempenho já está presente
antes de qualquer atividade. Compete ao desenvolvedor a adequação do seu programa para
usufruir, desfrutar, explorar todo potencial computacional oferecido. Ressalta-se que esta
atividade não é nada trivial, mas está restrita à otimização e implementações no código fonte,
sendo que os demais setores já se encontram em sua plenitude, não necessitando de
configurações.
O problema proposto nesta pesquisa abordou esta proposição, pois também buscou a
melhoria do desempenho computacional só que considerando-se um ambiente computacional
com uma série de restrições e limitações. Os primeiros resultados obtidos na fase de treinamento
e preparação do cenário computacional, mostraram que somente a otimização do código e a
inclusão de técnicas de paralelismo, apesar de terem obtidos ganhos de desempenho, não foram
satisfatórios. Verificou-se então a importância de entender as limitações do ambiente em uso e
identificar os elementos que poderiam contribuir para que estas restrições iniciais fossem
vencidas e qual a melhor técnica a ser adotada, visando acelerar o processamento das imagens
obtidos de um sensor imageador.
Para isso, foi apresentada uma proposta de aceleração de desempenho que teve como
objetivo a abstração do problema de um ambiente computacional reduzido, como é o caso dos
computadores de placa única, para compor um cenário com os principais elementos com
influência no desempenho computacional. A organização destes elementos de forma
hierárquica, em camadas, também contribuiu para melhor visualização dos elementos físicos e
dos elementos que trabalham com a parte lógica do problema.
Os diferentes estudos de casos analisados indicaram que a somatória dos fatores de
aceleração, impulsionadas pela aplicação do processamento paralelo, podem trazer resultados
expressivos chegando a melhorias de desempenho na ordem de 80% em relação ao
processamento inicial.
Face aos resultados obtidos, a metodologia apresentada mostrou-se promissora a ser
aplicada em sistemas embarcados onde ocorre um ambiente computacional reduzido e com
restrições.
80

5.1 Proposta de trabalhos futuros

1. Adaptar o algoritmo para trabalhar com vários computadores embarcados configurados com
uma arquitetura de memória distribuída (cluster) e explorar o paralelismo utilizando Message
Passing Interface (MPI).

2. Ampliar a metodologia proposta nesta dissertação para atender os requisitos impostos pela
arquitetura de memória distribuída, incluindo a análise e os problemas que uma infraestrutura
de rede local de computadores pode trazer para um ambiente embarcada.

3. Utilizar outros modelos de Single Board Computer que tenham uma unidade de
processamento gráfico mais apurada como a SBC Jatson da NVIDIA e verificar se somente com
a GPU é possível atingir resultados expressivos.

4. Neste trabalho o paralelismo foi explorado utilizando a API OpenMP. A sugestão para
possíveis trabalhos, seria utilizar a mesma proposta de metodologia de aceleração mais utilizar
outras APIs que também trabalhem com memória compartilhada e fazer a comparação de
desempenho.
6 Referências

AGUILAR, S. L.C.; SANTOS, J. T. O uso de veículos aéreos não tripulados (VANTs)


na operação de paz da ONU na República Democrática do Congo. Revista
Conjuntura Austral. 2018; 46-61 DOI: https://doi: 10.22456/2178-8839.82832.
ALECRIN, E. Cartões SD e micros: velocidades, tipos e capacidades, 2018.
InfoWester. Disponível em:
<https://www.infowester.com/sd_microsd.php#velocidade>. Acesso em: 20 Ago. 2020.

AMERIDROID, AmeriDroid High-Performance Eletronics, 2020. Odroid-MC1 Solo.


Disponível em: https://ameridroid.com/products/odroid-mc1-
solo?rastype=raa_reco_related&fp=3. Acesso em: 28 jul. 2020.

ARANTES, B.H.T; ARANTE, L.T. COSTA, E. M.; VENTURA M.V.A. Drone


Applied in Digital Agriculture - Ipê Agronomic Journal - v. 3 n. 1, 2019

ARDITO, L.; TORCHIANO, M. Creating and Evaluating a Software Power Model for
Linux Single Board Computers, 2018 International Workshop on Green And
Sustainable Software, p. 1-8. Disponível em:
<https://doi.org/10.1145/3194078.3194079>.

BACKES, A. R.; JUNIOR, J. J. M. S. Introdução a Visão Computacional usando


Matlab. Rio de Janeiro; Alta Books 2016. 260p.
BAJI, T. Evolution of the GPU Device widely used in AI and Massive Parallel
Processing, 2018 IEEE 2nd Electron Devices Technology and Manufacturing
Conference , Kobe, 2018, pp. 7-9, Disponível em:
<https://doi:10.1109/EDTM.2018.8421507>.

BAI, J.; SHI Y.; ZHAO, G. "Research on electromagnetic interference of vehicle GPS
navigation equipment," 2017 IEEE 5th International Symposium on Electromagnetic
Compatibility (EMC-Beijing), Beijing, 2017, pp. 1-5, Disponível em:
<https://doi:10.1109/EMC-B.2017.8260366>.

BALAMURUGAN, G.; VALARMATHI, J.; NAIDU, V. P. S. Survey on UAV


navigation in GPS denied environments. In: International Conference on Signal
Processing, Communication, Power and Embedded System, 2016, Paralakhemundi,
India. Proceedings [...] IEEE, 2016. p. 198–204. Disponível em:
<http://ieeexplore.ieee.org/document/7955787>. Acesso em:: 10 jun. 2019.

BEZ, J. L.; BERNART, E. E.; SANTOS, F. F.; SCHNORR, L. M.; NAVAUX, P. O. A.


Análise da Eficiência Energética de uma Aplicação HPC de Geofísica em um
Cluster de Baixo Consumo, Universidade Federal do Rio Grande do Sul – Porto
Alegre, 2015.
82

BRAGA, J. R. G.; SHIGUEMORI, E.H.; CAMPOS VELHO, H.F. Determining the


factory of unmanned aerial vehicles by a new approach to the particle filter.
Computational Mechanics, v. 36, p. 683, 2018.

BRAGA, J. R.G. Navegação autônoma de vant por imagens LIDAR' 15/05/2018 307 f.
Doutorado em computação aplicada - Instituto Nacional de Pesquisas Espaciais, São
José dos Campos – INPE – 2018.

BRANCO, D.; HENRIQUES P. R. Impact of GCC optimization levels in energy


consumption during C/C++ program execution, 2015 IEEE 13th International
Scientific Conference on Informatics, Poprad, 2015, pp. 52-56, DOI: https://doi:
10.1109/Informatics.2015.7377807.

BRASIL. Comando da Aeronáutica. Departamento de Controle do Espaço Aéreo.


CNS/ATM Glossário. Disponível em:
<https://www.decea.gov.br/?i=utilidades&p=glossario>. Acesso em: 18 jul. 2020.

BOTOR, T.; HABIBALLA, H. Comparison of parallel data processing and its


performance. In: AIP Conference Proceedings. Proceedings [...]. AIP Publishing,
2017. p. 80010.

CÁCERES, P. L.; PAGNOZZI, F.; FRANZIN, A.; STÜTZLE, T. Automatic


Configuration of GCC Using Irace. Artificial Evolution. EA 2017. Lecture Notes in
Computer Science, vol 10764. Springer, Cham. DOI: https://doi.org/10.1007/978-3-
319-78133-4_15

CAMPOS VELHO H. F. Odometria Visual para a Navegação Autônoma de VANT,


Revista Cereus v.11 n.1, 2019. Disponível em:
<http://ojs.unirg.edu.br/index.php/1/article/view/2697>. Acesso em: 20 mai. 2020.

CANINOSLOUCOS.ORG. Caninusloucos, 2020. Labrador 64 bits. Disponível em


<https://caninosloucos.org/pt/labrador-64-pt/>. Acesso em: 14 ago. 2020.

CARLETTI, V.; GRECO, A.; PERCANNELLA, G.; VENTO, M. Age from Faces in
the Deep Learning Revolution, IEEE Transactions on Pattern Analysis and
Machine Intelligence, vol. 42, no. 9, pp. 2113-2132, 1 Sept. 2020, Disponível em:
<https://doi: 10.1109/TPAMI.2019.2910522>. Acesso em: 5 jul. 2020.

CENAPAD – Introdução ao OpenMP - Centro Nacional de Processamento de Alto


Desempenho – Univesidade Estadual de Campinas, 2014. Cap 2, p07. Disponível em:
<https:// www.cenapad.unicamp.br/servicos/treinamentos/openmp.shtml> . Acesso em:
12 mai. 2020.

CHOI, H.; GEEVES, M.; ALSALAM, B.; GONZALEZ, F. Open source computer-
vision based guidance system for UAVs on-board decision making, 2016 IEEE
Aerospace Conference, Big Sky, MT, 2016, pp. 1-5, Disponível em:
<https://doi:10.1109/AERO.2016.7500600>. Acesso em: 10 jul. 2020.
83

CONTE, G.; DOHERTY, P. An Integrated UAV Navigation System Based on Aerial


Image Matching, 2008 IEEE Aerospace Conference, Big Sky, MT, 2008, pp. 1-10,
Disponível em: <https://doi: 10.1109/AERO.2008.4526556>. Acesso em: 10 jul. 2020.

COUTO, L.F.M.; Arquitetura de computação paralela para resolução de problemas


de dinâmica dos fluídos e interação fluído-estrutura. 2016. 238 f. – Dissertação
(Mestrado em Engenharia Civil) – Escola Politécnica da Universidade de São Paulo,
São Paulo 2016.

COX, S.J.; Cox, J.T.; Boardman, R.P. et al. Iridis-pi: a low-cost, compact demonstration
cluster. Cluster Computing 17, 349–358 (2014). Disponível em:
<https://doi.org/10.1007/s10586-013-0282-7>. Acesso em: 01 set. 2020.

CURVELLO, A.M. L. Proposta para acelerar o desempenho do algoritmo de visão


computacional em sistemas embarcados. Dissertação (Mestrado em Engenharia
Elétrica) - Universidade de São Paulo - Escola de Engenharia de São Carlos - São
Carlos, 2016.

CRESSON, R.; MICHEL J.; MALLEN, A.; Lassalle P. Large Scale Segmentation
algorithm for Object Based Image Analysis suitable for HPC architectures in hybrid
distributed-shared memory context. GEOBIA 2018 - Centre d'Etudes Spatiales de la
BIOsphère (CESBIO). Société T.E.T.I.S, Montpellier, France, 2018.

DATA SCIENCE ACADEMY, O que é visão computacional. 2018. Disponível em:


<http://datascienceacademy.com.br/blog/o-que-e-visao-computacional/>. Acesso em: 5
ago. 2020.

DIGILENT. Digilent National Instruments Company, 2020. Reference Zybo Zynq-


7000. Disponível em <https://reference.digilentinc.com/reference/programmable-
logic/zybo/start> Acesso em: 10 mai. 2020.

DING, Y.; ZHAO, Q.; LI, B.; YUAN, X. Facial Expression Recognition From Image
Sequence Based on LBP and Taylor Expansion, in IEEE Access, vol. 5, pp. 19409-
19419, 2017, Disponível em: <https://doi: 10.1109/ACCESS.2017.2737821>. Acesso
em: 15 jul. 2020.

DJI. Phantom 3 Standard, 2020. Especificações. Disponível em


<https://www.dji.com/br/phantom-3-standard>. Acesso em: 10 set. 2020.

DUAN ,Y.; EDWARDS, J. S.; DWIVEDI, Y. K. Artificial intelligence for decision


making in the era of Big Data – evolution, challenges and research agenda.
International Journal of Information Management. Volume 48, October 2019,
Pages 63-71
84

EDWARDS, J.; Computação de Alto Desempenho, Network World – CIO IDG 2019
Disponível em: <https://cio.com.br/computacao-de-alto-desempenho-afinal-voce-vai-
precisar-dela>. Acesso em: 20 mai. 2020.

EXAFLOP, O que é PAD? Exaflop Sistemas 2019. Disponível em:


<https://www.exaflop.com.br/o-que-e-pad/>, Acesso em: 12 jun. 2019.

FAZENDA, Á. L.; STRINGHINI, D. Como programar aplicações de alto desempenho


com produtividade. 38º Jornada de Atualização em Informática (JAI) XXXIX
Congresso da Sociedade Brasileira de Computação Belém - PA, 2019.

FLECK, L.; TAVARES, M. H. F.; EYNG E., HELMANN, A. C.; ANDRADE, M. A.


M.; Redes Neurais Artificiais: Princípios Básicos. Revista Eletrônica Científica
Inovação e Tecnologia, Universidade Tecnológica Federal do Paraná. v. 1, n. 13, p.
47-57, jan./jun. 2016. ISSN 2175-1846.

FLIR SYSTEM. Centro de Suporte, 2020. FlirDuo. Disponível em:


<https://www.flir.com.br/support/products/duo/#Documents> Acesso em: 25 ago. 2020.

GARCIA, F. D. Breve Histórico da ARM. Embarcados, 2017. Disponível em :


<https://www.embarcados.com.br/breve-historico-da-arm>. Acesso em: 10 mai. 2020.

GEBALI, F. Algorithms and Parallel Computing, Volume 84 de Wiley Series on


Parallel and Distributed Computing John Wiley & Sons, 2011 - 364 p.

GOLTZ, G. A. M.; SHIGUEMORI, E.H.; CAMPOS VELHO, HAROLDO F.


Estimation of UAV position by image processing using neural networks. In: X
Brazilian Congress of Computational Intelligence, 2011, Fortaleza, CE.

GOULART, C. S.; PERSECHINO, A.; ALBUQUERQUE, M. P. Introdução à


biblioteca de processamento de imagens OpenCV - Centro Brasileiro de Pesquisas
Físicas. Notas Técnicas, v. 8, n. 2, p. 1–29, 2018. Disponível em:
https://dx.doi.org/10.7437/NT2236-7640/2018.02.005. Acesso em: 25 ago. 2020.

GUERRA, R E. MARTEL, J. KHAN, S. LÓPEZ, P. ATHANAS, R. SARMIENTO, On


the Evaluation of Different High-Performance Computing Platforms for Hyperspectral
Imaging: An OpenCL-Based Approach, in IEEE Journal of Selected Topics in
Applied Earth Observations and Remote Sensing, vol. 10, no. 11, pp. 4879-4897,
Nov. 2017.

GULO, C. A. S. J. High-Performance Computing Techniques for Efficient


Processing and Analysis of Complex Images. (Doctoral Program in Computer
Engineering) Faculty of Engineering, University of Porto, 2015.

GROVES, P.D. Principles od GNSS, Inertial and Multisensor Integrated Navigation


System. 1o.Edição ed. Boston: Artech House, 2008.
85

HAFID, A.; BENOUAR S.; KEDIR-TALHA M.; ABTAHI F.; ATTARI M. and
SEOANE F. Full Impedance Cardiography Measurement Device Using Raspberry PI3
and System-on-Chip Biomedical Instrumentation Solutions, in IEEE Journal of
Biomedical and Health Informatics, vol. 22, no. 6, pp. 1883-1894, Nov. 2018,
Disponível em: <https://10.1109/JBHI.2017.2783949>. Acesso em: 20 ago. 2020.

HARTLEY, R.; KAMGAR-PARSI B.; NARBER C. Using Roads for Autonomous Air
Vehicle Guidance, in IEEE Transactions on Intelligent Transportation Systems, vol.
19, no. 12, pp. 3840-3849, Dec. 2018, Disponível em:
<http://10.1109/TITS.2018.2799485>. Acesso em: 20 ago. 2020.

HISHAM, M. B.; YAAKOB S. N.; RAOF, R. A. A.; NAZREN, A. B. A.; N. WAFI M.


Template Matching using Sum of Squared Difference and Normalized Cross
Correlation, 2015 Kuala Lumpur. In: Student Conference on Research and
Development Proceedings [...]. IEEE, 2015, pp. 100-104, Disponível em:
<http://10.1109/SCORED.2015.7449303>. Acesso em: 20 ago. 2020.

HUGHES, J.; DAM, A.; MCGUIRE, M.; SKLAR, D.; FOLEY, J.; FEINER, S.;
AKELEY, K. Computer graphics: Principles and Practice. 3. ed. Boston, MA, USA:
Addison-Wesley Professional, 2013. 1264 p. 60, 61, 66

INOUE, Y.; YOKOYAMA M. Drone-Based Optical, Thermal, and 3d Sensing for


Diagnostic Information in Smart Farming – Systems and Algorithms, 2019 Japan.
In:International Geoscience and Remote Sensing Symposium, Yokohama Proceedings
[...] IEEE, 2019, pp. 7266-7269.

INSTITUTO NACIONAL DE PESQUISAS ESPACIAIS- INPE. Tutorial de


Geoprocessamento, 2006 . Disponível em
http://www.dpi.inpe.br/spring/portugues/tutorial/introducao_sen.html. Acesso em: 20
ago. 2020.

IZARIO, B. R. F.; MARINS, C. N. H. M.; IZARIO, D. R. F.; IANO Y. Estudo do


aquecimento de um Raspberry Pi 3 em manipulação de imagem e implementação de
sistema Térmico – Ciência Exatas e da Terra no Seculo XXI – 2019 - Editora Atena.
P.72 – 82. Diponível em: <https://10.22533/at.ed.5141924059>. Acesso em: 05 mai.
2020.

JEON, Y.; C. Kim and Y. Kim, "Performance acceleration of neural networks on


mobile embedded systems," 2018 Las Vegas. In: International Conference on Consumer
Electronics Proceedings [...]. IEEE, 2018, pp. 1-2, Disponível em:
<https://10.1109/ICCE.2018.8326127>. Acesso em: 22 ago. 2020.

JENSEN, J. R. Sensoriamento remoto do ambiente: Uma Perspectiva em Recursos


Terrestres. 598p, Editora Parêntese, 2009.

JUNG, N.; CHOI, M.; LIM C. Development of Drone Operation System for Diagnosis
of Transmission Facilities, Jeju 2018, 21st. In: International Conference on Electrical
Machines and Systems. Proceedings [...]. ICEMS, 2018, pp. 2817-2821.
86

KAY, J. Introduction to Real-time Systems. 2017. Open Source Robotics Foundation.


Disponível em: <http://design.ros2.org/articles/realtime_background.html>. Acesso em:
10 jun. de 2018.

KHANAL, S.; FULTON J., SHEARER S., An overview of current and potential
applications of thermal remote sensing in precision agriculture, Computers and
Electronics in Agriculture Volume 139, 15 June 2017, Pages 22-32
Disponível em: <https://doi.org/10.1016/j.compag.2017.05.001>. Acesso em: 08 set.
2020.

KUTTY, S. B., SAAIDIN, S., YUNUS, P. N. A. M. and HASSAN S. A. "Evaluation of


canny and sobel operator for logo edge detection," 2014 International Symposium on
Technology Management and Emerging Technologies, Bandung, 2014, pp. 153-156,
Disponível em: <https://10.1109/ISTMET.2014.6936497>. Acesso em: 08 set. 2020.

KWON, W.; PARK J. H.; LEE M.; HER J.; KIM S.; SEO J. Robust Autonomous
Navigation of Unmanned Aerial Vehicles (UAVs) for Warehouses’ Inventory
Application, in IEEE Robotics and Automation Letters, vol. 5, no. 1, pp. 243-249,
Jan. 2020, Disponível em: <https://10.1109/LRA.2019.2955003>. Acesso em: 08 set.
2020.

KINANEVA, D., HRISTOV, G., RAYCHEV, J.; ZAHARIEV P. Application of


Artificial Intelligence in UAV platforms for Early Forest Fire Detection 27th, 2019
Sofia, Bulgaria. In: National Conference with International Participation Proceedings
[...]. TELECOM, 2019, pp. 50-53, Disponível em:
<https://10.1109/TELECOM48729.2019.8994888>. Acesso em: 08 set. 2020.

KUROSWISKI, A. R. Navegação Aérea Autônoma Baseada em Visão


Computacional. 2017. 107f. Trabalho de Conclusão de Curso. (Graduação em
Engenharia Eletrônica) - Instituto Tecnológico de Aeronáutica, São José dos Campos.

KUROSWISKI, A. R.; OLIVEIRA N. M. F.; SHIGUEMORI É. H. Autonomous long-


range navigation in GNSS-denied environment with low-cost UAV platform, 2018,
Vancouver. In: International Systems Conference. Proceedings [...]. IEEE, 2018, pp. 1-
6, Disponível em: <https://10.1109/SYSCON.2018.8369592>. Acesso em: 06 ago.
2020.

LACERDA, W. S. (2004). Uma CPU simples para fins didáticos. INFOCOMP Journal
of Computer Science, 2(1), 46-52. Disponível em:
<http://infocomp.dcc.ufla.br/index.php/infocomp/article/view/48>. Acesso em: 08 ago.
2020.

LEE, K.; SIM J. Cloud Removal of Satellite Images Using Convolutional Neural
Network With Reliable Cloudy Image Synthesis Model, 2019, Taipei, Taiwan. In:
International Conference on Image Processing. Proceedings [...]. IEEE-ICIP, 2019, pp.
3581-3585.
87

LEMLEY, J.; BAZRAFKAN, S.; CORCORAN, P. Smart Augmentation Learning an


Optimal Data Augmentation Strategy, in IEEE Access, vol. 5, pp. 5858-5869, 2017,
Disponível em:<https://10.1109/ACCESS.2017.2696121>. Acesso em: 08 ago. 2020.

LORENZON, A. F. Avaliação do desempenho e consumo energético de diferentes


interfaces de programação paralela em sistemas embarcados e de propósito geral-
(Mestrado em Ciência da Computação) Universidade Federal do Rio Grande do Sul.
Instituto de Informática, 2014.

LORENZANA-GERARDO, J. C.; DÍAZ-RESÉNDIZ J. L, RIVAS-ARAIZA E. A. IoT


based robust electrical energy monitoring system with Programmable Logic Controller,
2018, Concepcion. In: International Conference on Automation. Proceedings [...].
IEEE ICA-ACCA , 2018, pp. 1-6. Disponível em:
<https://10.1109/ICA-ACCA.2018.8609816>. Acesso em: 10 ago. 2020.

LUCCA, E.V.D e BASTOS A. F., Sistema Imageador Infravermelho Termal:


Características, Descrição – X Simpósio Brasileiro de Sensoriamento Remoto, Foz do
Iguaçu 2001- INPE p. 1433-1440.

MARQUES FILHO, E. A. Sistema De Navegação Inercial GPS/INS De Baixo Custo


Com Compensação De Erros Por Redes Neurais Artificiais. Tese (Doutorado em
Engenharia e Tecnologia Espaciais) - INPE 2011.

MARTINS, L.; MAURI B.; MACHADO O. F.: Revisitando Suas Funcionalidades e


Respectivos Protocolos. Revista Interdisciplinar As Camadas Do Modelo OSI
Pensamento Científico, v. 1, n. 2, 30 dez. 2015.

MATTHEWS, S. J, Harnessing single board computers for military data analytics


in Military Applications of Data Analytics (K. Huggins, ed.), ch. 4, pp. 63-77, CRC
Press, Taylor & Francis, 2018. Disponível em:
<https://doi.org/10.1201/9780429445491>. Acesso em: 10 ago. 2020.

MERA-ROMO, D. E. and RODRÍGUEZ-SOLÍS, R. A. Low Power and Miniaturized


Back-End Processing System for an L-Band Radiometer based on ARM Embedded
Microprocessor, 2019 Orlando, FL, USA. In: Radio and Wireless Symposium.
Proceedings [...]. IEEE - RWS, pp. 1-4, Dsiponível
em:<https://10.1109/RWS.2019.8714392>. Acesso em: 11 ago. 2020.

MEDEIROS, G. E. Avaliação do Impacto de Flags de Compilação na Ocorrência e


Propagação de Soft Errors em Sistemas Multiprocessados Baseados em NoC. 2020.
65 f. Dissertação (Mestrado em microeletrônica).Universidade Federal do Rio Grande
do Sul. Porto Alegre, RS, 2020.

MEIRELES, P. R. M. Monitoramento de métricas de código-fonte em projetos de


software livre. 2013. 161 f. Tese (Doutorado em Ciências) - Instituto de Matemática e
Estatísticas. Universidade de São Paulo São Paulo, 2013.
88

MELO, A. d. S.; SILVA FILHO, P.; SHIGUEMORI, E. H. Automatic landmark


selection for uav autonomous navigation. In: CAPPABIANCO, F. A. M. et al. (Ed.).
Electronic Proceedings of the 29th, 2016, São José dos Campos SP, Brazil. Proceedings
[...]. SIBGRAPI’16,: [s.n.], 2016. Disponível em: <https://gibis.unifesp.br/sibgrapi16>.
Acesso em: 04 out. 2020.

MENESES, P. R.; ALMEIDA, T. D.; MENESES, P. R. Introdução ao processamento


de imagens de sensoriamento remoto. Brasília: CNPq, 2012. Cap. 2, p. 34.

MIRZAEINIA, A.; HASSANALIAN, M. LEE K. Drones for Borders Surveillance:


Autonomous Battery Maintenance Station and Replacement for Multirotor Drones
- AIAA Scitech 2020 Forum – Disponível em:<https://doi.org/10.2514/6.2020-0062>.
Acesso em:

MOREIRA, L. et al. A Drone-borne Multiband DInSAR: Results and Applications,


2019 IEEE Radar Conference (RadarConf), Boston, MA, USA, 2019, pp. 1-6, DOI:
10.1109/RADAR.2019.8835653.

MORI, A.M. O uso de sistema inercial para apoiar a navegação autônoma. 2013.
180p.Dissertação (Mestrado em ciências) – Escola Politécnica da Universidade de São
Paulo. São Paulo, 2013

MYALAPALLI, V. K.; MYALAPALLI J. K.; SAVARAPU P. R. High performance C


programming, 2015 Pune. In: International Conference on Pervasive Computing
Proceedings [...]. ICPC, 2015, pp. 1-6, DOI: 10.1109/PERVASIVE.2015.7087005.

NAGATA, R. Y. Técnicas de Alto Desempenho aplicadas à Sistemas de Visão


Computacional para navegação autônoma de VANTs; 2018; Trabalho de Conclusão
de Curso; Ciência da Computação. Universidade Federal de São Paulo.

NUNES, L. S. N. Utilização de técnicas e instruções especiais para acelerar o


casamento de padrões exato e aproximado em GPU. 2018. xi, 60 f., il. Dissertação
(Mestrado em Informática) Universidade de Brasília, Brasília, 2018.

NOVO, E. M. L. M. Sensoriamento remoto: Princípios e Aplicações. 4o. ed. São


Paulo: Blucher, 2010. 387 p.

NVIDIA. Nvidia store, 2020. Kit Desenvolvedor JETSON Nano. Disponível em


<https://nvidiastore.com.br/jetson>. Acesso em: 15 Ago. 2020.

OLIVEIRA, L. T. - Avaliação do uso de sensor termal a bordo de VANT através de


análises radiométricas, espectrais, espaciais e posicionais – Dissertação (Mestrado
em Sensoriamento Remoto) – Instituto Nacional de Pesquisas Espaciais, São José dos
Campos, 2017. INPE, 2017.

OLIVETTI, Diogo. Câmeras multi e hiperespectral aerotransportadas:


contribuições para monitoramento de qualidade de águas continentais. 2019. 144
f., il. Tese (Doutorado em Geociências Aplicadas)—Universidade de Brasília, Brasília,
2019.
89

PACHECO, P. Drones avançam e conquistam mercados, 2019. Disponível em


<https://www.em.com.br/app/noticia/economia/2019/05/30/internas_economia,1057758
/drones-avancam-e-conquistam-mercados.shtml>. Acesso em: 10 mai. 2020.

PATTERSON, D.A., HENNESSY, J.; Organização e Projeto de Computadores: A


Interface Hardware/Software. Elsevier Brasil, 2017. 680p.

PECHARROMÁN, J. M. P.; VEIGA, Ricardo. Estudo Sobre a Indústria Brasileira e


Europeia de Veículos Aéreos Não Tripulados. Ministério da Indústria, Comércio
Exterior e Serviços, 2018. Disponível em:
http://www.mdic.gov.br/images/publicacao_DRONES-20161130-20012017-web.pdf >
Acesso em: 04 out.2020.

PEDRINI, H,; SCHWARTZ, W. R. Análise de imagens digitais: princípios,


algoritmos e aplicações, Editora Cengage 2008. 506 p.

PHILIPPE, O. A. N., CÉSAR, A. F. R., LAÉRCIO L. P., Fundamentos das Arquiteturas


para Processamento Paralelo e Distribuído. Escola Regional de Alto Desempenho –
ERAD, 2011.

PONCE, L. M.; SANTOS, W. MEIRA W.; GUEDES, D. Extensão de um ambiente de


computação de alto desempenho para o processamento de dados massivos. XXXVI
Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos. Porto
Alegre: Sociedade Brasileira de Computação, maio 2018.

PRUDKIN, G.; BREUNIG, F. M. Drones e Ciência: teoria e aplicações


metodológicas, Santa Maria, RS: FACOS-UFSM, 2019 e-book (v.1) Disponível em
<https://repositorio.ufsm.br/bitstream/handle/1/18774/DRONES%20e%20CIE >.
Acesso em: 04 set. 2020

QUEBRAJO, L.; PEREZ-RUIZ, M.; PÉREZ-URRESTARAZU L.; MARTÍNEZ G.,


EGEA G. Linking thermal imaging and soil remote sensing to enhance irrigation
management of sugar beet,Biosystems Engineering,Volume 165,2018,Pages 77-
87,ISSN 1537-5110, DOI: https://doi.org/10.1016/j.biosystemseng.2017.08.013.

RAHMAN, M.; KHALIB, Z. I. A.; AHMAD, R. B. Performance Evaluation of PNtMS:


A Portable Network Traffic Monitoring System on Embedded Linux Platform, 2009,
Singapore. In: International Conference on Computer Engineering and Technology.
Proceedings [...], 2009, pp. 108-113, DOI: 10.1109/ICCET.2009.37.

REED, D. A.; DONGARRA, J. Exascale Computing and Big Data, Communications


of the ACM, June 2015. DOI: https://doi.org/10.1145/2699414

RIZK, M.; MROUE A.; FARRAN, M. CHARARA J. Real-Time SLAM Based on


Image Stitching for Autonomous Navigation of UAVs in GNSS-Denied Regions, 2020,
Genova, Italy. In: International Conference on Artificial Intelligence Circuits and
Systems. Proceedings [...]. IEEE AICAS, 2020, pp. 301-304, DOI:
10.1109/AICAS48895.2020.9073793.
90

ROOS, D. R. Aprendizado de Máquina Aplicado à Odometria Visual para


Estimação de Posição de Veı́culos Aéreos Não Tripulados. 2018, 106 f. Dissertação
(Mestrado em Ciência da Computação). Universidade Federal de São Paulo, São José
dos Campos – SP, 2018

RODRIGUES, C. H. M., Extração de fachadas de edifícios em imagens obtidas com


UAV, 2016. 54f. Dissertação (mestrado em Engenharia Geográfica), Universidade de
Lisboa, Faculdade de Ciências, 2016. Disponível em
<http://hdl.handle.net/10451/27331>. Acesso em: 04 set. 2020.

ROGALSKI, A. Infrared detectors, 2nd ed. 2011. CRC Press, Taylor & Francis Group.
898 p.

ROSTAMI, S. R. M.; GHAFFARI-MIAB M. Finite Difference Generated Transient


Potentials of Open-Layered Media by Parallel Computing Using OpenMP, MPI,
OpenACC, and CUDA, in IEEE Transactions on Antennas and Propagation, vol.
67, no. 10, pp. 6541-6550, Oct. 2019, Disponível em:
<https://10.1109/TAP.2019.2920253>. Acesso em: 10 ago. 2020.

RYAN-MOSLEY, T, WINICK E.; KAKAES, K. - The number of satellites orbiting


Earth could quintuple in the next decade - MIT Technology Review - Jun 26, 2019.

SAMPAIO, J. V.; MACIEL, D. A. Lacerda M.G.; Kux H.J.H. - Avaliação da exatidão


planimétrica de um ortomosaico gerado a partir de imagens termais obtidas a bordo de
Vant – XIX Simpósio Brasileiro de Sensoriamento Remoto – SBSR 2019 Santos-SP-
Braisl .

SARANYA, K. C.; NAIDU, V. P. S.; SINGHAL, V.; TANUJA, B. M. Application of


vision based techniques for UAV position estimation, 2016, Bangalore. In: International
Conference on Research Advances in Integrated Navigation Systems. Proceedings [...]
RAINS, 2016, pp. 1-5. Disponível em: <https://10.1109/RAINS.2016.7764392>.
Acesso em 15 set. 2020.

SCHNORR, L. M. Análise de desempenho de programas paralelos - Escola Regional


de Alto Desempenho – UFRGS - Alegrete, RS, Brasil Março 2014. Disponível em:
<http://www.inf.ufrgs.br/~schnorr/download/talks/erad2014-minicurso-slides.pdf>
Acesso em: 20 jul. 2020.

SENA, M.C.R.; COSTA, J.A.C. Tutorial OpenMP C/C++ - Programa Campus


Ambassador – HPC Sun Microsystem, Maceió – Alagoas, 2008. p11.

SILVA FILHO, P. F. F. Automatic landmark recognition in aerial images for the


autonomous navigation system of unmanned aerial vehicles. 2016, 146 f.
Dissertação (Mestrado em Ciências), Instituto Tecnológico de Aeronáutica, São José
dos Campos, 2016.
91

SILVA, C.A.O.; GOLTZ, G.A.M.; SHIGUEMORI, E. H.; CASTRO, C.L.; Campos


Velho, H. F.; BRAGA, A.P. D.E. Image matching applied to autonomous navigation of
unmanned aerial vehicles. International Journal of High-Performance Systems
Architecture, v. 6, p. 205-212, 2016.

SILVA, W. Autonomous navigation of UAVs at night with thermal infrared


images. Dissertation (Master in Applied Computing) - National Institute for Space
Research (INPE), São José dos Campos, 2016.

SILVA, W.; SHIGUEMORI, E. H.; VIJAYKUMAR, N. L.; Campos Velho, H. F.


Estimation of UAV Position with use of Infrared Images. In: The 9th International
Conference on Sensing Technologies-ICST, 2015, Auckland. Proceedings of The 9th
International Conference on Sensing Technologies, 2015. v. 1. p. 1-8.

SOUZA, V. C. Navegação autônoma por visão monocular sobre linhas de


transmissão elétrica com base em redes neurais e transformada de hough. 2020. 1
recurso online (76 p.) Tese (Doutorado Engenharia Mecânica ) - Universidade Estadual
de Campinas, Faculdade de Engenharia Mecânica, Campinas, SP. 2020.

SPARKFUN. Sparkfun Eletronics, 2020. Raspberry PI 3 B+. Disponível em:


<https://www.sparkfun.com/products/14643> . Acesso em: 28 jul 2020.

STALLINGS, W., Arquitetura e organização de computadores / William Stallings.


8. ed. — São Paulo : Pearson Pratice Hall, 2010.

SUN, Y., WANG, C.; QU, L. An Object Detection Network for Embedded System,
2019, Shenyang, China. In: International Conferences on Ubiquitous Computing &
Communications. Proceedings [...] IEEE, 2019, pp. 506-512.

SULZBACH, Maurício - Programação paralela híbrida para cpu e gpu: uma


avaliação do openacc frente a openmp e cuda. 2014. 97 p.; Dissertação (Mestrado em
Ciência da Computação) - Universidade Federal de Santa Maria RS, 2014.

STRATTON, S., STEVENSON, D.; MAGNIFICO, M. Aeroflex Single Board


Computers & instrument circuit cards for nuclear environments measuring and
monitoring," 2013, Marseille. In: 3rd International Conference on Advancements in
Nuclear Instrumentation, Measurement Methods and their Applications Proceedings
[...] ANIMMA, 2013, pp. 1-5, Disponível em:
<https://10.1109/ANIMMA.2013.6728070>. Acesso em 22 ago. 2020.

TANEMBAUM, A. S. Organização Estruturada de Computadores. Rio de Janeiro:


Livros Técnicos e Científicos, 1999, 3a edição, 460p.

TANG, L.; SHAO, G. Drone remote sensing for forestry research and practices. J.
For. Res. 26, 791–797, 2015. Disponível em:
<https://doi.org/10.1007/s11676-015-0088-y>. Acesso em: 20 jul. 2020
92

TEIXEIRA, J. O que é inteligência Artificial. 3º.Edição. E-Galáxia, 2019. 64 pag.

THOMAS, D.; SHANMUGASUNDARAM, M. A Survey on Different Overclocking


Methods, 2018, Coimbatore. In: Second International Conference on Electronics,
Communication and Aerospace Technology. Proceedings [...] ICECA, 2018, pp. 1588-
1592, Disponível em: <https://10.1109/ICECA.2018.8474921>. Acesso em 10 set.
2020.

TURNER, I. L.,HARLEY M.D., DRUMMOND C.D.,UAVs for coastal surveying,


Coastal Engineering, Volume 114, 2016, Pages 19-24, Disponível em:
<https://doi.org/10.1016/j.coastaleng.2016.03.011>. Acesso em 10 set. 2020.

TROBEC, R.; SLIVNIK, B.; BULIĆ, P.; ROBIČ, B. Introduction to Parallel


Computing: From Algorithms to Programming on State-of-the-Art Platforms, 256 p.
Springer International Publishing, 2018.

TRUJANO, F.; CHAN B., MAY R. Security Analysis of DJI Phantom 3 Standard,
2016. Disponível <https://courses.csail.mit.edu/6.857/2016/files/9.pdf>. Acesso em: 01
out. 2020.

UPTON, E.; GAFACREE Gareth, Raspberry PI: Guia do Usuário – Alta books
Editora, rio de Janeiro, 2017.

VIEIRA, G.; BARBOSA, J.; LEITÃO, P. and SAKURADA, L. Low-Cost Industrial


Controller based on the Raspberry Pi Platform, 2020, Buenos Aires, Argentina. In:
International Conference on Industrial Technology. Proceedings [...] ICIT, 2020, pp.
292-297. Disponível em:<https://10.1109/ICIT45562.2020.9067148>. Acesso em: 10
set. 2020.

XU, L.; KAMAT, V. R. & MENASSA, C. C. Automatic extraction of 1D barcodes


from video scans for drone-assisted inventory management in warehousing
applications, International Journal of Logistics Research and Applications,
2018, 243-258, Disponível em:<https://10.1080/13675567.2017.1393505>. Acesso em:
10 set. 2020.

YANG, W.; KENLI, LI; KEQIN, LI. A parallel computing method using blocked
format with optimal partitioning for SpMV on GPU - Journal of Computer and
System Sciences, Volume 92, March 2018, Pages 152-170. Disponível em:
<https://doi.org/10.1016/j.jcss.2017.09.010>. Acesso em 12 set. 2020.

YUAN, B.; PANNEERSELVAM, J.; LIU L.; ANTONOPOULOS, N.; Y. LU. An


Inductive Content-Augmented Network Embedding Model for Edge Artificial
Intelligence, in IEEE Transactions on Industrial Informatics, vol. 15, no. 7, pp.
4295-4305, July 2019.
ZEYU, J.; GUOZHU, J. C. A new approach to oil spill detection that combines deep
learning with unmanned aerial vehicles - Computers & Industrial Engineering,
volume 135, September 2019, Pages 1300-1311. Disponível em:
<https://doi.org/10.1016/j.cie.2018.11.008>. Acesso em 10 out. 2020.
FOLHA DE REGISTRO DO DOCUMENTO
1. 2. 3. 4.
CLASSIFICAÇÃO/TIPO DATA REGISTRO N° N° DE PÁGINAS

DM 15 de dezembro de 2020 DCTA/ITA/DM-073-2020 92


5.
TÍTULO E SUBTÍTULO:

Metodologia para aceleração do desempenho em sistemas embarcados em Vants com processamento de imagens
em tempo real.
6.
AUTOR(ES):

Remo César Carnevalli


7. INSTITUIÇÃO(ÕES)/ÓRGÃO(S) INTERNO(S)/DIVISÃO(ÕES):

Instituto Tecnológico de Aeronáutica – ITA


8.
PALAVRAS-CHAVE SUGERIDAS PELO AUTOR:

Sensores. 2. Sistemas embarcados. 3. Alto desempenho


9.PALAVRAS-CHAVE RESULTANTES DE INDEXAÇÃO:

Sensores; Sistemas embarcados; Avaliação de desempenho; Processamento de imagens; Engenharia eletrônica.


10.
APRESENTAÇÃO: (X) Nacional Internacional
ITA, São José dos Campos. Curso de Mestrado. Programa de Pós-Graduação em Ciências e Tecnologias
Espaciais. Área de Sensores e Atuadores Espacial. Orientador: Prof. Dr. Lamartine Nogueira Frutuoso Guimaraes.
Coorientador: Prof. Dr. Elcio Hideiti Shiguemori. Defesa em 16/11/2020. Publicada em 2020.
11.
RESUMO:

As aplicações com uso de Veículos Aéreos Não Tripulados (VANT) e equipados com câmeras estão expandindo
e exigindo cada vez mais respostas rápidas e apuradas para auxiliar nas tomadas de decisões. Com isso, cresce
também a demanda por sistemas de processamento de imagens em tempo real e embarcados, aumentando-se os
requisitos de tempo de processamento, consumo de memória e energia. O emprego de tecnologias de alto
desempenho computacional mostra-se como o estado da arte para este cenário. Pouco se tem explorado o uso de
tecnologias de alto desempenho computacional em sistemas embarcados onde ocorrem restrições como
capacidade de processamento, alimentação elétrica, limitação de espaço, aquecimento, peso, problemas de
comunicação com a estação solo, interferências eletromagnéticas e até mesmo com o clima. Neste contexto, esta
dissertação de mestrado visa apresentar uma metodologia que busca melhorar o desempenho de um sistema de
processamento de imagens obtidas por VANT para processamento em tempo real aplicado á navegação autônoma.
São empregadas técnicas de processamento paralelo, programação híbrida e também fatores de otimização
considerando o cenário computacional envolvido visando a aceleração da aplicação, redução no tempo de
processamento e também extraindo a melhor performance oferecida pelo ambiente computacional. Para os testes
de validação foram utilizados dois modelos de computadores de placa única, adequados para ambientes
embarcados, e um algoritmo que utiliza técnicas de redes neurais no tratamento das imagens coletadas e as
compara com uma base de dados local. A seção de resultados e estudos de casos apresenta os ganhos de
desempenho em função da metodologia aplicada.

12.
GRAU DE SIGILO:

(X ) OSTENSIVO ( ) RESERVADO ( ) SECRETO

Você também pode gostar