Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
REFERÊNCIA BIBLIOGRÁFICA
CESSÃO DE DIREITOS
__________________________________
Remo César Carnevalli
Av. Nove de Julho 34, apt 11, Jd. Apolo
CEP: 12.243.001, São José dos Campos - SP
iii
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
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
Lista de Tabelas
Sumário
1 Introdução .......................................................................................................... 15
1.1 Problema de Pesquisa .............................................................................. 16
3 Metodologia .......................................................................................................... 39
4 Resultados.............................................................................................................. 58
5 Conclusão ............................................................................................................. 79
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.
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.
1.3 Motivação
1.4 Contribuição
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.
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.
2 Fundamentação Teórica
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).
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
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
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.
Recebe imagem
Imagem
aérea do sensor
Georreferênciada
(imagem aérea)
Imagem aérea
monocromática Imagem
Georreferênciada
Monocromática
Filtragem da imagem
Filtragem da imagem
Seleção da Àrea
de Correlação
Extração de Bordas da
Área de Correlação
Imagem da Àrea
de Correlação
Imagem Aérea
(Imagem Borda)
(Imagem Borda)
Correlação Cruzada
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.
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).
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.
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.
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
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).
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.
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.
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).
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.
F J
O O
R I
K N
Região
Região Região Paralela Sequencial
Sequencial
FIGURA 11: Modelo fork-join
#include <omp.h>
#include <iostream>
int main (int argc, char *argv[]) {
int t_id, nt_id;
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
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
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
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
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)
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
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.
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.
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
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.
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.
624
312
156
104
12 25 50
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).
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.
3.5.4 Overclock
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.
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
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.
Típo de Processamento
PARALELO 4.12
ORIGINAL 4.27
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.
4.27
4.24
4.23
(s)
4.21
Paramentros do Swap
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
Métrica: Eficiência
Tempo de processamento (s)
0.387
0.256
Paralelo GPU
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.
Padrão Otimizado
4.27 4.12
2.72
sistemas de tempo real. A Tabela 18 apresenta os modelos para os processamentos que são
realizados durante os estudos de casos.
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.
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.
OTIMIZADO 6.59
Típo de Processamento
HÍBRIDO 7.98
PARALELO 8.62
SERIAL 9.01
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
OTIMIZADO 9.04
Típo de Processamento
HÍBRIDO 12.32
PARALELO 13.69
SERIAL 14.38
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.
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.
OTIMIZADO 39
Típo de Processamento
HÍBRIDO 99
PARALELO 120
SERIAL 136
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
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.
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
Típos de Processamentos
PARALELO 2.53
SERIAL 5.07
0 2 4 6
Tempo de Processamento (s)
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.
OTIMIZADO 3.18
HÍBRIDO 4
PARALELO 4.33
SERIAL 5.26
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
OTIMIZADO 6.54
Tipo do Processamento
HÍBRIDO 12.7
PARALELO 15.06
SERIAL 16.51
OTIMIZADO
Tipo de Processamento
27.49
HÍBRIDO 44.2
PARALELO 46.95
SERIAL 71.52
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.
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.
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.
OTIMIZADO 5.70E-04
Típo do Processamento
HÍBRIDO 5.90E-04
PARALELO 6.30E-04
SERIAL 6.60E-04
OTIMIZADO 0.013
HÍBRIDO 0.048
PARALELO 0.059
SERIAL 0.061
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
OTIMIZADO
Típo do Processamento
0.024
HÍBRIDO 0.033
PARALELO 0.071
SERIAL 0.08
5 Conclusão
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
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>.
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>.
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.
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.
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
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.
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.
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.
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.
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.
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
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
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.
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.
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
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
ROGALSKI, A. Infrared detectors, 2nd ed. 2011. CRC Press, Taylor & Francis Group.
898 p.
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.
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
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.
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.
Metodologia para aceleração do desempenho em sistemas embarcados em Vants com processamento de imagens
em tempo real.
6.
AUTOR(ES):
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: