1. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
M´aquinas podem pensar?
Dr. Eduardo S. Pereira.
http:
//eduardopereira.upcursosetreinamentosonline.com/
29 de outubro de 2018
Dr. E. S. Pereira 1
2. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
1 Sobre o Palestrante
2 Introduc¸ ˜ao
3 Inteligˆencia Artificial
Agindo de Forma Humana
Pensando como Humana
Pensando Racionalmente
Agir Racionalmente
4 Opencv e Raspberry pi
5 Video Streaming e Rob´otica com Flask
Opencv e Flask
Controlando Servo Motores.
6 Deep Learning Yolo V3
7 C´odigo Fonte
Dr. E. S. Pereira 2
3. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Sobre o Palestrante
Sobre o Palestrante
Graduado em F´ısica - UFSJ (2005)
Mestrado em Astrof´ısica - INPE (2008)
Doutorado em Astrof´ısica - INPE (2012)
P´os-doutorado em Cosmologia - INPE (2015)
P´os-doutorado em Astrof´ısica Computacional USP (2017)
Professor em Ciˆencia da Computac¸ ˜ao - Anhanguera (2016-)
Autor do Livro: Trilhas Python - Programac¸ ˜ao Multiparadigma
e Desenvolvimento Web com Flask.
Dr. E. S. Pereira 3
4. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Sobre o Palestrante
https:
//www.casadocodigo.com.br/products/livro-trilhas-python
Dr. E. S. Pereira 4
5. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Introduc¸ ˜ao
Introduc¸ ˜ao
O que vocˆe saber´a ao final dessa palestra
1- Ter noc¸ ˜oes sobre Inteligˆencia Artificial e suas sub´areas.
2- Usar o opencv e o Flask no Raspberry pi.
Dr. E. S. Pereira 5
6. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Introduc¸ ˜ao
Introduc¸ ˜ao
O que vocˆe saber´a ao final dessa palestra
1- Ter noc¸ ˜oes sobre Inteligˆencia Artificial e suas sub´areas.
2- Usar o opencv e o Flask no Raspberry pi.
Dr. E. S. Pereira 6
7. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Inteligˆencia Artificial
Dr. E. S. Pereira 7
8. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Inteligˆencia Artificial
Dr. E. S. Pereira 8
9. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Inteligˆencia Artificial
Dr. E. S. Pereira 9
10. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Inteligˆencia Artificial - Aprendizagem de M´aquina
Dr. E. S. Pereira 10
11. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Inteligˆencia Artificial - Aprendizado Profundo
Dr. E. S. Pereira 11
12. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Inteligˆencia Artificial - Vis˜ao Computacional
Dr. E. S. Pereira 12
13. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Quatro Grandes Vis˜oes
Pensar como Humano
Pensar Racionalmente
Agir como humano
Agir Racionalmente
Dr. E. S. Pereira 13
14. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Quatro Grandes Vis˜oes
Pensar como Humano
Pensar Racionalmente
Agir como humano
Agir Racionalmente
Dr. E. S. Pereira 14
15. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Quatro Grandes Vis˜oes
Pensar como Humano
Pensar Racionalmente
Agir como humano
Agir Racionalmente
Dr. E. S. Pereira 15
16. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Quatro Grandes Vis˜oes
Pensar como Humano
Pensar Racionalmente
Agir como humano
Agir Racionalmente
Dr. E. S. Pereira 16
17. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Quatro Grandes Vis˜oes
Foco humano: Processo emp´ırico, envolvendo hip´oteses e
experimentos.
Foco na Raz˜ao: Matem´atica e Engenharia.
Dr. E. S. Pereira 17
18. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Quatro Grandes Vis˜oes
Foco humano: Processo emp´ırico, envolvendo hip´oteses e
experimentos.
Foco na Raz˜ao: Matem´atica e Engenharia.
Dr. E. S. Pereira 18
19. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Inteligˆencia Artificial
Inteligˆencia Artificial - Pensar como Humano.
Dr. E. S. Pereira 19
20. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Agindo de Forma Humana
Teste de Turing
Proposto por Turing em 1950.
Tem como objetivo verificar se uma m´aquina ´e capaz de dar
respostas como um humano.
Basicamente uma pessoa faz perguntas por escrito ao
computador.
Se o entrevistador n˜ao for capaz de reconhecer se quem deu
a resposta ´e uma m´aquina ou uma pessoa, o programa
passa no teste.
Dr. E. S. Pereira 20
21. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Teste de Turing
Teste de Turing
Dr. E. S. Pereira 21
22. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Agindo de Forma Humana
Teste de Turing - Requisitos
Processamento de Linguagem Natural
Representac¸ ˜ao de Conhecimento
Racioc´ınio automatizado
Aprendizagem de M´aquina
Dr. E. S. Pereira 22
23. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Agindo de Forma Humana
Teste de Turing Total
Requer a manipulac¸ ˜ao e observac¸ ˜ao de objetos, exigindo:
Vis˜ao computacional
Rob´otica
Dr. E. S. Pereira 23
24. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Pensando como Humana
Pensando como Humana
Primeiramente, precisamos determinar como um humano
pensa.
Podemos usar:
I- Introspecc¸ ˜ao: Captando os pr´oprios pensamentos a medida
que s˜ao criados
II- Experimentos psicol´ogicos: Observando o comportamento
dos outros;
III- Imagens Cerebrais: Observando o c´erebro em ac¸ ˜ao.
Dr. E. S. Pereira 24
25. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Pensando como Humana
Pensando como Humana
Primeiramente, precisamos determinar como um humano
pensa.
Podemos usar:
I- Introspecc¸ ˜ao: Captando os pr´oprios pensamentos a medida
que s˜ao criados
II- Experimentos psicol´ogicos: Observando o comportamento
dos outros;
III- Imagens Cerebrais: Observando o c´erebro em ac¸ ˜ao.
Dr. E. S. Pereira 25
26. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Pensando como Humana
Pensando como Humana
Primeiramente, precisamos determinar como um humano
pensa.
Podemos usar:
I- Introspecc¸ ˜ao: Captando os pr´oprios pensamentos a medida
que s˜ao criados
II- Experimentos psicol´ogicos: Observando o comportamento
dos outros;
III- Imagens Cerebrais: Observando o c´erebro em ac¸ ˜ao.
Dr. E. S. Pereira 26
27. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Pensando como Humana
Pensando como Humana
Primeiramente, precisamos determinar como um humano
pensa.
Podemos usar:
I- Introspecc¸ ˜ao: Captando os pr´oprios pensamentos a medida
que s˜ao criados
II- Experimentos psicol´ogicos: Observando o comportamento
dos outros;
III- Imagens Cerebrais: Observando o c´erebro em ac¸ ˜ao.
Dr. E. S. Pereira 27
28. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Pensando como Humana
Pensando como Humana
Primeiramente, precisamos determinar como um humano
pensa.
Podemos usar:
I- Introspecc¸ ˜ao: Captando os pr´oprios pensamentos a medida
que s˜ao criados
II- Experimentos psicol´ogicos: Observando o comportamento
dos outros;
III- Imagens Cerebrais: Observando o c´erebro em ac¸ ˜ao.
Dr. E. S. Pereira 28
29. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Pensando Racionalmente
Pensando Racionalmente
Dr. E. S. Pereira 29
30. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Pensando Racionalmente
Pensando Racionalmente
Uso da l´ogica para criar sistemas inteligentes
Usar a tradic¸ ˜ao logicista para criar sistemas inteligentes.
Dr. E. S. Pereira 30
31. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Pensando Racionalmente
Pensando Racionalmente
Uso da l´ogica para criar sistemas inteligentes
Usar a tradic¸ ˜ao logicista para criar sistemas inteligentes.
Dr. E. S. Pereira 31
32. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Agir Racionalmente
Agir Racionalmente
Dr. E. S. Pereira 32
33. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Agir Racionalmente
Agir Racionalmente
Agente, do latim agere, que quer dizer fazer, ou algo que age.
Deve operar sob controle autˆonomo;
Perceber seu ambiente, persistir por um per´ıodo de tempo
prolongado;
Adaptar-se a mudanc¸as;
Ser capaz de criar e perseguir metas.
Dr. E. S. Pereira 33
34. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Agir Racionalmente
Agir Racionalmente
Agente, do latim agere, que quer dizer fazer, ou algo que age.
Deve operar sob controle autˆonomo;
Perceber seu ambiente, persistir por um per´ıodo de tempo
prolongado;
Adaptar-se a mudanc¸as;
Ser capaz de criar e perseguir metas.
Dr. E. S. Pereira 34
35. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Agir Racionalmente
Agir Racionalmente
Agente, do latim agere, que quer dizer fazer, ou algo que age.
Deve operar sob controle autˆonomo;
Perceber seu ambiente, persistir por um per´ıodo de tempo
prolongado;
Adaptar-se a mudanc¸as;
Ser capaz de criar e perseguir metas.
Dr. E. S. Pereira 35
36. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Agir Racionalmente
Agir Racionalmente
Agente, do latim agere, que quer dizer fazer, ou algo que age.
Deve operar sob controle autˆonomo;
Perceber seu ambiente, persistir por um per´ıodo de tempo
prolongado;
Adaptar-se a mudanc¸as;
Ser capaz de criar e perseguir metas.
Dr. E. S. Pereira 36
37. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Agir Racionalmente
Agir Racionalmente
Agente, do latim agere, que quer dizer fazer, ou algo que age.
Deve operar sob controle autˆonomo;
Perceber seu ambiente, persistir por um per´ıodo de tempo
prolongado;
Adaptar-se a mudanc¸as;
Ser capaz de criar e perseguir metas.
Dr. E. S. Pereira 37
38. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Agindo de Forma
Humana
Pensando como
Humana
Pensando
Racionalmente
Agir Racionalmente
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
Agir Racionalmente
Agir Racionalmente
Agente racional: Aquele que age para alcanc¸ar o melhor
resultado ou, quando existe incerteza, o melhor resultado
esperado.
Dr. E. S. Pereira 38
39. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Opencv e Raspberry pi
Opencv
Originalmente desenvolvida pela Intel, em 2000.
Biblioteca livre para o desenvolvimento de aplicativos na ´area
de vis˜ao computacional.
Dr. E. S. Pereira 39
40. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Opencv e Raspberry pi
Opencv
Originalmente desenvolvida pela Intel, em 2000.
Biblioteca livre para o desenvolvimento de aplicativos na ´area
de vis˜ao computacional.
Dr. E. S. Pereira 40
41. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Opencv e Raspberry pi
Opencv
Dr. E. S. Pereira 41
42. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Opencv e Raspberry pi
Raspberry pi
Computador do tamanho de um cart˜ao de cr´edito
desenvolvido no Reino Unido
Fundac¸ ˜ao Raspberry Pi.
Promover o ensino de Ciˆencia da Computac¸ ˜ao b´asica em
escolas.
Dr. E. S. Pereira 42
43. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Opencv e Raspberry pi
Raspberry pi
Computador do tamanho de um cart˜ao de cr´edito
desenvolvido no Reino Unido
Fundac¸ ˜ao Raspberry Pi.
Promover o ensino de Ciˆencia da Computac¸ ˜ao b´asica em
escolas.
Dr. E. S. Pereira 43
44. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Opencv e Raspberry pi
Raspberry pi
Computador do tamanho de um cart˜ao de cr´edito
desenvolvido no Reino Unido
Fundac¸ ˜ao Raspberry Pi.
Promover o ensino de Ciˆencia da Computac¸ ˜ao b´asica em
escolas.
Dr. E. S. Pereira 44
45. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Opencv e Raspberry pi
Raspberry pi
Dr. E. S. Pereira 45
46. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera
from flask import Flask , url_for , render_template
from flask import request , Response
import cv2
from facedetection import facedetection
from camserver import piwebcam
app = Flask(__name__ , static_url_path = "", static_folder = "static" )
app.secret_key = ’xxxxxxxx’
Dr. E. S. Pereira 46
47. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera
Encapsular as funcionalidades da cˆamera numa classe.
Acessar de forma ´unica, sem ficar criando novas instancias.
Facilitar o processo de tratamento e detecc¸ ˜ao de objetos.
Temos:
1 Classe PiWebCam - Roda numa thread pr´opria
2 Objeto Singleton piwebcam no m´odulo camserver.py
3 Func¸ ˜ao facedetection.
Dr. E. S. Pereira 47
48. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera
Encapsular as funcionalidades da cˆamera numa classe.
Acessar de forma ´unica, sem ficar criando novas instancias.
Facilitar o processo de tratamento e detecc¸ ˜ao de objetos.
Temos:
1 Classe PiWebCam - Roda numa thread pr´opria
2 Objeto Singleton piwebcam no m´odulo camserver.py
3 Func¸ ˜ao facedetection.
Dr. E. S. Pereira 48
49. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera
Encapsular as funcionalidades da cˆamera numa classe.
Acessar de forma ´unica, sem ficar criando novas instancias.
Facilitar o processo de tratamento e detecc¸ ˜ao de objetos.
Temos:
1 Classe PiWebCam - Roda numa thread pr´opria
2 Objeto Singleton piwebcam no m´odulo camserver.py
3 Func¸ ˜ao facedetection.
Dr. E. S. Pereira 49
50. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera
Encapsular as funcionalidades da cˆamera numa classe.
Acessar de forma ´unica, sem ficar criando novas instancias.
Facilitar o processo de tratamento e detecc¸ ˜ao de objetos.
Temos:
1 Classe PiWebCam - Roda numa thread pr´opria
2 Objeto Singleton piwebcam no m´odulo camserver.py
3 Func¸ ˜ao facedetection.
Dr. E. S. Pereira 50
51. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera
Encapsular as funcionalidades da cˆamera numa classe.
Acessar de forma ´unica, sem ficar criando novas instancias.
Facilitar o processo de tratamento e detecc¸ ˜ao de objetos.
Temos:
1 Classe PiWebCam - Roda numa thread pr´opria
2 Objeto Singleton piwebcam no m´odulo camserver.py
3 Func¸ ˜ao facedetection.
Dr. E. S. Pereira 51
52. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera
Encapsular as funcionalidades da cˆamera numa classe.
Acessar de forma ´unica, sem ficar criando novas instancias.
Facilitar o processo de tratamento e detecc¸ ˜ao de objetos.
Temos:
1 Classe PiWebCam - Roda numa thread pr´opria
2 Objeto Singleton piwebcam no m´odulo camserver.py
3 Func¸ ˜ao facedetection.
Dr. E. S. Pereira 52
53. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera
import cv2
from threading import Thread
class PiWebcam(Thread):
’ ’ ’
Capture webcam images using Python−Opencv .
The webcam can run as thread .
’ ’ ’
def __init__(self , width=None , height=None ,
window_name="webcam", show_window=False):
Thread.__init__(self)
self._cam = cv2.VideoCapture (0)
if (self._cam.isOpened() == False):
print("Unable to read camera feed")
.
.
.
def run(self):
while True:
self._ret , self._image = self._cam.read()
if self._image is not None:
self._raw_image = self._image.copy()
else:
self._raw_image = None
self._draw_rects()
self._draw_countors()
.
.
.
if self._stopCam is True:
break
Dr. E. S. Pereira 53
54. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera
.
.
.
def is_running(self):
return not self._stopCam
def start_stop(self):
self._stopCam = True if self._stopCam is False else False
def get_image(self):
return self._raw_image
def get_gray(self):
if self._image is not None:
return cv2.cvtColor(self._raw_image , cv2.COLOR_BGR2GRAY)
Dr. E. S. Pereira 54
55. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera - camserver.py
from piwebcam import PiWebcam
import cv2
piwebcam = PiWebcam(show_window=False)
Acessando a Cˆamera - facedetection.py
import cv2
def facedetection(gray , facemodel="./static/models/
haarcascade_frontalface_default.xml"):
face_c = cv2.CascadeClassifier(facemodel)
retcs = face_c.detectMultiScale(gray , scaleFactor=1.3,
minNeighbors=10, minSize=(75, 75))
return retcs
Dr. E. S. Pereira 55
56. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera
def gen():
while True:
frame = piwebcam.get_image()
if frame is not None:
faces = facedetection(piwebcam.get_gray())
faces = ((x, y, w, h, (255, 0, 0), 2) for (x, y, w, h) in faces)
for (x, y, w, h, rgb , linewidth) in faces:
cv2.rectangle(frame , (x, y), (x + w, y + h),
rgb , linewidth)
frame = cv2.imencode(’.jpg’,frame)[1]. tostring()
else:
frame = b’’
yield (b’--framern’ +
b’Contetn -Type:image/jpegrnrn’ +
frame + b’rn’)
Dr. E. S. Pereira 56
57. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera
@app.route(’/video_feed’)
def video_feed():
return Response(gen(),
mimetype=’multipart/x-mixed -replace; boundary=frame’)
@app.route("/")
def home():
return render_template("home.html")
if __name__ == "__main__":
piwebcam.setDaemon(True)
piwebcam.start()
app.run(debug=True , host="0.0.0.0", port=8080)
Dr. E. S. Pereira 57
58. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera
from flask import Flask , url_for , render_template
from flask import request , Response
import cv2
from facedetection import facedetection
from camserver import piwebcam
app = Flask(__name__ , static_url_path = "", static_folder = "static" )
app.secret_key = ’xxxxxxxx’
def gen():
while True:
frame = piwebcam.get_image()
if frame is not None:
faces = facedetection(piwebcam.get_gray())
faces = ((x, y, w, h, (255, 0, 0), 2) for (x, y, w, h) in faces)
for (x, y, w, h, rgb , linewidth) in faces:
cv2.rectangle(frame , (x, y), (x + w, y + h),
rgb , linewidth)
frame = cv2.imencode(’.jpg’,frame)[1]. tostring()
else:
frame = b’’
yield (b’--framern’ +
b’Contetn -Type:image/jpegrnrn’ +
frame + b’rn’)
@app.route(’/video_feed’)
def video_feed():
return Response(gen(),
mimetype=’multipart/x-mixed -replace; boundary=frame’)
@app.route("/")
def home():
return render_template("home.html")
if __name__ == "__main__":
piwebcam.setDaemon(True)
piwebcam.start()
app.run(debug=True , host="0.0.0.0", port=8080)
Dr. E. S. Pereira 58
59. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Acessando a Cˆamera - Template Home
{% extends "layout.html" %}
{% block content %}
<div class="row">
<div class="col s12 center -align">
<img src="{{url_for(’video_feed ’)}}" />
</div >
</div >
{% endblock %}
Dr. E. S. Pereira 59
60. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Opencv - Video Streaming
Opencv - Video Streaming
Dr. E. S. Pereira 60
61. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Controlando Servo Motores.
Controlando Servo Motores.
Encapsular as funcionalidades de controle de servo numa
classe.
Dr. E. S. Pereira 61
62. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Controlando Servo Motores.
Controlando Servo Motores com pigpio
import pigpio
class Servo(object):
def __init__(self , servo):
self.servo = servo
self.MIN_PWD = 500
self.MAX_PWD = 2500
self.pi = pigpio.pi()
def _angles(self , angle):
a = (self.MAX_PWD - self.MIN_PWD) / 180.0
y = a * angle + self.MIN_PWD
return int(y)
def move_angle(self , angle):
pw = self._angles(angle)
self.pi.set_servo_pulsewidth(self.servo , pw)
def stop(self):
self.pi.stop()
Dr. E. S. Pereira 62
63. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Controlando Servo Motores.
Controlando Servo Motores com pigpio
from servo import Servo
app = Flask(__name__ , static_url_path = "", static_folder = "static" )
app.secret_key = ’xxxxxxxx’
servobase = Servo(27)
servoaltura = Servo(17)
@app.route("/arm", methods=["GET"])
def move_arm():
angup = None
anglebase = None
if "anglebase" in request.args:
try:
anglebase = int(request.args["anglebase"])
servobase.move_angle(anglebase)
except:
servobase.stop()
if "angup" in request.args:
try:
angup = int(request.args["angup"])
servoaltura.move_angle(angup)
except:
servoaltura.stop()
return ""
Dr. E. S. Pereira 63
64. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Controlando Servo Motores.
Controlando Servo Motores com pigpio
from flask import Flask , url_for , render_template
from flask import request , Response
import cv2
from facedetection import facedetection
from camserver import piwebcam
from servo import Servo
app = Flask(__name__ , static_url_path = "", static_folder = "static" )
app.secret_key = ’xxxxxxxx’
servobase = Servo(27)
servoaltura = Servo(17)
@app.route("/arm", methods=["GET"])
def move_arm():
angup = None
anglebase = None
if "anglebase" in request.args:
try:
anglebase = int(request.args["anglebase"])
servobase.move_angle(anglebase)
except:
servobase.stop()
if "angup" in request.args:
try:
angup = int(request.args["angup"])
servoaltura.move_angle(angup)
except:
servoaltura.stop()
return ""
def gen():
while True:
frame = piwebcam.get_image()
if frame is not None:
faces = facedetection(piwebcam.get_gray())
faces = ((x, y, w, h, (255, 0, 0), 2) for (x, y, w, h) in faces)
for (x, y, w, h, rgb , linewidth) in faces:
cv2.rectangle(frame , (x, y), (x + w, y + h),
rgb , linewidth)
frame = cv2.imencode(’.jpg’,frame)[1]. tostring()
else:
frame = b’’
yield (b’--framern’ +
b’Contetn -Type:image/jpegrnrn’ +
frame + b’rn’)
@app.route(’/video_feed’)
def video_feed():
return Response(gen(),
mimetype=’multipart/x-mixed -replace; boundary=frame’)
@app.route("/")
def home():
return render_template("home.html")
if __name__ == "__main__":
piwebcam.setDaemon(True)
piwebcam.start()
app.run(debug=True , host="0.0.0.0", port=8080)
Dr. E. S. Pereira 64
65. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Controlando Servo Motores.
Acessando a Cˆamera - Template Home
{% extends "layout.html" %}
{% block content %}
<script >
var angbase = 90;
var angup = 90;
function movebase(){
if(angbase >= 180){
angbase = 180;
}
if(angbase <= 0){
angbase = 0;
}
if(angup >= 180){
angup = 180;
}
if(angup <= 0 ){
angup = 0;
}
$.getJSON("{{url_for(’move_arm ’)}}",
{anglebase: angbase , angup:angup},
function(data){});
return false;
}
Dr. E. S. Pereira 65
66. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Controlando Servo Motores.
Acessando a Cˆamera - Template Home
function base_left(){
angbase = angbase - 10;
movebase();
}
function base_right(){
angbase = angbase + 10;
movebase();
}
function arm_up(){
angup = angup - 5;
movebase();
}
function arm_down(){
angup = angup + 5;
movebase();
}
</script >
Dr. E. S. Pereira 66
67. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Controlando Servo Motores.
Acessando a Cˆamera - Template Home
<div class="row">
<div class="col s12 center -align">
<img class="responsive -img" src="{{url_for(’video_feed ’)}}"
/>
</div >
</div >
<div class="row">
<div class="col s12 center -align">
<button type = "submit" onclick="arm_up()">
<img class="responsive -img" src="{{ url_for(’static
’, filename = ’images/Sprites/flatDark/
flatDark25.png ’) }}" width=100, height=100 />
</button >
</div >
<div class="col s6 center -align">
<button type = "submit" onclick="base_left()">
<img class="responsive -img" src="{{ url_for(’static
’, filename = ’images/Sprites/flatDark/
flatDark23.png ’) }}" width=100, height=100 />
</button >
</div >
<div class="col s6 center -align">
<button type = "submit" onclick="base_right()">
<img class="responsive -img" src="{{ url_for(’static
’, filename = ’images/Sprites/flatDark/
flatDark24.png ’) }}" width=100, height=100 />
</button >
</div >
<div class="col s12 center -align" onclick="arm_down()">
<button type = "submit" >
<img class="responsive -img" src="{{ url_for(’static
’, filename = ’images/Sprites/flatDark/
flatDark26.png ’) }}" width=100, height=100 />
</button >
</div >
</div >
{% endblock %}
Dr. E. S. Pereira 67
68. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Controlando Servo Motores.
Controlando Servo Motores.
Dr. E. S. Pereira 68
69. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Controlando Servo Motores.
Controlando Servo Motores.
Dr. E. S. Pereira 69
70. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Opencv e Flask
Controlando Servo
Motores.
Deep Learning
Yolo V3
C´odigo Fonte
Controlando Servo Motores.
Controlando Servo Motores.
Dr. E. S. Pereira 70
71. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
Dr. E. S. Pereira 71
72. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
You only look once (YOLO) - Detecc¸ ˜ao de objetos em tempo
real.
Utiliza uma rede neural para a toda a imagem
A rede neural divide a imagem em regi˜oes,fazendo previs˜oes
por caixas de contorno, levando em conta a probabilidade
para cada regi˜ao.
No Raspberry Pi V3 Model B o processamento ficou muito
lento, mas funcionou.
Dr. E. S. Pereira 72
73. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
You only look once (YOLO) - Detecc¸ ˜ao de objetos em tempo
real.
Utiliza uma rede neural para a toda a imagem
A rede neural divide a imagem em regi˜oes,fazendo previs˜oes
por caixas de contorno, levando em conta a probabilidade
para cada regi˜ao.
No Raspberry Pi V3 Model B o processamento ficou muito
lento, mas funcionou.
Dr. E. S. Pereira 73
74. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
You only look once (YOLO) - Detecc¸ ˜ao de objetos em tempo
real.
Utiliza uma rede neural para a toda a imagem
A rede neural divide a imagem em regi˜oes,fazendo previs˜oes
por caixas de contorno, levando em conta a probabilidade
para cada regi˜ao.
No Raspberry Pi V3 Model B o processamento ficou muito
lento, mas funcionou.
Dr. E. S. Pereira 74
75. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
You only look once (YOLO) - Detecc¸ ˜ao de objetos em tempo
real.
Utiliza uma rede neural para a toda a imagem
A rede neural divide a imagem em regi˜oes,fazendo previs˜oes
por caixas de contorno, levando em conta a probabilidade
para cada regi˜ao.
No Raspberry Pi V3 Model B o processamento ficou muito
lento, mas funcionou.
Dr. E. S. Pereira 75
76. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
Dr. E. S. Pereira 76
77. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
Dr. E. S. Pereira 77
78. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
import cv2
import numpy as np
class YoloModel:
def __init__(self , confThreshold=0.5, nmsThreshold=0.4,
inpWidth=320, inpHeight=320,
classeFile=’./static/models/coco.names’,
modelConfiguration=’./static/models/yolov3 -tiny.cfg’,
modelWeights="./static/models/yolov3 -tiny.weights"):
self.confThreshold = confThreshold
self.nmsThreshold = nmsThreshold
self.inpWidth = inpWidth
self.inpHeight = inpHeight
self.indices = []
self.classIds = []
self.confidences = []
self.boxes = []
self.classeFile = classeFile
self.classes = self._loadClassesNames()
self.modelConfiguration = modelConfiguration
self.modelWeights = modelWeights
self._loadNet()
Dr. E. S. Pereira 78
79. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
def _loadClassesNames(self):
with open(self.classeFile , ’rt’) as f:
classes = f.read().rstrip("n").split(’n’)
return classes
def _loadNet(self):
self.net = cv2.dnn.readNetFromDarknet(self.modelConfiguration ,
self.modelWeights)
self.net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV)
self.net.setPreferableTarget(cv2.dnn.DNN_TARGET_CPU)
Dr. E. S. Pereira 79
80. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
def process_frame(self , frame):
blob = cv2.dnn.blobFromImage(frame , 1/255,
(self.inpWidth , self.inpHeight),
[0,0,0], 1, crop=False
)
self.net.setInput(blob)
outputs = self.net.forward(self.get_outputs_names())
self.indices , self.classIds , self.confidences , self.boxes = self.
post_process(frame ,
outputs)
def draw_prediction(self , frame):
self.process_frame(frame)
for i in self.indices:
i = i[0]
box = self.boxes[i]
left = box[0]
top = box[1]
widht = box[2]
height = box[3]
self._draw_prediction(frame , self.classIds[i], self.confidences[
i],
left , top , left+widht ,top+height)
Dr. E. S. Pereira 80
81. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
def _draw_prediction(self , frame , classId , confidence ,
left , top , right , bottom):
cv2.rectangle(frame , (left ,top), (right , bottom), (255,0,255), 5)
label = "%2.f" % confidence
if self.classes:
assert(classId < len(self.classes))
label = "{0}: {1}".format(self.classes[classId], label)
labelSize , baseline = cv2.getTextSize(label , cv2.
FONT_HERSHEY_SIMPLEX , 0.5, 1)
top = max(top , labelSize [1])
cv2.putText(frame , label , (left , top), cv2.FONT_HERSHEY_SIMPLEX ,
0.5, (255, 255, 255))
def get_outputs_names(self):
layersNames = self.net.getLayerNames()
return [layersNames[i[0] - 1] for i in self.net.
getUnconnectedOutLayers()]
Dr. E. S. Pereira 81
82. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
def post_process(self , frame , outputs):
frameHeight = frame.shape[0]
frameWidth = frame.shape[1]
classIds = []
confidences = []
boxes = []
for out in outputs:
for detection in out:
scores = detection [5:]
classId = np.argmax(scores)
confidence = scores[classId]
if(confidence > self.confThreshold):
center_x = int(detection [0]* frameWidth)
center_y = int(detection [1]* frameHeight)
width = int(detection[2] * frameWidth)
height = int(detection[3] * frameHeight)
left = int(center_x - width / 2)
top = int(center_y - height / 2)
classIds.append(classId)
confidences.append(float(confidence))
boxes.append([left , top , width , height])
indices = cv2.dnn.NMSBoxes(boxes , confidences , self.confThreshold ,
self.nmsThreshold)
return indices , classIds , confidences , boxes
Dr. E. S. Pereira 82
83. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
yolomodel = YoloModel()
def gen():
while True:
frame = piwebcam.get_image()
if frame is not None:
yolomodel.draw_prediction(frame)
frame = cv2.imencode(’.jpg’,frame)[1]. tostring()
else:
frame = b’’
yield (b’--framern’ +
b’Contetn -Type:image/jpegrnrn’ +
frame + b’rn’)
Dr. E. S. Pereira 83
84. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
Deep Learning Yolo V3
Deep Learning Yolo V3
Dr. E. S. Pereira 84
85. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
C´odigo Fonte
C´odigo Fonte
https://github.com/duducosmos/flaskconf2018
Dr. E. S. Pereira 85
86. I.A.
Dr. E. S.
Pereira
Sum´ario
Sobre o
Palestrante
Introduc¸ ˜ao
Inteligˆencia
Artificial
Opencv e
Raspberry pi
Video
Streaming e
Rob´otica com
Flask
Deep Learning
Yolo V3
C´odigo Fonte
FIM
MUITO OBRIGADO.
https:
//www.casadocodigo.com.br/products/livro-trilhas-python
Dr. E. S. Pereira 86