SlideShare uma empresa Scribd logo
1 de 86
Baixar para ler offline
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Mais conteúdo relacionado

Mais de Eduardo S. Pereira

Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreLista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreEduardo S. Pereira
 
Aula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaAula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaEduardo S. Pereira
 
Aula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoAula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoEduardo S. Pereira
 
Atividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaAtividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaEduardo S. Pereira
 
Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Eduardo S. Pereira
 
Probabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaProbabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaEduardo S. Pereira
 
Probabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotProbabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotEduardo S. Pereira
 
Primeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosPrimeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosEduardo S. Pereira
 
Aula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosAula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosEduardo S. Pereira
 

Mais de Eduardo S. Pereira (20)

Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo BimestreLista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
Lista de Exercícios de Probabilidade e Estatística do Segundo Bimestre
 
Aula 10 Probabilidade e Estatística
Aula 10 Probabilidade e EstatísticaAula 10 Probabilidade e Estatística
Aula 10 Probabilidade e Estatística
 
Aula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca RevisãoAula de Probabilidade e Estatítisca Revisão
Aula de Probabilidade e Estatítisca Revisão
 
Atividade prática Probabilidade e Estatística
Atividade prática Probabilidade e EstatísticaAtividade prática Probabilidade e Estatística
Atividade prática Probabilidade e Estatística
 
Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1Probabilidade e Estatítica Lista de Exercícios 1
Probabilidade e Estatítica Lista de Exercícios 1
 
Probabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de FrequênciaProbabilidade e Estatística Tabelas de Frequência
Probabilidade e Estatística Tabelas de Frequência
 
Probabilidade e Estatística Boxplot
Probabilidade e Estatística BoxplotProbabilidade e Estatística Boxplot
Probabilidade e Estatística Boxplot
 
Aula 11 Modelagem de Dados
Aula 11 Modelagem de DadosAula 11 Modelagem de Dados
Aula 11 Modelagem de Dados
 
Aula 10 Modelagem de Dados
Aula 10 Modelagem de DadosAula 10 Modelagem de Dados
Aula 10 Modelagem de Dados
 
Aula 9 Modelagem de Dados
Aula 9 Modelagem de DadosAula 9 Modelagem de Dados
Aula 9 Modelagem de Dados
 
Aula 7 Modelagem de Dados
Aula 7 Modelagem de DadosAula 7 Modelagem de Dados
Aula 7 Modelagem de Dados
 
Aula 8 Modelagem de Dados
Aula 8 Modelagem de DadosAula 8 Modelagem de Dados
Aula 8 Modelagem de Dados
 
Primeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosPrimeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de Dados
 
Aula 06 Modelagem de Dados
Aula 06 Modelagem de DadosAula 06 Modelagem de Dados
Aula 06 Modelagem de Dados
 
Aula05
Aula05Aula05
Aula05
 
Aula04
Aula04Aula04
Aula04
 
Aula03
Aula03Aula03
Aula03
 
Aula02
Aula02Aula02
Aula02
 
Aula01
Aula01Aula01
Aula01
 
Aula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosAula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de Dados
 

Máquinas Podem Pensar

  • 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