SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
1
Proposta para aceleração
de desempenho de
algoritmos de visão
computacional em
sistemas embarcados
André Márcio de Lima Curvello
Orientador: Prof. Dr. Evandro Luís Linhari Rodrigues
2
Sobre mim
André Márcio de Lima Curvello
Engenharia de Computação – USP São Carlos
MBA em Gestão de TI – UNIFRAN
Defesa em Processamento de Sinais e Instrumentação – USP EESC
3
“Se vi mais longe foi por estar de
pé sobre ombros de gigantes
Isaac Newton
4
Agenda
1. Introdução
2. Fundamentação Teórica
3. Materiais e Métodos
4. Resultados
5. Conclusões
6. Trabalhos Futuros
5
1.
Introdução
6
1. História
▸ Acorn Risc Machine
▸ Linux Embarcado – 94 a 97
▸ OpenCV - 1999
▸ Indústria, Eletrônica, Consumo
▸ Pesquisa e Desenvolvimento
Fonte: www.anytux.org Fonte: Sharp.com Fonet: www.open-electronics.org
7
1. História
▸ Estado da Arte
▸ Gestos, Interação Visual
▸ Novos desafios
Fonte: Samsung.com Fonte: talkandroid.com
8
Motivação
▸ Uso cada vez maior de dispositivos com recursos de
processamento de imagens – Wilson e Dipert, 2013;
▸ Processadores ARM consomem menos energia do que
processadores de outras arquiteturas.
▸ Arquiteturas recentes possuem desempenho
gradativamente maior;
▸ Agregação de componentes como GPUs, unidades
coprocessadoras e DSPs no SoC ARM.
Fonte: www.arstechnica.com
9
Contribuição
▸ Como rotinas de Processamento de Imagens
podem ser computadas em GPUs embarcadas
por meio de OpenGL ES 2.0;
▸ Detalhamento da aplicação de OpenGL ES 2.0
em sistemas embarcados com Linux;
▸ Aplicação do Filtro de Sobel em GPU embarcada
com OpenGL ES 2.0;
▸ Comparativo da sua execução em CPU com
OpenCV.
10
▸ Desenvolver e avaliar a execução de aplicações
com rotinas de processamento de imagens em
GPU embarcada com uso de OpenGL ES 2.0
▸ Comparar seu desempenho frente a uma aplicação
equivalente executada em CPU.
1.4 Objetivos
11
2.
Fundamentação
Teórica
12
2.1 Trabalhos Publicados
▹Wilson e Dipert (2013)
▹Embedded Vision on Mobile Devices – Oportunities and Challenges
▹Até 2017:
▹ Cerca de 600 milhões de celulares smartphones com
funcionalidades de controle gestual, por meio de visão
computacional
▹Desafios de visão computacional em dispositivos móveis
▹Novos arranjos arquiteturais para aumento de performance
▹Desafios na otimização de rotinas e uso eficiente de recursos
13
2.1 Trabalhos Publicados
▹Pulli et. al. (2012)
▹Realtime Computer Vision with OpenCV
▹Otimização de rotinas de visão computacional para
a plataforma NVIDIA Tegra 3
▹Autores também destacam a falta de otimizações,
desafios e exigências para processamento de
rotinas destinadas à visão computacional em
tempo real.
14
2.1 Trabalhos Publicados
▹Maghazeh et. al. (2013)
▹General Purpose Computing on Low-Power Embedded
GPUs: Has it Come of Age?
▹Comparativo
• Arquitetura Embarcada i.MX6:
SoC ARM Cortex A9 + GPU Vivante GC2000: 4 núcleos
• Arquitetura desktop
CPU Intel Xeon E5520 + GPU NVIDIA Tesla M2050: 448 núcleos
▹Avaliação de desempenho com base em tempo gasto para
processar convolução de matrizes.
15
2.1 Trabalhos Publicados
▹Roberts-Huffman e Hedge (2009)
▹ARM Cortex-A8 vs Intel Atom: Architectural and Benchmark Comparisons
▹Comparação de desempenho entre um sistema embarcado ARM e
outro sistema embarcado x86
▹Arquiteturas:
▹SoC OMAP 3530
▹Intel Atom N330
▹Abordagem:
▹Realização de cálculos de benchmark e comparação frente à
consumo energético.
16
2.1 Trabalhos Publicados
▹Coombs e Prabhu (2011)
▹OpenCV on TI’s DSP+ARM platforms: Mitigating the Challenges of
porting OpenCV to embedded Platforms
▹Avaliação de ganhos de desempenho com uma
arquitetura ARM e DSP em conjunto;
▹Foco em aplicações de visão
computacional com as rotinas
da biblioteca OpenCV;
Fonte: Coombs e Prabhu (2011)
17
2.1 Trabalhos Publicados
▹Ali (2013)
▹Estudo comparativo entre abordagens de programação
paralela para GPU e CPU
▹Tristam e Bradshaw (2010)
▹Investigating the Performance and Code Characteristics of Three
Parallel Programming Models for C++
▹Thouti e Sathe (2012)
▹Comparison of OpenMP & OpenCL Parallel Processing
Technologies
18
2.2 Processadores ARM
▹Arquitetura de processadores RISC de baixo
consumo elétrico;
▹Amplo uso em sistemas e aplicações embarcadas
▹Atualmente:
▹Arquiteturas de 32 e 64 bits
▹Processadores de 1, 2, 4 e 8 núcleos
19
▹Biblioteca de Processamento de Imagens e de visão
computacional
▹Código aberto
▹Grande gama de funções implementadas
▹C, C++, Java, Python e outras.
▹Estrutura modular
▹Interface gráfica
▹Processamento de imagens
▹Processamento de vídeo
▹Dentre outras.
2.3 OpenCV
20
2.4 OpenMP
▹Plataforma facilitadora para o desenvolvimento
de aplicações com foco em execução de rotinas
paralelas.
▹Controlada por meio de
▹Diretivas de compilação
▹Rotinas em tempo de execução
▹Variáveis de ambiente
▹Melhor abstração da organização de threads
21
2.5 Threading Building Blocks
▸TBB – Threading Building Blocks
▹Iniciativa da Intel de prover recursos de
paralelização de código
▹Abstração em nível de orientação a objetos
▹Tarefas que serão paralelizadas são chamadas de tasks
▹Somente usada em linguagens orientadas a objetos
22
2.6 OpenCL
▹Desenvolvido e mantido pelo consórcio Khronos
Group
▹Mapeamento de sistemas
homogêneos ou heterogêneos
▹Arranjos envolvendo CPUs e GPUs
www.drdobbs.com
23
2.6 OpenGL ES 2.0
▸ Conjunto de Rotinas para
Computação Gráfica
▸ Sistemas Embarcados
▸ Execução na GPU
▸ Programas
▹ Vertex Shader
▹ Fragment Shader Fonte: http://glslstudio.com
24
2.6 OpenGL ES 2.0
Fonte: www.nxp.com
Fonte: www.nxp.com
25
2.6 OpenGL ES 2.0
Fonte: http://www.geeks3d.com
26
Junção dos elementos
OpenCV
WandBoard
Resultados!
OpenGL
27
3.
Materiais e Métodos
28
3.1 WandBoard Quad
Fonte: www.wandboard.org
▸ SoC i.MX6Q
▸ Quatro núcleos de ARM Cortex-A9 - 1,2 GHz
▸ 2 GB de memória RAM
▸ GPU Vivante GC2000
Fonte: www.nxp.com
29
3.1.1 - Vivante GC2000
▸ GC2000: OpenGL ES / OpenCL / OpenCL EP 1.1
▸ GC355: OpenVG
▸ GC320: Composition
Fonte: www.embedded.com
30
3.2 Benchmarks
Dhrystone
Reinhold P. Weicker,
1984;
Objetivo:
Representar o poder
computacional de um
sistema com números
inteiros.
Linpack
Jack Dongarra, 1977
Pacote Linpack de
rotinas de álgebra
linear;
Objetivo:
Avaliar desempenho de
operações com
matrizes.
Whetstone
Harold Curnow, 1972
Objetivo:
Avaliar o desempenho
na operação de
cálculos com ponto
flutuante.
▸ Com base no trabalho de Roberts-Huffman e
Hedge (2009)
31
3.3 Administração e Controle
▸ Acesso via SSH
▸ Acesso via GUI
▸ WinSCP
32
3.4 Instalação e Compilação
▸ apt-get
▸ wget
▸ Compilação de Fontes
▸ Instalação do Driver Vivante GC2000 - GAL
33
3.5 Medida de Tempo
▸ getTickCount - OpenCV.
-Retorna o número de pulsos de operação
(ticks)
▸ getTickFrequency - OpenCV
-Retorna o número de pulsos de operação
(ticks) do sistema em segundos.
34
3.6
Execução
Fonte: http://homepages.inf.ed.ac.uk
• 320x240
• 640x480
• 800x600
• 1280x720
35
3.6.1 – Código
OpenCV em CPU
-Bradski (2008)
-NEON
-G++
36
3.6.2
Código OpenGL em
GPU
-Freescale (2015) e OBJC
(2016)
-OpenGL ES 2.0
-Vivante GC2000
-Cubo
-Textura
-Shaders
Fonte: www.apple.com
37
3.6.3
Recuperação de
Imagem em GPU
com OpenGL
-glReadPixels()
-FrameBuffer
-OpenCV – Mat
-Flip
Fonte: http://vgl-ait.org
Fonte: http://vgl-ait.org
38
4.
Resultados
39
Dados de
desempenho
Dhrystone (VAX
MIPS)
Whetstone (MIPS) Linpack (MFLOPS)
WandBoard Quad 1638,98 1523,84 146,89
BeagleBoard 822 100 23,376
Atom 330 Desktop 1822 1667 933,638
4 - Benchmark
Com base em Roberts-Huffman e Hedge (2009)
40
4 - OpenCV em CPU
OpenCV CPU
Resolução 320x240 640x480 800x600 1280x720
Medidas de
Tempo (ms)
2,83E-05 0,000109769 0,000152647 0,000307357
3,24E-05 0,000102529 0,000152733 0,000310978
5,62E-05 0,000102579 0,00015291 0,000311881
5,03E-05 0,000101179 0,000152943 0,000310435
3,84E-05 0,000116182 0,000152936 0,000310143
2,64E-05 0,00010251 0,000153007 0,0003102
2,26E-05 0,000103326 0,000153617 0,000312846
4,43E-05 0,000113962 0,00015354 0,000312418
3,24E-05 0,000103281 0,000153403 0,000311069
2,27E-05 0,000114308 0,00015816 0,000311189
Tempo Médio
Total (ms)
3,54058E-05 0,000106963 0,00015359 0,000310852
41
4 - OpenGL em GPU
Renderização de OpenGL ES 2.0 em GPU
Resolução 320x240 640x480 800x600 1280x720
Medidas de
Tempo (ms)
1,53153E-05 1,48E-05 1,54E-05 2,70E-05
2,16E-05 2,96E-05 3,48E-05 4,84E-05
1,31E-05 1,46E-05 1,56E-05 2,45E-05
1,48E-05 1,46E-05 1,66E-05 2,66E-05
1,22E-05 1,48E-05 3,28E-05 5,01E-05
1,52E-05 2,04E-05 2,10E-05 2,38E-05
1,44E-05 2,01E-05 1,53E-05 2,74E-05
1,35E-05 1,42E-05 2,96E-05 4,93E-05
1,35E-05 1,44E-05 1,62E-05 2,40E-05
1,20E-05 1,63E-05 1,61E-05 2,80E-05
Tempo Médio
Total (ms)
1,45508E-05 1,73804E-05 2,13568E-05 3,29113E-05
42
4 – OpenCV vs OpenGL
0
0,00005
0,0001
0,00015
0,0002
0,00025
0,0003
0,00035
320x240 640x480 800x600 1280x720
Tempoemms
Resolução
Execução de Sobel em GPU com
OpenGL vs CPU com OpenCV
OpenGL GPU OpenCV CPU
43
4 – Ganho de Desempenho com OpenGL
2,44
6,16
7,2
9,45
0
1
2
3
4
5
6
7
8
9
10
320x240 640x480 800x600 1280x720
44
4 – Recuperação do Quadro da GPU com
OpenGL
Recuperação de Quadros de Imagem de OpenGL para OpenCV
Resolução 320x240 640x480 800x600 1280x720
Medidas de
Tempo (ms)
2,31E-06 1,94E-05 2,05E-05 3,75E-05
2,26E-06 1,07E-05 1,73E-05 3,69E-05
2,27E-06 1,38E-05 1,94E-05 4,22E-05
2,05E-06 1,01E-05 1,97E-05 4,97E-05
2,05E-06 1,02E-05 1,98E-05 5,66E-05
2,08E-06 1,02E-05 2,48E-05 3,75E-05
2,38E-06 9,40E-06 1,97E-05 3,77E-05
3,37E-06 1,82E-05 1,85E-05 3,72E-05
2,09E-06 1,05E-05 1,71E-05 3,71E-05
2,22E-06 1,05E-05 1,93E-05 3,75E-05
Tempo Médio
Total (ms)
2,31E-06 1,23E-05 1,96E-05 4,10E-05
45
4 – Processamento em GPU com OpenGL +
Tempo de Recuperação
Tempo Total - Processamento + Recuperação de Imagem em OpenGL para OpenCV
Resolução 320x240 640x480 800x600 1280x720
Medidas de
Tempo (ms)
1,76E-05 3,42E-05 3,59E-05 6,45E-05
2,38E-05 4,03E-05 5,21E-05 8,53E-05
1,54E-05 2,84E-05 3,50E-05 6,66E-05
1,68E-05 2,47E-05 3,63E-05 7,64E-05
1,42E-05 2,51E-05 5,26E-05 1,07E-04
1,72E-05 3,06E-05 4,58E-05 6,13E-05
1,68E-05 2,95E-05 3,50E-05 6,51E-05
1,68E-05 3,24E-05 4,81E-05 8,64E-05
1,56E-05 2,49E-05 3,33E-05 6,11E-05
1,42E-05 2,68E-05 3,54E-05 6,55E-05
Tempo Médio
Total (ms)
1,69E-05 2,97E-05 4,10E-05 7,39E-05
46
4 – Execução em GPU com OpenGL +
Tempo de Recuperação vs CPU com
OpenCV
1,69E-05
2,97E-05
4,10E-05
7,39E-05
3,54058E-05
0,000106963
0,00015359
0,000310852
0,00E+00
5,00E-05
1,00E-04
1,50E-04
2,00E-04
2,50E-04
3,00E-04
3,50E-04
320x240 640x480 800x600 1280x720
OpenGL GPU OpenCV CPU
47
4 – Ganho de Desempenho Total
2,1
3,6
3,8
4,21
0
0,5
1
1,5
2
2,5
3
3,5
4
4,5
320x240 640x480 800x600 1280x720
Ganho de Desempenho Total com GPU com
OpenGL VS CPU com OpenCV
48
4 – Comparação com Solução Comercial
Fonte: itseez.com
49
5.
Conclusões
50
Ganho de 9xOperando Diretamente em GPU
Real - 4xConsiderando a Recuperação do Quadro de imagem da GPU!
Desempenho?
51
OpenGL 670 linhas
▸ Inicialização de OpenGL
▸ Compilação e loading de Shaders
▸ Operação direta em GPU
OpenCV - 70 linhas
▸ Uso de Bibliotecas Prontas – OpenCV
▸ Execução na CPU (+NEON)
52
5 - Conclusões
▸ Pouca documentação sobre Processamento de Imagens em
GPU
▹ Application Note 4629 da Freescale
▸ Resultados podem ser aprimorados…?
▹ Técnica de recuperação dos quadros da GPU
▸ Programação da GPU via Shaders
▸ Dependência de Drivers para acesso a recursos da GPU
via OpenGL!
▹ Ponto a ser observado na plataforma-alvo
▹ Fabricante disponibiliza drivers?
53
5 - Conclusões
▸ Ganho de desempenho vale o esforço?
▸ Em se tratando de sistemas embarcados, sim!
▸ Uso da GPU?
▸ No presente momento, há mais dispositivos embarcados
compatíveis com OpenGL ES 2.0 do que com OpenCL.
▸ Mais de 8 milhões de Raspberry Pi vendidas (Fonte: Raspberry Pi
Foundation)
▸ Aplicação em Robótica e Automação!
▸ Objetivo alcançado? Sim!
Fonte: https://www.khronos.org/
54
6.
Trabalhos Futuros
55
Diretrizes para Continuação
GitHub
Compartilhamento de
código-fonte
Raspberry Pi
▸ SBC Acessível
▸ GPU Compatível
Aprimoramentos
▸ Color Tracking
▸ Blur
▸ Threshold
▸ Biblioteca?
Social
▸ Palestra no TDC 2016
▸ Apresentação e
Divulgação do Tema
Publicações
▸ Apresentação em
Eventos e Revistas
▸ WVC
Fonte: commons.wikimedia.org
Fonte: www.adafruit.com
Fonte: wvc2015.eesc.usp.br
Fonte: www.thedevelopersconference.com.br
56
Diretrizes para Continuação
Fonte: www.mobilelabs.com.pl
57
Obrigado!

Mais conteúdo relacionado

Mais procurados

Internet das Coisas - Na nuvem além da telemetria
Internet das Coisas - Na nuvem além da telemetriaInternet das Coisas - Na nuvem além da telemetria
Internet das Coisas - Na nuvem além da telemetriaAndré Curvello
 
Internet das coisas - A revolução já começou
Internet das coisas - A revolução já começouInternet das coisas - A revolução já começou
Internet das coisas - A revolução já começouJose Wilker
 
Internet das Coisas - Conceitos, tecnologias e aplicações
Internet das Coisas - Conceitos, tecnologias e aplicaçõesInternet das Coisas - Conceitos, tecnologias e aplicações
Internet das Coisas - Conceitos, tecnologias e aplicaçõesFabio Souza
 
TDC2016 - Conhecendo o Ecossistema LinkIt para Makers
TDC2016 - Conhecendo o Ecossistema LinkIt para MakersTDC2016 - Conhecendo o Ecossistema LinkIt para Makers
TDC2016 - Conhecendo o Ecossistema LinkIt para MakersAndré Curvello
 
Linux Embarcado na Construção de Sistemas Inteligentes e Conectados
Linux Embarcado na Construção de Sistemas Inteligentes e ConectadosLinux Embarcado na Construção de Sistemas Inteligentes e Conectados
Linux Embarcado na Construção de Sistemas Inteligentes e ConectadosAndré Curvello
 
Internet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouInternet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouJose Wilker
 
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...André Curvello
 
CTIA 2015 - Internet das Coisas
CTIA 2015 - Internet das CoisasCTIA 2015 - Internet das Coisas
CTIA 2015 - Internet das CoisasKiev Gama
 
Internet das coisas com Arduino
Internet das coisas com ArduinoInternet das coisas com Arduino
Internet das coisas com ArduinoRonivaldo Sampaio
 
A Internet das Coisas
A Internet das CoisasA Internet das Coisas
A Internet das CoisasKiev Gama
 
[Wica 2015] o que é internet das coisas
[Wica 2015] o que é internet das coisas[Wica 2015] o que é internet das coisas
[Wica 2015] o que é internet das coisasVictor Hugo Batista
 
"Evolution of Computing, IoT & Cloud Computing"
"Evolution of Computing, IoT & Cloud Computing""Evolution of Computing, IoT & Cloud Computing"
"Evolution of Computing, IoT & Cloud Computing"EUBrasilCloudFORUM .
 
Novas plataformas de baixo custo para a Internet das Coisas
Novas plataformas de baixo custo para a Internet das CoisasNovas plataformas de baixo custo para a Internet das Coisas
Novas plataformas de baixo custo para a Internet das CoisasItalo Lelis de Carvalho
 

Mais procurados (15)

Internet das Coisas - Na nuvem além da telemetria
Internet das Coisas - Na nuvem além da telemetriaInternet das Coisas - Na nuvem além da telemetria
Internet das Coisas - Na nuvem além da telemetria
 
Internet das coisas - A revolução já começou
Internet das coisas - A revolução já começouInternet das coisas - A revolução já começou
Internet das coisas - A revolução já começou
 
Internet das Coisas - Conceitos, tecnologias e aplicações
Internet das Coisas - Conceitos, tecnologias e aplicaçõesInternet das Coisas - Conceitos, tecnologias e aplicações
Internet das Coisas - Conceitos, tecnologias e aplicações
 
TDC2016 - Conhecendo o Ecossistema LinkIt para Makers
TDC2016 - Conhecendo o Ecossistema LinkIt para MakersTDC2016 - Conhecendo o Ecossistema LinkIt para Makers
TDC2016 - Conhecendo o Ecossistema LinkIt para Makers
 
Linux Embarcado na Construção de Sistemas Inteligentes e Conectados
Linux Embarcado na Construção de Sistemas Inteligentes e ConectadosLinux Embarcado na Construção de Sistemas Inteligentes e Conectados
Linux Embarcado na Construção de Sistemas Inteligentes e Conectados
 
Internet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouInternet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começou
 
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
 
CTIA 2015 - Internet das Coisas
CTIA 2015 - Internet das CoisasCTIA 2015 - Internet das Coisas
CTIA 2015 - Internet das Coisas
 
Internet das coisas com Arduino
Internet das coisas com ArduinoInternet das coisas com Arduino
Internet das coisas com Arduino
 
A Internet das Coisas
A Internet das CoisasA Internet das Coisas
A Internet das Coisas
 
[Wica 2015] o que é internet das coisas
[Wica 2015] o que é internet das coisas[Wica 2015] o que é internet das coisas
[Wica 2015] o que é internet das coisas
 
"Evolution of Computing, IoT & Cloud Computing"
"Evolution of Computing, IoT & Cloud Computing""Evolution of Computing, IoT & Cloud Computing"
"Evolution of Computing, IoT & Cloud Computing"
 
A Internet das Coisas
A Internet das CoisasA Internet das Coisas
A Internet das Coisas
 
Internet das coisas
Internet das coisasInternet das coisas
Internet das coisas
 
Novas plataformas de baixo custo para a Internet das Coisas
Novas plataformas de baixo custo para a Internet das CoisasNovas plataformas de baixo custo para a Internet das Coisas
Novas plataformas de baixo custo para a Internet das Coisas
 

Destaque

Olimpíada USP de Inovação - 2° etapa
Olimpíada USP de Inovação - 2° etapa Olimpíada USP de Inovação - 2° etapa
Olimpíada USP de Inovação - 2° etapa USP
 
Biossensores de glicose e suas aplicaçōes
Biossensores de glicose e suas aplicaçōesBiossensores de glicose e suas aplicaçōes
Biossensores de glicose e suas aplicaçōesBruno Otilio
 
SMART International Symposium for Next Generation Infrastructure: What makes ...
SMART International Symposium for Next Generation Infrastructure: What makes ...SMART International Symposium for Next Generation Infrastructure: What makes ...
SMART International Symposium for Next Generation Infrastructure: What makes ...SMART Infrastructure Facility
 
Odluka nvo 2013.
Odluka nvo 2013.Odluka nvo 2013.
Odluka nvo 2013.Nazif Veliq
 
O obrocie instrumentami finansowymi 2010.12.20
O obrocie instrumentami finansowymi 2010.12.20O obrocie instrumentami finansowymi 2010.12.20
O obrocie instrumentami finansowymi 2010.12.20sobek77s
 
SMART International Symposium for Next Generation Infrastructure: How do we e...
SMART International Symposium for Next Generation Infrastructure: How do we e...SMART International Symposium for Next Generation Infrastructure: How do we e...
SMART International Symposium for Next Generation Infrastructure: How do we e...SMART Infrastructure Facility
 
Tennis 2013 donetsk
Tennis 2013 donetskTennis 2013 donetsk
Tennis 2013 donetskAna Mirica
 
ครูปฏิบัติการ
ครูปฏิบัติการครูปฏิบัติการ
ครูปฏิบัติการRatchada Kaewwongta
 
Moving the Goalposts: Why Museums Need to Play More - MuseumNext2012 - Ben Te...
Moving the Goalposts: Why Museums Need to Play More - MuseumNext2012 - Ben Te...Moving the Goalposts: Why Museums Need to Play More - MuseumNext2012 - Ben Te...
Moving the Goalposts: Why Museums Need to Play More - MuseumNext2012 - Ben Te...thoughtden
 

Destaque (20)

Olimpíada USP de Inovação - 2° etapa
Olimpíada USP de Inovação - 2° etapa Olimpíada USP de Inovação - 2° etapa
Olimpíada USP de Inovação - 2° etapa
 
Biossensores de glicose e suas aplicaçōes
Biossensores de glicose e suas aplicaçōesBiossensores de glicose e suas aplicaçōes
Biossensores de glicose e suas aplicaçōes
 
Biossensores EnzimáTicos
Biossensores EnzimáTicosBiossensores EnzimáTicos
Biossensores EnzimáTicos
 
מערך 3 יולי
מערך 3 יולימערך 3 יולי
מערך 3 יולי
 
Bethlehem
BethlehemBethlehem
Bethlehem
 
SMART International Symposium for Next Generation Infrastructure: What makes ...
SMART International Symposium for Next Generation Infrastructure: What makes ...SMART International Symposium for Next Generation Infrastructure: What makes ...
SMART International Symposium for Next Generation Infrastructure: What makes ...
 
Odluka nvo 2013.
Odluka nvo 2013.Odluka nvo 2013.
Odluka nvo 2013.
 
O obrocie instrumentami finansowymi 2010.12.20
O obrocie instrumentami finansowymi 2010.12.20O obrocie instrumentami finansowymi 2010.12.20
O obrocie instrumentami finansowymi 2010.12.20
 
SMART International Symposium for Next Generation Infrastructure: How do we e...
SMART International Symposium for Next Generation Infrastructure: How do we e...SMART International Symposium for Next Generation Infrastructure: How do we e...
SMART International Symposium for Next Generation Infrastructure: How do we e...
 
Escribir frases
Escribir frasesEscribir frases
Escribir frases
 
What Keeps the New CIO Up at Night?
What Keeps the New CIO Up at Night?What Keeps the New CIO Up at Night?
What Keeps the New CIO Up at Night?
 
RFXOne - An Innovative Go To Market Approach
RFXOne -  An Innovative Go To Market ApproachRFXOne -  An Innovative Go To Market Approach
RFXOne - An Innovative Go To Market Approach
 
Tennis 2013 donetsk
Tennis 2013 donetskTennis 2013 donetsk
Tennis 2013 donetsk
 
SIC 2016 Be Memorable
SIC 2016 Be MemorableSIC 2016 Be Memorable
SIC 2016 Be Memorable
 
Kyurk story
Kyurk storyKyurk story
Kyurk story
 
Zinloos
ZinloosZinloos
Zinloos
 
9707 w14 ms_21
9707 w14 ms_219707 w14 ms_21
9707 w14 ms_21
 
ครูปฏิบัติการ
ครูปฏิบัติการครูปฏิบัติการ
ครูปฏิบัติการ
 
Moving the Goalposts: Why Museums Need to Play More - MuseumNext2012 - Ben Te...
Moving the Goalposts: Why Museums Need to Play More - MuseumNext2012 - Ben Te...Moving the Goalposts: Why Museums Need to Play More - MuseumNext2012 - Ben Te...
Moving the Goalposts: Why Museums Need to Play More - MuseumNext2012 - Ben Te...
 
Closed introduction
Closed introductionClosed introduction
Closed introduction
 

Semelhante a Proposta para Aceleração de Desempenho de Algoritmos de Visão Computacional em Sistemas Embarcados

TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcadotdc-globalcode
 
TDC2016 - Processamento de Imagem em GPU com OpenGL
TDC2016 - Processamento de Imagem em GPU com OpenGLTDC2016 - Processamento de Imagem em GPU com OpenGL
TDC2016 - Processamento de Imagem em GPU com OpenGLAndré Curvello
 
Planejamento E Gerenciamento de Capacidade Para Sistemas Distribuídos
Planejamento E Gerenciamento de Capacidade Para Sistemas DistribuídosPlanejamento E Gerenciamento de Capacidade Para Sistemas Distribuídos
Planejamento E Gerenciamento de Capacidade Para Sistemas DistribuídosRodrigo Campos
 
[PRJ32][Christopher] aula 1 – introdução
[PRJ32][Christopher] aula 1 – introdução[PRJ32][Christopher] aula 1 – introdução
[PRJ32][Christopher] aula 1 – introduçãoChristopher Cerqueira
 
Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...
Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...
Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...GiovanniGuimares2
 
Simulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisSimulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisIgor José F. Freitas
 
Project presentation: Low-cost Autonomous Navigation System Based on Optical ...
Project presentation: Low-cost Autonomous Navigation System Based on Optical ...Project presentation: Low-cost Autonomous Navigation System Based on Optical ...
Project presentation: Low-cost Autonomous Navigation System Based on Optical ...Michel Meneses
 
Aplicação de Conceitos de IHM de Alta Performance e Consciência Situacional n...
Aplicação de Conceitos de IHM de Alta Performance e Consciência Situacional n...Aplicação de Conceitos de IHM de Alta Performance e Consciência Situacional n...
Aplicação de Conceitos de IHM de Alta Performance e Consciência Situacional n...Ricardo Olsen
 
Techniques for Designing GPGPU Games
Techniques for Designing GPGPU GamesTechniques for Designing GPGPU Games
Techniques for Designing GPGPU GamesAnny Caroline Sousa
 
7 av tecnol. inform._2013_demo_p&b - sefaz-ms
7 av tecnol. inform._2013_demo_p&b - sefaz-ms7 av tecnol. inform._2013_demo_p&b - sefaz-ms
7 av tecnol. inform._2013_demo_p&b - sefaz-msKurte Wagner
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLTony Alexander Hild
 
Plataformas cisc e risc
Plataformas cisc e riscPlataformas cisc e risc
Plataformas cisc e riscTiago
 
Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015Carlos Roberto IV
 

Semelhante a Proposta para Aceleração de Desempenho de Algoritmos de Visão Computacional em Sistemas Embarcados (20)

TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
TDC2016 - Processamento de Imagem em GPU com OpenGL
TDC2016 - Processamento de Imagem em GPU com OpenGLTDC2016 - Processamento de Imagem em GPU com OpenGL
TDC2016 - Processamento de Imagem em GPU com OpenGL
 
Planejamento E Gerenciamento de Capacidade Para Sistemas Distribuídos
Planejamento E Gerenciamento de Capacidade Para Sistemas DistribuídosPlanejamento E Gerenciamento de Capacidade Para Sistemas Distribuídos
Planejamento E Gerenciamento de Capacidade Para Sistemas Distribuídos
 
TCC Pré Banca
TCC Pré BancaTCC Pré Banca
TCC Pré Banca
 
Palestra
PalestraPalestra
Palestra
 
[PRJ32][Christopher] aula 1 – introdução
[PRJ32][Christopher] aula 1 – introdução[PRJ32][Christopher] aula 1 – introdução
[PRJ32][Christopher] aula 1 – introdução
 
Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
 
Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...
Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...
Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...
 
Simulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisSimulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades Computacionais
 
TCC Apresentacao Final
TCC Apresentacao FinalTCC Apresentacao Final
TCC Apresentacao Final
 
Project presentation: Low-cost Autonomous Navigation System Based on Optical ...
Project presentation: Low-cost Autonomous Navigation System Based on Optical ...Project presentation: Low-cost Autonomous Navigation System Based on Optical ...
Project presentation: Low-cost Autonomous Navigation System Based on Optical ...
 
Aplicação de Conceitos de IHM de Alta Performance e Consciência Situacional n...
Aplicação de Conceitos de IHM de Alta Performance e Consciência Situacional n...Aplicação de Conceitos de IHM de Alta Performance e Consciência Situacional n...
Aplicação de Conceitos de IHM de Alta Performance e Consciência Situacional n...
 
SIC_201_VRSJ
SIC_201_VRSJSIC_201_VRSJ
SIC_201_VRSJ
 
Techniques for Designing GPGPU Games
Techniques for Designing GPGPU GamesTechniques for Designing GPGPU Games
Techniques for Designing GPGPU Games
 
7 av tecnol. inform._2013_demo_p&b - sefaz-ms
7 av tecnol. inform._2013_demo_p&b - sefaz-ms7 av tecnol. inform._2013_demo_p&b - sefaz-ms
7 av tecnol. inform._2013_demo_p&b - sefaz-ms
 
CubeSats e Software Embarcado
CubeSats e Software EmbarcadoCubeSats e Software Embarcado
CubeSats e Software Embarcado
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
 
Plataformas cisc e risc
Plataformas cisc e riscPlataformas cisc e risc
Plataformas cisc e risc
 
Embarcados
EmbarcadosEmbarcados
Embarcados
 
Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015
 

Mais de André Curvello

Sistemas embarcados e a contribuição para o combate a COVID-19
Sistemas embarcados e a contribuição para o combate a COVID-19Sistemas embarcados e a contribuição para o combate a COVID-19
Sistemas embarcados e a contribuição para o combate a COVID-19André Curvello
 
Blockchain em IoT - Desafios e considerações numa abordagem prática
Blockchain em IoT - Desafios e considerações numa abordagem práticaBlockchain em IoT - Desafios e considerações numa abordagem prática
Blockchain em IoT - Desafios e considerações numa abordagem práticaAndré Curvello
 
Arquitetando seu sistema de IoT com Azure
Arquitetando seu sistema de IoT com AzureArquitetando seu sistema de IoT com Azure
Arquitetando seu sistema de IoT com AzureAndré Curvello
 
Drones - Programando sistemas embarcados voadores e... autônomos!
Drones - Programando sistemas embarcados voadores e... autônomos!Drones - Programando sistemas embarcados voadores e... autônomos!
Drones - Programando sistemas embarcados voadores e... autônomos!André Curvello
 
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...André Curvello
 
IoT Aplicada à Engenharia de Computação
IoT Aplicada à Engenharia de ComputaçãoIoT Aplicada à Engenharia de Computação
IoT Aplicada à Engenharia de ComputaçãoAndré Curvello
 
IoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
IoE - Internet de Todas as Coisas - Quais os Riscos de SegurançaIoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
IoE - Internet de Todas as Coisas - Quais os Riscos de SegurançaAndré Curvello
 
Linux Embarcado - O Sistema Operacional da Internet das Coisas
Linux Embarcado - O Sistema Operacional da Internet das CoisasLinux Embarcado - O Sistema Operacional da Internet das Coisas
Linux Embarcado - O Sistema Operacional da Internet das CoisasAndré Curvello
 
Rede CAN em Linux Embarcado para Aplicações Conectadas
Rede CAN em Linux Embarcado para Aplicações ConectadasRede CAN em Linux Embarcado para Aplicações Conectadas
Rede CAN em Linux Embarcado para Aplicações ConectadasAndré Curvello
 
TDC2017 - Sistemas Assimétricos com ARM e FPGA
TDC2017 - Sistemas Assimétricos com ARM e FPGATDC2017 - Sistemas Assimétricos com ARM e FPGA
TDC2017 - Sistemas Assimétricos com ARM e FPGAAndré Curvello
 
TDC2017 - Desvendando a Linux Device Tree
TDC2017 - Desvendando a Linux Device TreeTDC2017 - Desvendando a Linux Device Tree
TDC2017 - Desvendando a Linux Device TreeAndré Curvello
 
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.André Curvello
 
Veja como hackear seu carro usando Rede CAN com Arduino Due
Veja como hackear seu carro usando Rede CAN com Arduino DueVeja como hackear seu carro usando Rede CAN com Arduino Due
Veja como hackear seu carro usando Rede CAN com Arduino DueAndré Curvello
 
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016André Curvello
 
Sistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento AssimétricoSistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento AssimétricoAndré Curvello
 
Segurança em Foco no IoT - Protegendo as Informações das Coisas
Segurança em Foco no IoT - Protegendo as Informações das CoisasSegurança em Foco no IoT - Protegendo as Informações das Coisas
Segurança em Foco no IoT - Protegendo as Informações das CoisasAndré Curvello
 
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...André Curvello
 
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...André Curvello
 
TDC2016 - Rede CAN - Conceitos e Aplicações
TDC2016 - Rede CAN - Conceitos e AplicaçõesTDC2016 - Rede CAN - Conceitos e Aplicações
TDC2016 - Rede CAN - Conceitos e AplicaçõesAndré Curvello
 
Estação de Controle Multimídia com Interface Web utilizando Sistema Operacion...
Estação de Controle Multimídia com Interface Web utilizando Sistema Operacion...Estação de Controle Multimídia com Interface Web utilizando Sistema Operacion...
Estação de Controle Multimídia com Interface Web utilizando Sistema Operacion...André Curvello
 

Mais de André Curvello (20)

Sistemas embarcados e a contribuição para o combate a COVID-19
Sistemas embarcados e a contribuição para o combate a COVID-19Sistemas embarcados e a contribuição para o combate a COVID-19
Sistemas embarcados e a contribuição para o combate a COVID-19
 
Blockchain em IoT - Desafios e considerações numa abordagem prática
Blockchain em IoT - Desafios e considerações numa abordagem práticaBlockchain em IoT - Desafios e considerações numa abordagem prática
Blockchain em IoT - Desafios e considerações numa abordagem prática
 
Arquitetando seu sistema de IoT com Azure
Arquitetando seu sistema de IoT com AzureArquitetando seu sistema de IoT com Azure
Arquitetando seu sistema de IoT com Azure
 
Drones - Programando sistemas embarcados voadores e... autônomos!
Drones - Programando sistemas embarcados voadores e... autônomos!Drones - Programando sistemas embarcados voadores e... autônomos!
Drones - Programando sistemas embarcados voadores e... autônomos!
 
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
 
IoT Aplicada à Engenharia de Computação
IoT Aplicada à Engenharia de ComputaçãoIoT Aplicada à Engenharia de Computação
IoT Aplicada à Engenharia de Computação
 
IoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
IoE - Internet de Todas as Coisas - Quais os Riscos de SegurançaIoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
IoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
 
Linux Embarcado - O Sistema Operacional da Internet das Coisas
Linux Embarcado - O Sistema Operacional da Internet das CoisasLinux Embarcado - O Sistema Operacional da Internet das Coisas
Linux Embarcado - O Sistema Operacional da Internet das Coisas
 
Rede CAN em Linux Embarcado para Aplicações Conectadas
Rede CAN em Linux Embarcado para Aplicações ConectadasRede CAN em Linux Embarcado para Aplicações Conectadas
Rede CAN em Linux Embarcado para Aplicações Conectadas
 
TDC2017 - Sistemas Assimétricos com ARM e FPGA
TDC2017 - Sistemas Assimétricos com ARM e FPGATDC2017 - Sistemas Assimétricos com ARM e FPGA
TDC2017 - Sistemas Assimétricos com ARM e FPGA
 
TDC2017 - Desvendando a Linux Device Tree
TDC2017 - Desvendando a Linux Device TreeTDC2017 - Desvendando a Linux Device Tree
TDC2017 - Desvendando a Linux Device Tree
 
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
 
Veja como hackear seu carro usando Rede CAN com Arduino Due
Veja como hackear seu carro usando Rede CAN com Arduino DueVeja como hackear seu carro usando Rede CAN com Arduino Due
Veja como hackear seu carro usando Rede CAN com Arduino Due
 
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
 
Sistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento AssimétricoSistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento Assimétrico
 
Segurança em Foco no IoT - Protegendo as Informações das Coisas
Segurança em Foco no IoT - Protegendo as Informações das CoisasSegurança em Foco no IoT - Protegendo as Informações das Coisas
Segurança em Foco no IoT - Protegendo as Informações das Coisas
 
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...
 
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
 
TDC2016 - Rede CAN - Conceitos e Aplicações
TDC2016 - Rede CAN - Conceitos e AplicaçõesTDC2016 - Rede CAN - Conceitos e Aplicações
TDC2016 - Rede CAN - Conceitos e Aplicações
 
Estação de Controle Multimídia com Interface Web utilizando Sistema Operacion...
Estação de Controle Multimídia com Interface Web utilizando Sistema Operacion...Estação de Controle Multimídia com Interface Web utilizando Sistema Operacion...
Estação de Controle Multimídia com Interface Web utilizando Sistema Operacion...
 

Proposta para Aceleração de Desempenho de Algoritmos de Visão Computacional em Sistemas Embarcados

  • 1. 1 Proposta para aceleração de desempenho de algoritmos de visão computacional em sistemas embarcados André Márcio de Lima Curvello Orientador: Prof. Dr. Evandro Luís Linhari Rodrigues
  • 2. 2 Sobre mim André Márcio de Lima Curvello Engenharia de Computação – USP São Carlos MBA em Gestão de TI – UNIFRAN Defesa em Processamento de Sinais e Instrumentação – USP EESC
  • 3. 3 “Se vi mais longe foi por estar de pé sobre ombros de gigantes Isaac Newton
  • 4. 4 Agenda 1. Introdução 2. Fundamentação Teórica 3. Materiais e Métodos 4. Resultados 5. Conclusões 6. Trabalhos Futuros
  • 6. 6 1. História ▸ Acorn Risc Machine ▸ Linux Embarcado – 94 a 97 ▸ OpenCV - 1999 ▸ Indústria, Eletrônica, Consumo ▸ Pesquisa e Desenvolvimento Fonte: www.anytux.org Fonte: Sharp.com Fonet: www.open-electronics.org
  • 7. 7 1. História ▸ Estado da Arte ▸ Gestos, Interação Visual ▸ Novos desafios Fonte: Samsung.com Fonte: talkandroid.com
  • 8. 8 Motivação ▸ Uso cada vez maior de dispositivos com recursos de processamento de imagens – Wilson e Dipert, 2013; ▸ Processadores ARM consomem menos energia do que processadores de outras arquiteturas. ▸ Arquiteturas recentes possuem desempenho gradativamente maior; ▸ Agregação de componentes como GPUs, unidades coprocessadoras e DSPs no SoC ARM. Fonte: www.arstechnica.com
  • 9. 9 Contribuição ▸ Como rotinas de Processamento de Imagens podem ser computadas em GPUs embarcadas por meio de OpenGL ES 2.0; ▸ Detalhamento da aplicação de OpenGL ES 2.0 em sistemas embarcados com Linux; ▸ Aplicação do Filtro de Sobel em GPU embarcada com OpenGL ES 2.0; ▸ Comparativo da sua execução em CPU com OpenCV.
  • 10. 10 ▸ Desenvolver e avaliar a execução de aplicações com rotinas de processamento de imagens em GPU embarcada com uso de OpenGL ES 2.0 ▸ Comparar seu desempenho frente a uma aplicação equivalente executada em CPU. 1.4 Objetivos
  • 12. 12 2.1 Trabalhos Publicados ▹Wilson e Dipert (2013) ▹Embedded Vision on Mobile Devices – Oportunities and Challenges ▹Até 2017: ▹ Cerca de 600 milhões de celulares smartphones com funcionalidades de controle gestual, por meio de visão computacional ▹Desafios de visão computacional em dispositivos móveis ▹Novos arranjos arquiteturais para aumento de performance ▹Desafios na otimização de rotinas e uso eficiente de recursos
  • 13. 13 2.1 Trabalhos Publicados ▹Pulli et. al. (2012) ▹Realtime Computer Vision with OpenCV ▹Otimização de rotinas de visão computacional para a plataforma NVIDIA Tegra 3 ▹Autores também destacam a falta de otimizações, desafios e exigências para processamento de rotinas destinadas à visão computacional em tempo real.
  • 14. 14 2.1 Trabalhos Publicados ▹Maghazeh et. al. (2013) ▹General Purpose Computing on Low-Power Embedded GPUs: Has it Come of Age? ▹Comparativo • Arquitetura Embarcada i.MX6: SoC ARM Cortex A9 + GPU Vivante GC2000: 4 núcleos • Arquitetura desktop CPU Intel Xeon E5520 + GPU NVIDIA Tesla M2050: 448 núcleos ▹Avaliação de desempenho com base em tempo gasto para processar convolução de matrizes.
  • 15. 15 2.1 Trabalhos Publicados ▹Roberts-Huffman e Hedge (2009) ▹ARM Cortex-A8 vs Intel Atom: Architectural and Benchmark Comparisons ▹Comparação de desempenho entre um sistema embarcado ARM e outro sistema embarcado x86 ▹Arquiteturas: ▹SoC OMAP 3530 ▹Intel Atom N330 ▹Abordagem: ▹Realização de cálculos de benchmark e comparação frente à consumo energético.
  • 16. 16 2.1 Trabalhos Publicados ▹Coombs e Prabhu (2011) ▹OpenCV on TI’s DSP+ARM platforms: Mitigating the Challenges of porting OpenCV to embedded Platforms ▹Avaliação de ganhos de desempenho com uma arquitetura ARM e DSP em conjunto; ▹Foco em aplicações de visão computacional com as rotinas da biblioteca OpenCV; Fonte: Coombs e Prabhu (2011)
  • 17. 17 2.1 Trabalhos Publicados ▹Ali (2013) ▹Estudo comparativo entre abordagens de programação paralela para GPU e CPU ▹Tristam e Bradshaw (2010) ▹Investigating the Performance and Code Characteristics of Three Parallel Programming Models for C++ ▹Thouti e Sathe (2012) ▹Comparison of OpenMP & OpenCL Parallel Processing Technologies
  • 18. 18 2.2 Processadores ARM ▹Arquitetura de processadores RISC de baixo consumo elétrico; ▹Amplo uso em sistemas e aplicações embarcadas ▹Atualmente: ▹Arquiteturas de 32 e 64 bits ▹Processadores de 1, 2, 4 e 8 núcleos
  • 19. 19 ▹Biblioteca de Processamento de Imagens e de visão computacional ▹Código aberto ▹Grande gama de funções implementadas ▹C, C++, Java, Python e outras. ▹Estrutura modular ▹Interface gráfica ▹Processamento de imagens ▹Processamento de vídeo ▹Dentre outras. 2.3 OpenCV
  • 20. 20 2.4 OpenMP ▹Plataforma facilitadora para o desenvolvimento de aplicações com foco em execução de rotinas paralelas. ▹Controlada por meio de ▹Diretivas de compilação ▹Rotinas em tempo de execução ▹Variáveis de ambiente ▹Melhor abstração da organização de threads
  • 21. 21 2.5 Threading Building Blocks ▸TBB – Threading Building Blocks ▹Iniciativa da Intel de prover recursos de paralelização de código ▹Abstração em nível de orientação a objetos ▹Tarefas que serão paralelizadas são chamadas de tasks ▹Somente usada em linguagens orientadas a objetos
  • 22. 22 2.6 OpenCL ▹Desenvolvido e mantido pelo consórcio Khronos Group ▹Mapeamento de sistemas homogêneos ou heterogêneos ▹Arranjos envolvendo CPUs e GPUs www.drdobbs.com
  • 23. 23 2.6 OpenGL ES 2.0 ▸ Conjunto de Rotinas para Computação Gráfica ▸ Sistemas Embarcados ▸ Execução na GPU ▸ Programas ▹ Vertex Shader ▹ Fragment Shader Fonte: http://glslstudio.com
  • 24. 24 2.6 OpenGL ES 2.0 Fonte: www.nxp.com Fonte: www.nxp.com
  • 25. 25 2.6 OpenGL ES 2.0 Fonte: http://www.geeks3d.com
  • 28. 28 3.1 WandBoard Quad Fonte: www.wandboard.org ▸ SoC i.MX6Q ▸ Quatro núcleos de ARM Cortex-A9 - 1,2 GHz ▸ 2 GB de memória RAM ▸ GPU Vivante GC2000 Fonte: www.nxp.com
  • 29. 29 3.1.1 - Vivante GC2000 ▸ GC2000: OpenGL ES / OpenCL / OpenCL EP 1.1 ▸ GC355: OpenVG ▸ GC320: Composition Fonte: www.embedded.com
  • 30. 30 3.2 Benchmarks Dhrystone Reinhold P. Weicker, 1984; Objetivo: Representar o poder computacional de um sistema com números inteiros. Linpack Jack Dongarra, 1977 Pacote Linpack de rotinas de álgebra linear; Objetivo: Avaliar desempenho de operações com matrizes. Whetstone Harold Curnow, 1972 Objetivo: Avaliar o desempenho na operação de cálculos com ponto flutuante. ▸ Com base no trabalho de Roberts-Huffman e Hedge (2009)
  • 31. 31 3.3 Administração e Controle ▸ Acesso via SSH ▸ Acesso via GUI ▸ WinSCP
  • 32. 32 3.4 Instalação e Compilação ▸ apt-get ▸ wget ▸ Compilação de Fontes ▸ Instalação do Driver Vivante GC2000 - GAL
  • 33. 33 3.5 Medida de Tempo ▸ getTickCount - OpenCV. -Retorna o número de pulsos de operação (ticks) ▸ getTickFrequency - OpenCV -Retorna o número de pulsos de operação (ticks) do sistema em segundos.
  • 35. 35 3.6.1 – Código OpenCV em CPU -Bradski (2008) -NEON -G++
  • 36. 36 3.6.2 Código OpenGL em GPU -Freescale (2015) e OBJC (2016) -OpenGL ES 2.0 -Vivante GC2000 -Cubo -Textura -Shaders Fonte: www.apple.com
  • 37. 37 3.6.3 Recuperação de Imagem em GPU com OpenGL -glReadPixels() -FrameBuffer -OpenCV – Mat -Flip Fonte: http://vgl-ait.org Fonte: http://vgl-ait.org
  • 39. 39 Dados de desempenho Dhrystone (VAX MIPS) Whetstone (MIPS) Linpack (MFLOPS) WandBoard Quad 1638,98 1523,84 146,89 BeagleBoard 822 100 23,376 Atom 330 Desktop 1822 1667 933,638 4 - Benchmark Com base em Roberts-Huffman e Hedge (2009)
  • 40. 40 4 - OpenCV em CPU OpenCV CPU Resolução 320x240 640x480 800x600 1280x720 Medidas de Tempo (ms) 2,83E-05 0,000109769 0,000152647 0,000307357 3,24E-05 0,000102529 0,000152733 0,000310978 5,62E-05 0,000102579 0,00015291 0,000311881 5,03E-05 0,000101179 0,000152943 0,000310435 3,84E-05 0,000116182 0,000152936 0,000310143 2,64E-05 0,00010251 0,000153007 0,0003102 2,26E-05 0,000103326 0,000153617 0,000312846 4,43E-05 0,000113962 0,00015354 0,000312418 3,24E-05 0,000103281 0,000153403 0,000311069 2,27E-05 0,000114308 0,00015816 0,000311189 Tempo Médio Total (ms) 3,54058E-05 0,000106963 0,00015359 0,000310852
  • 41. 41 4 - OpenGL em GPU Renderização de OpenGL ES 2.0 em GPU Resolução 320x240 640x480 800x600 1280x720 Medidas de Tempo (ms) 1,53153E-05 1,48E-05 1,54E-05 2,70E-05 2,16E-05 2,96E-05 3,48E-05 4,84E-05 1,31E-05 1,46E-05 1,56E-05 2,45E-05 1,48E-05 1,46E-05 1,66E-05 2,66E-05 1,22E-05 1,48E-05 3,28E-05 5,01E-05 1,52E-05 2,04E-05 2,10E-05 2,38E-05 1,44E-05 2,01E-05 1,53E-05 2,74E-05 1,35E-05 1,42E-05 2,96E-05 4,93E-05 1,35E-05 1,44E-05 1,62E-05 2,40E-05 1,20E-05 1,63E-05 1,61E-05 2,80E-05 Tempo Médio Total (ms) 1,45508E-05 1,73804E-05 2,13568E-05 3,29113E-05
  • 42. 42 4 – OpenCV vs OpenGL 0 0,00005 0,0001 0,00015 0,0002 0,00025 0,0003 0,00035 320x240 640x480 800x600 1280x720 Tempoemms Resolução Execução de Sobel em GPU com OpenGL vs CPU com OpenCV OpenGL GPU OpenCV CPU
  • 43. 43 4 – Ganho de Desempenho com OpenGL 2,44 6,16 7,2 9,45 0 1 2 3 4 5 6 7 8 9 10 320x240 640x480 800x600 1280x720
  • 44. 44 4 – Recuperação do Quadro da GPU com OpenGL Recuperação de Quadros de Imagem de OpenGL para OpenCV Resolução 320x240 640x480 800x600 1280x720 Medidas de Tempo (ms) 2,31E-06 1,94E-05 2,05E-05 3,75E-05 2,26E-06 1,07E-05 1,73E-05 3,69E-05 2,27E-06 1,38E-05 1,94E-05 4,22E-05 2,05E-06 1,01E-05 1,97E-05 4,97E-05 2,05E-06 1,02E-05 1,98E-05 5,66E-05 2,08E-06 1,02E-05 2,48E-05 3,75E-05 2,38E-06 9,40E-06 1,97E-05 3,77E-05 3,37E-06 1,82E-05 1,85E-05 3,72E-05 2,09E-06 1,05E-05 1,71E-05 3,71E-05 2,22E-06 1,05E-05 1,93E-05 3,75E-05 Tempo Médio Total (ms) 2,31E-06 1,23E-05 1,96E-05 4,10E-05
  • 45. 45 4 – Processamento em GPU com OpenGL + Tempo de Recuperação Tempo Total - Processamento + Recuperação de Imagem em OpenGL para OpenCV Resolução 320x240 640x480 800x600 1280x720 Medidas de Tempo (ms) 1,76E-05 3,42E-05 3,59E-05 6,45E-05 2,38E-05 4,03E-05 5,21E-05 8,53E-05 1,54E-05 2,84E-05 3,50E-05 6,66E-05 1,68E-05 2,47E-05 3,63E-05 7,64E-05 1,42E-05 2,51E-05 5,26E-05 1,07E-04 1,72E-05 3,06E-05 4,58E-05 6,13E-05 1,68E-05 2,95E-05 3,50E-05 6,51E-05 1,68E-05 3,24E-05 4,81E-05 8,64E-05 1,56E-05 2,49E-05 3,33E-05 6,11E-05 1,42E-05 2,68E-05 3,54E-05 6,55E-05 Tempo Médio Total (ms) 1,69E-05 2,97E-05 4,10E-05 7,39E-05
  • 46. 46 4 – Execução em GPU com OpenGL + Tempo de Recuperação vs CPU com OpenCV 1,69E-05 2,97E-05 4,10E-05 7,39E-05 3,54058E-05 0,000106963 0,00015359 0,000310852 0,00E+00 5,00E-05 1,00E-04 1,50E-04 2,00E-04 2,50E-04 3,00E-04 3,50E-04 320x240 640x480 800x600 1280x720 OpenGL GPU OpenCV CPU
  • 47. 47 4 – Ganho de Desempenho Total 2,1 3,6 3,8 4,21 0 0,5 1 1,5 2 2,5 3 3,5 4 4,5 320x240 640x480 800x600 1280x720 Ganho de Desempenho Total com GPU com OpenGL VS CPU com OpenCV
  • 48. 48 4 – Comparação com Solução Comercial Fonte: itseez.com
  • 50. 50 Ganho de 9xOperando Diretamente em GPU Real - 4xConsiderando a Recuperação do Quadro de imagem da GPU! Desempenho?
  • 51. 51 OpenGL 670 linhas ▸ Inicialização de OpenGL ▸ Compilação e loading de Shaders ▸ Operação direta em GPU OpenCV - 70 linhas ▸ Uso de Bibliotecas Prontas – OpenCV ▸ Execução na CPU (+NEON)
  • 52. 52 5 - Conclusões ▸ Pouca documentação sobre Processamento de Imagens em GPU ▹ Application Note 4629 da Freescale ▸ Resultados podem ser aprimorados…? ▹ Técnica de recuperação dos quadros da GPU ▸ Programação da GPU via Shaders ▸ Dependência de Drivers para acesso a recursos da GPU via OpenGL! ▹ Ponto a ser observado na plataforma-alvo ▹ Fabricante disponibiliza drivers?
  • 53. 53 5 - Conclusões ▸ Ganho de desempenho vale o esforço? ▸ Em se tratando de sistemas embarcados, sim! ▸ Uso da GPU? ▸ No presente momento, há mais dispositivos embarcados compatíveis com OpenGL ES 2.0 do que com OpenCL. ▸ Mais de 8 milhões de Raspberry Pi vendidas (Fonte: Raspberry Pi Foundation) ▸ Aplicação em Robótica e Automação! ▸ Objetivo alcançado? Sim! Fonte: https://www.khronos.org/
  • 55. 55 Diretrizes para Continuação GitHub Compartilhamento de código-fonte Raspberry Pi ▸ SBC Acessível ▸ GPU Compatível Aprimoramentos ▸ Color Tracking ▸ Blur ▸ Threshold ▸ Biblioteca? Social ▸ Palestra no TDC 2016 ▸ Apresentação e Divulgação do Tema Publicações ▸ Apresentação em Eventos e Revistas ▸ WVC Fonte: commons.wikimedia.org Fonte: www.adafruit.com Fonte: wvc2015.eesc.usp.br Fonte: www.thedevelopersconference.com.br