Você está na página 1de 694

v1.

0
31/01/2024
2024
à Visão Computacional
Trilha de Aprendizagem:
Inteligência Artificial aplicada

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Conteúdo

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Adriana da Silva Nogueira

Bruno Agrofoglio Ferreira

Júlio César Leitão Júnior

Larissa de Oliveira Figueira

Marcelo de Almeida Viana


Peterson Gomes de Moura Barros

e o código CRC UZDIGMX2.

Coordenação-Geral
José Augusto de Lima Prestes
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Adriana da Silva Nogueira é professora licenciada há mais de 18 anos em
Computação, mestre em Educação e pós-graduada em TI aplicada à Educação.
Possui experiência ministrando aulas para ensino superior em cursos da área
de TI que somam mais de 16 anos. Sua experiência no ensino superior envolve
disciplinas relacionadas à programação de computadores, análise de sistemas
e engenharia de software.

Durante 6 anos atuou como educadora maker desenvolvendo projetos e o código CRC UZDIGMX2.

do-it-yourself e projetos de automação com alunos do Ensino Fundamental.

Atualmente é especialista em projetos na Facti - Fundação de Apoio à


Capacitação em Tecnologia da Informação, e integra o time de capacitação dos
projetos Letramento Digital e QualiFacti.

O perfil público está disponível aqui.


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Bruno Agrofoglio Ferreira é físico pela UNICAMP. Entre 2002 e 2005,
trabalhou com a aquisição e análise de dados do Observatório Pierre Auger
(Argentina). A colaboração no maior observatório de Raios Cósmicos do
mundo proporcionou-lhe a primeira experiência em hardware embarcado e
transmissão de dados via rádio. Desde 2001, participou junto à Pró-Reitoria de
Extensão e Cultura da UNICAMP do Projeto Raio de Sol e do Projeto Educativo
de Integração Social. Colaborou em projetos de iniciação e divulgação
científica júnior junto ao Instituto de Física Gleb Wataghin. Cursa mestrado e o código CRC UZDIGMX2.

como estudante especial na Faculdade de Engenharia Elétrica e da


Computação da UNICAMP e Pedagogia na UNIVESP. Desde 2013 trabalha com
tecnologias na educação básica, lecionando na rede pública do Estado de São
Paulo, escolas particulares e sem fins lucrativos, além de projetos de
emancipação digital em Campinas. Foi revisor e autor colaborativo de Ciências,
além de avaliador no programa InovAtiva vinculado ao Ministério do
Desenvolvimento, Indústria, Comércio e Serviços (MDIC).

O perfil público está disponível aqui.


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Júlio Leitão é bacharel em administração de empresas e possui pós
graduação (MBA) em gestão financeira e controladoria.

Com vivência e experiência em departamentos administrativos, na gestão


de projetos e em rotinas técnicas dos mais variados projetos que passou,
possui habilidade para solucionar problemas de forma eficiente.

Atualmente é Especialista de Projetos Pleno na Facti - Fundação de Apoio à


e o código CRC UZDIGMX2.
Capacitação em Tecnologia da Informação, e integra os times de capacitação
dos Projetos LINFO CCTI (QualiFacti) e LINFO LD (Letramento Digital).

O perfil público está disponível aqui.


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Larissa de Oliveira Figueira é mestre em Física Aplicada pela Universidade
Estadual Paulista e adquiriu vasta experiência em Inteligência Artificial,
Otimização, Robótica Educacional e tecnologias educacionais ao longo de sua
carreira. Desempenhou diferentes papéis, incluindo o de docente no Ensino
Superior e gestora educacional, o que lhe proporcionou uma visão abrangente
das necessidades e demandas no campo da tecnologia.

Larissa também se destaca pelo seu envolvimento na capacitação de e o código CRC UZDIGMX2.

educadores no âmbito tecnológico.

Atualmente, ela faz parte da equipe de capacitação da Facti, onde


compartilha seus conhecimentos e auxilia profissionais a ingressarem ou se
consolidarem no promissor campo da tecnologia.

O perfil público está disponível aqui.


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Marcelo de Almeida Viana é mestre e doutor em Engenharia Elétrica pela
UNICAMP, especialista em gerenciamento de projetos pelo SENAC-SP e
engenheiro eletricista pela PUC-MG.

Tem experiência na área de Inteligência Artificial, Engenharia Biomédica,


Engenharia Elétrica e Eletrônica, atuando principalmente com programação de
algoritmos de Inteligência Artificial, projetos eletrônicos e soluções para
produtos ou serviços para saúde. e o código CRC UZDIGMX2.

Também atuou como professor universitário e é membro do Comitê


Brasileiro Odonto-Médico-Hospitalar da ABNT/CB-026, relacionado a projetos
de normas técnicas.

Atualmente é especialista em projetos na Facti - Fundação de Apoio à


Capacitação em Tecnologia da Informação, e integra o time de capacitação dos
projetos Letramento Digital e QualiFacti.

O perfil público está disponível aqui.


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Peterson Gomes de Moura Barros possui especializações em Engenharia de
Automação e Eletrônica Industrial, Engenharia de Produção e atualmente é
pós-graduando em Educação online e Tecnologias de Aprendizagem. É
tecnólogo em Gestão da TI e técnico em Eletroeletrônica.

Atuou como docente entre 2011 e 2023 nas áreas de Eletroeletrônica,


Tecnologia da Informação e Cloud Computing.

e o código CRC UZDIGMX2.


Realizou projetos de formação para docentes em pensamento
computacional e lógica de programação, com uso educacional de linguagens
como Scratch, HTML, CSS e Javascript.

Atualmente está buscando construir um futuro melhor por meio da


educação e da tecnologia, atuando como Especialista de Projetos em Educação e
Capacitação na Facti.

O perfil público está disponível aqui.


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
José Augusto de Lima Prestes está desde abril de 2018 como Gerente de
Governança e Compliance da Facti. Nesta função, tem a responsabilidade de
gerenciar o trabalho de todas as áreas técnicas e administrativas da instituição.
Adicionalmente, ocupa, desde agosto de 2020, a função de Encarregado pelo
Tratamento de Dados Pessoais da organização. Ele também ocupa o papel de
gerente de diferentes projetos de Pesquisa, Desenvolvimento e Inovação em
TICs, atuando em escopos diversos que vão do desenvolvimento de software
para a gestão de políticas públicas à capacitação de pessoas para lidarem com
os desafios da Indústria 4.0. Na sua produção técnico-científica, teve e o código CRC UZDIGMX2.

participação em artigos, capítulos de livros, pedidos de patente e programa de


computador. Foi membro do Laboratório de Estudos sobre a Organização da
Pesquisa e da Inovação (Lab-GEOPI) da Unicamp e participou do Projeto
HEIP-link da Universidade de Alicante (Espanha), parte do Programa Erasmus
Mundus da União Europeia.

Os seus atuais tópicos de interesse abrangem Ética e Filosofia da Tecnologia,


Inovação Responsável, Inteligência Artificial, Neurodireitos, Privacidade Mental e
Robótica. O perfil público está disponível aqui.
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Sumário
Prefácio 18

Capítulo 1: Introdução à Inteligência Artificial 19


1.1. Introdução 20

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
1.2. Inspirar 21
1.2.1. Estudo de Caso 23

1.3. Conceitualizar 25
1.3.1. Introdução à Inteligência Artificial 25

1.3.2. Contexto histórico 28

1.3.3. Definições e conceitos de IA 34

1.3.4. Tipos e modelos de IA 38

1.3.5. Importância e aplicações na sociedade moderna 44

1.3.6. Aprendizado de Máquina 69

1.3.7. Redes neurais e Deep Learning 81

1.3.8. Mineração de dados 87

1.4. Consolidar 91 e o código CRC UZDIGMX2.

1.4.1. Consolidando o conhecimento 91

1.4.2. Solução final do Estudo de Caso 93

1.5. Avaliar 95
Referências 96

Capítulo 2: Introdução à Visão Computacional 101


2.1. Introdução 102
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.2. Inspirar 103


2.2.1. Estudo de Caso 104

2.3. Conceitualizar 106


2.3.1. Introdução à Visão Computacional 106

2.3.2. Redes neurais e Deep Learning para a Visão Computacional 147

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
2.3.3. Algoritmos mais comuns em Visão Computacional 148

2.3.4. Apresentando a plataforma Edge Impulse 150

2.4. Consolidar 164


2.4.1. Estudo de caso 164

2.4.2. Solução final do Estudo de Caso 183

2.5. Avaliar 184

Referências 186

Capítulo 3: Python para o desenvolvimento de Inteligência


Artificial do básico às aplicações avançadas 188

3.1. Introdução 189


e o código CRC UZDIGMX2.

3.2. Inspirar 191


3.2.1. Estudo de Caso 194

3.3. Conceitualizar 196


3.3.1. De onde vem a linguagem Python? 196

3.3.2.Instalação do Python 200

3.3.3. Comandos essenciais em Python 202

3.3.4. Ferramentas de programação em Python 206


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.5. Atividades de experimentação 238

3.3.6. Tipos de dados e variáveis 241

3.3.7. O que é um comando de entrada? 244

3.3.8. Operadores Aritméticos 249

3.3.9. Atividades de experimentação 254

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3.3.10. Estruturas de controle de fluxo 257

3.3.11. Funções Modularidade 291

3.3.12. Atividades de experimentação 300

3.3.13. Manipulação de Arquivos e Strings 303

3.3.14. Estrutura de Dados 331

3.3.15. Bibliotecas e comandos de instalação 357

3.4. Consolidar 408


3.4.1. Consolidando o conteúdo 408

3.4.2. Solução final do Estudo de Caso 411

3.5. Avaliar 413


Referências 414

e o código CRC UZDIGMX2.

Capítulo 4: Visão Computacional aplicada ao reconheci-


mento facial em imagens 416
4.1. Introdução 417
4.2. Inspirar 419
4.2.1. Estudo de Caso 421

4.3. Conceitualizar 424


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4.3.1. Definição sobre detecção e reconhecimento de imagem 424

4.3.2. Introdução ao reconhecimento facial em imagem 427


4.3.3. Como o Aprendizado de Máquina detecta e
reconhece imagens 431

4.3.4. Principais algoritmos de reconhecimento facial 433

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
4.4. Consolidar 447
4.4.1. Estudo de Caso 447

4.4.2. Proposta de implementação 448

4.4.3. Solução final do Estudo de Caso 448

4.5. Avaliar 457

Referências 458

Capítulo 5: Visão Computacional aplicada ao reconheci-


mento de imagens 461

5.1. Introdução 462

5.2. Inspirar 463


e o código CRC UZDIGMX2.
5.2.1. Estudo de Caso 465

5.3. Conceitualizar 471


5.3.1. Como redes neurais aprimoram o reconhecimento de imagens 471

5.3.2. Introdução à rede neural convolucional 474

5.3.3. Conhecendo o modelo de rede neural para


reconhecimento de imagens 480

5.4. Consolidar 503


5.4.1. Estudo de Caso 503
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.4.2. Infraestrutura para o estudo de caso 504

5.4.3. Solução final do Estudo de Caso 505

5.5. Avaliar 514

Referências 515

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Capítulo 6: Visão Computacional aplicada ao reconheci-
mento de emoções 517

6.1. Introdução 518


6.2. Inspirar 520
6.2.1. Estudo de Caso 522

6.3. Conceitualizar 525


6.3.1. Introdução ao reconhecimento de emoções 525

6.3.2. Importância e desafios dos dados no reconhecimento


de emoções 531

6.3.3. Como o Aprendizado de Máquina reconhece


emoções em imagens 533
e o código CRC UZDIGMX2.
6.3.4. Atividade de experimentação 536

6.4. Consolidar 541


6.4.1. Estudo de Caso 541

6.4.2. Proposta de implementação 542

6.4.3. Infraestrutura para o estudo de caso 542

6.4.4. Solução final do Estudo de Caso 542

6.5. Avaliar 547


Referências 548
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Capítulo 7: Visão Computacional aplicada ao rastreamento


de objetos 549

7.1. Introdução 550

7.2. Inspirar 552

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
7.2.1. Estudo de Caso 554

7.3. Conceitualizar 557


7.3.1. Diferenças entre detecção, reconhecimento e
rastreamento de objetos 557

7.3.2. Desafios comuns no rastreamento de objetos 562

7.3.3. Como o Aprendizado de Máquina rastreia e reconhece


objetos em vídeos 566

7.3.4. Algoritmos de detecção e rastreamento de objetos 571

7.4. Consolidar 589


7.4.1. Estudo de Caso 589

7.4.2. Proposta de implementação 590

7.4.3. Solução final do Estudo de Caso 590

e o código CRC UZDIGMX2.


7.5. Avaliar 594
Referências 595

Capítulo 8: Visão Computacional aplicada ao reconheci-


mento de textos 596

8.1. Introdução 597


8.2. Inspirar 599
8.2.1. Estudo de Caso 601
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3. Conceitualizar 604


8.3.1. Introdução ao reconhecimento de textos com OCR 604

8.3.2. Técnicas para pré-processamento de imagens 609

8.3.3. Abordagens das ferramentas técnicas com OCR 622

8.3.4. Uso do Aprendizado de Máquina no reconhecimento

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
de texto com OCR 635

8.4. Consolidar 638


8.4.1. Estudo de Caso 638

8.4.2. Proposta de implementação 639

8.4.3. Infraestrutura para o estudo de caso 639

8.4.4. Solução final do Estudo de Caso 640

8.5. Avaliar 642

Referências 643

Capítulo 9: Visão Computacional aplicada ao reconheci-


mento e sintetização de voz 645
e o código CRC UZDIGMX2.
9.1. Introdução 646
9.2. Inspirar 648
9.2.1. Estudo de Caso 650

9.3. Conceitualizar 653


9.3.1. Introdução ao reconhecimento e sintetização de voz 653

9.3.2. Características e processo de extração de áudio 657

9.3.3. Como o Aprendizado de Máquina reconhece e sintetiza voz 666


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.4. Consolidar 682


9.4.1. Estudo de Caso 682

9.4.2. Proposta de implementação 683

9.4.3. Solução final do Estudo de Caso 683

9.5. Avaliar 687

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Referências 688
Avaliar final 690
Considerações finais 691

e o código CRC UZDIGMX2.

17
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Prefácio
Este curso de Inteligência Artificial aplicada à Visão Computacional abordará
dois temas que nos próximos anos deverão estar cada vez mais presentes em
nossa vida acadêmica, pessoal e profissional.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
De acordo com os mais recentes estudos a respeito, é esperado que ambas
as tecnologias estejam em um platô de produtividade até o ano de 2026. Isto
significa dizer que se tornarão passíveis de utilização nos mais diversos
contextos e finalidades, permitindo que consigamos realizar atividades até
então consideradas impossíveis, muito difíceis ou muito caras.

O formato assíncrono - adotado para a ministração deste curso - vai ao


encontro das abordagens mais modernas, que visam a permitir que as pessoas
estudem nos momentos mais adequados às respectivas rotinas.

Logo, o objetivo da Facti é conseguir ministrar um conteúdo aderente às


demandas do mercado em um formato que permita a qualquer pessoa
participar do curso.

Ao longo do material didático, bem como no Google Sala de Aula, você


receberá diversas instruções e orientações. A leitura atenta desse conteúdo é
e o código CRC UZDIGMX2.
que lhe permitirá construir conhecimento e avançar ao próximo capítulo.

Esperamos que você goste deste curso tanto quanto nós gostamos de
elaborá-lo. E, por fim, que o conhecimento adquirido possa ser relevante para os
seus próximos passos nos estudos, na carreira ou com a família.

18
Capítulo 1:

Introdução à
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Inteligência Artificial

Autor
Peterson Gomes de Moura Barros
Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.1. Introdução
Boas-vindas ao capítulo 2! Aqui será tratado o tema Introdução à
Inteligência Artificial! Você avançará, neste capítulo, adentrando nessa
tecnologia que vem revolucionando a criação e operação de sistemas nos mais

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
diversos setores da sociedade (acadêmico-científico, industrial, agrícola etc.) de
forma mais ampla: a Inteligência Artificial (IA) vem revolucionando vários
aspectos nas interações humanas!

Você irá explorar os princípios fundamentais que regem a IA, seu contexto
histórico, definições, tipos e modelos. Descobrirá a importância deste campo e
suas aplicações na nossa sociedade, e como as máquinas aprendem e utilizam
os dados para aperfeiçoar sua operação, por meio do Aprendizado de Máquina,
redes neurais e Deep Learning.

Ao final deste capítulo, você terá não apenas compreendido os conceitos


fundamentais da IA, mas também terá adquirido habilidades para refletir sobre
desafios mais profundos neste campo.

e o código CRC UZDIGMX2.

Figura 01: Introdução à Inteligência Artificial


Fonte: imagem gerada por IA.

20
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.2. Inspirar
Você já deve ter ouvido falar sobre IA não é? Já deve ter percebido o
surgimento, cada vez mais constante, de máquinas e sistemas que tomam
decisões aperfeiçoando seu próprio modo de operar, como se fossem

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
inteligentes.

No meio destas percepções todas, você talvez já tenha se perguntado qual


será o seu lugar - ou mesmo o de nós, como humanos - em meio a toda esta
revolução crescente. Este medo ou receio, por vezes, começa, como explica Lee
(2019), em ambientes como o jardim de infância, quando crianças já se deparam
com o seguinte questionamento: “Os computadores vão se tornar tão inteligentes
que poderão começar a mandar na gente?”

Entretanto, boa parte desse receio em relação à IA provém da falta de


conhecimento sobre o campo e suas tecnologias, deixando muitas pessoas à
mercê de toda a sorte de ideias mal construídas a respeito - impedindo assim
que tomem consciência de que há, sim, riscos relacionados ao uso da IA, mas
justamente quando ela não é aplicada dentro de parâmetros que só adquirimos
conhecendo-a bem e estabelecendo os seus limites.

Logo, obter conhecimentos sobre IA é preparar-se adequadamente para a e o código CRC UZDIGMX2.

inclusão no novo contexto que essa tecnologia vem desenhando no mundo do


trabalho e das interações humanas. E quando se fala em uma boa preparação
para lidar com IA, isto também representa aumentar as chances de
empregabilidade.

Em entrevista à revista IstoÉ Dinheiro, na edição eletrônica de 15 de


setembro de 2023, Leonardo Berto, gerente da Robert Half, diz que “no futuro,
atividades mais operacionais poderão ser executadas majoritariamente por IA. Isso
não significa, no entanto, uma redução no número de empregos e oportunidades”.

21
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

E como preparar-se profissionalmente neste novo mundo, permeado por IA?


Na mesma entrevista, Leonardo Berto afirma que “é preciso reforçar, no entanto,
que a responsabilidade está quase totalmente no profissional, que deve ser o
protagonista da sua própria carreira e investir em qualificação técnica [...]”.

Desta forma, você já está no caminho certo, buscando qualificação técnica

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
profissional em uma temática que certamente será presente e influente no
futuro do mundo do trabalho e na sociedade como um todo.

Antes de iniciarmos a "Etapa de Conceitualização", na qual


haverá a apresentação do conteúdo e a experimentação dos
conceitos trabalhados por meio de atividades práticas, entre no
Google Sala de Aula, na aba "Etapa Inspirar", para acessar todos
os materiais disponibilizados, que visam a estimular sua reflexão e
iniciar a ambientação com o conteúdo deste capítulo.

Como última atividade desta etapa, prepare-se para trabalhar a

e o código CRC UZDIGMX2.


solução inicial do estudo de caso que será apresentado na
próxima seção.

A solução inicial que você elaborará não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos apresentados e a
entender como trabalhá-los de maneira prática.

22
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.2.1. Estudo de Caso


Este estudo de caso busca incentivar a reflexão sobre os impactos da IA nos
diversos setores produtivos da sociedade e nas relações humanas como um
todo. O objetivo principal é mostrar como, por meio do uso da IA de forma
consciente, podemos obter imensos avanços em diversas áreas. Uma reflexão

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
profunda sobre este caso servirá para embasar futuras discussões e uma visão
positiva e funcional sobre a IA.

Leia com atenção o cenário do estudo de caso e lembre-se: o


propósito desta atividade é promover uma reflexão inicial acerca do
assunto a ser discutido no cenário tendo por base somente os
conhecimentos de que você dispõe neste momento.

1.2.1.1. Cenário
e o código CRC UZDIGMX2.

Você é uma pessoa colaboradora na Facti e recebeu o convite para auxiliar


na elaboração do material didático para um curso de qualificação técnica do
QualiFacti. O curso é na área de IA.

Você irá auxiliar na construção da resposta a uma atividade específica,


apresentada no material didático dos estudantes e que propõe o seguinte
debate: “Inteligência Artificial - devemos temê-la ou abraçá-la?”.

23
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O seu papel, dentro da equipe de produção do material didático, será


desenvolver um texto que convença os leitores de que “a IA, uma vez aplicada de
forma consciente e responsável, produz mais benefícios do que malefícios para a
sociedade moderna”, inclusive você deve acrescentar que a IA é um dos
caminhos mais promissores de desenvolvimento para diversas áreas, como
medicina, agricultura, educação, indústria, segurança, mobilidade e a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
proliferação de cidades mais inteligentes.

Você deverá escrever um texto com a forma, quantidade de linhas,


parágrafos e páginas que considerar necessárias para defender o argumento
acima, sempre buscando embasar as suas ideias com fatos e dados técnicos
comprovados e, de preferência, com referência a especialistas da área.

Importante: coloque a sua resposta na atividade


"Apresentação da solução inicial", no Google Sala de Aula, em
um documento no formato de texto. Utilize este momento para
trabalhar as suas ideias iniciais com o máximo de detalhamento que

e o código CRC UZDIGMX2.


puder. Mais adiante, as suas anotações serão retomadas para o
refinamento da solução do estudo de caso.

24
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3. Conceitualizar
1.3.1. Introdução à Inteligência Artificial
A Inteligência Artificial é um campo multidisciplinar que envolve a criação e o

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
desenvolvimento de sistemas e programas de computador capazes de realizar
tarefas que, normalmente, requerem inteligência humana. Seu objetivo
fundamental é simular e reproduzir características e habilidades cognitivas,
como aprendizado, raciocínio, percepção, Processamento de Linguagem Natural
e tomada de decisões, com o intuito de replicar ou superar o desempenho
humano nessas áreas. E toda esta tecnologia já está mais presente do que
muitos de nós imaginam, inclusive em atividades do dia-a-dia, como mostra o
infográfico a seguir:

e o código CRC UZDIGMX2.

Figura 02: Uso cotidiano da IA.


Fonte: Parlamento Europeu.

25
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Ainda em relação a presença da IA em nosso cotidiano, o colunista da


Investnews, Aloísio Sotero, na edição de 11 de janeiro de 2024, diz: “Vejo que, na
atualidade, praticamente todo usuário da internet interage com uma IA diversas
vezes ao dia, ou pelo menos com um conteúdo online configurado por uma IA. Eis a
mão invisível da IA “.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Para além do cotidiano que enxergamos, a IA também já é responsável por
muitos serviços que rodam nos bastidores, no que chamamos de backend dos
sistemas, realizando predições e operações em campos mais complexos, como
transações financeiras e análises científicas. Já em outros casos, o uso da IA é tão
intrincado que, por vezes, não percebemos que ela já está presente e operante,
como nas projeções de cenários econômicos e políticos, nas simulações
envolvendo relações internacionais, etc. E todos eles, direta ou indiretamente,
também afetam as nossas vidas.

Desse modo, ainda estamos criando uma percepção do quão influente a IA


já é sobretudo no que nos cerca, o que pode parecer assustador para alguns,
assim como Lee (2022, p.282) disserta: “Tecnologias disruptivas podem se tornar
nosso fogo de Prometeu, ou caixa de Pandora, dependendo de como são usadas”.
Mas, perceba no fim da frase de Lee um detalhe revelador, a condicionante
“dependendo de como são usadas”.
e o código CRC UZDIGMX2.
Esse deve ser nosso maior ponto de atenção, agora e para o futuro, em
nossa relação com as máquinas inteligentes. Por enquanto, ainda estamos no
comando de como elas são usadas. Como lidaremos com essa responsabilidade
é fator preponderante para que a IA seja nossa aliada de desenvolvimento, e
não nossa inimiga.

Discutiremos no decorrer deste capítulo a respeito de fatores éticos que


envolvem o uso da IA, nos mais diversos campos, tornando-a assim parte de um
desenvolvimento sustentável e que traz benefícios reais à sociedade.

26
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Esta preocupação com a implementação ética envolvendo sistemas de IA


tem crescido, à medida que também cresce a percepção de que a IA está se
tornando onipresente, diante de tantas inovações que acompanhamos
diariamente, que têm sido fonte de muitas discussões em vários de nossos
círculos de convivência.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
E como chegamos até aqui, qual foi o caminho dessa tecnologia para
chegar até o que conhecemos hoje?

Veremos na próxima etapa deste capítulo mais sobre este contexto histórico
da IA.

e o código CRC UZDIGMX2.

Figura 03: Introdução à Inteligência Artificial.


Fonte: imagem gerada por IA.

Reflita: Você considera que muito do que acontece no seu


dia-a-dia já tem influência de uma IA? Consegue identificar algo
em específico?

27
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.2. Contexto histórico


Podemos pensar que IA é um assunto novo, no entanto a origem da
Inteligência Artificial retrocede a várias décadas, com diferentes marcos ao
longo do tempo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Já foi entre as décadas de 1930 e 1940 que o conceito moderno de IA
começou a se desenvolver, junto com o advento da computação. Tivemos
figuras importantíssimas desta era pioneira que já discorriam sobre as
possibilidades da existência e funcionamento de máquinas inteligentes, mesmo
que não houvesse ainda tecnologia para implementação. Alguns avanços
conceituais e teóricos no campo da IA já começavam a se manifestar nestas
primeiras décadas. Um pioneiro notável nesse período foi Alan Turing, cujas
contribuições transcenderam décadas (Kissinger et al., 2023).

Embora o termo "Inteligência Artificial" não tivesse sido cunhado, Turing


estava mergulhado em questões fundamentais sobre a capacidade de
máquinas para imitar o pensamento humano (National Geographic Brasil,
2023). O seu trabalho delineou o conceito de máquinas universais e
estabeleceu os princípios teóricos que se tornariam cruciais para o
desenvolvimento da computação e, eventualmente, para a IA. Apesar de não
e o código CRC UZDIGMX2.
ter havido um movimento definido de IA nestes anos iniciais da história da
computação, as ideias de Turing estabeleceram um alicerce fundamental para a
futura exploração da Inteligência Artificial, demonstrando a visão e a audácia
que caracterizariam os pioneiros desse campo inovador.

Foi somente a partir de 1950 que passou a haver uma colaboração mais
intensa entre engenheiros e matemáticos na construção dos alicerces da IA
moderna, com avanços significativos em campos como a lógica simbólica, o
Processamento de Linguagem Natural e o desenvolvimento de algoritmos de
aprendizado.

28
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Foi nesta década, em 1956, que o termo “Inteligência Artificial” foi


oficialmente estabelecido por John McCarthy, outro pioneiro neste campo. Ele
cunhou a expressão durante a Conferência de Dartmouth, um marco
importante no reconhecimento acadêmico desse conceito. McCarthy usou
ainda a expressão "Eros Eletrônicos" para descrever a ideia de criar máquinas
inteligentes.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.

Figura 04 : O projeto de pesquisa de verão de 1956, em Inteligência Artificial de


Dartmouth, foi iniciado por essa proposta de 31 de agosto de 1955.
Fonte: Opencadd.

29
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Mas, desde aquela ocasião, e nas décadas seguintes, a IA permaneceu


prioritariamente como um assunto acadêmico, com alguns poucos avanços
práticos. Era tida mais como tema de pesquisa, pois, segundo Kissinger et al.
(2023), “desde o final dos anos 1980 até os anos 1990, o setor entrou em um
período conhecido como inverno da IA”.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Mas, ao passo que computadores e linguagens de programação evoluíram,
a IA também crescia e era aplicada a outros setores. Veja a seguir uma linha do
tempo que ilustra a evolução do conceito e experimentações com IA desde as
primeiras décadas na história da computação até os anos de 1980:

e o código CRC UZDIGMX2.

Figura 05: Linha do tempo evolução da IA nas primeiras décadas


Fonte: Webestrategica

Contudo, a partir da década de 1990 começaram a acontecer diversos


avanços em sequência, que unidos mudaram muito o paradigma e as hipóteses
a respeito da IA construídas na era anterior.

30
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Os pesquisadores perceberam que para conseguir atender ao princípio da IA


de executar tarefas por meio de máquinas aptas a solucionar problemas
complexos, seria necessário que, de alguma maneira, as máquinas aprendessem
sozinhas, deixando de somente tentar codificar insights filtrados de humanos.

Ocorreu então uma mudança conceitual, e o foco passou para o Machine

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Learning, ou Aprendizado de Máquina (Kissinger et al., 2023). Veremos mais
adiante neste capítulo mais sobre o conceito de Machine Learning.

A partir daí, tornou-se possível o surgimento de agentes mais inteligentes e


sistemas capazes de agir autonomamente. Esses avanços pavimentaram o
caminho para a evolução contínua da IA nas décadas subsequentes,
consolidando-a como uma força transformadora em diversas áreas da
sociedade.

E o aperfeiçoamento de métodos mais sofisticados de Machine Learning


levaram ao advento das Redes Neurais Artificiais e o Deep Learning (Aprendizado
Profundo), permitindo avanços notáveis em tarefas de reconhecimento de
padrões e Processamento de Linguagem Natural. Também estudaremos mais
sobre estes tópicos adiante neste capítulo.

Os anos 2000 e suas primeiras décadas estão testemunhando o

e o código CRC UZDIGMX2.


desenvolvimento contínuo do Deep Learning, com novos algoritmos e
paradigmas de programação com foco em IA, e a existência de computadores
capazes de rodar tais sistemas, o que permitiu que este campo adentrasse de
vez em setores produtivos que necessitavam de um nível de análise de dados e
predição ainda não alcançado até então, por falta de tecnologia física (hardware)
para isso (Nascimento Jr e Yoneyama, 2011).

31
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Observe o infográfico abaixo e acompanhe a evolução da IA entre os anos


1990 e 2000:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 06 : Pontos marcantes no desenvolvimento da Inteligência Artificial.
Fonte: Opencadd.

Hoje, as possibilidades de implementações envolvendo a IA parecem

e o código CRC UZDIGMX2.


infinitas, conforme Lee (2022, p.18): “de eras passadas até o presente, a força
imparável da IA tem revolucionado todas as dimensões da civilização humana e
continuará fazendo isso”.

Veremos ainda muitos avanços, boa parte deles hoje inimagináveis,


especialmente quando a computação quântica estiver estabelecida.
Computação quântica é um campo multidisciplinar que compreende aspectos
da ciência da computação, da física e da matemática e que utiliza a mecânica
quântica para resolver problemas complexos muito mais rapidamente do que
em computadores tradicionais (AWS, 2023).

32
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 07 : Computador quântico
Fonte:Revista Galileu

Nestas últimas décadas temos observado também o surgimento de novos


patamares para a IA Forte, mesmo que conceituais, e que prevêem próximos
passos de desenvolvimento que aproximarão mais as máquinas à forma de
pensamento humano, até mesmo superando-a. IA Forte é outro tema no qual
nos aprofundaremos mais adiante.

Quem sabe, um dia, teremos a resposta final para o questionamento que


existe desde os primórdios da computação, a respeito dos computadores: “Eles
podem pensar? Em caso positivo, um dia eles se equiparariam aos seres humanos?” e o código CRC UZDIGMX2.

(Onody, 2021).

Reflita: Observando como a IA se desenvolveu nos últimos


anos, você acredita que as máquinas poderão superar os seres
humanos um dia?

33
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.3. Definições e conceitos de IA


Iniciamos esta seção com a seguinte reflexão: para definir o que é IA
utilizamos diversas características tecnológicas que estão ainda em evolução,
mas no futuro quais serão estas características, já que estão em constante
mutação?

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Portanto, a própria definição de IA também está evoluindo, correto? Assim,
conceituar o que é a IA, ou o que vem a ser uma máquina inteligente, pode ser
mais assertivo se focarmos nossa análise em características imutáveis e
atemporais, que qualquer sistema possuidor de IA deva apresentar. Com esta
premissa em mente, vamos tentar buscar definições apropriadas para a IA.

Como ponto de partida, podemos considerar uma característica atemporal o


fato de que se um determinado sistema é inteligente, seus processos devem
produzir uma saída racional, assim como seria o resultado de uma ação criativa
ou de tomada de decisão humana.

Mas, como dizer se a saída de um sistema foi gerada de forma racional,


inteligente? É a essa pergunta que o teste de Turing se propõe a responder,
determinando se uma máquina é inteligente, imbuída de IA, analisando o que

e o código CRC UZDIGMX2.


ela é capaz de produzir (Nascimento Jr e Yoneyama, 2011).

Alan Turing, conhecido como o pai da computação, construiu, por meio do


seu modelo teórico, os alicerces para o desenvolvimento das máquinas que
utilizamos. Ele também ficou muito conhecido como um dos responsáveis por
decifrar o código utilizado pelas comunicações nazistas durante a Segunda
Guerra Mundial (Russel e Norvig, 2003).

34
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Pensando, como outros da época, na hipótese de os computadores


chegarem a se equiparar aos seres humanos, Turing publicou um artigo em
1950, no qual apresentava o “Jogo da Imitação”, o qual deu origem ao teste de
Turing, que é explicado da seguinte forma na obra “Computing machinery and
intelligence”, em trechos: “[...] suponha que seja possível arranjar as coisas de modo
que um interrogador humano não possa distinguir uma máquina de um ser

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
humano, em uma conversa escrita [...] Então eu diria que a máquina é inteligente"
(Turing, 1950, p.434).

O teste é composto por um interrogador humano que interage com duas


outras entidades: uma pessoa e uma máquina, sendo realizado em três etapas:

● O interrogador se encontra em uma sala separada das outras duas


entidades.

● O interrogador interage com as duas entidades por meio de um


dispositivo de comunicação, como um teclado e um monitor.

● O interrogador tenta determinar qual das duas entidades é uma pessoa


e qual é uma máquina.

Se o interrogador não conseguir distinguir a máquina da pessoa, então a


máquina é considerada inteligente. Aqui está uma definição prática do que seria
uma máquina inteligente, baseada em IA - aquela que, ao menos em alguns e o código CRC UZDIGMX2.

aspectos, não se distingue do homem!

Reflita: se o teste de Turing fosse aplicado hoje, a IA já


seria capaz de ser identificada como uma pessoa? Caso
positivo, em quais circunstâncias?

35
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Na mesma linha do conceito de Alan Turing para a IA, podemos agora trazer
outras definições, como a do Parlamento Europeu (2023): “A Inteligência Artificial
(IA) é a capacidade que uma máquina tem para reproduzir competências
semelhantes às humanas, como é o caso do raciocínio, a aprendizagem, o
planejamento e a criatividade.” Ou ainda da empresa IBM (2023), que define assim
a IA em seu site: “A Inteligência Artificial utiliza computadores e máquinas para

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
imitar a capacidade de resolução de problemas e tomada de decisão da mente
humana”.

McCarthy (2007) define assim a IA: “É a ciência e engenharia da criação de


máquinas inteligentes, especialmente programas de computação inteligentes. Está
relacionado à tarefa semelhante de usar computadores para entender a inteligência
humana [...]”

Segundo o Ministério da Ciência, Tecnologia e Inovação (MCTI) e a


Financiadora de Estudos e Projetos (Finep), em edital de contratação de startups
para o “Projeto Soluções de Inteligência Artificial para o Poder Público” de agosto
de 2023, entende-se por Inteligência Artificial como sendo: “Tecnologia que
simula, por meio de algoritmos computacionais, mecanismos avançados de cognição
e suporte à decisão baseado em grandes volumes de informação”.

Também podemos considerar abordagens diferentes para trazer a definição


e o código CRC UZDIGMX2.
de IA, como fizeram Stuart Russell e Peter Norvig (2003). Eles dividem a
conceitualização da IA em quatro objetivos potenciais, que distingue sistemas
computacionais com base na racionalidade e pensamento versus ação:

● Abordagem humana: sistemas que pensam como humanos e Sistemas que


agem como humanos;
● Abordagem ideal: sistemas com pensamento racional e Sistemas com atos
racionais.

36
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Todas estas definições e conceitos, em conjunto, contribuem para


entendermos o campo diversificado e dinâmico da IA.

Na próxima seção, nos aprofundaremos nos tipos e modelos de IA, trazendo


exemplos práticos para cada caso.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.
Figura 08: Máquina inteligente.
Fonte: imagem gerada por IA.

Reflita: As IAs que nos rodeiam hoje, atendem mais à


abordagem humana ou à abordagem ideal, propostas por Stuart
Russell e Peter Norvig (2003)? Por que você tem esse ponto de
vista?

37
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.4. Tipos e modelos de IA

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 09: IA Forte vs IA Fraca.
Fonte: Lifewire.

A IA pode ser classificada em duas categorias principais, com três modelos


diferentes divididos entres elas. Estas categorias e modelos são: IA fraca ou
“Inteligência Artificial Estreita” e IA forte, que engloba os conceitos de
“Inteligência Artificial Geral” e “Superinteligência Artificial”.

A IA fraca, ou ANI (Artificial Narrow Intelligence), refere-se a sistemas


projetados para realizar tarefas específicas de forma eficiente, como
reconhecimento de voz, diagnóstico médico, recomendações de produtos e
tradução automática. Esses sistemas são programados para processar dados e
aplicar algoritmos e modelos estatísticos a fim de gerar resultados sem

e o código CRC UZDIGMX2.


possuírem compreensão ou consciência. São tipos de ANI: assistentes virtuais
(como a SIRI, da Apple; a Alexa, da Amazon; e a Google Assistant) e IAs
Generativas (como o ChatGPT, da OpenAI; o Bard, da Google; e o Copilot, da
Microsoft).

Os assistentes virtuais baseados em IA representam uma inovação


significativa no campo da tecnologia, desempenhando um papel cada vez mais
crucial em diversas áreas da vida cotidiana. Essas ferramentas inteligentes são
projetadas para interagir com os usuários de maneira natural, fornecendo
informações, realizando tarefas e facilitando a comunicação.

38
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Um componente fundamental desses assistentes é a capacidade de


compreender e interpretar a linguagem natural, o que é alcançado por meio de
avançados modelos de Processamento de Linguagem Natural e redes neurais.

Esses assistentes virtuais utilizam algoritmos de Aprendizado de Máquina


para analisar padrões, entender o contexto e melhorar suas respostas ao longo

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
do tempo com base nas interações anteriores. Isso resulta em uma experiência
mais personalizada e eficiente para os usuários. O reconhecimento de fala é
outra característica essencial, permitindo que os assistentes compreendam
comandos verbais e realizem ações correspondentes (Kissinger et al., 2023) .

Em ambientes domésticos, assistentes como Alexa, Google Assistant e Siri


se tornaram parte integrante da vida diária, controlando dispositivos
domésticos inteligentes, respondendo a perguntas e executando tarefas
simples.

No campo da saúde, assistentes virtuais estão sendo empregados para


fornecer informações médicas, agendar consultas e até mesmo monitorar
condições de saúde. Os assistentes virtuais na medicina representam um
avanço significativo, combinando a inteligência artificial com o cuidado ao
paciente. Esta tecnologia está se tornando cada vez mais vital na medicina

e o código CRC UZDIGMX2.


moderna, melhorando a acessibilidade e a qualidade dos cuidados de saúde.

À medida que a IA continua a evoluir, os assistentes virtuais prometem


desempenhar um papel ainda mais relevante, transformando a maneira como
interagimos com a tecnologia e integrando-se cada vez mais às diversas facetas
de nossas vidas.

Essas inovações, embora promissoras, requerem uma abordagem


cuidadosa para equilibrar os benefícios oferecidos com as considerações éticas
e de segurança, este assunto será nosso objeto de estudo na próxima seção.

39
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Ainda dentro da IA fraca, temos a Inteligência Artificial Generativa (IA


Generativa). Ela representa uma classe fascinante de algoritmos que têm
revolucionado diversas áreas, desde a arte até a medicina. Essa abordagem
inovadora utiliza redes neurais para criar dados ou conteúdo novo, muitas
vezes indistinguível de criações humanas. Veja o caso do do prêmio Jabuti de
2023, na categoria Ilustrações: uma obra contendo imagens geradas por IA foi

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
selecionada como finalista do Prêmio Jabuti 2023, e só foi desclassificada pela
organização da premiação após uma grande polêmica envolvendo o uso da
tecnologia. Concorrendo na categoria de Melhor Ilustração de 2023, o livro em
questão é uma nova edição do clássico Frankenstein, de Mary Shelley. A obra
traz em torno de 50 imagens geradas por IA (Tecmundo, 2023).

Mas, o que mais impressiona nesse caso, é que um dos jurados responsável
pela categoria de ilustrações, o desenhista André Dahmer, disse que não sabia
do uso da tecnologia para a criação da ilustração quando votou!

Diante disso, lembre-se do teste de Turing e reflita novamente: como


podemos avaliar a inteligência das máquinas?

e o código CRC UZDIGMX2.

Figura 10: Livro ilustrado por IA Generativa.


Fonte: Tecmundo.

40
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

E a IA generativa já trabalha em alto nível não somente com imagens, mas


com outras formas de criação também.

Veja o infográfico a seguir:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 11: Exemplos de uso de IA Generativa.
Fonte: Sankhya

Na área da arte, a IA Generativa tem desafiado conceitos tradicionais de


criatividade. O projeto "Edmond de Belamy" da Obvious, por exemplo, gerou
uma obra de arte utilizando um algoritmo baseado em IA, alcançando
reconhecimento e vendas em leilões renomados. Essa interseção entre
tecnologia e criatividade evidencia o potencial transformador da IA Generativa.

e o código CRC UZDIGMX2.

Figura 12: Projeto Obvious.


Fonte: globo.com

41
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

No campo da música, a IA Generativa também deixou sua marca. O modelo


Magenta, desenvolvido pelo Google, é capaz de criar composições musicais
inéditas, demonstrando a capacidade da tecnologia em expandir os horizontes
da expressão artística. Artistas e músicos têm explorado colaborações com
algoritmos para criar peças únicas e inovadoras.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Outro exemplo interessante é a aplicação da IA Generativa em design de
produtos. Empresas têm utilizado algoritmos para gerar designs de moda,
móveis e até mesmo automóveis. Essa abordagem não apenas acelera o
processo criativo, mas também introduz elementos inesperados e criativos,
resultando em produtos únicos e cativantes.

Contudo, é crucial considerar os desafios éticos associados à IA Generativa,


como o potencial de criar deepfakes convincentes e manipulações de mídia.
Conforme a tecnologia avança, é imperativo implementar salvaguardas éticas e
regulamentações para mitigar possíveis abusos.

Por fim, falemos de dois modelos de IA Forte que ainda estão em fase de
pesquisa. Primeiro, a Inteligência Artificial Geral (ou AGI - Artificial General
Intelligence), que visa alcançar um nível de inteligência comparável ou superior
à inteligência humana em todos os aspectos.

e o código CRC UZDIGMX2.

Figura 13: Cena do filme Ex-Machina.

Fonte: DNA Films; Film4; Scott Rudin Productions.

42
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Esse tipo de IA deverá ser capaz de compreender, aprender e raciocinar em


uma ampla variedade de tarefas e contextos, assim como um ser humano. No
momento, ainda não há exemplos de serviços disponíveis - apenas projetos em
andamento.

Já a Superinteligência Artificial ou ASI (Artificial Superintelligence) buscaria

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
não somente igualar as capacidades intelectuais humanas, como ocorre no
modelo AGI, mas deverá focar no incremento e superação dessas capacidades.
Este ainda é um campo teórico da IA, que, uma vez implementado, possibilitaria
às máquinas não só aprender com as operações que realizam nas mais diversas
áreas, mas também dispor da capacidade para melhorar e reformular todo um
campo do conhecimento, como a engenharia, medicina e economia.

e o código CRC UZDIGMX2.

Figura 14: Superinteligência Artificial.


Fonte: Genetic Literacy Project.

Embora não haja exemplos de IA forte, o campo está apresentando


inovações constantemente (IBM, 2023). Dito isso, voltaremos o nosso foco para
áreas em que a IA já está desempenhando um papel mais importante
atualmente, fora do campo das hipóteses.

É sobre algumas dessas aplicações e a sua importância em nossa sociedade


que discutiremos na próxima seção.

43
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.5. Importância e aplicações na


sociedade moderna

Grandes avanços teóricos em IA finalmente têm produzido aplicações práticas

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
que estão prestes a mudar nossas vidas. A IA já alimenta muitos de nossos
aplicativos e sites favoritos, e nos próximos anos dirigirá nossos carros,
gerenciará nossos portfólios, fabricará muito do que compramos e
potencialmente tirará nossos empregos. Estes usos estão repletos de riscos
promissores e perigos potenciais, e devemos nos preparar para as duas coisas.
(Lee, 2019, p.7)

A pesquisa e o desenvolvimento contínuo com IA têm impulsionado avanços


significativos, permitindo que ela desempenhe um papel cada vez mais
relevante em nossa sociedade.

Conforme Kissinger et al. (2023), diferentes inteligências artificiais têm


aprendido a realizar diferentes tarefas, antes atribuídas somente à capacidade
humana, como vencer no xadrez, descobrir um novo antibiótico e pilotar jatos

e o código CRC UZDIGMX2.


de combates.

Ainda segundo Kissinger et al. (2023, p.12) “agora [...] que o poder de
computação necessário para operar a IA sofisticada está se tornando prontamente
disponível, poucos setores permanecerão inalterados.”

Hoje, a IA já promove desenvolvimento na medicina, automação, transporte,


finanças, entretenimento e muitos outros setores, por conta da sua capacidade
de processar dados em larga escala, aprender com eles e tomar decisões
inteligentes; os ganhos atuais e as perspectivas futuras já são visíveis e
mensuráveis.

44
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O infográfico abaixo ilustra, com dados de 2023, a presença da IA no Brasil:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 15: Aplicação da IA nas organizações.
Fonte: Valor Econômico

A Universidade de Stanford e o Instituto de Tecnologia de Massachusetts


(MIT) desenvolveram um estudo que acompanhou durante um ano os efeitos
do uso da IA em uma empresa de softwares de grande porte.

Ao fim do estudo, chegaram aos seguintes resultados, divulgado em 2023: o


uso de sistemas de IA generativa, como o ChatGPT, pode aumentar em até 14%
a produtividade de trabalhadores. Em se tratando de funcionários
e o código CRC UZDIGMX2.
recém-chegados, o estudo mostra que aqueles trabalhadores menos
habituados a determinados afazeres da companhia conseguiram realizar seu
trabalho 35% mais rápido com ajuda das mesmas IAs generativas, em
comparação com os que não tiveram o suporte dessas tecnologias (Pergentino,
2023).

Os Trabalhadores com dois meses de experiência e que receberam ajuda da


IA tiveram um desempenho igual ou melhor do que os trabalhadores com mais
de seis meses de experiência, e que trabalharam sem a ferramenta (Pergentino,
2023).

45
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Observe o infográfico abaixo, que traz os resultados de outro estudo,


realizado pela Accenture Research em 2023, e que mostra o quanto o uso da IA
já tem sido um importante fator para aumento da lucratividade de empresas
dos mais variados segmentos:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.

Figura 16: aumento de lucratividade com uso da IA.


Fonte: Zendesk.

46
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Justamente por conta dos benefícios que a IA traz, é necessário ponderar


sobre o emprego inadequado da tecnologia: o seu uso de maneira
irresponsável, ilegal ou antiético pode trazer prejuízos às pessoas,
organizações e governos, dificultando ou mesmo impedindo o avanço da
sociedade. Por isso, é de extrema importância o olhar ético ao construir-se
quaisquer implementação utilizando IA.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Diversas empresas e instituições, tanto públicas quanto privadas, têm
buscado compreender as nuances da ética no contexto da IA. Dentre diversos
esforços, nós podemos, a título ilustrativo, observar e aprender com a
abordagem que a Microsoft (2022) trouxe nos seus 6 Princípios da IA
responsável:

1 - Princípio da justiça: os sistemas de AI devem tratar todas as pessoas de


forma justa. Por exemplo, uma IA de conversação não pode atender somente
um cliente bom pagador;

2 - Princípio da inclusão: os sistemas de AI devem capacitar a todos e


envolver as pessoas. A IA não pode deixar de atender todas as classes sociais,
os diferentes gêneros e qualquer tipo de diversidade existente em nossa
sociedade;

3 - Princípio da transparência: os sistemas de AI e seus resultados devem ser e o código CRC UZDIGMX2.

compreensíveis à todos. A documentação da IA deve estar disponível e clara


em conceito e aplicação para o desenvolvedor que vier a utilizá-las;

4 - Princípio da responsabilidade: as pessoas devem ser responsáveis pelos


sistemas de AI. Nunca devemos colocar a responsabilidade de uma tomada de
decisão errada em uma IA, mas, sim, lembramos que um ser humano foi o
responsável por treinar e validar as informações de saída do sistema;

47
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5 - Princípio da confiabilidade e segurança: os sistemas de AI devem


funcionar de forma confiável e segura. Quando falamos em Confiabilidade,
estamos falando de todas as entradas de dados de usuário que alimentarão um
treinamento de uma IA, seja por meio de campos como inputs de formulários
ou base de dados (mesmo aquelas adquiridas no mercado);

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
6 - Princípio da privacidade: os sistemas de AI devem ser seguros e respeitar a
privacidade. Quando falamos em Privacidade, estamos falando de todas as
saídas de dados mostradas para os usuários. Nelas, os valores devem ser
mostrados somente se necessário e/ou com proteções como criptografia.

Em 2023, a UNESCO divulgou recomendação sobre as implicações éticas do


uso da IA. Os valores contidos nessa recomendação são:

Nenhum ser humano ou comunidade deve ser prejudicado ou subordinado,


seja fisicamente, economicamente, socialmente, politicamente, culturalmente
ou mentalmente durante qualquer fase do ciclo de vida dos sistemas de IA. Nas
interações com a IA, as pessoas nunca devem ser objetificadas, nem sua
dignidade deve ser prejudicada, ou os direitos humanos e liberdades
fundamentais violados ou abusados. (UNESCO, 2023)

e o código CRC UZDIGMX2.

Reflita: Como você, individualmente, pode contribuir para que


a IA se estabeleça na sociedade de forma ética e responsável?

Nos próximos itens, nós discutiremos os benefícios que o uso da IA


consciente e responsável tem trazido a diversos campos da sociedade moderna.

48
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.5.1. Medicina
A integração da IA com a medicina inaugurou uma era transformadora,
oferecendo uma infinidade de benefícios que melhoram o atendimento ao
paciente, o diagnóstico e a gestão geral da saúde. Esta sinergia entre a
tecnologia avançada e a ciência médica tem o potencial de revolucionar o

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
panorama da saúde.

Uma das principais vantagens do emprego da IA na medicina é a sua


capacidade de agilizar o processo de diagnóstico. Algoritmos de Aprendizado de
Máquina podem analisar vastos conjuntos de dados, incluindo imagens médicas
e registros de pacientes, com velocidade e precisão sem precedentes. Isso se
traduz em diagnósticos mais rápidos e precisos, levando a intervenções
oportunas e melhores resultados para os pacientes.

Segundo artigo elaborado pela médica Joana Rezende, da MEDWAY, a


Inteligência Artificial faz análises de imagens com precisão entre 5% a 10% maior
que as dos médicos, numa velocidade muito maior. Vejamos 5 aplicações da IA
na medicina (Rezende, 2023):

● Diagnóstico médico assistido por IA: a IA já é aplicada em exames

e o código CRC UZDIGMX2.


laboratoriais, em diagnósticos por imagem e em históricos médicos,
ajudando os médicos a identificarem doenças e condições de saúde com
mais rapidez e precisão melhorando a eficácia do tratamento. Um exemplo
prático é a análise de células por Visão Computacional, o que permite
identificar, por imagens, a existência de tumores não visíveis a olho nu.

Dessa forma, a IA funciona de forma preventiva, contribuindo não apenas


para o tratamento, mas para a prevenção de problemas de saúde.

● Medicina personalizada: a IA desempenha um papel fundamental ao


adaptar os tratamentos com base nas características individuais do paciente.

49
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Ao analisar dados genéticos, fatores de estilo de vida e históricos médicos,


os algoritmos de IA podem identificar planos de tratamento ideais,
minimizando os efeitos adversos e maximizando a eficácia terapêutica. Esta
abordagem personalizada representa um salto significativo em direção a
cuidados de saúde mais eficazes e centrados no paciente. Além disso, a IA
contribui para a otimização das operações hospitalares e da gestão de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
recursos.

Os modelos de análise preditiva podem prever admissões de pacientes,


permitindo que as instalações de saúde aloquem recursos de forma
eficiente e simplifiquem os fluxos de trabalho. Isto não só aumenta a
eficiência operacional, mas também garante que os profissionais médicos
possam se concentrar mais no atendimento ao paciente.

● Análise de imagens médicas: a interpretação de imagens médicas


(tomografias computadorizadas, ressonâncias magnéticas, radiografias,
mamografias) é uma tarefa complexa, que exige precisão e experiência. A
partir de seu desempenho superior na identificação de padrões visuais,
algoritmos comparam milhares ou milhões de imagens em alguns
segundos. A análise de IA aponta mudanças em tecidos e órgãos humanos.
Desse modo, ela detecta indícios precoces de anomalias e doenças.
e o código CRC UZDIGMX2.
● Assistência cirúrgica robótica: a cirurgia robótica é uma operação
auxiliada por robôs, minimamente invasiva. Esses robôs dão assistência a
procedimentos cirúrgicos complexos, garantindo precisão e estabilidade ao
realizar movimentos delicados, que seriam complicados para serem
executados de forma manual. É possível para o médico controlar o
procedimento à distância. O sistema robótico controlado por IA permite
ainda a análise de dados em tempo real, transformando estes dados em
informações valiosas para os médicos-cirurgiões, ainda durante o
procedimento.

50
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Monitoramento de saúde e prevenção de doenças: no domínio da


investigação médica, a IA acelera o ritmo da descoberta de enfermidades.
Algoritmos de Aprendizado de Máquina podem analisar vastos conjuntos de
dados para identificar padrões, potenciais candidatos a medicamentos e
modalidades de tratamento. Isto acelera o processo de desenvolvimento de
medicamentos, tornando-o mais rentável e facilitando a introdução de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
terapias inovadoras no mercado.

Hoje, cada indivíduo pode monitorar e fornecer um conjunto incontável de


dados, sobre sua própria saúde, por meio dos dispositivos vestíveis, como
relógios inteligentes (smartwatches) e pulseiras inteligentes, que.
combinados com algoritmos de IA realizam um constante
acompanhamento dos sinais vitais do usuário, registra-os e fornecem
informações a respeito de sua saúde geral.

Além destas cinco aplicações, também vale destacar o advento e


popularização da telemedicina, que, potencializada pela IA, tornou-se um
componente crucial dos cuidados de saúde modernos. Chatbots controlados por
IA e assistentes virtuais de saúde oferecem respostas imediatas às dúvidas dos
pacientes, fornecem informações de saúde e até auxiliam em diagnósticos
preliminares. Isto não só melhora a acessibilidade aos serviços de saúde, mas
e o código CRC UZDIGMX2.
também alivia a carga sobre os prestadores de cuidados de saúde,
permitindo-lhes concentrar-se em casos complexos.

Apesar destes benefícios notáveis, as implicações éticas da IA na medicina


também merecem uma consideração cuidadosa. As preocupações com a
privacidade, a segurança dos dados e os preconceitos algorítmicos devem ser
abordados para garantir a implantação responsável e equitativa de tecnologias
de IA nos cuidados de saúde (Kissinger et al., 2023).

51
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Concluindo, a integração da IA na medicina é uma promessa imensa para o


avanço do atendimento ao paciente, do diagnóstico e da gestão da saúde.
Desde diagnósticos rápidos a planos de tratamento personalizados e maior
eficiência operacional, os benefícios da IA na medicina são vastos. Ao passo em
que o campo continua a evoluir, é essencial uma abordagem ponderada e ética
para aproveitar todo o potencial da IA na melhoria dos resultados globais dos

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
cuidados de saúde.

Reflita: você confiaria mais em um diagnóstico médico


realizado por uma pessoa ou por uma IA? Por quê?

e o código CRC UZDIGMX2.

52
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.5.2. Indústria
A Indústria tem vivido uma revolução impulsionada pela IA, com aplicações
práticas que transformam processos tradicionais. A manutenção preditiva, o
controle de estoque, o design generativo, a gestão da qualidade, a robótica e a
redução de perdas são apenas algumas das áreas em que a IA exerce impacto

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
significativo, moldando um novo paradigma industrial.

A manutenção preditiva, um dos destaques da aplicação da IA na indústria,


revoluciona a abordagem convencional de reparos e substituições. Sistemas de
IA alimentados por ML analisam dados em tempo real, identificando padrões
que indicam possíveis falhas em equipamentos. Isso permite intervenções
proativas, reduzindo o tempo de inatividade e os custos associados. A previsão
precisa de necessidades de manutenção impulsiona a eficiência operacional.

O controle de estoque é outra esfera na qual a IA desempenha um papel


relevante. Sistemas inteligentes utilizam algoritmos de ML para analisar padrões
de demanda, sazonalidade e comportamento do consumidor. Essa análise
preditiva aprimorada resulta em uma gestão de estoque mais eficiente,
reduzindo custos de armazenamento e evitando escassez ou excesso de
produtos. A precisão na previsão de demanda é vital para a sustentabilidade e
e o código CRC UZDIGMX2.
competitividade das empresas na era digital.

O design generativo, por sua vez, ilustra como a IA influencia a criação de


produtos inovadores. Algoritmos generativos capacitados por IA exploram
automaticamente diversas opções de design com base em critérios específicos.
Essa abordagem não apenas acelera o processo criativo, mas também leva à
concepção de produtos mais eficientes em termos de recursos e desempenho. A
IA se torna uma aliada na busca pela excelência e inovação no design industrial.

53
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

No que diz respeito à gestão da qualidade, a IA proporciona avanços


significativos na identificação e prevenção de defeitos. Sistemas de Visão
Computacional e algoritmos de reconhecimento de padrões permitem a
detecção automática de falhas em tempo real. Isso não só aprimora a qualidade
do produto final, mas também reduz desperdícios ao identificar problemas em
estágios iniciais da produção (Nascimento Jr e Yoneyama, 2011). A IA se destaca

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
como uma ferramenta essencial na busca pela excelência na produção
industrial.

A robótica colaborativa é outra área em que a IA desempenha um papel


transformador. Colaboração eficiente entre humanos e robôs, mediada por
algoritmos avançados, está redefinindo os limites da automação industrial
(ABB, 2021). A IA permite que robôs colaborativos (ou cobots) se adaptem
dinamicamente às mudanças no ambiente de trabalho, melhorando a
flexibilidade e eficiência da produção. A coexistência harmoniosa entre
humanos e robôs é essencial para maximizar os benefícios da automação.

e o código CRC UZDIGMX2.

Figura 17: Robótica colaborativa.


Fonte: ABB.

54
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Por fim, a redução de perdas emerge como uma preocupação central na


era da Indústria 4.0. A IA, ao otimizar processos em diferentes estágios da
produção, contribui significativamente para a minimização de desperdícios.
Seja por meio da prevenção de defeitos, da gestão eficiente de estoque ou da
manutenção preditiva, a IA atua como um catalisador na redução de perdas,
promovendo a sustentabilidade e a eficiência econômica.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Em síntese, a Inteligência Artificial é uma força motriz nos avanços da
Indústria 4.0, impactando a manutenção preditiva, controle de estoque, design
generativo, gestão da qualidade, robótica e redução de perdas.

Essas aplicações práticas não apenas melhoram a eficiência operacional,


mas também redefinem a maneira como concebemos e conduzimos processos
industriais (TOTVS, 2023).

Reflita: Dado o nível de produção exigido hoje dos meios


industriais, para atender à crescente demanda e suprir o

e o código CRC UZDIGMX2.


mercado consumidor, você vê outra possibilidade para a indústria
que não seja utilizar a IA para automatizar os seus processos? Se
sim, qual?

55
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.5.3. Agronomia
A IA tem emergido como uma força catalisadora na transformação da
agronomia, redefinindo a forma como abordamos a produção agrícola e o
manejo de recursos naturais. Neste contexto, destacamos avanços e influências
específicas, abordando aplicações práticas da IA, tais como a otimização do

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
cultivo, o monitoramento agrícola, a previsão de colheitas, o manejo inteligente
de pragas e doenças, além do desenvolvimento de sistemas de irrigação
eficientes.

A otimização do cultivo é uma das contribuições mais marcantes da IA na


agronomia moderna (Rehagro, 2024). Sistemas baseados em Aprendizado de
Máquina analisam uma miríade de variáveis, incluindo condições climáticas, tipo
de solo e histórico de cultivo, para recomendar práticas agrícolas específicas.
Isso não apenas aumenta a eficiência na alocação de recursos, mas também
contribui para a maximização do rendimento das colheitas, promovendo uma
agricultura mais sustentável e rentável.

e o código CRC UZDIGMX2.

Figura 18: IA na agricultura.

Educação e Profissão.

56
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O monitoramento agrícola é outra aplicação destacada da IA na


otimização de práticas agronômicas. Equipamentos equipados com sensores
de alta precisão coletam dados em tempo real sobre o estado das plantas, solo
e clima. Essas informações são processadas por algoritmos de IA, fornecendo
insights valiosos para os agricultores. A combinação de imagens de satélite,
drones e sensores terrestres, aliada à análise inteligente de dados, possibilita o

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
monitoramento preciso do desenvolvimento das culturas, identificação precoce
de problemas e ajustes rápidos nas práticas de manejo (Zanatta, 2023).
A previsão de colheitas é uma ferramenta estratégica aprimorada pela IA,
contribuindo para o planejamento eficiente da produção. Modelos preditivo
utilizam dados históricos, condições meteorológicas e variáveis ambientais
para antecipar o momento ideal da colheita (Orbia, 2024). Essa abordagem não
apenas reduz a incerteza para os agricultores, mas também permite uma
gestão mais eficiente da cadeia de suprimentos, minimizando desperdícios e
otimizando a distribuição de produtos agrícolas.
O manejo inteligente de pragas e doenças representa uma resposta
proativa aos desafios enfrentados na agricultura. A IA, por meio de algoritmos
de detecção, possibilita a identificação precoce de padrões associados a
infestações, isso permite a aplicação precisa de pesticidas e a implementação

e o código CRC UZDIGMX2.


de estratégias de controle direcionadas, minimizando o uso de produtos
químicos e reduzindo os impactos ambientais adversos (Zanatta, 2023).

57
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A gestão eficiente da irrigação é vital em regiões agrícolas com escassez


de água. A IA, integrada a sistemas de irrigação automatizados, contribui para
a utilização otimizada desse recurso. Algoritmos de Aprendizado de Máquina,
analisam dados de sensores para determinar as necessidades hídricas
específicas de cada área do campo, permitindo uma distribuição precisa e
eficiente da água. Essa abordagem não apenas conserva recursos hídricos, mas

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
também aumenta a eficiência no uso da água na agricultura (Conectar Agro,
2022).

Figura 19: Irrigação inteligente.


Fonte: Conectar Agro.

e o código CRC UZDIGMX2.


Em conclusão, a IA está redefinindo a agronomia, oferecendo soluções
inovadoras para os desafios enfrentados na produção agrícola. A otimização do
cultivo, o monitoramento agrícola, a previsão de colheitas, o manejo inteligente
de pragas e doenças, e a gestão eficiente da irrigação são apenas algumas das
áreas em que a IA exerce influência significativa. Essas aplicações não apenas
aumentam a eficiência da produção, mas também contribuem para a
construção de um modelo agrícola mais sustentável e adaptável aos desafios
contemporâneos.

58
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.5.4. Educação
A integração da IA com a educação representa uma revolução pedagógica,
proporcionando uma série de estratégias inovadoras para aprimorar a
aprendizagem e oferecer benefícios significativos tanto para alunos quanto para
educadores (Huttenlocher et al., 2023). Uma aplicação notável é a personalização

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
do ensino, em que algoritmos de IA analisam o desempenho individual dos
alunos e adaptam os materiais de aprendizado de acordo com suas
necessidades específicas. Plataformas de aprendizado online já utilizam IA para
oferecer exercícios personalizados e feedback instantâneo, promovendo um
aprendizado mais eficaz.

Outra estratégia valiosa é a implementação de assistentes virtuais. Essas


ferramentas, como o ChatGPT Edu, podem responder a perguntas dos alunos
em tempo real, oferecendo suporte adicional e estimulando a curiosidade. Além
disso, sistemas de tutoria inteligente são capazes de identificar áreas de
dificuldade dos alunos e fornecer exercícios adicionais ou explicações detalhadas
para reforçar o entendimento.

e o código CRC UZDIGMX2.

Figura 20: IA na educação.


Fonte: Terra.

59
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Os benefícios do uso da IA na educação incluem a personalização do ensino


para atender às diferentes necessidades de aprendizagem, a automatização de
tarefas administrativas para liberar tempo dos educadores e a oferta de
recursos educacionais mais acessíveis e inclusivos. No entanto, é vital abordar
considerações éticas, como a privacidade dos alunos e a transparência nos
algoritmos, para garantir uma implementação responsável e ética da IA na

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
educação, segundo a redação Homework (Terra, 2023).

A Conferência Internacional sobre Inteligência Artificial e Educação


“Planejando a educação na era da IA: liderar o avanço”, realizada em 2019 na
China, com representantes de agências das Nações Unidas, instituições
acadêmicas, sociedade civil e o setor privado para debater a temática. O
documento final da conferência traz 10 recomendações de ações a serem
implementadas por governos e outras partes interessadas, em resposta às
oportunidades e desafios relacionados à IA na educação (Instituto Unibanco,
2024):

e o código CRC UZDIGMX2.

Figura 21: Ações recomendadas Conferência Internacional IA e Educação.


Fonte: Instituto Unibanco.

60
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 22: Ações recomendadas Conferência Internacional IA e Educação
Fonte: Instituto Unibanco.

Em suma, a IA não apenas aprimora a eficácia do processo de


aprendizagem, mas também abre novas possibilidades para uma educação
mais personalizada, flexível e eficiente.

e o código CRC UZDIGMX2.

Figura 23: IA para aprendizagem efetiva.


Fonte :Educação e Profissão.

61
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.5.5. Segurança
A IA emerge como uma força transformadora no campo da segurança,
abrangendo desde a segurança pública até a proteção de dados e sistemas
críticos. Neste contexto amplo, a IA desempenha um papel vital na detecção
proativa de ameaças, na análise de padrões complexos e na adaptação dinâmica

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
para enfrentar os desafios cada vez mais sofisticados em segurança. Ao mesmo
tempo que oferece eficiência e agilidade, a implementação ética e responsável
da IA na segurança torna-se um imperativo para equilibrar a inovação
tecnológica com considerações éticas e de privacidade (Silva, 2023).

A aplicação da IA na segurança da informação representa uma linha de


defesa cada vez mais crucial em um cenário digital complexo e em constante
evolução. Os desafios contemporâneos em segurança cibernética demandam
abordagens avançadas, e a IA oferece uma série de ferramentas e estratégias
para fortalecer a proteção de dados e sistemas. Algoritmos de Aprendizado de
Máquina podem identificar padrões anômalos no tráfego de rede, detectando
atividades suspeitas e possíveis vulnerabilidades em tempo real, respondendo
rapidamente a potenciais ameaças de forma proativa, e não mais reativa como
nos sistemas anteriores de segurança da informação.

e o código CRC UZDIGMX2.


As soluções baseadas em IA, como os sistemas de detecção e resposta a
incidentes (IDR), têm a capacidade de aprender com comportamentos normais
e, assim, destacar atividades que desviam da norma, indicando possíveis
ataques. Além disso, algoritmos de reconhecimento de padrões são
empregados na identificação de malware, phishing e outras ameaças,
aumentando a eficácia dos programas antivírus tradicionais (Embratel, 2020).

Contudo, a implementação da IA na segurança da informação também


levanta preocupações éticas e de privacidade.

62
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A interpretação precisa dos resultados da IA e a mitigação de possíveis


vieses nos algoritmos são aspectos cruciais para garantir uma defesa sólida
sem comprometer a integridade e a privacidade dos dados (Kissinger et al.,
2023).

Em última análise, a IA na segurança da informação não apenas fortalece a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
resiliência contra ameaças cibernéticas, mas também destaca a necessidade de
abordagens éticas e transparentes para garantir uma cibersegurança robusta e
equilibrada.

e o código CRC UZDIGMX2.

Figura 24: IA e segurança da informação.


Fonte:Mundo do Marketing.

63
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A utilização da IA na segurança pública tem desempenhado um papel


significativo na modernização e eficiência dos métodos de prevenção, resposta
e investigação. Um exemplo notável é o emprego de sistemas de vigilância
baseados em IA, que são capazes de analisar grandes volumes de dados de
câmeras de vigilância em tempo real. Esses sistemas podem identificar padrões
suspeitos, reconhecer comportamentos anômalos e alertar as autoridades para

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
potenciais ameaças, contribuindo para a prevenção de crimes.

Outra aplicação crucial está na análise de dados para prever atividades


criminosas. Algoritmos de Aprendizado de Máquina podem analisar padrões
históricos e atuais para antecipar áreas de risco e alocar recursos de maneira
mais estratégica. Essa capacidade preditiva permite uma resposta mais proativa
por parte das forças de segurança, contribuindo para a mitigação de incidentes.

e o código CRC UZDIGMX2.

Figura 25: IA e segurança pública.


Fonte: NatGeo Brasil.

64
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

No contexto investigativo, a IA também se mostra valiosa na análise de


grandes conjuntos de dados, facilitando a identificação de padrões complexos e
relações entre elementos aparentemente não relacionados. Algoritmos de
reconhecimento facial, por exemplo, podem ajudar na identificação de
suspeitos, enquanto ferramentas de Processamento de Linguagem Natural
podem analisar grandes volumes de dados textuais para obter insights

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
relevantes.

Entretanto, é importante destacar que o uso da IA na segurança pública


levanta questões éticas e de privacidade. É necessário implementar
salvaguardas rigorosas para garantir o uso responsável da tecnologia,
protegendo os direitos individuais e evitando discriminações injustas (Silva,
2023).

Em resumo, a IA na segurança pública oferece um potencial significativo


para melhorar a eficiência das operações, prevenir crimes e fortalecer as
capacidades investigativas. No entanto, seu uso deve ser acompanhado de
estratégias transparentes e éticas para garantir que essas tecnologias
beneficiem a sociedade de maneira equitativa e responsável.

e o código CRC UZDIGMX2.

65
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.5.6. Infraestrutura de cidades


inteligentes
As Smart Cities, ou cidades inteligentes, surgem como um paradigma
inovador na busca por soluções sustentáveis e eficientes para os desafios

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
urbanos contemporâneos. No cerne dessa transformação, a IA emerge como
uma força motriz, moldando de maneira significativa o panorama urbano e
redefinindo a interação entre os cidadãos e a infraestrutura urbana.

Nas cidades inteligentes existe um ecossistema tecnológico de sensores


conectados, redes de comunicação eficientes e coleta de dados em tempo real
criando uma malha digital que permeia todos os aspectos da cidade (Secti,
2019). De acordo com o Cities in Motion Index, do IESE Business School na
Espanha, 10 dimensões indicam o nível de inteligência de uma cidade:
governança, administração pública, planejamento urbano, tecnologia, o
meio-ambiente, conexões internacionais, coesão social, capital humano e a
economia.

e o código CRC UZDIGMX2.

Figura 26:Smart city.


Fonte:SECTI.

66
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O papel da IA para que uma cidade inteligente seja viável e funcional


abrange vários aspectos (Secti, 2019), e sua influência é visível em setores
cruciais, como:

● Mobilidade urbana aprimorada: sistemas de transporte inteligentes,


impulsionados pela IA, vem revolucionando a mobilidade urbana.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Algoritmos de roteamento dinâmico consideram variáveis em tempo real,
como tráfego e condições meteorológicas, oferecendo alternativas
eficientes de deslocamento.

O uso da IA na mobilidade urbana tem sido evidenciado por uma série de


exemplos práticos que transformam significativamente a forma como as
pessoas se deslocam nas cidades (Estadão, 2023). Aplicativos de
compartilhamento de viagens incorporam IA para otimizar a alocação de
veículos, reduzindo o tempo de espera e promovendo a eficiência no uso de
recursos. Além disso, o desenvolvimento de veículos autônomos, que
empregam técnicas avançadas de Aprendizado de Máquina, promete
revolucionar a mobilidade urbana, proporcionando uma alternativa segura
e eficiente de transporte.

● Eficiência energética e sustentabilidade: a IA também se destaca na

e o código CRC UZDIGMX2.


gestão eficiente de energia. Sistemas de iluminação pública adaptativa,
controlados por algoritmos inteligentes, ajustam-se automaticamente às
condições ambientais, reduzindo o desperdício de energia. A IA possibilita
também a coleta e análise de dados históricos, padrões de consumo e
fatores externos, como condições climáticas, para prever a demanda de
energia elétrica e auxiliar na tomada de decisões estratégicas, otimizando a
geração e a distribuição de energia (Romagnole, 2023).

67
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Podemos citar ainda algumas ações que estão se tornando comuns, com os

“gêmeos digitais” (digital twins). Essa é uma tecnologia que combina IA e


realidade aumentada para criar uma cópia virtual de uma planta real, e assim,
monitorar em tempo real, dados como temperatura, vibração e consumo de
energia de um sistema ou instalação (Pacete, 2022). De acordo com a Gartner,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
em 2021, metade das maiores empresas do mundo já utilizavam gêmeos
digitais, e a estimativa para 2023 das receitas geradas a partir desta tecnologia
foi de US$ 13 bilhões.

e o código CRC UZDIGMX2.

Figura 27: Gêmeos digitais.


Fonte: Forbes.

Assim como as demais aplicações envolvendo IA, em cidades inteligentes


também existem desafios éticos e questões de privacidade. A transparência na
coleta e uso de dados, bem como a consideração dos impactos sociais, são
cruciais para garantir que a inovação tecnológica beneficie toda a comunidade.

68
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.6. Aprendizado de Máquina


Como a Inteligência Humana, a Inteligência Artificial também parte de um
ponto para outro mais avançado por meio do aprendizado. Este aprendizado
pode ser mais ou menos aprofundado, como ocorre também com os
conhecimentos que nós adquirimos (Russel e Norvig, 2003).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Desta forma, o aprendizado artificial ou Aprendizado de Máquina não é
somente um subgrupo da IA, mas também toda a estrutura que permite, por
meio de algoritmos, que uma IA ganhe mais autonomia e aperfeiçoamento em
suas tarefas, fazendo com que um sistema fique mais inteligente (Kissinger et
al., 2023).

e o código CRC UZDIGMX2.

Figura 28: Evolução da IA.


Fonte: Redes de Saúde.

69
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O ML se concentra no desenvolvimento de algoritmos e modelos


estatísticos que permitem aos computadores executarem tarefas sem
programação explícita. Por meio da análise de dados e padrões (treinamento),
os sistemas de aprendizagem automática melhoram o seu desempenho ao
longo do tempo, incrementando a sua capacidade de fazer previsões ou tomar
decisões (IBM, 2023).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Ao invés de implementar rotinas de software, como na programação
tradicional, com um conjunto específico de regras e instruções que quando
atendidas realizam uma ação para completar uma tarefa em particular, em ML a
máquina é “treinada” utilizando uma grande quantidade de dados e algoritmos
que lhe proporcionam a habilidade de aprender como executar a tarefa,
tomando decisões em situações que não são conhecidas.

O processo do Machine Learning envolve as seguintes etapas:

1. Coleção de dados: os dados são coletados de várias fontes. Podem ser


dados já existentes, que são aqueles que já foram coletados para outros
propósitos, ou dados gerados especificamente para o treinamento do
modelo.
2. Preparação de dados: os dados são preparados para o treinamento do

e o código CRC UZDIGMX2.


modelo. O preparo dos dados deve envolver, se necessário, as etapas de
limpeza, com a remoção de dados incorretos ou incompletos, e
transformação, com a conversão dos dados para um formato que o modelo
possa entender.
3. Escolha do algoritmo: Um algoritmo de Aprendizado de Máquina é
selecionado para a tarefa específica que o modelo deve realizar. Existem
muitos disponíveis, que serão apresentados nas próximas sessões, cada um
com suas próprias vantagens e desvantagens.

70
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4. Treinamento do modelo: O modelo é treinado usando os dados de


treinamento. Este processo pode ser dividido nas seguintes etapas:
● Inicialização: Os parâmetros do modelo são inicializados com
valores aleatórios.
● Iteração: O modelo é apresentado a um conjunto de dados de
treinamento e os parâmetros do modelo são ajustados para

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
minimizar o erro de previsão.
● Parada: O processo de treinamento é interrompido quando o erro
de previsão é aceitável.
5. Avaliação do modelo: O modelo é avaliado usando um conjunto de dados
de teste que deve ser diferente do conjunto de dados de treinamento, para
garantir que o modelo não esteja apenas memorizando estes dados.
6. Aprimoramento do modelo: Se o desempenho do modelo não for
satisfatório, o modelo pode ser aprimorado usando as seguintes técnicas:
● Alteração do algoritmo de Aprendizado de Máquina.

● Mudança nos parâmetros do modelo.

● Aumento do tamanho do conjunto de dados de treinamento.

e o código CRC UZDIGMX2.

71
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O infográfico abaixo resume as etapas do Aprendizado de Máquina,


condensando em três blocos principais:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 29: Funcionamento do Machine Learning.
Fonte: Facti.

Os modelos podem ser aplicados em uma variedade de domínios, desde


reconhecimento de imagem e voz até diagnóstico médico, previsão financeira
e recomendações personalizadas em plataformas online. A capacidade de
aprender com dados e melhorar o desempenho ao longo do tempo faz do ML
e o código CRC UZDIGMX2.
uma ferramenta poderosa com aplicações crescentes em diversas indústrias
(Kissinger et al., 2023).

Esse aprendizado pode ocorrer de diversas formas, como Aprendizado


Supervisionado (usando conjuntos de dados rotulados), Aprendizado não
Supervisionado (encontrando padrões em conjuntos de dados não rotulados)
e Aprendizado por Reforço (aprendendo com tentativa e erro).

72
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.6.1. Algoritmos para Aprendizado de


máquina
A utilização eficaz de Machine Learning (ML) envolve a compreensão dos
tipos de sistemas categorizados por métodos de treinamento, formas de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
aprendizado e modos de funcionamento. Estas categorias podem ser
combinadas conforme a necessidade específica. São elas (Microsoft, 2022):

1. Supervisionado: Quando tentamos prever uma variável dependente a partir


de uma lista de variáveis independentes.
2. Não Supervisionado: Quando não existem resultados pré-definidos para o
modelo utilizar como referência para aprender.
3. Por reforço: Quando precisamos determinar qual é a melhor ação a ser
tomada, dependendo das circunstâncias na qual essa ação será executada

e o código CRC UZDIGMX2.

Figura 30: Tipos de Aprendizado de Máquina.


Fonte: Medium

Vamos nos aprofundar nestes tipos de aprendizado nas próximas seções


deste capítulo.

73
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.6.1.1. Aprendizado Supervisionado


O Aprendizado Supervisionado possui alguns modelos que propõem
técnicas diferentes para tipos de análises de dados diferentes, vejamos estes
modelos:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
1. Regressão: O modelo por regressão, no contexto do Aprendizado de
Máquina Supervisionado, é fundamental para resolver problemas em que a
tarefa envolve a predição de valores numéricos. Visa estimar uma variável
contínua com base nas relações identificadas nos dados de treinamento.
Esses modelos são amplamente utilizados em situações como previsão de
vendas, análise financeira e qualquer contexto em que a resposta desejada
seja um número real. A flexibilidade e aplicabilidade dos modelos de
regressão no Aprendizado de Máquina supervisionado destacam sua
importância na resolução de uma ampla gama de problemas do mundo real
(Microsoft, 2022).

Este modelo segue a seguinte função como parâmetro:

e o código CRC UZDIGMX2.

Figura 31: Função de regressão .


Fonte: Microsoft AI900.

Exemplo de aplicação: Se queremos prever a quantidade de bicicletas


alugadas num dia futuro (Y), precisaríamos alimentar a regressão com os
seguintes dados de entrada para análise (X): quantidade de bicicletas alugadas
nos dias anteriores, temperatura média dos dias anteriores, dias da semana.

74
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2. Classificação: o modelo por classificação é uma abordagem essencial para


resolver problemas em que o objetivo é atribuir uma classe ou rótulo a
instâncias de dados com base em padrões previamente identificados. Nesse
método, o modelo é treinado usando um conjunto de dados rotulado, onde
as entradas estão associadas a suas respectivas classes conhecidas.
Durante o treinamento, o algoritmo busca aprender a relação entre as

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
características das instâncias e suas classes correspondentes. Após o
treinamento, o modelo torna-se capaz de generalizar para novos dados não
rotulados, classificando-os com base no conhecimento adquirido durante a
fase de treinamento. A classificação é uma técnica poderosa com amplas
aplicações, desde diagnósticos médicos até reconhecimento de padrões em
grandes conjuntos de dados, destacando-se como uma ferramenta valiosa
no arsenal do Aprendizado de Máquina supervisionado (Microsoft, 2022).

Exemplo: prever as chances de um paciente ter diabetes (Y) por meio das
entradas de dados (X): Histórico de doenças do paciente, quais tiveram
diabetes.

3. Matriz de confusão: é uma ferramenta crucial no Aprendizado de Máquina


supervisionado, fornecendo uma visão abrangente do desempenho do
modelo de classificação. Essa matriz organiza os resultados da classificação
em quatro categorias: verdadeiro positivo, verdadeiro negativo, falso e o código CRC UZDIGMX2.

positivo e falso negativo.


A diagonal principal da matriz representa as previsões corretas, enquanto
as células fora dessa diagonal indicam erros de classificação. A matriz de
confusão é particularmente valiosa para avaliar a sensibilidade e a
especificidade do modelo, além de calcular métricas como precisão, recall e
F1-score.

75
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Ao analisar a distribuição dos resultados, os praticantes de Aprendizado de


Máquina podem ajustar e otimizar seus modelos para alcançar um
desempenho mais preciso e confiável. A interpretação cuidadosa da matriz de
confusão é essencial para avaliar a eficácia de modelos de classificação e
orientar refinamentos necessários durante o processo de desenvolvimento
(Microsoft, 2022).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 32: Matriz de confusão.
Fonte: Medium

Abaixo estão os significados das métricas utilizadas neste modelo:


● Acurácia: indica uma performance geral do modelo. Dentre todas as

e o código CRC UZDIGMX2.


classificações, quantas o modelo classificou corretamente (% diagonal);
● Precisão: dentre todas as classificações de classe Positivo que o modelo
fez, quantas estão corretas (% linha de cima);
● Recall/reinvocação/sensibilidade: dentre todas as situações de classe
Positivo como valor esperado, quantas estão corretas(% primeira coluna);
● F1-Score: média harmônica entre precisão e recall.

76
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.6.1.2. Aprendizado não Supervisionado


O algoritmo é desafiado a aprender padrões sem a orientação explícita dos
dados. Por exemplo, robôs que aprendem a limpar a casa reconhecendo
padrões diários de poeira.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Este paradigma é amplamente utilizado em tarefas como clustering, em que
o algoritmo agrupa automaticamente instâncias de dados sem conhecer
antecipadamente suas categorias. Ele é essencial para explorar padrões
intrínsecos em grandes conjuntos de dados, proporcionando insights valiosos e
facilitando a compreensão de estruturas complexas sem a necessidade de
rótulos explícitos (Souza, 2021).

e o código CRC UZDIGMX2.

Figura 33: ML Aprendizado não Supervisionado.


Fonte: Learning Data.

77
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.6.1.3. Aprendizado Semi Supervisionado


O Aprendizado de Máquina Semi Supervisionado se situa entre os
paradigmas supervisionado e não supervisionado, incorporando características
de ambos. Nesse cenário, o modelo é treinado em um conjunto de dados que
contém tanto dados rotulados quanto não rotulados. Enquanto utiliza os dados

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
rotulados para aprender padrões e fazer previsões, o modelo também aproveita
as informações dos dados não rotulados para aprimorar sua generalização e
capacidade de lidar com novos exemplos (Russel e Norvig, 2022).

Esse enfoque é particularmente útil em cenários em que a rotulação


completa dos dados é custosa ou impraticável. O Aprendizado de Máquina semi
supervisionado oferece uma solução equilibrada, permitindo que modelos se
beneficiem da orientação fornecida pelos dados rotulados e, simultaneamente,
explorem a riqueza dos dados não rotulados para uma aprendizagem mais
robusta e abrangente.

e o código CRC UZDIGMX2.

78
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.6.1.4. Aprendizado por Reforço

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 34: Exemplo de Aprendizagem de Máquina por Reforço.
Fonte: Redes de saúde.

O Aprendizado de Máquina por Reforço é um paradigma onde um agente


aprende a realizar ações em um ambiente para maximizar uma recompensa

e o código CRC UZDIGMX2.


cumulativa ao longo do tempo. Este método é inspirado em processos de
aprendizado em seres vivos, em que o comportamento é moldado por meio de
experiências e feedback positivo ou negativo.

Um exemplo prático notável é o treinamento de agentes de Inteligência


Artificial para jogos. O agente, muitas vezes representado por uma rede neural,
interage com o ambiente do jogo, fazendo escolhas de ações com o objetivo de
maximizar uma pontuação ou recompensa. Conforme o agente recebe feedback
sobre suas ações, ele ajusta suas estratégias para melhorar o desempenho ao
longo do tempo.

79
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O Aprendizado de Máquina por Reforço também é aplicado em setores


como robótica, automação industrial e até mesmo em otimizações de processos
em empresas. Essa abordagem dinâmica e adaptativa tem demonstrado grande
eficácia em lidar com ambientes complexos e incertos, sendo este o cenário
encontrado por aplicações críticas, como a operação de carros autônomos.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 35: Exemplo de aprendizado por reforço em carro autônomo.
Fonte: LAMFO

Encerramos assim o entendimento necessário sobre algoritmos de IA para,


na próxima seção, discutir sobre outro nível de Aprendizado de Máquina: as e o código CRC UZDIGMX2.

redes neurais e o Deep Learning.

80
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.3.7. Redes neurais e Deep Learning


Para iniciarmos este conteúdo, precisamos rapidamente trazer o contexto
histórico a partir do cenário resumido por Russel e Norvig (2022).

Em 1943, Warren McCulloch e Walter Pitts, neurocientistas estadunidense

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
publicaram o artigo "Um Cálculo Lógico das Ideias Imanentes na Atividade
Nervosa”, propondo um modelo matemático para os neurônios artificiais,
entrando para a história como neurônio de McCulloch-Pitts.

Em seguida, já em 1949, Donald Olding Hebb, psicólogo canadense, publica


sua obra "A Organização do Comportamento: Uma Teoria Neuropsicológica”, em
que propõe uma teoria da aprendizagem que veio a se chamar regra (teoria) de
Hebb.

Já comentamos anteriormente acerca do nascimento da primeira rede


neural ainda no final da década de 1950 por Frank Rosenblatt, cientista da
computação estadunidense na Universidade de Cornell.

Rosenblatt criou uma rede de múltiplos neurônios dispostos em camadas,


sendo eles discriminadores lineares. Essa rede recebeu o nome de perceptrons.

Em seguida, com a publicação do livro Perceptrons, Minsky e Papert


e o código CRC UZDIGMX2.
concluíram que o Perceptron, proposto por Rosenblatt, eram limitados a
resolver apenas problemas linearmente separáveis, sem a utilização de redes
neurais com mais de uma camada. Esta conclusão paralisou por algum tempo os
próximos avanços na área das redes neurais.

Foi a partir da década de 1970, que os campos de Inteligência Artificial junto


com o processamento digital de imagens e o Aprendizado de Máquina
cresceram e se desenvolveram (Szeliski, 2022).

81
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O trabalho de John Hopfield, físico, biólogo e neurologista estadunidense,


em 1982 foi considerado um marco para a história das redes neurais ao
introduzir o modelo de rede neural recorrente capaz de armazenar e recuperar
memórias, vindo a ser batizado pelo nome de seu descobridor (rede neural
Hopfield).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Em 1986, Rumelhart, Hinton e Willians demonstraram a capacidade de
treinar eficientemente as redes contendo camadas intermediárias, implicando
no modelo atual de redes neurais artificiais, a chamada Perceptron Multi
Camadas, introduzindo um método poderoso conhecido por Backpropagation.

Antes de definirmos o que é uma rede neural, explicaremos sobre seus


neurônios artificiais e a analogia ao sistema nervoso de organismos vivos. Um
neurônio artificial é inspirado no neurônio biológico, uma célula nervosa
responsável pela transmissão dos impulsos nervosos, é uma unidade básica do
sistema nervoso central e sua comunicação se dá por meio das sinapses.

e o código CRC UZDIGMX2.

Figura 36: Representação artística de um neurônio biológico com suas sinapses (ligações).
Fonte: imagem gerada por IA.

82
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O neurônio biológico é composto de três partes, soma (seu corpo celular),


seguido dos dendritos, responsável pela entradas nervosas e por fim, dos
axônios, responsáveis pela saída dos sinais do neurônio.

O cérebro humano tem em média 1011 neurônios, como cada neurônio


forma entre 1 mil e 10 mil sinapses, estima-se 1014 sinapses em nosso cérebro,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
formando uma rede completissima!

Imitando o sistema biológico, o neurônio artificial, a unidade de


processamento de uma rede neural, possui uma capacidade de operação local a
partir de suas entradas. Seu comportamento inteligente se deve a interação
entre essas unidade de processamento.

Assim como o nosso sistema nervoso, uma rede neural possui uma série de
camadas. Temos as camadas de entrada, onde os padrões são apresentados à
rede neural. Em seguida, vem as camadas internas conhecidas como camadas
intermediárias (ou escondidas, em inglês, hidden layers). Por fim, temos a
camada de saída, onde apresenta-se o resultado do processamento executado
pela rede neural.

e o código CRC UZDIGMX2.

Figura 37: Imagem representando uma rede neural multi camadas.


Fonte: Wikimedia Commons.

83
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Assim, pode-se definir redes neurais como modelos computacionais


inspirados na estrutura e funcionamento do cérebro humano. Consistem em
nós interconectados, ou neurônios artificiais, organizados em camadas. As
redes neurais são usadas no Aprendizado de Máquina para reconhecer
padrões, tomar decisões e melhorar a precisão por meio de treinamento em
grandes conjuntos de dados (Pregowska e Osial, 2022).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.
Figura 38: Rede Neural Artificial.
Fonte: UNESP.

As redes neurais permitem a implementação de um nível específico de IA,


conhecido como Deep Learning.

84
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Deep Learning é um subconjunto de Aprendizado de Máquina que envolve


redes neurais com múltiplas camadas (redes neurais profundas). É excelente no
processamento e análise de grandes quantidades de dados, permitindo
capacidade de aprendizagem e tomada de decisão mais complexas e
sofisticadas.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
É uma abordagem revolucionária que visa imitar o funcionamento do
cérebro humano. Diferentemente do Aprendizado de Máquina convencional, o
Deep Learning permite que modelos aprendam automaticamente
representações hierárquicas complexas e extraiam informações específicas a
partir de dados brutos (Oracle, 2024).

Veja abaixo no infográfico a comparação entre os níveis de Aprendizado de


Máquina:

e o código CRC UZDIGMX2.

Figura 39: Níveis de Aprendizado de Máquina.


Fonte: Oficina de valor.

85
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Os modelos de Aprendizado Profundo absorvem informações de várias


fontes de dados e analisam esses dados em tempo real, sem a necessidade de
intervenção humana. Para isso, são necessárias unidades de processamento
gráfico (GPUs) otimizadas para modelos de treinamento, ideais para processar
vários cálculos simultaneamente (Oracle, 2024).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O Deep Learning, ao se aprofundar nas complexidades das redes neurais,
tem transformado a paisagem da IA. Sua capacidade de aprender
automaticamente a partir de dados brutos posiciona-o como uma ferramenta
poderosa em diversas aplicações, impulsionando muitas tecnologias de IA que
podem melhorar a automação e as tarefas analíticas (Neurotech, 2019).

e o código CRC UZDIGMX2.

Figura 40: IA vs. ML vs. Deep Learning.


Fonte: Neurotech.

86
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Somente citando usos mais corriqueiros e conhecidos, as técnicas de Deep


Learning são aplicadas para personalizar a navegação na internet e uso de
smartphones, para gerar legendas em vídeos do YouTube, executar o
reconhecimento de fala em telefones e alto-falantes inteligentes, fornecer
reconhecimento facial para fotografias e habilitar carros autônomos.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Por fim, temos falado muito que para o Aprendizado de Máquina é
essencial o uso de dados, que necessariamente precisam ser captados e
trabalhados de alguma forma para serem utilizados pelos sistemas de IA.
Então, vamos tratar na próxima seção sobre este assunto, aprofundando
nossos conhecimento em “Mineração de dados”.

1.3.8. Mineração de dados


Mineração de dados (ou Data Mining) é um conjunto de técnicas que se
baseia em vários campos que se sobrepõem, incluindo análise estatística,
Machine Learning (ML) e matemática. Ela é utilizada em análises que
necessitam processar e explorar grandes conjuntos de dados (AWS, 2023). Com
ferramentas e métodos de mineração de dados, as organizações podem
descobrir padrões e relacionamentos ocultos em seus dados, transformando
dados dados brutos em conhecimento prático. As empresas usam esse e o código CRC UZDIGMX2.

conhecimento para resolver problemas, analisar o impacto futuro das decisões


de negócios e aumentar suas margens de lucro.

Portanto, podemos resumir que a mineração de dados é um processo


complexo e estruturado que visa descobrir padrões, relações e informações
úteis em grandes conjuntos de dados. Por ser complexo, esse processo é
comumente dividido em fases distintas, cada uma desempenhando um papel
crucial na extração de conhecimento.

87
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Vamos explorar as fases propostas pelas melhores práticas ditadas pela


metodologia CRISP-DM (Cross Industry Standard Process for Data Mining) para
organização de projetos de mineração de dados (Chapman, 2000) :

1. Compreensão do negócio: a primeira fase envolve entender


completamente os objetivos e requisitos do negócio. Nesta etapa, os

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
especialistas em mineração de dados colaboram com os envolvidos em
determinada ação empresarial ou projeto para definir claramente os
problemas a serem resolvidos e os resultados desejados. Essa compreensão
é fundamental para orientar o processo de mineração de dados em direção
aos objetivos.
2. Compreensão dos dados: antes de iniciar a análise, é essencial explorar e
compreender os dados disponíveis. Isso inclui a identificação de fontes de
dados, a avaliação da qualidade dos dados, e a compreensão das
características essenciais, como distribuição, variabilidade e relevância. Uma
análise aprofundada dos dados estabelece as bases para as etapas
subsequentes.
3. Pré-processamento de dados: nesta fase, os dados brutos são preparados
para a análise. Isso inclui a limpeza de dados inconsistentes, a normalização
de escalas e a transformação de variáveis quando necessário. O

e o código CRC UZDIGMX2.


pré-processamento visa garantir que os dados estejam prontos para serem
alimentados nos algoritmos de mineração, melhorando a qualidade dos
resultados.
4. Modelagem: a fase de modelagem é onde os algoritmos de mineração de
dados são aplicados aos dados preparados. Diferentes técnicas, como
árvores de decisão, redes neurais e algoritmos de clustering, são utilizadas
para identificar padrões e extrair informações valiosas. Durante esta etapa,
os parâmetros dos modelos são ajustados para otimizar o desempenho.

88
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5. Avaliação: a avaliação dos modelos gerados é uma fase crítica para


garantir a eficácia e a relevância dos resultados. Métricas como precisão,
recall e F1-score são frequentemente utilizadas para medir o desempenho
do modelo em relação aos objetivos estabelecidos. Essa avaliação permite
ajustes adicionais e refinamentos, se necessário.
6. Implementação e interpretação: a última fase envolve a implementação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
dos resultados na prática. Os insights extraídos são traduzidos em ações ou
estratégias de negócios. Além disso, é crucial interpretar os resultados de
maneira compreensível para os não especialistas, facilitando a tomada de
decisões informadas.

Em conjunto, essas seis fases formam um ciclo contínuo de mineração de


dados, onde a retroalimentação constante e a adaptação são essenciais para
garantir a eficácia e a relevância contínuas do processo, conforme ilustra a
figura abaixo:

e o código CRC UZDIGMX2.

Figura 41: Etapas de Extração, Processamento e Carregamento de dados.


Fonte: adaptado de Fayyad et al. (1996).

89
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Neste momento, retorne ao Google Sala de Aula e, na aba


"Atividades", procure a seção intitulada "Etapa Conceitualizar".

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Nessa área você encontrará uma série de links com materiais
que foram criteriosamente escolhidos e disponibilizados. Trata-se de
recursos que têm por objetivo apresentar informações adicionais e
insights, permitindo que você amplie e enriqueça o seu
conhecimento acerca dos temas discutidos neste capítulo.

Este momento final do capítulo deve lhe proporcionar reflexões


críticas a respeito do conteúdo abordado, ajudando na
compreensão e fixação do conteúdo.

e o código CRC UZDIGMX2.

90
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.4. Consolidar

1.4.1. Consolidando o conhecimento

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Após nos aprofundarmos nos conceitos mais importantes da IA, conhecer
aplicações e discutir métodos de Aprendizado de Máquina, finalizamos este
capítulo nesta seção, que tem a função de te ajudar a consolidar sua visão
sobre esses assuntos. Primeiro, vamos a um exercício de autoconhecimento,
apresentado a seguir, e por último você poderá retomar o estudo de caso:
● Pense em IA e tudo o que viu neste capítulo. Agora, analise bem cada uma
das três figuras abaixo, uma por vez, e reflita: qual foi a sua primeira
percepção ao olhar a imagem? O que ela te lembra? Se fosse discutir algum
assunto sobre a imagem, o que seria? Na próxima página você poderá
comparar as suas percepções com a do autor.

2
e o código CRC UZDIGMX2.

Figura 42: Exercício Consolidar.


Fonte: IT Forum.

3
Figura 43: Exercício Consolidar.
Fonte: UOL.

Figura 44: Exercício Consolidar.


Fonte: Fast Company Brasil.

91
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Ponto de vista do autor sobre as imagens:


Na figura 1, a ideia é ilustrar um ponto que discutimos durante o capítulo,
sobre a influência da IA no mundo do trabalho e profissões, especialmente no
que diz respeito ao nosso posicionamento frente às novas tecnologias,
enxergando-as como oportunidade de novas colocações, de melhorias no modo
de realizar nosso trabalho e otimização nos meios de produção. Temê-la não é

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
mais uma opção, já que a IA, aparentemente, veio para ficar e permanecer. O
que devemos é ter o cuidado ético para fazer bom uso dela, inclusive no mundo
do trabalho.

A figura 2 trata de algo que parecia muito mais distante, e fora de qualquer
discussão envolvendo a realidade: a fusão homem-máquina. Entretanto, cada
vez mais verificamos o surgimento de implantes de chips subcutâneos, órgãos
e membros biônicos entre outras tecnologias inteligentes incorporadas ao
corpo. Tudo isso nos leva a crer que, continuando nessa crescente, veremos
novas possibilidades nos próximos anos e décadas, e descobriremos que a ideia
de uma integração total entre a Inteligência Humana com a Artificial não é algo
restrito aos filmes de ficção como achávamos outrora.

Por fim, na figura 3 reside uma das grandes esperanças em relação ao uso
da IA: a descoberta da cura para doenças hoje tidas como incuráveis. Espera-se,
e o código CRC UZDIGMX2.
para os próximos anos, que a IA acelere pesquisas que trarão avanços nesse
sentido, e, quem sabe, poderemos deixar de ver pessoas morrendo de
enfermidades que atualmente não possuem tratamento nem vacinas.

92
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.4.2. Solução final do estudo de caso

Inicialmente, releia com atenção o cenário do estudo de caso da

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
"Etapa Inspirar" e as suas anotações e conclusões iniciais. Na
sequência, você deverá promover o aprimoramento da solução
anteriormente apresentada usando os conhecimentos que obteve
ao longo do capítulo e do conteúdo adicional.

Lembre-se de que este aprimoramento não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos que foram estudados
e a testar novos cenários e hipóteses, validando os seus resultados
práticos.

Você se lembra que o cenário do estudo de caso simulava um convite para


que você integrasse a equipe da Facti que iria produzir um material didático de

e o código CRC UZDIGMX2.


um curso da área de TI?

Se não se recorda, volte à "Etapa Inspirar" para rever o problema


trabalhado.

Você deveria desenvolver um texto que convencesse aos leitores de que a


IA, uma vez aplicada de forma consciente e responsável, produz mais
benefícios do que malefícios, em resposta ao seguinte questionamento:
“Inteligência Artificial - devemos temê-la ou abraçá-la?”.

93
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O ponto de partida é revisitar as anotações de suas ideias iniciais que


registrou na "Etapa Inspirar". Em seguida, verifique possíveis aprimoramentos
no seu texto mediante tudo o que aprendeu neste capítulo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Arquive o refinamento do estudo de caso no formulário disponível
no Google Sala de Aula, na aba “Etapa Consolidar”.

e o código CRC UZDIGMX2.

94
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1.5. Avaliar
Para concluir este capítulo, você deverá realizar a “Etapa Avaliar”, que
consiste no preenchimento do Questionário de Avaliação disponível no Google
Sala de Aula e que tem como objetivo permitir que você acompanhe

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
individualmente a evolução do seu aprendizado.

Não será atribuída nota para a atividade, mas a sua entrega é obrigatória,
pois, acima de tudo, servirá como insumo para uma análise pessoal e também
para a realização de autocrítica a respeito dos pontos compreendidos e daqueles
que exigem maior dedicação.

O formulário salvará as respostas de forma automática e, por isso, pode ser


iniciado em um momento e finalizado posteriormente. Ele também será
disponibilizado a você, para que faça consultas futuras. Além dos materiais
didáticos fornecidos, você poderá usar quaisquer outros recursos e referências.
Todavia, atente para o fato de que poderá respondê-lo somente uma vez.

O registro e envio das respostas é individual e deve ser realizado dentro do


prazo estipulado para a realização do curso.

e o código CRC UZDIGMX2.

95
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Referências
ABB. Robôs colaborativos já são realidade na Indústria 4.0. ABB Press release,
2021. Disponível em: https://new.abb.com/news/pt-br/detail/74647/robos-
colaborativos-ja-sao-realidade-na-industria-40. Acesso em: 23 janeiro 2024.

AWS. O que é computação quântica? AWS, 2023. Disponível em:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
https://aws.amazon.com/pt/what-is/quantum-computing/. Acesso em: 22 janeiro
2024.

AWS. O que é mineração de dados? AWS, 2023. Disponível em:


https://aws.amazon.com/pt/what-is/data-mining/. Acesso em: 22 janeiro 2024.

CONECTARAGRO. Gestão eficiente de irrigação: produtividade e


sustentabilidade nas áreas rurais. ConectarAGRO, 2022. Disponível em:
https://blog.conectaragro.com.br/gestao-eficiente-de-irrigacao/. Acesso em: 22
janeiro 2024.

CRISP-DM — Organizando seu projeto de mineração de dados. Medium,


2023. Disponível em: https://medium.com/@ia.bb/crisp-dm-organizando-seu-
projeto-de-minera%C3%A7%C3%A3o-de-dados-fdb0399cbd9b. Acesso em: 22
janeiro 2024.

DVORSKY, G. Too smart for our own good: How artificial superintelligence
could lead to humanity’s demise. Genetic Literacy Project, 2021. Disponível em:
https://geneticliteracyproject.org/2021/06/16/too-smart-for-our-own-good-
how-artificial-superintelligence-could-lead-to-humanitys-demise/. Acesso em: 18
e o código CRC UZDIGMX2.
janeiro 2024.

EMBRATEL. Qual o impacto da Inteligência Artificial na segurança dos


dados? Redação Embratel, 2020. Disponível em: https://proximonivel.embratel.
com.br/qual-o-impacto-da-inteligencia-artificial-na-seguranca-dos-dados/.
Acesso em: 22 janeiro 2024.

ESTADÃO. Como a inteligência artificial pode afetar a mobilidade urbana.


Redação Mobilidade, 2023. Disponível em: https://mobilidade.estadao.com.br
/inovacao/como-a-inteligencia-artificial-pode-afetar-a-mobilidade-urbana/#:~:tex
t=Por%20fim%2C%20os%20ve%C3%ADculos%20aut%C3%B4nomos,como%20a%
20Tesla%2C%20por%20exemplo. Acesso em: 20 janeiro 2024.

96
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

FAYYAD, U.M.; PIATETSKY-SHAPIRO, G.; SMYTH, P.; UTHURUSAMY,R. Advances in


knowledge discovery and data mining. [S.l.]: AAAI/MIT Press, 1996.

FERREIRA, D. Como funciona a Inteligência Artificial: guia completo com


exemplos. Web Estratégica, 2023. Disponível em: https://webestrategica.
com.br/como-funciona-a-inteligencia-artificial/. Acesso em: 17 janeiro 2024.

GONÇALVES, A.L.D. Prêmio Jabuti desclassifica livro ilustrado com

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
ferramenta de IA. Tecmundo, 2023. Disponível em: https://www.tecmundo.
com.br/software/273742-premio-jabuti-desclassifica-livro-ilustrado-ferramenta-i
a.htm. Acesso em: 17 janeiro 2024.

GURGEL, C.H. Alan: um gênio, um revolucionário e um símbolo. Jovens


Cientistas Brasil, 2023. Disponível em : https://www.jovenscientistasbrasil.
com.br/post/alan-turing-um-g%C3%AAnio-um-revolucion%C3%A1rio-e-um-s%C
3%ADmbolo . Acesso em: 17 janeiro 2024.

IBM. O que é a IA forte?. IBM, 2023. Disponível em:


https://www.ibm.com/br-pt/topics/strong-ai. Acesso em: 20 janeiro 2024.

INSTITUTO UNIBANCO. Inteligência Artificial na Educação: conheça os


efeitos dessa tecnologia no ensino e na aprendizagem. Observatório de
educação, 2023. Disponível em: https://observatoriodeeducacao.instituto
unibanco.org.br/em-debate/inteligencia-artificial-na-educacao. Acesso em: 23
janeiro 2024.

LAPOLA, M. Como os computadores quânticos podem mudar o mundo que


conhecemos. Revista Galileu, 2021. Disponível em: https://revistagalileu.globo.
com/Ciencia/noticia/2021/12/como-os-computadores-quanticos-podem-mudar-
e o código CRC UZDIGMX2.
o-mundo-que-conhecemos.html. Acesso em: 25 janeiro 2024.

MCCARTHY, J. What is artificial intelligence?. Computer Science Department -


Stanford University, 2007. Disponível em: http://www-formal.stanford.edu/jmc/.
Acesso em: 16 janeiro 2024.

MICROSOFT. Conceitos básicos de IA do Microsoft Azure: Visão geral da IA.


Microsoft Learn, 2023. Disponível em: https://learn.microsoft.com/pt-br/
training/paths/get-started-with-artificial-intelligence-on-azure/. Acesso em: 20
janeiro 2024.

NEUROTECH. Deep Learning: Moda ou Realidade? Neurotech, 2019.


Disponível em: https://www.neurotech.com.br/blog/deep-learning-moda-
realidade/. Acesso em: 22 janeiro 2024.
97
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

NORVIG, P.; RUSSEL, S. Inteligência Artificial: Uma Abordagem Moderna. LTC


editora 4ª edição, 2022.

ONODY, R.N. Teste de Turing e Inteligência Artificial. IFSC, 2021. Disponível


em: https://www2.ifsc.usp.br/portal-ifsc/teste-de-turing-e-inteligencia-artificial/.
Acesso em: 17 janeiro 2024.

ORACLE. O que é Deep Learning? Disponível em:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
https://www.oracle.com/br/artificial-intelligence/machine-learning/what-is-deep
-learning/. Acesso em: 22 janeiro 24.

ORBIA. Como a Inteligência Artificial está transformando a agricultura.


Orbia, 2023. Disponível em: https://www.orbia.ag/novidades/como-a-
inteligencia-artificial-esta-transformando-a-agricultura. Acesso em: 22 janeiro
2024.

PACETE, Luiz Gustavo. Digital twin: como funciona a tecnologia que espelha
o mundo real. Forbes Tech, 2022. Disponível em:
https://forbes.com.br/forbes-tech/2022/09/digital-twin-como-funciona-a-tecnol
ogia-que-espelha-o-mundo-real/. Acesso em 22 janeiro 2024.

PARLAMENTO EUROPEU. O que é a Inteligência Artificial e como funciona?


PE, 2023. Disponível em: https://www.europarl.europa.eu/news/pt/headlines/
society/20200827STO85804/o-que-e-a-inteligencia-artificial-e-como-funciona.
Acesso em: 16 janeiro 2024.

PERGENTINO, Camila. Inteligência artificial pode aumentar em 14% a


produtividade de trabalhadores, aponta estudo. Época Negócios, 2023..
Disponível em: https://epocanegocios.globo.com/futuro-do-trabalho/noticia/
e o código CRC UZDIGMX2.
2023/04/inteligencia-artificial-aumenta-em-14percent-a-produtividade-de-trabal
hadores-aponta-estudo.ghtml. Acesso em: 24 janeiro 2024.

PINHEIRO, Guilherme P. A Regulação da Inteligência Artificial: Visões das


Propostas da Câmara dos Deputados e do Senado Federal. Disponível em:
https://www.brasil-economia-governo.org.br/2023/06/05/a-regulacao-da-intelig
encia-artificial-visoes-das-propostas-da-camara-dos-deputados-e-do-senado-fed
eral/. Acesso em 20 janeiro 2024.

PREGOWSKA, A.; OSIALl, M. O que é uma rede neural e para que serve?.
UNESP, 2022. Disponível em https://parajovens.unesp.br/o-que-e-uma-rede-
social-e-para-que-serve/. Acesso em: 20 janeiro 2024.

98
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

REDAÇÃO GQ. Christie's faz história com o primeiro leilão de uma obra
pintada por Inteligência Artificial. Globo.com, set, 2018. Disponível em:
https://gq.globo.com/Prazeres/Tecnologia/noticia/2018/09/christies-faz-historia
-com-o-primeiro-leilao-de-uma-obra-pintada-por-inteligencia-artificial.html.
Acesso em: 17 janeiro 2024.

REDAÇÃO HOMEWORK. 5 cuidados necessários antes de usar IA na


educação. 2023. Disponível em:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
https://www.terra.com.br/noticias/educacao/5-cuidados-necessarios-antes-de-u
sar-ia-na-educacao,de60f6899161bc6f4b3b4fbefd9ccd37a5yk0upp.html?utm_so
urce=clipboard. Acesso em: 17 janeiro 2024.

REDAÇÃO NATGEO. Quem foi Alan Turing, pioneiro no desenvolvimento da


Inteligência Artificial e da computacao moderna. National Geographic Brasil,
2023. Disponível em: https://www.nationalgeographicbrasil.com/ciencia/2023/
06/quem-foi-alan-turing-pioneiro-no-desenvolvimento-da-inteligencia-artificial-
e-da-computacao-moderna. Acesso em: 18 janeiro 2024.

REHAGRO. Inteligência artificial na agricultura: benefícios e aplicações.


Rehagro, 2023. Disponível em: https://rehagro.com.br/blog/inteligencia-
artificial-na-agricultura. Acesso em: 22 janeiro 2024.

ROMAGNOLE. O Impacto Transformador da Inteligência Artificial no Setor


Elétrico Brasileiro. Redação Romagnole, 2024. Disponível em:
https://www.romagnole.com.br/noticias/o-impacto-transformador-da-inteligen
cia-artificial-no-setor-eletrico-brasileiro%EF%BF%BC/#:~:text=A%20IA%20tem%
20sido%20utilizada,e%20a%20distribui%C3%A7%C3%A3o%20de%20energia.
Acesso em: 20 janeiro 2024.

e o código CRC UZDIGMX2.


RUSSELL, S.J.; NORVIG, P. Artificial Intelligence - A modern Approach. Pearson
Education, 2ª Edição, 2003.

SANKHYA. IA Generativa: o que é, vantagens e exemplos. 2023. Disponível


em: https://www.sankhya.com.br/blog/ia-generativa/. Acesso em: 19 janeiro
2024.

SCUDILIO, J. Como a Inteligência Artificial está transformando os Negócios.


FLAI, 2020. Disponível em: https://www.flai.com.br/juscudilio/como-a-inteligen
cia-artificial-esta-transformando-os-negocios/. Acesso em: 20 janeiro 2024.

99
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

SOTERO, A. Vale a leitura em 2024: revolução da IA para um mundo mais


humano. Investnews, 2024. Disponível em: https://investnews.com.br/
colunistas/melhores-livros/vale-ler-em-2024-a-revolucao-da-ia-para-um-mundo-
mais-humano. Acesso em: 16 janeiro 2024.

SOUSA, G. Fundamentos Básicos do Machine Learning que você Precisa


Saber. Learning Data, 2021. Disponível em: https://www.learningdata.dev/post/
fundamentos-basicos-do-machine-learning-que-voce-precisa-saber#viewer-d9i

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
n1. Acesso em 22 janeiro 2024.

SZELISKI, R. Computer Vision: Algorithms and Applications. Springer, Nova


Iorque, 2022.

TOTVS. Indústria 4.0: pilares, tecnologias, impactos e desafios. Equipe


TOTVS, 2023. Disponível em: https://www.totvs.com/blog/gestao-industrial/
industria-4-0/. Acesso em 23 janeiro 2024.

TURING, A.M. Computing machinery and intelligence. Mind. UK, 1950,


59(236), 433-460.

WELLS III, R.E. Strong AI vs. Weak AI: What's the Difference? Lifewire, 2023.
Disponível em: https://www.lifewire.com/strong-ai-vs-weak-ai-7508012. Acesso
em: 22 janeiro 2024.

ZANATTA, C. Inteligência artificial já é realidade na agricultura; entenda


como funciona. Redação Techtudo, 2023. Disponível em:
https://www.techtudo.com.br/noticias/2023/10/inteligencia-artificial-ja-e-realida
de-na-agricultura-entenda-como-funciona-edsoftwares.ghtml. Acesso em: 22
janeiro 2024.
e o código CRC UZDIGMX2.

ZENDESK. Quais são os tipos de Inteligência Artificial? Zendesk, 2023.


Disponível em: https://www.zendesk.com.br/blog/tipos-inteligencia-artificial/.
Acesso em: 19 janeiro 2024.

100
Capítulo 2:

Computacional
Introdução à Visão
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Autor
Bruno Agrofoglio Ferreira
Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.1. Introdução
Desejamos boas vindas ao capítulo de Introdução à Visão Computacional!
Este conteúdo foi desenvolvido para apresentar o conceito de Visão
Computacional, sua origem, desenvolvimento, aplicações e algoritmos.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Iniciamos nosso conteúdo com a introdução ao campo da computação
conhecido como Visão Computacional, trazendo seu contexto histórico,
seguindo para a apresentação das técnicas e hardwares responsáveis pela
aquisição e processamento das imagens. Também abordamos os fundamentos
do processamento de imagens, comentando acerca dos métodos de
pré-processamento das imagens antes da realização dos algoritmos de
treinamento.

Separamos as aplicações da Visão Computacional por grandes áreas como o


rastreamento de objetos em sequências de vídeo, vigilância e automação,
reconhecimento facial e biometria, medicina e diagnóstico, veículos autônomos,
drones e na robótica.

Além do Aprendizado de Máquina, também trazemos o uso de redes


neurais do Aprendizado Profundo para o treinamento de modelos mais
avançados de Visão Computacional. e o código CRC UZDIGMX2.

O conteúdo finaliza comentando sobre os algoritmos mais utilizados e


aplicados atualmente na área de Visão Computacional.

Para consolidar o conhecimento, utilizaremos uma ferramenta No Code, ou


seja, não são necessários conhecimentos prévios de programação. Essa
ferramenta auxiliará na a criação de um modelo de reconhecimento de objetos,
de forma simples e prática, sem a necessidade de instalação de software e
utilizando a própria câmera do seu dispositivo para realizar as capturas.

102
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.2. Inspirar
Vivemos em um mundo digital, conectados grande parte do nosso tempo a
tecnologia. Gadgets, smartphones e computadores habilitam nossa
comunicação, servem como meio de pagamento e permissão de acesso a locais,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
além dos mais diversos usos da tecnologia.

Equipamentos que, em quase sua totalidade, contam as câmeras para


realizar uma série destas atividades, desde uma simples foto ou captura de
vídeo, ao pagamento de contas e transferências, leitura de códigos de barras de
produtos e boletos, Pix e compartilhamento de arquivos e informações usando
QR codes.

Dentro deste contexto, a Visão Computacional emerge como um dos pilares


fundamentais da computação moderna, impulsionada significativamente pelas
técnicas avançadas de Machine Learning e Deep Learning num campo em que a
análise humana levaria um tempo demasiadamente longo (Russel e Norvig,
2022), requerendo um esforço humano gigantesco além de ser extremamente
repetitivo.

Aqui, não dizemos que é fácil interpretar o mundo real por meio da Visão
Computacional, pelo contrário, modelar computacionalmente o nosso mundo e o código CRC UZDIGMX2.

físico, objetos e cenas ao nosso redor, requer um grande esforço cognitivo e


também poder computacional para a execução de nossos algoritmos mais
avançados.

A introdução de novos recursos e aprimoramentos na Visão Computacional,


culmina em aplicações robustas e transformadoras para diversos setores como,
por exemplo, em segurança, onde por meio de sequências de vídeo pode-se
monitorar o perímetro contra invasores ou piscinas e lagos em busca de
afogamentos em andamento (Szeliski, 2022).

103
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Antes de iniciarmos a "Etapa de Conceitualização" na qual


haverá a apresentação do conteúdo e a experimentação dos
conceitos trabalhados por meio de atividades práticas, entre no

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Google Sala de Aula, na aba "Etapa Inspirar", para acessar todos
os materiais disponibilizados, que visam a estimular sua reflexão e
iniciar a ambientação com o conteúdo deste capítulo.

Como última atividade desta etapa, prepare-se para trabalhar a


solução inicial do estudo de caso que será apresentado na
próxima seção.

A solução inicial que você elaborará não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos apresentados e a
entender como trabalhá-los de maneira prática.

2.2.1. Estudo de Caso


e o código CRC UZDIGMX2.

Este estudo de caso busca incentivar a reflexão sobre as aplicações da Visão


Computacional em nosso cotidiano. Reflita como essa tecnologia pode
beneficiar ainda mais nossa vida, tornar a nossa sociedade mais segura,
promover avanços na medicina e na qualidade de vida, prover conforto para os
lares, aprimorar equipamentos tecnológicos como smartphones e gadgets,
contribuir com a mobilidade dentro das cidades, entre outras áreas de aplicação
que você entender serem interessantes.

104
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Leia com atenção o cenário do estudo de caso e lembre-se: o


propósito desta atividade é promover uma reflexão inicial acerca do
assunto a ser discutido no cenário tendo por base somente os

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
conhecimentos de que você dispõe neste momento.

2.2.1.1. Cenário
A Facti, uma Instituição Científica e Tecnológica (ICT) privada reconhecida
por sua atuação no mercado de Tecnologias da Informação e Comunicação
(TICs), está iniciando um novo projeto utilizando Visão Computacional.

Você, uma pessoa apaixonada por tecnologia, recém contratada para o time
de desenvolvimento está convocado(a) para identificar um nicho que demande a
aplicação da Visão Computacional.

Reflita como será a detecção, que objeto você irá detectar ou rastrear, sobre
qual cenário isso ocorrerá, considerando aspectos como condições climáticas,

e o código CRC UZDIGMX2.


ambiente interno e externo, possíveis tecnologias existentes e concorrentes.

Importante: coloque a sua resposta na atividade "Apresentação


da solução inicial", no Google Sala de Aula, em um documento no
formato de texto. Utilize este momento para trabalhar as suas ideias
iniciais com o máximo de detalhamento que puder. Mais adiante, as
suas anotações serão retomadas para o refinamento da solução do
estudo de caso.

105
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3. Conceitualizar

2.3.1. Introdução à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
A visão é um dos cinco sentidos humanos. Como seres humanos somos
capazes de enxergar em três dimensões graças a um par de globos oculares que
nos fornecem uma visão estéreo (mono quando é um canal ou via, estéreo
quando são dois canais ou vias). Nosso cérebro é capaz de localizar objetos
rapidamente, reconhecer pessoas e animais familiares, inferir acerca de
emoções nos rostos ou perigos ao nosso redor. Assim como acontece com os
seres humanos, a informação obtida por meio da visão pode nos servir para
classificar objetos e orientar escolhas (Marr, 2010).

Vamos ver um exemplo? Quando você vai ao supermercado escolher


bananas e, ao verificar a cor das frutas disponíveis, constata que todas as
bananas estão verdes, optando por comprá-las você precisará aguardar o
amadurecimento para consumi-las. Se no mesmo cenário você tivesse a opção
bananas verdes e bananas amarelas, poderia optar por comprar uma parte das
frutas amarelas podendo realizar o consumo imediato delas.
e o código CRC UZDIGMX2.

Figura 45: Cesta de frutas com bananas verdes e amarelas.


Fonte: imagem gerada por IA.

106
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A grosso modo, é dessa mesma forma que a Visão Computacional funciona:


ela adquire a imagem digital, realiza tratamentos, identifica objetos
reconhecendo padrões e classificando. A partir das informações de classificação,
a tomada de decisão é realizada.

Que tal outro exemplo, agora utilizando Visão Computacional num cenário

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
industrial? Neste exemplo, estamos numa esteira de processamento de frutas,
neste caso, bananas. As frutas devem ser separadas de acordo com o seu ponto
de amadurecimento para diferentes destinos. Frutas mais verdes, que levarão
um tempo maior para amadurecer, deverão seguir para os destinos mais
distantes. Por outro lado, frutas mais amarelas, praticamente maduras, deverão
ser entregues aos destinos mais próximos. De forma simplificada, estamos
otimizando a distribuição visando a manutenção da qualidade da fruta na
chegada ao cliente final. Neste exemplo, podemos utilizar uma câmera para a
obtenção de imagens que serão processadas em tempo real e servirão de base
para a tomada de decisão de um robô ou esteira separadora, responsável por
direcionar as frutas nas caixas corretas de acordo com o destino.

A Visão Computacional, portanto, é um campo interdisciplinar que combina


técnicas de processamento de imagens, Inteligência Artificial e Ciência da
Computação com o objetivo de dar às máquinas a capacidade de interpretar
visualmente informações do mundo real (Bengio et al., 2013). e o código CRC UZDIGMX2.

Figura 46: Bananas transportadas por esteira.


Fonte: imagem gerada por IA.

107
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Você já deve ter notado que a Visão Computacional parece estar em muitos
lugares, não é mesmo? Neste momento, você deve ter acesso a um dispositivo
celular (smartphone) que possui uma câmera. Possivelmente, o equipamento
conta com recursos de Visão Computacional embarcados nele (Davies, 2005).

Calma! Vamos primeiro verificar se o aparelho cumpre com o pré-requisito

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
para ser um dispositivo de Visão Computacional - e não apenas uma simples
câmera. Precisamos primeiro saber se o seu dispositivo consegue “ver”, ou seja,
possui uma câmera integrada, para captura de imagens no espectro visível ou
não (já iremos comentar sobre outros espectros mais adiante).

A partir dessa capacidade de “visão” do dispositivo, se ele for capaz de


interpretar, identificar e/ou classificar o que lhe foi apresentado, sim, estamos
lidando com um dispositivo que proporciona Visão Computacional, ou seja, a
capacidade que uma máquina tem de adquirir, processar e classificar essas
imagens para que sejam tomadas decisões a partir dessa “visão”.

Figura 47: Smartphone. e o código CRC UZDIGMX2.


Fonte: imagem gerada por IA.

Em nossos celulares, nós podemos encontrar a combinação de aplicativos e


câmeras que proporcionam a identificação de rostos, sorrisos e até objetos
durante a execução. Um exemplo é o Google Lens e o Google Fotos, hoje
integrado às aplicações de câmera de boa parte dos celulares com sistema
Android. O iPhone também possui o Visual Look Up, recurso integrado ao app
Fotos. Esses aplicativos possuem a capacidade de reconhecimento de objetos,
cenários e contextos, possibilitando realizar uma pesquisa na barra de busca
com termos como cachorro, gato, praia ou até Natal.
108
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Durante cerca de 50 anos, antes do desenvolvimento das redes neurais


aplicadas para Visão Computacional (em meados de 2012), a detecção e
classificação era obtida por meio de uma série de algoritmos de processamento
de imagem (Chen et al., 2022).

Com o surgimento de técnicas para o reconhecimento de imagens baseadas

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
em redes neurais, tornando a detecção menos artesanal, visto que para cada
contexto era necessário um algoritmo específico que funcionava muito bem
para um determinado conjunto de treinamento.

Apesar de ser eficiente, a classificação baseada em Aprendizado de Máquina,


utilizando de forma linear diferentes algoritmos, é inflexível, ou seja, mais
restrita no sentido de contexto de aplicação (Bengio et al., 2013).

Por exemplo, uma aplicação para detecção de automóveis, funcionaria muito


bem durante o dia, porém, para a detecção de automóveis no período noturno
seria necessário o treinamento de um novo modelo, visando melhorar a
eficiência e mitigar erros na detecção durante um ciclo diário (dia e noite ao
longo de 24 horas).

Além disso, trazia consigo o risco de dependência da atualização desses


algoritmos específicos para continuar atualizada. Essas dependências podiam

e o código CRC UZDIGMX2.


em muitos casos, quebrar o programa principal, necessitando de ajustes
constantes para que o mesmo continuasse funcionando.

Figura 48: Concepção artística de veículos em uma avenida detectados por meio da Visão Computacional.
Fonte: imagem gerada por IA.
109
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.1.1. Contexto histórico


Segundo David Marr (2010), o desenvolvimento da Visão Computacional
é inseparável da Inteligência Artificial. Aqui, pretende-se resumir alguns marcos
temporais importantes para o desenvolvimento da área, sabendo que não
haverá como contemplar todos, visto que é uma área ampla e cujo

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
desenvolvimento ocorreu em diversos países, necessitando de uma extensa
pesquisa bibliográfica.

Em 1951, Marvin Minsky (1961) desenvolveu a primeira máquina de


aprendizado com rede neural de fiação aleatória conhecida como SNARC
(Stochastic Neural Analog Reinforcement Calculator) junto à sua equipe dentro do
MIT (Massachusetts Institute of Technology). O SNARC foi um neurocomputador
simples, composto por 100 neurônios artificiais, capaz de resolver um labirinto
de ratos usando um algoritmo de Aprendizado por Reforço. Este algoritmo de
reforço funciona premiando o dispositivo por tomar as decisões corretas que, no
caso do SNARC, eram aquelas voltadas a chegar ao prêmio no final do labirinto.

e o código CRC UZDIGMX2.

Figura 49: Professor Marvin Minsky.


Fonte: imagem gerada por IA.

110
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O Aprendizado por Reforço capacita um agente a tomar decisões em um


ambiente complexo, recebendo recompensas por ações bem-sucedidas. Os
seres humanos também aprendem a tomar decisões em um ambiente complexo
a partir de informações do sistema visual, no caso, do mundo ao nosso redor.
Nós, seres humanos, recebemos recompensas por tomar decisões que nos
ajudam a sobreviver e prosperar.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Portanto, os modelos de Aprendizado por Reforço podem aprender a
identificar e rastrear objetos em movimento, além de entender a relação entre
eles. No entanto, é importante notar que os modelos de Aprendizado por
Reforço não são perfeitos, cometendo erros, assim como o sistema visual
humano (Forsyth e Ponce, 2015). Além disso, os modelos de Aprendizado por
Reforço são limitados pelos dados em que são treinados, desta forma, se os
dados de treinamento não forem representativos do mundo real, os modelos
podem não ser capazes de generalizar bem para novas situações.

Na década de 1960, outros pesquisadores desenvolveram algoritmos para


uma variedade de tarefas, incluindo reconhecimento de padrões,
correspondência estéreo e fluxo óptico, era um salto no campo da Inteligência
Artificial, marcado principalmente pelo lançamento do livro Perceptrons, em
1969, quando Minsky e Seymour Papert abordam a rede neural mais antiga,
criada por Frank Rosenblatt em 1958. e o código CRC UZDIGMX2.

Figura 50: Releitura da obra Relatividade de Maurits Cornelis Escher.


Fonte: imagem gerada por IA.

111
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Já na década de 1970, a Visão Computacional continuou a se desenvolver,


com a chegada de novos algoritmos e técnicas, iniciando sua expansão para
aplicações práticas, como robótica e processamento de imagens médicas,
devido ao maior desenvolvimento no campo da microeletrônica e o advento das
câmeras digitais.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Minsky e seu grupo no MIT desenvolveram uma variedade de modelos de
processamento de imagens, incluindo o modelo de visão de Marr-Hildreth em
1980 onde, notadamente, a Visão Computacional alcançou um novo nível de
maturidade.

Avançando para a década de 1990, surgem novas técnicas como


processamento de imagens digitais, modelagem física e Aprendizado de
Máquina. A partir dos anos 2000, a Visão Computacional experimentou um novo
ciclo de avanços, com o surgimento da aprendizagem profunda ou, em inglês,
Deep Learning (Bengio et al., 2013).

Em 2010 a humanidade iniciou testes com veículos autônomos e realidade


aumentada, ampliando as aplicações da tecnologia, culminando nos dias atuais
com o amadurecimento e aplicação em uma variedade de campos, incluindo
robótica, medicina, segurança e entretenimento.

e o código CRC UZDIGMX2.

Figura 51: Professores Marvin Minsky e Seymour Papert.


Fonte: imagem gerada por IA.
112
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.1.2. Aquisição e representação de


imagens digitais
A Visão Computacional é a área da computação que realiza a interpretação
de imagens digitais. Segundo Richard Szeliski (2022), dentro da Visão

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Computacional os cientistas buscam descrever o mundo a partir de uma ou mais
imagens, reconstruindo suas propriedades com base na forma, iluminação e
distribuição de cores.

A aquisição de imagens é o processo pelo qual uma imagem do mundo real


é capturada para ser posteriormente processada por computadores.

Entre os métodos empregados para realizar essa aquisição estão as câmeras


digitais, os scanners que empregam feixes de luz para digitalizar imagens
impressas ou objetos tridimensionais, convertendo a informação visual em
dados digitais e as câmeras de vídeo que são capazes de capturar sequências de
imagens, sendo valiosas para análises dinâmicas do ambiente (Forsyth e Ponce,
2015).

e o código CRC UZDIGMX2.

Figura 52: Câmeras digitais modernas são construídas com sensor CMOS.
Fonte: imagem gerada por IA.

113
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Geralmente, a informação no formato digital é obtida a partir de um


hardware específico como um CMOS (Complementary Metal Oxide Semiconductor,
que em português significa semicondutor de óxido metálico complementar) ou
um CCD (charge-coupled device, ou dispositivo de carga acoplada), que atuam
(com tecnologias diferentes) convertendo luz em sinal elétrico que, em seguida,
transformam-se em um conjunto de dados armazenados digitalmente.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Atualmente, o sensor CMOS é o mais utilizado comercialmente, devido ao
seu menor custo de fabricação, maior eficiência energética e velocidade superior
ao CCD. Câmeras de alto desempenho podem contar com sensores CMOS
empilhados visando uma captura mais fiel, porém, a um custo muito maior, pois
conta com uma tecnologia complexa e que ainda está em desenvolvimento.

A Visão Computacional também pode ser obtida por câmeras não


convencionais, como mencionado anteriormente, acerca de espectros fora do
visível ao olho humano.

Podemos utilizar imagens de infravermelho, ultravioleta, raios X, raios gama,


RADAR (Radio Detection And Ranging ou detecção e medida de distância por
rádio), LIDAR (Light Detection And Ranging ou detecção e alcance por luz) e
SONAR (Sound Navigation and Ranging ou navegação e determinação da
distância pelo som).
e o código CRC UZDIGMX2.

Figura 53: imagem obtida por LIDAR. Sobreposta há um modelo mecânico associado à hidráulica predial.
Fonte: Wikimedia Commons.

114
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Em astronomia e astrofísica, telescópios em órbita podem capturar imagens


nos espectros infravermelho, ultravioleta, raios X e raios gama, que são
bloqueados pela atmosfera terrestre em quase sua totalidade.

Essas imagens fornecem informação além do espectro visível de berçários


estelares, centros de galáxias, pulsares, regiões altamente ativas, geralmente

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
próximas aos buracos negros e outras áreas de interesse para a fronteira da
ciência.

No campo da medicina, equipamentos de ressonância magnética,


ultrassonografia, raios X entre outros, fornecem imagens a partir de tecnologias
ou espectros que não são visíveis ao olho humano.

Em aplicações de segurança e no campo militar, a aquisição de imagens no


espectro infravermelho, imagens de RADAR, LIDAR e SONAR são essenciais para
navegação, ataque e defesa das forças, além de resgate, busca e salvamento.

e o código CRC UZDIGMX2.

Figura 54: Representação artística de um telescópio orbital.


Fonte: imagem gerada por IA.

115
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Assim, a aquisição de imagens fornece dados brutos, a entrada essencial


para realizar tarefas como reconhecimento de objetos, rastreamento de
movimento e análise de imagem. A partir da aquisição, dá-se a representação de
imagens, processo pelo o qual a informação visual capturada é transformada de
forma que pode ser manipulada por sistemas computacionais (Forsyth e Ponce,
2015).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Entre os formatos de imagem digital, os dois mais comuns são as imagens
raster, compostas por matrizes de pixels e as imagens vetoriais, compostas por
objetos geométricos como linhas e polígonos, como a extensão .SVG (Scalable
Vector Graphics, ou gráficos vetoriais escalonáveis).

A escolha entre esses formatos depende da aplicação específica. As imagens


vetoriais são mais utilizadas para desenhos técnicos e gráficos, como as
utilizadas em impressão 3D. Já as imagens raster são preferíveis para fotografias.

Nas imagens raster, cada pixel representa um ponto na imagem. A


informação geralmente contem as coordenadas de posição x e y do pixel,
seguida, por exemplo, dos valores de cor RGB (Red - vermelho, Green - verde e
Blue - azul).

e o código CRC UZDIGMX2.

Figura 55: Abstração de pixels em uma imagem.


Fonte: imagem gerada por IA.

116
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Dessa forma, cada pixel - que adotamos como um quadrilátero com a menor
informação possível de uma imagem - é registrado em série, originando um
arquivo muito maior, com a informação de todos os pixels que compõem a
imagem. Esses arquivos possuem extensões que são geralmente conhecidas
pelos usuários como .JPG, .PNG, .GIF ou .BMP.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
A informação do pixel pode ser expressa como um número inteiro ou ponto
flutuante. Quando nos referimos à forma matricial, estamos tratando colunas e
linhas que podemos associar com os eixos x e y, respectivamente, de um plano
cartesiano.

Humanamente, a comparação pixel a pixel seria impossível! Veja um


exemplo para uma foto com 5 megapixels (MP) - portanto, possuindo uma
matriz de 2.560 pixels por 1.920 pixels (2560x1920), que contém exatamente
4.915.200 pixels (daí a resolução da câmera de 5MP).

Note que é uma matriz dificílima até mesmo de se representar fisicamente


em papel e caneta! Atualmente, boa parte dos aparelhos celulares já contam
com câmeras que possuem resoluções maiores que 108 MP (12000x9000),
resultando em 108 milhões de pixels.

e o código CRC UZDIGMX2.

Figura 56: Trecho da saída de um script em Python que lê informação pixel a pixel.
Fonte: os Autores.

117
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A aquisição da imagem acontece em três etapas. Primeiro temos a etapa


óptica, que é quando os raios de luz atravessam as lentes do conjunto óptico da
câmera, passando pelo obturador.

Em seguida, ocorre a etapa de sensibilização eletrônica do CCD ou CMOS,


ajustando-se o ganho e transformando a informação analógica para digital por

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
meio de um conversor ADC (Analog-to-Digital Converter). Este processo encerra a
segunda etapa do processamento e é realizada no chip sensor da câmera.

A terceira e última etapa, por sua vez, ocorre no processador de sinal de


imagem ou ISP (Image Signal Processor), um processador de imagem digital, ou
DSP (Digital Signal Processor), que transforma a imagem bruta (raw data) em
imagem comprimida após as etapas de quantização, correção de erros causados
por ruído ou exposição incorreta, balanceamento de nível de branco e do
contraste.

Com os recentes avanços na microeletrônica e em sistemas embarcados,


atualmente já encontramos ISPs que realizam desde o reconhecimento de
objetos e faces, até o estudo de movimento da aquisição, realizando um
processamento de alto nível sobre a imagem.

e o código CRC UZDIGMX2.

Figura 57: Raios de luz atravessam o conjunto óptico, atingindo o sensor CMOS de uma câmera.
Fonte: imagem gerada por IA.

118
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.1.3. Fundamentos de processamento de


imagens
Vimos anteriormente que a aquisição da imagem nas câmeras digitais
modernas, utilizando matrizes CMOS, ocorre em três etapas, cujo

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
processamento na primeira e segunda etapa é praticamente físico, com a
transformação de energia (e informação) luminosa em elétrica. A terceira etapa
é composta por processamento eletrônico da imagem, por meio da aplicação de
filtragem para promover os processos de coloração, remoção de ruído, ajuste da
curva de contraste (nível de gamma), ajuste de cores e finalmente a compressão
do arquivo.

Na etapa de correção da imagem são aplicados métodos matemáticos que


atualmente podem contar até com Aprendizado de Máquina. Tais correções
incluem a remoção do efeito de mosaico (demosaic ou demosaicing), que visa
corrigir as imagens a partir de amostras de cores incompletas recebidas pelo
sensor CMOS. Isso se deve à forma como é realizada a captura na maioria das
câmeras digitais atuais.

e o código CRC UZDIGMX2.

Figura 58: Sensor CMOS de uma câmera visto por meio de microscópio.
Fonte: Wikimedia Commons.

119
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Em 1974, Bryce Edward Bayer, que trabalhava para a Kodak, desenvolveu o


que conhecemos hoje como filtro Bayer, uma matriz de cores que é instalada em
sobre o fotossensor. O filtro Bayer divide o sensor em pequenos quadrados,
cada um coberto por um filtro de cor diferente, como vermelho (R), verde (G) e
azul (B). Dessa forma, cada pixel do sensor captura apenas uma cor, originando a
perda de parte da informação, requerendo assim a sua reconstrução a partir da

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
informação dos pixels adjacentes (Lian et al., 2005).

Para reconstruir uma imagem colorida completa a partir de amostras


incompletas (devido à perda de informação no filtro Bayer) pelo sensor da
câmera, o software de processamento de imagem (embarcado junto ao CMOS)
deve estimar as cores que faltam para cada pixel, reconstruindo informação.

Curiosidade: A matriz de Bayer aloca dois pixels verdes cada


par de pixels azul e vermelho, pois somos muito mais sensíveis ao
brilho que a cor, dessa forma, a luz verde, que contribui muito

e o código CRC UZDIGMX2.


mais para a percepção do brilho que as cores azul e vermelha, cria
uma imagem com aparência muito melhor, parecendo “mais viva”
do que seria numa distribuição uniforme de cores.

Assim, como o demosaicing, temos o denoise ou denoising que é o processo


de remoção de ruído. Este ruído pode ter origem no sensor, no processamento
e/ou na transmissão, sendo necessário o seu tratamento, seja ainda a nível de
hardware ou no pós processamento a nível de software.

120
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Para ajustarmos o contraste de uma imagem, podemos realizar a correção


por meio da alteração de parâmetros que impactam na equação da curva de
gamma. Dessa forma, podemos aumentar ou diminuir o contraste de todos os
pixels da imagem, deixando-a mais nítida ou mais suave.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 59: Imagem no espectro infravermelho detectando volume de água em
suspensão na atmosfera (tempestades) obtida por um satélite climático.
Fonte: Wikimedia Commons.

O demosaicing e o denoising também podem ser realizados na aquisição de


imagens médicas, como as de tomografia computadorizada ou ressonância
magnética, até imagens de satélite em infravermelho, sempre buscando uma
melhoria na qualidade da imagem.

e o código CRC UZDIGMX2.

Figura 60: Imagem de ressonância utilizada para a detecção de um tumor cerebral (destaque).
Fonte: Wikimedia Commons.

121
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Note que, até aqui, foi abordado apenas o código de cores RGB. Seres
humanos, por natureza possuem um sistema de captação óptica tricromático,
ou seja, percebemos as cores dos objetos e não apenas o contraste como
acontece em muitos outros animais que possuem o sistema óptico dicromático
(Szeliski, 2022).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 61: Seres humanos possuem sistema óptico tricromático, possuindo três tipos de
cones, cada tipo mais sensível a uma cor: vermelho, verde e azul.
Fonte: imagem gerada por IA.

Algumas teorias da evolução das espécies apontam que essa diferença


ocorreu, pois como seres onívoros, além de caçar, também necessitamos
diferenciar a cor de frutos e vegetais para nos alimentarmos. Animais
predadores como cães e gatos, caçam suas presas apenas baseados no

e o código CRC UZDIGMX2.


contraste. A regra aos mamíferos é a visão dicromática - nós, seres humanos,
somos uma exceção à regra (Griebel, 2002).

Figura 62: A maioria dos mamíferos como os gatos possuem sistema óptico dicromático.
Fonte: imagem gerada por IA.

122
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Em 1931, a Comissão Internacional de Iluminação (CIE ou Commission


Internationale d'Eclairage) estabeleceu as primeiras ligações entre o espectro
eletromagnético e as cores percebidas pelo sistema fisiológico óptico humano. A
partir de experimentos, foram definidos os comprimentos de onda de 700
nanômetros para a cor vermelha (R), 546,1 nanômetros para a cor verde (G) e
435,8 nanômetros para a cor azul (B).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Por causa da indistinguibilidade de cores entre alguns diferentes espectros,
um novo espaço de cores foi desenvolvido um novo espaço de cores, conhecido
como CIE RGB XYZ. Atualmente, devido à criação de modernas imagens de alta
definição, como a HDTV, foi criado um novo padrão para o espaço de cores
chamado ITU-R BT.709, alterando as coordenadas XYZ de cada uma das cores
primárias (RGB).

e o código CRC UZDIGMX2.

Figura 63: Diagrama de cromaticidade CIE XY de 1931.


Fonte: Wikimedia Commons.

123
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Agora que encerrou-se a etapa de como as imagens tridimensionais são


obtidas por meio do conjunto óptico e sensores, será abordada a etapa de
tratamento de imagens por meio do processamento por software. Iniciando
pelo tipo de transformação mais simples, a que manipula cada pixel de forma
independente, sem observar a sua vizinhança. Este tipo de processamento é
conhecida como operação pontual ou processamento pontual, no qual aplica-se

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
os chamados operadores pontuais. Nesta etapa, uma ferramenta necessária do
ponto de vista de eficiência e conveniência é a famosa transformada rápida de
Fourier ou FFT (Fast Fourier Transform).

Curiosidade: Em 1807, Jean Baptiste Joseph Fourier,


completou seus estudos no qual observou séries senoidais
harmonicamente relacionadas para representar a distribuição
de temperatura de um corpo. Ao representar as funções por
somas de senos e cossenos ou pela soma de exponenciais
complexas, Fourier criava o que conhecemos hoje como análise
de Fourier, uma das técnicas mais utilizadas na área de
processamento de sinal pela engenharia. Fourier propôs que
uma função periódica pode ser descrita por uma série, sendo e o código CRC UZDIGMX2.

utilizada para descrever sinais discretos, vindo a ser batizada de


série de Fourier, onde a função temporal pode ser expressa
como uma combinação linear de exponenciais complexas
harmonicamente relacionadas.

Já a transformada de Fourier recebe este nome em


homenagem ao Fourier. Seu algoritmo começou a ser
pesquisado ainda em 1805 por Carl Friedrich Gauss.

124
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A transformada de Fourier é uma poderosa ferramenta matemática que


permite decompor uma função em suas frequências componentes, úteis para
entender a composição de uma função ou para realizar operações com esta
função. Sabe-se que a transformada de Fourier de uma função temporal é uma
função complexa, em que o valor real da transformada representa a amplitude
das frequências componentes da função original, enquanto o argumento

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
complexo representa a fase das frequências componentes. A versão moderna da
transformada rápida de Fourier surgiu em 1965, a partir dos trabalhos de John
Tukey e James Cooley.

A transformação a nível do pixel geralmente é utilizada para ajuste de


contraste e brilho, como o ajuste desses parâmetros em uma cena com céu claro
ou seu inverso quando está nublado. Essas operações pontuais se dão a nível de
software, matematicamente elas envolvem uma operação linear, mas há
operações não lineares, como o ajuste de gamma, por exemplo.

Entre as operações de transformação pontual, temos as transformações de


cores que podem ser realizadas em apenas um canal ou nos três canais (RGB)
simultaneamente. Efeitos interessantes podem ser obtidos por meio dessa
transformação, como a alteração ou remoção de fundo da imagem, mudança de
uma imagem colorida para tons de cinza.
e o código CRC UZDIGMX2.

Figura 64: Imagem original à esquerda. Alteração na luminosidade e saturação (imagem à direita).
Fonte: imagem gerada por IA.

125
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Após encerrar as etapas de operações pontuais nas transformações ao nível


do pixel (como o ajuste de brilho e contraste), além das transformações que
envolvem cores, abordaremos as transformações que envolvem a composição, o
fosqueamento e a equalização de histograma.

Quando uma transformação ocorre na forma de atingir uma determinada

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
vizinhança, ou seja, não mais pontual ou pixel a pixel, ela é conhecida como
filtro.

Os filtros possuem diversas finalidades, como promover o ajuste de tons da


imagem, realizar o desfoque, alterar a nitidez, remover ruídos e alterar bordas.
Portanto, um filtro é uma função que modifica os valores dos pixels de uma
imagem atingindo sua vizinhança (Szeliski, 2022).

A aplicação de filtros no processamento de imagens é também chamada de


convolução. A convolução é um operador linear, ou seja, uma operação
matemática que combina duas funções para produzir uma terceira função. A
convolução é realizada deslizando um filtro sobre uma imagem e calculando a
convolução de cada pixel da imagem com o filtro, lembrando que existem filtros
lineares e não lineares.

a b c
e o código CRC UZDIGMX2.

d e f

Figura 65: Imagem original (a), seguida dos filtros:


“desfocar” (b), “envelhecer” (c), “relevo” (d), “pontilhado” (e) e “elétrico” (f).
Fonte: imagem gerada por IA.
126
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Até aqui, vimos as operações pontuais e os filtros lineares e não lineares.


Além disso, existem operações como a interpolação (estimativa do valor de um
pixel a partir de sua vizinhança) e a decimação (redução da taxa de amostragem
visando a melhora na relação sinal-ruído) que visam alterar a resolução de uma
imagem, e outras como as wavelets (funções trigonométricas que servem para
representar sinais e imagens) e a representação multi-resolução (utilizada para

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
representar dados em diferentes escalas de frequência) que otimizam a análise
da imagem em diferente níveis de detalhe.

Neste capítulo, optou-se por não nos aprofundar além do que exposto até
aqui em filtragem e aplicação das transformações, devido ao ferramental
matemático necessário extenso para ser contemplado dentro deste capítulo.

Gostaríamos de encerrar esta subseção com as transformações que se dão


de forma geométrica, pois elas nos auxiliarão no tratamento de casos como o
rastreamento de objetos e o tratamento tridimensional de objetos a partir de
imagens bidimensionais.

As transformações geométricas podem ser paramétricas ou uma


deformação baseada em malha, onde utiliza-se uma malha para mapear pontos
de uma imagem para uma nova posição.

e o código CRC UZDIGMX2.


Entre as principais transformações geométricas paramétricas estão a
translação (preserva a orientação), a rígida ou euclidiana (preserva o
comprimento), a transformação por similaridade (preservando os ângulos), a
transformação afim (preserva o paralelismo) e a transformação projetiva
(preservando as retas do objeto).

Visto que a transformação paramétrica controla um número pequeno de


parâmetros, para realizar deformações locais mais precisas, com a manipulação
de um número maior de parâmetros ou graus de liberdade, utilizamos a
deformação baseada em malha.

127
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Apresentada as etapas básicas da Visão Computacional que incluem


filtragem, redimensionamento e correção de cor, encerraremos este tópico
comentando sobre o processamento digital avançado de imagens.

No processamento digital avançado, utilizamos a segmentação, que pode


ser baseada em formatos, cores ou intensidade dos pixels. Também utilizamos a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
detecção de bordas onde, a partir do reconhecimento e detecção, conseguimos
estimar movimento e estruturas a partir do movimento ao longo das imagens.

Dessa forma, a classificação dessas imagens é realizada por Aprendizado de


Máquina por meio destes grandes volumes de dados inseridos, junto aos rótulos
de classificação dos objetos a serem detectados, possibilitando a criação de um
modelo 3D denso, rastreando pessoas, reconhecendo objetos e cenas.

A tridimensionalidade é obtida a partir da superposição de sequências de


imagens bidimensionais, cuja Visão Computacional pode extrair e comparar
dados obtendo informações de velocidade, volume, posição no espaço, entre
outras, acerca dos objetos (Forsyth e Ponce, 2015).

e o código CRC UZDIGMX2.

Figura 66: Por meio da segmentação ou da detecção de bordas podemos manipular


imagens como a remoção do fundo apresentada acima.
Fonte: imagem gerada por IA.

128
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.1.4. Aplicações da Visão Computacional


Até aqui você já deve ter percebido o alcance da Visão Computacional. Essa
potencialidade de aplicação diversa, desde uma aplicação recreativa como
aplicar filtros e outros efeitos de imagem para publicar nas redes sociais, até
modernos sistemas de detecção de incêndios florestais.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Observe um exemplo quando a Visão Computacional é aplicada em sistemas
computacionais de reconhecimento de tráfego, possibilitando a distinção entre
pedestres, bicicletas, veículos leves e pesados, trens e bondes, auxiliando a
mobilidade urbana, indo além dos sensores que detectam o fluxo de veículos de
forma eletrônica, geralmente usando sensores indutivos.

Para ilustrar, vamos citar o sistema empregado na cidade alemã de


Darmstadt, em que as câmeras podem reconhecer elementos presentes no
trânsito das cidades, seja durante o dia ou à noite devido ao emprego de
câmeras espectrais que identificam e reconhecem objetos no espectro do
infravermelho, tal sistema organiza o tráfego, permitindo a travessia segura de
pedestres, principalmente em faixas próximas às escolas. Ele também pode ser
utilizado para otimizar a rota de veículos exclusivos de transporte público como
ônibus e VLTs (veículo leve sobre trilhos), alterando a sinalização semafórica
e o código CRC UZDIGMX2.
permitindo uma interrupção menor no fluxo desses veículos coletivos.

Figura 67: Sistema de Visão Computacional para operação autônoma de tráfego.


Fonte: Teledyne FLIR LLC.

129
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.1.4.1. Rastreamento de objetos em


sequências de vídeo
O rastreamento de objetos em sequências de vídeo é uma funcionalidade da
Visão Computacional essencial em diversas aplicações de ponta como robótica,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
medicina, segurança e entretenimento. Com adequado poder computacional,
podemos monitorar em tempo real o fluxo (streaming) de uma câmera de
segurança, por exemplo, realizando a detecção de invasores no perímetro.

Figura 68: Sistema combinado de RADAR e Visão Computacional formam


um perímetro protegido eletronicamente.
Fonte: Teledyne FLIR.

Outro exemplo, agora em robótica, é o rastreamento de objetos a partir de


câmeras onboard do equipamento móvel, permitindo que os robôs naveguem

e o código CRC UZDIGMX2.


pelo mundo e interajam de forma eficiente com o ambiente onde o mesmo
opera.

Figura 69: Robô quadrúpede Spot operando por um sistema de câmeras.


Fonte: Boston Dynamics.

130
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O processo durante o rastreamento de objetos pode ser dividido em duas


etapas principais. Na primeira etapa, a detecção de objetos envolve a
identificação inicial dos elementos na sequência de vídeo que desejamos
rastrear. Em seguida, o algoritmo de rastreamento de objetos acompanha o
movimento desses elementos ao longo do tempo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O rastreamento pode ser realizado utilizando características como bordas,
formas e texturas para identificar objetos. Outros métodos de rastreamento -
como os baseados em Aprendizado de Máquina - aprendem a reconhecer
objetos por meio de conjuntos de dados de treinamento, criando assim modelos
matemáticos para cada objeto, o que oferece uma precisão potencialmente
superior e proporciona flexibilidade e adaptabilidade.

É importante lembrar que, à medida em que os métodos de rastreamento de


objetos nas sequências de vídeo evoluem e novas técnicas continuam a ser
desenvolvidas quase que diariamente, os avanços que experimentamos em um
curto intervalo de tempo parecem gigantes.

Um desses últimos avanços ocorre no campo das redes neurais (tópico que
abordaremos mais à frente). Quando utilizadas, a redes neurais conseguem
reconhecer imagens de forma significativamente maior, ampliando também o
contexto de aplicação (Szeliski, 2022), não ficando mais restrita à limitações
e o código CRC UZDIGMX2.
como operar de dia ou de noite, ser aplicada de forma versátil com poucas ou
nenhuma alteração, algo impensável para o modelo tradicional que utiliza o
Aprendizado de Máquina.

Outra vantagem da rede neural é a possibilidade de aplicação do modelo a


partir de um número menor de imagens quando comparado ao treinamento de
modelos baseados em Aprendizado de Máquina. Atualmente já temos modelos
generativos como LLM utilizados para o reconhecimento de objetos e imagens
por meio de redes neurais (You et al, 2023).

131
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.1.4.2. Aplicações em vigilância e


automação
Ao pensarmos em segurança, a primeira imagem que nos vem à cabeça é a
aplicação de câmeras de vigilância. As câmeras mais modernas, sejam elas

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
indoor e outdoor, já possuem reconhecimento de objetos e detecção automática
de invasão no perímetro utilizando Aprendizado de Máquina (Szeliski, 2022),
realizando o disparo automático de alarmes, alertas de intrusão no perímetro
monitorado, detecção automática de rostos e placas veiculares, aumentando a
capacidade de detecção e evitando fadigas humanas que podem comprometer a
segurança do sistema. Tais modelos são embarcados no próprio hardware da
câmera, junto a um pequeno aplicativo servidor que possibilita o usuário
conectar-se diretamente à câmera por meio de um smartphone, computador e
até smart TV, realizando ajustes como a seleção da área a ser monitorada, a
sensibilidade de disparo de eventos, deixando a câmera mais precisa para a
aplicação e evitando falsos disparos automáticos.

e o código CRC UZDIGMX2.

Figura 70: Câmeras de vigilância geralmente possuem captura


no espectro visível e também no infravermelho.
Fonte: imagem gerada por IA.

132
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Em áreas de pesquisa e aplicações em segurança, também podemos utilizar


câmeras no espectro do infravermelho ou ultravioleta, que o olho humano não
consegue enxergar naturalmente. Na captura nesses espectros não visíveis é
realizado um tratamento adicionando cores para a exibição no espectro visível
por meio de telas, tornando, desta maneira, a informação inteligível a humanos
que as enxergam em monitores e telas convencionais.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 71: Utilizar captura e processamento no infravermelho habilita a
navegação por meio de ambientes sem iluminação, como o oceano durante a noite.
Fonte: Teledyne FLIR.

A câmera infravermelho permite a captura de imagens térmicas, auxiliando


no período noturno e também em regiões lagos, oceanos, florestas e matas,
onde a assinatura térmica humana cria um destaque sobre a paisagem (Szeliski,
2022). e o código CRC UZDIGMX2.

Figura 72: Imagem termográfica (espectro infravermelho).


Fonte: Teledyne FLIR.

133
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Já a captura em ultravioleta nos permite observar maiores detalhes em


imagens durante o dia, isso porque o ultravioleta está além do espectro visível.
Estima-se que pouco menos de 10% da emissão espectral solar esteja contido no
espectro ultravioleta (Corrêa, 2015), portanto observar essa parte do espectro
aumenta o nível detalhes na captura de imagens.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Porém, para realizar a captura no espectro ultravioleta, as câmeras precisam
passar por adaptação, visto que o vidro comum absorve grande parte da luz
ultravioleta, principalmente pelo fato do vidro conter impurezas como sódio e
ferro em sua composição. Como as lentes que equipam o conjunto óptico das
câmeras são produzidos com vidro comum, grande parte da informação é
perdida. Para contornar esse efeito, câmeras de captura no ultravioleta utilizam
vidro puro, utilizando sílica pura para a sua fabricação, tornando esses
equipamentos mais caros e raros de serem encontrados no mercado.

e o código CRC UZDIGMX2.

Figura 73: Acima, uma imagem capturada com espectro ultravioleta. Abaixo, a mesma
captura por meio do vidro de uma janela.
Fonte: Teledyne Lumenera.

134
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A Visão Computacional está em constante evolução no mercado, recebendo


grandes aportes financeiros não apenas por parte de grandes empresas, mas
também financiamento destinado startups, impulsionando a pesquisa e a
aplicação em reconhecimento de objetos e cenas para a prevenção de crimes,
fraudes (Russel e Norvig, 2022) e demais aplicações de segurança.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Em atividades comerciais, sistemas de reconhecimento de objetos permitem
checkouts automáticos em lojas ou a verificação contra fraudes em guichês de
autoatendimento, como hoje encontramos em alguns supermercados aqui no
Brasil e em lojas no exterior. Um sistema simples, geralmente instalado sobre os
caixas de supermercados, realiza a captura de uma câmera, sendo utilizado para
verificar se houve desvio, erro ou furto de uma mercadoria.

Há sistemas completamente autônomos com o uso de Visão Computacional


combinado com Inteligência Artificial como é o caso de algumas lojas da rede
Decathlon presentes no Brasil e das lojas da rede Amazon Go em algumas
cidades dos Estados Unidos da América. Neste caso, o cliente realiza a entrada
na loja a partir de um QR code gerado no aplicativo de celular, realiza a compra,
colocando os itens da prateleira em sua sacola, realizando a saída da loja. O
sistema automaticamente rastreia o que foi retirado da prateleira pelo cliente,
insere em seu carrinho de compras virtual e ao sair da loja, debitando o valor da
compra de sua carteira de dinheiro ou cartão de crédito cadastrado no e o código CRC UZDIGMX2.

aplicativo, facilitando o processo de compra, checkout e pagamento, além de


evitar fraudes e furto de itens no supermercado.

Figura 74: Rede de lojas que utiliza Visão Computacional


para automatizar completamente a experiência de compras.
Fonte: Amazon.

135
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Outra aplicação na área de segurança é o reconhecimento óptico de


caracteres ou OCR (Optical Character Recognition) que pode reconhecer letras
tipográficas, de bastão ou caligráficas, transformando informação analógica em
digital. Este tópico será abordado mais à frente neste capítulo.

Em resumo, neste campo, interessa-nos a análise caligráfica para fins

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
periciais ou ainda os leitores automáticos de placa (Automatic Number Plate
Recognition em inglês, ou apenas ANPR) que permitem o monitoramento
contínuo de vias públicas e privadas (Szeliski, 2022), por exemplo, os sistemas de
inteligência policial que utilizam o LAP (Leitor Automático de Placa) para abordar
carros suspeitos ou com registro de sinistro, débito de impostos, furto ou roubo.

Pórticos instalados em rodovias, nas entradas das cidades e em vias


principais monitoram 24 horas o fluxo de veículos, reconhecendo
automaticamente as placas dos veículos que transitam naquele ponto (Russel e
Norvig, 2022).

A partir da aquisição da imagem, são extraídos os caracteres que compõem


aquela placa e comparados com o banco de dados de registro e também de
ocorrências, desta forma, se alguma anomalia é detectada, um alerta é gerado e
aquele veículo passa a ser acompanhado por autoridades humanas que
localizam e informam as equipes policiais que procederão com o cerco visando a
e o código CRC UZDIGMX2.
captura deste veículo e seus ocupantes.

ABC 0D12
NORMAL

Figura 75: Leitores Automático de Placas aumentam a segurança nas


cidades e também nas rodovias.
Fonte: imagem gerada por IA.
136
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.1.4.3. Reconhecimento facial e


biometria
Dentro da Visão Computacional há dois campos que se preocupam com a
identificação de pessoas a partir de dados praticamente únicos, intrinsecamente

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
ligados à nossa natureza humana.

No primeiro campo, o de reconhecimento facial, utilizam-se técnicas de


Visão Computacional para identificar pessoas por suas características faciais
(Szeliski, 2022), além de realizar a detecção de fadiga e emoções.

Enquanto que no segundo campo, o da a biometria, temos a capacidade de


identificar pessoas por suas características físicas, como impressões digitais
(Szeliski, 2022), íris ou voz.

Neste capítulo, será abordado o reconhecimento facial, com reconhecimento


de emoções, além do reconhecimento de voz, com um sólido embasamento,
atividades para aplicação do conceito.

e o código CRC UZDIGMX2.

Figura 76: A papiloscopia é o estudo da identificação humana pelas


impressões digitais, também conhecidas por papilas dérmicas.
Fonte: imagem gerada por IA.
137
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Quando a Visão Computacional é aplicada para biometria, podemos


distinguir pessoas a partir da análise dessas características que incluem pontos
faciais, como o nariz, olhos e boca, até características mais sutis, como a forma
do rosto ou a distância entre os olhos (Szeliski, 2022). Uma vez que essas
características faciais são extraídas, elas podem ser comparadas a um banco de
dados de características faciais conhecidas, chegando a uma correlação entre

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
uma pessoa previamente cadastrada e a pessoa da imagem sob análise.

É dessa forma que sistemas de segurança em ruas, avenidas, aeroportos,


entre outros locais públicos, detectam pessoas desaparecidas, suspeitas e até
foragidas da polícia. Se as características faciais forem semelhantes o suficiente,
o sistema de reconhecimento facial concluirá que a pessoa na imagem ou vídeo
é a mesma pessoa no banco de dados (Russel e Norvig, 2022), alertando o
responsável pelo sistema ou autoridade competente.

Outra tecnologia, famosa pelos filmes de ação e ficção, é o escaneamento de


íris, possibilitando a distinção de indivíduos. Essa tecnologia é muito utilizada
para o controle de acesso biométrico, assim como a biometria por impressão
digital e também voz (Russel e Norvig, 2022).

e o código CRC UZDIGMX2.

Figura 77: Scanner biométrico de íris.


Fonte: Wikimedia Commons.

138
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Na área de automação predial, nos deparamos com o reconhecimento facial


biométrico para autenticar pessoas (Russel e Norvig, 2022), permitindo o acesso
a áreas internas de residências, edifícios e empresas ou áreas de circulação
restrita, como ocorre em hospitais, centros de pesquisa e indústrias.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 78: Sensor biométrico de impressão digital para controle de acesso.
Fonte: Wikimedia Commons.

Em marketing e áreas de monitoramento do consumo e da reação humana,


a Visão Computacional pode ser utilizada para guiar o desenvolvimento de uma
campanha a partir das reações do público, auxiliando na análise de
comportamento do consumidor.

Por exemplo, em campanhas políticas (Kissinger et al., 2023), o


reconhecimento facial pode mostrar a quais discursos um determinado público
está mais receptivo, fornecendo assim informações estratégicas para os
e o código CRC UZDIGMX2.
candidatos que podem, em tempo real, alterar o rumo de suas ações ao
detectarem sinais de repulsa por parte do eleitorado.

Figura 79: Visão Computacional aplicada para aferição da reação


de um público a um determinado discurso.
Fonte: imagem gerada por IA.
139
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.1.4.4. Visão Computacional em


medicina e diagnóstico
No cenário médico, a Visão Computacional permite que sejam realizados
diagnósticos precisos (Russel e Norvig, 2022) a partir da classificação e análise

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
de um grande conjunto de dados (dataset) anteriores de diagnósticos.

Por exemplo, na área de oncologia, sinais de tumores podem ser


identificados a partir da Visão Computacional em seus primeiros estágios,
encaminhando o paciente para um tratamento precoce, melhorando a
expectativa de vida e a taxa de sucesso do tratamento contra o câncer. Estudo
apresentado recentemente acerca da detecção de tumores cerebrais,
demonstram uma precisão média (mAP) de 97,6% (Selcuk e Serif, 2023).

e o código CRC UZDIGMX2.

Figura 80: Representação artística criada de uma imagem de ressonância magnética.


Fonte: imagem gerada por IA.

140
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Continuando no campo de aplicações da Visão Computacional na área


médica, pesquisas recentes tratam da aplicação da Visão Computacional para a
detecção e diagnóstico de retinopatia diabética por meio do processamento de
imagens do fundo do olho, atingindo dessa forma a precisão comparável a dos
profissionais médicos que realizam o diagnóstico nessa área, equivalente a
índices entre 90% e 95% na precisão (Abini e Priya, 2023).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
A aplicação consiste no uso de processamento de imagens para localizar
características como manchas, indicativas de sangramento ou exsudato na
retina, microaneurismas (pequenas dilatações dos vasos sanguíneos na retina) e
edema macular, caracterizado pelo acúmulo de líquido na mácula, região central
da retina, capaz de causar perda de visão.

Essa abordagem inovadora envolve o emprego de técnicas de Aprendizado


Profundo de redes neurais, treinando estes modelos para identificar a
retinopatia diabética em imagens do fundo do olho. Durante a etapa de
treinamento, conjuntos de dados contendo imagens com e sem retinopatia
diabética, promovendo a classificação das imagens nesses dois grupos, criando
um padrão reconhecimento mais preciso da condição.

e o código CRC UZDIGMX2.

Figura 81: Imagem de fundo de olho apresentando sinais comuns à retinopatia diabética.
Fonte: Wikimedia Commons.

141
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Por fim, o registro de um grande número de imagens usando ressonância


magnética funcional, extraindo informações emocionais faciais da atividade do
córtex visual humano, localizado no lobo occipital, na parte de trás do cérebro.

Por meio de Aprendizado de Máquina, imagens diagnósticas permite o


mapeamento cerebral antes e durante a execução de tarefas cognitivas ou de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
entretenimento. A pesquisa de neuroimagem no córtex visual concentra-se
principalmente na decodificação da semântica dos estímulos visuais pois ainda
não está claro como o córtex visual pode representar a informação emocional
nas imagens (Yang et al., 2019).

Estes estudos fornecem aos médicos e pesquisadores informações sobre o


funcionamento das atividades cerebrais e possíveis diagnósticos, bem como
sobre o uso de fármacos mais adequados para a supressão ou estimulação de
regiões no cérebro afetadas por acidentes ou doenças degenerativas.

e o código CRC UZDIGMX2.

Figura 82: Imagem de ressonância magnética funcional apresentando a concentração


sanguínea na área do córtex visual de um paciente ao apresentar imagens de rostos à ele.
Fonte: Wikimedia Commons.

142
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.1.4.5. Aplicações em veículos


autônomos e drones
Veículos autônomos capazes de auto locomoção dentro das cidades são
dotados de sistema de Visão Computacional junto a tecnologias de detecção e

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
imageamento (Szeliski, 2022) como LIDAR (Light Detection and Ranging), RADAR
(Radio Detection and Ranging) e SONAR (Sound Navigation and Ranging).

Esse conjunto de informações capacita o hardware do veículo a navegar,


prever cenários e tomar decisões planejando rotas e evitando obstáculos e
situações perigosas durante a sua locomoção.

Temos a aplicação da Visão Computacional também para segurança


automotiva (Russel e Norvig, 2022), onde câmeras instaladas no exterior do
veículo processam dimensionalmente informações relativas à vagas de
estacionamento, presença de pessoas e objetos em “pontos cegos” de um
veículo. Já as câmeras internas do veículo podem fornecer o estado de atenção
de um motorista, detectando distrações e fadiga, evitando acidentes de trânsito.

e o código CRC UZDIGMX2.

Figura 83: Veículo autônomo da empresa Uber em teste.


Fonte: Wikimedia Commons.

143
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Na construção civil e também nas áreas de restauração e manutenção de


prédios, sejam eles históricos como castelos ou funcionais como usinas de
energia, o mapeamento por Visão Computacional (Szeliski, 2022) por meio de
fotogrametria obtida por drones colabora com técnicos e engenheiros.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 84: Inspeção de torre de telefonia celular com drone equipado de LIDAR e Visão Computacional.
Fonte: Parrot Drone.

Com a reconstrução tridimensional dos mesmos em modelos 3D para


computador, possibilita-se a verificação de falhas estruturais (Szeliski, 2022), a
realização de previsão de recursos e custos para a manutenção ou reparação
dessas estruturas, bem como serviços de vistoria, garantindo a qualidade da
estrutura como ocorre em torres com pás eólicas para a geração de energia
elétrica.

e o código CRC UZDIGMX2.

Figura 85: Inspeção de estruturas a partir de drones autônomos


dotados de Visão Computacional.
Fonte: Yang Zhou Jiuhong Xiao.

144
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.1.4.6. Visão Computacional em robótica


Vamos agora para outro setor cuja aplicação da Visão Computacional
encontra aplicações, concentrando grandes somas de investimento para o
desenvolvimento de novas técnicas e aplicações.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Numa indústria, se uma câmera pode identificar objetos defeituosos na linha
de produção e removê-los da linha antes que sejam embalados, enviando-os
para reparo ou apenas descartando-os, estamos nos referindo a um hardware
de Visão Computacional (Russel e Norvig, 2022), os mesmos são dotados com
sistemas de Inteligência Artificial, permitindo o embarque direto na câmera
(hardware) de detecção.

Nas indústrias, a inspeção realizada pelo setor de qualidade pode ser feita a
partir de câmeras e Visão Computacional (Szeliski, 2022), garantindo a qualidade
dos produtos e a manutenção de elevados padrões para as grandes marcas.

Câmeras, no espectro visível ou até nos raios X (Szeliski, 2022), são


empregadas para a verificação do cumprimento às normas de tolerância
dimensional como na indústria automotiva e aeronáutica.

e o código CRC UZDIGMX2.

Figura 86: Câmeras de inspeção visual utilizando Visão Computacional podem verificar
a qualidade na montagem das componentes de placas de circuito impresso.
Fonte: Cognex.
145
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Podemos listar exemplos como na indústria de bebidas ou eletrônica, bem


como em manufatura avançada, em que câmeras mono ou estéreo realizam a
inspeção mecânica, apontando falhas em embalagens, rótulos e até circuitos
microeletrônicos.

Em logística, temos depósitos que utilizam a Visão Computacional na

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
peletização (Szeliski, 2022) e na classificação automática dos pacotes,
diferenciando destinos e agilizando o tratamento das encomendas.

Alguns sistemas também podem auxiliar na paletização, ou seja, no


agrupamento de itens iguais ou semelhantes, automatizando o trabalho manual
e aumentando a eficiência no processamento logístico, além de reduzir erros de
separação.

Por fim, já encontramos robôs como drones, AGVs (Automated Guided Vehicle,
em português Veículo Guiado Automaticamente) e AMRs (Autonomous Mobile
Robot, em português Robô Móvel Autônomo) que são capazes de navegar
dentro de armazéns (Szeliski, 2022), reconhecendo itens e seus locais de
armazenamento, realizar desde o transporte do mesmo para o despacho
multimodal como até a realização de inventário, registrando a quantidade de
itens armazenados.

e o código CRC UZDIGMX2.

Figura 87: AMRs utilizados em logística possuem sistema de posicionamento interno que
combinado com LIDAR, sensores de proximidade e choque operam de forma autônoma e segura.
Fonte: Jungheinrich.

146
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.2. Redes neurais e Deep Learning para a


Visão Computacional
Visto que já foram abordados a definição e o contexto histórico das redes
neurais no capítulo 2, dedicaremos esta seção a apresentar as aplicações das

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
redes neurais e do Aprendizado Profundo (Deep Learning) para a Visão
Computacional.

Atualmente, as redes neurais são aplicadas em diversas áreas da Visão


Computacional, destacamos streaming de imagens, modelagem 3D e
renderização (Szeliski, 2022).

Já, nas redes de Aprendizado Profundo, ocorre um processo similar ao que já


observamos em Aprendizado de Máquina (Szeliski, 2022), onde a otimização de
cada estágio deste processo e de seus parâmetros buscam minimizar o erro. As
atuais redes trabalham com feedforward, um tipo de arquitetura de rede neural
em que os dados não formam ciclos, eles atravessam a rede em apenas uma
direção. Essas redes são discriminativas e determinísticas, treinadas usando um
algoritmo de otimização conhecido como gradiente descendente como regra de
treinamento, também conhecido por retropropagação ou backpropagation.

e o código CRC UZDIGMX2.


A principal mudança quando comparamos o Aprendizado Profundo para
Visão Computacional contra as outras técnicas de Aprendizado de Máquina é
que evitamos a dependência de diversos estágios de pré-processamento que
extraiam recursos para os classificadores.

No início deste capítulo, buscamos apresentar as dificuldades de adaptação


na detecção de objetos utilizando Aprendizado de Máquina, exatamente por
causa dessa característica intrínseca do algoritmo, a sua dependência com esses
estágios de pré-processamento, algo que é superado quando utilizamos o
Aprendizado Profundo na Visão Computacional.
147
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.3. Algoritmos mais comuns em Visão


Computacional
Sucintamente, listamos aqui os algoritmos que atualmente são empregados
em Visão Computacional, muitos dos quais você conhecerá mais a frente neste

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
capítulo.

Começando pelas Redes Neurais Convolucionais (CNNs), cuja utilização em


em tarefas de reconhecimento de imagens, detecção de objetos e segmentação
de imagens, torna este tipo de algoritmo excelente para identificar rostos,
objetos e cenas. Aplicações em redes CNN tridimensionais já são capazes de
reconhecer e classificar ações humanas além de processamento volumétrico de
objetos (Szeliski, 2022).

O SIFT (Scale-Invariant Feature Transform) possibilita a detecção e descrição


de características em imagens, o termo invariante à escala refere-se a sua
capacidade de detectar essas características em imagens de diferentes
tamanhos (Russel e Norvig, 2022), sendo muito utilizado para a detecção de
faces em movimento. Temos também o SURF (Speeded Up Robust Features), uma
variação mais rápida do SIFT, utilizado para aplicações que necessitam de maior

e o código CRC UZDIGMX2.


eficiência como a navegação autônoma, como no caso dos veículos e robôs
autônomos. Além dos dois algoritmos anteriores, uma alternativa rápida
também muito empregada é o ORB (Oriented FAST and Rotated BRIEF), usado em
reconhecimento de objetos e emparelhamento de imagens, especialmente em
sistemas onde o tempo de processamento é crítico (visto que ele é mais rápido
que o SIFT e o SURF).

O filtro de Canny para detecção de bordas (Canny, 1986) é uma técnica


básica e poderosa para detectar bordas em imagens, há muito tempo útil em
várias aplicações, como reconhecimento de padrões e visão estéreo.

148
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Um algoritmo de destaque é o RANSAC (Random Sample Consensus) e suas


modificações (Szeliski, 2022) que podem deixá-lo com uma performance
superior. Eles são amplamente utilizados para estimar parâmetros de um
modelo matemático em dados com ruídos, principalmente em reconstrução 3D
ou alinhamento de imagens.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Outro algoritmo clássico é a transformada de Hough (em homenagem a seu
inventor), utilizada para detecção de formas geométricas, como linhas e círculos
(Szeliski, 2022), em aplicações como a análise de tráfego por meio de câmeras de
monitoramento.

Em detecção de faces, temor um algoritmo muito utilizado, a detecção de


características Haar (ou Haar Cascades), em homenagem à matemático húngaro
Alfred Haar, cuja abordagem se dará mais a frente desta obra.

Entre as arquiteturas mais modernas estão as GANs (Generative Adversarial


Networks), criadas por Goodfellow et al em 2014. Tratam-se de redes neurais
generativas adversárias, ou seja, duas redes neurais que competem entre si
(Szeliski, 2022). A primeira rede rede é chamada de gerador, sendo responsável
por gerar dados artificiais, enquanto a segunda rede é chamada de
discriminador, ficando responsável por distinguir entre dados reais e dados
artificiais.
e o código CRC UZDIGMX2.

Temos o algoritmo de segmentação semântica e de instâncias como a Mask


R-CNN que realiza a compreensão detalhada de uma cena. Há ainda as Redes
Neurais Recorrentes (RNNs) e o Long Short-Term Memory (LSTM) para aplicações
em que se faz necessário a interpretação da temporalidade dos dados como em
sequências de vídeo (Szeliski, 2022).

Ainda existem outros algoritmos e modificações sobre os aqui expostos, que


estão em constante evolução e desenvolvimento. Por tratar-se de um campo
promissor, trabalhos nesta área são naturalmente inevitáveis e constantes.

149
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.4. Apresentando a plataforma Edge


Impulse
Iniciamos esta etapa com os primeiros passos na criação de uma conta
gratuita na plataforma de treinamento de Inteligência Artificial na nuvem

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
chamada Edge Impulse.

A Edge Impulse é uma plataforma de desenvolvimento que se concentra em


trazer Aprendizado de Máquina e Inteligência Artificial para dispositivos de
borda, conhecidos como edge devices, como microcontroladores (ou MCU,
acrônimo de MicroController Unit), sensores IoT (Internet of Things ou Internet das
Coisas) e pequenos computadores de placa única (SBC ou Single Board Computer)
como os Raspberry Pi.

e o código CRC UZDIGMX2.

Figura 88: Página inicial da plataforma Edge Impulse.


Para iniciar, você pode clicar em Get Started ou Login.
Fonte: adaptado de Edge Impulse.

150
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Para o nosso exemplo, visando a conceitualização do conhecimento e


promoção de um aprendizado hands on, necessitamos criar uma conta gratuita
na comunidade Edge Impulse. Vamos guiar você neste passo a passo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 89: Vamos criar uma conta pessoal e gratuita na comunidade Edge Impulse.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 90: Caso tenha escolhido Login, clique em Sign up


para criar sua conta na comunidade Edge Impulse.
Fonte: adaptado de Edge Impulse.

151
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A plataforma solicitará alguns dados para o cadastro, como nome completo,


nome de usuário, e-mail (pode ser o pessoal) e, opcionalmente, o seu título
profissional. O último campo solicita a criação de uma senha.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Nome próprio
Nome de usuário
E-mail

Senha

Figura 91: Preencha os dados solicitados pela plataforma Edge Impulse conforme indicação acima.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 92: Você receberá um e-mail de ativação da Edge Impulse em sua caixa de entrada.
Clique no link que a plataforma enviou para ativar a sua conta.
Fonte: adaptado de Edge Impulse.

152
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.3.5. Criando um assistente de voz com No


Code
Aproveitaremos o próprio tutorial de boas vindas da plataforma para realizar
os primeiros passos de um projeto na Edge Impulse.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 93: Assim que você confirma sua conta e realiza o primeiro acesso, a plataforma sugere a criação do seu
primeiro projeto em 5 minutos. Clique em Let´s build your first model in 5 minutes! para prosseguir.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Palavra-chave

Figura 94: Na segunda etapa, definiremos um comando para chamar o nosso assistente de voz.
Neste exemplo, sugerimos a sentença: “Ola mundo”.
Fonte: adaptado de Edge Impulse.

153
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Você já deve ter notado que a plataforma está disponível no idioma inglês,
caso sinta-se melhor, você pode ativar o tradutor automático do navegador para
lhe ajudar na compreensão dos passos.

Nossas legendas, abaixo das figuras capturadas da tela, lhe ajudarão nesta
compreensão, listando as etapas necessárias para a conclusão do projeto,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
norteando o caminho desse primeiro aprendizado na plataforma.

Figura 95: Após inserir a sentença “Ola mundo” clique em Next, collect some data
para prosseguir com o treinamento.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 96: Clique em Record yourself saying “Ola mundo” for 38 seconds
para gravar sua sentença para o treinamento.
Fonte: adaptado de Edge Impulse.

154
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Ao trabalhar na aquisição de dados, sejam eles para o treinamento ou para o


teste, pela plataforma Edge Impulse nos navegadores, podemos nos deparar
com a solicitação de uso do microfone ou câmera, portanto, mensagem desse
tipo serão comuns ao longo do nosso exemplo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 97: Você será perguntado se deseja compartilhar o acesso ao seu microfone pela
plataforma Edge Impulse. Clique em Permitir para prosseguir com o uso do microfone.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 98: Diga “Ola mundo”, realizando pausas de 1 segundo entre cada sentença.
Esses dados serão utilizados no modelo de reconhecimento de voz que estamos criando.
Fonte: adaptado de Edge Impulse.

155
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Após a etapa de captura de áudio por meio das sentenças, a plataforma


iniciará o processamento com a separação das frases que utilizará para
treinamento e validação das etapas mais a frente do nosso exemplo.

Automaticamente a plataforma realiza a separação de cerca de 80% das


amostras para treinamento e os demais 20% para validação (teste) do nosso

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
modelo treinado.

Figura 99: Após a captura bem sucedida do comando de voz para treinamento,
clique em OK para prosseguir.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 100: Agora, inserimos ruído para diferenciar o comando de chamada do assistente voz
de outros ruído de fundo, para continuar clique em Next, adding other data.
Fonte: adaptado de Edge Impulse.

156
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Nesta etapa, a plataforma insere sentenças e ruídos aleatórios para o nosso


treinamento, de forma a diferenciar a sentença “Ola mundo” de outras
sentenças.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 101: A plataforma realizará a mistura do ruído de fundo com as suas sentenças de voz gravadas.
Para prosseguir, clique em Let´s mix in other keywords and background noise.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 102: Etapa de inserção de ruído finalizada, clique em OK para prosseguir.


Fonte: adaptado de Edge Impulse.

157
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Após a adição de ruído e sentenças aleatórias chega a etapa de definição das


características e da extração dos parâmetros para o treinamento do modelo que
utilizaremos. Na plataforma, esta etapa é chamada de impulse.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 103: Após a inserção dos dados e o processamento completo,
clique em Next, design an impulse para continuar.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 104: Depois da etapa de definição automática dos parâmetros para o


treinamento, clique em Next, spectrograms para prosseguir.
Fonte: adaptado de Edge Impulse.

158
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

As etapas seguintes envolvem a verificação dos dados brutos utilizando o


espectrograma e a geração de características a partir dos dados coletados.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 105: A análise do espectrograma (representação visual do sinal sonoro) é utilizada para a edição dos dados
brutos, excluindo partes que não são interessantes o treinamento. Para continuar clique em Next, generate features.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 106: Após a configuração dos parâmetros, a plataforma irá gerar as características de cada amostra
enviada para treinamento. Após esta etapa, clique em Next, train a neural network para continuar.
Fonte: adaptado de Edge Impulse.

159
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Finalizando o treinamento, já podemos realizar nossos primeiros testes.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 107: Na etapa de treinamento da rede neural é onde ocorre a classificação da sentença “Ola mundo”.
Após esta etapa, clique em Next, take the model for a spin para prosseguir com o exemplo.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 108: Para testar o modelo, você deve permitir novamente o acesso ao microfone,
para isso clique em Give access to the microfone.
Fonte: adaptado de Edge Impulse.

160
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Realize o teste do seu modelo, note que ao falar “Ola mundo”, a plataforma
informa a correspondência da sentença pronunciada com o modelo gerado.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Sentenças
Ruído Ola mundo desconhecidas

Figura 109: Ruídos e sentenças desconhecidas aparecem em NOISE e UNKNOWN, respectivamente. Quando o
modelo detecta a sentença “Ola mundo”, a correspondência próxima a 1,00 surge na coluna central (OLA_MUNDO).
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 110: Para finalizar a etapa de testes, clique em Next, check out next steps.
Fonte: adaptado de Edge Impulse.

161
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Parabéns! Você concluiu seu primeiro projeto No Code utilizando redes


neurais para o treinamento de um modelo.

Encerrar

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Acessar a documentação

Compartilhar

Figura 111: A plataforma apresenta os principais dados do seu projeto, como o tempo de inferência, a quantidade
de memória RAM e Flash a ser utilizada caso venha a embarcar este modelo em um microcontrolador Cortex M4F.
Fonte: adaptado de Edge Impulse.

Acurácia do modelo

e o código CRC UZDIGMX2.

Figura 112: Entre as informações mais importantes de um projeto estão


a matriz de confusão e a acurácia do modelo.
Fonte: adaptado de Edge Impulse.

162
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Neste momento, retorne ao Google Sala de Aula e, na aba


"Atividades", procure a seção intitulada "Etapa Conceitualizar".

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Nessa área você encontrará uma série de links com materiais
que foram criteriosamente escolhidos e disponibilizados. Trata-se
de recursos que têm por objetivo apresentar informações
adicionais e insights, permitindo que você amplie e enriqueça o seu
conhecimento acerca dos temas discutidos neste capítulo.

Este momento final do capítulo deve lhe proporcionar reflexões


críticas a respeito do conteúdo abordado, ajudando na
compreensão e fixação do conteúdo.

e o código CRC UZDIGMX2.

Figura 113: Neste exemplo, criamos um modelo similar ao utilizado pelos


assistentes de voz para ativar a detecção e ouvir as nossas solicitações.
Fonte: adaptado de Edge Impulse.

163
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.4. Consolidar
2.4.1. Estudo de caso
Chegamos na etapa onde podemos exercitar o conhecimento adquirido até

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
aqui! Note que esta não é uma atividade obrigatória e não consta do processo
de avaliação.

Aqui, sugerimos a prática da criação de um modelo de reconhecimento de


objetos, em nosso caso, um smartphone, utilizando a plataforma Edge Impulse.

A plataforma Edge Impulse, no momento em que escrevemos este material,


possui a capacidade de realizar o treinamento de modelos para a detecção de
voz (exemplo utilizado dentro da etapa Conceitualizar), modelo para a detecção
de gestos e também modelos de reconhecimento de objetos em sequências de
vídeo ou em imagens.

Vamos apresentar os passos para a realização desta atividade, a partir dela,


você pode realizar outros treinamentos de modelo para a aplicação que desejar.

e o código CRC UZDIGMX2.

B
A

Figura 114: Para criar um novo projeto, você de retornar à dashboard inicial da Edge Impulse. Para isso,
clique em Projects (B) no menu suspenso da parte superior onde encontram-se as iniciais do seu nome (A).
Fonte: adaptado de Edge Impulse.

164
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O primeiro passo é definir o nome e as opções de privacidade do projeto.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 115: Aqui, sugerimos o nome “Reconhecimento de objetos”, opção de projeto pessoal (Personal)
e privacidade no projeto (Private). Em seguida, clique em Create new project para continuar.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 116: Descendo a página inicial do projeto, você encontrará tutoriais que irão lhe ajudar nas
etapas de configuração para aquisição e treinamento do modelo, recomenda-se a leitura.
Fonte: adaptado de Edge Impulse.

165
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Aqui, iniciamos a coleta de dados. Para isso, utilizaremos a câmera.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 117: Para realizar a coleta de dados para o projeto, clique em Collect new data. Você também pode incluir
outros dispositivos como SBCs e MCUs para realizar esta etapa, caso tenha eles à disposição.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 118: Para utilizar a câmera do seu computador, clique em Connect to your computer.
A plataforma realizará a requisição para uso do seu dispositivo.
Fonte: adaptado de Edge Impulse.

166
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Após a conexão da plataforma Edge Impulse com o seu computador,


seguiremos para a etapa de permissão de acesso à câmera.

Note que você precisa ter um smartphone para realizar a captura dessas
imagens para treinamento do modelo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 119: Após a conexão do computador ao projeto, clique em Collect images? para iniciar a aquisição
utilizando a câmera do computador. Note que será aberta uma nova aba no seu navegador.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 120: Clique em Give access to the camera para prosseguir à etapa de aquisição de imagens.
Caso o navegador solicite a sua permissão para utilização da câmera, clique em Permitir.
Fonte: adaptado de Edge Impulse.

167
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Sugerimos a coleta de 100 imagens, a plataforma irá separar


automaticamente as imagens que serão utilizadas para treino e as de teste.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 121: Para realizar a aquisição da imagem, clique em Capture.
A cada captura, a contagem de imagens capturas é atualizada.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 122: Capture imagens em diferentes posições do smartphone, assim o seu modelo ficará mais preciso. Ao
atingir 100 imagens capturadas, você pode fechar esta aba de captura (clique no X da aba aberta no navegador).
Fonte: adaptado de Edge Impulse.

168
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Seguimos para a etapa de definição dos parâmetros para o treinamento.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 123: A plataforma confirmará se estamos criando um modelo para detecção de objetos,
neste caso clique em Yes para prosseguir.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 124: Após a inserção das imagens (dados brutos), clicaremos em Labeling queue
para criar os rótulos dos objetos identificados na imagem, em nosso exemplo, o smartphone.
Fonte: adaptado de Edge Impulse.

169
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Agora, identificaremos o smartphone em nossas fotos para o treinamento.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 125: Com o mouse ou touchpad, selecione o smartphone na imagem.
Você terá uma caixa retangular à disposição para isso.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 126: Ao realizar a seleção da área onde está o smartphone pela primeira vez, a plataforma perguntará
qual o nome do rótulo para este objeto. Você pode usar celular ou smartphone, ao seu critério.
Fonte: adaptado de Edge Impulse.

170
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A contagem de itens restantes é atualizada a cada confirmação de rótulo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 127: Note que na primeira foro a ser classificada, a plataforma irá indicar a quantidade de fotos restantes
para a classificação. Após inserir o rótulo e sua área em torno do objeto a ser classificado clique em Save labels.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 128: Deixar a opção Track objects between frames irá lhe ajudar mantendo o objeto rastreado
entre as imagens obtidas, diminuindo parte do trabalho manual de rotulação.
Fonte: adaptado de Edge Impulse.

171
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

É necessária a aquisição de imagens do smartphone em diversas posições.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 129: Lembre-se de realizar rotações no smartphone para que a captura de imagens do aparelho
seja realizada na maior quantidade de posições possíveis, melhorando o nosso modelo.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 130: A área de seleção do rótulo deve conter integralmente o smartphone,


para que o modelo seja treinado corretamente.
Fonte: adaptado de Edge Impulse.

172
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Finalizamos assim a etapa de rotulação do objeto dentro das imagens de


treinamento. Podemos prosseguir para a próxima etapa.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 131: A última imagem para rotular será indicada na parte superior como 1 items left.
Ao concluir, clique em Save labels para finalizar a etapa de rotulação.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 132: Ao terminar a rotulação, você terá informação na parte superior o índice zero em Labeling queue (0) e
próximo ao centro da página em No items in queue. Para prosseguir na próxima etapa, clique em Create impulse.
Fonte: adaptado de Edge Impulse.

173
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Agora vamos definir os parâmetros para realizar o treinamento de nosso


modelo de reconhecimento de objeto.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 133: Clique em Add a processing block para selecionar o tipo de modelo que estamos treinando.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 134: Selecione Image e clique em Add para utilizar o bloco de processamento para imagens.
Fonte: adaptado de Edge Impulse.

174
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Finalizando a etapa de criação do impulse com o bloco de treinamento.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 135: Clique em Add a learning block, para selecionar o bloco de
treinamento (modelo de rede) que utilizaremos.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 136: Escolha a opção Object Detection (Images) de autoria da Edge Impulse
e clique em Add para utilizar este bloco de treinamento.
Fonte: adaptado de Edge Impulse.

175
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Clique em Save Impulse para escolher os parâmetros para a classificação.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 137: Depois de clicar em Save Impulse, você receberá a confirmação que os blocos de processamento e
de treinamento foram gravados com sucesso. Clique em Image no menu à esquerda para prosseguir.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 138: Para configurar os parâmetros de treinamento, primeiro selecione Grayscale (escala de cinza).
Em seguida, clique em Save parameters para prosseguir.
Fonte: adaptado de Edge Impulse.

176
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A etapa de geração de características é essencial para o treinamento.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 139: Clique em Generate features para iniciar iniciar
a geração das características para o treinamento.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 140: Após a conclusão do trabalho de geração das características, clique


em Object detection, no menu à esquerda para prosseguir à próxima etapa.
Fonte: adaptado de Edge Impulse.

177
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Ajustando as configurações importantes para a realização do treinamento.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 141: A plataforma realiza uma sugestão de 60 ciclos de treinamento (Number of training cycles).
Não altere a taxa de aprendizado (Learning rate), mantendo-a em 0.001.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 142: Para iniciar os ciclos de treinamento clique em Start training. Essa etapa é a
mais demorada do processo, por favor, aguarde a conclusão para continuar.
Fonte: adaptado de Edge Impulse.

178
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A última etapa envolve o treinamento do nosso modelo de reconhecimento.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 143: O treinamento encerra no ciclo 59 pois iniciou sua contagem no 0.
Caso utilize 100 ciclos de treinamento, a conclusão ocorrerá no ciclo 99.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 144: A acurácia do treinamento é exibida no F1 SCORE, em nosso caso, 100%. Esse parâmetro também é
conhecido como mAP (mean Average Precision), uma métrica usada para avaliar a qualidade do modelo treinado.
Para continuar, clique em Live classification no menu à esquerda. Fonte: adaptado de Edge Impulse.

179
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Vamos testar nosso modelo? Para isso, necessitamos novamente do acesso à


câmera do computador. Estamos chegando ao final do nosso exemplo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 145: Para abrir a câmera e testar o nosso modelo, clique sobre o ícone de
microchip indicado pela seta laranja na imagem acima.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 146: Clique agora em Connect to your computer para


acessar a câmera do seu computador.
Fonte: adaptado de Edge Impulse.

180
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Ao conectar o computador e solicitar o microfone ou câmera, há sempre dois


modos. O modo de aquisição de imagens ou sons para o treinamento do
modelo ou o modo de classificação em tempo real, para validação do modelo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 147: Na nova aba aberta, primeiro mudaremos para o modo de classificação.
Para isso, clique em Switch to classification mode.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 148: Em seguida, permita o acesso à câmera do computador.


Fonte: adaptado de Edge Impulse.

181
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Finalizado o treinamento, experimente testar o seu modelo colocando o


smartphone em várias posições, se possível inclua outro aparelho ou troque de
modelo para testar se o modelo o reconhece também.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 149: Reconhecimento do smartphone utilizado no treinamento.
Fonte: adaptado de Edge Impulse.

e o código CRC UZDIGMX2.

Figura 150: Teste com dois smartphones, um utilizado no modelo e outro aparelho de marca e modelo diferente.
Note que o modelo reconheceu corretamente os dois aparelhos.
Fonte: adaptado de Edge Impulse.

182
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.4.2. Solução final do estudo de caso

Inicialmente, releia com atenção o cenário do estudo de caso da

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
"Etapa Inspirar" e as suas anotações e conclusões iniciais. Na
sequência, você deverá promover o aprimoramento da solução
anteriormente apresentada usando os conhecimentos que obteve
ao longo do capítulo e do conteúdo adicional.

Lembre-se de que este aprimoramento não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos que foram estudados
e a testar novos cenários e hipóteses, validando os seus resultados
práticos.

Agora, aproximando-se da etapa final do capítulo de Introdução à Visão


Computacional, propomos que utilize a plataforma Edge Impulse para criar um
modelo de reconhecimento de objeto utilizando No Code.
e o código CRC UZDIGMX2.

O ponto de partida é revisitar o arquivo no qual você fez o planejamento da


aplicação que você registrou na "Etapa Inspirar".

Em seguida, escolha um objeto que deseja identificar, como realizamos com


o smartphone. Verifique possíveis aprimoramentos no seu planejamento e, se
for preciso, reescreva-o.

Planejar o que será feito é essencial para que o desenvolvimento de seu


projeto seja mais assertivo. Teste o modelo criado, procure pontos fortes na
detecção e pontos fracos em que o modelo não funciona corretamente.

183
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Arquive o refinamento do estudo de caso no formulário disponível


no Google Sala de Aula, na aba “Etapa Consolidar”.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.

184
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2.5. Avaliar
Para concluir este capítulo, você deverá realizar a “Etapa Avaliar”, que
consiste no preenchimento do Questionário de Avaliação disponível no Google
Sala de Aula e que tem como objetivo permitir que você acompanhe

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
individualmente a evolução do seu aprendizado.

Não será atribuída nota para a atividade, mas a sua entrega é obrigatória,
pois, acima de tudo, servirá como insumo para uma análise pessoal e também
para a realização de autocrítica a respeito dos pontos compreendidos e daqueles
que exigem maior dedicação.

O formulário salvará as respostas de forma automática e, por isso, pode ser


iniciado em um momento e finalizado posteriormente. Ele também será
disponibilizado a você, para que faça consultas futuras. Além dos materiais
didáticos fornecidos, você poderá usar quaisquer outros recursos e referências.
Todavia, atente para o fato de que poderá respondê-lo somente uma vez.

O registro e envio das respostas é individual e deve ser realizado dentro do


prazo estipulado para a realização do curso.

e o código CRC UZDIGMX2.

185
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Referências
ABINI, M. A.; PRIYA, S. Sridevi Sathya, Detection and Classification of Diabetic
Retinopathy Using Pretrained Deep Neural Networks. International
Conference on Innovations in Engineering and Technology (ICIET),
Muvattupuzha, Índia, 2023, pp.1-7.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
BENGIO, Yoshua; COURVILLE, Aaron; VINCENT, Pascal. Representation
Learning: A Review and New Perspectives. IEEE Transactions on Pattern
Analysis and Machine Intelligence, Vol. 35, No. 8, Ago. 2013, pp.1798-1828.

CANNY, John. A Computational Approach to Edge Detection. IEEE Transactions


on Pattern Analysis and Machine Intelligence, Vol. PAMI-8, No. 6, Nov. 1986,
pp.679-698.

CHEN, Wei et al. Deep Learning for Instance Retrieval: A Survey. IEEE
Transactions on Pattern Analysis and Machine Intelligence, Vol. 45, No. 6, Jun.
2022, pp.7270-7292.

CORRÊA, Marcelo de Paula. Solar ultraviolet radiation: properties,


characteristics and amounts observed in Brazil and South America.
Continuing Medical Education. Anais Brasileiros de Dermatologia, Vol. 90, No. 3,
2015, pp.297-313.

DAVIES, E. R. Machine Vision: Theory, Algorithms, Practicalities. Morgan


Kaufmann, Massachusetts, 2005.

e o código CRC UZDIGMX2.


FORSYTH, David A.; PONCE, Jean. Computer Vision: A Modern Approach.
Pearson, Harlow, 2015.

GRIEBEL, Ulrike. Color Vision in Marine Mammals: A Review. ResearchGate,


Jan, 2002. Disponível em: https://www.researchgate.net/publication/228484862 .
Acesso em: 15 jan. 2024.

GOODFELLOW, Ian J. et al. Generative Adversarial Networks. Arxiv, Jun, 2014.


Disponível em: https://arxiv.org/pdf/1406.2661.pdf . Acesso em: 20 jan. 2024.

KISSINGER, Henry A.; SCHMIDT, Eric; HUTTENLOCHER, Daniel. A Era da IA e


nosso futuro como humanos. Alta Books, Rio de Janeiro, 2023.

186
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

LIAN, Naixiang; CHANG, Lanlan; TAN, Yap-Peng. Improved color filter array
demosaicking by accurate luminance estimation. IEEE International
Conference on Image Processing, 2005.

MARR, David. Vision: A Computational Investigation into the Human


Representation and Processing of Visual Information. The MIT Press,
Londres, 2010.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
MINSKY, Marvin. Steps Toward Artificial Intelligence. McGraw-Hill, Nova
Iorque, 1961.

RUSSEL, Stuart; NORVIG, Peter. Artificial Intelligence: A Modern Approach.


Prentice Hall, Nova Jersey, 2022.

SELCUK, Burcu; SERIF, Tacha. Brain Tumor Detection and Localization with
YOLOv8. 8th International Conference on Computer Science and Engineering
(UBMK), Burdur, Turquia. 2023, pp.477-481.

SZELISKI, Richard. Computer Vision: Algorithms and Applications. Springer,


Nova Iorque, 2022.

YANG, Qiang et al. Decoding Facial Emotion from Activity in The Human
Visual Cortex using Functional Magnetic Resonance Imaging. International
Conference on Medical Imaging Physics and Engineering (ICMIPE), Shenzhen,
China, 2019, pp.1-5.

YOU, Haoxuan et al. Ferret: Refer and Ground anything anywhere any
granularity. Arxiv, Out, 2023. Disponível em:
https://arxiv.org/pdf/2310.07704.pdf . Acesso em: 17 jan. 2024.
e o código CRC UZDIGMX2.

187
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Capítulo 3:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Python para
desenvolvimento de
Inteligência Artificial:
do básico às aplicações
avançadas
e o código CRC UZDIGMX2.

Autoras
Adriana da Silva Nogueira

Larissa de Oliveira Figueira


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.1. Introdução
Desejamos boas vindas ao capítulo Python para Desenvolvimento de
Inteligência Artificial: do básico às aplicações avançadas! Este conteúdo foi
desenvolvido para ajudar no aprendizado na linguagem de programação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Python, iniciando com os fundamentos e avançando até algumas das técnicas
utilizadas em aplicações de IA.

O capítulo inicia com uma introdução ao Python, explorando os elementos


básicos e a aplicabilidade prática da linguagem, o que é essencial para
estabelecer uma base sólida antes de nos aprofundarmos em conceitos mais
complexos. A seguir, o conteúdo se concentra nos comandos essenciais, que
são cruciais para qualquer programador, seguidos por uma exploração aos
tipos de dados, variáveis, constantes e comandos de entrada - todos elementos
fundamentais para a manipulação de dados.

Avançará para o controle de fluxo, uma habilidade chave para desenvolver


lógicas complexas em seus códigos, além de conceitos relacionados a funções e
modularidade, conhecimentos indispensáveis para manter seu código
organizado e eficiente.

Com um foco especial em bibliotecas específicas utilizadas em IA, e o código CRC UZDIGMX2.

fornecemos uma base sólida para aplicações mais avançados e exploramos as


estruturas de dados, essenciais para o tratamento eficaz e eficiente de grandes
conjuntos de dados em IA.

Abordamos, ainda, manipulação de arquivos e strings, uma competência


fundamental para a gestão de dados e apresentamos ferramentas de
desenvolvimento como VSCode, PyCharm, Google Colab e Jupyter Notebook,
que permitem otimizar o fluxo de trabalho.

189
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Ao final deste capítulo, você terá não apenas compreendido os conceitos


fundamentais do Python, mas também terá adquirido habilidades práticas para
enfrentar desafios no campo da IA.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.

Figura 151: Analogia à linguagem Python.


Fonte: imagem gerada por IA.

190
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.2. Inspirar
Você já ouviu falar sobre a linguagem de programação Python? Essa
linguagem tem ganhado destaque mundialmente, tornando-se a escolha de
muitos devido à sua versatilidade e eficiência. É notável como Python está se

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
tornando uma ferramenta essencial em diversas áreas, incluindo
desenvolvimento web, ciência de dados e Inteligência Artificial.

Diante dessa expansão tecnológica, algumas pessoas podem ter receios


sobre aprender uma nova linguagem de programação. No entanto, como
aponta Silva (2022),

“[...] essas dúvidas frequentemente surgem por falta de familiaridade


com o campo. Muitos deixam de perceber o potencial que o domínio do
Python oferece, não só para o desenvolvimento profissional, mas também
para a compreensão de como a tecnologia molda nosso mundo.”

Com a crescente demanda por automação e inovação, o Python se torna


uma habilidade cada vez mais valiosa, abrindo diversas oportunidades.

Em uma recente entrevista à revista 'Tecnologia Hoje', Carlos Mendes

e o código CRC UZDIGMX2.


(2023), diretor de inovação da Tech Solutions, destacou: “no futuro, muitas
funções que hoje são manuais serão automatizadas por meio de linguagens como o
Python. Isso não significa a eliminação de empregos, mas a transformação deles.”.

E como se preparar profissionalmente para esse futuro tecnológico?


Mendes (2023) ressalta: “o diferencial estará na capacidade do profissional de se
adaptar, aprender continuamente e dominar ferramentas tecnológicas, como o
Python, para permanecer relevante no mercado”.

Por sua versatilidade e abrangência o Python pode ser utilizado em diversas


áreas. Uma das áreas que podemos destacar é o desenvolvimento web, no qual

191
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

a linguagem é frequentemente usada para desenvolver websites e aplicações


web por meio do uso de ferramentas disponibilizadas para facilitar o processo
de desenvolvimento.

Em Ciência de Dados e Análise de Dados, o Python torna-se uma escolha


popular devido a bibliotecas como Pandas, NumPy, que facilitam a manipulação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
de dados, análise estatística, e Machine Learning e que serão tratadas neste
capítulo. Embora não seja tão popular quanto outras linguagens, pode ser
usado em jogos, especialmente para scripting e prototipagem rápida. Pygame é
uma biblioteca popular para desenvolvimento de jogos.

Além disso, é uma linguagem útil para automação de redes, scripting de


servidores e administração de sistemas. Na área de análise financeira, pode ser
usado para análise de dados, algoritmos de trading automatizado, e
modelagem de risco.

Existe, ainda, diversos pacotes (bibliotecas) que permitem desenvolver


sistemas de Inteligência Artificial e Aprendizado de Máquina que serão tratados
neste e em outros capítulos deste material.
Resumindo, o objetivo principal deste capítulo é proporcionar uma
compreensão sólida e abrangente da linguagem de programação Python,

e o código CRC UZDIGMX2.


fornecendo as habilidades necessárias para desenvolver e implementar
aplicações variadas, com um enfoque especial nas áreas relacionadas à
Inteligência Artificial. O material visa construir uma base robusta em
programação, desde a instalação e configuração do ambiente de
desenvolvimento até conceitos avançados como manipulação de dados,
estruturas de dados e uso de bibliotecas específicas para IA.

192
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Antes de iniciarmos a "Etapa de Conceitualização" na qual


haverá a apresentação do conteúdo e a experimentação dos
conceitos trabalhados por meio de atividades práticas, entre no

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Google Sala de Aula, na aba "Etapa Inspirar", para acessar todos
os materiais disponibilizados, que visam a estimular sua reflexão e
iniciar a ambientação com o conteúdo deste capítulo.

Como última atividade desta etapa, prepare-se para trabalhar a


solução inicial do estudo de caso que será apresentado na
próxima seção.

A solução inicial que você elaborará não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos apresentados e a
entender como trabalhá-los de maneira prática.

e o código CRC UZDIGMX2.

193
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.2.1. Estudo de Caso

Este estudo de caso visa promover a reflexão acerca do uso do Python no


desenvolvimento de soluções para variados setores. A meta central é destacar a
flexibilidade desta linguagem e oferecer perspectivas para projetos vindouros.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Leia com atenção o cenário do estudo de caso e lembre-se: o
propósito desta atividade é promover uma reflexão inicial acerca do
assunto a ser discutido no cenário tendo por base somente os
conhecimentos de que você dispõe neste momento.

3.2.1.1. Cenário
A Facti, uma Instituição Científica e Tecnológica (ICT) privada reconhecida
por sua atuação no mercado de Tecnologias da Informação e Comunicação

e o código CRC UZDIGMX2.


(TICs), está em meio a uma fase de expansão. Com o objetivo de atender à
crescente demanda por soluções nos seus projetos de Pesquisa,
Desenvolvimento e Inovação (PD&I), a instituição está à procura de novos
talentos. Em particular, a Facti busca alguém com conhecimento em Python
para integrar a sua equipe de desenvolvedores.

Você, uma pessoa com interesse, paixão e ambição, recebeu a


oportunidade para se juntar à equipe da Facti, que, como parte do processo
seletivo e para demonstrar a amplitude de suas habilidades, propôs um desafio
estimulante: desenvolver uma aplicação em Python que não só mostre as suas

194
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

habilidades técnicas mas também,evidencie a sua capacidade de contribuir


significativamente para as aplicações em Inteligência Artificial, um aspecto
crucial no ciclo de desenvolvimento de software da ICT.

O sucesso nesta tarefa poderia significar não apenas uma posição na


equipe da Facti, mas também a chance de moldar o futuro das soluções

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
tecnológicas. Prepare-se para aprimorar suas competências em Python e
descobrir inovações e contribuições relevantes na área tecnológica.

Com base nas informações apresentadas, escreva uma proposta teórica


detalhada de uma aplicação que contemple os requisitos referentes ao
processo seletivo da Facti e que você considere interessante para ser
desenvolvido após o aprendizado do conteúdo deste capítulo. Esta proposta
não requer conhecimento técnico prévio, mas a organização de ideias, em um
esboço, que poderá se transformar em um projeto inovador.

Importante: coloque a sua resposta na atividade


"Apresentação da solução inicial", no Google Sala de Aula, em
um documento no formato de texto. Utilize este momento para
e o código CRC UZDIGMX2.
trabalhar as suas ideias iniciais com o máximo de detalhamento que
puder. Mais adiante, as suas anotações serão retomadas para o
refinamento da solução do estudo de caso.

195
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3. Conceitualizar
3.3.1. De onde vem a linguagem Python?
O Centro de Matemática e Ciência da Computação (CWI), situado na capital

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
da Holanda, Amsterdã, é o berço de diversas linguagens de programação. Foi a
partir de 1982, nas instalações do CWI, que os estudos iniciados culminaram no
desenvolvimento da linguagem Python. Em 1989, Guido van Rossum (Figura
152), programador e membro do projeto ABC, ao enfrentar dificuldades na
implementação de um programa em linguagem C, decidiu criar uma linguagem
de programação capaz de resolvê-las. Surgiu então a proposta que se tornaria a
linguagem Python.

A intenção era criar uma linguagem interpretada, com comandos de fácil


compreensão. Van Rossum considerava que os programas em C eram extensos
e de difícil entendimento, especialmente para programadores menos
experientes.

e o código CRC UZDIGMX2.

Figura 152: Guido van Rossum.


Fonte: Peter Adams Photo.

196
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Após criar a linguagem, surgiu o desafio de nomeá-la. Dentro do CWI,


existia um padrão de nomeação para projetos internos, relacionado à televisão
ou a programas televisivos. Assim, Van Rossum decidiu batizar a linguagem em
homenagem ao seu programa de humor favorito, o Monty Python’s Flying Circus,
dando-lhe o nome de Python. Apesar do símbolo ser uma serpente e
contrariando expectativas, o nome da linguagem não tem origem na serpente

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
píton, mas sim no programa de comédia.

Atualmente, a linguagem Python está na versão 3.12.1, lançada em 2023.


Os scripts em Python têm a extensão .py.

É uma das linguagens de programação mais populares do mundo, sendo


utilizada em uma ampla variedade de aplicações, incluindo ciência de dados,
Aprendizado de Máquina, Inteligência Artificial, web, desenvolvimento de
software e muito mais.

A Python Software Foundation é uma organização sem fins lucrativos que


coordena o desenvolvimento da linguagem.

3.3.1.1. Porque escolher o Python para


e o código CRC UZDIGMX2.

programar?
Existem várias razões pelas quais muitas pessoas escolhem Python como
sua linguagem de programação. Veja algumas das mais comuns:

● Sintaxe¹ clara e concisa: a sintaxe de Python é simples e fácil de ler, o que


facilita a aprendizagem, especialmente para iniciantes em programação.
¹A sintaxe de programação refere-se ao conjunto de regras que define a combinação de símbolos que são
considerados um programa válido em uma linguagem de programação. Em outras palavras, é a forma como as
instruções são escritas e organizadas para que o computador as entenda e execute.

197
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Versatilidade e aplicações diversas: Python é uma linguagem de


propósito geral, o que significa que pode ser utilizada em uma ampla
variedade de domínios, como desenvolvimento web, automação, ciência de
dados, Inteligência Artificial, Aprendizado de Máquina, automação de
tarefas, entre outros.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● Comunidade² ativa e suporte: Python tem uma comunidade enorme e
ativa. Isso significa que há uma vasta quantidade de recursos, bibliotecas³ e
módulos disponíveis. Além disso, é fácil encontrar suporte e soluções para
problemas comuns.

● Bibliotecas poderosas: Python possui uma rica coleção de bibliotecas e


frameworks que facilitam o desenvolvimento em diversas áreas. Por
exemplo, o Django e o Flask para desenvolvimento web, NumPy e Pandas
para manipulação de dados, TensorFlow e PyTorch para Aprendizado de
Máquina, entre outros.

● Portabilidade: Python é conhecido por ser portátil, o que significa que o


código escrito em Python pode ser executado em diversas plataformas sem
a necessidade de modificações significativas.

● Aprendizado rápido: devido à sua sintaxe simples e clara, Python é

e o código CRC UZDIGMX2.


frequentemente recomendado como a primeira linguagem para iniciantes
em programação. Isso facilita o aprendizado dos fundamentos da
programação.

² Dentro do contexto de programação, uma comunidade é definida como um grupo de pessoas que compartilham
objetivos comuns, se reunindo com a intenção de trocar ideias, programar eventos como workshops e palestras, e
se atualizar sobre tendências e demandas do mercado. Esses grupos são formados por programadores e são
utilizados para suporte mútuo, aprendizado e compartilhamento de conhecimentos.

³Em programação, bibliotecas são conjuntos de códigos pré-escritos que os programadores podem utilizar para
realizar tarefas comuns sem a necessidade de escrever código do zero.

198
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Essas são apenas algumas das razões pelas quais Python é uma escolha
popular para programadores em diversas áreas. No entanto, a escolha da
linguagem muitas vezes depende do contexto específico do projeto e das
preferências pessoais do desenvolvedor.

É importante destacar, antes de começarmos a aprender a programar, que a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
execução de programas nesta linguagem depende de um componente de
software chamado interpretador. Este interpretador é fundamental, pois
permite que os códigos escritos ou scripts sejam processados e executados.
Sem ele, os códigos permanecem inativos e não podem ser rodados. Em
resumo, o funcionamento dos programas depende da interpretação que este
software realiza. Na seção 3.2.2, forneceremos orientações sobre como
proceder com esta instalação.

e o código CRC UZDIGMX2.

199
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.2. Instalação do Python


Para instalar o Python siga os passos a seguir:

Passo 1: Acesse o link https://www.python.org/downloads/ (Figura 153). É


possível instalar o Python para Windows, Linux/UNIX, macOS e outras

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
plataformas. É recomendável instalar sempre a última versão. Verifique, antes
de realizar o download, a versão que seja compatível ao Sistema Operacional de
seu computador (inclusive se para Windows 32 ou 64 bits). Atenção: o Python
não oferece mais suporte para Sistema Operacional Windows 7 ou inferior.

e o código CRC UZDIGMX2.


Figura 153: Download do Python.
Fonte: adaptado de Python.org.

Passo 2: Clique no botão Download Python 3.12.1, onde este representa a


última versão disponível. O arquivo com extensão .exe será baixado para a pasta
de downloads do seu computador.

Passo 3: Após o download, localize o arquivo e execute-o clicando duas vezes


sobre ele.

200
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Passo 4: A instalação iniciará. Clique em Install Now conforme mostra a


Figura 154 e aguarde a finalização da instalação (Figura 155).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 154: Instalando o Python.
Fonte: adaptado de Python.org.

e o código CRC UZDIGMX2.

Figura 155: Progresso da Instalação do Python.


Fonte: adaptado de Python.org.

201
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.3. Comandos essenciais em Python


Criar um script em Python é semelhante a redigir um texto. No entanto, é
importante lembrar que os comandos são executados sequencialmente, na
ordem em que são escritos, linha a linha, de cima para baixo. Essas
características definem as propriedades de uma linguagem estruturada, embora

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
o Python também permite outras abordagens.

Além dos comandos, é crucial destacar a importância dos comentários, que


desempenham um papel essencial na documentação e explicação do
funcionamento do código para terceiros.

3.3.3.1. Mas como comentar os scripts?


Como definição de boas práticas de programação, os comentários são
comuns nos mais variados cenários. Assim como em outras linguagens, existem
duas formas de se comentar em Python:

1. Comentários em linha (uma única linha)

2. Comentários em bloco (um conjunto de linhas) e o código CRC UZDIGMX2.

# ISSO É UM COMENTÁRIO EM UMA ÚNICA LINHA

Comentários em linha, como apresentado acima começam com o símbolo #


e continuam até o final da linha. Eles são frequentemente usados para fornecer
informações breves sobre o código que está sendo executado.

202
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Já os comentários em bloco começam e terminam com as três aspas


duplas """, ou com três aspas simples '''. Eles podem ser usados para fornecer
comentários mais longos, como explicações de código ou documentação.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
'''

ISSO É UM COMENTÁRIO

EM UM BLOCO

DE LINHAS

'''

"""

ISSO TAMBÉM É UM COMENTÁRIO

EM UM BLOCO

DE LINHAS
"""
e o código CRC UZDIGMX2.

A seguir abordaremos os comandos essenciais. O primeiro comando é


denominado de comando de saída, pois fornece informações aos usuários. Ao
longo deste capítulo você será apresentado a inúmeros comandos, conceitos e
problemas, permeados por soluções e exemplos, a fim de facilitar o
entendimento e gerar os conhecimentos necessários.

203
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.3.2. O que é um comando de saída?


Um comando de saída é uma instrução que imprime um valor ou uma
mensagem na tela de saída, permitindo assim que o usuário interaja com o
programa exibindo dados. Em Python, este comando (função) é o print().

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
A função aceita um ou mais argumentos, que podem ser de qualquer tipo,
incluindo números, strings, listas, tuplas, dicionários e objetos.

A sintaxe do comando print é dada a seguir:

print("FRASE A SER IMPRESSA NA TELA")

Toda cadeia de caracteres a ser exibida em Python deve ser colocada entre
aspas, podendo ser simples ou duplas. No momento em que a linha de
comando é executada, ela apresentará na tela de saída o conjunto de
caracteres (cadeia) que estiver contida entre aspas. O comando possui
variações na forma com que recebe cadeia de caracteres e valores. A sintaxe de
algumas possíveis variações são mostradas a seguir:

e o código CRC UZDIGMX2.

print("PALAVRA1","PALAVRA2","PALAVRA3")

O uso da vírgula é importante quando é necessário inserir espaços entre


palavras, frases e/ou valores.

204
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

print("PALAVRA1" + "PALAVRA2" + "PALAVRA3")

O uso do símbolo + entre cadeias de caracteres realiza uma operação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
denominada concatenação, que une duas ou mais cadeias de caracteres,
formando uma única cadeia.

Na próxima seção, serão apresentados diversos ambientes de programação


para o desenvolvimento em Python. Esses ambientes oferecem a execução de
scripts e uma ampla variedade de recursos que facilitam o trabalho do
programador.

e o código CRC UZDIGMX2.

205
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.4. Ferramentas de programação em


Python
Nesta seção, serão exploradas quatro ferramentas de desenvolvimento para
programadores e cientistas de dados: Visual Studio Code, Jupyter Notebook,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Google Colab e PyCharm (Figura 156), respectivamente.

Cada uma dessas ferramentas tem características únicas e é adequada para


diferentes aspectos do desenvolvimento em linguagem Python. Enquanto o
Jupyter Notebook e o Google Colab são excelentes para experimentação
interativa e análise de dados, o Visual Studio Code e o PyCharm oferecem
recursos mais robustos para desenvolvimento de software e gerenciamento de
projetos. A escolha da ferramenta mais adequada pode variar de acordo com
suas necessidades e preferências pessoais.

Embora você possa optar por usar a ferramenta que mais lhe agrada para
realizar as atividades propostas neste capítulo, sugerimos que experimente
todas elas. Essa abordagem não só amplia suas habilidades, mas também
oferece uma visão abrangente sobre diferentes possibilidades para
programação em Python, facilitando assim o seu aprendizado.

e o código CRC UZDIGMX2.

Figura 156: Logotipos dos ambientes de desenvolvimento contemplados ao longo do curso.


Fonte: as Autoras.

206
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.4.1. O que é um editor de código?


Um editor de código é um software projetado para facilitar a escrita e edição
de código-fonte, ou seja, programas em uma determinada linguagem de
programação. Todo editor possui recursos avançados como realce de sintaxe,
que muda a cor e o formato do texto conforme a linguagem de programação e

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
completação automática de código, que agiliza a codificação ao sugerir
comandos e estruturas de código. Além disso, muitos editores oferecem
verificação de erros em tempo real, ajudando a identificar e corrigir problemas
de sintaxe e lógica à medida que o código é escrito.

Os editores de código também suportam várias linguagens de programação,


adaptando-se às necessidades de projetos diversos (Figura 157). Eles auxiliam na
manutenção de boas práticas de formatação, como a correta indentação e
alinhamento do código e facilitam a navegação em grandes bases de código.
Outra característica valiosa é a integração com sistemas de controle de versão,
como Git, permitindo aos desenvolvedores gerenciar e rastrear alterações de
forma eficiente.

e o código CRC UZDIGMX2.

Figura 157: Simulação de um ambiente de desenvolvimento de código.


Fonte: imagem gerada por IA.

207
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.4.2. O que é a ferramenta Visual Studio


Code?
O Visual Studio Code (VS Code), desenvolvido pela Microsoft, é um editor de
código gratuito, leve e de código aberto (open source) que oferece suporte a uma
ampla variedade de linguagens de programação. É uma escolha popular entre

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
desenvolvedores, tendo assim, uma ampla comunidade de usuários ativa. Ele é
multiplataforma, estando disponível para Windows, macOS e Linux, o que facilita
a criação, exportação e sincronização de perfis para o usuário.

O VS Code suporta uma vasta gama de extensões que permitem


personalizar o ambiente de desenvolvimento para atender às necessidades
específicas de programadores e linguagens de programação, oferecendo um
editor de texto altamente flexível, com destaque de sintaxe, autocompletar,
formatação automática e outras funcionalidades que melhoram a produtividade
do desenvolvedor.

Ele oferece integração para controle de versão com sistemas baseados no


Git, tornando o gerenciamento de versões mais eficiente, além de permitir a
depuração do código diretamente no ambiente de programação, facilitando a
identificação e correção de erros.
e o código CRC UZDIGMX2.
A integração com serviços de nuvem, como Azure e AWS, simplificam o
desenvolvimento de aplicativos que utilizam esta tecnologia.

Para instalar o VS Code siga os passos a seguir:

Passo 1: Acesse o link https://code.visualstudio.com/download (Figura 158) e


selecione a versão mais adequada ao seu Sistema Operacional.

208
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 158: Página de downloads do VS Code.
Fonte: adaptado de VS Code.

Após clicar no link para baixar o programa, você será redirecionado para a
página da documentação e o download será iniciado. Após o término, localize o
arquivo executável na pasta de downloads do seu computador.

Passo 2: Para realizar a instalação é necessário aceitar os termos de licença


do software. Após clicar em “Eu aceito o acordo”, clique em Próximo e siga os

e o código CRC UZDIGMX2.


passos a seguir (Figura 159-165).

209
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 159: Aceite dos termos de licença.
Fonte: adaptado de VS Code.

e o código CRC UZDIGMX2.

Figura 160: Escolha do local da instalação.


Fonte: adaptado de VS Code.

210
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 161: Escolha da pasta no menu iniciar.
Fonte: adaptado de VS Code.

e o código CRC UZDIGMX2.

Figura 162: Seleção de tarefas adicionais.


Fonte: adaptado de VS Code.

211
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 163: Instalação do VS Code.
Fonte: adaptado de VS Code.

e o código CRC UZDIGMX2.

Figura 164: Progresso da instalação.


Fonte: adaptado de VS Code.

212
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 165: Finalização da instalação.
Fonte: adaptado de VS Code.

Ao finalizar a instalação, o VS Code será iniciado e você visualizará a tela a


seguir (Figura 166). Antes de iniciar a programação nesta IDE, devem ser
instaladas algumas extensões sobre as quais abordaremos no próximo tópico.

e o código CRC UZDIGMX2.

Figura 166: Tela inicial do VS Code.


Fonte: adaptado de VS Code.

213
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.4.2.1. Instalando extensões


As extensões são módulos de software adicionais que ampliam ou
adicionam funcionalidades ao editor de código. Permitem personalizar e
adaptar o ambiente de desenvolvimento conforme as necessidades e
preferências de cada desenvolvedor, melhorando a experiência de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
desenvolvimento e aumentando a produtividade e eficiência. Além das
fornecidas pelo fabricante do software, as extensões podem ser desenvolvidas
pela comunidade de usuários ou por terceiros.

Estima-se que a ferramenta possui um pouco mais de 30 mil de extensões


disponíveis na aba extensões do VS Code que cobrem diversas áreas. Entre as
extensões específicas para linguagens de programação, as mais comuns são
utilizadas nas linguagens Java, TypeScript, Python, HTML, CSS, JavaScript, Ruby,
C e C++.

Antes de iniciarmos o desenvolvimento de códigos nesta IDE, instale a


extensão Português (PT-BR) que permite traduzir a IDE. Com o VS Code aberto,
clique no ícone Extensões (Figura 167).

e o código CRC UZDIGMX2.

Figura 167: Extensões no VS Code.


Fonte: adaptado de VS Code.

214
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Digite a palavra “Portuguese” no campo de busca e clique no botão Install


na primeira opção apresentada conforme a figura 168.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 168: Extensão Portuguese.
Fonte: adaptado de VS Code.

Ao final da instalação será solicitado que a IDE seja reiniciada para que as
configurações de linguagem sejam aplicadas (Figura 169).

e o código CRC UZDIGMX2.


Figura 169: Reiniciando a IDE.
Fonte: adaptado de VS Code.

A segunda extensão que precisará ser instalada é a IntelliCode que utiliza


Inteligência Artificial para recomendar opções autocomplete por meio de uma
lista suspensa. Use a opção instalar desta extensão conforme mostra a Figura
170.

O processo de instalação das extensões sempre seguirá o mesmo processo,


ou seja, você deve pesquisar pelo nome da mesma na aba extensões e clicar no
botão instalar, porém, nem sempre será necessário reiniciar o VS Code.

215
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 170: Extensão IntelliCode.
Fonte: adaptado de VS Code.

3.3.4.2.2. Realizando os primeiros códigos


no VS Code
Para programar em Python no VS Code você deve clicar em Novo Arquivo
na página inicial ou clicar no menu Arquivo, opção Novo Arquivo conforme
apresentado na Figura 171.

e o código CRC UZDIGMX2.

Figura 171: Novo arquivo no VS Code.


Fonte: adaptado de VS Code.

216
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Surgirá a caixa de diálogo (Figura 172) Novo Arquivo na qual deve ser
digitado o nome do arquivo. Neste caso o nome dado será Exercicio1.py, sendo
py a extensão padrão dos arquivos em Python.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 172: Caixa de diálogo Novo Arquivo.
Fonte: adaptado de VS Code.

Pressione Enter e surgirá a caixa de diálogo para salvar o arquivo. Selecione


o local mais apropriado e adicione a extensão .py, clicando em seguida em Criar
Arquivo conforme a Figura 173.

e o código CRC UZDIGMX2.

Figura 173: Caixa de diálogo Criar Arquivo.


Fonte: adaptado de VS Code.

O arquivo será criado e surgirá no canto inferior direito uma caixa de diálogo
(Figura 174) perguntando se deseja instalar as configurações recomendadas
para o Python. Instale as configurações para só então iniciar a codificação.

217
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 174: Instalação das configurações recomendadas.
Fonte: adaptado de VS Code.

Digite o código a seguir e execute-o por meio da tecla F5 do teclado ou do


menu Executar, opção Iniciar a Depuração.

1. #Primeiro Código em Python


2. print("Olá, mundo!")

e o código CRC UZDIGMX2.

A depuração é um processo que visa identificar e corrigir erros em um


programa. É possível definir pontos de interrupção no código, indicando em
que a execução do programa deve pausar. Durante a execução, o
desenvolvedor pode inspecionar variáveis, avaliar expressões e percorrer o
código fonte linha a linha, permitindo uma análise detalhada. Além disso, o VS
Code oferece ferramentas como consoles interativos e visualização de pilha de
chamadas, facilitando a compreensão do fluxo de execução, além de suportar
testes unitários, proporcionando maior eficiência.

218
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Vamos testar outro exemplo. Para isso você precisa pedir um Arquivo Novo
e selecionar a opção Arquivo Python (Figura 175).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 175: Arquivo Python.
Fonte: adaptado de VS Code.

Teste as saídas simples e as saídas concatenadas apresentadas a seguir e


veja as saídas produzidas (Figura 176).

1. """
2. Testando saídas simples e concatenadas
3. """
4. print('Olá, mundo!', 'Hoje é dia de aprender a
programar.')
5. print('Olá, mundo!'+'Hoje é dia de aprender a
programar')
e o código CRC UZDIGMX2.

Figura 176: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.

Fonte: captura de tela da IDE.

219
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.4.3. Conhecendo o Jupyter Notebook


como ferramenta de programação
O Jupyter Notebook é uma aplicação de código aberto que permite a criação
e compartilhamento de documentos interativos contendo código, texto

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
explicativo, visualizações e equações matemáticas. É amplamente utilizado por
cientistas de dados, pesquisadores e educadores para criar ambientes de
computação interativa em linguagens como Python, R e Julia.

Os notebooks Jupyter consistem em células que podem conter código


executável, texto formatado usando a linguagem de marcação Markdown e
visualizações incorporadas, tornando-os uma ferramenta poderosa para
explorar dados, desenvolver algoritmos, e comunicar resultados de forma
integrada.

3.3.4.3.1. Instalação do Jupyter Notebook


(Anaconda)

e o código CRC UZDIGMX2.


Para instalar o Jupyter Notebook siga os passos a seguir.

Passo 1: Acesse o link https://www.anaconda.com/products/distribution e


baixe o executável Jupyter Notebook Anaconda. Verifique o Sistema Operacional
desejado conforme seu computador, isto é, se para Windows 32 ou 64 bits.

Passo 2: Após finalizar o download, execute o arquivo seguindo os passos


abaixo (Figura 177).

220
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Clique em “Download” se as configurações estiverem corretas ou procure o


instalador compatível no final da página para instalar a versão gratuita e open
source. Atente-se aos requisitos mínimos, conforme especificado no site.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 177: Baixando o Jupyter Notebook (Anaconda3 2023.09-0).
Fonte: adaptado de Anaconda.

Passo 2: Após finalizar o download, execute o arquivo seguindo os passos


abaixo (Figura 178-185).

e o código CRC UZDIGMX2.

Figura 178: Instalando Anaconda3 2023.09-0 (passo 1).


Fonte: adaptado de Anaconda.

221
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 179: Instalando Anaconda3 2023.09-0 (passo 2).
Fonte: adaptado de Anaconda.

e o código CRC UZDIGMX2.

Figura 180: Instalando Anaconda3 2023.09-0 (passo 3).


Fonte: adaptado de Anaconda.

222
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 181: Instalando Anaconda3 2023.09-0 (passo 4).
Fonte: adaptado de Anaconda.

e o código CRC UZDIGMX2.

Figura 182: Instalando Anaconda3 2023.09-0 (passo 5).


Fonte: adaptado de Anaconda.

223
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

ATENÇÃO: Marcar a opção Add Anaconda to my PATH environment


variable. Ao marcar esta opção, haverá a instalação das variáveis do sistema
para não ter que configurá-las individualmente depois.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 183: Instalando Anaconda3 2023.09-0 (passo 6).
Fonte: adaptado de Anaconda.

e o código CRC UZDIGMX2.

Figura 184: Instalando Anaconda3 2023.09-0 (passo 7).


Fonte: adaptado de Anaconda.

224
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 185: Instalando Anaconda3 2023.09-0 (passo 8).
Fonte: adaptado de Anaconda.

Passo 3: Após o fim da instalação, o Jupyter Notebook (Anaconda) abrirá em


seu navegador padrão uma nova janela, para que seja realizado o registro
gratuito no Anaconda Nucleus e, a partir daí, seja possível utilizar a ferramenta.

Caso a página não abra automaticamente em uma nova janela do


navegador, realize o registro pode ser realizado em
https://anaconda.cloud/getting-started-with-anaconda-distribution.

Para efetuar o registro forneça um e-mail válido, crie e repita a senha nos e o código CRC UZDIGMX2.

campos indicados e marque as opções: “Academic”, “I have read and agree to


Anaconda's Privacy Policy and Terms of Service” e “não sou um robô” (Figura
186).

225
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 186: Registrando o Anaconda Nucleus (passo 1).
Fonte: adaptado de Anaconda.

Em seguida, uma nova janela abrirá para a indicação de dados pessoais


(Figura 187).

e o código CRC UZDIGMX2.

Figura 187: Instalando Anaconda3 2023.09-0 (passo 2).


Fonte: adaptado de Anaconda.

226
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Passo 4: Para finalizar o cadastro será necessário clicar em enviar um e-mail


de verificação (Send Verification Email). Uma mensagem será enviada ao e-mail
informado e deverá ser acessada para que seja confirmada.

Com o cadastro finalizado, será possível abrir e editar códigos no Jupyter


Notebook. Para isso, abra novamente o prompt de comando (cmd) (figura 188)

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
para criar a pasta que irá comportar os arquivos notebooks, com os seguintes
passos:

mkdir \Projetos

//Criando a pasta Projetos

cd \Projetos

//Acessando o diretório criado

jupyter notebook

Executar o Jupyter Notebook no prompt de comando para ativá-lo. Uma aba


no navegador padrão deverá ser aberta com a tela do Jupyter Notebook.

e o código CRC UZDIGMX2.


Caso não abra a página do navegador com os comandos, também é
possível abrir o Jupyter Notebook copiando-se os links da forma como
aparecerá nas duas últimas linhas do seu prompt de comando.

Uma outra possibilidade de abrir o Jupyter Notebook é localizar o ícone do


aplicativo no Menu Iniciar do Windows. Note que, sempre que iniciado, um
prompt de comando é aberto e deverá permanecer aberto enquanto estiver
utilizando o Jupyter em seu navegador.

227
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 188: Criando a pasta de projetos para o Jupyter Notebook.
Fonte: as Autoras.

Passo 5: Para começar um novo projeto, localize no canto superior direito a


opção “New” e clique em “Python 3 (ipykernel)”. Uma nova janela se abrirá com
o ambiente de programação (Figura 189). Explore a ferramenta para se
ambientar.

e o código CRC UZDIGMX2.

Figura 189: Ambiente de projetos do Jupyter Notebook.


Fonte: adaptado de Anaconda.

228
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.4.3.2. Desenvolvendo códigos básicos


em markdown e Python
Markdown é uma linguagem de marcação simples que foi criada com o
objetivo de ser facilmente escrita e compreendida, permitindo que o texto seja

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
convertido em um HTML válido. É comumente usada para formatar textos em
plataformas online, como fóruns, wikis entre outras.

A funcionalidade principal desta linguagem em Python é adicionar


formatação básica como listas, links, imagens e outros elementos, sem a
necessidade de usar HTML ou linguagens mais complexas, o que faz com que a
documentação esteja clara e bem formatada junto com o código fonte.

A seguir são apresentados exemplos em markdown.

# Título Principal
## Subtítulo
### Sub-subtítulo

**Texto em Negrito**

e o código CRC UZDIGMX2.


*Texto em Itálico*

- Item 1
- Item 2
- Subitem A
- Subitem B

'texto comentado aqui'

print("Olá, mundo!")

229
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.4.4. Conhecendo o Google Colab como


ferramenta de programação
O Google Colaboratory, mais conhecido como Google Colab, é um serviço de
nuvem gratuito do Google, criado para incentivar a pesquisa de Aprendizado de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Máquina e Inteligência Artificial. É uma ferramenta que permite misturar
código-fonte (geralmente na linguagem Python) e texto formatado (geralmente
em Markdown) com imagens. O resultado desse código dá origem à técnica
conhecida como notebook.

Como o Google Colab dedicada ao desenvolvimento em Python, é possível


testá-lo online, diretamente no navegador, sem necessidade de instalar o Python
e nenhum outro software em sua máquina local. O ambiente é pré-configurado,
tendo as principais bibliotecas Python pré-instaladas, o que torna mais fácil
importá-las e utilizar os recursos.

Uma de suas maiores vantagens é a possibilidade de utilizar os servidores do


Google, permitindo habilitar e utilizar Unidades de Processamento Gráfico
(GPUs) enquanto executa os códigos, principalmente durante o uso de
bibliotecas para treinamento de modelos de Aprendizado de Máquina, análise

e o código CRC UZDIGMX2.


de dados e simulações complexas, sem a necessidade de um hardware
poderoso.

A ferramenta funciona na maioria dos navegadores - como Chrome, Firefox e


Safari - e está disponível para acesso em https://colab.research.google.com.

Para iniciar e criar o seu primeiro código, basta clicar na opção “Arquivo” e
criar “Novo Notebook” (Figura 190). O arquivo é criado com uma célula para
escrever código ou texto e executá-la individualmente, apresentando o resultado
da execução, logo abaixo da célula correspondente (Figura 191).

230
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 190: Ambiente inicial do Google Colab.
Fonte: adaptado de Google Colab.

e o código CRC UZDIGMX2.

Figura 191: Ambiente de projetos do Google Colab.


Fonte: adaptado de Google Colab.

231
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.4.5. Conhecendo o PyCharm como


ferramentas de programação em Python
O PyCharm é uma IDE projetada especificamente para a linguagem de
programação Python. Foi desenvolvida pela pela JetBrains e oferece uma ampla

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
gama de recursos que facilitam o processo de desenvolvimento.

Apresenta uma interface de usuário intuitiva e amigável, proporcionando


uma experiência de desenvolvimento fluida. Seus menus intuitivos e a
organização da barra de ferramentas facilita a navegação e o acesso rápido às
funcionalidades essenciais.

A IDE do PyCharm é uma multiplataforma com versões para Windows,


MacOS e Linux, que fornece análise de código, depurador gráfico, auto
completação de código e capacidades de navegação que facilitam a escrita de
código.

3.3.4.5.1. Instalando o PyCharm


e o código CRC UZDIGMX2.
Para instalar esta ferramenta siga os passos apresentados a seguir.

Passo 1: Para a realização das atividades previstas neste e em alguns dos


outros capítulos, será necessário baixar o Pycharm Community Edition. Utilize
esta versão por ser gratuita e open source.

Acesse o site https://www.jetbrains.com/pt-br/pycharm/download, localize a


versão indicada para seu sistema operacional e clique em Baixar (Figura 192).
Atente-se aos requisitos mínimos indicados para um melhor desempenho da
IDE.

232
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 192: Área de download PyCharm.
Fonte: adaptado de PyCharm.

Passo 2: O arquivo será baixado para a pasta de downloads do seu computador.


Acesse-a e localize o arquivo pycharm-community-2023.X.X.exe (em que X
representa a versão do programa). Inicie a instalação e siga os passos
apresentados a seguir (Figura 193-197).

e o código CRC UZDIGMX2.

Figura 193: Instalando o PyCharm.


Fonte: adaptado de PyCharm.

233
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 194: Instalando o PyCharm.
Fonte: adaptado de PyCharm.

e o código CRC UZDIGMX2.

Figura 195: Instalando o PyCharm.


Fonte: adaptado de PyCharm.

234
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 196: Instalando o PyCharm.
Fonte: adaptado de PyCharm.

e o código CRC UZDIGMX2.

Figura 197: Instalando o PyCharm.


Fonte: adaptado de PyCharm.

235
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Ao abrir o PyCharm pela primeira vez, uma janela chamada Create Project
aparecerá a tela apresentada a seguir (Figura 198), e nela, define-se as
configurações necessárias para iniciar um novo projeto.

É possível criar um novo projeto a qualquer momento, clicando em File e,


em seguida, New Project no menu superior da janela principal do PyCharm.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Primeiro, especifica-se o nome do projeto e o local padrão em que será salvo.
Ao clicar em Create, o projeto é criado e direcionado para o ambiente de
programação (Figura 199), contendo os recursos necessários.

e o código CRC UZDIGMX2.

Figura 198: Criando um novo projeto no PyCharm.


Fonte: adaptado de PyCharm.

236
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 199: Ambiente de programação do PyCharm.
Fonte: adaptado de PyCharm.

Todas as propostas de soluções relacionadas às atividades de


experimentação sugeridos na etapa de conceitualização serão disponibilizadas
via Google Colab, enquanto os exemplos apresentados ao longo deste capítulo e o código CRC UZDIGMX2.

serão executados utilizando o VSCode.

Nos capítulos subsequentes, outras ferramentas serão empregadas.

Para complementar e otimizar seu aprendizado, será realizada uma seção


de atividades de experimentação referentes aos temas abordados.

237
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.5. Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração da IDE escolhida.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nos atividades de
experimentação.

É importante esclarecer que estas atividades não compõem a


avaliação e não haverá correção formal por parte dos instrutores; o
objetivo é a autoaprendizagem e prática. As respostas e dicas de
desenvolvimento para cada atividade estão disponíveis em arquivos
específicos no Google Sala de Aula, na aba Etapa Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos


seguintes símbolos:
e o código CRC UZDIGMX2.

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

238
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

As atividades de experimentação a seguir foram elaborados para ajudá-lo a


familiarizar-se com as funcionalidades básicas do comando print em Python,
uma habilidade essencial para qualquer pessoa que está começando a
programar nesta linguagem.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Atividades de experimentação 1 ●

Escreva um programa que use o comando print para exibir a frase "Olá,
Mundo!".

Atividades de experimentação 2 ●

Utilize o comando print para exibir seu nome completo.

Atividades de experimentação 3 ●●

Crie um programa que combine duas strings e as exibe usando o comando


print. Por exemplo, "Python" e "Programação" se tornam "PythonProgramação".

Atividades de experimentação 4 ● e o código CRC UZDIGMX2.

Use o print para mostrar o resultado de uma operação matemática simples,


como 5 + 3.

Atividades de experimentação 5 ●●

Escreva um poema ou uma citação famosa usando o print, formatando-o em


várias linhas.

239
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividades de experimentação 6 ●●

Use o comando print com o parâmetro end para juntar a saída de dois
comandos print em uma única linha.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.

240
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.6. Tipos de dados e variáveis


Tipos de dados são categorias que determinam os valores que uma variável
pode armazenar e as operações que podem ser realizadas sobre esses valores.
Na linguagem Python, os tipos de dados são dinâmicos, ou seja, a linguagem
permite que o tipo de dado de uma variável seja determinado em tempo de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
execução, adaptando-se conforme o necessário e eliminando assim a
necessidade de declarar explicitamente o tipo de dado de uma variável.

Mas afinal, o que é uma variável?

Em programação, uma variável é um espaço de armazenamento temporário


na memória do computador, identificado por um nome, que contém um valor ou
informação. Em essência, pode ser definida como um rótulo associado a um
local na memória do computador em que os dados podem ser armazenados,
acessados e recuperados durante a execução de um programa.

e o código CRC UZDIGMX2.

Figura 200: Exemplo da definição de variável como um espaço de armazenamento.

Fonte: as Autoras.

241
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Na figura 200 temos uma analogia simples com o contexto apresentado.


Neste caso, uma variável foi definida com o rótulo NOME para armazenar a
cadeia de caracteres "João".

Mas afinal, o que é armazenado em uma variável?

É possível armazenar diferentes tipos de dados, como números, caracteres,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
valores booleanos entre outros, dependendo da linguagem de programação
utilizada. Verifique a seguir cada um dos tipos de dados mais utilizados:

1. Inteiro (int): representa números inteiros

variavel_inteira = 12

2. Ponto Flutuante (float): representa os números decimais

variavel_real = 3.1415926

3. String (str): representa a sequência de caracteres, como palavras ou frases.

variavel_caractere = "Olá, Mundo"

e o código CRC UZDIGMX2.

4. Booleano (bool): representa os valores lógicos verdadeiro (True) ou falso


(False).

variavel_booleana = True

É importante ressaltar que os tipos de dados apresentados anteriormente


referem-se a variáveis consideradas simples, ou seja, armazenam apenas uma
única informação por vez.

242
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

No item específico sobre estrutura de dados, iremos conhecer as variáveis


compostas, como listas, tuplas, dicionários e conjuntos, que nos permitem
organizar os dados de maneira mais complexa.

Cada variável deve ter um identificador, que é um nome único que a


identifica. O identificador é usado para localizar a variável na memória do

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
computador, essa atribuição deve respeitar regras da linguagem de
programação para ser válido.

Quais as regras necessárias para a definição


de identificadores?

• Nunca devem iniciar com números

• Nunca devem ter caracteres especiais

• Podem ter qualquer comprimento

• Podem mesclar letras e números

• Podem iniciar com sublinhado (_)

e o código CRC UZDIGMX2.


• Letras maiúsculas são diferentes de minúsculas

• Não podem corresponder a palavras reservadas

243
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.7. O que é um comando de entrada?


Um comando de entrada é uma instrução capaz de receber dados fornecidos
por meio do teclado. Em Python, este comando é o input(). A função input() é
utilizada para que o usuário possa interagir com o programa, fornecendo
informações como cadeias de caracteres e valores.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
A sintaxe do comando input é dada a seguir:

input('')

É necessário que o comando esteja vinculado a uma variável, pois é nela que
os dados fornecidos serão armazenados. A sintaxe de tal linha de comando pode
ser observada abaixo:

var = input('Texto que será exibido na tela de saída')

Analisando a sintaxe apresentada, pode-se perceber que a função input está


vinculada a uma saída de texto, ou seja, ela permite ao programador exibir
informações na tela para o usuário, a fim de orientá-lo em relação aos dados

e o código CRC UZDIGMX2.


que serão inseridos. Verifique um exemplo de aplicação abaixo.

1. nome = input('Qual o seu nome? ')


2. idade = input('Qual a sua idade? ')
3. altura = input('Qual a sua altura? ')
4. print('Seu nome é: ', nome,'.')
5. print('Sua idade é: ', idade,'anos.')
6. print('Sua altura é: ',altura,'m.')

244
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

No exemplo anterior, pode-se observar a criação de três variáveis destinadas


a armazenar informações obtidas por meio da função input. Um exemplo é o
identificador 'nome' vinculado à função por meio do operador de atribuição4,
ou seja, o dado que será armazenado na variável será uma informação de
entrada.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
É importante destacar que, ao ser utilizado na forma apresentada, o
comando atribui automaticamente o tipo de dado str à variável associada.
Abaixo, pode ser observada a saída de tela final, gerada pelo código anterior
quando compilado, executado e com os dados de entrada fornecidos pelo
usuário (Figura 201).

Figura 201: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

e o código CRC UZDIGMX2.


1. num1 = input('Forneça um valor inteiro:')
2. num2 = input('Forneça um segundo valor inteiro:')
3. num3 = input('Forneça um terceiro valor inteiro:')
4. print('A soma dos valores fornecidos é:',
num1+num2+num3)

4
O operador de atribuição em programação é utilizado para atribuir um valor a uma variável. Ele é representado pelo sinal de igual
(=). Ao utilizá-lo, você estará essencialmente dizendo ao programa para armazenar o valor à direita do sinal de igual na variável à
esquerda do sinal de igual.

245
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

No exemplo acima, o código solicita três valores inteiros ao usuário por


meio do comando de entrada. Note que esses valores são armazenados nas
variáveis denominadas num1, num2 e num3, e ao final é esperado que seja
exibido na tela a soma dos três valores fornecidos (Figura 202).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 202: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

Na saída exibida acima, é possível perceber que o resultado esperado não


ocorre. Em vez de realizar a soma, o programa está realizando a concatenação
das variáveis, ou seja, agrupando os dados de num1, num2 e num3. Isso
ocorre porque, como informado anteriormente, os dados obtidos por meio do
comando de entrada são armazenados como strings e não como os valores
inteiros desejados.
e o código CRC UZDIGMX2.

Para garantir o correto funcionamento do código apresentado é essencial


realizar a conversão dos tipos de dados, ou seja, efetuar a transformação das
variáveis de string para o tipo numérico.

246
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.7.1. Como converter os dados do


comando input para o tipo necessário?
Abaixo são apresentadas possibilidades de sintaxe para a conversão das
variáveis de acordo com o tipo de dado (Tabela 1):

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
int(variavel) Converte o conteúdo da variável para o tipo numérico
inteiro.

float(variavel) Converte o conteúdo da variável para o tipo numérico


real.

str(variavel) Converte o conteúdo da variável para o tipo cadeia de


caracteres.
Tabela 1: Conversão de dados.
Fonte: as Autoras.

O código apresentado anteriormente foi adequado para que atenda ao


objetivo desejado.

1. num1 = input('Forneça um valor inteiro: ')


2. num1 = int(num1) e o código CRC UZDIGMX2.

3.
4. num2 = int(input('Forneça um segundo valor inteiro: '))

As formas de conversão dos dados apresentadas (linha 2 e 4) são diferentes,


porém equivalentes.

247
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

É possível que ambas as variáveis deixem de ser strings (str) e se tornem


números inteiros (int) no momento da inserção dos dados. Assim, o exemplo
anterior terá a seguinte estrutura:

1. num1 = int(input('Forneça um valor inteiro: '))


2. num2 = int(input('Forneça um segundo valor inteiro: '))

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3. num3 = int(input('Forneça um terceiro valor inteiro:
'))
4. print('A soma dos valores fornecidos é:',
num1+num2+num3)

Figura 203: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

e o código CRC UZDIGMX2.


Observe que o objetivo da implementação foi atingido com sucesso, mas se
um dado do tipo float for fornecido pelo usuário haverá uma indicação de erro
no terminal.

Outro ponto relevante é que, para apresentar como resultado a soma dos
três valores inteiros fornecidos, foi utilizado o operador aritmético de adição
(+). Além do operador de adição e do operador de atribuição que já foram
mencionados, existem outros operadores aritméticos, que serão apresentados
a seguir.

248
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.8. Operadores aritméticos


Em Python, os operadores aritméticos englobam aqueles empregados em
instruções aritméticas básicas e tradicionais. A Tabela 2 destaca os operadores,
suas funcionalidades e sintaxes.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Operador Significado Sintaxe em Operação realizada
Python
= Atribuição A=B Atribui B a variável A
+ Adição A=B+C Atribui à A a soma entre B e C
- Subtração A=B-C Atribui à A a subtração entre B
eC
* Multiplicação A=B*C Atribui à A a multiplicação
entre B e C
/ Divisão A=B/C Atribui à A a divisão entre B e C
// Divisão exata A = B // C Atribui à A a parte inteira do
quociente da divisão entre B e
C
** Potenciação A = B ** C Atribui à A o valor de BC

e o código CRC UZDIGMX2.


% Resto da A=B%C Atribui a A o resto da divisão
divisão entre B e C
Tabela 2: Operadores aritméticos.

Fonte: as Autoras.

Com base nos operadores apresentados, será possível a construção de


expressões, uma vez que estas podem ser formadas por combinações de
variáveis, operadores aritméticos, constantes e o operador de atribuição. A
seguir, podemos analisar um trecho de código em Python que representa uma
expressão.

249
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. '''Esse programa irá exibir para o usuário o cálculo da


seguinte expressão matemática resultado = x2 + 3.5 y
2. + z/3 -4 '''
3.
4. x = float(input('Forneça um valor para a variável x: '))
5. y = float(input('Forneça um valor para a variável y: '))

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
6. z = float(input('Forneça um valor para a variável z: '))
7.
8. resultado = x ** 2 + 3.5 * y + z/3 - 4
9.
10. print('x2 + 3.5 y + z/3 - 4 =',resultado)

No código acima, observe que são inseridas diversas operações aritméticas.


No entanto, qual é a ordem em que elas são executadas? Quem define essa
sequência é a ordem de precedência dos operadores, que pode ser analisada
na Tabela 3.

1 2 3 4
() ** / +
* -
e o código CRC UZDIGMX2.
//
%
Tabela 3: Precedência dos operadores.
Fonte: as Autoras.

Assim como as regras matemáticas exigem, o cálculo de expressões


inicia-se respeitando parênteses, seguido por multiplicações, divisões e resto da
divisão, mantendo a ordem da esquerda para a direita. Posteriormente, são
resolvidas as adições e subtrações.

250
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

No trecho do código anterior, as variáveis que aparecem à direita do


comando de atribuição (x, y e z) serão substituídas pelos valores que
armazenam no momento em que o computador executa a linha que contém
esta expressão.

A saída de tela abaixo (Figura 204) foi gerada após a execução do código,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
note que três valores reais foram atribuídos às variáveis x, y e z. E o cálculo foi
realizado seguindo as normas definidas pela precedência de operadores.

Figura 204: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

Assim foram realizadas as seguintes operações:

= (2.5)² + (3.5 * 3.2) + (7.8 / 3) - 4

e o código CRC UZDIGMX2.


= 6.25 + 11.2 + 2.6 - 4

=16.05

Se desejar alterar a ordem em que o cálculo é realizado, é necessário inserir


parênteses para evidenciá-la nas linhas de código.

251
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. '''Esse programa irá exibir para o usuário o cálculo


2. da seguinte expressão matemática
3. resultado = (x(2+3.5)y) + ((z/3) - 4 )'''
4.
5. x = float(input('Forneça um valor para a variável x:'))

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
6. y = float(input('Forneça um valor para a variável y:'))
7. z = float(input('Forneça um valor para a variável z:'))
8.
9. resultado = ((x ** (2 + 3.5)) * y) +( (z/3) - 4)
10.
11. print('x2 + 3.5 y + z/3 - 4 =',resultado)

Com a inserção dos parênteses na expressão aritmética, os cálculos serão


iniciados sempre por eles, considerando sempre o parêntese mais interno e
avançando para os parênteses mais externos. Abaixo é possível verificar a
sequência de passos para a realização de tal operação.

e o código CRC UZDIGMX2.


= (( 2.1(5.5) ) * 3.2) + ((5/3) - 4)

= (59.18 * 3.2) + (1.66 - 4)

= 189.38 - 2.34

= 187.04

A saída de tela apresentada na figura 205 destaca o resultado obtido após a


inserção de três novos valores reais nas variáveis x, y e z, juntamente com a
adição de parênteses à estrutura da expressão aritmética.

252
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 205: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

É de extrema importância compreender que as constantes em expressões


numéricas são definidas pelos tipos de dados int e float.

Mas o que é uma constante?

Uma constante representa um valor numérico que pode


ser atribuído a variáveis, as quais não terão seus valores
alterados ao longo da execução do programa. As constantes
inteiras podem assumir valores positivos ou negativos,

e o código CRC UZDIGMX2.


sendo números inteiros que não possuem casas decimais.
Por outro lado, as constantes reais podem apresentar
precisão decimal, incluindo casas decimais em sua
representação.

Para complementar e otimizar seu aprendizado, será realizada uma seção


de atividades de experimentação referentes aos temas abordados.

253
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.9. Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação
propostas, é fundamental completar os passos anteriores relacionados
à configuração da IDE escolhida.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades de experimentação


não compõem a avaliação e não haverá correção formal por parte dos
instrutores; o objetivo é a autoaprendizagem e prática. As respostas e
dicas de desenvolvimento para cada atividade estão disponíveis em
arquivos específicos no Google Sala de Aula, na aba “Etapa
Conceitualizar”.

O nível de complexidade de cada atividade é indicado pelos


seguintes símbolos:
e o código CRC UZDIGMX2.

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

254
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

As atividades de experimentação a seguir permitem a prática dos


operadores aritméticos em Python enquanto trabalham com cenários da vida
real, aprimorando as habilidades de resolução de problemas e programação.

Atividades de experimentação 7 ●

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Faça um código utilizando a linguagem Python capaz de calcular o valor de
f(x), sendo x uma variável real fornecida como entrada (input) pelo usuário.

Atividades de experimentação 8 ●●

Imagine que você está trabalhando em um projeto de física e precisa


calcular a velocidade final de um objeto em movimento. Você sabe a velocidade
inicial, a aceleração constante do objeto, e a distância percorrida. Para isso
escreva um programa em Python que peça ao usuário para inserir a velocidade
inicial (em metros por segundo), a aceleração constante (em metros por
segundo ao quadrado), e a distância percorrida (em metros).

e o código CRC UZDIGMX2.

Calcule e exiba a velocidade final do objeto.

Atividades de experimentação 9 ●●

Desenvolva um programa que converta a temperatura de Celsius para


Fahrenheit. A temperatura em Celsius deve ser fornecida pelo usuário. A fórmula
de conversão foi disponibilizada na página a seguir.

255
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividades de experimentação 10 ●●

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Elabore um programa em Python que seja capaz de calcular o valor final de
uma compra, considerando a aplicação de descontos. O programa deve
primeiramente pedir ao usuário para inserir o montante total da compra e a
porcentagem de desconto e exibir o valor final da compra na tela.

e o código CRC UZDIGMX2.

256
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.10. Estruturas de controle de fluxo


Estruturas de controle de fluxo são conjuntos de códigos que possibilitam a
modificação da sequência padrão de execução do programa. Essas estruturas
gerenciam a ordem na qual as instruções são realizadas, permitindo que o
programa faça escolhas e itere sobre ações.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Existem três categorias principais de estruturas de controle de fluxo:

● Sequencial: as instruções são executadas em ordem, uma após a outra,


conforme aparecem no código.
● Condicional: capacita o programa a tomar decisões com base em condições.
Se uma condição for verdadeira, o programa executa um bloco de código
específico; caso contrário, pode executar outro bloco ou prosseguir para a
próxima instrução.
● Repetição: conhecida como loops, essa estrutura permite que um bloco de
código seja repetido várias vezes enquanto uma condição específica
permanecer verdadeira. Isso é útil para automatizar tarefas que requerem
repetição.

A primeiro momento iremos abordar as estruturas condicionais, também

e o código CRC UZDIGMX2.


conhecidas como estruturas de tomada de decisão.

3.3.10.1. Estrutura condicional


Estruturas condicionais são elementos essenciais em um programa, pois
determinam quais ações serão tomadas com base em condições específicas. A
inclusão dessas estruturas confere aos programas uma maior flexibilidade,
permitindo que se adaptem às complexidades do mundo real.

257
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A presença de estruturas condicionais representa uma distinção significativa


entre os computadores modernos e as simples máquinas de calcular. É por meio
dessas estruturas que os programadores têm a capacidade de definir diferentes
fluxos de execução ao longo de um programa.

Na abordagem que será adotada, as estruturas condicionais levam em

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
consideração comparações entre valores, valores e variáveis, variáveis e
variáveis, e até mesmo expressões mais complexas. Essas comparações sempre
resultam em um valor booleano, podendo ser verdadeiro ou falso,
proporcionando a base para as decisões lógicas dentro do programa.

3.3.10.2. Operadores relacionais


Como mencionado anteriormente, ao combinar operadores com valores
constantes, variáveis ou expressões, obtém-se como resposta um valor
booleano verdadeiro. Para que tal comparação seja possível, serão utilizados os
operadores relacionais apresentados a seguir (Tabela 4):

Símbolo do Operador Significado

e o código CRC UZDIGMX2.


== Igual a
!= Diferente de
> Maior que
< Menor que
>= Maior ou igual a
<= Menor ou igual a
Tabela 4: Operadores relacionais.

Fonte: as Autoras.

258
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Na Tabela 5 está representado exemplos de operadores relacionais


combinados com constantes, variáveis ou expressões, juntamente aos valores
resultantes.

Combinação Significado Valor booleano de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
retorno
15 == 15 O valor constante 15 é igual ao 1 - Verdade
valor constante 15.
8>5 O valor constante 8 é maior que o 1 - Verdade
valor constante 5.
9 < 13 O valor constante 9 é menor que o 1 - Verdade
valor constante 13.
7 >= 13 O valor constante 7 é maior ou 0 - Falso
igual ao valor constante 13.
variavel == 9 O valor contido na variável 1 – Verdade (se “variavel”
“variavel” é igual a constante 9. conter o valor nove).

0 – Falso (se “variavel”


conter valor diferente de

e o código CRC UZDIGMX2.


nove)
variavel >= 50 O valor contido na variável 1 – Verdade (se “variavel”
“variavel” é maior ou igual a 50 conter um valor maior
ou igual a 50).

0 – Falso (se “variavel”


conter valor menor que
50)

259
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Combinação Significado Valor booleano de retorno

variavel != 13 O valor contido na variável 1 – Verdade (se “variavel”


conter um valor diferente de
“ variavel” é diferente de 13.
13).

0 – Falso (se “variavel” conter

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
valor igual a 13)

Tabela 5: Operações com operadores relacionais.

Fonte: as Autoras.

3.3.10.3. Estruturas condicionais if / if - else

3.3.10.3.1. Estrutura condicional simples - if


Operadores relacionais são frequentemente utilizados em estruturas
condicionais ou em processos de tomada de decisão. No contexto do Python,
essas estruturas condicionais são representadas pelo comando if (se). O
comando if possui algumas particularidades que devem ser observadas,
conforme será demonstrado a seguir. Adicionalmente, é crucial enfatizar a e o código CRC UZDIGMX2.

importância de manter a indentação adequada no bloco do comando if.

Indentação, em termos gerais, refere-se aos recuos utilizados no código ou


script com o propósito de destacar ou definir a estrutura do algoritmo. Esses
recuos discernem quais comandos fazem parte da estrutura condicional,
delineando como os comandos estão agrupados em blocos. A indentação
consiste em uma tabulação (espaço) à direita na linha subsequente à linha de
comando if.

260
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Um exemplo claro desse recuo pode ser observado no trecho de código a


seguir.

if condição:
print("O espaço à esquerda desta linha é a indentação")
#mais comandos podem pertencer a essa condicional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O comando if possui sintaxe simples, a qual é mostrada a seguir:

if condição:
#Seu bloco de comando se inicia aqui

A estrutura tem início no comando if, indicando o começo da sintaxe da


estrutura condicional. Em seguida, temos a condição, formada pelos
operadores relacionais, seguidos por "dois pontos", marcando o início do bloco
de comandos. A execução desse comando ocorre apenas se a condição inserida
for avaliada como verdadeira. Em caso contrário, o bloco de comandos não é
executado. Em outras palavras, para a instrução acima, a linha é interpretada
como "se a condição for verdadeira, execute o bloco de códigos abaixo". Assim, e o código CRC UZDIGMX2.

• Se a condição for VERDADEIRA:

Os comandos abaixo e indentados após os dois pontos ":" são


executados.

• Se a condição for FALSA:

Os comandos abaixo e indentados após os dois pontos ":" não são


executados.

261
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Um exemplo de seu funcionamento é o programa deve verificar se um


usuário do programa é maior de idade. Nessa situação, caso a idade seja maior
ou igual a 18 anos, o programa exibe na tela a mensagem “Bem-vindo, usuário”.

1. print('Olá usuário, informe seu nome: ')

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
2. nome = input()
3. idade = int(input('Qual a sua idade: '))
4. if idade >= 18:
5. print('Bem vindo(a),',nome)

Analisando o código acima, podemos verificar a execução da estrutura


condicional simples. Note que na linha 4, temos o comando if indicando o início
da estrutura, acompanhado pela condição de a variável ser maior ou igual a 18
anos. A estrutura é seguida pelo comando print, que só será executado se a
variável possuir um valor maior ou igual a 18, ou seja, se a resposta da condição
booleana for 1. Caso contrário nada será executado e o programa será
finalizado, ambos os casos podem ser vistos nos terminais a seguir (Figura 206
e 207).

e o código CRC UZDIGMX2.

Figura 206: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

262
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 207: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

3.3.10.3.2. Estrutura condicional composta


- if/else
Após compreender como lidar com a condição quando é verdadeira (por
meio do if), torna-se crucial saber como instruir o programa a agir caso a
condição não seja verdadeira. Nesse cenário, o else (senão) entra em cena. É
importante ressaltar que o comando else só pode existir se houver, e apenas se
houver, um comando if associado a ele. Em outras palavras, ele representa a
alternativa à condição indicada pelo if.

e o código CRC UZDIGMX2.


if condição:
'''Seu bloco de código se inicia aqui e será
executado se a condição do if for verdadeira'''

else:
'''Seu bloco de código se inicia aqui e será
executado se a condição do if for falsa'''

263
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Como seria interpretado o código?

Se a condição for verdadeira, o bloco de comandos imediatamente abaixo,


corretamente indentado, será executado. Caso contrário (se a condição
associada ao if for falsa), o bloco de comandos correspondente, também
devidamente indentado, será executado. Para ilustrar a aplicação será refeito o

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
exemplo anterior. Nessa situação, caso a idade seja maior ou igual a 18 anos, o
programa exibe na tela a mensagem “Bem-vindo, usuário”. Caso contrário,
exibe “Proibida a entrada”.

1. print('Olá usuário, informe seu nome:')


2. nome = input()
3. idade = int(input('Qual a sua idade: '))
4. if idade > 18:
5. print('Bem vindo(a),',nome,'.')
6. else:
7. print(nome,'infelizmente a sua entrada não é
permitida.')

Analisando o código acima, podemos verificar a execução da estrutura e o código CRC UZDIGMX2.

condicional composta. Note que na linha 4, temos o comando if indicando o


início da estrutura, acompanhado pela condição de a variável ser maior ou igual
a 18 anos. A estrutura é seguida pelo comando print, que só será executado se
a variável possuir um valor maior ou igual a 18, ou seja, se a resposta da
condição booleana for 1. Caso contrário, isto é, se a condição que acompanha o
if for falsa (booleano for 0), o programa se remete para a linha 6, executando o
bloco de comandos que a acompanha. Ambos os casos podem ser vistos nos
exemplos a seguir (Figura 208).

264
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Figura 208: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Observe que o terminal acima exibe uma possível saída, considerando que
o usuário forneceu a idade de 45 anos. Nesse cenário, o valor fornecido é
analisado na condição do if (45 > 18), a qual é avaliada como verdadeira.
Portanto, o bloco de comandos associado ao if é executado, e a mensagem
"Bem-vindo, José Eduardo Santos" é exibida na tela. O bloco de comandos
vinculado ao else será ignorado.

e o código CRC UZDIGMX2.


Figura 209: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

Observe que o segundo terminal (Figura 209) apresenta uma segunda


possível saída, levando em consideração que o usuário forneceu a idade de 15
anos. Nesse contexto, o valor fornecido é analisado na condição do if (15 > 18),
a qual é avaliada como falsa.

265
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Dessa forma, o bloco de comandos associado ao if é ignorado, e o bloco de


comandos vinculado ao else será executado, exibindo a mensagem "Clara
Nascimento, infelizmente, a sua entrada não é permitida" na tela.

No exemplo a seguir, o uso de if-else é destinado para verificar uma


condição aritmética. É conhecido que não existe divisão por valor zero na

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
matemática. Nesse caso, o valor do denominador é testado e somente é
realizada a divisão se esse valor for diferente de zero (!=). Deve ser exibida na
tela o valor da divisão exata (//) e o resto da divisão (%).

1. numerador = int(input('Forneça o numerador para a


divisão: '))
2. denominador = int(input("Forneça o denominador para a
divisão: "))
3.
4. if denominador != 0 :
5. divisao_exata = numerador // denominador
6. resto = numerador % denominador
7. print('Quociente = ', divisao_exata)

e o código CRC UZDIGMX2.


8. print('Resto da divisão = ', resto)
9. else :
10. print('Impossível realizar a divisão.')

Analisando o código acima, podemos verificar a execução da estrutura


condicional composta. Observe que na linha 4, temos o comando if indicando
o início da estrutura, acompanhado pela condição de a variável "denominador"
ser diferente de 0.

266
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A estrutura é seguida pelas operações aritméticas para calcular a divisão


exata e o resto da divisão entre as variáveis inteiras obtidas no input. Em
seguida, temos o comando print nas linhas 5, 6, 7 e 8, os quais só serão
executados se a variável possuir um valor diferente de 0, ou seja, se a resposta
da condição booleana for 1.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Caso contrário, isto é, se a condição que acompanha o if for falsa (booleano
for 0), o programa se direciona para a linha 9, executando o bloco de comandos
que a acompanha. Ambos os casos podem ser vistos nos terminais a seguir
(Figura 210).

Figura 210: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

Observe que o terminal acima exibe uma possível saída, considerando que
o usuário forneceu um denominador diferente de zero. Nesse contexto, o valor
e o código CRC UZDIGMX2.
fornecido é analisado na condição do if (3 != 0), a qual é avaliada como
verdadeira.

Portanto, o bloco de comandos associado ao if é executado, efetuando os


cálculos relacionados à divisão exata e ao resto da divisão, os quais são então
exibidos na tela. O bloco de comandos vinculado ao else será ignorado.

267
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 211: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

Observe que o segundo terminal (Figura 211) apresenta uma segunda


possível saída, levando em consideração que o usuário forneceu um
denominador igual a 0. Nesse contexto, o valor fornecido é analisado na
condição do if (0 != 0), a qual é avaliada como falsa. Dessa forma, o bloco de
comandos associado ao if é ignorado, e o bloco de comandos vinculado ao else
será executado, exibindo a mensagem "Impossível realizar a divisão" na tela.

Para que seja possível aprimorar os seus conhecimentos será apresentado


mais um exemplo em que será abordada as estruturas condicionais aninhadas.

3.3.10.3.3. Estrutura condicional aninhada e o código CRC UZDIGMX2.

A estrutura condicional aninhada refere-se à inclusão de uma estrutura


condicional dentro de outra. Isso significa que dentro do bloco de código de
uma estrutura condicional (como um if ou else), você pode ter outra estrutura.

Esse aninhamento permite criar lógicas mais complexas, em que a


execução de certos blocos de código depende de várias condições. Para
evidenciar o funcionamento desta estrutura, observe a implementação abaixo.

268
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. # Vamos calcular a área de um terreno retangular


2. print('Vamos calcular a área de um terreno retangular
em m²')
3. largura = float(input('Forneça a largura do terreno em

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
m: '))
4. if largura > 0 :
5. comprimento = float(input('Forneça o comprimento do
terreno em m: '))
6. if comprimento > 0:
7. area = largura * comprimento
8. print('A área do terreno retangular é: ,area,'m²')
9. else :
10. print('Valor inválido fornecido. ')
11. else:
12. print('Valor inválido fornecido. ')

Neste exemplo, ocorre uma estrutura condicional aninhada, em que um


e o código CRC UZDIGMX2.
bloco de código condicional (if) está incorporado dentro de outro. O código
dentro do primeiro if será executado apenas se a condição relacionada à
variável "largura" for verdadeira. Dentro desse bloco, há outro if comprimento >
0, resultando em uma estrutura condicional aninhada. Essa abordagem
proporciona maior complexidade e flexibilidade à lógica do programa, pois
diferentes condições podem ser verificadas em níveis distintos.

269
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Note que, para a eficácia do objetivo do código, são estabelecidas duas


condições dependentes. Estas são as condições apresentadas para garantir que
todos os valores fornecidos às variáveis sejam positivos. Outra forma de
criarmos uma solução para o problema apresentado seria por meio da
utilização dos operadores lógicos para a escrita das condições.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3.3.10.3.4. Operadores lógicos
Operadores lógicos desempenham um papel crucial na construção de
estruturas de condições compostas, simplificando a implementação de códigos
e reduzindo a necessidade de estruturas condicionais extensas. Em termos
gerais, esses operadores são utilizados para conectar condições menores,
criando assim condições compostas mais abrangentes.

Frequentemente combinados com operadores relacionais, os operadores


lógicos facilitam a criação de condições complexas a partir de condições
simples (Tabela 6). Tais condições resultam em um valor de verdade, podendo
ser verdadeiro (1) ou falso (0). Esses valores são comumente utilizados para
representar estados verdadeiros e falsos, respectivamente.
e o código CRC UZDIGMX2.

Operador Significado Sintaxe em


Python
E Valor - verdade: Verdadeiro, se e somente se and
todas as condições forem verdadeiras.
OU Valor - verdade: Verdadeiro, se ao menos uma or
condição for verdadeira.

270
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Operador Significado Sintaxe em


Python
NÃO Valor - verdade: Verdadeiro, se a condição for not
falsa (inverte o resultado do valor-verdade).
Tabela 6: Operadores Lógicos.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Fonte: as Autoras.

3.3.10.3.5. Sintaxe do operador and


O operador lógico and é usado para combinar duas ou mais condições em
uma expressão lógica. A expressão retorna Verdade apenas se todas as
condições especificadas forem verdadeiras. Abaixo podemos analisar a tabela
verdade do operador lógico and e verificar as possibilidades de saídas
booleanas (Tabela 7).

Tabela Verdade
Condição 1 Condição 2 Saída
Verdadeira Verdadeira Verdadeira
e o código CRC UZDIGMX2.
Falsa Verdadeira Falsa
Verdadeira Falsa Falsa
Falsa Falsa Falsa
Tabela 7: Tabela Verdade operador lógico and.
Fonte: as Autoras.

Para ilustrar o uso desse operador, podemos reformular o exemplo anterior,


utilizando-o para que duas condições sejam atendidas simultaneamente, ou
seja, comprimento e largura devem ser maiores que zero.

271
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Note que o operador permite que ambas as condições sejam analisadas e a


partir do valor-verdade, será gerada uma saída booleana. Se esta for
verdadeira, ou seja, se ambas as condições forem verdadeiras, o bloco de
comandos que acompanha o if será executado. O uso do operador pode ser
visto na linha 5 do código abaixo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
1. # Vamos calcular a área de um terreno retangular
2. print('Vamos calcular a área de um terreno retangular
em m²')
3. largura = float(input('Forneça a largura do terreno em
m: '))
4. comprimento = float(input('Forneça o comprimento do
terreno em m: '))
5. if (largura > 0 and comprimento > 0):
6. area = largura * comprimento
7. print('A área do terreno retangular é: ',area, 'm²')
8.
9. else:
10. print('Valor(es) inválido(s) fornecido(s). ')
e o código CRC UZDIGMX2.

3.3.10.3.6. Sintaxe do operador or


O operador lógico or é usado para combinar duas ou mais condições em
uma expressão lógica. A expressão retorna Verdade se ao menos uma das
condições for verdadeira. A seguir podemos analisar a tabela verdade do
operador lógico or e verificar as possibilidades de saídas booleanas (Tabela 8).

272
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Tabela Verdade
Condição 1 Condição 2 Saída
Verdadeira Verdadeira Verdadeira
Falsa Verdadeira Verdadeira
Verdadeira Falsa Verdadeira

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Falsa Falsa Falsa
Tabela 8: Tabela Verdade operador lógico or.
Fonte: as Autoras.

Para exemplificar o uso do operador, é fornecido o seguinte exemplo. Estão


sendo selecionados candidatos para algumas vagas, e neste momento serão
aceitos apenas candidatos PCD (pessoa com deficiência) ou idosos (60 anos ou
mais). Para isso, foi criada a seguinte implementação.

1. nome = input('Para iniciar a sua inscrição na vaga,


insira o seu nome: ')
2. print('Seja bem vindo(a) ', nome)
3.
4. PCD = int(input('Você é um candidato(a) PCD? Digite 1
- SIM e 2 - NÃO '))
5. idade = int(input('Qual a sua idade? ')) e o código CRC UZDIGMX2.

6.
7. if (PCD == 1 or idade >= 60):
8. print('Você será direcionado para a próxima seção
do processo seletivo.')
9. else:
10. print('Não existem vagas para o seu perfil neste
momento. ')

273
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Analisando a linha 7 podemos perceber que qualquer uma das condições


informadas, PCD igual a 1 ou idade superior ou igual a 60, fará com que o
candidato seja direcionado a próxima etapa do processo seletivo.

3.3.10.3.8. Sintaxe do operador not

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O operador not é o único operador que recebe apenas um valor como
entrada e sua função é simplesmente inverter esse valor. Em outras palavras, se
o valor de entrada for verdadeiro, o resultado será falso, e se o valor de
entrada for falso, o resultado será verdadeiro.

Para finalizar os operadores e as estruturas condicionais será apresentada a


última forma de utilizar que são as condicionais compostas para mais de uma
condição a ser analisada.

3.3.10.3.9. Estruturas condicionais


múltiplas - if - elif - else
A estrutura if-elif-else em programação é utilizada para implementar
decisões múltiplas. Essa estrutura permite que o programa avalie várias e o código CRC UZDIGMX2.

condições sequencialmente e execute o bloco de código associado à primeira


condição verdadeira encontrada. Aqui está uma breve definição de cada parte
dessa estrutura:

if (se): Inicia a estrutura condicional e verifica uma condição. Se a condição


for verdadeira, o bloco de código dentro do if é executado.

elif (senão, se): Pode ser utilizado após um if para verificar uma condição
adicional, caso a condição do if seja falsa. Se a condição do elif for verdadeira, o
bloco de código dentro do elif é executado.
274
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

else (senão): Pode ser utilizado no final da estrutura condicional para


especificar um bloco de código a ser executado se nenhuma das condições
anteriores (do if e elif) for verdadeira.

A sintaxe da estrutura pode ser vista abaixo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
if condição1:
# Bloco de código se condição1 for verdadeira
elif condição2:
# Bloco de código se condição2 for verdadeira
else:
# Bloco de código se nenhuma das condições
anteriores for verdadeira

O exemplo a seguir tem como objetivo evidenciar a utilização da estrutura


apresentada.

Os cursos do QualiFacti possuem média de aprovação 7. Suponha que para


obter tal nota, são aplicados 3 testes, valendo de 0 a 10 pontos, que são
e o código CRC UZDIGMX2.
somados e divididos por 3 para gerar a média. Para que tal tarefa seja
automatizada, faça um pequeno código que receba as notas de um aluno e
calcule a média. Ressaltando que as médias entre 0 e 4 indicam a reprovação
do aluno, entre 4 e 7 indicam regime de recuperação especial e acima de 7
aprovação.

Neste exemplo, será possível visualizar todas as estruturas apresentadas


até o momento: comando de entrada, comando de saída, variáveis,
constantes, operadores aritméticos, relacionais e lógicos, além das estruturas
condicionais compostas e aninhadas.

275
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. N1 = float(input('Forneça a primeira nota: '))


2. N2 = float(input('Forneça a segunda nota: '))
3. N3 = float(input('Forneça a terceira nota: '))
4.
5. if (N1>=0 and N1<=10) and (N2>=0 and N2<=10) and

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
(N3>=0 and N3<=10):
6. soma = N1 + N2 + N3
7. media = soma/3
8. if media >= 0 and media <=4:
9. print('Sua média foi: ', media,'. \nEste aluno
está reprovado. ')
10. elif media >= 4 and media <=7:
11. print('Sua média foi: ', media,'. \nEste aluno
está em regime de recuperação especial. ')
12. else:
13. print('Sua média foi: ', media,'. \nEste aluno
está aprovado. ')
14. else:
15. print('Esse valor não corresponde que ao intervalo
esperado') e o código CRC UZDIGMX2.

Ao analisar a linha 10 do código, é possível observar a aplicação da


estrutura elif, permitindo a inclusão de mais uma condição no código para
análise. Essa estrutura possibilita a inclusão e análise de várias condições,
resultando na execução do bloco cuja resposta seja verdadeira.

Para complementar e otimizar seu aprendizado, será realizada uma seção


de atividades de experimentação referentes aos temas abordados.

276
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.10.4. Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação
propostas, é fundamental completar os passos anteriores relacionados
à configuração da IDE escolhida.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nos atividades.

É importante esclarecer que estes atividades de experimentação


não compõem a avaliação e não haverá correção formal por parte dos
instrutores; o objetivo é a autoaprendizagem e prática. As respostas e
dicas de desenvolvimento para cada atividade estão disponíveis em
arquivos específicos no Google Sala de Aula, na aba “Etapa
Conceitualizar”.

O nível de complexidade de cada atividade é indicado pelos


seguintes símbolos:
e o código CRC UZDIGMX2.

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

277
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

As atividades de experimentação a seguir permitem a prática e o


aprofundamento no uso de estruturas condicionais em Python. Estas estruturas
são essenciais em qualquer nível de programação, desde o mais elementar ao
mais avançado.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Atividade de experimentação 11 ●●●

Crie um programa que peça a idade do usuário. Se o usuário tiver 18 anos


ou mais, o programa deve imprimir "Você é maior de idade".

Atividade de experimentação 12 ●

Desenvolva um programa que pergunte ao usuário sua pontuação em um


teste. Se a pontuação for 80 ou mais, imprima "Excelente"; se estiver entre 50 e
79, imprima "Bom"; caso contrário, imprima "Precisa melhorar".

Atividade de experimentação 13 ●●●

Escreva um programa que solicite ao usuário inserir dois números. Se o


primeiro número for maior que o segundo número informado, verifique se o
e o código CRC UZDIGMX2.
primeiro número é divisível pelo segundo número. Se for divisível, imprima "O
primeiro número é maior e divisível pelo segundo". Se o primeiro número for
maior, mas não for divisível, imprima "O primeiro número é maior, mas não é
divisível pelo segundo". Se o primeiro número não for maior que o segundo
número, imprima "O primeiro número não é maior que o segundo".

278
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 14 ●

Faça um programa que peça ao usuário para inserir a previsão do tempo


(ensolarado, chuvoso, nublado). Se o usuário digitar "ensolarado", o programa
deve imprimir "Leve óculos de sol".

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Atividade de experimentação 15 ●●

Desenvolva um programa que pergunte a idade do usuário. Se a idade for


menor que 13, imprima "Criança", se estiver entre 13 e 19, imprima
"Adolescente", se estiver entre 20 e 59, imprima "Adulto", e se for 60 ou mais,
imprima "Idoso".

Atividade de experimentação 16 ●●●

Crie um programa que solicite ao usuário três números. Se o primeiro


número for o maior da sequência, verifique se ele é maior que a soma dos
outros dois números informados. No caso do primeiro número ser maior que a
soma dos outros dois números, imprima "O primeiro número é maior que a
soma dos outros dois", caso contrário, imprima "O primeiro número é o maior,

e o código CRC UZDIGMX2.


mas não maior que a soma dos outros dois". Se o primeiro número não for o
maior que a soma dos dois outros números, imprima "O primeiro número não é
o maior".

Atividade de experimentação 17 ●●

Escreva um programa em Python que solicite ao usuário que insira um


número inteiro. O programa deve então determinar se o número inserido é par
ou ímpar. Se o número for par, o programa deve imprimir "O número [número
digitado] é par/ímpar".
279
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 18 ●●

Em uma loja, a tabela de descontos é a seguinte: compras abaixo de 100


reais recebem 5% de desconto, compras entre 100 e 1000 reais recebem 10% de
desconto, e compras acima de 1000 reais recebem 15% de desconto.

O usuário deve informar o valor total da compra. Em seguida, com base

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
neste valor, o programa deve verificar a existência e o percentual de um
desconto aplicável, de acordo com as faixas de valor pré-estabelecidas pela loja.
Caso o desconto seja aplicável, o programa deve calcular e mostrar o valor final
após a aplicação deste desconto. Se não houver desconto, o programa deve
exibir o valor original da compra.

Dica: O cálculo do percentual é uma maneira de expressar uma parte de um


todo. Para realizar esse cálculo, devemos, primeiramente, identificar a
quantidade que desejamos saber em relação ao total. Em seguida, dividimos
essa quantidade pelo total e o resultado dessa divisão é multiplicado por 100.

Veja a fórmula a seguir:

e o código CRC UZDIGMX2.

Em termos prático, imagine que desejamos saber quanto é 30% do valor de


uma compra. Devemos começar dividindo 30 pelo valor da compra e, em
seguida, multiplicar o resultado por 100.

Caso seja um desconto, subtraia o percentual do valor da compra e, caso


seja um acréscimo, some o valor.

280
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.10.5. Estrutura de Repetição (loops)


Nesta seção, será introduzido o conceito de estruturas de repetição,
também conhecidas como loops. A característica mais notável dos loops é a
capacidade de repetir a execução de um ou mais comandos com base em
critérios como: uma condição de parada, um número específico de repetições

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
ou até mesmo repetições infinitas.

3.3.10.5.1. Estrutura de repetição for


A instrução for é usada para criar estruturas de repetição em várias
linguagens, e em Python, isso não é diferente. Inicialmente, ela se baseia em
uma contagem numérica com início e fim, utilizando o comando range. Este
comando recebe um valor e gera automaticamente uma contagem incremental
unitária. Vejamos um exemplo a seguir:

range(10)

Na sintaxe apresentada acima o comando range irá gerar uma sequência e o código CRC UZDIGMX2.

unitária de contagem de 0 à 9, [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] . Este comando deve ser


vinculado ao comando for, possuindo a seguinte estrutura:

for i in range(n):
#bloco de comandos que serão repetidos

Neste exemplo, n representa o número de repetições definido pelo


programador.

281
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Na sintaxe apresentada do comando for a variável i itera5 por meio da


sequência gerada pelo comando range; em outras palavras, a cada iteração, ela
assume um valor da sequência em questão. Dessa forma, os comandos abaixo
da linha inicial são executados para cada valor de i, caracterizando o loop. Para
analisar os valores assumidos por i, verifique o exemplo abaixo e o terminal
apresentado.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
1. for i in range(7):
2. if i == 6:
3. print(i, end = '.')
4. else:
5. print(i, end = ',')

Note que o código realizará 7 repetições, em que o contador i começará em


0 e irá iterar até 6 e exibirá esses valores na tela.

Para a apresentação desses valores, foi utilizado o comando end6 e uma


estrutura condicional para formatar a exibição. Se o valor for o último elemento
da iteração, ele será exibido com um ponto final; caso contrário, eles serão
separados por vírgula.

e o código CRC UZDIGMX2.

Figura 212: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

5
Iterar na programação é o ato de repetir ações ou passos várias vezes, geralmente com loops como "for" ou
"while", para percorrer dados ou executar uma tarefa até que uma condição específica seja alcançada.

6
O argumento end é um parâmetro opcional que pode ser passado para controlar o caractere que será adicionado
ao final de cada chamada da função print()

282
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Em instruções que envolvem bloco(s) de código, é crucial


observar a indentação, uma vez que o Python exige essa

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
formatação; do contrário, ocorrerá um erro.

Veja um exemplo simples capaz de exibir uma frase no console por cinco
vezes utilizando o comando for.

1. for i in range(5):
2. print('Hello World')

e o código CRC UZDIGMX2.

Figura 213: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

283
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.10.5.2. Estrutura de repetição while


Além da estrutura de repetição for, muitas vezes é necessário lidar com
blocos de código que se repetem enquanto uma determinada condição é
satisfeita. Para essa finalidade, utilizamos o comando while. Ao contrário do
comando for, o while é empregado em conjunto com condições pré-definidas.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Assim, a sintaxe do comando while é a seguinte:

while condição:
# blocos de comandos que serão repetidos enquanto a
condição tiver como saída verdade

Para exemplificar o uso dessa estrutura, faremos um exemplo utilizando um


contador chamado j e a condição de que haverá iteração enquanto j for menor
que 5.

1. j = 0 #contador sendo inicializado

e o código CRC UZDIGMX2.


2. while j < 5:# condição definida para a repetição
3.
4. if j == 4:
5. print(j, end = '.')
6. else:
7. print(j, end = ',')
8. j = j + 1 # incremento do contador

284
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Para exemplificar os conceitos apresentados iremos apresentar um código


que solicite ao usuário inserir uma senha. Utilize a estrutura while para
continuar pedindo a senha até que o usuário insira a senha correta. Quando a
senha correta for inserida, exiba uma mensagem de boas-vindas. Lembrando
que a senha definida como padrão será facti123.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
1. print('Sistema de acesso a plataforma Facti')
2. print('Para iniciar a sua sessão forneça a sua senha
de acesso: ')
3. senha = input()
4. while senha != 'facti123':
5. print('Senha incorreta!')
6. print('Tente novamente')
7. senha = input('Forneça a sua senha de acesso:')
8. print('Seja bem vindo(a)')

No while, a cada iteração, a condição é testada e, se for satisfeita, o bloco


e o código CRC UZDIGMX2.
de códigos é executado. Observe a presença da variável senha, que recebe seu
valor inicial na linha 3 como um dado de entrada.

A condição senha != 'facti123' é verificada. Se essa condição for atendida, a


estrutura iniciará a repetição, e as linhas 5, 6 e 7 serão executadas. Caso
contrário, o programa se dirigirá automaticamente à linha 8. Enquanto a
condição tiver como saída verdade o loop será executado e senhas serão
solicitadas.

285
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 214: Terminal do VSCode exibindo as saídas geradas pelo código apresentado.
Fonte: captura de tela da IDE.

Em um cenário real, esse método de verificação de senha é inseguro, pois a


senha está codificada de forma fixa e visível no código. Além disso, não há
limites para o número de tentativas de senha, o que poderia permitir tentativas
ilimitadas até acertar a senha.

Para complementar e otimizar seu aprendizado, será realizada uma seção de


atividades de experimentação referentes aos temas abordados.

e o código CRC UZDIGMX2.

286
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.10.6. Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação
propostas, é fundamental completar os passos anteriores relacionados
à configuração da IDE escolhida.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades de experimentação


não compõem a avaliação e não haverá correção formal por parte dos
instrutores; o objetivo é a autoaprendizagem e prática. As respostas e
dicas de desenvolvimento para cada atividade estão disponíveis em
arquivos específicos no Google Sala de Aula, na aba “Etapa
Conceitualizar”.

O nível de complexidade de cada atividade é indicado pelos


seguintes símbolos:
e o código CRC UZDIGMX2.

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

287
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

As atividades de experimentação a seguir abordam as estruturas de


repetição. Escolha a estrutura desejada para solucioná-los e, teste sempre para
chegar à melhor solução. Estas estruturas podem ser utilizadas tanto para
solução de problemas simples, quanto complexos, para evitar a reescrita de
partes do código.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Atividades de experimentação 19 ●●●

Escreva um programa que peça ao usuário para inserir 10 números. Use


uma estrutura de repetição para ler esses números, criando dois contadores
para contar quantos números pares e ímpares foram inseridos. Forneça essas
contagens realizadas como saída do programa.

Atividades de experimentação 20 ●●●

Crie um programa que peça ao usuário um número e calcule o fatorial desse


número usando um loop. Lembre-se de que o fatorial de um número n é o
produto de todos os números inteiros positivos menores ou iguais a n.

Atividades de experimentação 21 ●●● e o código CRC UZDIGMX2.

Desenvolva um programa que peça um número ao usuário e use um loop


para determinar se ele é um número primo ou não. Um número primo é um
número maior que 1 que não tem divisores positivos além de 1 e ele mesmo.

288
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividades de experimentação 22 ●●

Faça um aplicativo que ajude o usuário a definir uma meta de economia. O


usuário entra com quanto ele pode economizar por mês e a meta de economia
total. O programa calcula quantos meses serão necessários para atingir essa
meta.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Atividades de experimentação 23 ●●●

Desenvolva um programa em Python que execute as seguintes funções:


inicialmente, ele deve solicitar repetidamente ao usuário que insira uma
temperatura. Este processo de solicitação deve continuar até que o usuário
digite a palavra 'sair'.

Durante essa operação, a cada temperatura fornecida (exceto quando o


usuário digitar 'sair'), o programa deve converter essa temperatura de Celsius
para Fahrenheit, utilizando a fórmula de conversão em que Fahrenheit é igual a
(Celsius * 9/5) + 32. Caso seja necessário, consulte a Atividades de
experimentação 9 deste capítulo. Após realizar a conversão, o programa deve
exibir o resultado em Fahrenheit no console.

e o código CRC UZDIGMX2.

Atividades de experimentação 24 ●●

Elabore um programa que solicite ao usuário os valores de l1, l2 e l3,


representando os lados de um triângulo. O programa deve então determinar e
informar qual é o tipo do triângulo com base nas seguintes características:

● Equilátero: Todos os três lados são iguais.


● Isósceles: Dois dos lados são iguais.
● Escaleno: Cada lado tem um comprimento diferente.

289
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividades de experimentação 25 ●

Faça um programa que pergunte ao usuário em que ano ele nasceu e em


que ano ele está, mostrando de forma progressiva todos os anos que ele já
viveu, ou seja, imprimindo uma sequência com os anos que o usuário já
presenciou em vida. Obs.: Valores negativos não são aceitos.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.

290
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.11. Funções (Modularidade)


Funções são blocos de código ou subprogramas que realizam uma tarefa
específica. Elas surgem como uma estratégia eficaz para decompor grandes
problemas em problemas menores e mais gerenciáveis. Em projetos de
programação de alta complexidade, é uma prática comum dividir o trabalho em

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
partes menores. Por exemplo, diversas funções podem ser criadas e utilizadas
para solucionar um problema abrangente.

Neste tópico iremos abordar a aplicação e eficácia das funções no


desenvolvimento de códigos.

3.3.11.1. O que são funções?


Funções, em programação, podem ser entendidas como tarefas específicas
e bem definidas que operam em um escopo limitado e retornam um resultado
específico.

Por exemplo, considere a fórmula de Bhaskara: Poderíamos criar uma


função que retorne os valores das raízes de uma equação do 2º grau. Neste

e o código CRC UZDIGMX2.


caso, teríamos três variáveis como entrada. Podemos verificar que a função tem
um escopo claramente definido, com entradas e saídas específicas.

Se uma função executa várias tarefas de escopos diferentes ou tem


múltiplos tipos de retorno, ela pode ser dividida em funções menores e mais
específicas.

É aconselhável declarar funções nos seguintes cenários:

● Quando uma tarefa é complexa e pode ser decomposta em subtarefas


menores.

291
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Se uma subtarefa tem potencial para ser utilizada como uma função
independente.
● Quando um conjunto específico de comandos é repetido frequentemente
no programa.
● Se há a intenção de compartilhar uma solução específica com outros
programadores, como parte de uma biblioteca.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
As funções são caracterizadas por elementos distintos que definem sua
estrutura e funcionalidade. Três elementos principais são essenciais para a
identificação e operação de uma função:

1. Parâmetros ou Argumentos:

Os parâmetros ou argumentos de uma função são os dados de entrada que


ela recebe. Eles permitem que a função opere com diferentes valores e
realizem tarefas de maneira flexível. Os parâmetros podem ser obrigatórios
ou opcionais, dependendo da definição da função. Parâmetros opcionais
permitem que a função seja chamada com um número variável de
argumentos, oferecendo maior flexibilidade.

2. Identificador (Nome da Função):

O identificador, ou nome, é o que distingue uma função das demais. É a


e o código CRC UZDIGMX2.
forma como referenciamos ou chamamos a função no código. O nome da
função deve ser único dentro de seu escopo e geralmente é escolhido para
descrever de forma concisa o que a função faz. Por exemplo, uma função
para calcular a média de números pode ser chamada de calcularMedia.

3. Valores de Retorno:

Muitas funções processam os dados de entrada e retornam um resultado. O


valor de retorno é o dado que a função envia de volta ao ponto em que foi
chamada.

292
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Em algumas situações específicas, uma função pode não ter um valor de


retorno explícito, ou pode retornar um valor nulo ou padrão, indicando que sua
finalidade é mais realizar uma ação do que fornecer um dado.

Assim, a sintaxe correta para a implementação de uma função no código é


evidenciada abaixo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
def nome(argumentos):
#linhas de comandos que farão parte dessa função

Note que a sintaxe para declarar funções é direta e clara, mas requer
atenção a certos detalhes. Para iniciar a declaração de uma função usa-se a
palavra reservada def. Além disso, é importante estar atento ao uso do símbolo
de dois pontos : , que marca o início do corpo (conteúdo) da função.

As funções, assim como as variáveis, devem seguir regras específicas para a


nomeação, respeitando os padrões estabelecidos para identificadores. Em
relação aos argumentos, estes são flexíveis: uma função pode não ter nenhum
argumento, ter apenas um, ou até mesmo vários. Quando uma função possui
múltiplos argumentos, eles são separados por vírgulas.

e o código CRC UZDIGMX2.


Por exemplo, consideremos a função chamada “exibir_elementos”. Neste
caso específico, ela é definida sem nenhum argumento.

def exibir_elementos():

Para próximo exemplo é criada uma função chamada “calcular_soma” com


dois argumentos:

293
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

def calcular_soma(valor1,valor2):

Quando uma função possui argumentos, podemos usá-los para realizar


diversas operações, como cálculos e comparações. Ao entender a criação de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
uma função simples, surge a questão de como utilizá-la. Nas seções práticas,
você aprenderá mais sobre como declarar funções e suas aplicações.

O nome atribuído à função é crucial, pois é por meio dele que a


chamaremos para execução. Mantenha sempre a indentação do código
alinhada com os escopos da função e do programa. O exemplo a seguir
demonstra como criar uma função e, em seguida, chamá-la para execução.

1. #função criada
2. def exibe_mensagem():
3. print("Essa frase será exibida quando a função for
solicitada.")
4.
5. #programa principal, em que a função será solicitada
6. exibe_mensagem() e o código CRC UZDIGMX2.

Na linha 6, temos a chamada para a função "exibe_mensagem". Para que


essa função seja ativada corretamente, é necessário que a linha 6 esteja
posicionada de forma adequada dentro do escopo do código, mantendo-se
alinhada à esquerda. A localização dessa linha é fundamental para assegurar
que a função seja executada no momento desejado.

294
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Retornar valores é um aspecto das funções em programação. Voltemos ao


exemplo da fórmula de Bhaskara que aceita três variáveis e calcula duas raízes.
Focaremos na raiz positiva, que é o valor retornado pela fórmula.

Semelhantemente, em uma função, os valores de entrada são especificados


por argumentos e seu retorno pode ser um valor específico, como um inteiro

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
ou uma string.

Utilizamos a palavra-chave return no trecho de código quando desejamos


que a função devolva um valor específico.

1. import cmath
2.
3. def bhaskara(a, b, c):
4. delta = b**2 - 4 * a * c
5.
6. # Cálculo de raízes usando números complexos para
lidar com delta negativo
7. x1 = (-b + cmath.sqrt(delta)) / (2 * a)
8. x2 = (-b - cmath.sqrt(delta)) / (2 * a)
9. e o código CRC UZDIGMX2.

10. return x1, x2

A função apresentada é uma implementação do código que calcula a


fórmula de Bhaskara em Python, usada para resolver equações quadráticas (2º
grau) da forma ax² + bx + c = 0.

295
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O código inicia pela importação da biblioteca cmath, que permite trabalhar


com números complexos. A função bhaskara(a, b, c) calcula o discriminante
(delta) da equação e, em seguida, utiliza essa informação para calcular as
raízes.

As raízes são determinadas, em que cmath.sqrt é usado para garantir que a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
raiz quadrada de delta seja calculada corretamente, mesmo quando delta é
negativo (o que resultaria em raízes complexas). A função retorna as duas
possíveis soluções da equação, que podem ser reais ou complexas,
dependendo do valor de delta.

A biblioteca math em Python fornece uma série de funções


matemáticas para trabalhar com números de ponto flutuante,
ideal para cálculos com números reais. Ela inclui funções como
raiz quadrada, funções trigonométricas e logarítmicas, além de
constantes como pi e e. Por outro lado, a biblioteca cmath é
destinada a operações com números complexos. Ela possui
e o código CRC UZDIGMX2.
funções semelhantes às da math, mas adaptadas para lidar com
a complexidade adicional dos números complexos, como a
capacidade de calcular raízes quadradas de números negativos.

Enquanto math é adequada para cálculos padrão com


números reais, cmath é indispensável para situações que
envolvem números complexos.

296
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Ao criar essa função, podemos prosseguir para desenvolver uma


implementação completa, demonstrando a invocação da função dentro do
programa principal.

1. import cmath

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
2.
3. def bhaskara(a, b, c):
4. delta = b**2 - 4 * a * c
5. # Cálculo de raízes usando números complexos para
lidar com delta negativo
6. x1 = (-b + cmath.sqrt(delta)) / (2 * a)
7. x2 = (-b - cmath.sqrt(delta)) / (2 * a)
8. return x1, x2
9.
10. #programa principal
11. a = float(input('Forneça o valor de a: '))
12. b = float(input('Forneça o valor de b: '))
13. c = float(input('Forneça o valor de c: '))
14.
e o código CRC UZDIGMX2.
15. x1, x2 = bhaskara(a, b, c)
16. print('O valor de X1 é:', x1)
17. print('O valor de X2 é:', x2)

No trecho mencionado, a função é projetada para aceitar três variáveis


como argumentos. Estes valores são inseridos pelo usuário no programa
principal.

297
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Note que a função é configurada para retornar a variável "delta". A maneira


como este retorno é tratado será aprofundada nas próximas instruções do
texto.

Para um segundo exemplo faremos uma função (eh_par) que recebe um


número e retorna True se o número for par e False se for ímpar. Por exemplo,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
eh_par(4) retorna True.

1. def eh_par(x):
2. resto = x % 2
3. return resto
4.
5. # programa principal
6.
7. x = int(input('Forneça o valor de x '))
8. resto = eh_par(x)
9. if resto == 0:
10. print('True')
11. else:

e o código CRC UZDIGMX2.


12. print('False')

Observe que a implementação realizada anteriormente descreve a função


responsável por calcular o resto de uma divisão. O resto da divisão de um
número inteiro por 2 resulta em apenas dois possíveis valores: zero ou um.
Números pares resultam em um resto de zero, enquanto números ímpares
resultam em um resto de um. Note que a função calcula o resto e retorna este
valor a função principal.

298
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

No contexto da programação, as variáveis locais e globais


têm papéis distintos. Uma variável local é aquela que é
criada dentro de uma função e é acessível apenas nesse
espaço limitado. Por exemplo, quando uma variável é

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
declarada dentro de uma função, ela só pode ser usada
dentro dessa função específica. Por outro lado, uma variável
global é definida fora de todas as funções e pode ser
acessada por qualquer parte do código, tendo assim um
alcance mais amplo e podendo ser utilizada por várias
funções diferentes no programa. Ambos os tipos de variáveis
são essenciais para a organização e a estruturação do código
em um programa.

No exemplo fornecido, podemos distinguir entre variáveis locais e globais:

Variável Local: A variável resto dentro da função eh_par(x) é um exemplo de


variável local. Ela é criada e usada apenas dentro da função e não pode ser
acessada fora dela. O escopo da variável resto está limitado à função eh_par. e o código CRC UZDIGMX2.

Variável Global: A variável x definida no programa principal (fora de


qualquer função) é um exemplo de variável global. Ela é acessível em todo o
código, incluindo dentro de funções. A variável x é declarada e utilizada
globalmente.

Para complementar e otimizar seu aprendizado, será realizada uma seção


de atividades de experimentação referentes aos temas abordados.

299
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.12. Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração da IDE escolhida.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades de experimentação


não compõem a avaliação e não haverá correção formal por parte dos
instrutores; o objetivo é a autoaprendizagem e prática. As respostas e
dicas de desenvolvimento para cada atividade estão disponíveis em
arquivos específicos no Google Sala de Aula, na aba “Etapa
Conceitualizar”.

O nível de complexidade de cada atividade é indicado pelos


seguintes símbolos:
e o código CRC UZDIGMX2.

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

300
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

As atividades de experimentação a seguir apresentam situações nas quais


pode-se usar uma ou mais funções a fim de garantir uma solução mais
adequada. Nos próximos capítulos, ao tratarmos do desenvolvimento de
códigos relacionados à Visão Computacional, serão utilizadas funções para
estruturar as soluções.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Atividades de experimentação 26 ●●

Desenvolva um programa, utilizando uma função que seja capaz de receber


um número e retorne o fatorial desse número, no programa principal e exiba na
tela.

Atividades de experimentação 27 ●●

Desenvolva um programa em Python que contenha quatro funções distintas,


cada uma realizando uma das seguintes operações matemáticas: soma,
subtração, multiplicação e divisão. No programa principal, o usuário deve inserir
dois números reais e escolher qual das quatro operações deseja realizar com
esses números, por meio da inserção do operador(+, -, * ou /). Com base na
escolha do usuário, o programa deve chamar a função correspondente à
e o código CRC UZDIGMX2.
operação selecionada e aplicá-la aos números fornecidos.

Atividades de experimentação 28 ●●

Utilizando os conhecimentos apresentados na seção 1.3.11 faça um


programa que por meio de uma função faça a conversão de graus em radianos.

301
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividades de experimentação 29 ●●●

Implemente um jogo em que o jogador tem que adivinhar um número


oculto, sorteado de maneira aleatória (número inteiro entre 0 e 100), o jogo só
deve ser finalizado quando o usuário acertar o valor sorteado.

Dica: Utilize a biblioteca random para o sorteio do valor aleatório inteiro.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Atividades de experimentação 30 ●●●

Faça um programa que calcule a partir de funções os seguintes casos:

• A hipotenusa de um triângulo retângulo.

• O seno a partir dos catetos.

• O cosseno a partir dos catetos.

• A tangente a partir dos catetos.

Dica: Utilize a biblioteca math.

e o código CRC UZDIGMX2.

A biblioteca random em Python é uma biblioteca padrão que


fornece funcionalidades para gerar números aleatórios. Ela é
amplamente utilizada em uma variedade de aplicações, desde
jogos até simulações e algoritmos de Aprendizado de Máquina. A
biblioteca oferece funções para gerar números aleatórios de
diferentes tipos, controlar a semente de geração de números
aleatórios e realizar operações relacionadas à aleatoriedade.

302
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.13.Manipulação de Arquivos e Strings

3.3.13.1. Manipulação de Strings


Como definido anteriormente, strings representam um tipo de dado

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
caracterizado por uma sequência de caracteres como letras, números, símbolos
e espaços. Em Python, são delimitadas por aspas simples (' ') ou aspas duplas
(" "), permitindo, assim, que o programa identifique e manipule o texto,
conforme apresentado no exemplo a seguir.

palavra = "Python"
frase = 'Inteligência Artificial aplicada à Visão
Computacional'

As strings são utilizadas para diversas finalidades, tais como armazenar


informações em formato textual, exibir mensagens ao usuário, e processar
dados recebidos de fontes externas.

e o código CRC UZDIGMX2.


A Manipulação de Strings representa o processo de interação com
sequências de caracteres. As principais operações são:

● Concatenação
● Fatia (Slicing)
● Substituição
● Busca
● Comparação

303
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Essas operações são fundamentais em qualquer aplicação que manipule


texto, incluindo sistemas de pesquisa, editores de texto e softwares que
interagem com usuários.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3.3.13.1.1. O que é concatenação?
A concatenação é o processo de unir duas ou mais strings (sequências de
caracteres) para formar uma única string. É como se você pegasse palavras ou
frases separadas e as colasse para formar uma frase ou parágrafo mais longo.

Quais as maneiras de concatenar?

● Operador de Concatenação: o operador específico é o +.

● Função Específica para concatenar strings é o join().

A eficiência na concatenação de strings varia significativamente


dependendo da linguagem de programação e do método escolhido. Em
algumas linguagens, realizar a concatenação de strings dentro de um loop

e o código CRC UZDIGMX2.


pode ser uma abordagem menos eficiente em comparação com o uso de
métodos específicos que lidam com múltiplas concatenações.

Além disso, um ponto chave a considerar é a imutabilidade das strings em


muitas linguagens de programação. A imutabilidade implica que cada operação
de concatenação resulta na criação de uma nova string, ao invés de modificar a
string existente.

304
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Por exemplo, imagine uma string "Hello World". Se quisermos extrair a


palavra "Hello", devemos usar o slicing para selecionar os caracteres do índice 0
ao índice 4.

1. texto = "Hello World"


2.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3. # Utilizando slicing para extrair "Hello"
4. # O índice começa em 0 e vai até 4 (o 5º índice
não é incluído)
5. palavra = texto[0:5]
6.
7. print(palavra)

Dentro de suas aplicações, uma comum é a extração de segmentos


específicos de endereços de e-mail ou URLs, em que apenas uma parte da string
é relevante para uma determinada tarefa. No contexto do processamento de
dados, o slicing mostra sua utilidade ao isolar partes específicas de strings para
posterior processamento ou análise. Isso permite que os programadores
segmentem e manipulem dados de texto de maneira eficiente, focando nos
elementos necessários para a realização de suas tarefas.
e o código CRC UZDIGMX2.

3.3.13.1.3. O que é Substituição?


A substituição de strings é um processo frequentemente utilizado para
trocar uma parte de uma string por outra. Essa operação é realizada por meio
de métodos embutidos na linguagem. O método mais comum para realizar a
substituição é o replace().

305
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Isso pode ter um impacto considerável no uso da memória e no


desempenho geral do programa, especialmente quando lidamos com um
grande volume de dados. Veja abaixo um exemplo do operador concatenação
sendo utilizado:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
1. palavra_01 = 'Capitulo 1:'
2. palavra_02 = 'Python'
3. concatenacao = palavra_01 + ' ' + palavra_02
4. print(concatenacao)

3.3.13.1.2. O que é slicing?


Fatia, ou "slicing", é uma técnica utilizada para selecionar e extrair
segmentos específicos de uma string. Essa operação é essencial para muitos
tipos de processamento de texto, pois permite acessar e manipular
subconjuntos de caracteres dentro de uma string maior. Vamos explorar mais
detalhes sobre o slicing. Primeiramente, como funciona?

e o código CRC UZDIGMX2.


No slicing, um intervalo de índices é especificado para selecionar uma parte
específica da string, que normalmente inclui um índice de início e um de fim. Em
várias linguagens de programação, as strings são indexadas a partir do zero, o
que significa que o primeiro caractere está no índice 0, o segundo no índice 1, e
assim sucessivamente. Utilizando o slicing, é possível extrair uma substring da
string original. Esta substring representa uma sequência contínua de caracteres
extraída com base nos índices fornecidos. Em Python, a sintaxe do comando é
definida por string[start:end]. Se omitir o start, o slicing começará do início da
string; se omitir o end, ele irá até o final da string.

306
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O método replace() é utilizado para substituir uma substring específica por


outra dentro de uma string. A sintaxe básica do comando é:

string.replace(old, new, count)

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Onde:

● old é a substring que você quer substituir.


● new é a substring pela qual você quer substituir.
● count é opcional e especifica o número de vezes que você deseja
realizar a substituição, se omitido, todas as ocorrências da substring
serão substituídas.

O método replace() retorna uma nova string com as


substituições realizadas. Ele não modifica a string original, pois as e o código CRC UZDIGMX2.

strings em Python são imutáveis. Se a substring old não for


encontrada na string, o replace() retorna a string original sem
alterações.

307
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Um exemplo de aplicação do comando é:

1. texto = "Olá, mundo!"


2. texto_modificado = texto.replace("mundo", "Python")
3. print(texto_modificado) # Saída: Olá, Python!

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3.3.13.1.4. O que é Busca?
A busca em strings é uma operação comum e útil, permitindo encontrar
substrings ou caracteres específicos dentro de uma string maior. Python oferece
várias maneiras de realizar essa busca, sendo as mais comuns os métodos
find(), index(), rfind(), rindex() e a utilização de expressões regulares com o
módulo re.

● Método find()
e o código CRC UZDIGMX2.

string.find(sub[, start[, end]])

Descrição: Retorna o menor índice na string em que a substring sub é


encontrada. Permite especificar um intervalo de busca com start e end.

Retorno: Retorna -1 se a substring não for encontrada.

308
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Método index()

string.index(sub[, start[, end]])

Descrição: Semelhante a find(), mas lança uma exceção ValueError se a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
substring não for encontrada.
Retorno: Retorna o índice da primeira ocorrência da substring.

● Métodos rfind() e rindex()

string.rfind(sub[, start[, end]])


string.rindex(sub[, start[, end]])

Descrição: Funcionam como find() e index(), mas começam a busca pelo


final da string.
Retorno: rfind() retorna -1 e rindex() lança ValueError se a substring não for
encontrada.

e o código CRC UZDIGMX2.


● Expressões Regulares com re

re.search(pattern, string)
re.match(pattern, string)

Descrição: Permite buscas mais complexas e padrões específicos usando


expressões regulares.
Retorno: Retorna um objeto Match se encontrar uma correspondência; caso
contrário, retorna None.

309
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O módulo re é uma biblioteca padrão usada para trabalhar


com expressões regulares. Expressões regulares, ou regex, são

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
uma ferramenta poderosa para processamento de texto,
permitindo a busca, substituição e manipulação de strings de
maneira avançada e flexível, baseada em padrões específicos.

Abaixo segue um exemplo de implementação utilizando os comandos


apresentados.

1. texto = "Bem-vindo ao mundo de Python!"


2.
3. # Usando find
4. indice = texto.find("mundo")
5. print(indice) # Saída: 13
e o código CRC UZDIGMX2.
6.
7. # Usando expressões regulares
8. import re
9. if re.search("Python", texto):
10. print("Python encontrado!")

310
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Nestes exemplos, find() é usado para encontrar a posição da palavra


"mundo" na string, e re.search() é usado para verificar se a palavra "Python"
está presente na string.

3.3.13.1.4. O que é Comparação?

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
A comparação de strings é um conceito fundamental em programação,
usado para avaliar a relação entre duas strings. Em muitas linguagens de
programação, incluindo Python, strings podem ser comparadas usando
operadores de comparação. Essas comparações podem ser usadas para
verificar a igualdade, a ordem alfabética ou outras relações específicas entre as
strings. Vamos detalhar como funciona essa comparação, por meio dos tipos de
comparação existentes.

● Igualdade e Desigualdade:
○ Verifica se duas strings são exatamente iguais (mesmo conteúdo e
mesma capitalização).

Exemplo: string1 == string2 para igualdade, string1 != string2 para

e o código CRC UZDIGMX2.


desigualdade.

● Ordem Alfabética (ou Lexicográfica):


○ Compara strings para ver qual viria primeiro em ordem alfabética.
○ Operadores como <, >, <=, e >= são usados.
○ A comparação é baseada na ordem lexicográfica, que depende da
codificação de caracteres (como ASCII ou Unicode).

311
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Comparação de Tamanho (Comprimento):


● Compara o comprimento das strings.
● Embora não seja uma comparação direta de conteúdo, é útil em muitos
contextos.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● Case Sensitivity: Letras maiúsculas e minúsculas diferem
para comparações. Por exemplo, "A" é diferente de "a".
● Codificação de Caracteres: A forma como os caracteres são
codificados pode afetar a comparação. Por exemplo, em
Unicode, caracteres acentuados ou especiais podem
influenciar a ordem lexicográfica.
● Normalização: Em alguns casos, é útil normalizar as strings
(como converter tudo para minúsculas) antes de
compará-las, especialmente se a comparação não deve ser
sensível a maiúsculas e minúsculas.

e o código CRC UZDIGMX2.

A seguir segue um exemplo de implementação utilizando os comandos


apresentados.

312
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. string1 = "Maçã"
2. string2 = "maçã"
3.
4. # Comparação sensível a maiúsculas e minúsculas
5. print(string1 == string2) # Saída: False

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
6. # Comparação insensível a maiúsculas e minúsculas
7. print(string1.lower() == string2.lower()) # Saída:
True
8. # Comparação de ordem alfabética
9. print(string1 < string2) # Saída depende da
codificação de caracteres

Para complementar e otimizar seu aprendizado, será realizada uma seção


de atividades de experimentação referentes aos temas abordados.

e o código CRC UZDIGMX2.

313
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.13.2.Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração da IDE escolhida.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades de experimentação


não compõem a avaliação e não haverá correção formal por parte dos
instrutores; o objetivo é a autoaprendizagem e prática. As respostas e
dicas de desenvolvimento para cada atividade estão disponíveis em
arquivos específicos no Google Sala de Aula, na aba Etapa
Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos


seguintes símbolos:
e o código CRC UZDIGMX2.

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

314
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Os atividades de experimentação a seguir tratam da manipulação de strings


e como aplicá-las na elaboração de códigos para determinados contextos.

Atividades de experimentação 31 ●

Escreva uma função em Python que recebe uma string e retorna ela

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
invertida. Por exemplo, a entrada "Hello" deve retornar "olleH".

Atividades de experimentação 32 ●

Escreva uma função que receba uma string e retorne uma nova string com
apenas os caracteres em posições ímpares. Por exemplo, "abcdef" deve
retornar "bdf".

Atividades de experimentação 33 ●●●

Dada uma frase e uma lista de palavras proibidas, escreva uma função que
substitua cada palavra proibida por "****". Exemplo: para a frase "Python é
incrível" e a palavra proibida "incrível", o resultado deve ser "Python é ****".

e o código CRC UZDIGMX2.

Atividades de experimentação 34 ●●●

Crie um template de e-mail que tenha placeholders para o nome do


destinatário e a data. Escreva uma função que substitua esses placeholders
pelos valores corretos.

315
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividades de experimentação 35 ●●

Dada uma string longa e uma palavra-chave, escreva um programa que


verifique se a palavra-chave existe na string e imprima a posição onde ela foi
encontrada.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Atividades de experimentação 36 ●

Escreva uma função que conte quantas vezes um determinado caractere


aparece em uma string.

Atividades de experimentação 37 ●●●

Comparando Palavras: Dada duas strings, escreva um programa que


determine qual delas viria primeiro em um dicionário.

Atividades de experimentação 38 ●●●

Escreva uma função que verifique se uma string é um palíndromo (uma


palavra que é lida da mesma forma de trás para frente, como "radar").

e o código CRC UZDIGMX2.

316
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.13.3. Manipulação de arquivos


A manipulação de arquivos em Python envolve várias operações para criar,
ler, escrever e modificar arquivos no sistema de arquivos. Python oferece um
conjunto de funções integradas para lidar com arquivos, tornando essas tarefas
bastante acessíveis e eficientes. Vamos detalhar os aspectos principais da

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
manipulação de arquivos, focando em quatro elementos:

● Abrir arquivos;
● Ler arquivos;
● Escrever arquivos;
● Fechar arquivos.

3.3.13.3.1. Abrir arquivos


A função open() é a porta de entrada para a manipulação de arquivos,
fornecendo a funcionalidade necessária para abrir um arquivo no sistema de
arquivos e trabalhar com ele. Esta função é versátil e permite vários modos de
operação, cada um adequado para diferentes necessidades de manipulação de
arquivos. Aqui está um detalhamento mais aprofundado:
e o código CRC UZDIGMX2.

open(file, mode)

onde:

file: Caminho do arquivo a ser aberto.

mode: O modo no qual o arquivo será aberto.

317
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.13.3.1.1. Modos de Abertura Detalhados


● Modo de Leitura ('r'):
● Este é o modo padrão para open().
● O arquivo é aberto somente para leitura.
● Se o arquivo não existir, ocorre um erro.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● É ideal para situações em que você apenas precisa ler dados de um
arquivo existente.

● Modo de Escrita ('w'):


● O arquivo é aberto para escrita.
● Se o arquivo não existir, um novo é criado.
● Se o arquivo já existir, o conteúdo anterior é apagado (sobrescrito).
● É útil quando você precisa criar um novo arquivo ou substituir
completamente o conteúdo de um arquivo existente.

● Modo de Adição ('a'):


● O arquivo é aberto para adicionar conteúdo ao final.
● Se o arquivo não existir, um novo é criado. e o código CRC UZDIGMX2.

● Ao contrário do modo de escrita, o conteúdo existente não é apagado;


novos dados são adicionados ao final do arquivo.
● Ideal para logs ou adicionar dados a um arquivo existente sem remover
o conteúdo anterior.

318
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Modo Binário ('b'):


● Pode ser combinado com outros modos, como 'rb' ou 'wb'.
● O arquivo é aberto em modo binário, o que é importante para arquivos
não-texto, como imagens, vídeos ou arquivos executáveis.
● A leitura e a escrita de dados ocorrem em forma de bytes, ao invés de
caracteres.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● Modo de Atualização ('+'):
● Pode ser combinado com outros modos, como 'r+', 'w+' ou 'a+'.
● Permite a leitura e a escrita no mesmo arquivo.
● 'r+' abre o arquivo para atualização (leitura e escrita) sem apagar o
conteúdo existente.
● 'w+' e 'a+' combinam as funcionalidades de escrita/adicionar com a
capacidade de leitura.

Abaixo segue uma sugestão de uso dos comandos apresentados.

1. # Abrindo um arquivo para leitura


2. with open('documento.txt', 'r') as file:

e o código CRC UZDIGMX2.


3. conteudo = file.read()
4.
5. # Abrindo um arquivo para escrita
6. with open('novo_documento.txt', 'w') as file:
7. file.write('Algum conteúdo novo.')
8.
9. # Abrindo um arquivo para adicionar conteúdo
10. with open('log.txt', 'a') as file:
11. file.write('Nova entrada de log.\n')

319
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.13.3.2. Ler Arquivos


A leitura de arquivos é uma operação que permite acessar e processar o
conteúdo armazenado em arquivos. A linguagem Python fornece vários
métodos para ler arquivos, cada um adequado para diferentes necessidades.
Vamos detalhar os métodos read(), readline() e readlines():

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3.3.13.3.2.1. Método read()

file.read(size)

Funcionalidade: Este método lê o conteúdo inteiro do arquivo de uma só


vez.

Aplicação: Útil quando o arquivo não é muito grande e você precisa do


conteúdo inteiro. Por exemplo, ao ler um arquivo de configuração ou um
pequeno arquivo JSON7.

3.3.13.3.2.2. Método readline()


e o código CRC UZDIGMX2.

file.readline(size)

7
Um arquivo JSON (JavaScript Object Notation) é um formato leve de troca de dados, fácil de ler e escrever para
humanos e simples de analisar e gerar para máquinas. JSON é baseado em um subconjunto da linguagem de
programação JavaScript, mas é independente de linguagem, sendo amplamente utilizado em muitas linguagens
de programação para o intercâmbio de dados.

320
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Funcionalidade: Lê uma única linha do arquivo a cada chamada.

Aplicação: Ideal para casos em que você deseja processar um arquivo linha
por linha, como ler um arquivo de log ou processar um arquivo CSV linha a
linha.

Comportamento: Cada chamada subsequente ao método lê a próxima linha

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
do arquivo. Quando o fim do arquivo é alcançado, readline() retorna uma string
vazia ('').

3.3.13.3.2.3. Método readlines()

file.readlines(size)

Funcionalidade: Lê todas as linhas do arquivo e as retorna como uma lista


de strings.

Aplicação: Útil quando você precisa de todas as linhas individualmente e o


arquivo não é excessivamente grande. Por exemplo, ao processar um poema ou

e o código CRC UZDIGMX2.


um script em que cada linha é uma entrada separada.

Cabe ressaltar que, cada elemento da lista corresponde a uma linha do


arquivo, incluindo o caractere de nova linha (\n), exceto possivelmente a última
linha.

A seguir é apresentada uma solução com aplicação prática dos comandos


apresentados.

321
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. # Abrindo um arquivo para adicionar conteúdo


2. with open('log.txt', 'a') as file:
3. file.write('Nova entrada de log.\n')
4.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
5.
6. # Usando read()
7. with open('exemplo.txt', 'r') as file:
8. conteudo = file.read()
9. print(conteudo)
10.
11. # Usando readline()
12. with open('exemplo.txt', 'r') as file:
13. linha = file.readline()
14. while linha:
15. print(linha, end='') # end='' para evitar nova
linha extra
16. linha = file.readline()
17.

e o código CRC UZDIGMX2.


18. # Usando readlines()
19. with open('exemplo.txt', 'r') as file:
20. linhas = file.readlines()
21. for linha in linhas:
22. print(linha, end='')

322
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.13.3.3. Escrevendo Arquivos


Escrever em arquivos é uma operação que permite que os dados sejam
salvos de forma persistente para uso futuro. Python oferece métodos simples e
eficazes para escrever em arquivos. Aqui estão os conceitos e métodos
principais:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3.3.13.3.3.1. Métodos para escrever em
arquivos
● Método write():

file.write(string)

Funcionalidade: Escreve a string fornecida no arquivo. Não adiciona


automaticamente uma nova linha ao final da string, então, se necessário, você
deve incluir \n para criar uma nova linha.

e o código CRC UZDIGMX2.


Exemplo:

1. with open('arquivo.txt', 'w') as file:


2. file.write("Olá, mundo!\n")

323
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Método writelines():

file.writelines(lista_de_strings)

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Funcionalidade: Escreve uma lista de strings no arquivo. Assim como no
write(), não adiciona novas linhas automaticamente.

Exemplo:

1. linhas = ["Primeira linha\n", "Segunda linha\n"]


2. with open('arquivo.txt', 'w') as file:
3. file.writelines(linhas)

3.3.13.3.3.2. Modos de Escrita


● Modo de Escrita ('w'):
● Abre o arquivo para escrita. Se o arquivo não existir, ele é criado. Se

e o código CRC UZDIGMX2.


existir, o conteúdo anterior é apagado.
● Exemplo: open('arquivo.txt', 'w').

● Modo de Adição ('a'):


● Abre o arquivo para adicionar conteúdo ao final. Se o arquivo não
existir, ele é criado. Se existir, o novo conteúdo é adicionado ao final do
arquivo, preservando o conteúdo existente.
● Exemplo: open('arquivo.txt', 'a').

324
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Modo de Criação Exclusiva ('x'):


● Cria um novo arquivo e abre-o para escrita. Se o arquivo já existir, a
operação falhará.
● Exemplo: open('arquivo.txt', 'x').

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Ao manipular arquivos em programação, é fundamental
fechar o arquivo após seu uso para assegurar a correta gravação
dos dados e liberação de recursos, sendo recomendado o uso do
gerenciador de contexto with em Python para esse fim. Além
disso, é importante estar atento ao tratamento de erros, como
dificuldades ao abrir arquivos para escrita, para garantir a
robustez e segurança do programa.

Também deve-se considerar a codificação de caracteres,


especialmente ao lidar com textos em diferentes idiomas ou com
caracteres especiais, optando por especificar a codificação
apropriada.

e o código CRC UZDIGMX2.

325
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.13.3.3. Escrevendo Arquivos


Fechamento de arquivos é a etapa da manipulação de arquivos em
programação que oferece mecanismos eficientes para garantir que essa prática
seja realizada corretamente. Vamos explorar mais detalhadamente esses
mecanismos:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● Método close():
● Funcionalidade: o método close() é usado para fechar um arquivo
explicitamente após a conclusão de todas as operações de leitura ou
escrita.
● Fechar um arquivo é importante por várias razões:
■ Liberação de recursos: quando um arquivo é aberto, recursos do
sistema são alocados para essa operação. Fechá-lo libera esses
recursos.
■ Garantia de escrita: no caso de operações de escrita, fechar o
arquivo assegura que todas as operações pendentes sejam
concluídas e que os dados sejam efetivamente gravados no disco.
● Exemplo:
e o código CRC UZDIGMX2.

1. file = open('arquivo.txt', 'r')


2. # Operações com o arquivo
3. file.close()

● Gerenciador de Contexto with:


● Automatização do Fechamento: O gerenciador de contexto with em
Python é uma forma prática e segura de lidar com arquivos. Ao usar

326
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

with, o arquivo é automaticamente fechado ao final do bloco de código,


mesmo se uma exceção for lançada dentro desse bloco.

● Vantagens:
■ Redução de Erros: Diminui o risco de esquecer de fechar o arquivo,
um erro comum que pode levar a problemas como vazamento de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
recursos ou dados não salvos.
■ Melhor Tratamento de Exceções: Garante que o arquivo seja
fechado adequadamente mesmo quando uma exceção é
encontrada, ajudando a manter a integridade dos dados e do
programa.
● Exemplo:

1. with open('arquivo.txt', 'r') as file:


2. # Operações com o arquivo
3. # Após este bloco, o arquivo é automaticamente
fechado

e o código CRC UZDIGMX2.

Fechar arquivos adequadamente é uma boa prática de


programação, de modo a evitar erros e problemas de
gerenciamento de recursos do sistema. Além disso, o fechamento
correto é especialmente importante em operações de escrita,
garantindo a correta gravação e a integridade dos dados salvos.

Para complementar e otimizar seu aprendizado, será realizada uma seção


de atividades de experimentação referentes aos temas abordados.

327
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.13.3.5. Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração da IDE escolhida.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estes atividades de experimentação


não compõem a avaliação e não haverá correção formal por parte dos
instrutores; o objetivo é a autoaprendizagem e prática. As respostas e
dicas de desenvolvimento para cada atividade estão disponíveis em
arquivos específicos no Google Sala de Aula, na aba Etapa
Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos


seguintes símbolos:
e o código CRC UZDIGMX2.

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

328
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

As atividades de experimentação a seguir tratam de exemplos práticos da


criação e manipulação de arquivos e possíveis aplicações práticas.

Atividades de experimentação 39 ●●

Desenvolva um programa Python que crie um arquivo chamado

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
meu_arquivo.txt. Use o programa para escrever a frase "Olá, mundo da
programação em Python!" no arquivo. Não esqueça de verificar se o arquivo foi
criado e se o conteúdo está correto.

Atividades de experimentação 40 ●●

Escreva um script Python para abrir o arquivo meu_arquivo.txt criado


anteriormente. Leia todo o conteúdo do arquivo e imprima-o na tela.
Assegure-se de que o arquivo seja fechado adequadamente após a leitura.

Atividades de experimentação 41 ●●

Modifique o conteúdo do arquivo meu_arquivo.txt, adicionando a frase

e o código CRC UZDIGMX2.


"Adicionando uma nova linha ao arquivo." ao final do arquivo. Garanta que o
conteúdo original não seja substituído. Leia o arquivo atualizado e imprima seu
conteúdo para verificar a adição.

Atividades de experimentação 42 ●●

Crie um programa Python para listar e imprimir os nomes de todos os


arquivos e pastas no diretório de trabalho atual.

329
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividades de experimentação 43 ●●●

Desenvolva um script que copie o conteúdo do arquivo meu_arquivo.txt


para outro arquivo chamado copia_de_meu_arquivo.txt. Verifique se o novo
arquivo contém exatamente o mesmo conteúdo do original.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Atividades de experimentação 44 ●●

Escreva um programa que abra o arquivo meu_arquivo.txt e conte o


número de linhas, palavras e caracteres presentes nele. Exiba estas contagens
de forma clara e organizada.

Atividades de experimentação 45 ●●

Crie um programa que leia meu_arquivo.txt e identifique todas as linhas


que contêm a palavra "Python". Escreva estas linhas selecionadas em um novo
arquivo chamado linhas_com_python.txt.

Atividades de experimentação 47 ●●●

e o código CRC UZDIGMX2.


Primeiro, crie manualmente um arquivo CSV chamado dados.csv com
algumas linhas de dados. Em seguida, escreva um programa Python para ler
este arquivo e exibir cada linha na tela, formatando adequadamente os dados.

Atividades de experimentação 46 ●●●

Crie um programa que, cada vez que for executado, adicione a data e hora
atuais em um arquivo chamado log.txt. As entradas no log devem estar em
linhas separadas e incluir a data e a hora exatas da execução.

330
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14. Estrutura de Dados


Estruturas de dados são um conceito da ciência da computação e
engenharia de software que permite a organização e o armazenamento
eficiente de dados.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Uma definição acadêmica clássica de estruturas de dados pode ser
encontrada no livro "Algorithms" de Robert Sedgewick e Kevin Wayne:
“Estruturas de dados são uma maneira de armazenar e organizar dados em um
computador, para que possam ser usados eficientemente.” (Sedgewick; Wayne,
2011, p. 1.)

Python oferece várias estruturas de dados embutidas que são tanto flexíveis
quanto poderosas. Aqui estão algumas das mais comuns:

● Tuplas (tuple): Uma vez criadas, os itens em uma tupla não podem ser
alterados. As tuplas são declaradas com parênteses ().
● Listas (lists): São coleções ordenadas e mutáveis de itens (que podem
ser de tipos diferentes). As listas são declaradas com colchetes [] e seus
elementos podem ser acessados por índices.
● Dicionários (Dicts): São coleções desordenadas de pares chave-valor. São

e o código CRC UZDIGMX2.


mutáveis e dinâmicos, podendo armazenar objetos de diferentes tipos.
Os dicionários são declarados com chaves {} contendo pares
chave-valor.
● Conjuntos (Sets): São coleções desordenadas de itens únicos. Eles são
úteis para operações de conjuntos como união, interseção, diferença,
etc. São declarados com chaves {} ou com a função set().
● Arrays (em bibliotecas como NumPy): São coleções de elementos do
mesmo tipo, oferecendo eficiência de armazenamento e operações
matemáticas otimizada.

331
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Essas estruturas formam a base da manipulação de dados e algoritmos em


Python. A escolha entre elas depende das necessidades específicas do
programa, como a necessidade de imutabilidade, eficiência de operações
específicas (como busca e ordenação), ou restrições de tipo de dados.

Cada estrutura tem métodos e funções específicos que permitem

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
manipulá-las de maneira eficiente, tornando Python uma linguagem poderosa e
flexível para programação de dados. Os próximos itens abordados serão
destinados a trabalhar cada uma dessas estruturas e suas organizações.

3.3.14.1. O que são Tuplas?


As tuplas são coleções ordenadas e imutáveis de itens, como números,
textos, ou até outras estruturas de dados. A seguir apresentamos as principais
características e aplicações:

● Imutabilidade: Uma vez que uma tupla é criada, seus elementos não podem
ser alterados, adicionados ou removidos. Por causa dessa imutabilidade, as
tuplas são frequentemente usadas para armazenar dados que não devem

e o código CRC UZDIGMX2.


ser modificados ao longo do tempo, como uma coleção de constantes ou
como registros de dados.
● Definição e Uso: Uma tupla é definida usando parênteses (), com elementos
separados por vírgulas. Por exemplo:

minha_tupla = (1, 2, 3, "Python", 5.5)

● Indexação e Fatiamento: As tuplas suportam indexação e fatiamento para


acessar e manipular seus elementos. Por exemplo, minha_tupla[0] retorna
1, que é o primeiro elemento da tupla.
332
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Métodos Disponíveis: Devido à sua imutabilidade, as tuplas têm menos


métodos disponíveis. Os principais são:

count(): Retorna a quantidade de vezes que um elemento aparece na


tupla.

index(): Retorna o índice da primeira ocorrência de um elemento.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● Usos Comuns:
1. Armazenar dados que não devem mudar, como coordenadas ou
configurações.
2. Passar múltiplos valores de/para funções.
3. Uso em estruturas de dados como chaves de dicionários, em que a
imutabilidade é necessária.

● Desempacotamento de Tuplas: Uma característica interessante das tuplas é


o desempacotamento, em que você pode atribuir os elementos de uma
tupla a várias variáveis em uma única linha. Por exemplo:

e o código CRC UZDIGMX2.


a, b, c = (1, 2, 3)

Atenção: Para criar uma tupla com apenas um elemento, é


necessário incluir uma vírgula após o elemento, caso contrário, o
Python não a reconhece como uma tupla. Por exemplo, (1,) é uma
tupla, enquanto (1) é simplesmente o número 1 entre parênteses.

333
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Para ilustrar os conceitos apresentados e como eles são aplicados ao longo


do código, será apresentado exemplos de utilização de cada um.

Exemplo: Criando e Imprimindo Tuplas

1. # Tupla de números
2. numeros_tupla = (1, 2, 3, 4, 5)

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3. print("Tupla de números:", numeros_tupla)
4.
5. # Tupla com tipos misturados
6. mistura_tupla = (42, "gato", 3.14, True)
7. print("Tupla mista:", mistura_tupla)
8.
9. # Tupla aninhada (tupla dentro de outra tupla)
10. aninhada_tupla = (1, 2, (3, 4))
11. print("Tupla aninhada:", aninhada_tupla)

Exemplo: Tupla de um único elemento

1. singleton = (42,)
2. print("Tupla singleton:", singleton)

e o código CRC UZDIGMX2.

Exemplo: Imutabilidade das Tuplas

1. numeros_tupla = (1, 2, 3, 4, 5)
2. # Tentando alterar um elemento da tupla (isto
causará um erro)
3. try:
4. numeros_tupla[0] = 100
5. except TypeError as e:
6. print("Erro:", e)

334
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Exemplo: Acessando Elementos da Tupla

1. numeros_tupla = (1, 2, 3, 4, 5)
2. # Acessando o primeiro elemento
3. primeiro = numeros_tupla[0]
4. print("Primeiro elemento:", primeiro)

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
5.
6. # Acessando o último elemento
7. ultimo = numeros_tupla[-1]
8. print("Último elemento:", ultimo)
9.
10. # Acessando um intervalo (fatiamento)
11. intervalo = numeros_tupla[1:4] # Do segundo ao
quarto elemento
12. print("Intervalo:", intervalo)

Exemplo: Operações Comuns com Tuplas

e o código CRC UZDIGMX2.


1. numeros_tupla = (1, 2, 3, 4, 5)
2. # Comprimento da tupla
3. tamanho = len(numeros_tupla)
4. print("Tamanho da tupla:", tamanho)
5.
6. # Verificando se um elemento está na tupla
7. contem = 4 in numeros_tupla
8. print("Contém 4?", contem)

335
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. numeros_tupla = (1, 2, 3, 4, 5)
2.
3. # Iterando sobre uma tupla
4. for numero in numeros_tupla:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
5. print("Número:", numero)
6.
7. # Desempacotando uma tupla
8. a, b, c, d, e = numeros_tupla
9. print("Desempacotado:", a, b, c, d, e)

Estes exemplos demonstram como criar tuplas, acessar seus elementos, e


algumas operações comuns. Eles também ilustram a imutabilidade das tuplas,
que é uma característica chave para diferenciá-las. Elas são frequentemente
usadas para dados que não devem mudar e em que a imutabilidade é
necessária para garantir a integridade dos dados.
A seguir será apresentada a estrutura de dados lista.

e o código CRC UZDIGMX2.

336
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14.2. O que são Listas?


As listas são estruturas de dados versáteis e amplamente utilizadas, ideais
para armazenar uma coleção ordenada de itens. Elas são fundamentais para
muitas operações de programação, oferecendo uma série de características e
métodos úteis:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● Definição e Características:
1. Mutabilidade: São mutáveis, o que significa que você pode alterar,
adicionar ou remover elementos depois que a lista é criada.
2. Ordenação: Os elementos em uma lista têm uma ordem definida, que é
a ordem na qual você os adiciona ou específica.
3. Tipos de Dados: Uma lista pode conter itens de diferentes tipos,
incluindo outras listas, tornando-as estruturas muito flexíveis.

● Criação de Listas: São criadas usando colchetes [], com os elementos


separados por vírgulas. Por exemplo:

minha_lista = [1, 2, 3, "Python", 5.5] e o código CRC UZDIGMX2.

● Operações comuns com Listas:


1. Adicionar Elementos: append() para adicionar um item ao final, insert()
para adicionar em uma posição específica.
2. Remover Elementos: remove() para remover um item específico, pop()
para remover um item em uma posição específica (ou o último, por
padrão).

337
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3. Ordenar e Inverter: sort() para ordenar a lista, reverse() para inverter a


ordem dos elementos.

4. Concatenação e Repetição: Listas podem ser concatenadas com o


operador + e repetidas com *.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● Indexação e Fatiamento: Elas suportam indexação (acesso a um elemento
específico) e fatiamento (acesso a uma subseção), permitindo manipulação
detalhada dos dados.

Atenção:

List Comprehensions: Uma forma concisa de criar listas.


Permite a geração de listas novas ao aplicar uma expressão a
cada item de uma sequência existente. Por exemplo:

quadrados = [x**2 for x in range(10)]

e o código CRC UZDIGMX2.

Para ilustrar os conceitos e como eles são aplicados ao longo do código,


serão apresentados exemplos e destacando a utilização de cada um.

338
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Exemplo: Criando e Imprimindo Listas

1. # Lista de números
2. numeros = [1, 2, 3, 4, 5]
3. print("Lista de números:", numeros)

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
4.
5. # Lista com tipos de dados misturados
6. mistura = [42, "gato", 3.14, False]
7. print("Lista mista:", mistura)
8.
9. # Lista aninhada (lista dentro de outra lista)
10. aninhada = [1, 2, [3, 4]]
11. print("Lista aninhada:", aninhada)

Exemplo: Acessando Elementos da Lista

e o código CRC UZDIGMX2.


1. numeros = [1, 2, 3, 4, 5]
2. print("Lista de números:", numeros)
3.
4. #acessando o primeiro elemento
5. primeiro = numeros[0]
6. print("Primeiro elemento:", primeiro)

339
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Exemplo: Acessando o último elemento

1. numeros = [1, 2, 3, 4, 5]
2. print("Lista de números:", numeros)

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3.
4. #acessando o ultimo elemento
5. ultimo = numeros[-1]
6. print("Último elemento:", ultimo)

Exemplo: Acessando um intervalo (fatiamento)

1. numeros = [1, 2, 3, 4, 5]
2. print("Lista de números:", numeros)
3. intervalo = numeros[1:4] # Do segundo elemento ao
quarto e o código CRC UZDIGMX2.

4. print("Intervalo:", intervalo)

340
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Exemplo: Modificando Listas

1. numeros = [1, 2, 3, 4, 5]

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
2. print("Lista de números:", numeros)
3. # Adicionando um elemento ao final da lista
4. numeros.append(6)
5. print("Após adicionar:", numeros)
6.
7. # Inserindo um elemento em uma posição específica
8. numeros.insert(2, 99)
9. print("Após inserir:", numeros)
10.
11. # Removendo um elemento
12. numeros.remove(99)
13. print("Após remover:", numeros)
14.
15. # Alterando um elemento
16. numeros[0] = 100 e o código CRC UZDIGMX2.

17. print("Após alterar:", numeros)

341
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Exemplo: Operações Comuns com Listas

1. numeros = [1, 2, 3, 4, 5]
2. print("Lista de números:", numeros)
3.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
4. # Comprimento da lista
5. tamanho = len(numeros)
6. print("Tamanho da lista:", tamanho)
7.
8. # Verificando se um elemento está na lista
9. contem = 4 in numeros
10. print("Contém 4?", contem)
11.
12. # Iterando sobre uma lista
13. for numero in numeros:
14. print("Número:", numero)
15.
16. # List Comprehension para criar uma nova lista
17. quadrados = [x**2 for x in numeros]
18. print("Quadrados dos números:", quadrados) e o código CRC UZDIGMX2.

Esses exemplos abordam a criação de listas, acesso a elementos,


modificação de listas, e algumas operações comuns como determinar o
comprimento da lista, verificar a presença de elementos, iterar sobre os
elementos, e usar compreensão de listas para criar listas derivadas de maneira
concisa.

342
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14.3. O que são dicionários (Dicts)?


Os dicionários são estruturas de dados que armazenam pares de
chave-valor, sendo uma das estruturas de dados mais úteis e amplamente
utilizadas na linguagem. Eles são mutáveis, o que significa que você pode
alterar, adicionar ou remover pares de chave-valor após a criação do dicionário.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Vamos explorar suas principais características:

● Definição e Características:
1. Chave-valor: cada item em um dicionário é um par de chave-valor. As
chaves são únicas dentro de um dicionário e são usadas para acessar os
valores correspondentes.
2. Mutabilidade: os dicionários são mutáveis, permitindo adicionar,
modificar e remover pares de chave-valor.
3. Não ordenado: até o Python 3.6, os dicionários eram considerados
coleções não ordenadas. No entanto, a partir do Python 3.7, eles
mantêm a ordem de inserção.

● Criação de Dicionários: São criados usando chaves {}, com pares chave-valor e o código CRC UZDIGMX2.

separados por dois pontos. Por exemplo:

meu_dicionario = {"nome": "Alice", "idade": 25,


"linguagem": "Python"}

343
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Acesso e Modificação:
1. Acesso: O valor associado a uma chave é acessado usando a sintaxe
dicionario[chave].
2. Adição/Atualização: Pares chave-valor são adicionados ou atualizados
usando a mesma sintaxe.
3. Remoção: Itens podem ser removidos usando del dicionario[chave] ou o

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
método pop(chave).

● Métodos Comuns:
1. keys(): Retorna uma visualização das chaves no dicionário.
2. values(): Retorna uma visualização dos valores.
3. items(): Retorna uma visualização dos pares chave-valor.
4. get(chave, valor_padrao): Obtém o valor associado a uma chave,
retornando um valor padrão se a chave não existir.

● Iteração: Podem ser iterados diretamente pelas chaves, ou usando os


métodos items(), keys(), e values() para iterar sobre pares chave-valor,
chaves e valores, respectivamente.

e o código CRC UZDIGMX2.

● Usos Comuns: São ideais para representar estruturas de dados complexas,


como informações de usuário, configurações de um programa, ou dados
que precisam ser rapidamente acessados e modificados por meio de
chaves.

Para ilustrar os conceitos e como eles são aplicados ao longo do código,


serão apresentados exemplos destacando a utilização de cada um.

344
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Exemplo: Criando e Imprimindo Dicionários

1. # Criando um dicionário simples


2. contatos = {"João": "1234-5678", "Maria": "9876-5432"}

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3. print("Dicionário de contatos:", contatos)
4.
5. # Dicionário com vários tipos de dados
6. pessoa = {"nome": "Ana", "idade": 30, "altura": 1.65}
7. print("Dicionário de pessoa:", pessoa)
8.
9. # Dicionário aninhado
10. agenda = {
11. "João": {"telefone": "1234-5678", "email":
"joao@example.com"},
12. "Maria": {"telefone": "9876-5432", "email":
"maria@example.com"}
13. }
14. print("Dicionário aninhado (agenda):", agenda)
e o código CRC UZDIGMX2.

345
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Exemplo: Acessando e Modificando Elementos do Dicionário

1. # Criando um dicionário simples


2. contatos = {"João": "1234-5678", "Maria":

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
"9876-5432"}
3. print("Dicionário de contatos:", contatos)
4.
5. # Acessando um valor
6. telefone_joao = contatos["João"]
7. print("Telefone do João:", telefone_joao)
8.
9. # Modificando um valor
10. contatos["João"] = "1111-2222"
11. print("Telefone do João atualizado:",
contatos["João"])
12.
13. # Adicionando um novo par chave-valor
14. contatos["Carlos"] = "3333-4444"

e o código CRC UZDIGMX2.


15. print("Contatos após adicionar Carlos:", contatos)
16.
17. # Removendo um par chave-valor
18. del contatos["Maria"]
19. print("Contatos após remover Maria:", contatos)

346
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Exemplo: Métodos Comuns em Dicionários

1. contatos = {"João": "1234-5678", "Maria":

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
"9876-5432"}
2. print("Dicionário de contatos:", contatos)
3.
4. # Obtendo todas as chaves
5. chaves = contatos.keys()
6. print("Chaves:", list(chaves))
7.
8. # Obtendo todos os valores
9. valores = contatos.values()
10. print("Valores:", list(valores))
11.
12. # Obtendo todos os pares chave-valor
13. itens = contatos.items()
14. print("Itens:", list(itens))

e o código CRC UZDIGMX2.


15.
16. # Usando get para acessar um valor (evita KeyError)
17. telefone = contatos.get("Maria", "Não encontrado")
18. print("Telefone da Maria:", telefone)

347
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Exemplo: Iterando sobre um Dicionário

1. contatos = {"João": "1234-5678", "Maria":


"9876-5432"}
2. print("Dicionário de contatos:", contatos)
3.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
4. # Iterando sobre as chaves
5. for nome in contatos:
6. print(nome)
7.
8. # Iterando sobre os valores
9. for telefone in contatos.values():
10. print(telefone)
11.
12. # Iterando sobre os pares chave-valor
13. for nome, telefone in contatos.items():
14. print(nome, telefone)

e o código CRC UZDIGMX2.

Atenção: O comando for é crucial em Python para iterar sobre


listas, tuplas e dicionários, proporcionando uma maneira eficiente
e legível de acessar e manipular elementos dessas estruturas de
dados.

348
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14.4. O que são Sets (Conjuntos)?


Em Python, um set (conjunto) é uma coleção não ordenada de elementos
únicos e imutáveis. Os sets são usados principalmente para testar a presença
de elementos, eliminar itens duplicados de uma coleção e realizar operações
matemáticas de conjunto como união, interseção, diferença e diferença

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
simétrica. As características e operações fundamentais relacionadas aos sets
em Python são:

● Definição e Características:
1. Não Ordenados: Os elementos em um set não têm uma ordem
específica.
2. Elementos Únicos: Não são permitidos valores duplicados em um set.
3. Mutabilidade: Enquanto você pode adicionar ou remover itens de um
set, os elementos individuais contidos neles devem ser imutáveis (como
números, strings, tuplas).

● Criação de Sets:

Um set é criado usando chaves {} ou a função set(). Por exemplo:


e o código CRC UZDIGMX2.

meu_set = {1, 2, 3}
outro_set = set([4, 5, 6]) # Criando um set a partir
de uma lista

● Adicionando e Removendo Elementos:


1. Adicionar: add() para adicionar um único elemento, update() para
adicionar múltiplos elementos.

349
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

2. Remover: remove() para remover um elemento (gera erro se o


elemento não existir), discard() para remover um elemento sem gerar erro.

● Operações de Conjunto:
1. União: a | b ou a.union(b).
2. Interseção: a & b ou a.intersection(b).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3. Diferença: a - b ou a.difference(b).
4. Diferença Simétrica: a ^ b ou a.symmetric_difference(b) (elementos
que estão em a ou em b, mas não em ambos).

● Verificando a Presença de um Elemento: Usar in para verificar se um


elemento está presente no set.

● Imutabilidade: Elementos de um set devem ser imutáveis (por exemplo,


números, strings, tuplas), mas o set em si é mutável.

● Uso Comum: Os sets são particularmente úteis para remover duplicatas de


uma coleção e realizar operações matemáticas de conjunto, como testar a

e o código CRC UZDIGMX2.


pertença, comparar coleções e encontrar elementos comuns ou distintos
entre conjuntos.

Para ilustrar os conceitos apresentados e como eles são aplicados ao longo


do código, criaremos exemplos e destacaremos a utilização de cada um.

350
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Exemplo: Criando e Imprimindo Conjuntos

1. # Criando um conjunto de números


2. numeros_set = {1, 2, 3, 4, 5}

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3. print("Conjunto de números:", numeros_set)
4.
5. # Criando um conjunto a partir de uma lista (para
remover duplicatas)
6. lista_com_duplicatas = [1, 2, 2, 3, 3, 4, 5]
7. conjunto_unico = set(lista_com_duplicatas)
8. print("Conjunto sem duplicatas:", conjunto_unico)

Exemplo: Adicionando e Removendo Elementos

1. # Criando um conjunto de números


2. numeros_set = {1, 2, 3, 4, 5}

e o código CRC UZDIGMX2.


3. print("Conjunto de números:", numeros_set)
4.
5. # Adicionando um elemento ao conjunto
6. numeros_set.add(6)
7. print("Após adicionar:", numeros_set)
8.
9. # Removendo um elemento do conjunto (se existir)
10. numeros_set.discard(3)
11. print("Após remover:", numeros_set)

351
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Exemplo: Operações de Conjunto

1. # Criando um conjunto de números


2. numeros_set = {1, 2, 3, 4, 5}

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3. print("Conjunto de números:", numeros_set)
4.
5. # Outro conjunto para operações
6. outro_set = {4, 5, 6, 7, 8}
7.
8. # União de conjuntos
9. uniao = numeros_set.union(outro_set)
10. print("União:", uniao)
11.
12. # Interseção de conjuntos
13. intersecao = numeros_set.intersection(outro_set)
14. print("Interseção:", intersecao)
15.
16. # Diferença entre conjuntos

e o código CRC UZDIGMX2.


17. diferenca = numeros_set.difference(outro_set)
18. print("Diferença:", diferenca)

352
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Exemplo: Verificando Membros e Iterando sobre um Conjunto

1. # Criando um conjunto de números


2. numeros_set = {1, 2, 3, 4, 5}
3. print("Conjunto de números:", numeros_set)

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
4.
5. # Verificando a existência de um elemento
6. contem = 5 in numeros_set
7. print("Contém 5?", contem)
8.
9. # Iterando sobre um conjunto
10. for numero in numeros_set:
11. print("Número:", numero)

Esses exemplos demonstram as características básicas dos conjuntos em


Python, incluindo como criar conjuntos, adicionar e remover elementos, realizar
operações de conjunto como união, interseção e diferença, verificar a presença

e o código CRC UZDIGMX2.


de elementos e iterar sobre os elementos do conjunto. Conjuntos são
especialmente úteis para lidar com dados únicos e realizar operações de teoria
de conjuntos de forma eficiente.

O que são arrays?

Na prática mais comum, os desenvolvedores Python


frequentemente usam o termo "array" para se referir às listas
nativas da linguagem.

353
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14.5. Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração da IDE escolhida.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades de experimentação


não compõem a avaliação e não haverá correção formal por parte dos
instrutores; o objetivo é a autoaprendizagem e prática. As respostas e
dicas de desenvolvimento para cada atividade estão disponíveis em
arquivos específicos no Google Sala de Aula, na aba Etapa
Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos

e o código CRC UZDIGMX2.


seguintes símbolos:

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

354
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

As atividades de experimentação a seguir apresentam situações nas quais


pode-se usar tuplas, listas, dicionários e conjuntos em situações práticas.

Atividades de experimentação 48 ●

Crie uma tupla “tupla_numeros” com números de 1 a 5 e acesse o terceiro

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
elemento.

Atividades de experimentação 49 ●●

Imagine que você está trabalhando em um projeto de design gráfico e está


lidando com cores. Para um determinado design, você tem um conjunto
específico de cores a considerar, representadas pela tupla tupla_cores =
("vermelho", "azul", "verde", "azul", "amarelo"). Você precisa determinar a
frequência da cor "azul" no seu esquema de cores e a posição da cor "verde" na
sequência para organizar suas prioridades de design.

Atividades de experimentação 50 ●

e o código CRC UZDIGMX2.


Imagine que você está trabalhando em um sistema de gerenciamento de
inventário para uma loja de frutas. Você tem uma lista inicial de frutas
disponíveis: ["maçã", "banana", "cereja"]. Devido a mudanças no estoque, você
precisa atualizar esta lista: adicionando "laranja" (uma nova fruta disponível) e
removendo "banana" (que se esgotou).

355
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividades de experimentação 51 ●

Imagine que você está desenvolvendo um software que lida com uma série
de dados numéricos. Esses dados estão inicialmente desorganizados e
precisam ser ordenados para facilitar análises futuras.

Você recebeu a seguinte lista de números: [3, 1, 4, 1, 5, 9, 2]. Sua tarefa é

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
ordenar esta lista em ordem crescente.

Atividades de experimentação 52 ●●●

Imagine que você está trabalhando em um projeto de IA envolvendo a


análise de uma série de dados numéricos. Uma tarefa comum em tal projeto
pode ser a transformação de dados brutos para formas mais úteis para
algoritmos de Machine Learning. Por exemplo, você pode precisar elevar ao
quadrado uma série de valores numéricos para uma análise de regressão
polinomial ou para normalizar um conjunto de dados.

Use list comprehension para criar uma lista dos quadrados dos números de
1 a 10. Esta lista representará uma transformação simples dos dados, um passo
que pode ser útil para visualizar relações não lineares nos dados ou para

e o código CRC UZDIGMX2.


preparar os dados para algoritmos específicos de IA.

Atividades de experimentação 53 ●●●

Imagine que você é um desenvolvedor trabalhando em um sistema de


gerenciamento para uma instituição de ensino. Sua tarefa é criar e atualizar
registros de alunos. Cada registro contém informações essenciais sobre o
aluno, como nome, idade, curso e desempenho acadêmico. Após isso adicione
a chave "nota" com o valor 9.5 ao dicionário aluno e remova a chave "idade". E
exiba o dicionário após a atualização.

356
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.15. Bibliotecas e comandos de


instalação
Por algumas vezes nesse material foi utilizado o termo biblioteca, mas você
já parou para pensar o que são bibliotecas e quais as suas finalidades?

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Pois bem, uma biblioteca, também denominada de módulo ou pacote, é um
conjunto de código reutilizável que contém funções, classes e variáveis que
podem ser usadas para realizar tarefas específicas. As bibliotecas são uma parte
fundamental do ecossistema e são projetadas para simplificar o
desenvolvimento de programas, permitindo que os programadores aproveitem
o código já existente em vez de reinventar a roda.

Aqui estão algumas características e informações importantes sobre


bibliotecas em Python:

● Reutilização de Código: As bibliotecas contêm código pré-escrito que


aborda problemas comuns, como manipulação de arquivos, processamento
de texto, cálculos matemáticos, acesso à web, criação de interfaces gráficas,
entre outros. Ao importar uma biblioteca, você pode usar suas funções e
classes em seu próprio código, economizando tempo e esforço.

e o código CRC UZDIGMX2.


● Modularidade: As bibliotecas são geralmente organizadas de forma
modular, o que significa que estão divididas em partes menores, chamadas
de módulos. Isso torna mais fácil encontrar e utilizar as funcionalidades
específicas que você precisa, sem carregar o código inteiro da biblioteca.
● Importação: Para usar uma biblioteca em Python, você precisa importá-la
em seu código usando a palavra-chave import. Por exemplo, para importar
a biblioteca math, você usaria o comando a seguir.

import math

357
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Bibliotecas Padrão: Python possui uma biblioteca padrão rica que vem
com a instalação padrão da linguagem. Isso inclui bibliotecas como os para
operações de sistema operacional, datetime para manipulação de datas e
horas, json para trabalhar com dados no formato JSON, random para
geração de números aleatórios e muitas outras.
● Bibliotecas de Terceiros: Além da biblioteca padrão, existem inúmeras

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
bibliotecas de terceiros disponíveis no repositório PyPI (Python Package
Index) que você pode instalar e usar para uma ampla variedade de tarefas.
Alguns exemplos populares incluem Numpy para computação numérica,
Pandas para análise de dados, Matplotlib para visualização de dados e
Requests para fazer solicitações HTTP.
● Documentação: A maioria das bibliotecas Python é bem documentada, o
que significa que você pode encontrar informações detalhadas sobre como
usá-las, incluindo exemplos e tutoriais, nos sites oficiais ou em outros
recursos.

Agora iremos conhecer algumas bibliotecas que são importantes no


contexto do desenvolvimento em Inteligência Artificial, que foram
cuidadosamente selecionadas. Algumas serão utilizadas nos próximos
capítulos.

e o código CRC UZDIGMX2.

Reflita: Como o uso de bibliotecas pode afetar a manutenção e


as atualizações de um projeto de software?

358
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14.1. Matplotlib
Matplotlib é uma ferramenta fundamental no universo da programação em
Python, especialmente para quem lida com análise e visualização de dados.
Com ela é possível criar gráficos e visualizações personalizadas de alta
qualidade para representar dados de forma eficaz.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Uma característica importante é sua flexibilidade, pois oferece uma ampla
gama de recursos e opções de personalização, permitindo que você ajuste
praticamente todos os aspectos do seu gráfico, desde cores até títulos, rótulos
de eixo e escalas. Isso significa que você pode criar gráficos que atendam às
necessidades específicas do seu projeto.

Além disso, o Matplotlib segue uma abordagem orientada a objetos, o que


significa que você manipula objetos Python para criar e personalizar seus
gráficos. Isso proporciona um alto nível de controle e versatilidade na criação
de visualizações de dados. Também é altamente compatível com outras
bibliotecas de análise de dados, como NumPy e Pandas. Você pode criar
gráficos diretamente a partir de matrizes NumPy ou estruturas de dados
Pandas, tornando-o uma escolha natural para a análise exploratória de dados.

e o código CRC UZDIGMX2.


Além disso, Matplotlib oferece suporte a vários formatos de saída,
permitindo que você salve seus gráficos em formatos como PNG, PDF, SVG e
outros, tornando-os adequados para relatórios, apresentações e publicações.

O caminho mais rápido e fácil de instalar a biblioteca Matplotlib em sua


máquina é usar o seguinte comando:

pip install matplotlib

359
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Aqui estão alguns exemplos de comandos em Matplotlib:

1. import matplotlib.pyplot as plt


2.
3. # Exemplo de gráfico de linha

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
4. plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
5. plt.show()

O código em questão é criado para exibir um gráfico de linha. Primeiro,


importa o módulo pyplot da biblioteca e o renomeia como plt. Em seguida,
utiliza a função plt.plot para desenhar um gráfico de linha, conectando os
pontos (1, 10), (2, 20), (3, 25) e (4, 30) definidos pelos arrays no eixo X [1, 2, 3, 4]
e no eixo Y [10, 20, 25, 30]. Por fim, plt.show() é chamado para exibir o gráfico
em uma janela separada.

e o código CRC UZDIGMX2.

Figura 215: Gráfico de linha gerado pela função plot


Fonte: Saída gerada pelo código

360
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. import matplotlib.pyplot as plt


2.
3. plt.plot([1, 2, 3, 4], [10, 20, 25, 30],
color='red', marker='o', linestyle='--')
4. plt.title('Exemplo de Gráfico')

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
5. plt.xlabel('Eixo X')
6. plt.ylabel('Eixo Y')
7. plt.grid(True)
8. plt.show()

O código usa a biblioteca matplotlib no Python para criar um gráfico de


linha vermelha com marcadores em forma de círculo e linhas tracejadas,
conectando pontos específicos. Ele adiciona um título, rótulos para os eixos X e
Y, e ativa uma grade de fundo, antes de exibir o gráfico.

e o código CRC UZDIGMX2.

Figura 216: Gráfico de linha gerado pela função plot


Fonte: Saída gerada pelo código

361
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. import matplotlib.pyplot as plt


2.
3. # Exemplo de gráfico de barras
4. plt.bar(['A', 'B', 'C', 'D'], [3, 7, 2, 5])

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
5. plt.show()

A biblioteca oferece funcionalidades e recursos que permitem aos usuários


representar dados de várias maneiras diferentes, escolhendo o tipo de gráfico
que melhor se adapta aos dados e às necessidades de visualização. A
implementação acima representa um conjunto de dados sendo representado
no formato de gráfico de barras (figura 217).

e o código CRC UZDIGMX2.

Figura 217: Gráfico de barras gerado pela função plot


Fonte: Saída gerada pelo código

362
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. import matplotlib.pyplot as plt


2.
3. plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
4. plt.xlim(0, 5)

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
5. plt.ylim(0, 35)
6. plt.xticks([1, 2, 3, 4])
7. plt.yticks([0, 10, 20, 30])
8. plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
9. plt.annotate('Ponto Importante', xy=(2, 20),
xytext=(2.5, 22),
10. arrowprops=dict(arrowstyle='->',
color='red'))
11. plt.text(3, 15, 'Texto Adicional', fontsize=12,
color='blue')
12. plt.show()

e o código CRC UZDIGMX2.


Este código serve para criar um gráfico de linha detalhado. Ele começa
desenhando um gráfico conectando pontos específicos. Em seguida, define os
limites para os eixos X e Y com plt.xlim(0, 5) e plt.ylim(0, 35), e personaliza os
ticks (marcadores) dos eixos com plt.xticks([1, 2, 3, 4]) e plt.yticks([0, 10, 20,
30]). Ele também adiciona uma anotação em um ponto específico (2, 20) com
um texto 'Ponto Importante' e uma seta indicativa, e inclui um texto adicional
'Texto Adicional' com plt.text() na posição (3, 15) com cor azul e tamanho de
fonte 12. Verifique a saída gerada na figura(308).

363
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 218: Gráfico com comentários e limites de eixo definidos.
Fonte: Saída gerada pelo código

O código a seguir usa a biblioteca matplotlib para criar dois subplots em


uma janela: o primeiro é um gráfico de linha e o segundo um gráfico de barras,
organizados em uma grade 2x2. Ele exibe o gráfico de linha no primeiro
e o código CRC UZDIGMX2.
quadrante e o gráfico de barras no segundo, antes de mostrar ambos com
plt.show(). A saída gerada pelo código pode ser observada na figura 219.

364
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. import matplotlib.pyplot as plt


2.
3. # Criando subplots
4. plt.subplot(2, 2, 1) # 2 linhas, 2 colunas, primeiro
subplot

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
5. plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
6.
7. plt.subplot(2, 2, 2) # 2 linhas, 2 colunas, segundo
subplot
8. plt.bar(['A', 'B', 'C', 'D'], [3, 7, 2, 5])
9.
10. plt.show()

e o código CRC UZDIGMX2.

Figura 219: Gráfico com comentários e limites de eixo definidos.


Fonte: Saída gerada pelo código

365
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O comando savefig é usado para salvar o gráfico no disco. Você fornece um


nome de arquivo como argumento (por exemplo, 'meu_grafico.png'). O formato
do arquivo é determinado pela extensão do nome do arquivo; neste exemplo,
estamos salvando-o como um arquivo de imagem PNG.

Após a execução do código, um arquivo chamado 'meu_grafico.png' será

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
criado no diretório de trabalho atual (a menos que você especifique um
caminho de arquivo diferente). Esse arquivo conterá uma imagem do gráfico
criado, permitindo que você compartilhe ou incorpore o gráfico em
documentos ou apresentações.

A exportação de gráficos é uma tarefa importante quando se trabalha com


visualizações de dados, pois permite que você documente e compartilhe suas
descobertas de forma eficaz com outras pessoas. Abaixo segue um exemplo de
código mostrando a utilização deste comando.

1. import matplotlib.pyplot as plt


2.
3. plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
4. plt.savefig('meu_grafico.png')

e o código CRC UZDIGMX2.

366
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14.2. Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração da IDE escolhida.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades de experimentação


não compõem a avaliação e não haverá correção formal por parte dos
instrutores; o objetivo é a autoaprendizagem e prática. As respostas e
dicas de desenvolvimento para cada atividade estão disponíveis em
arquivos específicos no Google Sala de Aula, na aba Etapa
Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos


seguintes símbolos:
e o código CRC UZDIGMX2.

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

367
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 54 ●

Em ciência de dados, gráficos são ferramentas essenciais para explorar e


comunicar insights em um conjunto de dados. Nesta atividade, o gráfico de linha
criará uma representação visual clara da função quadrática, uma das funções
fundamentais na matemática. Assim crie um gráfico de linha que mostre a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
relação entre os números de 1 a 10 e seus quadrados. Adicione títulos aos eixos
X e Y, e também um título ao gráfico.

Atividade de experimentação 55 ●●

Imagine que você é um analista de dados em uma loja de varejo. Sua tarefa
é apresentar um relatório sobre o desempenho de vendas de diversos produtos.
Para tornar o relatório mais acessível e compreensível, você decide incluir um
gráfico de barras que mostra visualmente as vendas de diferentes categorias de.
Dessa forma crie um gráfico de barras para ilustrar as vendas de diferentes
produtos em uma loja. Use pelo menos 5 produtos com valores de vendas
fictícios. Adicione rótulos apropriados aos eixos e um título ao gráfico.

Atividade de experimentação 56 ●●
e o código CRC UZDIGMX2.

Gere dois conjuntos de 20 números aleatórios e crie um gráfico de dispersão


usando esses números. Defina cores e marcadores diferentes para os pontos.

368
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 57 ●●●

Imagine que você é um analista de dados que precisa apresentar uma visão
abrangente de um conjunto de dados complexos. Cada tipo de gráfico pode
revelar diferentes aspectos e tendências nos dados, fornecendo uma
compreensão mais rica e multifacetada. Por exemplo, você pode estar

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
analisando dados de vendas de uma empresa, tendências meteorológicas ao
longo do tempo, ou resultados de uma pesquisa de mercado. Com base nessas
informações crie uma figura com 4 subplots: um gráfico de linha, um gráfico de
barras, um gráfico de dispersão e um histograma, com dados à sua escolha.
Adicione títulos a cada subplot para identificar claramente o tipo de gráfico.

Para a resolução de algumas destas atividades utilize a


biblioteca random.

Por ser uma biblioteca que já faz parte da biblioteca padrão de


e o código CRC UZDIGMX2.
Python, não há necessidade de instalação, apenas importe-a no
código usando o comando a seguir.

import random

369
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atenção: Não será apresentada uma seção de atividades de


experimentação referente à esta biblioteca e as apresentadas a
seguir. Os exemplos apresentados devem ser testados para
melhor compreensão e aproveitamento do conteúdo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3.3.14.3. Numpy
A biblioteca NumPy, uma abreviação para "Numerical Python", é uma das
bibliotecas usadas para computação científica em Python. Ela oferece suporte
para grandes e arrays multidimensionais e matrizes, junto com uma ampla
coleção de funções matemáticas de alto nível para operar nestes arrays.

Segundo Santiago Jr. (2018),

“O NumPy é bastante útil para executar várias tarefas matemáticas como


integração numérica, diferenciação, interpolação, extrapolação e muitas
outras. Possui também funções incorporadas para álgebra linear e geração
de números aleatórios. É uma biblioteca que pode ser usada em conjunto
com o Matplotlib, substituindo o Matlab quando se trata de tarefas
matemáticas.” e o código CRC UZDIGMX2.

Suas principais características incluem:

● Arrays N-dimensionais: NumPy oferece uma estrutura de dados


poderosa, o ndarray, que permite a manipulação eficiente de arrays de
qualquer número de dimensões.
● Funções matemáticas e de álgebra linear: NumPy inclui funções para
operações matemáticas básicas (como soma, subtração, multiplicação,
divisão), funções estatísticas, álgebra linear, entre outras.

370
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Integração com outras bibliotecas: NumPy é frequentemente usado


em conjunto com outras bibliotecas científicas e de análise de dados em
Python, como Pandas, SciPy, Matplotlib, etc.
● Broadcasting e indexação avançada: o NumPy suporta conceitos como
broadcasting (que permite operações aritméticas entre arrays de
diferentes tamanhos) e indexação avançada (que facilita a manipulação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e extração de dados de arrays).
● Base para computação científica: muitas bibliotecas Python para
computação científica e análise de dados são construídas sobre o
NumPy, tornando-o um componente essencial do ecossistema Python
para essas aplicações.

3.3.14.3.1. Instalação do Numpy


Para instalar a biblioteca NumPy, você precisa ter o Python e o pip
(gerenciador de pacotes do Python) instalados no seu sistema. Se você já tem
esses programas, a instalação do NumPy é bastante simples. Aqui estão os
passos:

1. Abra o terminal ou prompt de comando: dependendo do seu sistema


operacional (Windows, macOS, Linux), abra o terminal ou prompt de e o código CRC UZDIGMX2.

comando.
2. Verifique se o Python e o pip estão instalados: Você pode verificar se
o Python está instalado digitando python --version ou python3 --version.
Para verificar o pip, digite pip --version ou pip3 --version.
3. Instale o NumPy: Se o Python e o pip estiverem instalados, você pode
instalar o NumPy digitando o seguinte comando:

pip install numpy

371
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O comando apresentado baixará e instalará a última versão do NumPy.

4. Verifique a instalação: para verificar se o NumPy foi instalado


corretamente, abra o interpretador Python (digitando python ou
python3 no terminal) e tente importar a biblioteca NumPy com o
comando import numpy. Se não houver erros, a instalação foi

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
bem-sucedida.
5. Atualize pip, se necessário: se encontrar algum problema durante a
instalação, pode ser útil atualizar o pip para a versão mais recente. Isso
pode ser feito com o comando pip install --upgrade pip.

e o código CRC UZDIGMX2.

Figura 220: Realizando a atualização do pip


Fonte: as Autoras.

A biblioteca NumPy oferece uma variedade de funcionalidades que a


tornam uma ferramenta essencial para computação científica, análise de dados,
e engenharia em Python. Aqui estão algumas de suas funcionalidades mais
importantes:

372
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Arrays multidimensionais: NumPy é mais conhecido por seus arrays


N-dimensionais (ndarray). Estes arrays são mais eficientes e versáteis do que
as listas padrão do Python, especialmente para operações matemáticas e
científicas.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
1. import numpy as np
2. a = np.array([[1, 2, 3], [4, 5, 6]])
3. print(a)

● Operações matemáticas eficientes: NumPy permite realizar operações


matemáticas e estatísticas eficientes em arrays inteiros sem a necessidade
de loops explícitos em Python. Isso inclui adição, subtração, multiplicação,
divisão, operações exponenciais e logarítmicas, entre outras.

1. import numpy as np
2. a = np.array([[1, 2, 3], [4, 5, 6]])
3. print('A = \n', a)
4. print('***' *10)

e o código CRC UZDIGMX2.


5. b = np.array([1, 2, 3])
6. print('B = \n',b)
7. print('***' *10)
8. c = a * b
9. print('C = \n',c)

373
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Funções de álgebra linear: a biblioteca inclui funções para resolver


equações lineares, encontrar autovalores e autovetores, calcular
determinantes, e realizar outras operações de álgebra linear.

1. import numpy as np
2. # Definindo a matriz A e o vetor B

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3. A = np.array([[4, 2, 1], [2, 3, 5], [1, 5, 7]])
4. B = np.array([9, 8, 10])
5.
6. # Resolvendo o sistema de equações Ax = B
7. x = np.linalg.solve(A, B)
8.
9. # Calculando o determinante de A
10. determinante = np.linalg.det(A)
11.
12. # Encontrando autovalores e autovetores de A
13. autovalores, autovetores = np.linalg.eig(A)
14.
15. # Realizando a decomposição em valores singulares

e o código CRC UZDIGMX2.


(SVD)
16. u, s, vh = np.linalg.svd(A)
17.
18. print("Solução do sistema Ax = B:", x)
19. print("Determinante de A:", determinante)
20. print("Autovalores de A:", autovalores)
21. print("Autovetores de A:", autovetores)
22. print("Decomposição SVD de A: U=", u, ", S=", s, ",
VH=", vh)

374
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Transformadas de Fourier: NumPy fornece ferramentas para realizar


transformadas de Fourier, que são essenciais em muitos campos de
processamento de sinal e análise de dados.

1. import numpy as np

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
2. import matplotlib.pyplot as plt
3. # Gerando um sinal de exemplo
4. t = np.linspace(0, 1.0, 500)
5. sinal = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 10 * t)
# Sinal com duas frequências
6.
7. # Realizando a Transformada de Fourier
8. fft = np.fft.fft(sinal)
9. # Preparando o vetor de frequência para plotagem
10. freq = np.fft.fftfreq(len(t), d=t[1]-t[0])
11. # Manipulando o espectro de frequências (por exemplo,
removendo frequências acima de 8 Hz)
12. fft[np.abs(freq) > 8] = 0
13. # Realizando a Transformada Inversa de Fourier
14. sinal_filtrado = np.fft.ifft(fft) e o código CRC UZDIGMX2.

15.
16. # Plotando os resultados
17. plt.figure(figsize=(12, 6))
18. plt.subplot(2, 1, 1)
19. plt.plot(t, sinal)
20. plt.title('Sinal Original')

375
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Geração de números aleatórios: NumPy tem um sub módulo


numpy.random para gerar números aleatórios e realizar amostragem
estatística.

1. import numpy as np

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
2. # Geração de um número aleatório simples entre 0 e 1
3. num_aleatorio = np.random.random()
4. print("Número aleatório simples:", num_aleatorio)
5. # Criação de um array 3x3 com números aleatórios
seguindo uma distribuição uniforme [0, 1)
6. array_uniforme = np.random.rand(3, 3)
7. print("Array 3x3 com distribuição uniforme:\n",
array_uniforme)
8. # Criação de um array 3x3 com números aleatórios
seguindo uma distribuição normal (Gaussiana) com
média 0 e desvio padrão 1
9. array_normal = np.random.randn(3, 3)
10. print("Array 3x3 com distribuição normal:\n",
array_normal)
e o código CRC UZDIGMX2.
11. # Geração de um array de inteiros e embaralhamento
dos elementos
12. array_inteiros = np.arange(10) # Cria um array de 0
a 9
13. np.random.shuffle(array_inteiros)
14. print("Array de inteiros embaralhado:",
array_inteiros)

376
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Manipulação de forma de array: pode-se alterar a forma de arrays sem


mudar seus dados, o que inclui operações como transposição, remodelação
(reshape) e união de arrays.

1. import numpy as np

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
2. # Criando um array inicial
3. array_original = np.arange(12) # Um array de 0 a 11
4. # Redimensionando o array para uma forma 3x4
5. array_reshape = array_original.reshape(3, 4)
6. print("Array redimensionado (3x4):\n", array_reshape)
7. # Transpondo o array
8. array_transposto = array_reshape.T
9. print("Array transposto:\n", array_transposto)
10. # Empilhamento vertical e horizontal de arrays
11. array_v1 = np.array([1, 2, 3])
12. array_v2 = np.array([4, 5, 6])
13. array_vertical = np.vstack((array_v1, array_v2))
14. print("Empilhamento vertical:\n", array_vertical)
15. array_horizontal = np.hstack((array_v1.reshape(-1, 1),
array_v2.reshape(-1, 1))) e o código CRC UZDIGMX2.

16. print("Empilhamento horizontal:\n", array_horizontal)


17. # Dividindo um array em 3 partes iguais
18. array_dividido = np.split(array_original, 3)
19. print("Array dividido em 3 partes:", array_dividido)

377
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Broadcasting: capacidade de realizar operações aritméticas em arrays de


diferentes tamanhos e formas, facilitando cálculos complexos sem a
necessidade de replicar dados.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
1. import numpy as np
2.
3. # Adicionar um escalar a um array
4. array = np.array([[1, 2, 3], [4, 5, 6]])
5. escalar = 10
6. resultado_escalar = array + escalar
7. print("Adicionar escalar a array:\n",
resultado_escalar)
8.
9. # Multiplicar cada linha de uma matriz por um vetor
10. matriz = np.array([[1, 2, 3], [4, 5, 6]])
11. vetor = np.array([1, 2, 3])
12. resultado_multiplicacao = matriz * vetor
13. print("Multiplicar matriz por vetor:\n",
e o código CRC UZDIGMX2.
resultado_multiplicacao)
14.
15. # Adicionar um vetor a cada linha de uma matriz
16. vetor_linha = np.array([1, 2, 3])
17. resultado_soma = matriz + vetor_linha
18. print("Adicionar vetor a cada linha de uma
matriz:\n", resultado_soma)

378
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Operações lógicas e comparação: NumPy facilita a realização de


operações lógicas (como AND, OR, NOT) e comparações em arrays.

1. import numpy as np
2.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3. # Criando um array de exemplo
4. array = np.array([1, 2, 3, 4, 5, 6])
5.
6. # Operações de Comparação
7. # Encontrar elementos maiores que 3
8. maior_que_3 = array > 3
9. print("Elementos maiores que 3:", maior_que_3)
10.
11. # Combinação de Operações Lógicas
12. # Encontrar elementos menores que 5 E maiores que 2
13. menor_que_5_e_maior_que_2 = np.logical_and(array > 2,
array < 5)
14. print("Elementos menores que 5 e maiores que 2:",

e o código CRC UZDIGMX2.


menor_que_5_e_maior_que_2)
15.
16. # Indexação Booleana
17. # Selecionar elementos que são maiores que 3
18. elementos_selecionados = array[array > 3]
19. print("Elementos maiores que 3:",
elementos_selecionados)

379
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Funções de entrada/saída: a biblioteca permite ler e escrever arrays em


arquivos, incluindo a leitura de arquivos de texto e a gravação em formatos
específicos para eficiência.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
1. import numpy as np
2.
3. # Criando um array de exemplo
4. array = np.array([[1, 2, 3], [4, 5, 6]])
5.
6. # 1. Escrever um Array NumPy para um Arquivo de Texto
(CSV)
7. np.savetxt("array.csv", array, delimiter=",")
8.
9. # 2. Ler um Array NumPy de um Arquivo de Texto (CSV)
10. array_lido = np.loadtxt("array.csv", delimiter=",")
11. print("Array lido do arquivo CSV:\n", array_lido)
12.
13. # 3. Salvar um Array NumPy em um Formato Binário

e o código CRC UZDIGMX2.


14. np.save("array.npy", array)
15.
16. # 4. Carregar um Array NumPy de um Formato Binário
17. array_carregado = np.load("array.npy")
18. print("Array carregado do arquivo binário:\n",
array_carregado)

380
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Outras possibilidades de uso desta biblioteca:

● Tratamento de dados ausentes: NumPy suporta operações com arrays


que incluem dados ausentes ou NaN (não um número).
● Indexação sofisticada: NumPy suporta indexação avançada, permitindo
selecionar e manipular elementos de arrays de maneiras complexas.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● Integração com C/C++ e Fortran: pode ser integrado com código C e
Fortran, permitindo que operações pesadas de processamento sejam
escritas nessas linguagens para melhorar o desempenho.

3.3.14.3.Pandas
A biblioteca Pandas é uma das ferramentas mais populares e poderosas
para análise de dados em Python. Foi desenvolvida por Wes McKinney e é
especialmente projetada para trabalhar com dados estruturados de maneira
fácil e intuitiva. Essa é a biblioteca mais adequada para iniciar as suas análises
exploratórias de dados, pois ela nos permite ler, manipular, agregar e plotar os
dados em poucos passos.

Em uma simples definição, DataFrame é como se fosse uma planilha de


Excel ou uma tabela de banco de dados. É composto por colunas, linhas e
e o código CRC UZDIGMX2.
índice. Quando nós lemos algum arquivo de dados, ele se torna um DataFrame
para o Pandas. O nome Pandas é derivado de panel data (dados em painel), um
termo de econometria para conjuntos de dados estruturados.

De acordo com Mulinari (2021), “o surgimento da biblioteca, no início de 2008,


começou com o propósito de obter uma ferramenta de processamento de dados de
alto desempenho, com recursos flexíveis de manipulação de planilhas e de banco de
dados relacionais.”

A seguir estão algumas características e funcionalidades chave do Pandas:

381
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Estruturas de dados principais:


○ DataFrame: uUma estrutura de dados bidimensional com colunas que
podem ser de diferentes tipos. É semelhante a uma tabela de banco de
dados, uma planilha Excel ou uma tabela SQL. Cada coluna em um
DataFrame é uma Series.
○ Séries: uma estrutura de dados unidimensional que é uma coluna de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
um DataFrame. Pode ser pensada como uma única coluna de dados,
com índices.
● Manipulação de dados:
○ Permite a importação e exportação de dados em uma variedade de
formatos, incluindo CSV, Excel, SQL, JSON, entre outros.
○ Facilita a manipulação de dados ausentes, redundantes ou
malformados.
○ Possui ferramentas para remodelar, girar e agregar dados.
● Análise de dados:
○ Oferece funcionalidades para realizar operações de grupo
(agrupamento), combinar dados de diferentes fontes (join e merge),
além de filtragem e seleção de dados.
○ Suporta operações de janela deslizante (rolling) e expansão para análise

e o código CRC UZDIGMX2.


de séries temporais.
● Funcionalidades de indexação:
○ Indexação avançada que permite selecionar e manipular dados,
incluindo indexação por rótulo, indexação booleana, indexação baseada
em fatias, e indexação baseada em fancy (seleção complexa).
● Desempenho:
○ O Pandas é construído sobre o NumPy, o que significa que é rápido e
eficiente para operações matemáticas, especialmente para dados de
tipos homogêneos.

382
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Integração com outras bibliotecas:


○ Integra-se bem com muitas outras bibliotecas de ciência de dados em
Python, como NumPy para operações matemáticas, Matplotlib e
Seaborn para visualização de dados, e scikit-learn para Machine Learning.
● Ampla aplicabilidade:
○ É amplamente utilizado em finanças, economia, estatística, análise de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
dados, ciência de dados, Machine Learning, e em muitos outros campos
que requerem análise e manipulação de dados.

3.3.14.4.1. Instalação do Pandas


Se você já tem o Python e o pip, pode instalar o Pandas usando o seguinte
comando:

pip install pandas

Para verificar se o Pandas foi instalado corretamente, você pode tentar


importá-lo em um interpretador Python. Abra o Python no terminal digitando
python e depois tente:
e o código CRC UZDIGMX2.

import pandas as pd

Com o Pandas instalado, vamos criar um exemplo prático que demonstra


algumas funcionalidades básicas, incluindo a criação de um DataFrame, a
manipulação de dados e operações básicas de análise. Para este exemplo,
vamos supor um conjunto de dados simples que representa as vendas de uma
loja.

383
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. import pandas as pd
2. # Dados de exemplo
3. dados = {
4. 'Data': ['2024-01-01', '2024-01-02',
'2024-01-03', '2024-01-04'],

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
5. 'Vendas_Produto_A': [100, 120, 90, 110],
6. 'Vendas_Produto_B': [80, 85, 88, 85]
7. }
8. # Criar um DataFrame
9. df = pd.DataFrame(dados)
10. # Converter a coluna 'Data' para o tipo datetime
11. df['Data'] = pd.to_datetime(df['Data'])
12. # Manipulação de Dados: Adicionar uma coluna
'Receita_Total'
13. preco_produto_a = 20 # Supondo um preço fixo
14. preco_produto_b = 15
15. df['Receita_Total'] =
df['Vendas_Produto_A']*preco_produto_a +
df['Vendas_Produto_B']*preco_produto_b
e o código CRC UZDIGMX2.
16. # Análise Básica
17. media_vendas_a = df['Vendas_Produto_A'].mean()
18. receita_total = df['Receita_Total'].sum()
19. print("DataFrame com vendas e receita total:")
20. print(df)
21. print("\nMédia de Vendas - Produto A:",
media_vendas_a)
22. print("Receita Total:", receita_total)

384
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14.4.Tensorflow
TensorFlow é uma biblioteca de software de código aberto para
computação numérica que utiliza grafos9 de fluxo de dados. Foi originalmente
desenvolvida por pesquisadores e engenheiros da equipe do Google Brain
dentro da organização de pesquisa de Inteligência Artificial do Google para

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
atender às necessidades de sistemas capazes de construir e treinar redes
neurais para detectar e decifrar padrões e correlações, análogos à maneira
como os humanos aprendem e raciocinam.

Quando um software é “código aberto”, isso significa que seu código-fonte


está disponível abertamente, com uma licença que permite
visualizar/estudar, modificar e também, em muitas vezes, distribuir o
software de graça para qualquer pessoa ou empresa, para qualquer
finalidade (Souza, 2018, p. 23).

O Google desenvolveu o TensorFlow para simplificar a criação de algoritmos


de Aprendizado de Máquina, com foco no Deep Learning, um tipo de
Aprendizado de Máquina que usa redes neurais artificiais. Algoritmos de Deep
Learning requerem grandes conjuntos de dados e capacidade de
processamento computacional.
e o código CRC UZDIGMX2.

O TensorFlow é capaz de treinar e operar redes neurais profundas, aplicadas


em tarefas como classificação de dígitos escritos à mão, reconhecimento de
imagens, análise de linguagem natural e tradução automática. Ele também
é eficaz em simulações que envolvem equações diferenciais parciais. Uma
vantagem do TensorFlow é sua habilidade de suportar a produção em larga
escala, utilizando os mesmos modelos empregados no treinamento (Souza,
2018, p. 23).
9
Grafos são uma estrutura de dados fundamental em ciência da computação e matemática, utilizada para
modelar relações entre objetos

385
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Aqui estão algumas características e funcionalidades chave do TensorFlow:

● Redes neurais e Aprendizado Profundo: é mais conhecido por sua


capacidade de construção e treinamento de redes neurais profundas, que
são fundamentais em muitas aplicações de Inteligência Artificial, como
Visão Computacional, Processamento de Linguagem Natural e previsões.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● Flexibilidade e escalabilidade: é projetada para ser flexível na definição de
algoritmos e escalável em termos de processamento, podendo ser
executada em CPUs, GPUs e até em clusters de servidores de alto
desempenho.
● Grafos de fluxo de dados: permite aos usuários criar grafos de fluxo de
dados, em que os nós representam operações matemáticas e as bordas
representam os dados multidimensionais (tensores) que fluem entre eles.
Isso facilita a construção de modelos complexos de Aprendizado de
Máquina.
● Eager execution: característica que permite uma interface mais interativa e
flexível para a construção de grafos, tornando mais fácil e acessível a
depuração e a experimentação de modelos.
● TensorBoard: ferramenta de visualização que permite visualizar
graficamente o treinamento de modelos, métricas, e outros aspectos de

e o código CRC UZDIGMX2.


Aprendizado de Máquina.
● Integração com Keras: TensorFlow 2.x integra o Keras diretamente,
tornando-o mais acessível e fácil de usar para a construção de modelos de
Aprendizado de Máquina, especialmente para usuários que estão
começando.
● Aplicações em diversos setores: TensorFlow é utilizado em muitos setores,
desde pequenas startups até grandes empresas, em áreas como saúde,
automotiva, finanças, entre outras.

386
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14.4.1. Utilização do Tensorflow


Se você já tem o Python e o pip, pode instalar o Tensorflow usando o
seguinte comando:

pip install tensorflow

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Para verificar se o Tensorflow foi instalado corretamente, você pode tentar
importá-lo em um interpretador Python. Abra o Python no terminal digitando
python ou python3 e depois tente:

import tensorflow as tf

Com o Tensorflow instalado vamos criar um exemplo básico para construir e


treinar um modelo simples de rede neural. Este modelo será uma rede neural
densa (também conhecida como rede neural totalmente conectada) que pode
ser usada, por exemplo, para classificar dígitos escritos à mão do famoso
conjunto de dados MNIST.

e o código CRC UZDIGMX2.


MNIST (Modified National Institute of Standards and Technology
database) é um dos conjuntos de dados mais conhecidos na comunidade
de Aprendizado de Máquina e Visão Computacional. É frequentemente
utilizado para algoritmos de classificação de imagens. Consiste em
dígitos manuscritos, abrangendo números de 0 a 9. As imagens deste
conjunto são normalizadas para se ajustarem a uma matriz de 28×28
pixels, com cada pixel indicando um tom em escala de cinza. No total, o
MNIST possui 60.000 imagens para treinamento e 10.000 para teste.

387
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. import tensorflow as tf
2. from tensorflow.keras.datasets import mnist
3. from tensorflow.keras.models import Sequential
4. from tensorflow.keras.layers import Dense, Flatten
5. from tensorflow.keras.optimizers import Adam

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
6. # Carregar e preparar o conjunto de dados MNIST
7. (mnist_train_images, mnist_train_labels),
(mnist_test_images, mnist_test_labels) =
mnist.load_data()
8. mnist_train_images, mnist_test_images =
mnist_train_images / 255.0, mnist_test_images / 255.0
9. # Construir o modelo de rede neural
10. model = Sequential([
11. Flatten(input_shape=(28, 28)), # Camada de entrada
(aplainamento da imagem 28x28)
12. Dense(128, activation='relu'), # Camada oculta com
128 neurônios
13. Dense(10, activation='softmax') # Camada de saída
com 10 neurônios (um para cada dígito)
14. ])
15. # Compilar o modelo
16. model.compile(optimizer=Adam(),

e o código CRC UZDIGMX2.


17. loss='sparse_categorical_crossentropy',
18. metrics=['accuracy'])
19.
20. # Treinar o modelo
21. model.fit(mnist_train_images, mnist_train_labels,
epochs=5)
22. # Avaliar o modelo
23. test_loss, test_accuracy =
model.evaluate(mnist_test_images, mnist_test_labels)
24. print('Acurácia no conjunto de teste:', test_accuracy)

388
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14.5. Keras
Keras é uma biblioteca de redes neurais de alto nível, escrita em Python e
capaz de rodar em cima de backends de Aprendizado de Máquina como
TensorFlow, CNTK ou Theano. Foi desenvolvida com o foco em permitir
experimentação rápida e eficiente, sendo uma escolha ideal para iniciantes e

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
pesquisadores que buscam um framework de fácil compreensão e utilização.

É uma API, do inglês Application Programming Interface que significa Interface


de Programação de Aplicativos, de alto nível do TensorFlow para criar e treinar
modelos de Aprendizado Profundo e utilizada para prototipagem rápida,
pesquisa de ponta e produção, com três principais vantagens (Tensorflow, 2021):

● Fácil de usar: tem uma interface simples e consistente otimizada para os


casos de uso comuns, fornecendo feedback claro e prático para os erros
do usuário;
● Modelos modulares e compostos: são feitos conectando elementos
configuráveis, com poucas restrições;
● Fácil de estender: possui elementos personalizados que expressam
ideias para pesquisa, possibilitando criar novas camadas, métricas e
funções.
e o código CRC UZDIGMX2.

A biblioteca possui principalmente um modelo sequencial que é apropriado


para uma pilha de camadas simples, em que cada camada tem exatamente um
tensor (matriz) de entrada e um de saída. Um modelo sequencial não é
apropriado quando (Tensorflow, 2021):

● O modelo tem várias entradas ou várias saídas;


● Qualquer uma de suas camadas tem várias entradas ou várias saídas;
● Necessário fazer o compartilhamento de camada;

389
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Precisar de uma topologia não linear (por exemplo, uma conexão


residual, um modelo multi ramal).

Aqui estão algumas das principais características do Keras:

● Interface amigável: tem uma interface simples e intuitiva, que facilita a


construção de modelos de redes neurais. Ela permite aos usuários

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
expressar redes neurais de maneira clara e concisa.
● Modular e componível: opera com a ideia de que tudo é um módulo.
Um modelo Keras é composto por várias camadas configuráveis, que
podem ser facilmente combinadas e personalizadas para atender a uma
grande variedade de aplicações de Aprendizado de Máquina.
● Fácil de estender: é fácil adicionar novos módulos como novas
camadas, funções de perda e otimizadores, o que torna o Keras
personalizável e extensível.
● Suporta convencionais e inovadoras arquiteturas de rede neural:
com o Keras, você pode construir facilmente redes neurais
convolucionais (CNNs), redes neurais recorrentes (RNNs) e combinar
ambas.
● Execução em CPU e GPU: Keras é capaz de rodar em cima de várias
plataformas de Aprendizado de Máquina, e pode se aproveitar de CPUs
e o código CRC UZDIGMX2.
e GPUs para acelerar o processo de treinamento.
● Integração com backends de Aprendizado de Máquina: embora Keras
tenha sido originalmente desenvolvido como uma interface para a
biblioteca Theano, ela agora suporta múltiplos backends, com
TensorFlow sendo o mais popular.
● Foco em experimentação rápida: a filosofia por trás do Keras é facilitar
a rápida experimentação. Em pesquisa, a habilidade de experimentar
rapidamente ideias é chave para encontrar uma boa solução.

390
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14.5.1. Utilização do Keras


Se você já tem o Python e o pip e o Tensorflow instalados, você pode utilizar
o Keras por meio do seguinte comando em seu interpretador:

from tensorflow import keras

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Agora, você pode acessar as funcionalidades do Keras por meio do módulo
tf.keras. Por exemplo, se você quiser importar modelos sequenciais, camadas
densas, ou outras funcionalidades do Keras, você faria da seguinte maneira:

from tensorflow.keras.models import Sequential


from tensorflow.keras.layers import Dense, Flatten,
Conv2D

Vamos criar um exemplo prático utilizando o Keras (integrado ao


TensorFlow) para construir e treinar um modelo simples de rede neural. Este
modelo será uma rede neural densa, frequentemente usada para classificação
básica. Vamos usar o conjunto de dados de moda MNIST, que contém imagens
de diferentes tipos de roupas, como um exemplo.

e o código CRC UZDIGMX2.


Aqui estão os passos que seguiremos:

1. Importar as bibliotecas necessárias.


2. Carregar o conjunto de dados.
3. Normalizar os dados de imagem.
4. Construir o modelo de rede neural.
5. Compilar o modelo.
6. Treinar o modelo.
7. Avaliar o desempenho do modelo.

391
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. import tensorflow as tf
2. from tensorflow.keras.models import Sequential
3. from tensorflow.keras.layers import Dense, Flatten
4. # Carregar o conjunto de dados Fashion MNIST
5. fashion_mnist = tf.keras.datasets.fashion_mnist

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
6. (train_images, train_labels), (test_images,
test_labels) = fashion_mnist.load_data()
7. # Normalizar os dados de imagem
8. train_images = train_images / 255.0
9. test_images = test_images / 255.0
10.
11. # Construir o modelo de rede neural
12. model = Sequential([
13. Flatten(input_shape=(28, 28)), # Transformar a
imagem 28x28 em um array 1D
14. Dense(128, activation='relu'), # Uma camada
densa com 128 neurônios
15. Dense(10, activation='softmax') # Uma camada de
saída com 10 neurônios, um para cada classe
16. ])
17.
18. # Compilar o modelo

e o código CRC UZDIGMX2.


19. model.compile(optimizer='adam',
20. loss='sparse_categorical_crossentropy',
21. metrics=['accuracy'])
22.
23. # Treinar o modelo
24. model.fit(train_images, train_labels, epochs=5)
25. # Avaliar o desempenho do modelo
26. test_loss, test_acc = model.evaluate(test_images,
test_labels, verbose=2)
27. print('\nAcurácia do teste:', test_acc)

392
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14.6. OpenCV
A biblioteca OpenCV (do inglês, Open Source Computer Vision) foi desenvolvida
pela Intel em 1999 por Gary Bradsky e agora é mantida pela Willow Garage e
pela Itseez. Sua primeira versão foi lançada em 2000, suportando uma ampla
variedade de linguagens de programação, como C++, Python, Java etc., e está

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
disponível em diferentes plataformas, incluindo Windows, Linux, OS X, Android e
iOS.

O OpenCV-Python é uma biblioteca de código aberto projetada para o


desenvolvimento de algoritmos relacionados a resolver problemas da Visão
Computacional e Aprendizado de Máquina, incluindo processamento de
imagens em tempo real. Todas as estruturas de matrizes do OpenCV são
convertidas para matrizes NumPy para facilitar a integração com outras
bibliotecas (OpenCV, 2023).

A biblioteca possui mais de 2.500 algoritmos otimizados, que podem ser


usados para detectar e reconhecer rostos, identificar objetos, classificar ações
humanas em vídeos, rastrear movimentos de câmeras, rastrear objetos em
movimento, extrair modelos 3D de objetos, produzir nuvens de pontos 3D de
câmeras estéreo, unir imagens para produzir uma alta resolução imagem de
e o código CRC UZDIGMX2.
uma cena inteira, encontrar imagens semelhantes de um banco de dados de
imagens, remover olhos vermelhos de imagens tiradas com flash, seguir
movimentos oculares, reconhecer cenários e estabelecer marcadores para
sobrepô-los com realidade aumentada (OpenCV, 2023).

As principais características do OpenCV são:

● Processamento de imagens e vídeos: oferece funcionalidades para


leitura, escrita e manipulação de imagens e vídeos. Isso inclui operações
como filtragem, transformação geométrica, conversão de cor,

393
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

histogramas etc.

● Detecção e reconhecimento de objetos: permite identificar objetos,


rostos, gestos, carros e muitos outros elementos em imagens e vídeos.
● Interface com câmeras: pode capturar e transmitir vídeo em tempo real
de câmeras ou arquivos de vídeo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● Algoritmos de Visão Computacional: inclui algoritmos para detecção e
reconhecimento de características, comparação de imagens,
rastreamento de objetos, reconstrução 3D, entre outros.
● Aprendizado de Máquina: o OpenCV também vem com uma biblioteca
de Aprendizado de Máquina para classificação, reconhecimento de
padrões e agrupamento de dados.
● Performance e otimização: foi projetada para ser eficiente, com um
forte foco em aplicações em tempo real. Pode ser otimizada para tirar
proveito de hardware específico.

3.3.14.6.1. Utilização do OpenCV


Se você já tem o Python e o pip, pode instalar o OpenCV usando o seguinte
comando:
e o código CRC UZDIGMX2.
pip install opencv-python

Para verificar se o OpenCV foi instalado corretamente, você pode tentar


importá-lo em um interpretador Python. Abra o Python no terminal digitando
python ou python3 e depois tente:

import cv2

394
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Caso a biblioteca não seja instalada automaticamente, ela precisará ser


instalada manualmente. Por meio do link https://www.lfd.uci.edu/~gohlke/
pythonlibs/#opencv, localize os arquivos (conforme a versão do Windows) e
copie para a pasta “Scripts”. Execute novamente o comando de instalação no
prompt de comando.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Vamos criar um exemplo simples de implementação usando a biblioteca
OpenCV. Neste exemplo, vamos carregar uma imagem, converter essa imagem
para escala de cinza e, em seguida, exibir a imagem original e a imagem em
escala de cinza.

Para este exemplo, você precisará de uma imagem no seu computador. O


código assumirá que a imagem está no mesmo diretório que o script Python e
será nomeada como "imagem_exemplo.jpg". Se você tiver uma imagem com
um nome ou caminho diferente, ajuste o código de acordo. Em caso de dúvidas
retorno a seção de manipulação de arquivos.

e o código CRC UZDIGMX2.

Figura 221: Imagem utilizada no exemplo.


Fonte: imagem gerada por IA.

395
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. # Importar as bibliotecas necessárias


2. import cv2 # OpenCV para processamento de imagens
3. from matplotlib import pyplot as plt # Matplotlib para
exibição de imagens

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
4. from google.colab import files # Módulo do Google Colab
para upload de arquivos
5.
6. # Fazer o upload da imagem
7. uploaded = files.upload() # Abre um prompt de upload
de arquivo para carregar uma imagem do seu computador
8. image_name = next(iter(uploaded)) # Obtém o nome do
arquivo carregado
9.
10. # Carregar a imagem
11. imagem = cv2.imread(image_name) # Lê o arquivo de
imagem para uma variável usando o OpenCV
12.
13. # Converter a imagem para escala de cinza

e o código CRC UZDIGMX2.


14. imagem_cinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY)
# Converte a imagem de BGR (Blue, Green, Red) para
escala de cinza
15.
16. # Exibir a imagem original e a imagem em escala de
cinza
17. plt.figure(figsize=(10, 5)) # Define o tamanho da
figura

396
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

17. plt.subplot(1, 2, 1)
18. plt.imshow(cv2.cvtColor(imagem,cv2.COLOR_BGR2RGB))
19. plt.title('Imagem Original')
20. plt.axis('off')

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
21. plt.subplot(1, 2, 2)
22. plt.imshow(imagem_cinza, cmap='gray')
23. plt.title('Imagem em Escala de Cinza')
24. plt.axis('off')
25.
26. plt.show() # Exibe a figura com os subplots

e o código CRC UZDIGMX2.

Figura 222: saída gerada por meio do código apresentado.


Fonte: as Autoras.

397
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.3.14.7. Pillow
Pillow é uma biblioteca de processamento de imagens para a linguagem de
programação Python. Ela é uma extensão e melhoria da biblioteca Python
Imaging Library (PIL), que não é mais mantida. O objetivo da Pillow é oferecer
suporte moderno e fácil de usar para o processamento de imagens, mantendo a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
compatibilidade com o PIL.

Oferece uma variedade de funcionalidades para abrir, manipular e salvar


imagens em vários formatos, suas principais características são:

● Manipulação de imagens: a biblioteca oferece uma ampla gama de


operações para manipulação de imagens, incluindo redimensionamento,
rotação, corte, ajuste de brilho, contraste e muito mais, que são
fundamentais para o pré-processamento de imagens em diversas
aplicações, como Visão Computacional e processamento de imagens.
● Suporte a diversos formatos: a Pillow suporta uma variedade de formatos
de imagem, incluindo JPEG, PNG, GIF, BMP, TIFF e muitos outros. Isso
permite que os usuários trabalhem com imagens em diferentes contextos e
requisitos de aplicação.
● Manuseio de cores: permite a manipulação de esquemas de cores,
e o código CRC UZDIGMX2.
incluindo a conversão entre modos de cor (por exemplo, RGB para escala de
cinza), ajuste de canais de cor e aplicação de filtros de cor.
● Texto e anotações: é possível adicionar texto e anotações às imagens, seja
para fins de marcação ou para a criação de material visual.
● Transparência e composição: ela suporta imagens transparentes,
permitindo a sobreposição e composição de várias imagens, o que é útil em
tarefas como a criação de logotipos, composição de imagens e design
gráfico.
● Processamento em lote: a biblioteca facilita o processamento em lote de

398
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

um grande número de imagens, aplicando as mesmas operações a vários


arquivos de uma vez.

3.3.14.7.1. Instalação da Pillow


Se você já tem o Python e o pip, pode instalar o Pillow usando o seguinte

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
comando:

pip install Pillow

Para verificar se a Pillow foi instalado corretamente, você pode tentar


importá-la em um interpretador Python. Abra o Python no terminal digitando
python ou python3 e depois tente:

from PIL import Image

Vamos criar um exemplo prático utilizando a biblioteca Pillow para


demonstrar algumas das suas funcionalidades básicas de manipulação de
imagens. No exemplo a seguir, vamos:

1. Carregar uma imagem.

e o código CRC UZDIGMX2.


2. Exibir a imagem.
3. Redimensionar a imagem.
4. Girar a imagem.
5. Salvar a imagem modificada.

Para este exemplo, você precisará de uma imagem em seu computador. O


código assumirá que a imagem está no mesmo diretório que o script Python e
será nomeada como "imagem_exemplo2.jpg". Se você tiver uma imagem com
um nome ou caminho diferente, ajuste o código de acordo.Em caso de dúvidas
retorno a seção de manipulação de arquivos.

399
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 223: Imagem utilizada no exemplo.
Fonte: imagem gerada por IA.

1. # Importar as bibliotecas necessárias


2. from PIL import Image
3. from google.colab import files
4. import io

e o código CRC UZDIGMX2.


5. import matplotlib.pyplot as plt
6.
7. # Fazer o upload da imagem
8. uploaded = files.upload()
9. image_name = next(iter(uploaded))
10.
11. # Carregar a imagem usando PIL
12. imagem =
Image.open(io.BytesIO(uploaded[image_name]))

400
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

13. # Redimensionar a imagem


14. imagem_redimensionada = imagem.resize((200, 200))
15. # Girar a imagem
16. imagem_girada = imagem_redimensionada.rotate(90)

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
17. # Converter a imagem para o modo RGB
18. if imagem_girada.mode != 'RGB':
19. imagem_girada = imagem_girada.convert('RGB')
20. # Salvar a imagem modificada
21. imagem_girada.save('imagem_modificada.jpg')
22.
23. # Exibir as duas imagens usando matplotlib
24. plt.figure(figsize=(12, 6))
25. plt.subplot(1, 2, 1)
26. plt.imshow(imagem)
27. plt.title('Imagem Original')
28. plt.axis('off')
29.
30. plt.subplot(1, 2, 2)
e o código CRC UZDIGMX2.
31. plt.imshow(imagem_girada)
32. plt.title('Imagem Modificada')
33. plt.axis('off')
34.
35. plt.show()

401
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 224: Saída gerada por meio do código apresentado
Fonte: as Autoras.

3.3.14.8. PyTorch
PyTorch é uma biblioteca de Aprendizado de Máquina de código aberto
amplamente utilizada para aplicações de Inteligência Artificial, particularmente
em redes neurais profundas. Foi desenvolvida principalmente pela Facebook's AI
Research Lab (FAIR) e possui as seguintes características principais:

e o código CRC UZDIGMX2.


● Tensor Computing (como o NumPy) com aceleração de GPU: oferece uma
interface semelhante ao NumPy para computação de tensores, mas com a
vantagem significativa de poder rodar essas operações em GPUs, acelerando
significativamente os cálculos necessários para treinamento e inferência em
modelos de Aprendizado de Máquina.
● Deep Neural Networks: é amplamente utilizado para desenvolver e treinar
redes neurais profundas. Ele oferece uma ampla gama de ferramentas e
pré-configurações por meio de seu módulo torch.nn, o que facilita a
construção de redes neurais.

402
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Autograd System: uma das características mais notáveis é seu sistema


autograd. Este sistema permite a diferenciação automática para todas as
operações em tensores. Isso é extremamente útil para backpropagation em
redes neurais, pois o gradiente das perdas pode ser calculado
automaticamente em relação a todos os parâmetros.
● Dynamic Computation Graphs: enquanto outras bibliotecas populares como

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
TensorFlow usam grafos de computação estáticos, PyTorch usa grafos
dinâmicos, o que significa que o gráfico de rede é construído on-the-fly à
medida que as operações ocorrem. Isso oferece mais flexibilidade e
facilidade na programação, o que pode ser particularmente útil para tarefas
complexas de Aprendizado de Máquina.
● Fácil integração com outras bibliotecas Python: se integra bem com o
ecossistema Python, incluindo bibliotecas populares como NumPy e SciPy,
assim como bibliotecas especializadas em visualização de dados como
Matplotlib.

3.3.14.8.1. Instalação do PyTorch


O PyTorch tem um sistema de instalação personalizável no site oficial

e o código CRC UZDIGMX2.


pytorch.org, no qual você pode selecionar a configuração desejada (versão do
PyTorch, CUDA10, Sistema Operacional etc.) e obter o comando de instalação
específico para o seu ambiente.

Para uma instalação padrão sem suporte CUDA, você pode usar o pip
diretamente no terminal ou prompt de comando:

10
CUDA, que significa Compute Unified Device Architecture, é uma plataforma e um modelo de programação
desenvolvidos pela NVIDIA. Ela permite aos desenvolvedores usarem uma linguagem de programação baseada
em C, C++ e outras para escrever programas que executam cálculos intensivos diretamente nas Unidades de
Processamento Gráfico (GPUs) da NVIDIA.

403
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

pip install torch torchvision

Este comando instala o PyTorch e o torchvision, uma biblioteca com


ferramentas e conjuntos de dados populares para Visão Computacional.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Se você possui uma GPU NVIDIA e quer aproveitar a aceleração por
hardware, escolha a versão apropriada com suporte CUDA no site do PyTorch e
use o comando fornecido.

Vamos criar um exemplo simples para construir e treinar uma pequena rede
neural para classificar dígitos do conjunto de dados MNIST, que é um conjunto
de dados padrão usado em Aprendizado de Máquina para reconhecimento de
dígitos manuscritos.

Este exemplo cobrirá as seguintes etapas:

1. Importar as bibliotecas necessárias.


2. Carregar o conjunto de dados MNIST.
3. Definir uma rede neural simples.
4. Definir uma função de perda e um otimizador.
5. Treinar a rede no conjunto de dados.
6. Testar a rede nos dados de teste. e o código CRC UZDIGMX2.

404
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. import torch
2. import torchvision
3. import torchvision.transforms as transforms
4. import torch.nn as nn
5. import torch.optim as optim
6.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
7. # 1. Carregar e normalizar o MNIST
8. transform = transforms.Compose([transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))])
9. trainset = torchvision.datasets.MNIST(root='./data',
train=True, download=True, transform=transform)
10. trainloader = torch.utils.data.DataLoader(trainset,
batch_size=4, shuffle=True)
11.
12. testset = torchvision.datasets.MNIST(root='./data',
train=False, download=True, transform=transform)
13. testloader = torch.utils.data.DataLoader(testset,
batch_size=4, shuffle=False)
14.
15. # 2. Definir uma rede neural
16. class Net(nn.Module):

e o código CRC UZDIGMX2.


17. def __init__(self):
18. super(Net, self).__init__()
19. self.fc1 = nn.Linear(28 * 28, 64)
20. self.fc2 = nn.Linear(64, 10)
21.
22. def forward(self, x):
23. x = x.view(-1, 28 * 28)
24. x = torch.relu(self.fc1(x))
25. x = self.fc2(x)
26. return x

405
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

27. net = Net()


28.
29. # 3. Definir uma função de perda e um otimizador
30. criterion = nn.CrossEntropyLoss()
31. optimizer = optim.SGD(net.parameters(), lr=0.001,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
momentum=0.9)
32. # 4. Treinar a rede
33. for epoch in range(2): # loop over the dataset
multiple times
34. for i, data in enumerate(trainloader, 0):
35. inputs, labels = data
36. optimizer.zero_grad()
37. outputs = net(inputs)
38. loss = criterion(outputs, labels)
39. loss.backward()
40. optimizer.step()
41. print('Finished Training')
42. # 5. Testar a rede nos dados de teste
43. correct = 0
44. total = 0
45. with torch.no_grad():
e o código CRC UZDIGMX2.
46. for data in testloader:
47. images, labels = data
48. outputs = net(images)
49. _, predicted = torch.max(outputs.data, 1)
50. total += labels.size(0)
51. correct += (predicted == labels).sum().item()
52.
53. print('Accuracy of the network on the 10000 test
images: %d %%' % (100 * correct / total))

406
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Neste momento, retorne ao Google Sala de Aula e, na aba


"Atividades", procure a seção intitulada "Etapa Conceitualizar".

Nessa área você encontrará uma série de links com materiais

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
que foram criteriosamente escolhidos e disponibilizados. Trata-se de
recursos que têm por objetivo apresentar informações adicionais e
insights, permitindo que você amplie e enriqueça o seu
conhecimento acerca dos temas discutidos neste capítulo.

Este momento final do capítulo deve lhe proporcionar reflexões


críticas a respeito do conteúdo abordado, ajudando na
compreensão e fixação do conteúdo.

e o código CRC UZDIGMX2.

407
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.4. Consolidar
Nesta seção, será explorado um exemplo prático com o objetivo de
compreender o papel da linguagem Python em aplicações relacionadas a
Inteligência Artificial.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Para isso, é fundamental se basear nos conceitos de IA, redes neurais e
Machine Learning apresentados nos capítulos anteriores. Outros conceitos e
aplicações serão tratados nos próximos capítulos.

3.4.1. Consolidando o conteúdo


Este exemplo visa proporcionar uma experiência prática no uso de
TensorFlow para construir e analisar modelos de redes neurais, utilizando o
dataset MNIST. O foco será a implementação, deixando para os capítulos
subsequentes a exposição dos conceitos relativos à análise de resultados e ao
seu significado.

O que é MNIST? Para relembrar este conceito retorne à seção 3.3.14.4.1. A


e o código CRC UZDIGMX2.
figura 225 apresenta uma amostra desse conjunto de dados.

Figura 225: uma amostra com o dígito 3 do dataset MNIST


Fonte: wandb.ai

408
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Esta atividade não terá correção formal por parte do instrutor e não irá
compor a avaliação. A implementação encontra-se no Google Colab. O link está
disponível no Google Sala de Aula, “Etapa Consolidar”. Lembrando que os
trechos apresentados compõem uma única implementação e foram
estruturados em partes a fim de facilitar o entendimento.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● Parte 1: Preparação dos Dados
○ Carregamento do Dataset MNIST
■ Utilize TensorFlow para carregar o dataset MNIST.
○ Pré-processamento dos Dados
■ Realize tarefas como normalização e remodelagem dos dados de
entrada.

● Parte 2: Construção de Modelo com TensorFlow


○ Desenvolvimento do Modelo:
■ Construa uma rede neural simples utilizando TensorFlow.
○ Treinamento e Avaliação:
■ Treine o modelo com o dataset MNIST.

e o código CRC UZDIGMX2.


■ Avalie a performance do modelo, focando na métrica de acurácia.

● Parte 3: Métricas importantes


○ Extraindo e exibir métricas importantes do histórico de treinamento do
modelo.

● Parte 4: Análise gráfica


○ Exibindo a acurácia ao longo treino/teste.
○ Exibindo a perda ao longo do treino/teste.

409
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A seguir, as Figuras 226 e 227 apresentam as saídas geradas com base no


código apresentado.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 226: Saída gerada por meio do código apresentado.
Fonte: as Autoras.

e o código CRC UZDIGMX2.

Figura 227: Saída gerada por meio do código apresentado.


Fonte: as Autoras.

410
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.4.2. Solução final do estudo de caso

Inicialmente, releia com atenção o cenário do estudo de caso da

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
"Etapa Inspirar" e as suas anotações e conclusões iniciais. Na
sequência, você deverá promover o aprimoramento da solução
anteriormente apresentada usando os conhecimentos que obteve
ao longo do capítulo e do conteúdo adicional.

Lembre-se de que este aprimoramento não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos que foram estudados
e a testar novos cenários e hipóteses, validando os seus resultados
práticos.

Agora, aproximando-se da etapa final do capítulo Python para

e o código CRC UZDIGMX2.


desenvolvimento de Inteligência Artificial: do básico às aplicações
avançadas, será necessário desenvolver o código completo em Python da
aplicação que foi ideada. Como você experienciou algumas possibilidades de
soluções na criação de aplicações em Python, aproveite para incrementar sua
solução com diferenciais.

O ponto de partida é revisitar o arquivo no qual você fez o planejamento da


aplicação que você registrou na "Etapa Inspirar". Em seguida, escolha uma das
IDE’s apresentadas. Sugerimos que use o Google Colab.

411
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Verifique possíveis aprimoramentos no seu planejamento e, se for preciso,


reescreva.

Planejar o que será feito é essencial para que o desenvolvimento de seu


código seja mais assertivo.

Teste e verifique oportunidades de melhoria no código desenvolvido.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Arquive o refinamento do estudo de caso no formulário disponível
no Google Sala de Aula, na aba “Etapa Consolidar”.

e o código CRC UZDIGMX2.

412
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3.5. Avaliar
Para concluir este capítulo, você deverá realizar a “Etapa Avaliar”, que
consiste no preenchimento do Questionário de Avaliação disponível no Google
Sala de Aula e que tem como objetivo permitir que você acompanhe

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
individualmente a evolução do seu aprendizado.

Não será atribuída nota para a atividade, mas a sua entrega é obrigatória,
pois, acima de tudo, servirá como insumo para uma análise pessoal e também
para a realização de autocrítica a respeito dos pontos compreendidos e daqueles
que exigem maior dedicação.

O formulário salvará as respostas de forma automática e, por isso, pode ser


iniciado em um momento e finalizado posteriormente. Ele também será
disponibilizado a você, para que faça consultas futuras. Além dos materiais
didáticos fornecidos, você poderá usar quaisquer outros recursos e referências.
Todavia, atente para o fato de que poderá respondê-lo somente uma vez.

O registro e envio das respostas é individual e deve ser realizado dentro do


prazo estipulado para a realização do curso.

e o código CRC UZDIGMX2.

413
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Referências
BADER, D. Python Tricks: The Book. 2. ed. San Francisco: No Starch Press, 2023.

BARRY, P. Use a cabeça! Python. Rio de Janeiro: Alta Books, 2012.

BEAZLEY, D.; JONES, B.K. Python Cookbook: receitas para dominar a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
linguagem Python. 3. ed. Rio de Janeiro: Alta Books, 2023.

DÍAZ, A.; VELLÓN, J.C.F.S. Curso intensivo de Python: uma introdução prática e
baseada em projetos à programação. 1. ed. São Paulo: Novatec, 2023.

DOWNEY, A.B. Pense em Python: Pense como um cientista da computação.


São Paulo: Novatec, 2016.

KOPEC, D. Problemas Clássicos de Ciência da Computação com Python. 2. ed.


São Paulo: Novatec, 2019.

MENDES, C. O futuro do trabalho na era da automação. Entrevista concedida


à revista Tecnologia Hoje, 2023.

MCKENNEY, W. Python para análise de dados: tratamento de dados com


Pandas, NumPy e IPython. 1. ed. São Paulo: Novatec, 2023.

MENEZES, N.N.C. Introdução à programação com Python: Algoritmos e


Lógica de Programação Para Iniciante. 2. ed. São Paulo: Novatec, 2017.

e o código CRC UZDIGMX2.


OPENCV. Documentação oficial do OpenCV. Disponível em:
https://opencv.org/. Acesso em: 11/01/2024

PETERS, T. The Hitchhiker's Guide to Python. 2. ed. San Francisco: No Starch


Press, 2023.

PILLOW. Documentação oficial do Pillow. Disponível em:


https://pypi.org/project/pillow/. Acesso em: 12/01/2024.

PYTHON. Documentação oficial do Python. Disponível em:


https://docs.python.org/3/. Acesso em: 20/12/2023

RAMALHO, L. Python Fluente: claro, conciso e eficaz. 1. ed. Rio de Janeiro: Alta
Books, 2023.

414
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

SEDGEWICK, R.; WAYNE, K. Algorithms. 4. ed. Boston: Addison-Wesley, 2011.

SILVA, J. O potencial do Python para o desenvolvimento profissional e


pessoal. In: Livro sobre Python. Editora X, 2022.

TENSORFLOW. Documentação oficial do Tensorflow. Disponível em:


https://www.tensorflow.org/?hl=pt-br. Acesso em: 10/01/2023

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.

415
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Capítulo 4:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Visão Computacional
aplicada ao
reconhecimento facial
em imagens

e o código CRC UZDIGMX2.

Autores
Júlio César Leitão Júnior

Marcelo de Almeida Viana


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4.1. Introdução
Boas vindas ao capítulo Visão Computacional aplicada ao
reconhecimento facial em imagens, este material foi escrito para conduzir
você pelo campo da Visão Computacional, com um foco particular no

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
reconhecimento facial em imagens.

O tema vai desde a definição sobre detecção e reconhecimento de imagem


e evolui até a prática, ou seja, será possível realizar a identificação e
reconhecimento facial utilizando uma webcam, tudo apresentado de forma clara
e acessível.

O conteúdo se inicia com esclarecimentos sobre a “detecção e


reconhecimento de imagem”, estabelecendo uma base sólida para entender
como as imagens são processadas e interpretadas por sistemas de Visão
Computacional. Em seguida, será abordado especificamente o reconhecimento
facial em imagem, desvendando como essa tecnologia está revolucionando
áreas como segurança, marketing e saúde.

O "reconhecimento facial e a Lei Geral de Proteção de Dados (LGPD)",


enfocando as complexidades jurídicas inerentes ao uso desta tecnologia e de
outras práticas relacionadas ao tratamento de dados pessoais também será e o código CRC UZDIGMX2.

tratado. Tal análise é essencial para compreender as implicações legais dessa


tecnologia.

Na sequência, em “como o Aprendizado de Máquina detecta e reconhece


imagens”, a seção mostra os mecanismos internos dos sistemas de
reconhecimento facial e como eles aprendem a partir de dados para realizar
tarefas complexas de identificação.

Seguindo adiante, serão explorados os principais algoritmos de reconheci-

417
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

mento facial, pois cada um deles possui suas próprias técnicas e metodologias
para processar e analisar as características faciais e são amplamente utilizados
em diversas aplicações.

Ao final deste capítulo, você terá não apenas compreendido os conceitos


fundamentais da Visão Computacional aplicada ao reconhecimento facial em

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
imagens, mas também terá adquirido habilidades práticas para enfrentar os
desafios no campo da IA.

e o código CRC UZDIGMX2.

418
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4.2. Inspirar
Você já considerou os avanços e impactos da Visão Computacional,
especialmente no campo do reconhecimento facial em imagens, para
aprimorar, por exemplo, a segurança e personalizar experiências do usuário?

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Já pensou em como essa tecnologia consegue identificar e analisar
características faciais em fotografias e vídeos, convertendo esses dados visuais
em informações úteis e acionáveis? E qual é o papel desses sistemas avançados
na detecção, catalogação e interpretação eficaz de rostos em uma variedade de
aplicações?

Ao longo deste capítulo, será investigado não somente os aspectos


técnicos, mas também compreender como eles se articulam para gerar
soluções inovadoras e aprimorar a eficiência em variados setores.

O reconhecimento facial, está transformando indústrias, varejo, marketing,


gestão de identidade, e até mesmo no campo social e humanitário. Ele oferece
insights detalhados que melhoram e personalizam a experiência do cliente e
impulsionam a inovação tecnológica.

e o código CRC UZDIGMX2.


Por exemplo, na indústria, o reconhecimento facial pode ser usado para
melhorar e aumentar a segurança do local de trabalho, identificando
trabalhadores e controlando o acesso a áreas restritas.

No varejo, as lojas estão utilizando o reconhecimento facial para analisar


padrões de comportamento dos clientes, oferecendo uma experiência de
compra mais personalizada e melhorando o serviço ao cliente. Já na segurança
pública, esta tecnologia vem sendo utilizada por forças de segurança para
identificar suspeitos e melhorar a segurança pública.

419
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Fica claro que a tecnologia de reconhecimento facial desempenha um papel


inovador, oferecendo uma variedade de aplicações capazes de aprimorar
operações em variados contextos.

Aqui, serão apresentadas maneiras de aplicar os conhecimentos adquiridos


de forma prática e adaptada, incorporando tecnologias de reconhecimento

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
facial em um aspecto específico e direcionado.

Antes de iniciarmos a "Etapa de Conceitualização" na qual


haverá a apresentação do conteúdo e a experimentação dos
conceitos trabalhados por meio de atividades práticas, entre no
Google Sala de Aula, na aba "Etapa Inspirar", para acessar todos
os materiais disponibilizados, que visam a estimular sua reflexão e
iniciar a ambientação com o conteúdo deste capítulo.

Como última atividade desta etapa, prepare-se para trabalhar a


solução inicial do estudo de caso que será apresentado na
próxima seção.

A solução inicial que você elaborará não será objeto de e o código CRC UZDIGMX2.

correção ou avaliação: trata-se de uma atividade individual que


deverá lhe ajudar a refletir sobre os conceitos apresentados e a
entender como trabalhá-los de maneira prática.

420
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4.2.1. Estudo de Caso - Identificação e


reconhecimento facial utilizando a
webcam: atendimento a um projeto de
uma Instituição Científica e Tecnológica

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
(ICT) Privada
O objetivo deste estudo é evidenciar como, por meio da análise da
necessidade de um cliente e a utilização de tecnologias avançadas, é possível
desenvolver um sistema de controle de acesso automatizado, eficiente e seguro.

Este estudo de caso servirá como um exemplo de como a integração de


hardware existente com um software, especificamente um software de
Aprendizado de Máquina para reconhecimento facial, pode oferecer soluções
personalizadas e eficazes para desafios, por exemplo, empresariais
contemporâneos.

e o código CRC UZDIGMX2.

Leia com atenção o cenário do estudo de caso e lembre-se: o


propósito desta atividade é promover uma reflexão inicial acerca do
assunto a ser discutido no cenário tendo por base somente os
conhecimentos de que você dispõe neste momento.

421
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4.2.1.1. Cenário
A Facti, como uma ICT privada, pode realizar projetos com recursos da Lei de
Informática juntamente dos seus parceiros. Um de seus clientes procurou a
instituição buscando uma solução para automatizar o seu controle de acesso
corporativo, de forma a aumentar a segurança e, em razão da pandemia da

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
COVID-19, diminuir o contato físico e o contágio entre seus funcionários.

O cliente expôs sua necessidade à Facti, que analisou a proposta e firmou o


contrato para desenvolver e viabilizar o projeto. A empresa possui o hardware
necessário (Figura 228) e gostaria de incorporar um software de Aprendizado de
Máquina, em reconhecimento facial, que seja preciso e, inclusive, reconheça de
forma eficiente seus funcionários, mesmo utilizando máscaras de proteção
facial.

e o código CRC UZDIGMX2.

Figura 228: Controle de acesso para leitura facial com máscara.


Fonte: Intelbras.

Este software requer uma alta precisão algorítmica e deve ser dotado de
capacidades avançadas de processamento de imagem e reconhecimento de
padrões. Isso é essencial para garantir uma identificação eficaz de funcionários,
mesmo em situações em que o rosto esteja parcialmente oculto devido ao uso
de máscaras de proteção facial, assegurando assim a eficiência e confiabilidade
do sistema em diversos cenários.

422
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A solução deve assegurar a integridade e a confiabilidade do sistema de


segurança, mantendo um equilíbrio ótimo entre precisão de reconhecimento e
performance operacional, sem comprometer a usabilidade e a eficiência global
do sistema.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
4.2.1.2. Decisões tecnológicas
O objetivo, neste estudo de caso, será construir um algoritmo de
reconhecimento facial para o projeto da Facti e, para isto, será necessário tomar
algumas decisões de negócio. Por meio das perguntas abaixo, reflita acerca do
que deseja explorar:

1. Qual linguagem de programação utilizar?


2. Como será o desenvolvimento do algoritmo, qual ambiente de
programação será utilizado?
3. Quais as bibliotecas de programação disponíveis para realizar a detecção
e o reconhecimento facial?

e o código CRC UZDIGMX2.

Importante: coloque a sua resposta na atividade


"Apresentação da solução inicial", no Google Sala de Aula, em
um documento no formato de texto. Utilize este momento para
trabalhar as suas ideias iniciais com o máximo de detalhamento que
puder. Mais adiante, as suas anotações serão retomadas para o
refinamento da solução do estudo de caso.

423
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4.3. Conceitualizar
4.3.1. Definição sobre detecção e
reconhecimento de imagem

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
A detecção de objetos é uma tarefa realizada para obter o completo
conhecimento a respeito do conteúdo de um conjunto de imagens que, muitas
vezes, não é o bastante apenas classificá-las com base em alguma característica
particular, é necessário estimar a localização dos objetos presentes em cada
imagem.

A Figura 229 demonstra um exemplo do que se deseja alcançar,


costumeiramente, com um algoritmo de detecção de objetos. A solução para a
detecção de objetos contempla a percepção de padrões nas regiões informativas
de uma imagem, em que há a percepção da posição e formato da região que
contém um objeto de interesse, podendo estar em qualquer lugar da imagem e
ter tamanho, cor e formato variável e extraí-las para serem usadas pelo
algoritmo de reconhecimento.

e o código CRC UZDIGMX2.


Analisar toda a imagem com filtros de diferentes tamanhos e formatos é
muitas vezes pouco eficiente devido à complexidade computacional, enquanto
que aplicar uma quantidade pequena de filtros pode trazer resultados
imprecisos (Zhao et al., 2019).

O reconhecimento de objetos utiliza técnicas de Aprendizagem de Máquina,


que por meio de um conjunto de dados de treinamento gera ou modifica o
modelo existente para encontrar soluções, por meio de IA aplicada à Machine
Learning, em que há a extração e reconhecimento de características presentes
nos objetos e que permitam uma representação robusta do mesmo.

424
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 229: Exemplo de detecção de objetos.
Fonte: adaptado de AWS Rekognition.

Portanto, as máquinas são capazes, por meio de seu algoritmo, de


identificar pixels individuais (mínimo elemento discreto que, em conjunto,
constituem uma imagem digital, Figura 230) e convertê-los em valores
e o código CRC UZDIGMX2.
numéricos para detectar grupos de pixels com cores e texturas similares.

Figura 230: Conjunto de pixels que formam uma imagem digital.


Fonte: Sistemas Multimídia (2022).

425
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Desta maneira, as máquinas conseguem classificar as características das


detecções das imagens já extraídas, recortadas, redimensionadas e geralmente
convertidas em escala de cinza, para identificar, dentro de um conjunto
pré-definido de classes, à qual classe o objeto pertence.

Qualquer análise de detecção de objeto deve conter pelo menos duas

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
classes, sendo uma delas o plano de fundo da imagem e, a outra, a classe de
interesse (Zhao et al., 2019).

Trucco e Verri (1998) afirmam que modelos baseados em características


requerem que os atributos sejam identificados e descritos, a fim de que os
dados possam ser comparados.

Uma função de similaridade é sempre utilizada para calcular a semelhança


entre dados distintos, a partir do cálculo da distância entre seus respectivos
vetores de características.

Para isto, diferentes medidas de distância podem ser aplicadas e podem


necessitar de diferentes funções de similaridade que complementam ou
substituem a função de similaridade para obter um conjunto de dados mais ou
menos compacto, ou seja, pode-se aumentar ou reduzir a separação entre estes
no espaço de distância (Torres et al., 2009). Quanto menor a distância, maior

e o código CRC UZDIGMX2.


será a semelhança entre as amostras em questão.

A principal dificuldade está muitas vezes associada às diferentes condições


de iluminação e situação (plano de fundo) em que o objeto pode estar inserido,
tornando complexo o projeto de um extrator de características na descrição
perfeita do objeto em qualquer situação (Zhao et al., 2019).

A Figura 231, demonstra o exemplo de reconhecimento de objetos a partir


do algoritmo de detecção de objetos.

426
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 231: Exemplo de reconhecimento de objetos.
Fonte: adaptado de AWS Rekognition.

4.3.2. Introdução ao reconhecimento facial


em imagem
e o código CRC UZDIGMX2.

São frequentes as situações em que as pessoas necessitam assegurar sua


autenticidade, como na realização de transações bancárias, identificação em
empresas, aeroportos e a biometria é um dos métodos empregados como meio
de identificação mais utilizados.

Existem diversas características biológicas que podem ser utilizadas em um


processo de identificação, dentre as principais tem-se: impressão digital, retina,
íris, geometria da mão, face, voz e assinatura (Carlos Jr., 2011).

427
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O reconhecimento facial possui algumas vantagens sobre as demais


tecnologias biométricas, pois é natural, não-intrusiva e de fácil utilização,
envolvendo métodos de processamento de imagem, reconhecimento de
padrões, Visão Computacional e redes neurais (Li e Jain, 2005).

O reconhecimento facial vem recebendo uma atenção significativa,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
principalmente durante os últimos anos e pode-se citar ao menos dois motivos
para isto: o primeiro é o grande número e variedades de aplicações possíveis,
sejam elas comerciais, militares ou de segurança pública e o segundo é a
disponibilidade de tecnologias viáveis após décadas de pesquisa (Zhao et al.,
2003).

O ser humano tem a grande capacidade de automaticamente reconhecer


rostos, conseguindo identificar cada detalhe e facilmente associar o rosto à uma
determinada pessoa, mesmo em condições desfavoráveis com o uso de
acessórios, a iluminação do local, envelhecimento, barba, expressões faciais,
maquiagem, entre outros (Carneiro, 2012).

Porém, a maneira como as máquinas interpretam e processam as


informações para esse reconhecimento não é trivial, sendo assim é necessário
criar tarefas complexas, com abordagens algorítmicas e automatizadas, para
implementá-las em máquinas.
e o código CRC UZDIGMX2.

Assim, os sistemas de reconhecimento facial podem ser modelados de


forma que seja possível, dada uma imagem de rosto humano, retornar uma lista
ordenada de imagens com os rostos mais similares dentro de uma base de
dados. Em geral, essas tarefas são realizadas utilizando algoritmos e abordagens
de extração de características de imagens e métricas de distância que
comparam pares de imagens (Fujikawa, 2016).

A Figura 232, demonstra um exemplo de reconhecimento facial em imagem.

428
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 232: Exemplo de reconhecimento facial em imagem.
Fonte: adaptado de AWS Rekognition.

4.3.2.1. Reconhecimento facial e a LGPD


As facilidades de desbloqueio de aplicativos por meio de dados biométricos
vem se tornando regra entre os eletrônicos, além do uso em estabelecimentos
como condomínios (residencial e comercial), academias de ginásticas, controle
de jornada e até mesmo serviços públicos (título de eleitor e CNH) passaram a
adotar a biometria como forma de acesso e identificação.

São exemplos de dados biométricos: impressão digital, reconhecimento


facial, de íris, de voz, de retina, de digitação, arcada dentária, dentre outras
características corporais, tais como o seu modo de andar, manias de

e o código CRC UZDIGMX2.


movimentação e estética (Barros e Souza, 2022).

Conforme o Art. 4°, Número 14, do GDPR 2016/679 (Regulamento Geral


sobre a Proteção de Dados), temos a seguinte definição para dados biométricos:

"Dados pessoais resultantes de um tratamento técnico


específico relativo às características físicas, fisiológicas ou
comportamentais de uma pessoa singular, que permitem
ou confirmam a identificação única dessa pessoa singular,
como imagens faciais ou dados dactiloscópicos (Regulação
(EU) 2016/679)”.

429
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Desta forma, o uso de tecnologias automatizadas, especialmente aquelas


que envolvem dados biométricos - das quais o reconhecimento facial é a mais
notória - exige previsão legal específica para o uso de tecnologias que podem
implicar em restrições de liberdade e privacidade. Para tal, foi promulgada a Lei
Geral de Proteção de Dados (LGPD), N° 13.709, de 14 de agosto de 2018, que
dispõe:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
“Art. 1° - Esta Lei dispõe sobre o tratamento de dados pessoais,
inclusive nos meios digitais, por pessoa natural ou por pessoa
jurídica de direito público ou privado, com o objetivo de
proteger os direitos fundamentais de liberdade e de privacidade
e o livre desenvolvimento da personalidade da pessoa natural
(BRASIL, 2018)”.

“Art 5°, I - Dado pessoal é qualquer informação relacionada a


pessoa natural identificada ou identificável (BRASIL, 2018)”.

O tratamento de dados pessoais, em particular os dados biométricos que


são categorizados como sensíveis, necessita de uma abordagem criteriosa, de
forma a oferecer uma proteção adequada à privacidade e à integridade dos
dados, alinhando com as exigências legais e éticas para o manuseio dessas
informações. Neste contexto, a LGPD considera como dado pessoal sensível:
e o código CRC UZDIGMX2.

“Art. 5°, II - Dado pessoal sobre origem racial ou étnica,


convicção religiosa, opinião política, filiação a sindicato ou a
organização de caráter religioso, filosófico ou político, dado
referente à saúde ou à vida sexual, dado genético ou
biométrico, quando vinculado a uma pessoa natural (BRASIL,
2018)”.

Portanto, antes de aderir a qualquer tecnologia que trate dados biométricos,


como o reconhecimento facial que é capaz de captar a imagem de um rosto e

430
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

interpretá-lo de maneira a determinar emoções, direcionamento do olhar, idade


aproximada, gênero e origem racial ou étnica, recomenda-se considerar não
apenas seus benefícios ou malefícios, mas principalmente sua necessidade e a
preservação de direitos fundamentais do titular do dado biométrico, além de se
ater estritamente à finalidade para a qual o dado biométrico está sendo tratado
e investir na segurança dessa informação (Barros e Souza, 2022).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
4.3.3. Como o Aprendizado de Máquina
detecta e reconhece imagens
O Aprendizado de Máquina em reconhecimento de imagens é um campo
que ilustra perfeitamente a interseção entre tecnologia avançada e inovação
criativa. Neste domínio, redes neurais, particularmente as redes neurais
convolucionais (CNNs), são empregadas para interpretar e analisar imagens de
maneira sofisticada, demonstrando a incrível capacidade das máquinas de
“aprender” a partir de dados visuais (DSA, 2021).

O processo inicia-se com a coleta meticulosa de um vasto conjunto de


imagens, abarcando uma diversidade que vai de elementos naturais a criações e o código CRC UZDIGMX2.

humanas. Essencial para o sucesso subsequente do modelo, estas imagens são


submetidas a um pré-processamento rigoroso. Elas são redimensionadas,
normalizadas para garantir consistência e, frequentemente, sujeitas ao aumento
de dados para enriquecer o conjunto de dados disponível.

A seguir, na etapa de rotulagem, cada imagem é cuidadosamente marcada


com uma etiqueta que identifica seu conteúdo. Este passo é fundamental, pois é
por meio destas etiquetas que o modelo de Aprendizado de Máquina aprende a
reconhecer e diferenciar entre várias categorias de imagens.

431
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

As redes neurais, especialmente as CNNs, são escolhidas devido à sua


eficiência em identificar padrões complexos em dados visuais. Estas redes
imitam a maneira como o cérebro humano processa informações, o que as torna
particularmente aptas para tarefas de reconhecimento de imagem (Cauduro,
2018).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Durante o treinamento, a rede neural examina as imagens rotuladas,
aprendendo a identificar características distintivas de cada categoria. Este
aprendizado não é superficial; ele envolve ajustar a arquitetura da rede,
modificar taxas de aprendizado e implementar técnicas para evitar o
sobreajuste, assegurando que o modelo possa generalizar seu aprendizado para
imagens não vistas anteriormente.

Um aspecto inovador no reconhecimento de imagens é a integração de haar


cascades, que são modelos pré-treinados especializados na detecção rápida de
características específicas, como faces ou olhos. Estes modelos utilizam uma
abordagem chamada "cascades de Haar", que detecta padrões específicos em
imagens de maneira eficiente (Viola e Jones, 2001).

Embora não possuam a flexibilidade das CNNs, os haar cascades são


notavelmente rápidos e eficientes para tarefas específicas, como detecção de
rostos em tempo real. A combinação de haar cascades com redes neurais
e o código CRC UZDIGMX2.
complexas permite uma abordagem híbrida potente: enquanto os haar cascades
realizam a detecção rápida de características, as redes neurais conduzem
análises mais profundas e detalhadas (Viola e Jones, 2001).

Após o treinamento, o desempenho dos modelos é rigorosamente testado


com novos conjuntos de imagens, garantindo que o modelo possa generalizar o
que aprendeu. Uma vez validados, esses modelos são empregados em
aplicações práticas, em que analisam novas imagens, utilizando o conhecimento
adquirido para fazer previsões e reconhecimentos precisos.

432
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Este campo está em constante evolução, impulsionado por avanços


tecnológicos e descobertas na pesquisa. Cada novo desenvolvimento abre
portas para aplicações mais sofisticadas e precisas, solidificando o papel do
Aprendizado de Máquina no reconhecimento de imagens como uma das mais
empolgantes fronteiras da Inteligência Artificial.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
4.3.4. Principais algoritmos de reconheci-
mento facial

4.3.4.1. Algoritmo Haar Cascade


Para identificar faces presentes na imagem é amplamente utilizado o
algoritmo de Visão Computacional Haar Cascade, um algoritmo de Machine
Learning, que possui todo o treinamento necessário para detecção e
reconhecimento de olhos, faces e objetos em imagens e vídeos.

O algoritmo utiliza funções em cascata para identificar as diversas


características de uma imagem e as utiliza para detectar e classificar os objetos
que a compõem. O algoritmo necessita ser treinado com muitas imagens e o código CRC UZDIGMX2.

positivas (imagens que possuem o objeto a ser detectado) e negativas (imagens


que não possuem o objeto a ser detectados), sendo dividido em 4 estágios (Viola
e Jones, 2001) :

● seleção de recursos Haar;


● imagens integrais;
● treinamento AdaBoost;
● classificadores em cascata.

433
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O algoritmo extrai as características das imagens utilizando filtros,


semelhantes aos das redes neurais convolucionais (CNNs, do inglês
Convolutional Neural Networks). Os filtros são chamados de recurso Haar e
deslizam pela imagem calculando as intensidades dos pixels brancos e pretos,
extraindo as suas características (Lienhart e Maydt, 2002).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Os diferentes tipos de filtros são demonstrados na Figura 233. Para auxiliar
no processo de extração das características são utilizadas as imagens integrais
que simplificam os cálculos e os tornam mais rápidos.

e o código CRC UZDIGMX2.

Figura 233: Filtros Haar Cascade.


Fonte: Adaptado de Lienhart e Maydt (2002).

Nem todos os recursos extraídos são bons para a classificação de uma


imagem, por isso é utilizado o AdaBoost, que seleciona os melhores recursos e
treina os classificadores que o reconhecem. O AdaBoost combina vários
classificadores fracos, que sozinhos não são capazes de classificar uma imagem,
para formar um classificador forte que é capaz de realizar a classificação. Os

434
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

classificadores em cascata aplicam os recursos nas janelas em estágios, somente


passando ao próximo estágio se o recurso testado for aprovado. Em caso de
falha em um estágio, todos os outros recursos são descartados e nada mais é
testado naquela janela, passando assim para a próxima janela (Grando, 2020).
Desta maneira o algoritmo não perde tempo testando e aplicando todos os
recursos em uma janela de forma desnecessária (Figura 234).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 234: Classificador em cascata.
Fonte: adaptado de Grando (2020).

e o código CRC UZDIGMX2.

435
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4.3.4.2. Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração das IDEs. Para esta atividade recomenda-se o uso do
PyCharm.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades não são provas e não


haverá correção formal por parte dos instrutores; o objetivo é a
autoaprendizagem e prática. As respostas e dicas de desenvolvimento
para cada atividade estão disponíveis em arquivos específicos no
Google Sala de Aula, na aba Etapa Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos

e o código CRC UZDIGMX2.


seguintes símbolos:

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

436
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 58 ●

Escreva um programa, em Python, que transforme uma imagem colorida em


uma imagem em escala de cinza.

OBSERVAÇÃO: Para esta e demais atividades, utilize as funções cv2 da biblioteca


OpenCV e realize o download do arquivo Material_complementar_reconheci

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
mento_facial.zip, disponibilizados no Google Sala de Aula, para exemplos de
códigos e imagens a serem exploradas.

Atividade de experimentação 59 ●●

Escreva um programa, em Python, que utilize classificadores haarcascade


para detectar relógios em imagens.

OBSERVAÇÃO: Para esta e demais atividades, utilize os classificadores


haarcascade pré treinados, que estão na pasta “cascades”, disponibilizada.

Atividade de experimentação 60 ●●

Escreva um programa, em Python, que utilize classificadores haarcascade


para detectar gatos em imagens.
e o código CRC UZDIGMX2.

Atividade de experimentação 61 ●●

Escreva um programa, em Python, que utilize classificadores haarcascade


para detectar carros em imagens.

Atividade de experimentação 62 ●●

Escreva um programa, em Python, que utilize classificadores haarcascade


para detectar faces em imagens.
437
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4.3.4.3. Classificador Eigenface


Como os métodos de correlação são computacionalmente caros e requerem
uma grande quantidade de imagens no dataset - conjunto de dados para os
processos de análise - então é desejável que se reduza a dimensão dos dados.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Uma técnica que está sendo comumente usada para a redução da
dimensionalidade na área de Visão Computacional, particularmente em
reconhecimento de faces, é o PCA (Principal Component Analysis). Também
conhecidas como métodos Karhunen-Loeve, que reduzem a dimensionalidade
dos dados por meio de uma análise estatística que se baseia na redundância e
na variância existentes nos dados. Ao aplicar o PCA em reconhecimento de
faces, obtêm-se características chamadas Eigenface, que podem ser utilizadas
por um classificador para diferenciar faces (Barahate e Saturwar, 2010; Machidon
et al., 2019 ).

O Eigenface é, portanto, baseado na projeção linear da imagem em um


espaço de baixa dimensionalidade (Figura 235). Um problema em conjuntos de
dados multidimensionais é representar os dados em um subespaço de baixa
dimensão e para resolvê-lo é preciso representar estes mesmos dados de modo
que a representação em uma dimensão mais baixa corresponda ao máximo
e o código CRC UZDIGMX2.
possível entre os pontos no espaço dimensional original (Fujikawa, 2016).

438
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 235: Representação de uma imagem após o Eigenface.
Fonte: adaptado de Fujikawa (2016).

A técnica PCA é uma das mais famosas para resolver esse problema. Ela tem
como objetivo encontrar um subespaço contendo bases ortonormais, que são os
principais vetores que definem a distribuição dos dados que otimizam a
correlação entre os dados (Figura 236).

e o código CRC UZDIGMX2.


Figura 236: Principal Component Analysis (PCA).
Fonte: adaptado de Edinburgh (2014).

Um inconveniente de utilizar o Eigenface é que, quando o PCA reduz a


dimensionalidade, ele faz com que as projeções maximizem as dispersões entre
as classes, mas não só a dispersão entre classes (que é a útil para a
classificação), mas também a dispersão dentro da própria classe da imagem,
que é um efeito indesejável para a classificação e muitas informações
discriminativas acabam sendo perdidas ao descartar componentes (Barahate e

439
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Saturwar, 2010).

Portanto, se a base de dados incluir imagens de rostos com variações de


iluminação, a projeção resultante pode sofrer alterações significativas nas
características. Nesse cenário, os componentes extraídos pelo PCA podem não
reter informações essenciais para distinguir diferentes faces. Como

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
consequência, as amostras projetadas podem se sobrepor no espaço de
características, dificultando ou até impossibilitando uma classificação eficaz..

4.3.4.4. Classificador Fisherface


Historicamente, o Fisherface foi inicialmente empregado em sistemas de
reconhecimento de fala e, posteriormente, começou a ser aplicado em sistemas
de reconhecimento de face (Figura 237). O Fisherface é uma técnica que visa
maximizar a dispersão entre as classes, que é resultante da diferença entre as
médias normalizadas inerentes a cada uma delas, fazendo com que
permaneçam mais próximas de uma mesma classe e mais distantes de outras
distintas (Belhumeur et al., 1997).

A principal distinção do Fisherface em relação ao Eigenface reside na sua

e o código CRC UZDIGMX2.


capacidade de reduzir a dispersão interna da classe, enquanto o Eigenface
aumenta tanto a dispersão entre as classes quanto dentro de cada classe, o que
pode levar a resultados indesejáveis. Em contraste, o algoritmo Fisherface busca
identificar a projeção linear mais eficaz que maximiza a separabilidade entre as
classes, melhorando assim a precisão do reconhecimento facial ao minimizar a
sobreposição dentro de uma mesma classe (Turk e Pentland, 1991).

Diferentemente da PCA, a técnica empregada no Fisherface é a análise


discriminante linear (LDA, do inglês Linear Discriminant Analysis), que realiza a
redução da dimensionalidade a fim de encontrar a combinação de recursos que

440
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

melhor separa as classes, maximizando a proporção da dispersão entre e dentro


das classes, em vez de maximizar a dispersão geral (OpenCV, 2022). A ideia é
simples: as mesmas classes devem se agrupar firmemente, enquanto classes
diferentes estão o mais longe possível umas das outras na representação da
dimensão (Belhumeur et al., 1997). É desta forma que a LDA consegue encontrar
as características faciais para discriminar pessoas.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 237: Representação de imagens com o Fisherface.

e o código CRC UZDIGMX2.


Fonte: adaptado de Zhao et al. (2003).

É importante mencionar que o desempenho do Fisherface também depende


muito dos dados de entrada e, se for treinado apenas com imagens bem
iluminadas e tentar reconhecer rostos em cenas mal iluminadas, é provável que
o método encontre componentes errados, uma vez que esses recursos podem
não ser predominantes em imagens mal iluminadas.

Isso é um tanto lógico, já que o método não teve chance de aprender a


iluminação. Contudo, o Fisherface permite uma reconstrução da imagem

441
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

projetada (Figura 238), assim como os Eigenface, mas são identificados recursos
e projetadas amostras de imagens em cada uma das reconstruções, obtendo
uma melhor representação (OpenCV, 2022). 8 imagens para cada pessoa.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 238: Representação final de imagens com o Fisherface.
Fonte: adaptado de OpenCV (2022).

Conforme exposto até agora, o Eigenface e o Fisherface adotam uma


abordagem um tanto holística para o reconhecimento facial, em que tratam seus
dados como um vetor espacial em uma imagem de alta dimensão, sendo que a
alta dimensionalidade é um fator prejudicial e um subespaço de dimensão

e o código CRC UZDIGMX2.


inferior é identificado, em que (provavelmente) informações úteis são
preservadas.

A abordagem Eigenface maximiza a dispersão total, o que pode levar a


problemas se a variância for gerada por uma fonte externa, enquanto que
Fisherface preserva informações discriminativas (OpenCV, 2022).

Agora, como não é possível garantir configurações de luz perfeitas em


imagens, para se obter uma quantidade mínima suficiente para o
reconhecimento, a biblioteca do OpenCV estabelece uma correlação entre a taxa
de reconhecimento e quantidade de imagens para se obter estimativas
confiáveis (Figura 239). 442
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Portanto, para obter boas taxas de reconhecimento é necessário pelo menos


8 imagens para cada pessoa.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 239: Eficiência da taxa de reconhecimento em relação à quantidade de imagens para os
classificadores Eigenface e Fisherface.
Fonte: adaptado de OpenCV (2022).

4.3.4.5. Classificador LBPH

e o código CRC UZDIGMX2.


Como a representação de imagens não sofre apenas com as variações de
iluminação, mas também com problemas relacionados à escala, translação ou
rotação, sua análise deve ser mais robusta em relação a estes fatores. Assim, a
metodologia padrões binários locais (LBP, do inglês Local Binary Patterns), tem
suas raízes na análise de textura 2D, em que a ideia é resumir a estrutura local
de uma imagem tomando cada pixel como central e comparando-o com a sua
vizinhança.

Com isso, se a intensidade do pixel central for maior igual à do seu vizinho,

443
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

então adota como 1 ou 0 se não for, terminando com um número binário para
cada pixel. Logo, com 8 pixels ao redor, tem-se 28 combinações possíveis,
chamadas de LBP (OpenCV, 2022). O primeiro operador LBP usava uma
vizinhança 3 x 3, conforme a Figura 240.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 240. Operador LBP com limiar igual a 5.
Fonte: adaptado de OpenCV (2022).

Esta descrição permite capturar detalhes granulados muito finos nas


imagens para a classificação de texturas, no entanto, para uma vizinhança fixa o
operador não consegue codificar detalhes que diferem em escala. Assim,
buscou-se estender a utilização para uma vizinhança variável (Ahonen et al.,
2004), com a ideia de alinhar um número abreviado de vizinhos em um círculo
de raio variável, o que permite capturar as seguintes vizinhanças, conforme a
Figura 241. e o código CRC UZDIGMX2.

Este operador é uma extensão dos códigos LBP originais, por isso às vezes é
chamado de Extended LBP (também conhecido como circular LBP). Desta forma,
se uma coordenada de pontos no círculo não corresponder às coordenadas da
imagem, o ponto será interpolado (OpenCV, 2022).

444
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 241: Operador Circular LBP.
Fonte: adaptado de OpenCV (2022).

Por definição, o operador circular LBP é robusto contra transformações


monotônicas em escala de cinza, conforme podemos verificar olhando para a
imagem LBP de uma imagem modificada artificialmente (Figura 242).

e o código CRC UZDIGMX2.

Figura 242: Representação final de imagens com LBPH.


Fonte: adaptado de OpenCV (2022).

445
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Assim, para incorporar a informação espacial no modelo de reconhecimento


facial, a representação proposta por Ahonen et al. (2004) foi dividir a imagem
LBP em regiões locais e extrair um histograma de cada uma, obtendo um vetor
de recursos espacialmente aprimorados ao concatenar os histogramas locais
(não os mesclando). Esses histogramas são chamados de Histogramas de
Padrões Binários Locais (LBPH, do inglês Local Binary Patterns Histograms).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Neste momento, retorne ao Google Sala de Aula e, na aba
"Atividades", procure a seção intitulada "Etapa Conceitualizar".

Nessa área você encontrará uma série de links com materiais


que foram criteriosamente escolhidos e disponibilizados. Trata-se de
recursos que têm por objetivo apresentar informações adicionais e
insights, permitindo que você amplie e enriqueça o seu
conhecimento acerca dos temas discutidos neste capítulo.

Este momento final do capítulo deve lhe proporcionar reflexões


críticas a respeito do conteúdo abordado, ajudando na

e o código CRC UZDIGMX2.


compreensão e fixação do conteúdo.

446
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4.4. Consolidar
4.4.1. Estudo de Caso
Você se lembra do caso em que um parceiro buscou a Facti para automatizar

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
o seu controle de acesso corporativo e diminuir o contato físico entre seus
funcionários?

Este estudo de caso destaca como, por meio da análise da necessidade de


um cliente e a utilização de tecnologias avançadas, é possível desenvolver um
sistema automatizado, eficiente e seguro.

Inicialmente, releia com atenção o cenário do estudo de caso da


"Etapa Inspirar" de caso e as suas anotações e conclusões iniciais.
Na sequência, você deverá promover o aprimoramento da solução
anteriormente apresentada usando os conhecimentos que obteve

e o código CRC UZDIGMX2.


ao longo do capítulo e do conteúdo adicional.

Lembre-se de que este aprimoramento não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos que foram estudados
e a testar novos cenários e hipóteses, validando os seus resultados
práticos.

447
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4.4.2. Proposta de implementação


Vamos criar um MVP, Minimum Viable Product, expressão em inglês para o
menor conjunto de especificações que resolvam algum problema para o cliente.
Para este MVP, foi escolhida a linguagem de programação Python, utilizando as
bibliotecas NumPy e OpenCV para reconhecimento facial e o ambiente de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
programação escolhido será a IDE do PyCharm.

Nosso objetivo será direcionar o cliente para que ele tenha a melhor solução
para realizar o reconhecimento facial de seus funcionários, sem ou com a
utilização de máscara de proteção facial.

4.4.3. Solução final do Estudo de Caso


Agora que você estudou as ferramentas essenciais para o desenvolvimento
do reconhecimento facial em imagens, chegou a hora de aplicar todo o
conteúdo de forma mais específica.

A Facti precisa apresentar uma solução para seu cliente que envolva o

e o código CRC UZDIGMX2.


reconhecimento facial e, diante do que acabou de receber de conteúdo sobre o
curso, precisará propor uma solução final.

Na proposta será trabalhado o desenvolvimento de códigos, em Python,


para os seguintes algoritmos:

● algoritmo de captura das imagens;

● algoritmo de treinamento das imagens;

● algoritmo de reconhecimento Eigenface;

● algoritmo de reconhecimento Fisherface;

448
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● algoritmo de reconhecimento LBPH.

Os algoritmos de captura e treinamento das imagens são os primeiros


passos fundamentais para dar início à implementação, enquanto que os
algoritmos de reconhecimento serão desenvolvidos para que possa ser
analisado qual apresenta o melhor resultado para a solução proposta.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
No Google Sala de Aula, na aba “Atividades”, na seção “Etapa Consolidar”,
há uma sugestão de solução para o estudo de caso, que trará códigos que
necessitam ser desenvolvidos, conforme acima.

4.4.3.1. Algoritmo de captura das imagens


Para criar o algoritmo de captura das imagens, será preciso iniciar um novo
documento Python. Para isto, clique com o botão direito do mouse no Projeto
“Reconhecimento Facial”, selecione a opção “New” e em seguida, "Python File”,
nomeando-o como “Captura” e dê "Enter”.

Uma nova área de programação é criada para a escrita do algoritmo de


captura das imagens. Neste código, utilizaremos os classificadores para realizar
a detecção facial (haarcascade_frontalface_default.xml) e dos olhos e o código CRC UZDIGMX2.

(haarcascade_eye.xml).

Para incorporar estes classificadores, realize o download do arquivo que está


disponível na área do curso, no Google Sala de Aula, e salve os arquivos na pasta
criada para o Projeto “Reconhecimento Facial”. Estes arquivos aparecerão
automaticamente na barra lateral esquerda do PyCharm.

Ao executar o código “Captura”, a sequência de ações será:

449
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

1. “Digite seu identificador: “ - 1 para imagens sem máscara e 2 para imagens


com máscara;
2. A webcam será ligada e uma janela de visualização (Figura 243) abrirá para a
captura de 25 amostras para cada um dos identificadores. Para a captura das
amostras, pressione a tecla “Q” do teclado. A mensagem “Capturando as
faces…” será mostrada enquanto não se inicia a captura. Em seguida, a cada

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
amostra aparecerá a mensagem “[Foto X capturada com sucesso]”. Ao final das
25 amostras, aparecerá a mensagem “Faces capturadas com sucesso” e a
janela de captura será fechada;
3. As amostras capturadas terão dimensões de 200 x 200 pixels, convertidas
em escala de cinza e serão nomeadas como pessoa.X.Y.jpg, sendo X
referente ao número do identificador e Y às amostras capturadas (1 a 25).

e o código CRC UZDIGMX2.

Figura 243: Janela de captura das imagens faciais (sem e com máscara).
Fonte: os Autores.

4.4.3.2. Algoritmo de treinamento das


imagens
Para criar o algoritmo de treinamento das imagens, será preciso iniciar um

450
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

novo documento Python. Para isto, clique com o botão direito do mouse no
Projeto “Reconhecimento Facial”, selecione a opção “New” e em seguida, "Python
File”, nomeando-o como “Treinamento” e dê "Enter”.

Uma nova área de programação é criada para a escrita do algoritmo de


treinamento das imagens. Neste código utilizaremos os três classificadores:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Eigenface (classificadorEigen.yml), Fisherface (classificadorFisher.yml) e LBPH
(classificadorLBPH.yml) para realizar o treinamento.

Para incorporar estes classificadores, realize o download dos três arquivos


que estão disponíveis na aba “Atividades”, no Google Sala de Aula e salve os
arquivos na pasta criada para o Projeto “Reconhecimento Facial”. Estes arquivos
aparecerão automaticamente na barra lateral esquerda do PyCharm.

Ao executar o código “Treinamento”, a sequência de ações será:

1. será mostrada a mensagem “Treinando…” enquanto ocorre o treinamento;


2. será mostrada a mensagem “Treinamento realizado” ao encerrar o
treinamento.

4.4.3.3. Algoritmo de reconhecimento e o código CRC UZDIGMX2.

Eigenface
Para criar o algoritmo de reconhecimento Eigenface para a análise, será
preciso iniciar um novo documento Python. Para isto, clique com o botão direito
do mouse no Projeto “Reconhecimento Facial”, selecione a opção “New” e em
seguida, "Python File”, nomeando-o como “Reconhecedor_Eigenface” e dê "Enter”.

Uma nova área de programação é criada para a escrita do algoritmo de


reconhecimento Eigenface utilizado na análise. Neste código utilizaremos os

451
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

classificadores Eigenface (classificadorEigen.yml) e o de detecção facial


(haarcascade_frontalface_default.xml) para realizar o reconhecimento “sem
máscara” ou “com máscara”, conforme os identificadores 1 e 2, respectivamente.

Junto ao reconhecimento, a predição da confiança será mostrada, para


identificação do quão próxima a imagem de análise está com relação às

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
amostras capturadas para cada um dos identificadores (menores valores
indicam um melhor resultado para a análise).

Para ter acesso ao código para o reconhecimento Eigenface, realize o


download do arquivo que está disponível na área do capítulo, no Google Sala de
Aula.

Ao executar o código “Reconhecedor_Eigenface”, a sequência de ações será:

1. Abertura da janela de captura da imagem, realizada pela webcam, para ser


analisada;
2. A imagem será marcada e reconhecida “sem máscara" ou “com máscara”,
mostrando o respectivo intervalo de confiança;
3. Verifique se o reconhecimento está acontecendo de maneira correta (Figura
244) e anote os valores dos intervalos de confiança para comparação com os
demais algoritmos.

e o código CRC UZDIGMX2.

Figura 244: Janela de reconhecimento das imagens faciais (sem e com máscara).
Fonte: o Autor.

452
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4.4.3.4. Algoritmo de reconhecimento


Fisherface
Para criar o algoritmo de reconhecimento Fisherface para a análise, será
preciso iniciar um novo documento Python. Para isto, clique com o botão direito

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
do mouse no Projeto “Reconhecimento Facial”, selecione a opção “New” e em
seguida, "Python File”, nomeando-o como “Reconhecedor_Fisherface” e dê "Enter”.

Uma nova área de programação é criada para a escrita do algoritmo de


reconhecimento Fisherface para a análise. Neste código utilizaremos os
classificadores Fisherface (classificadorFisher.yml) e o de detecção facial
(haarcascade_frontalface_default.xml) para realizar o reconhecimento “sem
máscara” ou “com máscara”, conforme os identificadores 1 e 2, respectivamente.

Junto ao reconhecimento, a predição da confiança será mostrada, para


identificação do quão próxima a imagem de análise está com relação às
amostras capturadas para cada um dos identificadores (menores valores
indicam um melhor resultado para a análise). Para ter acesso ao código para o
reconhecimento Fisherface, realize o download do arquivo que está disponível na
área do curso, no Google Sala de Aula.

e o código CRC UZDIGMX2.


Ao executar o código “Reconhecedor_Fisherface”, a sequência de ações será:

1. Abertura da janela de captura da imagem, realizada pela webcam, para ser


analisada;
2. A imagem será marcada e reconhecida “sem máscara" ou “com máscara”,
mostrando o respectivo intervalo de confiança;
3. Verifique se o reconhecimento está acontecendo de maneira correta (Figura
245) e anote os valores dos intervalos de confiança para comparação com os
demais algoritmos.

453
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 245: Janela de reconhecimento das imagens faciais (sem e com máscara).
Fonte: os Autores.

4.4.3.5. Algoritmo de reconhecimento LBPH


Para criar o algoritmo de reconhecimento LBPH para a análise, será preciso
iniciar um novo documento Python. Para isto, clique com o botão direito do
mouse no Projeto “Reconhecimento Facial”, selecione a opção “New” e em
seguida, "Python File”, nomeando-o como “Reconhecedor_LBPH” e dê "Enter”.

Uma nova área de programação é criada para a escrita do algoritmo de


reconhecimento LBPH para a análise. Neste código utilizaremos os
classificadores LBPH (classificadorLBPH.yml) e o de detecção facial
(haarcascade_frontalface_default.xml) para realizar o reconhecimento “sem e o código CRC UZDIGMX2.

máscara” ou “com máscara”, conforme os identificadores 1 e 2, respectivamente.

Junto ao reconhecimento, a predição da confiança será mostrada, para


identificação do quão próxima a imagem de análise está com relação às
amostras capturadas para cada um dos identificadores (menores valores
indicam um melhor resultado para a análise).

Para ter acesso ao código para o reconhecimento LBPH, realize o download


do arquivo que está disponível na área do capítulo, no Google Sala de Aula.

454
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Ao executar o código “Reconhecedor_LBPH”, a sequência de ações será:

1. Abertura da janela de captura da imagem, realizada pela webcam, para ser


analisada;
2. A imagem será marcada e reconhecida “sem máscara" ou “com máscara”,
mostrando o respectivo intervalo de confiança;

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
3. Verifique se o reconhecimento está acontecendo de maneira correta (Figura
246) e anote os valores dos intervalos de confiança para comparação com
os demais algoritmos.

Figura 246: Janela de reconhecimento das imagens faciais (sem e com máscara).
Fonte: os Autores.

e o código CRC UZDIGMX2.


Agora que os três algoritmos foram implementados e testados, analise e
reflita qual deles obteve os melhores resultados, conforme o correto
reconhecimento e aos respectivos intervalos de confiança.

O algoritmo que apresentar o melhor resultado será a proposta


apresentada pela Facti.

Lembrando que menores valores significam que estão mais próximos das
amostras capturadas como referência, portanto, sinalizam para um melhor
reconhecimento.

455
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Arquive o refinamento do estudo de caso no formulário disponível


no Google Sala de Aula, na aba “Etapa Consolidar”.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.

456
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

4.5. Avaliar
Para concluir este capítulo, você deverá realizar a “Etapa Avaliar”, que
consiste no preenchimento do Questionário de Avaliação disponível no Google
Sala de Aula e que tem como objetivo permitir que você acompanhe

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
individualmente a evolução do seu aprendizado.

Não será atribuída nota para a atividade, mas a sua entrega é obrigatória,
pois, acima de tudo, servirá como insumo para uma análise pessoal e também
para a realização de autocrítica a respeito dos pontos compreendidos e daqueles
que exigem maior dedicação.

O formulário salvará as respostas de forma automática e, por isso, pode ser


iniciado em um momento e finalizado posteriormente. Ele também será
disponibilizado a você, para que faça consultas futuras. Além dos materiais
didáticos fornecidos, você poderá usar quaisquer outros recursos e referências.
Todavia, atente para o fato de que poderá respondê-lo somente uma vez.

O registro e envio das respostas é individual e deve ser realizado dentro do


prazo estipulado para a realização do curso.

e o código CRC UZDIGMX2.

457
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Referências
AHONEN, T., HADID, A., PIETIKAINEN, M. Face recognition with local binary
patterns. In: Computer vision-eccv 2004, p. 469–481. Springer, 2004.

BARAHATE, S.R., SATURWAR, J. Face recognition using pca based algorithm and
neural network. In: Proceedings of the International Conference and

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Workshop on Emerging Trends in Technology, p. 249–252, 2010.

BARROS, M.C.M., SOUZA, N.C. O uso da biometria no controle de ponto. 2022.


Disponível em: https://www.migalhas.com.br/depeso/358027/o-uso-da-biome
tria-no-controle-de-ponto. Acesso em: 18 janeiro 2024.

BELHUMEUR, P.N., HESPANHA, J.A.P., KRIEGMAN, D.J. Eigenfaces vs. fisherfaces:


Recognition using class specific linear projection. IEEE Trans. Pattern Anal.
Mach. Intell., v. 19, n. 7, p. 711–720, 1997.

BRASIL. Lei Geral de Proteção de Dados Pessoais (LGPD) n° 13.709, de 14 de


agosto de 2018. Brasília, DF, 2018. Disponível em: http://www.planalto.gov.br/
ccivil_03/ato2015-2018/2018/lei/l13709.htm. Acesso em: 18 janeiro 2024.

CARLOS Jr, L.F.M. Reconhecimento facial utilizando redes neurais. Trabalho de


conclusão de curso (Ciência da Computação) - Centro Universitário Eurípides de
Marília. Marilia, p. 52, 2011.

CARNEIRO, L.N.V. Reconhecimento de face invariante a iluminação baseado


em uma abordagem supervisionada. Dissertação (Mestrado em Ciência da
e o código CRC UZDIGMX2.
Computação), Universidade Federal de Ouro Preto, Ouro Preto, 2012.

CAUDURO, A. Deep Learning: o motor dos negócios na era da Inteligência


Artificial. 2018. Disponível em: https://medium.com/huia/intelig%C3%AAncia-
artificial-uma-corrida-desleal-80bfa53075ed. Acesso em: 18 janeiro 2024.

DSA, Data Science Academy. Deep Learning Book, Capítulo 10 – As 10


Principais Arquiteturas de Redes Neurais. Disponível em:
https://www.deeplearningbook.com.br/as-10-principais-arquiteturas-de-redes-n
eurais. Acesso em: 18 janeiro 2024.

458
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

FUJIKAWA, C.S. Reconhecimento Facial utilizando Descritores de Textura e


Aprendizado Não Supervisionado. Trabalho de conclusão de curso (Ciência da
Computação) - Universidade Estadual Paulista Júlio de Mesquita Filho. Rio Claro,
p. 41, 2016.

GRANDO, A. Análise facial de emoções utilizando redes neurais no contexto


de uma sala de aula inteligente. Trabalho de conclusão de curso (Ciência da
Computação) - Universidade de Caxias do Sul. Caxias do Sul, p. 77, 2020.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
LIENHART, R., MAYDT, J. An Extended Set of Haar-Like Features for Rapid Object
Detection. International Conference on Image Processing, Vol. 1, Rochester,
22-25, 2002.

LI, S., JAIN, A. Handbook of face recognition. Springer eBooks collection:


Computer Science, 2005.

MACHIDON, A.L., MACHIDON, O.M., OGRUTAN, P.L. Face Recognition Using


Eigenfaces, Geometrical PCA Approximation and Neural Networks. 42nd
International Conference on Telecommunications and Signal Processing
(TSP), 2019.

OPENCV. Reconhecimento facial com OpenCV. 2022. Disponível em:


https://docs.opencv.org/3.4/da/d60/tutorial_face_main.html#tutorial_face_fisher
faces. Acesso em: 18 janeiro 2024.

SISTEMAS MULTIMÍDIA. Pixel. Disponível em: https://sites.google.com/


site/smufpbcampusiv/pixel. Acesso em: 18 janeiro 2024.

TORRES, R. S., FALCÃO, A. X., GONÇALVES, M. A., PAPA, J. P., ZHANG, B., FAN, W.,
e o código CRC UZDIGMX2.
FOX, E. A. A genetic programming framework for content-based image retrieval.
Pattern Recognition, Elsevier, v. 42, n. 2, p. 283–292, 2009.

TRUCCO, E., VERRI, A. Introductory techniques for 3-D computer vision.


Prentice Hall Englewood Cliffs, 1998.

TURK, M., PENTLAND, A. Eigenfaces for recognition. J. Cognitive Neuroscience,


v. 3, n. 1, p. 71–86, 1991.

VIOLA, P., JONES, M. Rapid object detection using a boosted cascade of simple
features. In: Proceedings of the 2001 IEEE Computer Society Conference on
Computer Vision and Pattern Recognition. CVPR 2001, v. 1, p. I–I, 2001.

459
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

ZHAO, W., CHELLAPPA, R., PHILLIPS, P.J., ROSENFELD, A. Face recognition: A


literature survey. ACM Computing Surveys, v. 35, n. 4, p. 399–458, 2003.

ZHAO, Z.Q., ZHENG, P., XU, S.T., WU, X. Object detection with Deep Learning: A
review. IEEE Transactions on Neural Networks and Learning Systems, v. 30, p.
1–21, 2019.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.

460
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Capítulo 5:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Visão Computacional
aplicada ao
reconhecimento de
imagens

e o código CRC UZDIGMX2.

Autores
Júlio César Leitão Júnior

Marcelo de Almeida Viana


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.1. Introdução
Boas vindas ao capítulo Visão Computacional aplicada ao
reconhecimento de imagens, um material escrito para guiar você pelo campo
da Visão Computacional, com um foco particular no reconhecimento de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
imagens.

Esta experiência é projetada não apenas para introduzir os conceitos


fundamentais, mas também para desafiá-lo a aplicar seus conhecimentos em
situações práticas, como, por exemplo, o reconhecimento de padrões em
imagens médicas.

Este material começa explorando como as redes neurais, e mais


especificamente as redes neurais convolucionais (CNNs), têm revolucionado o
campo do reconhecimento de imagens. Você entenderá como essas redes
imitam a percepção visual humana para interpretar imagens de maneira eficaz.

Em seguida, será aprofundado, detalhadamente, em cada componente das


CNNs, os diferentes tipos de camadas e apresentado a discussão de como cada
uma delas contribui para a extração e análise de características visuais
complexas. Além disso, será abordado as funções de ativação, explicando como
elas introduzem não-linearidade e facilitam a classificação de imagens. e o código CRC UZDIGMX2.

Este capítulo não é apenas uma oportunidade para aprender sobre


tecnologias emergentes; é um convite para você se tornar um participante ativo
na evolução da Visão Computacional. Com uma mistura equilibrada de teoria e
prática, estamos empolgados para acompanhá-lo nesta jornada.

Ao final deste capítulo, você estará preparado para explorar as inúmeras


possibilidades que o reconhecimento de imagens oferece no mundo dinâmico
da tecnologia. Vamos juntos descobrir o poder e o potencial da Visão
Computacional aplicada ao reconhecimento de imagens.
462
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.2. Inspirar
Você já pensou sobre o impacto transformador da Visão Computacional
aplicada ao reconhecimento de imagens hoje em dia? Como essa tecnologia
está moldando o futuro ao identificar padrões e objetos em fotos e vídeos,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
impactando áreas como negócios, saúde e pesquisa científica?

Como essa tecnologia consegue processar e interpretar imagens digitais,


transformando esses dados visuais em informações valiosas e práticas? E qual é
o papel desses sistemas avançados na classificação, análise e entendimento
eficaz de imagens em uma ampla variedade de aplicações?

Nesta jornada, será explorado não apenas os aspectos técnicos, mas


também como a Visão Computacional se integra para gerar soluções inovadoras
e aumentar a eficiência em diferentes setores.

O reconhecimento de imagens, por exemplo, está revolucionando áreas


como a agricultura, por meio do monitoramento da otimização de cultivos, a
saúde das plantas e otimização do uso de recursos, como água e fertilizantes,
por meio da análise de imagens capturadas por drones ou câmeras.

Na medicina, o reconhecimento de imagens auxilia na análise de imagens


e o código CRC UZDIGMX2.
médicas para diagnóstico mais precisos de doenças, como por exemplo, na
identificação de tumores em radiografias ou doenças oculares em imagens de
retina. Até mesmo a área de entretenimento e jogos vem se beneficiando, pois
fornece insights detalhados que promovem uma experiência mais
enriquecedora e impulsionam a inovação tecnológica.

Segundo DSA (2022), “A detecção e o reconhecimento automatizados de


movimentos específicos do esporte superam as limitações associadas aos
métodos manuais de análise de desempenho (subjetividade, quantificação, re-

463
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

produtibilidade). As entradas de dados de Visão Computacional podem ser


usadas em combinação com os dados de sensores e vestíveis usados no corpo”.

Esses exemplos demonstram como o reconhecimento de imagens está


revolucionando diversas áreas, oferecendo melhorias na qualidade de vida,
otimização de processos e experiências enriquecedoras.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Será explorada a aplicação prática e adaptável de Visão Computacional,
integrando tecnologias de reconhecimento de imagens em cenários específicos
e focados. Nosso propósito é guiar e incentivar o aprimoramento da eficiência
em um mundo progressivamente tecnológico.

Antes de iniciarmos a "Etapa de Conceitualização" na qual


haverá a apresentação do conteúdo e a experimentação dos
conceitos trabalhados por meio de atividades práticas, entre no
Google Sala de Aula, na aba "Etapa Inspirar", para acessar todos
os materiais disponibilizados, que visam a estimular sua reflexão e
iniciar a ambientação com o conteúdo deste capítulo.

e o código CRC UZDIGMX2.


Como última atividade desta etapa, prepare-se para trabalhar a
solução inicial do estudo de caso que será apresentado na
próxima seção.

A solução inicial que você elaborará não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos apresentados e a
entender como trabalhá-los de maneira prática.

464
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.2.1. Estudo de Caso - Reconhecimento de


padrões em imagens médicas
O propósito deste estudo é demonstrar como, por meio da análise das
necessidades específicas de um cliente e a aplicação de tecnologias avançadas,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
pode-se desenvolver um sistema de reconhecimento de imagens automatizado,
eficiente e preciso.

Este estudo de caso destaca como o reconhecimento de imagens,


impulsionado pela combinação de hardware e software especializado em
Aprendizado de Máquina, pode transformar diversos setores, incluindo a saúde.

Leia com atenção o cenário do estudo de caso e lembre-se: o


propósito desta atividade é promover uma reflexão inicial acerca do
assunto a ser discutido no cenário tendo por base somente os
conhecimentos de que você dispõe neste momento.
e o código CRC UZDIGMX2.

5.2.1.1. Cenário
A imagiologia médica tem um papel de extrema relevância no diagnóstico e
tratamento de patologias e consiste em um conjunto de processos ou técnicas
em que são criadas representações visuais das partes interiores do corpo
(Figura 247), tais como órgãos ou tecidos, com um propósito clínico a fim de

465
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

monitorizar a saúde do paciente, diagnosticar e tratar doenças ou lesões


(Beuteli et al., 2000).

Devido aos avanços tecnológicos na área de imagem médica, a imagiologia


médica permite a obtenção de informação do corpo humano para diferentes
aplicações clínicas, sobre cada área do corpo a ser estudada ou tratada

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
(Krupinski, 2000). Muitas empresas estão investindo em tecnologias inovadoras
para aprimorar a área de imagiologia médica, buscando oferecer diagnósticos
mais precisos e tratamentos eficazes.

Figura 247: Exemplos de aplicações de imagem médica.


Fonte: Cunha (2021).

e o código CRC UZDIGMX2.


A radiografia é uma das primeiras técnicas de imagiologia utilizadas na
medicina moderna, utilizando de um feixe de raios X para poder visualizar uma
região de interesse. As imagens obtidas com o recurso da radiografia ajudam
na avaliação da presença ou ausência de doenças, danos ou objetos estranhos.
As técnicas de radiografia são ainda usadas frequentemente na avaliação de
doenças como a determinar o tipo e extensão de uma fratura, inflamações e
infecções na região do abdômen e na identificação de pneumonias (Tum e
Middleton, 2006).

Pneumonias são infecções que se instalam nos pulmões, órgãos duplos

466
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

localizados um de cada lado da caixa torácica (Figura 248). Podem acometer a


região dos alvéolos pulmonares, em que desembocam as ramificações
terminais dos brônquios e, às vezes, os interstícios (espaço entre um alvéolo e
outro).

Basicamente, a pneumonia é provocada pela penetração de um agente

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
infeccioso ou irritante (bactérias, vírus, fungos e por reações alérgicas) no
espaço alveolar. Esse local deve estar sempre muito limpo, livre de substâncias
que possam impedir o contato do ar com o sangue. Um exame clínico, como
auscultação dos pulmões e radiografias de tórax, são recursos essenciais para o
diagnóstico de pneumonia (Varella, 2011).

e o código CRC UZDIGMX2.


Figura 248: Estrutura das vias respiratórias superiores.
Fonte: Cunha (2021).

A interação da imagiologia médica com outras áreas científicas como, por


exemplo, a Inteligência Artificial, são cada vez mais um fator crucial para a
detecção de patologias precocemente. A qualidade destas imagens, assim
como o seu processamento, melhora a tomada de decisões médicas permitindo
a detecção de patologias de modo precoce e até reduzir custos nos tratamentos
posteriores.

Apesar do sucesso no diagnóstico realizado por especialistas utilizando

467
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

imagens médicas, a análise e interpretação automática de imagens representa


um avanço significativo no apoio aos especialistas e, simultaneamente,
potência a identificação ou sugestão precoce de alguns tipos de doenças
(Cunha, 2021).

Diante deste cenário, o Dr. Orlando, um renomado médico formado há

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
muitos anos, em uma renomada universidade brasileira, se especializou em
pneumologia e direcionou sua área de atuação no tratamento das patologias
das vias respiratórias.

O Dr. Orlando tem sua rotina de trabalho focada no atendimento a diversos


pacientes em seu consultório particular e nos atendimentos hospitalares. Uma
primeira anamnese é realizada por ele, passa a colher as queixas e ter
conhecimento do estado clínico de seu paciente.

Diante destas informações, ele consegue estabelecer um diagnóstico e


oferecer o tratamento adequado. Muitas vezes ele precisa de alguns exames
complementares, como, por exemplo, exames de sangue ou mesmo uma
radiografia do pulmão, para certificar-se da ocorrência de alguma doença de
maior gravidade, como a pneumonia. Assim, ele realiza um pedido de exame e
o paciente é encaminhado para que possa ser realizada a radiografia.

e o código CRC UZDIGMX2.


Esta é um pouco da rotina diária do Dr. Orlando. Porém, diante do cenário
mundial da trazido pela pandemia da COVID-19 e outras gripes, os
atendimentos aumentaram demasiadamente e, por consequência, houve um
excessivo aumento da necessidade de realização de radiografias do pulmão,
para tentar detectar as possíveis causas e o nível de comprometimento da
função pulmonar, que é fornecer as trocas gasosas da respiração.

Do que era sua rotina diária há anos atrás para a atual, o Dr. Orlando
quadruplicou seus atendimentos e não consegue obter ajuda humana com as
análises das radiografias, que são cada vez mais volumosas e precisam ser

468
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

minuciosamente observadas para não deixar passar despercebido nenhuma


informação que possa levar a um diagnóstico errôneo e prejudicar a saúde de
seus pacientes.

Em um final de dia de plantão no hospital, o Dr. Orlando se deu conta que


estava levando tempo demais para apresentar seus diagnósticos, primeiro pela

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
quantidade que só aumentava em sua mesa e, de outro lado, muitas das
radiografias estavam inconclusivas, impossibilitando o parecer final e como
proceder na prescrição de tratamento para seus pacientes.

Diante destes fatos, ele foi conversar com o diretor do hospital com o
intuito contratar uma Instituição para ajudá-lo nesta problemática. Conhecendo
a Facti, Instituição Científica e Tecnológica (ICT) Privada, de outros projetos o
diretor, juntamente com o Dr. Orlando, marcaram uma reunião presencial na
sede da organização para sugerir o desenvolvimento de um software de
reconhecimento de raios-x.

Desta forma, pense como o Dr. Orlando poderia ser ajudado neste cenário
em que o volume de atendimentos e radiografias para analisar não param de
crescer e ele precisa ser preciso nos diagnósticos de seus pacientes.

Para isso, uma alternativa pode ser recorrer à IA para propor uma solução

e o código CRC UZDIGMX2.


de Aprendizado de Máquina para realizar o reconhecimento de padrões nas
radiografias de raios-x, de forma a buscar características que compõe um
quadro normal e com pneumonia, auxiliando desta forma no diagnóstico
preciso.

469
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Importante: coloque a sua resposta na atividade


"Apresentação da solução inicial", no Google Sala de Aula, em
um documento no formato de texto. Utilize este momento para

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
trabalhar as suas ideias iniciais com o máximo de detalhamento que
puder. Mais adiante, as suas anotações serão retomadas para o
refinamento da solução do estudo de caso.

e o código CRC UZDIGMX2.

470
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.3. Conceitualizar
5.3.1. Como redes neurais aprimoram o
reconhecimento de imagens

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Surgindo como uma alternativa de algoritmo desenvolvido para
implementar Machine Learning (ML), a Deep Learning (DL) emerge como uma
técnica avançada empregando redes neurais de múltiplas camadas, conhecidas
como redes profundas. Inspirada pela complexa biologia do cérebro humano,
esta abordagem busca emular a maneira como processamos informações dos
diferentes sentidos, tais como a visão, audição, tato, paladar e olfato, de forma
eficiente e inteligente, abrindo novos caminhos para a resolução de problemas
complexos (Cunha, 2021).

A redes neurais artificiais representam uma família de modelos (camadas de


software) que imitam a elegância estrutural do sistema neuronal presente nas
redes neuronais biológicas com a conexão entre neurônios, no qual cria-se
camadas ocultas discretas, conexões e direções de propagação de dados, até
que a camada final produza a saída. Os resultados de cada camada da rede
e o código CRC UZDIGMX2.
neural são combinados para encontrar a resposta com maior probabilidade de
estar correta (Cauduro, 2018).

Uma das principais vantagens do DL é que o sistema é capaz de identificar


sozinho as características que descrevem uma categoria (SAS, 2022). Para
descrever em palavras mais simples, é possível utilizar o exemplo de como se
aprende a reconhecer gatos e cachorros adquiridos na infância, em que a mãe
ensina ao bebê mostrando diferentes cachorros e diferentes gatos.

Ao utilizar a técnica tradicional, a mãe deveria explicar ao bebê: observe o

471
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

formato dos olhos, das orelhas, o padrão de cores, o tamanho, o formato do


rabo e assim por diante. Estas seriam, portanto, as características que definiriam
um cachorro ou um gato.

Já o computador precisa identificar estas características em termos


matemáticos. Afinal, o computador não sabe o que é uma orelha ou um olho,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
mas consegue identificar o que é um triângulo, o que é um círculo e é capaz de
reconhecer cores.

Portanto, em uma técnica de ML tradicional, os seres humanos indicariam


quais características definem um gato e quais características definem um
cachorro. A partir daí, o sistema seria treinado a reconhecer estas
características. Já em um sistema com DL, o ser humano não precisa indicar as
características. O próprio sistema é capaz de tirar suas conclusões e escolher as
características mais significativas para diferenciar um gato de um cachorro.

E este processo começa com a escolha de um modelo de rede neural


adequado. A implementação de DL se dá por meio de redes neurais de múltiplas
camadas, como ilustrado na Figura 249, em que cada nó da imagem representa
um neurônio artificial.

e o código CRC UZDIGMX2.

Figura 249: Representação de uma rede neural de múltiplas camadas.


Fonte: os Autores.

472
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Conforme observa-se, os dados são inseridos na rede neural por meio da


camada de entrada e são propagados através das camadas ocultas até gerarem
resultados na camada de saída. Durante o treinamento intensivo dos dados, a
rede neural é alimentada com um grande conjunto de imagens rotuladas. Cada
imagem vem acompanhada de um rótulo que indica o que a imagem
representa, permitindo que a rede ajuste seus pesos e parâmetros internos, com

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
base na diferença entre sua previsão e o rótulo real.

Este processo exemplifica o Aprendizado Supervisionado, em que a rede


aprende a classificar e identificar imagens com base nos exemplos fornecidos. A
qualidade do treinamento depende da quantidade, diversidade e precisão das
imagens e rótulos no conjunto de dados.

Um aspecto notável das redes neurais é sua capacidade de aprender regras


e padrões de maneira implícita, não por meio de instruções programadas, mas
sim da exposição a dados históricos durante o treinamento. Por exemplo, ao
treinar uma rede para reconhecer diferentes tipos de animais (como gato e
cachorro), ela aprende características únicas, como a textura do pelo ou a forma
dos olhos, com base nos dados fornecidos.

Após o treinamento, a rede está pronta para a fase de inferência, em que ela
pode aplicar o que aprendeu à novas imagens, realizando tarefas como
e o código CRC UZDIGMX2.
identificação e classificação de objetos. Essa capacidade de generalizar a partir
do treinamento para aplicações práticas é o que torna as redes neurais tão
poderosas e úteis em uma variedade de aplicações, desde reconhecimento facial
até a análise de imagens médicas.

Diante deste cenário, as redes neurais convolucionais (CNNs) são


frequentemente escolhidas para essa tarefa devido à sua habilidade excepcional
em identificar e interpretar padrões visuais complexos. Uma CNN é estruturada
em várias camadas, incluindo camadas convolucionais, de pooling e totalmente

473
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

conectadas, cada uma desempenhando um papel vital na extração e


aprendizado de diferentes características das imagens (DSA, 2021). A seguir
estão listadas as 10 principais arquiteturas de redes neurais, dentre elas, as
principais arquiteturas empregadas em DL :

● redes multilayer perceptrons;

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● redes neurais convolucionais;
● redes neurais recorrentes;
● long short-term memory (LSTM);
● redes de Hopfield;
● máquinas de Boltzmann;
● deep belief network;
● deep auto-encoders;
● generative adversarial network;
● deep neural network capsules.

5.3.2. Introdução à rede neural convolu-


cional
e o código CRC UZDIGMX2.

A arquitetura das redes neurais convolucionais (ConvNets ou CNNs) são


redes artificiais amplamente utilizadas para a classificação de imagens, alvo
deste curso, de modo a agrupá-las por similaridade (busca de fotos), realizar o
reconhecimento de objetos dentro de cenas, realizar o reconhecimento óptico
de caracteres (OCR) para digitalizar texto e tornar possível o Processamento da
Linguagem Natural em documentos manuscritos, em que as imagens são
símbolos a serem transcritos. As CNNs podem ainda ser aplicadas a arquivos de
áudio (DSA, 2021).

474
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A primeira coisa a saber sobre redes convolucionais é que elas não


percebem imagens como os humanos. Portanto, é preciso pensar de uma
maneira diferente sobre o que uma imagem significa quando é alimentada e
processada por uma rede convolucional.

Elas percebem imagens como volumes, isto é, objetos tridimensionais, em

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
vez de estruturas planas medidas apenas por largura e altura, uma vez que as
imagens em cores digitais possuem uma codificação baseada em
vermelho-verde-azul (RGB, red-green-blue), misturando-as para produzir o
espectro de cores que os seres humanos percebem (DSA, 2021). As redes
convolucionais ingerem e processam imagens como tensores (array), que são
matrizes (linhas x colunas) de números com várias dimensões.

Assim, uma rede convolucional recebe uma imagem como uma caixa
retangular cuja largura e altura são medidas pelo número de pixels ao longo
dessas dimensões e cuja profundidade é de três camadas profundas, em RGB.
Essas camadas de profundidade são referidas como canais.

Portanto, à medida que as imagens se movem através de uma rede


convolucional, descreve-se em termos de volumes de entrada e saída,
expressando-as matematicamente como matrizes de múltiplas dimensões desta,
por exemplo, desta forma: 30x30x3 (30x30 pixels e 3 canais, referentes ao RGB).
e o código CRC UZDIGMX2.

De camada em camada, suas dimensões se alteram à medida que


atravessam a rede neural convolucional até gerar uma série de probabilidades
na camada de saída, sendo uma probabilidade para cada possível classe de
saída (DSA, 2021). Aquela com maior probabilidade será a classe definida para a
imagem de entrada, como um pássaro, por exemplo (Figura 250).

475
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 250: Estrutura de uma rede neural convolucional.
Fonte: adaptado de DSA (2021).

Na imagem anterior, cada quadriculado da foto do pássaro é denominado


parâmetros de filtro, ou kernel de convolução. Pode-se imaginar o kernel como
um quadriculado que vai deslizando pela imagem, produzindo um output
filtrado para a próxima camada. O output de cada local por em que o kernel
passa forma um pixel do mapa de características representativo da imagem,
que é então passado à próxima camada. É importante perceber que cada um
desses filtros pode aprender a detectar um padrão diferente na imagem e o

e o código CRC UZDIGMX2.


procura ao longo dela. Essa operação de deslizar uma grade de parâmetros
pela imagem é chamada de convolução (Facure, 2017).

Em reconhecimento de imagens, por exemplo, pode-se pensar nas camadas


mais baixas (próximas às entradas) como aprendendo a detectar traços e
variação de luminosidade, enquanto que as camadas superiores aprendem a
juntar esses traços em partes de objetos. É comum utilizar após a convolução
uma camada de agrupamento (pooling) dos pixels, normalmente com um
agrupamento de média ou máxima ativação de uma determinada
característica.

476
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A camada de agrupamento também tem um kernel quadriculado, que passa


pela imagem computando a função de agrupamento. É também comum
adicionar ao final das camadas convolucionais uma ou duas camadas ocultas
densas (ou completamente conectadas), para cálculos intermediários que
auxiliam a rede a encontrar os valores finais de probabilidades das predições
(Facure, 2017).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Nas próximas seções será abordado sobre cada uma destas camadas que
constituem uma rede neural convolucional.

e o código CRC UZDIGMX2.

477
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.3.2.1. Atividade de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar o estudo do conteúdo dos tópicos anteriores
para se familiarizar com os temas que serão abordados na atividade.

Para esta atividade você precisará utilizar um navegador com


acesso à Internet.

É importante esclarecer que estas atividades não são provas e não


haverá correção formal por parte dos instrutores; o objetivo é a
autoaprendizagem e prática. As respostas e dicas de desenvolvimento
para cada atividade estão disponíveis em arquivos específicos no
Google Sala de Aula, na aba Etapa Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos


seguintes símbolos:

e o código CRC UZDIGMX2.

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

478
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 63 ●

Explore uma rede neural convolucional pré-treinada de Aprendizado de


Máquina, baseada na web, para experimentação de conceitos básicos de um
modelo de reconhecimento de imagens de cães e gatos, sem necessidade de
codificação ou Aprendizado Profundo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Siga os passos a seguir:

1. Acesse a ferramenta Teachable Machine, desenvolvida pelo Google, por


meio do site: https://teachablemachine.withgoogle.com/train.
2. Crie um novo projeto escolhendo a opção para criar um novo projeto de
reconhecimento de imagem (Image Project) e, sem seguida, clique em
modelo de imagem padrão (Standard image model).
3. Adicione as classes ou categorias: Cães e Gatos, uma classe para cada
um.
4. Adicione (faça o Upload) algumas imagens de cães na categoria Cães e
de gatos na categoria Gatos. Você pode utilizar imagens da pasta
disponibilizada no Google Sala de Aula.
5. Treine o modelo (Training Model) com as imagems carregadas para cada
classe. Quanto mais imagens você adicionar, mais preciso será o modelo.
6. Teste o modelo após o treinamento, usando novas imagens para ver
e o código CRC UZDIGMX2.
como ele as classifica.

OBSERVAÇÃO: Lembre-se de que a precisão do modelo depende da qualidade e


da variedade das imagens usadas no treinamento.

479
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.3.3. Conhecendo o modelo de rede neural


para reconhecimento de imagens
O reconhecimento de imagens representa um desafio empolgante e
complexo na área da Visão Computacional, um campo em que os modelos de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
redes neurais se destacam como componentes essenciais. Especialmente, as
redes neurais convolucionais emergem como uma classe profunda e inovadora,
projetadas especificamente para essa tarefa.

Ao considerar a aplicação prática das CNNs, é essencial destacar a relevância


do modelo sequencial do TensorFlow/Keras na construção de arquiteturas de
Aprendizado de Máquina. Este modelo representa uma abordagem linear e
acessível, ideal para a criação de redes neurais, em que cada camada é
empilhada de forma sequencial, contribuindo para um fluxo de dados coeso e
bem definido (Marchiori, 2023).

O modelo sequencial do TensorFlow/Keras (Figura 251) distingue-se pela sua


simplicidade e eficiência, permitindo aos usuários adicionar camadas de
maneira intuitiva - um aspecto especialmente útil não apenas em CNNs, mas em
uma ampla gama de arquiteturas de redes neurais. Ele facilita a integração de

e o código CRC UZDIGMX2.


diferentes tipos de camadas, como convolucionais, de ativação, pooling e
densamente conectadas, cada uma com seu papel específico no processamento
e análise de dados (TensorFlow, 2022).

Embora as CNNs sejam um caso de uso comum para este modelo, devido à
sua capacidade de processar e interpretar eficientemente informações visuais, o
modelo sequencial é versátil o suficiente para atender a uma variedade de
necessidades em diferentes domínios de Aprendizado de Máquina, facilitando a
implementação de soluções inovadoras e eficazes.

480
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 251: Exemplo de implementação das camadas do modelo sequencial.
Fonte: os Autores.

No entanto, ensinar essas redes a funcionar corretamente é uma tarefa que


vem com seus próprios obstáculos e sutilezas, necessitando de uma exploração
cuidadosa e uma estratégia bem planejada para ser bem-sucedida. Ajustar
hiperparâmetros, escolher funções de ativação adequadas e prevenir o
e o código CRC UZDIGMX2.
overfitting são tarefas críticas que requerem uma abordagem meticulosa. Além
disso, técnicas como transferência de aprendizado e aumento de dados têm se
mostrado valiosas para melhorar a eficácia e eficiência das CNNs.

Para compreender totalmente as CNNs, é importante reconhecer que elas


possuem uma variedade extensa e influente de aplicações práticas que se
estendem por vários setores. Seja no reconhecimento facial, na análise de
sentimentos, em diagnósticos médicos ou na navegação autônoma de veículos,
essas redes vêm se provando serem ferramentas poderosas e versáteis.

481
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Cada aplicação não apenas demonstra a capacidade das CNNs em resolver


problemas complexos de Visão Computacional, mas também destaca o potencial
contínuo para inovação e aprimoramento nesse campo dinâmico. Ao concluir
este panorama sobre as redes neurais convolucionais, fica evidente o papel vital
e transformador que desempenham no reconhecimento de imagens.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Com uma base sólida na compreensão de suas estruturas e funções, há
agora uma preparação mais avançada do que nunca para explorar técnicas mais
sofisticadas e participar das inovações contínuas no excitante campo da Visão
Computacional e Inteligência Artificial.

5.3.3.1. Camadas de uma rede neural


convolucional
As CNNs são uma arquitetura sofisticada em que diversas camadas
cooperam para destrinchar e compreender imagens.

Cada camada possui uma função especializada, contribuindo de forma


singular para que a rede identifique e interprete padrões visuais complexos. Ao
e o código CRC UZDIGMX2.
aprofundar o entendimento das camadas mais recorrentes de uma CNN,
expande-se significativamente a compreensão de como essas poderosas
estruturas funcionam e se aprimoram a partir de dados visuais.

Esse aprendizado se inicia na camada convolucional, em que filtros


especializados destacam características essenciais da imagem. Segue-se a
camada de ativação, frequentemente utilizando a função ReLU, que introduz
não-linearidade ao processo, permitindo que a rede aprenda a uma variedade
mais rica de padrões (Marchiori, 2023).

482
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

No entanto, problemas podem ocorrer durante a fase de treinamento de um


modelo de Aprendizado de Máquina, como o overfitting e underfitting, e são
desafios críticos que devem ser abordados para garantir a eficácia e o
desempenho para aprender os padrões essenciais nos dados de treinamento.

O overfitting é um fenômeno no campo do Aprendizado de Máquina e

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
estatística, em que um modelo analítico se ajusta demais aos dados específicos
em que foi treinado. Tecnicamente, isso significa que o modelo aprende tanto os
padrões subjacentes quanto o ruído nos dados de treinamento. Como resultado,
ele tem um desempenho excepcionalmente bom nesses dados específicos, mas
falha em generalizar para novos conjuntos de dados ou dados de teste
(Marchiori, 2023).

Por outro lado, o underfitting é o oposto de overfitting e ocorre quando um


modelo de Machine Learning não consegue capturar adequadamente as
complexidades e padrões dos dados de treinamento. Isso significa que o modelo
é muito simples para entender as nuances dos dados, resultando em um
desempenho ruim tanto nos dados de treinamento quanto nos novos dados de
entrada. O underfitting pode ser causado por um modelo muito simplificado,
falta de iterações no treinamento, ou não ter dados suficientes, e é caracterizado
por uma baixa variância, mas um alto viés.
e o código CRC UZDIGMX2.
Contudo, à medida que a imagem avança através dessas camadas, sua
representação torna-se progressivamente mais abstrata. Os padrões simples
detectados nos estágios iniciais transformam-se em representações complexas
de características de alto nível nos estágios mais profundos. É aqui que camadas
densas, também conhecidas como totalmente conectadas, entram em cena,
compilando todas as características aprendidas para tomada de decisões finais,
como a classificação da imagem (Marchiori, 2023).

Ao entender como cada camada funciona e contribui para o processo geral,

483
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

é possível ajustar e otimizar as CNNs para uma variedade de tarefas de


reconhecimento de imagem. Seja ajustando o tamanho e o número de filtros na
camada convolucional, alterando a taxa de dropout ou selecionando diferentes
funções de ativação. Cada ajuste é um passo em direção a uma rede mais
precisa e robusta.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Assim, as CNNs, com sua capacidade de aprender diretamente dos dados
visuais e melhorar continuamente por meio do treinamento, representam uma
das mais promissoras áreas da Inteligência Artificial. À medida em que se
explora e entende a respeito dessas redes, abrem-se portas para inovações em
Visão Computacional, aplicando esses conhecimentos para resolver desafios
complexos e criar tecnologias que podem transformar o mundo de maneira que
ainda estamos começando a imaginar.

Dentro deste intricado sistema das redes neurais convolucionais, a camada


convolucional, ou Conv2D, merece uma atenção especial. Esta camada é
fundamental, atuando como os olhos da rede, capturando padrões primários
como bordas, cores e texturas. Com seus filtros ou kernels, a Conv2D desliza
sobre a imagem de entrada, aplicando operações matemáticas para criar mapas
de características que representam aspectos específicos da imagem
(TensorFlow, 2022).
e o código CRC UZDIGMX2.
Esses mapas se tornam mais abstratos e enriquecidos à medida que passam
por camadas subsequentes, transformando dados visuais brutos em
informações compreensíveis e úteis. A compreensão profunda da camada
convolucional é, portanto, essencial para qualquer um que deseje mergulhar no
mundo fascinante do reconhecimento de imagens por meio de redes neurais
convolucionais. Cada uma destas camas serão melhor abordadas nas seções
seguintes.

484
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.3.3.1.1. Camada Convolucional (Conv2D)


A camada convolucional, ou Conv2D, é reconhecida como o núcleo vital de
uma CNN. Atuando como o elemento fundamental, essa camada executa uma
operação matemática conhecida como convolução, na qual filtros ou kernels são
aplicados à imagem de entrada (Keras, 2024a).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Cada filtro é cuidadosamente projetado para detectar características
específicas, como bordas, ângulos ou padrões mais intrincados. À medida que se
desloca pela imagem, cada filtro gera um mapa de características que ressalta as
áreas em que essas características particulares são mais evidentes. Esse
processo transforma a imagem de entrada em uma representação que a rede
pode compreender e manipular de forma mais eficaz nas camadas
subsequentes (TensorFlow, 2022).

Por meio dessa transformação, a Conv2D capacita a rede a aprender a


reconhecer e interpretar os variados aspectos visuais que compõem uma
imagem, desempenhando um papel crucial no sucesso do reconhecimento de
imagens. Quando explora-se mais profundamente as funções e operações das
camadas convolucionais, começa a compreender sua importância fundamental
na extração e interpretação de informações visuais. Elas formam a base sobre a
e o código CRC UZDIGMX2.
qual redes neurais convolucionais complexas são construídas e aperfeiçoadas,
treinadas para executar tarefas de reconhecimento de imagens com alta
precisão e eficiência (Marchiori, 2023).

A convolução, com sua capacidade de preservar a relação espacial entre os


pixels, permite que a rede mantenha uma percepção contextual da imagem,
essencial para identificar e entender padrões e objetos complexos. Além disso, a
habilidade de aprender características incrementais, começando do simples ao
complexo, permite que a CNN adapte-se e refine seu entendimento à medida
que mais dados são processados, tornando-a incrivelmente eficaz em tarefas de

485
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Visão Computacional.

A camada Conv2D, portanto, não é apenas um componente, é a essência


que impulsiona a capacidade da CNN de transformar pixels brutos em
discernimento visual profundo. Com cada filtro e mapa de características, a rede
se torna mais sintonizada com os detalhes e nuances das imagens, aprendendo

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
a interpretar o mundo visual de maneira cada vez mais sofisticada e precisa.

Este entendimento não apenas ilumina o funcionamento interno das CNNs,


mas também fornece insights valiosos para aqueles que desejam desenvolver e
otimizar essas redes para aplicações variadas, abrindo novas possibilidades para
avanços no campo da Inteligência Artificial e Visão Computacional.

5.3.3.1.2. Camada de normalização em lote


(BatchNormalization)
A camada de normalização em lote, conhecida como BatchNormalization, é
uma técnica inovadora e poderosa no treinamento de redes neurais. Essa
estratégia é empregada para melhorar tanto a estabilidade quanto a velocidade
e o código CRC UZDIGMX2.
do processo de aprendizagem. Ao normalizar as entradas de cada mini-lote,
ajustando-as para que tenham uma média próxima a zero e um desvio padrão
próximo a um, essa técnica aborda efetivamente o problema do deslocamento
interno das covariáveis, também conhecido como "internal covariate shift" (Ioffe e
Szegedy, 2015).

Este fenômeno ocorre quando as distribuições das entradas de cada camada


se alteram à medida que os parâmetros das camadas anteriores são atualizados,
podendo desestabilizar o aprendizado ao longo do tempo. A normalização em

486
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

lote atua diretamente nessa questão, estabilizando a distribuição das entradas


antes que passem pela próxima camada. Ao fazer isso, permite-se que taxas de
aprendizado mais elevadas sejam utilizadas, acelerando o treinamento sem
comprometer a estabilidade (Keras, 2024b).

Além disso, ao normalizar os dados em cada lote, essa técnica reduz a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
necessidade de inicialização de pesos cuidadosamente calibradas, tornando a
rede mais robusta a escolhas iniciais de parâmetros. Essa camada não apenas
facilita um treinamento mais rápido e estável, mas também atua como um
regularizador, reduzindo, em certa medida, a necessidade de outras técnicas de
regularização, como Dropout. Isso ocorre porque cada mini-lote tem sua
normalização, o que adiciona um certo nível de ruído aos dados durante o
treinamento, ajudando a rede a desenvolver uma representação mais robusta e
a evitar o overfitting (Ioffe e Szegedy, 2015).

Em resumo, a camada de normalização em lote é uma adição valiosa à


arquitetura das redes neurais, proporcionando benefícios significativos ao
processo de treinamento. Ao entender e aplicar essa técnica, os praticantes de
redes neurais podem melhorar a eficiência, a estabilidade e a performance de
seus modelos, pavimentando o caminho para sistemas de Aprendizado de
Máquina mais rápidos e confiáveis
e o código CRC UZDIGMX2.

5.3.3.1.3. Camada de agrupamento máximo


(MaxPooling2D)
A camada de agrupamento máximo, também conhecida como
MaxPooling2D, é especialmente projetada para reduzir as dimensões espaciais —
altura e largura — do volume de entrada. O processo de maxpooling é relativa-

487
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

mente simples, mas extremamente eficaz: ele examina uma janela deslizando
depois essa janela por toda a área da entrada. Essa operação resulta em uma
representação reduzida, porém preservada, das características originais (Keras,
2024c).

Ao realizar essa redução seletiva, a camada de MaxPooling2D oferece vários

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
benefícios. Primeiramente, ao diminuir as dimensões, ela reduz
significativamente o número de parâmetros a serem processados nas camadas
subsequentes, o que não apenas diminui a carga computacional e a memória
necessária para treinar a rede, mas também melhora a eficiência do modelo
como um todo (Marchiori, 2023).

Em segundo lugar, ao preservar apenas os valores mais fortes (máximos) de


cada janela, ela ajuda a tornar a rede menos sensível à exata localização de
características dentro da região visual, aumentando assim a capacidade do
modelo de capturar e reconhecer padrões importantes, mesmo quando eles
variam em posição.

Além disso, a camada de maxpooling contribui para mitigar o overfitting


(Keras, 2024c). Ao reduzir a resolução das representações intermediárias, ela
força a rede a construir uma representação mais compacta e generalizada dos
dados. Isso significa que a rede deve focar nas características mais
e o código CRC UZDIGMX2.
proeminentes, ignorando detalhes irrelevantes e ruídos, o que leva a um modelo
mais robusto e generalizável, capaz de desempenhar bem em dados não vistos
anteriormente.

Desta forma, a camada de agrupamento máximo é mais do que uma simples


ferramenta para redução de dimensionalidade; é uma componente estratégica
que aumenta a eficiência computacional, fortalece a capacidade de detecção de
características e contribui para a robustez geral do modelo. Ao entender e
utilizar o MaxPooling2D de maneira eficaz, podemos construir redes

488
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

neurais convolucionais mais rápidas, mais leves e mais poderosas, capazes de


aprender e generalizar a partir de imagens de maneira mais eficiente.

5.3.3.1.4. Camada de Dropout

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
A camada de Dropout é uma estratégia inteligente e eficaz de regularização
usada em redes neurais, incluindo CNNs. O princípio por trás do dropout é
surpreendentemente simples, mas poderosamente eficaz: durante o
treinamento, alguns neurônios são aleatoriamente "desligados", ou seja,
ignorados temporariamente. Isso significa que, a cada passo do treinamento,
uma porção aleatória dos neurônios não contribui com a propagação para a
frente e a atualização dos pesos durante a retropropagação (Marchiori, 2023).
Essa abordagem tem um efeito duplo.

Primeiro, impede que a rede se torne excessivamente dependente de


qualquer neurônio ou conjunto de neurônios, pois cada neurônio tem a chance
de ser desligado em algum momento. Essa independência forçada entre os
neurônios faz com que a rede aprenda representações mais robustas e menos
interdependentes, uma vez que não pode contar com a presença de nenhum
e o código CRC UZDIGMX2.
neurônio específico.

Como resultado, o modelo é encorajado a aprender padrões mais


generalizáveis e menos propensos a se ajustar demais aos dados de
treinamento, ou seja, overfitting (Keras, 2024d).

Em segundo lugar, o dropout pode ser visto como um método de treinar e


combinar exponencialmente muitas sub-redes diferentes em uma única rede.
Cada sub-rede vê uma versão ligeiramente diferente dos dados, aprendendo
uma representação ligeiramente diferente. Ao final do treinamento, essas diver-

489
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

sas representações se combinam para formar uma representação mais


abrangente e generalizada. Essa combinação de múltiplas perspectivas ajuda a
rede a ser mais robusta a variações nos dados de entrada.

No entanto, é importante notar que o Dropout é usado apenas durante o


treinamento. Durante a avaliação ou inferência, todos os neurônios são usados,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e seus pesos são ajustados de acordo com a probabilidade de eliminação,
garantindo que a saída seja uma média ponderada de todas as sub-redes
treinadas. Isso mantém a eficácia da rede enquanto aproveita a regularização
fornecida pelo dropout (Marchiori, 2023).

Ao incorporar a camada de Dropout em uma CNN, os praticantes podem


mitigar efetivamente o risco de overfitting, promovendo um modelo mais estável
e generalizável. Isso é especialmente valioso em cenários em que os dados de
treinamento são limitados ou quando a rede é particularmente profunda e
complexa. Portanto, entender e implementar corretamente o dropout é
fundamental para construir redes neurais robustas e confiáveis que funcionem
bem na prática.

e o código CRC UZDIGMX2.


5.3.3.1.5. Camada achatada (Flatten)
As camadas achatadas, conhecidas como Flatten, desempenham um papel
simples, mas essencial nas redes neurais convolucionais (CNNs). Após as
operações de convolução, ativação e pooling, os dados ainda estão em um
formato de matriz multidimensional, geralmente com três dimensões: largura,
altura e profundidade (Keras, 2024e).

No entanto, para tarefas de classificação ou regressão, as redes neurais


necessitam processar as informações de maneira unificada. A camada flatten

490
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

desempenha um papel crucial nesse aspecto, transformando os dados de


entrada em um formato apropriado para análise. Essa camada não possui
parâmetros para aprender; em vez disso, sua função é reestruturar os dados. Ela
converte a matriz 3D em um vetor 1D longo, alinhando todos os valores das
matrizes de características em uma única linha (Marchiori, 2023).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Esse processo é como desenrolar todas as características detectadas e
colocá-las em uma linha contínua, de modo que cada elemento do vetor agora
representa uma característica específica identificada nas camadas anteriores.

A importância dessa transformação reside na compatibilidade que ela cria


entre as camadas convolucionais e as densas, camadas completamente
conectadas (fully connected layers), que geralmente vêm a seguir. As camadas
densas, fundamentais para realizar a classificação ou regressão, esperam dados
de entrada como um vetor de características, em que cada neurônio pode
considerar todas as características simultaneamente para tomar decisões.

Ao achatar os dados, a camada Flatten efetivamente traduz a representação


espacial e volumétrica de uma imagem para um formato que pode ser
processado por essas camadas densas, permitindo que a rede faça previsões ou
classificações com base em todas as características extraídas.

e o código CRC UZDIGMX2.


Além disso, essa transformação simplifica o modelo, tornando mais clara a
transição entre a extração de características e a interpretação/classificação. Ao
entender a função e a operação da camada Flatten, os praticantes de redes
neurais podem projetar arquiteturas mais eficientes e eficazes, criando um
caminho suave dos dados brutos de imagem até as decisões finais tomadas pela
rede.

É, portanto, um elo crucial, transformando a representação rica e complexa


de uma imagem em um formato simplificado, pronto para ser avaliado e
interpretado nas fases finais da rede neural convolucional.

491
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.3.3.1.6. Camada densa (Dense)


A camada densa, também conhecida como totalmente conectada, é um
componente crítico nas redes neurais, especialmente ao final de redes neurais
convolucionais (CNNs). Em uma camada densa, cada neurônio está conectado a
todos os neurônios na camada anterior, formando uma rede densamente

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
entrelaçada de conexões (Keras, 2024f).

Esta estrutura permite que a camada densa tenha um papel holístico,


considerando todas as características extraídas e processadas pelas camadas
anteriores para realizar tarefas finais, como classificação ou regressão.

Após as operações de convolução, pooling e achatamento, os dados são


transformados em um vetor de características que carregam informações
abstratas e essenciais sobre a entrada original. A camada densa recebe esse
vetor e utiliza todas essas informações para realizar inferências complexas. Cada
neurônio na camada densa tem a capacidade de considerar todas as
características ao mesmo tempo, ponderando-as com base em seus pesos
aprendidos para fazer previsões ou classificações (Marchiori, 2023).

As camadas densas são particularmente poderosas porque podem aprender

e o código CRC UZDIGMX2.


padrões não lineares complexos. Com a ajuda de funções de ativação não
lineares, como ReLU ou Sigmoid, elas são capazes de combinar características de
maneiras não lineares, capturando interações complexas entre as características
que não são imediatamente evidentes nas representações originais. Isso é
crucial para tarefas como reconhecimento de imagem, em que as categorias
muitas vezes dependem de combinações sutis e complexas de características
(Marchiori, 2023).

À medida que a informação flui através de múltiplas camadas densas, a rede


pode formar conceitos cada vez mais abstratos e sofisticados, construindo uma

492
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

hierarquia de aprendizado do simples ao complexo. Isso é especialmente útil em


redes profundas, em que cada camada densa subsequente constrói sobre as
representações abstratas formadas pela anterior, permitindo que a rede capture
a essência dos dados de maneira eficiente e eficaz.

No entanto, apesar de sua eficácia, as camadas densas também vêm com

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
certas considerações. Devido ao grande número de conexões, elas podem ser
propensas a overfitting, especialmente em conjuntos de dados menores.
Técnicas como Dropout e regularização L2 são frequentemente usadas para
mitigar esse risco, promovendo a generalização do modelo.

Além disso, as camadas densas aumentam significativamente o número de


parâmetros na rede, o que pode aumentar a demanda computacional e de
memória durante o treinamento.

Por fim, ao entender e aplicar efetivamente as camadas densas, os


praticantes podem construir modelos que não apenas capturam a riqueza e a
complexidade dos dados, mas também fazem previsões e classificações precisas,
abrindo caminho para avanços em uma variedade de aplicações de Aprendizado
de Máquina e Inteligência Artificial.

e o código CRC UZDIGMX2.

5.3.3.1.7. Funções de ativação


As funções de ativação são elementos cruciais nas redes neurais, exercendo
uma função vital ao introduzir não-linearidades essenciais, que permitem ao
modelo capturar e representar complexidades intrínsecas dos dados.

Sem essas funções, uma rede neural, independentemente de sua


profundidade, seria equivalente a um único perceptron linear, limitando
drasticamente sua capacidade de aprender padrões complexos e sutilezas nos

493
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

dados. Ao aplicar funções de ativação, cada neurônio tem a capacidade de


decidir se deve ou não ser ativado, contribuindo para a decisão ou previsão final.

As funções de ativação mais comuns incluem a ReLU (Rectified Linear Unit),


Sigmoid e Tanh, cada uma com suas características e casos de uso específicos. A
ReLU, por exemplo, é particularmente popular em camadas ocultas de redes

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
profundas devido à sua eficiência computacional e à capacidade de mitigar o
problema do gradiente de desaparecimento, permitindo que a rede aprenda
mais rapidamente e alcance um desempenho melhor.

A função Sigmoid, por outro lado, é frequentemente usada na camada de


saída para problemas de classificação binária, pois fornece uma saída
probabilística entre 0 e 1 (Marchiori, 2023).

A escolha da função de ativação depende da natureza específica do


problema e da arquitetura da rede. Algumas funções podem funcionar melhor
em certos tipos de redes ou para certos tipos de dados. Por exemplo, em redes
convolucionais profundas, a ReLU e suas variantes, como Leaky ReLU e
Parametric ReLU, são comumente utilizadas por suas propriedades favoráveis no
treinamento de redes profundas. Por outro lado, para tarefas como a
classificação de múltiplas classes, a função Softmax é frequentemente aplicada
na última camada para interpretar a saída da rede como probabilidades de
e o código CRC UZDIGMX2.
classe (Marchiori, 2023).

Além de sua função primária de introduzir não-linearidade, as funções de


ativação também influenciam a velocidade e a estabilidade do treinamento. Uma
escolha inadequada pode levar a problemas como a saturação do gradiente, em
que atualizações mínimas são feitas nos pesos durante o treinamento, tornando
o processo extremamente lento ou até mesmo estagnado. Portanto, entender as
propriedades e os impactos de diferentes funções de ativação é vital para
projetar e treinar redes neurais eficientes.

494
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Em suma, as funções de ativação não são apenas um detalhe técnico, mas


uma parte integral que define o comportamento e a capacidade de uma rede
neural. Elas permitem que a rede capture complexidades e nuances nos dados,
aprendendo representações profundas e sofisticadas necessárias para realizar
tarefas variadas e complexas.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Ao escolher e implementar funções de ativação adequadas, os praticantes
podem melhorar significativamente o desempenho e a eficácia de suas redes
neurais, abrindo novas possibilidades para avanços no campo do Aprendizado
de Máquina e Inteligência Artificial.

5.3.3.1.7.1. Ativação ReLU


A função de ativação ReLU, abreviação de Rectified Linear Unit, é amplamente
adotada em redes neurais profundas devido à sua simplicidade e eficácia. Essa
função realiza uma operação muito simples: transforma todos os valores
negativos em zero e mantém os valores positivos inalterados. Matematicamente,
é expressa como f(x) = max(0,x), em que x é o input para o neurônio (Keras,
2024g). Esta simplicidade traz várias vantagens cruciais para o processo de
aprendizado em redes neurais.
e o código CRC UZDIGMX2.

Primeiramente, a ReLU ajuda a acelerar a convergência do treinamento da


rede neural. Ao comparar com funções de ativação tradicionais como a Sigmoid
ou Tanh, a ReLU permite que os gradientes fluam pela rede sem serem
significativamente reduzidos em magnitudes, um problema conhecido como
gradiente de desaparecimento, que é especialmente prevalente em redes
profundas. Isso significa que as redes podem aprender mais rápido e alcançar
melhores desempenhos em menos tempo (Marchiori, 2023).

495
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Além disso, a natureza não saturante da ReLU a torna menos propensa a


problemas de gradiente desaparecendo durante o treinamento. Em redes
profundas, muitas camadas de ativação podem levar a gradientes
extremamente pequenos, o que efetivamente impede a rede de aprender.

Como a ReLU tem uma derivada constante de 1 para entradas positivas, ela

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
não sofre tanto com esse problema, permitindo que informações e gradientes
passem pela rede de forma mais eficiente.

Outra vantagem da ReLU é sua computação eficiente. Como ela envolve


operações simples de comparação e atribuição, é mais rápida para calcular do
que outras funções de ativação mais complexas. Isso se traduz em treinamentos
mais rápidos e menos recursos computacionais, tornando-a ideal para redes
grandes e profundas.

No entanto, a ReLU não está livre de desvantagens. Uma questão conhecida


é o problema dos "neurônios mortos". Durante o treinamento, alguns neurônios
podem acabar se ajustando de tal maneira que só recebem entradas negativas,
e, portanto, só produzem saídas zero (Marchiori, 2023).

Uma vez que isso acontece, esses neurônios deixam de contribuir para o
ajuste da rede, pois sua derivada é zero para entradas negativas. Variantes da

e o código CRC UZDIGMX2.


ReLU, como Leaky ReLU ou Parametric ReLU, foram propostas para mitigar esse
problema, permitindo uma pequena, positiva derivada quando a entrada é
negativa (Keras, 2024g).

Resumidamente, a ReLU revolucionou o treinamento de redes neurais


profundas com sua simplicidade e eficácia. Ao compreender suas vantagens e
limitações, os praticantes podem empregar essa função de ativação para
construir redes mais rápidas e eficientes, capazes de aprender padrões
complexos e realizar tarefas variadas com maior precisão e eficiência.

496
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.3.3.1.7.2. Ativação Softmax


A função de ativação Softmax desempenha um papel vital nas redes neurais,
especialmente em tarefas de classificação multiclasse. Funcionando na camada
de saída de um classificador, a Softmax recebe como entrada os logits, que são as
pontuações brutas produzidas pela rede e os transforma em probabilidades

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
normalizadas, interpretados como níveis de confiança da rede (Marchiori, 2023).

Esta função de ativação, utiliza modelos matemáticos que, neste sentido, a


ideia é converter um vetor de valores reais em um vetor de valores que somam
1, como uma distribuição de probabilidade. Isso é feito exponenciando cada logit
e depois dividindo cada um pela soma de todos os logits exponenciados (Keras,
2024h).

Isso significa que cada saída da Softmax representa a probabilidade da


entrada pertencer a uma determinada classe, com todas as probabilidades
somando 1. Essa característica a torna particularmente útil para problemas de
classificação em que você está tentando determinar a probabilidade de
múltiplas classes possíveis.

A função Softmax é especialmente adequada para situações em que as

e o código CRC UZDIGMX2.


classes são mútuas, ou seja, cada entrada deve pertencer a apenas uma classe.
Ao fornecer uma distribuição clara e normalizada de probabilidades, facilita a
interpretação dos resultados da rede. O valor mais alto na saída da Softmax
indica a classe que a rede considera mais provável para a entrada dada.

Além de fornecer uma saída clara e interpretável, a Softmax também é


compatível com a função de perda de entropia cruzada, uma das funções de
perda mais comuns para problemas de classificação. A combinação de Softmax e
entropia cruzada permite que a rede seja treinada de maneira eficaz, ajustando
os pesos para minimizar diretamente a diferença entre as probabilidades previs-

497
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

tas e as reais.

Todavia, é importante notar que, embora a Softmax seja poderosa, ela


assume que as classes são exclusivas e não leva em conta as dependências entre
elas. Em situações em que as classes podem se sobrepor ou ser hierárquicas,
outras funções ou estruturas podem ser mais apropriadas.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
No fim das contas, a função de ativação Softmax é um componente decisivo
em muitas redes neurais de classificação, transformando os logits em
probabilidades compreensíveis e interpretáveis.

Ao entender e aplicar a Softmax eficientemente, os praticantes podem


construir modelos de classificação precisos e confiáveis, capazes de fornecer
insights claros e decisões baseadas em probabilidades bem fundamentadas.

e o código CRC UZDIGMX2.

498
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.3.3.2. Atividade de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração das IDEs. Para a segunda atividade recomenda-se o uso
do Google Colab.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades não são provas e não


haverá correção formal por parte dos instrutores; o objetivo é a
autoaprendizagem e prática. As respostas e dicas de desenvolvimento
para cada atividade estão disponíveis em arquivos específicos no
Google Sala de Aula, na aba Etapa Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos


seguintes símbolos:
e o código CRC UZDIGMX2.

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

499
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 64 ●●●

Implemente um algoritmo, em Python, de Aprendizado de Máquina para


reconhecer e classificar imagens nas categorias: cães e gatos. O algoritmo
deverá utilizar redes neurais convolucionais para o reconhecimento das
imagens. Utilize o conjunto de imagens disponibilizados no Google Sala de Aula.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Siga os passos a seguir:

1. Faça o download da pasta contendo as imagens, de cães e gatos, que


serão a base para o treinamento e teste do modelo. Salve a pasta
caes-e-gatos.zip, mesmo compactada, no seu Google Drive.
2. Construa um modelo de rede neural convolucional usando uma
biblioteca como o TensorFlow/Keras, para incorporar as camadas da rede
neural.

1. network.add(Conv2D(32, (3,3), input_shape = (64,64,3),


activation='relu'))
2. network.add(MaxPooling2D(pool_size=(2,2)))
3. network.add(Conv2D(32, (3,3), activation='relu'))

e o código CRC UZDIGMX2.


4. network.add(MaxPooling2D(pool_size=(2,2)))
5. network.add(Flatten())
6. network.add(Dense(units = 3137, activation='relu'))
7. network.add(Dense(units = 3137, activation='relu'))
8. network.add(Dense(units = 2, activation='softmax'))

3. Treine o modelo com a base de dados.


4. Avalie a resposta da rede neural por meio do levantamento das
predições do modelo.

500
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

3. Salve o modelo treinado com o pesos encontrados.


4. Por fim, indique o caminho de diferentes imagens de cães e gatos para
realizar a classificação.

OBSERVAÇÃO:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
É importante indicar corretamente o caminho para a imagem escolhida,
assim como o formato em que a imagem se encontra, por exemplo, JPG, JPEG,
PNG etc. Siga o modelo que está descrito no documento da atividade:

imagem = cv2.imread('/content/caes-e-gatos/teste/gato/cat.3500.jpg')

Para uma melhor identificação do caminho, localize a imagem na pasta,


clique com o botão direito do mouse sobre ela e um novo clique em “Copiar
caminho”. Em seguida cole o caminho no espaço indicado, tomando os devidos
cuidados com as barras e aspas (Figura 252).

e o código CRC UZDIGMX2.

Figura 252: Identificação de como copiar o caminho das imagens.


Fonte: os Autores.

501
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Neste momento, retorne ao Google Sala de Aula e, na aba


"Atividades", procure a seção intitulada "Etapa Conceitualizar".

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Nessa área você encontrará uma série de links com materiais
que foram criteriosamente escolhidos e disponibilizados. Trata-se de
recursos que têm por objetivo apresentar informações adicionais e
insights, permitindo que você amplie e enriqueça o seu
conhecimento acerca dos temas discutidos neste capítulo.

Este momento final do capítulo deve lhe proporcionar reflexões


críticas a respeito do conteúdo abordado, ajudando na
compreensão e fixação do conteúdo.

e o código CRC UZDIGMX2.

502
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.4. Consolidar
5.4.1. Estudo de Caso
Você se lembra do Dr. Orlando, o renomado pneumologista que enfrentou

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
um aumento significativo em sua carga de trabalho durante a pandemia e
quadros de gripe, com uma demanda crescente por análise de radiografias
pulmonares?

Este estudo de caso ilustra como, ao compreender as dificuldades


enfrentadas pelo médico e aplicar tecnologias avançadas, é possível desenvolver
uma solução baseada em Inteligência Artificial e Aprendizado de Máquina para o
reconhecimento de padrões em radiografias de raios-x.

Inicialmente, releia com atenção o cenário do estudo de caso da


"Etapa Inspirar"e as suas anotações e conclusões iniciais. Na
sequência, você deverá promover o aprimoramento da solução
e o código CRC UZDIGMX2.
anteriormente apresentada usando os conhecimentos que obteve
ao longo do capítulo e do conteúdo adicional.

Lembre-se de que este aprimoramento não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos que foram estudados
e a testar novos cenários e hipóteses, validando os seus resultados
práticos.

503
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.4.2. Infraestrutura para o estudo de caso


Para a implementação da infraestrutura necessária para realizar o
processamento das imagens médicas, e para que se consiga realizar o
reconhecimento e comparação das imagens, será utilizado uma infraestrutura
web de código aberto dentro do sistema operacional Windows. Vamos precisar

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
contar além de um navegador, o Python, o Jupyter Notebook e também com a
ferramenta Tkinter que será apresentada a seguir.

5.4.2.1. Tkinter
Tkinter é uma biblioteca da linguagem Python que acompanha a instalação
padrão e permite desenvolver interfaces gráficas. Isso significa que qualquer
computador que tenha o interpretador Python instalado é capaz de criar
interfaces gráficas usando o Tkinter, com exceção de algumas distribuições
Linux, exigindo que seja feito o download do módulo separadamente.

As GUIs, do inglês Graphic User Interface que significa interfaces gráficas do


usuário, são bastante populares no uso de softwares em geral e os
e o código CRC UZDIGMX2.
programadores devem estar aptos a trabalhar com a criação de interfaces, já
que torna o uso mais fácil além de aumentar a produtividade (DevMedia, 2016).

Uma GUI aborda muitos conceitos, dos quais o elemento fundamental de


uma GUI Tkinter é a janela. Janelas são os contêineres nos quais todos os outros
elementos da GUI residem. Esses outros elementos da GUI, como caixas de
texto, rótulos e botões, são conhecidos como widgets. Os widgets estão dentro
das janelas. Desta forma, os mais comuns são (DevMedia, 2016):

504
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Container: é uma analogia a um container físico e tem como objetivo


organizar e guardar objetos. Da mesma forma, este conceito serve para um
container em interface. Nesse caso, os objetos que estamos armazenando
são os widgets;
● Widget: é um componente qualquer na tela, que pode ser um botão, um
ícone, uma caixa de texto, etc.;

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
● Event handler: são tratadores de eventos, isto é, ao clicarmos em um botão
para executar uma ação, uma rotina é executada;
● Event loop: o event loop verifica constantemente se outro evento foi
acionado. Caso a hipótese seja verdadeira, ele irá executar a rotina
correspondente.

Uma suposição nada mais é do que uma afirmação que será


confirmada com os dados analisados.

e o código CRC UZDIGMX2.

5.4.3. Solução final do Estudo de Caso


Inicialmente deve estar claro qual nosso objetivo quando analisamos as
imagens de raio-x que o Dr. Orlando nos passou. Será preciso buscar relações
entre elas! Tente encontrar alguma informação que possa ser relevante para
distinguir as imagens.

Essa motivação inicial é importante para determinarmos como irá direcionar


os esforços.

505
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Primeiro, será necessário realizar alguns passos para iniciar o estudo de


caso. Comece a organizar a infraestrutura pelo banco de imagens de raio-x que
o Dr. Orlando disponibilizou, que está disponível na aba “Atividades”, no Google
Sala de Aula.

Faça o download do arquivo raio-x-torax.zip, descompacte-o e salve em um

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
diretório de fácil acesso (por exemplo, na pasta Documentos), pois precisará
direcionar o caminho para esta pasta que contém a seguinte estrutura:

● raio-x-torax.zip
○ teste (contém 100 imagens variadas de raio-x de tórax, numeradas de 1
a 100 e sem qualquer identificação);
○ treino (contém 200 imagens já previamente indicadas pelo Dr. Orlando
como normal ou pneumonia, numeradas de 0 a 99).

Com a base de imagens preparada, abra o Jupyter Notebook e execute os


seguintes passos:

● Selecione a pasta em que irá criar o projeto, por exemplo, na pasta


Documentos, próxima à pasta das imagens de raio-x de tórax;
● No canto superior direito da tela do Jupyter Notebook, clique em “New” e, em
seguida, na opção “Python 3 (ipykernel)”. Uma nova aba será aberta e será o

e o código CRC UZDIGMX2.


ambiente em que trabalharemos em nossa codificação.

Agora, será preciso começar a criar o código. Como o Jupyter Notebook


permite executar trechos individuais do código (a cada célula criada), de forma a
codificar e testar cada trecho, é possível executar por meio do comando “Run” ou
pelas teclas de atalho “Ctrl + Enter”.

No Google Sala de Aula, na aba “Atividades”, na seção “Etapa Consolidar”, há


uma sugestão de solução para o estudo de caso e, a cada célula, trechos de
código podem ser executados. Atente-se às seguintes orientações para
conseguir executar o algoritmo, conforme a numeração dos itens que constam

506
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

no arquivo Jupyter Notebook:

3. Preparando o conjunto de dados para o modelo de treinamento

filenames=os.listdir('C:\\Users\\MarceloViana\\Documents\\
Projetos_Jupyter\\raio-x-torax\\treino')

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
# Após realizar o download e descompactar a pasta
raio-x-torax.zip, localize o caminho correto do local da
pasta. Você precisará acessar a pasta treino. Note que a
cada pasta, é necessário o uso de barras duplas
invertidas.

ATENÇÃO: note na etapa 3 do código que o caminho deve estar corretamente


indicado para a pasta contendo as imagens que foram descompactadas do
arquivo raio-x-torax.zip e indicando para a pasta treino.

Para que obtenha o caminho, localize a pasta “treino” no interior da pasta


“raio-x-torax”. Clique com o botão direito do mouse sobre a pasta e, em seguida,
“Propriedades”. Copie o campo “Local” (Figura 253) e a cada caminho de pasta
acrescente barras duplas e contrárias ( \\ ).

e o código CRC UZDIGMX2.

Figura 253: Identificação de como copiar o caminho das imagens.


Fonte: os Autores.

507
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8. Gerando os dados de treinamento e validação

train_generator =
train_datagen.flow_from_dataframe(train_df,
"C:\\Users\\MarceloViana\\Documents\\Projetos_Jupyte
r\\raio-x-torax\\treino",
# note que o caminho para a pasta treino deverá

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
novamente ser apontado. Atente-se para não apagar as
aspas e barras duplas.
x_col='filename',
y_col='category',
target_size=Image_Size,
class_mode='categorical',
batch_size=batch_size)

validation_datagen = ImageDataGenerator(rescale=1./255)
validation_generator =
validation_datagen.flow_from_dataframe(
validate_df,
"C:\\Users\\Marcelo
Viana\\Documents\\Projetos_Jupyter\\raio-x-torax\\trein

e o código CRC UZDIGMX2.


o",
# note que o caminho para a pasta treino deverá
novamente ser apontado. Atente-se para não apagar as
aspas e barras duplas.
x_col='filename',
y_col='category',
target_size=Image_Size,
class_mode='categorical',
batch_size=batch_size
)

508
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

ATENÇÃO: note que na etapa 8 do código também deverá estar corretamente


indicado o caminho para a pasta treino. Atente-se para que não sejam
suprimidas as aspas, vírgula e que o caminho seja indicado com as barras duplas
e contrárias.

11. Preparando os dados de teste

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
test_filenames = os.listdir("C:\\Users\\Marcelo
Viana\\Documents\\Projetos_Jupyter\\raio-x-torax\\teste")
# note que o caminho para a pasta TESTE deverá novamente
ser apontado. Atente-se para não apagar as aspas e barras
duplas.

test_df = pd.DataFrame({
'filename': test_filenames
})

ATENÇÃO: note que na etapa 11 do código também deverá estar corretamente


indicado o caminho agora para a pasta teste. Atente-se para que não sejam
suprimidas as aspas, parênteses e que o caminho seja indicado com as barras

e o código CRC UZDIGMX2.


duplas e contrárias.

12. Testando os dados de treinamento

test_generator =
train_datagen.flow_from_dataframe(test_df,
'C:\\Users\\MarceloViana\\Documents\\Projetos_Jupyter\\rai
o-x-torax\\teste',
# note que o caminho agora é para a pasta TESTE. Atente-se
para não apagar as aspas e barras duplas.

509
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

ATENÇÃO: note na etapa 12 do código que deverá estar corretamente indicado o


caminho para a pasta teste. Atente-se para que não sejam suprimidas as aspas,
vírgula e que o caminho seja indicado com as barras duplas e contrárias.

15. Visualizando os resultados da predição

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
sample_test = test_df.head(18)
sample_test.head()
plt.figure(figsize=(12, 24))
for index, row in sample_test.iterrows():
filename = row['filename']
category = row['category']
img =
load_img("C:\\Users\\MarceloViana\\Documents\\Projetos
_Jupyter\\raio-x-torax\\teste\\"+filename,
target_size=Image_Size)
# note que o caminho para a pasta TESTE deverá
novamente ser apontado. Atente-se para não apagar as
aspas e barras duplas.
plt.subplot(6, 3, index+1)
plt.imshow(img)

e o código CRC UZDIGMX2.


plt.xlabel(filename + '(' + "{}".format(category)
+ ')' )
plt.tight_layout()
plt.show()

ATENÇÃO: note na etapa 15 do código que o caminho deverá estar


corretamente indicado para a pasta teste. Atente-se para que não sejam
suprimidas as aspas e que o caminho seja indicado com as barras duplas e
contrárias, inclusive ao final.

510
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

16. Testando o desempenho do modelo em dados personalizados

im=Image.open("C:\\Users\\MarceloViana\\Documents\\Projet
os_Jupyter\\raio-x-torax\\teste\\1.jpg")
# note que o caminho para a pasta TESTE deverá novamente
ser apontado. Atente-se para não apagar as aspas e barras

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
duplas.
# escolha uma imagem para testar se é um raio x normal ou
com pneumonia

ATENÇÃO: note que na etapa 16 do código deverá estar corretamente indicado o


caminho para a pasta teste. Atente-se para que não sejam suprimidas as aspas,
que o caminho seja indicado com as barras duplas e contrárias e seja indicada a
imagem que será testada pelo modelo.

A cada imagem selecionada (imagem 1 a 100 .jpeg) por meio do caminho


indicado, o Aprendizado de Máquina retornará com a indicação do diagnóstico:
normal ou pneumonia, mostrará a imagem que foi selecionada (convertida em
RGB) e, entre colchetes, o valor da predição [normal pneumonia].

Sendo assim, a cada imagem indicada para o aprendizado, ele retornará com e o código CRC UZDIGMX2.

o respectivo diagnóstico aprendido por meio da realização do treinamento. Este


será, portanto, um modelo válido para auxiliar o Dr. Orlando em seu diagnóstico
de raio-x de tórax.

511
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

No entanto, para refinar a forma de entrada das imagens de raio-x para o Dr.
Orlando, proponha uma GUI mais fácil e intuitiva para ele! Gere uma codificação
que, realizada no próprio Jupyter Notebook, abrirá uma janela de “Classificador
GUI para imagens médicas”.

Nela, será possível selecionar a imagem de interesse, clicar para classificá-la

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e, na própria tela, o resultado será apresentado. As imagens a seguir mostram o
resultado de duas análises para diagnóstico indicado como normal (imagem
15.jpeg; Figura 254) e pneumonia (imagem 20.jpeg; Figura 255). Observe abaixo
que o aprendizado está demonstrando ~93% para um possível diagnóstico
normal para o raio-x de tórax.

e o código CRC UZDIGMX2.

Figura 254: Classificador para raio-x de tórax, indicação normal de 92%.


Fonte: os Autores.

Na próxima análise, observe que o Aprendizado de Máquina está


demonstrando ~94% para um possível diagnóstico de pneumonia para o raio-x
de tórax. Sendo assim, a cada imagem indicada para o aprendizado, ele retorna-

512
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

rá com o respectivo diagnóstico aprendido por meio da realização do


treinamento. Este é, portanto, um modelo válido para auxiliar o Dr. Orlando em
seu diagnóstico de raio-x de tórax.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 255: Classificador para raio-x de tórax, indicação pneumonia de 93%.
Fonte: o Autor.

e o código CRC UZDIGMX2.

Arquive o refinamento do estudo de caso no formulário disponível


no Google Sala de Aula, na aba “Etapa Consolidar”.

513
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

5.5. Avaliar
Para concluir este capítulo, você deverá realizar a “Etapa Avaliar”, que
consiste no preenchimento do Questionário de Avaliação disponível no Google
Sala de Aula e que tem como objetivo permitir que você acompanhe

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
individualmente a evolução do seu aprendizado.

Não será atribuída nota para a atividade, mas a sua entrega é obrigatória,
pois, acima de tudo, servirá como insumo para uma análise pessoal e também
para a realização de autocrítica a respeito dos pontos compreendidos e daqueles
que exigem maior dedicação.

O formulário salvará as respostas de forma automática e, por isso, pode ser


iniciado em um momento e finalizado posteriormente. Ele também será
disponibilizado a você, para que faça consultas futuras. Além dos materiais
didáticos fornecidos, você poderá usar quaisquer outros recursos e referências.
Todavia, atente para o fato de que poderá respondê-lo somente uma vez.

O registro e envio das respostas é individual e deve ser realizado dentro do


prazo estipulado para a realização do curso.

e o código CRC UZDIGMX2.

514
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Referências
BEUTELl, J., KUNDEL, H.L., VAN METTER, R.L. Handbook of Medical Imaging.
Bellingham, Washington Spie Press, 2000.

CAUDURO, A. Deep Learning: o motor dos negócios na era da Inteligência


Artificial. 2018. Disponível em: https://medium.com/huia/intelig%C3%AAncia-

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
artificial-uma-corrida-desleal-80bfa53075ed Acesso em: 18 janeiro 2024.

CUNHA, S.P.P. Análise de imagens médicas com recurso a metodologias de


Deep Learning. Dissertação de mestrado (Engenharia Eletrônica e Informática) -
Universidade Lusíada. Vila Nova de Famalicão, p. 136, 2021.

DEVMEDIA. Tkinter: Interfaces gráficas em Python. Disponível em:


https://www.devmedia.com.br/tkinter-interfaces-graficas-em-python/33956.
Acesso em: 20 janeiro 2024.

DSA, Data Science Academy. Deep Learning Book, Capítulo 10 – As 10


Principais Arquiteturas de Redes Neurais. 2021. Disponível em:
https://www.deeplearningbook.com.br/as-10-principais-arquiteturas-de-redes-n
eurais/ Acesso em: 15 janeiro 2024.

DSA, Data Science Academy. 25 Aplicações Comerciais de Visão


Computacional. Disponível em: https://blog.dsacademy.com.br/25-aplicacoes-
comerciais-de-visaocomputacional. Acesso em: 18 janeiro 2024.

FACURE, M. Resolvendo CAPTCHAs com redes neurais convolucionais: dando


e o código CRC UZDIGMX2.
olhos às máquinas. Disponível em: https://matheusfacure.github.io/2017/
03/12/cnn-captcha/. Acesso em: Acesso em: 18 janeiro 2024.

IOFFE, S., SZEGEDY, C. Batch Normalization: Accelerating Deep Network Training


by Reducing Internal Covariate Shift. ICML'15: Proceedings of the 32nd
International Conference on International Conference on Machine
Learning, 37: 448-456, 2015.

KERAS. BatchNormalization layer. 2024b. Disponível em: https://keras.io/api/


layers/normalization_layers/batch_normalization/. Acesso em: 19 janeiro 2024.

KERAS. Conv2D layer. 2024a. Disponível em: https://keras.io/api/layers/


convolution_layers/convolution2d/. Acesso em: 19 janeiro 2024.

515
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

KERAS. Dense layer. 2024f. Disponível em: https://keras.io/api/layers/


core_layers/dense/. Acesso em: 19 janeiro 2024.

KERAS. Dropout layer. 2024d. Disponível em: https://keras.io/api/layers/


regularization_layers/dropout/. Acesso em: 19 janeiro 2024.

KERAS. Flatten layer. 2024e. Disponível em: https://keras.io/api/layers/


reshaping_layers/flatten/. Acesso em: 19 janeiro 2024.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
KERAS. MaxPooling2D layer. 2024c. Disponível em: https://keras.io/api/layers/
pooling_layers/max_pooling2d/. Acesso em: 19 janeiro 2024.

KERAS. ReLU layer. 2024g. Disponível em: https://keras.io/api/layers/


pooling_layers/max_pooling2d/. Acesso em: 19 janeiro 2024.

KERAS. Softmax layer. 2024h. Disponível em: https://keras.io/api/layers/


activation_layers/softmax/. Acesso em: 19 janeiro 2024.

KRUPINSKI, E.A. The importance of perception research in medical imaging,


Radiat. Med., v. 18, n. 6, p. 329-334, 2000.

MARCHIORI. C.E.A. Aplicação de uma Rede Neural de Convolução para


Posicionamento de Seccionadora em Linha de Produção. Trabalho de
Conclusão de Curso (Graduação em Engenharia de Controle e Automação.
Universidade Federal de Santa Catarina, Blumenau, p.68, 2023.

SAS. Machine Learning: o que é e qual a sua importância? 2022. Disponível


em: https://www.sas.com/pt_br/insights/analytics/machine-learning.html.
Acesso em: 20 janeiro 2024.
e o código CRC UZDIGMX2.
TENSORFLOW. Modelos e Camadas. 2022. Disponível em:
https://www.tensorflow.org/js/guide/models_and_layers?hl=pt-br. Acesso em: 19
janeiro 2024.

TUM, J., MIDDLETON, A. Radiography of cultural material. Routledge, 2006.

VARELLA, D. Pneumonia. Biblioteca Virtual em Saúde, Ministério da Saúde. 2011.


Disponível em: https://bvsms.saude.gov.br/pneumonia-5/. Acesso em: 20 janeiro
2024.

516
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Capítulo 6:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Visão Computacional
aplicada ao
reconhecimento de
emoções

e o código CRC UZDIGMX2.

Autores
Júlio César Leitão Júnior

Marcelo de Almeida Viana


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

6.1. Introdução
Boas vindas ao capítulo Visão Computacional aplicada ao
reconhecimento de emoções, que foi projetado para levar você ao campo da
Visão Computacional com um foco específico no reconhecimento de emoções

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
em imagens.

Este tema mostra a evolução da interação sobre como as máquinas lidam


com as imagens e é brevemente abordada para contextualização das técnicas
de Inteligência Artificial ou tomada de decisão, que permitem a identificação,
classificação e reconhecimento de emoções em imagens.

Este conteúdo abordará os conceitos básicos do reconhecimento de


emoções, progredindo para suas aplicações práticas no reconhecimento e
interpretação de emoções humanas por meio de imagens. Será explicado como
fornecer ao computador informações precisas usando imagens ou vídeos para
realizar tarefas inteligentes que simulam a inteligência humana.

O material inicia-se com uma "introdução ao reconhecimento de emoções",


em que será explorado os conceitos básicos e a relevância para entender as
emoções humanas por meio do reconhecimento em imagens. Esta seção
estabelece uma base sólida para compreender como as expressões faciais são e o código CRC UZDIGMX2.

processadas e interpretadas por sistemas de Visão Computacional.

Em seguida, será discutido a "importância e desafios dos dados no


reconhecimento de emoções". Será enfatizado a necessidade de dados de alta
qualidade e diversificados para treinar modelos precisos, além dos desafios
associados à coleta e ao processamento desses dados, considerando aspectos
como variações culturais, contextuais e individuais nas expressões emocionais.

Na seção, "como o Aprendizado de Máquina reconhece emoções em ima-

518
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

gens", detalha os mecanismos pelos quais as técnicas de Aprendizado de


Máquina e redes neurais são aplicadas para analisar características faciais e
classificar emoções. Serão explorados os métodos de detecção de
características, a extração de padrões relevantes e o processo de classificação
emocional.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Ao final deste capítulo, você terá não apenas compreendido os conceitos
fundamentais da Visão Computacional aplicada ao reconhecimento de
emoções, mas também terá adquirido habilidades práticas para enfrentar os
desafios no campo da IA.

e o código CRC UZDIGMX2.

519
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

6.2. Inspirar
Você já refletiu sobre o efeito da Visão Computacional no reconhecimento
de emoções e como essa inovação está revolucionando a forma como
interagimos com a tecnologia na atualidade? Imagine o potencial dessa

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
aplicação na compreensão humana e na melhoria da interação entre pessoas e
máquinas, abrindo caminho para avanços significativos em várias áreas?
Vejamos alguns exemplos.

No campo da automação residencial, essa tecnologia está abrindo portas


para casas inteligentes mais sensíveis e adaptativas. Sistemas domésticos
podem ajustar iluminação, música e temperatura com base no estado emocional
dos moradores, criando um ambiente mais confortável e acolhedor.

No marketing, a Visão Computacional pode ser utilizada para analisar as


reações emocionais dos consumidores a produtos, serviços e campanhas
publicitárias. Isso possibilita uma compreensão mais aprofundada das
preferências e comportamentos do público-alvo, permitindo que as empresas
ajustem suas estratégias para atender melhor às necessidades e expectativas
dos clientes.

No ambiente corporativo, essa tecnologia pode ser utilizada para avaliar a e o código CRC UZDIGMX2.

eficácia de programas de treinamento, analisando as reações emocionais dos


funcionários durante as sessões. Também pode ajudar em entrevistas de
emprego, fornecendo insights sobre as reações emocionais dos candidatos,
complementando a avaliação do entrevistador.

Cada um desses exemplos demonstra o vasto potencial da Visão


Computacional no reconhecimento de emoções, abrindo novas possibilidades e
melhorando a eficácia em várias áreas.

520
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Você verificará como a Visão Computacional no reconhecimento de emoções


não é apenas uma façanha técnica, mas uma ferramenta que melhora a
interação humana em vários campos. Veremos como essa tecnologia é
integrada em diferentes cenários, transformando a maneira como vivemos,
trabalhamos e nos relacionamos, em um mundo cada vez mais conectado pela
tecnologia.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Antes de iniciarmos a "Etapa de Conceitualização" na qual
haverá a apresentação do conteúdo e a experimentação dos
conceitos trabalhados por meio de atividades práticas, entre no
Google Sala de Aula, na aba "Etapa Inspirar", para acessar todos
os materiais disponibilizados, que visam a estimular sua reflexão e
iniciar a ambientação com o conteúdo deste capítulo.

Como última atividade desta etapa, prepare-se para trabalhar a


solução inicial do estudo de caso que será apresentado na
próxima seção.

A solução inicial que você elaborará não será objeto de


e o código CRC UZDIGMX2.
correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos apresentados e a
entender como trabalhá-los de maneira prática.

521
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

6.2.1. Estudo de Caso - Reconhecimento de


emoções em um curso na área de
Tecnologia da Informação e Comunicação
(TIC)

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Com o objetivo de demonstrar como a análise detalhada das necessidades
educacionais e a integração de tecnologias avançadas de Inteligência Artificial
podem resultar na criação de um sistema eficiente e inovador de
reconhecimento de emoções, especialmente adaptado ao ambiente do curso.

A implementação desse sistema tem o potencial de transformar este estudo,


oferecendo à Facti dados valiosos sobre a reação dos alunos aos métodos de
ensino e ao conteúdo dos cursos. Essas informações permitem ajustes e
melhorias contínuas no currículo e na didática, alinhando-os ainda mais com as
necessidades e expectativas dos estudantes.

Leia com atenção o cenário do estudo de caso e lembre-se: o e o código CRC UZDIGMX2.

propósito desta atividade é promover uma reflexão inicial acerca do


assunto a ser discutido no cenário tendo por base somente os
conhecimentos de que você dispõe neste momento.

6.2.1.1. Cenário
Uma das demandas de projeto da Facti, como uma Instituição Científica e

522
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Tecnológica (ICT) Privada, é fornecer cursos de capacitação em TIC, de modo a


dar oportunidade aos alunos aprenderem e aprimorarem seus conhecimentos
tecnológicos em temas relevantes para o mercado de trabalho atual.

O ambiente de aprendizagem na Facti é caracterizado por uma abordagem


prática e interativa, com salas equipadas com tecnologia de ponta e um corpo

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
docente composto por especialistas no campo da tecnologia.

Reconhecendo a Inteligência Artificial como uma das áreas mais promissoras


e influentes em TIC, a Facti decidiu integrar os princípios da Visão
Computacional em seus métodos de ensino. Esta decisão reflete não apenas o
compromisso da instituição com o ensino de tecnologias avançadas, mas
também sua determinação em aprimorar continuamente a qualidade e
relevância de seus cursos.

Neste ponto, a Facti optou em inovar ao avaliar o grau de satisfação de seus


alunos e colaboradores, por meio do reconhecimento de emoções em diferentes
momentos ao longo das aulas ministradas.

e o código CRC UZDIGMX2.

Figura 256: Sistema para reconhecer emoções humanas baseado em IA.


Fonte: Freepik.

523
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Assim, a Facti precisa de uma proposta de um algoritmo de Aprendizado de


Máquina que consiga identificar e interpretar as emoções humanas com base
em informações visuais (imagens ou vídeos), para que seja possível reconhecer e
compreender como está a aceitação de seus cursos, a fim de melhorar o
andamento das aulas para as próximas turmas.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
6.2.1.2. Decisões tecnológicas
O objetivo será construir um algoritmo de reconhecimento de emoções para
a Facti e, para isto, vamos precisar tomar algumas decisões de negócio.

1. Qual linguagem de programação utilizar?


2. Como será o desenvolvimento do algoritmo, qual ambiente de
programação será utilizado?
3. Quais as bibliotecas de programação disponíveis para realizar o
reconhecimento de emoções?

e o código CRC UZDIGMX2.

Importante: coloque a sua resposta na atividade


"Apresentação da solução inicial", no Google Sala de Aula, em
um documento no formato de texto. Utilize este momento para
trabalhar as suas ideias iniciais com o máximo de detalhamento que
puder. Mais adiante, as suas anotações serão retomadas para o
refinamento da solução do estudo de caso.

524
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

6.3. Conceitualizar
6.3.1. Introdução ao reconhecimento de
emoções

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
São frequentes as situações em que as pessoas necessitam assegurar sua
autenticidade, como na realização de transações bancárias, identificação em
empresas, aeroportos e a biometria é um dos métodos empregados como meio
de identificação mais utilizados. Existem diversas características biológicas que
podem ser utilizadas em um processo de identificação, dentre as principais
tem-se: impressão digital, retina, íris, geometria da mão, face, voz e assinatura
(Carlos Jr, 2011).

O reconhecimento facial possui algumas vantagens sobre as demais


tecnologias biométricas, pois é natural, não-intrusivo e de fácil utilização,
envolvendo métodos como processamento de imagem, reconhecimento de
padrões, Visão Computacional e redes neurais (Li e Jain, 2005).

O reconhecimento facial vem recebendo uma atenção significativa,


principalmente durante os últimos anos e pode-se citar ao menos dois motivos

e o código CRC UZDIGMX2.


para isto: o primeiro é o grande número e variedades de aplicações possíveis,
sejam elas comerciais, militares ou de segurança pública e o segundo é a
disponibilidade de tecnologias viáveis após décadas de pesquisa (Zhao et al.,
2003).

Os seres humanos possuem uma grande capacidade de reconhecer rostos,


conseguindo identificar cada detalhe e facilmente associar o rosto com uma
pessoa, mesmo em condições desfavoráveis com o uso de acessórios, a
iluminação do local, envelhecimento, barba, expressões faciais, maquiagem,
entre outros (Carneiro, 2012).

525
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Porém, a maneira como as máquinas interpretam e processam as


informações para esse reconhecimento não é trivial, sendo assim é necessário
criar tarefas complexas, com abordagens algorítmicas e automatizadas, para
implementá-las em máquinas.

Assim, os sistemas de reconhecimento facial podem ser modelados de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
forma que seja possível, dada uma imagem de rosto humano, retornar uma lista
ordenada de imagens com os rostos mais similares dentro de uma base de
dados. Em geral, essas tarefas são realizadas utilizando algoritmos e abordagens
de extração de características e métricas de distância que comparam pares de
imagens (Fujikawa, 2016).

Por meio do reconhecimento facial é possível compreender as expressões


humanas, como sorrisos, franzir de testa, levantar de sobrancelhas, abrir e
fechar de olhos, que podem ser interpretados como expressões emocionais
geradas no rosto da pessoa.

As emoções possuem papel fundamental na socialização humana e as


expressões faciais são uma importante via para sua comunicação (Reeve, 2006).
Segundo Izard (2009), as emoções são “processos afetivos gerados por processos
cerebrais antigos [filogeneticamente]” e suas principais características são:

e o código CRC UZDIGMX2.


● possuírem sinais universais distintos;
● existirem também em outros primatas;
● duração limitada, com surgimento rápido e inesperado;
● experiência subjetiva característica;
● além de servir a propósitos motivacionais próprios e exclusivos.

Algumas expressões são denominadas emoções universais, por serem


reconhecidas em pessoas de diferentes partes do mundo que, mesmo na
ausência de palavras e independente das diferenças culturais, elas são univer-

526
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

salmente reconhecidas (Scardua e Marques, 2018). Na Figura 257, pode-se


observar as emoções de alegria, tristeza, raiva, medo, nojo (repulsa) e surpresa
(espanto).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 257: Expressões emocionais universais.
Fonte: Body Language Brazil.

e o código CRC UZDIGMX2.

Conforme observado, as expressões faciais são originadas de um conjunto


de traços e movimento de músculos, coordenados pelo sistema nervoso. Elas
são uma forma importante de comunicação não verbal, influenciadas por uma
combinação de fatores biológicos, culturais e sociais (Scardua e Marques, 2018).

Algumas características podem ser observadas em cada uma das


expressões:

● Alegria: o sorriso de alegria é formado pelo movimento do músculo zigomá-

527
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

tico, levantando as bochechas, separando dos lábios inferior e superior


(podendo gerar aparição das gengivas) e enrugamento das pálpebras;

● Tristeza: ocorre do abaixamento dos cantos internos das sobrancelhas,


fazendo com que elas se unam, o olhar se torna rebaixado, com as
pálpebras decaídas, cantos da boca ligeiramente para baixo e a face se torna

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
neutra, caracterizada pela inexistência de movimentos faciais;
● Raiva: o corpo naturalmente se projeta para frente, as sobrancelhas são
franzidas para o centro, com olhar concentrado e lábios cerrados;
● Medo: o corpo é lançado levemente para trás, como forma de defesa e
esquiva, sobrancelhas se levantam, pestanas superiores se levantam e
inferiores tensionadas e lábios ligeiramente esticados em direção às orelhas;
● Nojo: o nojo é geralmente relacionado a algo revoltante, com sensação de
vômito, apresentando o nariz franzido e lábio superior levantado;
● Surpresa: o corpo tende a ficar atento para entender o que está
acontecendo para absorver a informação, as sobrancelhas se levantam, os
olhos e boca se abrem. Esta expressão de surpresa geralmente é seguida de
outra expressão.

e o código CRC UZDIGMX2.


Além das emoções universais, existem as emoções sociais que dependem
muitas vezes de cada cultura e circunstâncias, como, por exemplo, culpa,
vergonha, arrogância e admiração.

De acordo com Picard (1997), a computação afetiva é o campo da


computação relacionado às emoções, resultando em uma interseção entre
homem-computador e desenvolvendo a capacidade de inferir as emoções
humanas.

Ao combinar o reconhecimento facial com o reconhecimento de emoções, os


sistemas de IA e as redes neurais convolucionais podem utilizar algoritmos de

528
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Aprendizado de Máquina, com base em um treinamento prévio e utilizando de


conjuntos de dados rotulados, para detectar e interpretar emoções de forma
mais precisa, contextualizada e associando a cada um dos estados emocionais.

Desta forma, para realizar o reconhecimento de emoções em imagens, são


utilizadas técnicas de Visão Computacional e Aprendizado de Máquina, com

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
algoritmos de IA sendo treinados com conjuntos de dados que contêm imagens
previamente rotuladas com as emoções conhecidas.

Essas imagens podem ser coletadas de diversas fontes, como bancos de


imagens públicos ou criados especificamente para o propósito de estudo, sendo
atribuídos rótulos emocionais às imagens (Libralon, 2014). Uma vez treinados, os
sistemas de reconhecimento de emoções em imagens podem ser aplicados em
diversas áreas.

Por exemplo, eles podem ser utilizados em pesquisas de mercado para


avaliar a resposta emocional dos consumidores a produtos ou campanhas
publicitárias, aplicados em análise de conteúdo em mídias sociais para
identificar as emoções transmitidas pelas postagens e entender a percepção do
público em relação a determinados assuntos. No entanto, é importante ressaltar
que o reconhecimento de emoções em imagens ainda é um desafio em aberto.

e o código CRC UZDIGMX2.


As emoções humanas são complexas e subjetivas e a interpretação correta
das expressões emocionais pode ser influenciada por vários fatores, como
contexto cultural, individualidade e variações nas expressões faciais. Portanto, é
necessário um contínuo aprimoramento dos algoritmos e um treinamento com
conjuntos de dados diversificados e representativos para obter resultados mais
precisos e confiáveis (Libralon, 2014).

Em resumo, o reconhecimento de emoções, por meio da IA, traz benefícios e


possibilidades interessantes, mas é necessário abordar esses cuidados e
considerações éticas. A implementação responsável desses sistemas garante o

529
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

respeito aos direitos e privacidade das pessoas, além de evitar a perpetuação de


vieses e discriminações. A colaboração entre especialistas em IA, ética,
psicologia e outras áreas relevantes é fundamental para avançar nesse campo
de forma responsável e benéfica.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Dada a abordagem ao tema, reflita:

Quais são as implicações éticas do uso de tecnologia de


reconhecimento de emoções, especialmente em termos de privacidade e
consentimento?

Como garantir que esses sistemas não sejam usados para vigilância
invasiva ou para fins discriminatórios?

Como essa tecnologia de reconhecimento de emoções pode ser


utilizada de forma benéfica em sua rotina diária, respeitando as barreiras
éticas e de privacidade?

e o código CRC UZDIGMX2.

530
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

6.3.2. Importância e desafios dos dados no


reconhecimento de emoções
No mundo dinâmico do reconhecimento de emoções, os dados emergem
como alicerce fundamental, impulsionando a capacidade das máquinas de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
interpretar e reagir às nuances humanas. Esta jornada, embora repleta de
promessas, navega por um mar de desafios complexos e considerações éticas
significativas.

A qualidade e a quantidade dos dados são cruciais. Um modelo robusto de


reconhecimento de emoções depende da diversidade e do volume de dados,
abrangendo expressões faciais, vocais, textuais e fisiológicas (Costa-Vieira e
Souza, 2014). Esta riqueza de informações permite que as máquinas
compreendam uma ampla gama de expressões emocionais, tornando-as mais
precisas e confiáveis .

Contudo, a representatividade desses dados é igualmente vital. Sistemas


justos e imparciais só podem ser construídos se os dados refletem a diversidade
cultural e individual local ou global, evitando assim vieses que poderiam levar a
conclusões errôneas ou discriminatórias.

e o código CRC UZDIGMX2.


A anotação de dados traz seu próprio conjunto de desafios, principalmente
devido à natureza subjetiva e multifacetada das emoções. Rotular corretamente
esses dados é um passo essencial no treinamento de modelos que podem
interpretar emoções de forma precisa e sensível. No entanto, a coleta desses
dados delicados levanta questões profundas de privacidade e consentimento.

É imperativo que os dados emocionais sejam coletados de maneira ética,


garantindo a transparência e o consentimento claro dos indivíduos. Além disso,
capturar dados em ambientes naturais e não controlados adiciona uma camada
de complexidade, tanto técnica quanto ética.
531
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A qualidade dos dados é apenas uma parte da equação e a interpretação


correta também é crucial. As emoções são intrinsecamente complexas e
frequentemente contextuais. Um sorriso em um contexto pode significar
felicidade, enquanto em outro pode ser uma máscara para o desconforto.
Portanto, entender o contexto e as nuances das expressões emocionais é
fundamental para evitar mal-entendidos e interpretações errôneas (Costa-Vieira

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e Souza, 2014).

Superar esses desafios requer uma abordagem multifacetada. Técnicas


avançadas de aquisição de dados, como Aprendizado Semi-Supervisionado e
não Supervisionado, podem explorar grandes conjuntos de dados não
rotulados, enquanto ferramentas de anotação aprimoradas podem facilitar a
rotulagem precisa.

A ética e a privacidade devem ser centrais, com regulamentações rigorosas e


uma transparência inabalável sobre o uso dos dados. Além disso, a pesquisa
interdisciplinar é fundamental. A colaboração entre campos como Inteligência
Artificial, Psicologia, ética e Direito pode levar a sistemas mais empáticos, justos
e eficazes.

Em resumo, enquanto navegamos por este território emocionante e


desafiador, deve-se fazer isso com um profundo senso de responsabilidade e
e o código CRC UZDIGMX2.
cuidado. Entender a importância e os desafios dos dados no reconhecimento de
emoções não é apenas uma questão técnica, mas também é uma questão
profundamente ética e social.

À medida em que se avança, o objetivo não deve ser apenas desenvolver


sistemas que reconheçam emoções, mas fazê-lo de uma maneira que respeite a
dignidade humana e enriqueça a compreensão e a empatia em nossa sociedade.

532
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

6.3.3. Como o Aprendizado de Máquina


reconhece emoções em imagens
O Aprendizado de Máquina na interpretação das emoções humanas, a partir
de imagens, é uma fascinante confluência de tecnologia, psicologia e arte.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Iniciando com uma vasta coleção de imagens faciais, cada uma
meticulosamente anotada com a emoção correspondente e específicas. Essa
tecnologia não apenas aprende a ler expressões humanas, mas também a
entender a complexidade e a nuance por trás delas.

O pré-processamento dessas imagens é um passo vital, transformando cada


imagem em um formato padronizado, para garantir a consistência e a qualidade
dos dados, o que pode incluir o redimensionamento das imagens, a conversão
para escala de cinza e a normalização da iluminação, eliminando variáveis não
essenciais que poderiam distorcer os resultados.

Após o pré-processamento, o próximo passo e ponto mais importante desse


processo reside na extração e análise de características faciais. . Nesta etapa, são
identificados pontos-chave faciais, como cada curva, cada linha, cada sombra do
rosto humano, assim como a posição dos olhos, a forma da boca e as

e o código CRC UZDIGMX2.


sobrancelhas são traduzidas em dados que máquinas que podem ser extraídas
característica que levam a entender e interpretar as emoções.

Como visto nos capítulos anteriores, técnicas como análise de componentes


principais (PCA) e as redes neurais convolucionais, são comumente usadas para
extrair essas características de forma eficiente e particularmente adeptas de
capturar a essência dessas características, permitindo que o sistema identifique
padrões complexos associados a emoções específicas.

Com as características extraídas, os modelos de classificação, treinados em


vastos conjuntos de dados, são capazes de associar esses padrões específicos de

533
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

características faciais a emoções rotuladas. Esses modelos, no entanto, não são


estáticos, eles são continuamente refinados e aprimorados, tornando-se cada
vez mais precisos e adaptáveis.

Finalmente, o modelo treinado é testado com um conjunto de dados não


utilizado durante o treinamento. A precisão do modelo é avaliada para

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
determinar sua eficácia em reconhecer emoções em novas imagens. Ajustes e
otimizações são realizados conforme necessário para melhorar a performance
do modelo. A validação cruzada atua como uma espécie de prova de fogo,
garantindo que o modelo possa aplicar com sucesso o que aprendeu a novos
dados, mantendo sua eficácia e precisão.

Embora a tecnologia tenha avançado muito, ainda enfrenta desafios


significativos. A diversidade de expressões humanas, influenciada por fatores
culturais, individuais e contextuais, adiciona camadas de complexidade ao
reconhecimento de emoções. Além disso, questões como variações de
iluminação, pose e obstruções parciais ou totais podem afetar a precisão do
sistema.

Além dos desafios técnicos, o campo do reconhecimento de emoções por


Aprendizado de Máquina também levanta questões éticas e de privacidade
profundas. À medida que essa tecnologia se torna mais integrada em nosso dia
e o código CRC UZDIGMX2.
a dia, é vital considerar as implicações do seu uso, especialmente em contextos
em que a análise de expressões faciais pode ocorrer sem o conhecimento ou
consentimento explícito do indivíduo.

Em resumo, o reconhecimento de emoções por meio do Aprendizado de


Máquina é uma área de estudo intrigante e em constante evolução, que
representa não apenas um avanço tecnológico, mas também um desafio ético e
uma oportunidade para uma compreensão mais profunda da natureza humana.

534
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

À medida que se avança, a responsabilidade recai sobre desenvolvedores,


pesquisadores e a sociedade em geral para guiar essa tecnologia em direções
que respeitem a dignidade humana e promovam o bem-estar.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Dado o que foi explicitado, pense sobre quais tipos de dados e
características são mais eficazes para treinar modelos de Aprendizado
de Máquina em reconhecimento de emoções? E, quais são os
principais desafios e limitações na precisão desses sistemas?

e o código CRC UZDIGMX2.

535
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

6.3.4. Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração das IDEs. Para as atividade propostas recomenda-se o uso
do Google Colab.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades não são provas e não


haverá correção formal por parte dos instrutores; o objetivo é a
autoaprendizagem e prática. As respostas e dicas de desenvolvimento
para cada atividade estão disponíveis em arquivos específicos no
Google Sala de Aula, na aba Etapa Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos

e o código CRC UZDIGMX2.


seguintes símbolos:

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

536
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 65 ●●

Implemente um algoritmo, em Python, de Aprendizado de Máquina para


construir um modelo de detector de emoções em uma face única. O algoritmo
deverá utilizar um modelo pré treinado para classificar as emoções em imagens
simples. Utilize o conjunto de arquivos disponibilizados no Google Sala de Aula.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Siga os passos a seguir:

1. Faça o download da pasta Material_complementar_reconhecimento_


emocoes.zip, contendo os arquivos e salve-a, mesmo compactada, na
pasta raiz do seu Google Drive.
2. Inicie um novo projeto no Google Colab.
3. Traga as funções do modelo de rede neural convolucional usado pela
biblioteca do TensorFlow/Keras.
4. Conecte o seu Google Drive ao projeto.
5. Selecione, das imagens disponibilizadas na pasta testes, a que fará a
classificação da emoção.
6. Utilize os modelos pré treinados para detecção de face e reconhecimento
das emoções, disponibilizados na pasta.
7. Realize a detecção da face e extração da região de interesse.
8. Levante as previsões do classificador para as classes das emoções.
e o código CRC UZDIGMX2.
9. Avalie a resposta do algoritmo por meio do levantamento das predições
do modelo.
10. Apresente o resultado do reconhecimento da emoção na face detectada.

537
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 66 ●●

Implemente um algoritmo, em Python, de Aprendizado de Máquina para


construir um modelo de detector de emoções em múltiplas faces. O algoritmo
deverá utilizar um modelo pré treinado para classificar as emoções em imagens
compostas por diversas pessoas. Utilize o conjunto de arquivos disponibilizados

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
no Google Sala de Aula.

Siga os passos a seguir:

1. Faça o download da pasta Material_complementar_reconhecimento_


emocoes.zip, contendo os arquivos e salve-a, mesmo compactada, na
pasta raiz do seu Google Drive.
2. Inicie um novo projeto no Google Colab.
3. Traga as funções do modelo de rede neural convolucional usado pela
biblioteca do TensorFlow/Keras.
4. Conecte o seu Google Drive ao projeto.
5. Selecione, das imagens disponibilizadas na pasta testes, a que fará a
classificação da emoção.
6. Utilize os modelos pré treinados para detecção de face e reconhecimento
das emoções, disponibilizados na pasta.
7. Realize a detecção das faces e extração da região de interesse.
e o código CRC UZDIGMX2.
8. Levante as previsões do classificador para as classes das emoções.
9. Avalie a resposta do algoritmo por meio do levantamento das predições
do modelo.
10. Apresente o resultado da detecção e reconhecimento das emoções em
múltiplas faces.

538
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 67 ●●

Implemente um algoritmo, em Python, de Aprendizado de Máquina para


construir um modelo de detector de emoções em uma imagem capturada pela
webcam. O algoritmo deverá utilizar um modelo pré treinado para classificar as
emoções em imagen capturada pelo vídeo da webcam. Utilize o conjunto de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
arquivos disponibilizados no Google Sala de Aula.

Siga os passos a seguir:

1. Faça o download da pasta Material_complementar_reconhecimento_


emocoes.zip, contendo os arquivos e salve-a, mesmo compactada, na
pasta raiz do seu Google Drive.
2. Inicie um novo projeto no Google Colab.
3. Traga as funções do modelo de rede neural convolucional usado pela
biblioteca do TensorFlow/Keras.
4. Conecte o seu Google Drive ao projeto.
5. Estabeleça visualização de vídeo pela webcam, realize uma expressão
facial e faça a captura da imagem.
6. Utilize os modelos pré treinados para detecção de face e reconhecimento
das emoções, disponibilizados na pasta.
7. Realize a detecção da(s) face(s) e extração da região de interesse.
e o código CRC UZDIGMX2.
8. Levante as previsões do classificador para as classes das emoções.
9. Avalie a resposta do algoritmo por meio do levantamento das predições
do modelo.
10. Apresente o resultado da detecção e reconhecimento da(s) emoção(ões)
na imagem capturada pela webcam.

539
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Neste momento, retorne ao Google Sala de Aula e, na aba


"Atividades", procure a seção intitulada "Etapa Conceitualizar".

Nessa área você encontrará uma série de links com materiais

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
que foram criteriosamente escolhidos e disponibilizados. Trata-se de
recursos que têm por objetivo apresentar informações adicionais e
insights, permitindo que você amplie e enriqueça o seu
conhecimento acerca dos temas discutidos neste capítulo.

Este momento final do capítulo deve lhe proporcionar reflexões


críticas a respeito do conteúdo abordado, ajudando na
compreensão e fixação do conteúdo.

e o código CRC UZDIGMX2.

540
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

6.4. Consolidar
6.4.1. Estudo de Caso
Você se lembra que a Facti decidiu integrar os princípios da Visão

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Computacional em seus métodos de ensino para aprimorar continuamente a
qualidade e relevância de seus cursos?

Este estudo de caso é direcionado a desenvolver um algoritmo de


Aprendizado de Máquina para identificar e interpretar emoções humanas com
base em informações visuais, com o objetivo de avaliar a satisfação dos alunos, a
fim de melhorar o andamento das aulas para as próximas turmas.

Inicialmente, releia com atenção o cenário do estudo de caso da


"Etapa Inspirar" e as suas anotações e conclusões iniciais. Na
sequência, você deverá promover o aprimoramento da solução

e o código CRC UZDIGMX2.


anteriormente apresentada usando os conhecimentos que obteve
ao longo do capítulo e do conteúdo adicional.

Lembre-se de que este aprimoramento não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos que foram estudados
e a testar novos cenários e hipóteses, validando os seus resultados
práticos.

541
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

6.4.2. Proposta de implementação


Será preciso criar um MVP, Minimum Viable Product, expressão em inglês para
o menor conjunto de especificações que resolvam algum problema para o
cliente.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Para este MVP, será escolhida a linguagem de programação Python,
utilizando a biblioteca TensorFlow para reconhecimento de emoções. O
ambiente de programação escolhido será o Google Colab IDE.

O objetivo será desenvolver um algoritmo para que ele tenha a melhor


solução para realizar o reconhecimento de emoções dos alunos e colaboradores,
ao longo das aulas do curso.

6.4.3. Infraestrutura para o estudo de caso


Conforme você já se familiarizou em capítulos anteriores, para este estudo
de caso, será aplicado o algoritmo Haar Cascade para detecção de rostos em
imagens, em conjunto com o TensorFlow, uma biblioteca abrangente e de

e o código CRC UZDIGMX2.


código aberto para computação numérica e Aprendizado de Máquina. Além
disso, recomenda-se utilizar o Google Colaboratory para desenvolvimento do
algoritmo em Aprendizado de Máquina.

6.4.4. Solução final do Estudo de Caso


Agora que estudou as ferramentas essenciais para o desenvolvimento do
reconhecimento de emoções em imagens, chegou a hora de aplicar todo o

542
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

conteúdo de forma mais específica.

O nosso cliente, a Facti, solicitou uma solução para o reconhecimento de


emoções e você, que acabou de receber o conteúdo do curso, está apto a propor
uma solução. Primeiro será necessário realizar alguns passos para iniciar o
estudo de caso.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Comece a organizar a infraestrutura pelo banco de imagens e arquivos de
modelos pré-treinados, que está disponível na aba “Atividades” deste capítulo,
na plataforma do Google Sala de Aula.

Faça o download do arquivo Material_complementar_reconhecimento_


emocoes.zip, salve-o em um diretório de fácil acesso, pois será preciso
direcionar o caminho para esta pasta dentro do seu Google Drive, para facilitar o
acesso aos documentos que serão utilizados durante o curso. Siga os seguintes
passos para realizar o upload desta pasta em seu Google Drive:

● Acesse o seu Google Drive no link: https://drive.google.com;


● Clique em “Meu Drive” e escolha a opção “Upload de arquivo”, conforme a
Figura 258;
● Localize e selecione a pasta Material_complementar_reconhecimento_
emocoes.zip em seu computador para realizar o upload;

e o código CRC UZDIGMX2.


● Não é necessário descompactar os arquivos da pasta.

Figura 258: Upload da pasta do material complementar no Google Drive.


Fonte: adaptado de Google Drive.

543
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Agora é hora de começar a criar o código. Como o Google Colab permite


executar trechos individuais do código (inserindo-os a cada célula criada) e a
cada trecho é possível codificar e testar o código por meio do comando
“Executar” ou pelas teclas de atalho “Ctrl + Enter”.

No Google Sala de Aula, na aba “Atividades”, na seção “Etapa Consolidar”,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
há uma sugestão de solução para o estudo de caso e, a cada célula, trechos de
código podem ser executados. Atente-se às seguintes orientações para
conseguir executar o algoritmo, conforme a numeração dos itens que constam
no arquivo do Google Colab:

1. Conectando com o Drive e acessando os arquivos

# Realize o dowload da pasta Material_complementar_


reconhecimento_emocoes.zip do Google Sala de Aula e
transira-a para o seu Google Drive e localize o caminho
da pasta no menu Arquivos, no meu lateral esquerdo
path = "/content/gdrive/MyDrive/Material_complementar_
reconhecimento_emocoes.zip"
zip_object = zipfile.ZipFile(file=path, mode="r")
zip_object.extractall("./")
e o código CRC UZDIGMX2.

ATENÇÃO: ao executar este trecho, abrirá uma janela (Figura 259) para que
conecte o Google Colab ao Google Drive. Localize sua conta de e-mail e clique
em Permitir o acesso.

544
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 259: Autorização de acesso do Google Colab ao Google Drive.
Fonte: adaptado de Google Drive.

Observe e atente-se em indicar o caminho correto para a pasta compactada


do material complementar: "/content/gdrive/MyDrive/Material_comple
mentar_reconhecimento_emocoes.zip".

# Indique o caminho da pasta "fer2013.zip" para


descompactá-la. São arquivos organizados conforme cada uma
das classes de emoções.
base_imgs = '/content/fer2013.zip'
zip_object = zipfile.ZipFile(file = base_imgs, mode ='r')
zip_object.extractall('./')
zip_object.close

e o código CRC UZDIGMX2.


Observe e atente-se em indicar o caminho correto para a pasta compactada do
material complementar: '/content/fer2013.zip'.

2. Testando o modelo

# Localize o arquivo "salagooglemeet.jpg" para realizar o


reconhecimento das emoções
imagem = cv2.imread('/content/testes/salagooglemeet.jpg')
cv2_imshow(imagem)

545
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Observe e atente-se em indicar o caminho correto para a figura final de


análise do reconhecimento de emoções: '/content/testes/salagoogle
meet.jpg'.

# Utilize o arquivo haarcascade de reconhecimento facial


para detectar as faces na imagem

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
face_cascade =
cv2.CascadeClassifier('/content/haarcascade_frontalface_de
fault.xml')
faces = face_cascade.detectMultiScale(gray, 1.1, 3)

Observe e atente-se em indicar o caminho correto para o classificador


haarcascade de face: '/content/haarcascade_frontalface_default.xml'.

Arquive o refinamento do estudo de caso no formulário disponível


no Google Sala de Aula, na aba “Etapa Consolidar”.

e o código CRC UZDIGMX2.

546
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

6.5. Avaliar
Para concluir este capítulo, você deverá realizar a “Etapa Avaliar”, que
consiste no preenchimento do Questionário de Avaliação disponível no Google
Sala de Aula e que tem como objetivo permitir que você acompanhe

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
individualmente a evolução do seu aprendizado.

Não será atribuída nota para a atividade, mas a sua entrega é obrigatória,
pois, acima de tudo, servirá como insumo para uma análise pessoal e também
para a realização de autocrítica a respeito dos pontos compreendidos e daqueles
que exigem maior dedicação.

O formulário salvará as respostas de forma automática e, por isso, pode ser


iniciado em um momento e finalizado posteriormente. Ele também será
disponibilizado a você, para que faça consultas futuras. Além dos materiais
didáticos fornecidos, você poderá usar quaisquer outros recursos e referências.
Todavia, atente para o fato de que poderá respondê-lo somente uma vez.

O registro e envio das respostas é individual e deve ser realizado dentro do


prazo estipulado para a realização do curso.

e o código CRC UZDIGMX2.

547
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Referências
CARLOS Jr, L.F.M. Reconhecimento facial utilizando redes neurais. Trabalho de
conclusão de curso (Ciência da Computação) - Centro Universitário Eurípides de
Marília. Marilia, p. 52, 2011.

CARNEIRO, L.N.V. Reconhecimento de face invariante a iluminação baseado

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
em uma abordagem supervisionada. Dissertação (Mestrado em Ciência da
Computação), Universidade Federal de Ouro Preto, Ouro Preto, 2012.

COSTA-VIEIRA, H.A., SOUZA, W.C. O reconhecimento de expressões faciais e


prosódia emocional: investigação preliminar em uma amostra brasileira jovem.
Psicobiologia e Psicologia Cognitiva, 19(2), 2014.

FUJIKAWA, C.S. Reconhecimento Facial utilizando Descritores de Textura e


Aprendizado Não Supervisionado. Trabalho de conclusão de curso (Ciência da
Computação) - Universidade Estadual Paulista Júlio de Mesquita Filho. Rio Claro,
p. 41, 2016.

IZARD, C.E. Emotion Theory and Research: Highlights, Unanswered Questions


and Emerging Issues. Annu Rev Psychol. 60, 1-25, 2009.

LI, S., JAIN, A. Handbook of face recognition. Springer eBooks collection:


Computer Science, 2005.

LIBRALON, G.L. Modelagem computacional para reconhecimento de


emoções baseada na análise facial. Tese de doutorado (Instituto de
e o código CRC UZDIGMX2.
Matemáticas e Computação) - Universidade de São Paulo. São Paulo, p. 196.
2014

PICARD, R.W. Affective Computing. MIT Press, Cambridge, EUA, 1997.

REEVE, J. Motivação e emoção. Rio de Janeiro: LTC, 2006.

SCARDUA, D.A, MARQUES, K. Estudo da identificação de emoções por meio da


Inteligência Artificial. 2018. Disponível em: https://multivix.edu.br/wp-content/
uploads/2018/08/estudo-da-identificacao-de-emocoes-atraves-da-inteligencia-ar
tificial.pdf. Acesso em: 16 janeiro 2024.

ZHAO, W., CHELLAPPA, R., PHILLIPS, P.J., ROSENFELD, A. Face recognition: A


literature survey. ACM Computing Surveys, v. 35, n. 4, p. 399–458, 2003.

548
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Capítulo 7:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Visão Computacional
aplicada ao
rastreamento de
objetos

e o código CRC UZDIGMX2.

Autores
Júlio César Leitão Júnior

Marcelo de Almeida Viana


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.1. Introdução
Boas vindas ao capítulo Visão Computacional aplicada ao rastreamento
de objetos, um conteúdo projetado para introduzir você ao campo da Visão
Computacional, com um enfoque particular no rastreamento de objetos em

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
vídeos.

Este tema explora as inovações e técnicas em como as máquinas percebem


e interagem com objetos em movimento, fornecendo insights valiosos para a
compreensão e aplicação da Inteligência Artificial em tarefas de rastreamento e
reconhecimento de objetos.

O rastreamento de objetos é uma tecnologia que desempenha um papel


cada vez mais importante em nossa sociedade moderna. Trata-se de uma
técnica fundamental que permite monitorar e acompanhar a localização e o
movimento de objetos físicos ao longo do tempo. Com aplicações em uma
variedade de setores, desde segurança e logística até medicina e
entretenimento, o rastreamento de objetos revolucionou a maneira como
interagimos com o mundo ao nosso redor.

Este material inicia com "Como o Aprendizado de Máquina rastreia e


reconhece objetos em vídeos", realizando uma introdução aos fundamentos do e o código CRC UZDIGMX2.

rastreamento de objetos e como o Aprendizado de Máquina é utilizado para


identificar e acompanhar objetos em sequências de vídeo. Será abordado como
essas técnicas permitem às máquinas interpretar cenas dinâmicas,
proporcionando uma base sólida para entender os processos envolvidos.

Em seguida, serão apresentadas as "diferenças entre detecção,


reconhecimento e rastreamento de objetos", esclarecendo os conceitos e
destacando como cada um contribui para a compreensão completa de cenas e
objetos. Esta seção também explora as "aplicações do rastreamento de objetos”

550
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

destacando como essa tecnologia é usada em diversas áreas.

A seção "desafios comuns no rastreamento de objetos" discute as


dificuldades enfrentadas ao desenvolver sistemas de rastreamento eficientes e
precisos, abordando questões como variações de iluminação, oclusões e
movimentos rápidos.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
A abordagem prossegue em discutir sobre os "algoritmos de detecção e
rastreamento de objetos", em que será apresentado vários algoritmos, em que
cada um deles é analisado em termos de suas características, vantagens e
aplicações práticas.

Ao final deste capítulo, você deverá não apenas ter compreendido os


conceitos fundamentais da Visão Computacional aplicada ao rastreamento de
objetos, mas também terá adquirido habilidades práticas para enfrentar os
desafios no campo da IA.

e o código CRC UZDIGMX2.

551
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.2. Inspirar
Você já explorou as possibilidades da Visão Computacional, em especial no
rastreamento de objetos em imagens, uma ferramenta que pode ter aplicações
importantes para setores diversos, como logística e gerenciamento da cadeia de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
suprimentos, robótica, automotivo e transporte, segurança e etc?

Imagine a capacidade dessa tecnologia de detectar, acompanhar e analisar


objetos em vídeos e fotografias, transformando essas informações visuais em
dados cruciais para decisões e operações. Qual seria o papel decisivo desses
sistemas avançados no reconhecimento, monitoramento e interpretação
eficiente de objetos em uma variedade de aplicações?

Neste capítulo, será apresentado não só os aspectos técnicos, mas também


o levará a entender como esses elementos se integram para criar soluções
inovadoras e aumentar a eficiência em diferentes oportunidades. O
rastreamento de objetos está modernizando indústrias, melhorando a gestão de
estoques e logística, aprimorando a segurança e até transformando a
experiência de compras no varejo. Ele fornece insights detalhados que otimizam
operações e impulsionam inovações tecnológicas.

e o código CRC UZDIGMX2.


Por exemplo, na logística e gerenciamento da cadeia de suprimentos ela é
aplicada para rastreamento e gerenciamento de inventário, otimização de
armazéns e melhoria na eficiência de sistemas de entrega.

Na robótica, a navegação, manipulação de objetos e interação com


ambientes complexos. Já na área automotiva e transporte, é empregada no
desenvolvimento de veículos autônomos, sistemas de assistência ao motorista,
monitoramento de tráfego e gestão de estacionamentos.

Fica claro que a tecnologia de rastreamento de objetos possui inúmeras


utilizações práticas que podem melhorar significativamente as operações em

552
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

vários contextos.

Apresentaremos maneiras de aplicar os conhecimentos adquiridos de forma


prática, incorporando tecnologias de rastreamento de objetos em situações
específicas e direcionadas. O objetivo é orientar e fomentar o desenvolvimento
de eficiência em um mundo cada vez mais tecnológico.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Antes de iniciarmos a "Etapa de Conceitualização" na qual
haverá a apresentação do conteúdo e a experimentação dos
conceitos trabalhados por meio de atividades práticas, entre no
Google Sala de Aula, na aba "Etapa Inspirar", para acessar todos
os materiais disponibilizados, que visam a estimular sua reflexão e
iniciar a ambientação com o conteúdo deste capítulo.

Como última atividade desta etapa, prepare-se para trabalhar a


solução inicial do estudo de caso que será apresentado na
próxima seção.

A solução inicial que você elaborará não será objeto de

e o código CRC UZDIGMX2.


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos apresentados e a
entender como trabalhá-los de maneira prática.

553
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.2.1. Estudo de Caso - Atendimento a um


projeto de uma Instituição Científica e
Tecnológica (ICT) Privada

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O foco deste estudo de caso é ilustrar a capacidade de uma ICT privada, a
Facti, em responder às demandas específicas de desenvolvimento de projetos na
área de Tecnologia da Informação e Comunicação (TIC), particularmente no que
tange à segurança corporativa por meio de soluções tecnológicas avançadas.

Este estudo combina como a aplicação de tecnologias de Aprendizado de


Máquina em sistemas de vigilância pode revolucionar a segurança corporativa,
oferecendo monitoramento preciso e automatizado para prevenir incidentes
como roubos, invasões e vandalismo.

Leia com atenção o cenário do estudo de caso e lembre-se: o


propósito desta atividade é promover uma reflexão inicial acerca do
e o código CRC UZDIGMX2.
assunto a ser discutido no cenário tendo por base somente os
conhecimentos de que você dispõe neste momento.

7.2.1.1. Cenário
Uma ICT privada, assim como em outros negócios, recebe demandas de
desenvolvimento de projetos provenientes de empresas parceiras, interessadas

554
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

nas atividades de Tecnologia da Informação e Comunicação (TIC), e


denomina-se que são privadas porque não têm participação governamental, ou
seja, os recursos obtidos para desenvolver seus projetos são basicamente da
iniciativa privada. Desta forma, a Facti, como uma ICT privada, realiza projetos
particulares e projetos com recursos da Lei de Informática com seus parceiros.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Um de seus clientes, não divulgado por questões contratuais, procurou a
empresa buscando uma solução para automatizar seu monitoramento de
acesso corporativo, de forma a aumentar a segurança da empresa que vem
passando por incidentes como roubos, invasões e vandalismo, e deseja
implementar um sistema de rastreamento de objetos para monitorar e melhorar
a segurança ao redor da empresa, trazendo, também, melhor segurança a seus
funcionários.

e o código CRC UZDIGMX2.

Figura 260: Sistema para rastreamento de objetos baseado em IA.


Fonte: Freepik.

Assim, o cliente expôs sua necessidade à Facti, que analisou a proposta e


firmou o contrato para desenvolver e viabilizar o projeto. A empresa possui o
hardware necessário (Figura 260) e gostaria de incorporar um software de
Aprendizado de Máquina, em rastreamento de objetos, que seja preciso e

555
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

acompanhe o movimento de pessoas e objetos suspeitos, em vídeos, ao redor


da empresa. Isso envolve a associação de detecções em quadros subsequentes
para criar trilhas de movimento.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
7.2.1.2. Decisões tecnológicas
O objetivo será construir um algoritmo de rastreamento de objetos para a
Facti e, para isto, será preciso tomar algumas decisões de negócio.

1. Qual linguagem de programação utilizar?


2. Como será o desenvolvimento do algoritmo, qual ambiente de
programação será utilizado?
3. Quais as bibliotecas de programação disponíveis para realizar o
rastreamento de objetos?

Importante: coloque a sua resposta na atividade

e o código CRC UZDIGMX2.


"Apresentação da solução inicial", no Google Sala de Aula, em
um documento no formato de texto. Utilize este momento para
trabalhar as suas ideias iniciais com o máximo de detalhamento que
puder. Mais adiante, as suas anotações serão retomadas para o
refinamento da solução do estudo de caso.

556
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.3. Conceitualizar
7.3.1. Diferenças entre detecção, reconheci-
mento e rastreamento de objetos

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O rastreamento de objetos se refere ao processo de monitorar e
acompanhar a localização e o movimento de objetos físicos ao longo do tempo.
Isso é feito usando uma variedade de tecnologias e métodos para coletar
informações sobre a posição e o estado desses objetos.

Uma das técnicas utilizadas é o Aprendizagem de Máquina, que por meio de


um conjunto de dados de treinamento gera ou modifica o modelo existente para
encontrar soluções, por meio de IA aplicada à ML, em que há a extração e
reconhecimento de características presentes nos objetos que permitam uma
representação robusta do mesmo.

Com o avanço das técnicas de Aprendizado de Máquina e redes neurais,


muitos sistemas de rastreamento de objetos aproveitam essas abordagens para
melhorar a precisão do rastreamento. As redes neurais convolucionais, redes

e o código CRC UZDIGMX2.


recorrentes e algoritmos de Aprendizado Profundo são usados para detectar e
rastrear objetos em imagens e vídeos, que envolve a previsão do movimento
futuro do objeto com base em seu movimento passado ou, ainda, baseados na
aparência e movimentação.

Esses modelos simplificam o processo de estabelecer uma identidade para o


objeto no quadro seguinte, permitindo, assim, a associação da detecção ao
objeto. Isso é alcançado ao atualizar o estado do objeto, que é representado por
um conjunto de variáveis que o descrevem, incluindo suas coordenadas
espaciais e sua área.

557
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Durante a fase de detecção, a similaridade entre objetos nos quadros de


vídeo é avaliada por meio de modelos de descrição de objetos. Isso simplifica a
atribuição de uma identidade ao objeto no quadro subsequente, permitindo
assim a associação da detecção ao objeto e a subsequente atualização de seu
estado (Macena, 2021).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
A Figura 261 demonstra o exemplo de rastreamento de objetos a partir do
algoritmo de detecção de objetos.

e o código CRC UZDIGMX2.


Figura 261: Exemplo de rastreamento de objetos.
Fonte: Shu et al (2012).

A fim de detectar objetos de forma consistente em múltiplos quadros e


identificá-los com precisão, é imperativo calcular uma medida de similaridade
entre esses objetos. Em situações em que ocorre uma falha na detecção, essa
medida de equivalência desempenha um papel crucial na recuperação da
identidade do objeto.

Além disso, essa métrica é indispensável para permitir que o sistema de


rastreamento associe a detecção de um objeto à sua trajetória preexistente com

558
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

sucesso (Meneses, 2019).

Assim, a fim de proporcionar a descrição e a diferenciação eficaz entre


objetos, são desenvolvidos modelos que representam um conjunto de
características específicas de cada objeto. Entre esses modelos de descrição de
objetos, incluem-se o modelo de aparência - a partir de suas características

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
visuais, que envolvem cores, formas e texturas do objeto para que, em nível de
detecção, um objeto possa ser diferenciado de outro (Macena, 2021).

Esse modelo utiliza técnicas como detecção de características,


correspondência de pontos, modelagem 3D e estimativa de movimento para
acompanhar objetos em movimento.

O modelo de movimento (ou dinâmico) e modelos que combinam várias


modalidades de características, que abrange, dentre outras questões, a
localização de objetos ao longo de um vídeo e o conhecimento a respeito da
maneira como se locomovem ao longo de uma sequência de imagens.

Isso pode incluir modelos simples de movimento linear ou modelos mais


complexos que levam em consideração acelerações, curvas e comportamentos
não lineares (Meneses, 2019). Em muitos sistemas de rastreamento, informações
de vários sensores são combinadas para obter uma estimativa mais precisa da

e o código CRC UZDIGMX2.


posição do objeto. Isso envolve a fusão de dados de sensores como GPS,
câmeras, radares, lidar e outros dispositivos de medição.

O rastreamento de objetos muitas vezes lida com a incerteza associada às


medições e previsões. Teorias probabilísticas são usadas para modelar e
quantificar essa incerteza, permitindo a tomada de decisões informadas, para
prever a posição futura de um objeto com base em medições passadas e
presentes.

Um dos algoritmos mais conhecidos é o filtro de Kalman, que é amplamente


utilizado em sistemas de rastreamento para estimar a posição e a velocidade de

559
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

um objeto, mesmo quando as medições estão sujeitas a incertezas (Meneses,


2019).

7.3.1.1. Aplicações do rastreamento de


objetos

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O rastreamento de objetos é usado em várias aplicações em diferentes
campos, incluindo logística, transporte, segurança, entretenimento, ciência e
muito mais. Alguns exemplos de aplicações de rastreamento de objetos incluem:

1. Logística e cadeia de suprimentos: empresas usam sistemas de


rastreamento para acompanhar a movimentação de mercadorias e produtos
ao longo de toda a cadeia de suprimentos, desde a fabricação até a entrega
ao cliente. Isso ajuda a otimizar processos e a garantir a entrega pontual.
2. Transporte: sistemas de rastreamento são usados em veículos, como carros,
caminhões, navios e aeronaves, para monitorar sua posição, velocidade e
condição. Isso é essencial para a navegação, segurança e logística de
transporte. Em veículos autônomos, como carros e drones, o rastreamento
de objetos é essencial para a detecção e prevenção de colisões, navegação
precisa e interação segura com o ambiente. e o código CRC UZDIGMX2.

3. Segurança e vigilância: câmeras de segurança e sistemas de vigilância


usam o rastreamento de objetos para detectar movimentos suspeitos e
acompanhar continuamente a atividade de pessoas ou veículos em áreas
protegidas.
4. Entretenimento e filmes: em jogos de realidade virtual e realidade
aumentada, o rastreamento de objetos é usado para acompanhar os
movimentos dos jogadores (mãos, cabeça ou objetos) e interagir de maneira
mais imersiva com objetos virtuais no ambiente do jogo. Em filmes, o rastre-

560
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

amento de objetos é usado para efeitos especiais, composição de cena e


animação de personagens.

5. Ciência: na pesquisa científica, o rastreamento de objetos é usado em várias


disciplinas, como biologia, física e astronomia, para estudar o movimento de
partículas, organismos e corpos celestes.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
6. Medicina: o rastreamento de objetos pode ser usado para acompanhar o
movimento de instrumentos cirúrgicos durante procedimentos
minimamente invasivos, cirurgia assistida por computador e radioterapia, ou
para rastrear o movimento de órgãos internos e tumores em exames
médicos, como a tomografia computadorizada, garantindo procedimentos
precisos e seguros.
7. Monitoramento ambiental: no monitoramento ambiental, o rastreamento
de objetos ajuda a acompanhar a migração de animais, a movimentação de
massas de gelo, a disseminação de poluentes e outros fenômenos
importantes para a compreensão e conservação do meio ambiente.
8. Varejo e marketing: no varejo, o rastreamento de objetos é usado para
análise de comportamento do consumidor, permitindo que empresas
compreendam como os clientes interagem com os produtos.

e o código CRC UZDIGMX2.

561
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.3.2. Desafios comuns no rastreamento de


objetos
As complexidades inerentes a tarefa de rastrear objetos criam um ambiente
rico para o desenvolvimento contínuo e a inovação, à medida que os

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
pesquisadores buscam superar seus desafios e melhorar a eficácia dos sistemas.

Dentro desse espectro de desafios, a oclusão emerge como um dos


obstáculos mais notórios. Nesse cenário, objetos que precisam ser rastreados
são frequentemente encobertos por outros elementos, interrompendo o
rastreamento fluido e preciso. Esse problema é especialmente prevalente em
ambientes dinâmicos, em que a interação constante entre objetos pode
rapidamente alterar a visibilidade e complicar o processo de acompanhamento.

A Figura 262 demonstra o exemplo de reconhecimento de objetos a partir do


algoritmo de detecção de objetos.

e o código CRC UZDIGMX2.

Figura 262: Exemplo de reconhecimento de objetos.


Fonte: adaptado de AWS Rekognition.

562
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

As variações de iluminação e condições ambientais podem alterar


dramaticamente a aparência dos objetos, tornando difícil para os sistemas de
rastreamento manter um acompanhamento consistente.

A luz do dia que muda, sombras em movimento e transição entre ambientes


internos e externos são apenas alguns exemplos das flutuações que podem

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
ocorrer. Sistemas eficientes devem, portanto, ser não apenas adaptativos, mas
também suficientemente robustos para lidar com essas mudanças rápidas e
frequentes.

Além disso, a própria natureza dos objetos contribui para a complexidade do


rastreamento. Objetos em movimento podem sofrer rotações, mudanças de
escala ou até deformações. Estas transformações exigem que os sistemas
reconheçam e sigam os objetos, mesmo quando sua aparência muda
significativamente. Isso demanda algoritmos avançados capazes de aprender e
adaptar-se às diversas formas e estados que um objeto pode assumir.

Outro desafio é a diversidade e a escala dos objetos a serem rastreados.


Sistemas de rastreamento devem ser capazes de identificar e acompanhar uma
ampla gama de objetos, desde grandes veículos em movimento até pequenos
itens que podem ser facilmente perdidos em um fundo complexo.

e o código CRC UZDIGMX2.


A escala desses objetos em relação à câmera também varia
consideravelmente, exigindo sistemas que possam ajustar-se rapidamente a
diferentes níveis de detalhe.

O background dinâmico e o clutter representam mais uma camada de


complexidade. Ambientes com movimentos irrelevantes e distrativos podem
confundir sistemas de rastreamento, tornando difícil diferenciar o movimento do
objeto de interesse do movimento de fundo. Isso é especialmente desafiador em
ambientes urbanos movimentados ou em cenas naturais repletas de elementos
em constante mudança.

563
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A oclusão, em particular, interage com todos esses fatores, amplificando os


desafios enfrentados pelos sistemas de rastreamento. Quando um objeto é
ocluído, ele não apenas desaparece da vista, mas também pode reaparecer em
condições de iluminação alteradas ou contra um fundo em movimento.

A principal dificuldade está muitas vezes associada às diferentes condições

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
como oclusões temporárias, mudanças de escala, objetos semelhantes no
ambiente, iluminação variável e situações (plano de fundo) em que o objeto
pode estar inserido, tornando complexo o projeto de um extrator de
características na descrição perfeita do objeto em qualquer situação (ZHAO et al.,
2019).

Resolver esse problema requer não apenas lidar com a visibilidade


interrompida, mas também entender e adaptar-se a um ambiente em constante
transformação.

Para superar esses desafios, pesquisadores e desenvolvedores estão


recorrendo a técnicas avançadas de Aprendizado de Máquina e Inteligência
Artificial. Redes neurais profundas, por exemplo, estão sendo empregadas para
aprender representações complexas de objetos e seus movimentos, permitindo
que os sistemas se adaptem a mudanças na aparência e no ambiente.

e o código CRC UZDIGMX2.


Além disso, técnicas como aprendizado semi-supervisionado e reforço estão
sendo exploradas para melhorar a capacidade dos sistemas de aprender com
menos dados e se adaptar a novas situações mais rapidamente.

Em suma, o rastreamento de objetos em vídeos é uma tarefa complexa, mas


fundamental, com uma variedade de desafios que vão desde a oclusão até a
diversidade de objetos e ambientes. Resolver esses problemas não é apenas
uma questão técnica, mas também uma oportunidade para avanços
significativos em tecnologia e compreensão científica.

À medida que as técnicas evoluem, espera-se que os sistemas de rastrea-

564
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

mento se tornem cada vez mais sofisticados, confiáveis e capazes de lidar com
as complexidades do mundo real.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Dada a abordagem ao tema, reflita:

Como você acha que as variações de iluminação, clima e condições


ambientais adversas (como neblina ou chuva) afetam a precisão do
rastreamento de objetos?

Como o rastreamento de objetos é impactado por oclusões, em


que o objeto de interesse é parcial ou totalmente bloqueado por outros
objetos na cena?

Quais estratégias poderiam ser utilizadas para lidar com o


problema de oclusões durante o rastreamento de objetos?

Como o rastreamento de objetos se integra com outros sistemas,


como reconhecimento facial, análise de comportamento ou sistemas de

e o código CRC UZDIGMX2.


segurança?

Essas perguntas podem ajudar a explorar os desafios técnicos,


práticos enfrentados no rastreamento de objetos, abrindo caminho
para uma compreensão mais aprofundada nesta área.

565
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.3.3. Como o Aprendizado de Máquina


rastreia e reconhece objetos em vídeos
O Aprendizado de Máquina está revolucionando a Visão Computacional,
principalmente na capacidade de rastrear e reconhecer objetos em movimento,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
por exemplo, dentro de vídeos. A Figura 263, demonstra um exemplo do que se
deseja alcançar, costumeiramente, com um algoritmo de detecção de objetos.

e o código CRC UZDIGMX2.

Figura 263: Exemplo de detecção de objetos.


Fonte: adaptado de AWS Rekognition.

Analisar toda a imagem com filtros de diferentes tamanhos e formatos é


muitas vezes pouco eficiente devido à complexidade computacional, enquanto
que aplicar uma quantidade pequena de filtros pode trazer resultados
imprecisos (Zhao et al., 2019).

566
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Qualquer análise de detecção de objeto deve conter pelo menos duas


classes, sendo uma delas o plano de fundo da imagem, e a outra, a classe de
interesse (Zhao et al., 2019).

Por meio da integração inteligente de dois modelos principais: o modelo de


movimento e o modelo de aparência, cada um desses modelos desempenha um

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
papel distinto, mas complementar, na interpretação de cenas dinâmicas e
complexas.

O modelo de movimento se concentra na trajetória e no dinamismo dos


objetos. Utilizando algoritmos sofisticados como o filtro de Kalman e filtros de
partículas, ele não apenas rastreia a posição e a velocidade dos objetos em
tempo real, mas também faz previsões sobre onde eles estarão nas cenas
futuras (Pegoretti, 2021).

Essa habilidade é vital em aplicações que exigem reações rápidas e precisas,


como em sistemas de vigilância ou controle de tráfego. Além disso, o modelo é
robusto o suficiente para estimar a localização de objetos mesmo quando estão
parcialmente ocultos ou em movimento irregular, mantendo o rastreamento
ativo e confiável.

Trucco e Verri (1998) afirmam que modelos baseados em características

e o código CRC UZDIGMX2.


requerem que os atributos sejam identificados e descritos, a fim de que os
dados possam ser comparados.

Desta forma, o modelo de aparência, por outro lado, se aprofunda nos


detalhes visuais dos objetos. Ele analisa características como forma, cor e
textura para criar uma representação rica e detalhada. As redes neurais
convolucionais, um tipo de Aprendizado Profundo, são frequentemente
empregadas aqui para capturar e aprender essas características complexas.

Isso permite ao sistema não apenas reconhecer e classificar diferentes tipos

567
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

de objetos, mas também prever suas localizações futuras (Figura 264),


especialmente útil para objetos que movem-se rapidamente ou aparecem e
desaparecem do campo de visão (Pegoretti, 2021).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 264: Exemplo de rastreamento de objetos.
Fonte: os Autores.

Por exemplo da imagem, pode-se notar que à frente de um corredor vai ser
gerado um retângulo na parte de cima, um retângulo na parte de baixo, e um
retângulo na parte central. A ideia do algoritmo é que ele receba um pet de

e o código CRC UZDIGMX2.


imagem. A palavra pet significa recursos da imagem, ou seja, informações mais
detalhadas sobre a imagem, o que pressupõe que o algoritmo vai receber esse
pet quando o corredor chegar no retângulo da imagem com os dados,
retornando uma pontuação entre 0 e 1 para indicar a probabilidade de que o
teste de imagem contém o objeto, neste caso, o corredor em análise.

Deste modo, entendendo que o corredor está na parte do meio, então a


probabilidade nesse quadro será maior do que a probabilidade no quadro
superior, perto da grama ou no quadro inferior da outra pista. Na imagem ele
indica que zero é o plano de fundo e o número 1, indica o quanto o objeto está

568
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

mais próximo de um determinado pet.

Juntos, esses modelos criam um sistema poderoso e multifacetado.


Enquanto o modelo de movimento fornece o contexto dinâmico, o modelo de
aparência adiciona uma camada de compreensão detalhada e nuance visual.

Isso resulta em um sistema capaz de interpretar cenas complexas e prever

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
comportamentos, essenciais para áreas como segurança pública, gestão de
tráfego, análise de comportamento em varejo e desenvolvimento de veículos
autônomos. Além disso, com o avanço contínuo da tecnologia de Aprendizado
de Máquina, esses modelos estão se tornando cada vez mais sofisticados.

Eles estão aprendendo a lidar com situações mais desafiadoras, como


iluminação variável, condições climáticas adversas e cenários superlotados.
Novas técnicas, como Aprendizado Semi-Supervisionado e Auto-Supervisionado,
estão sendo exploradas para melhorar ainda mais a eficácia e a eficiência desses
sistemas.

Uma função de similaridade é sempre utilizada para calcular a semelhança


entre dados distintos, a partir do cálculo da distância entre seus respectivos
vetores de características. Para isto, diferentes medidas de distância podem ser
aplicadas e podem necessitar de diferentes funções de similaridade que

e o código CRC UZDIGMX2.


complementam ou substituem a função de similaridade original para obter um
conjunto de dados mais ou menos compacto, ou seja, pode-se aumentar ou
reduzir a separação entre estes no espaço de distância (Torres et al., 2009).
Quanto menor a distância, maior será a semelhança entre as amostras em
questão.

Em resumo, a combinação do modelo de movimento e do modelo de


aparência em sistemas de Aprendizado de Máquina oferece uma abordagem
poderosa e dinâmica para o rastreamento e reconhecimento de objetos em
vídeos.

569
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

À medida que esses modelos evoluem, eles prometem abrir novos caminhos
para aplicações práticas, melhorando a segurança, a eficiência e a compreensão
do mundo ao nosso redor.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Dada a abordagem ao tema, reflita:

Quais são algumas das aplicações práticas do rastreamento e


reconhecimento de objetos em vídeos que você conhece?

Como essas aplicações estão transformando setores como


segurança, entretenimento, saúde e transporte?

Como o reconhecimento de objetos em vídeos está sendo


utilizado em sistemas de vigilância? Quais são os benefícios e riscos
associados?

Quais são as implicações éticas do uso de tecnologias de


reconhecimento e rastreamento de objetos em termos de privacidade e
direitos individuais?

Quais são as tendências futuras e possíveis avanços na área de e o código CRC UZDIGMX2.

reconhecimento e rastreamento de objetos em vídeos usando


Aprendizado de Máquina?

Essas perguntas podem ajudar você a aprofundar a compreensão


sobre como o Aprendizado de Máquina está sendo aplicado no campo
do rastreamento de objetos em vídeos.

570
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.3.4. Algoritmos de detecção e rastrea-


mento de objetos

7.3.4.1. Algoritmo BOOSTING

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O algoritmo BOOSTING (do inglês, Boosted Multiple Instance Learning) para
rastreamento de objetos é uma técnica de Aprendizado de Máquina que foi
projetada para rastrear objetos em sequências de vídeo em tempo real. O
BOOSTING é uma abordagem baseada em características visuais que utiliza um
classificador - Haar Cascade AdaBoost - para treinar e rastrear objetos em
movimento, em tempo de execução (online) com exemplos positivos (que
contêm o objeto de interesse) e negativos (que não contêm o objeto). O objetivo
do treinamento é aprender um modelo que possa distinguir entre o objeto e o
fundo (Brouton Lab, 2022).

O algoritmo começa a rastrear o objeto à medida que os quadros


subsequentes são processados. Para cada novo quadro, o classificador é
aplicado para avaliar a probabilidade de o objeto estar presente em várias

e o código CRC UZDIGMX2.


regiões da imagem. A região com a probabilidade mais alta é considerada como
a posição atual do objeto. O algoritmo mantém uma janela de busca em torno
da posição estimada do objeto para restringir a região em que ele procurará o
objeto nos quadros subsequentes. Isso ajuda a melhorar a eficiência do
rastreamento.

O algoritmo BOOSTING é eficaz para rastrear objetos em movimento em


condições controladas, em que a aparência do objeto não muda
significativamente e o objeto não está sujeito à oclusões frequentes. No entanto,
ele pode enfrentar desafios em cenários complexos e dinâmicos, em que o
objeto pode
571
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

mudar drasticamente de aparência ou ser parcialmente obstruído. Portanto, em


cenários mais desafiadores, algoritmos mais avançados de rastreamento de
objetos, como o rastreamento baseado em redes neurais, podem ser preferíveis
(Brouton Lab, 2022).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
7.3.4.2. Algoritmo MIL
O algoritmo MIL (Multiple Instance Learning) é uma técnica de rastreamento
de objetos que se baseia no Aprendizado Supervisionado. Ele é projetado para
rastrear objetos em sequências de vídeo, especialmente quando a localização
exata do objeto é incerta ou difícil de determinar com precisão. O MIL é usado
em uma variedade de aplicações de rastreamento, como vigilância,
rastreamento de alvos móveis e monitoramento de objetos em tempo real
(Brouton Lab, 2022).

Ao invés de considerar apenas a localização atual do objeto como um


exemplo positivo, o algoritmo procura posições ao redor da localização atual
para gerar vários potenciais exemplos positivos, em que somente uma imagem
prevista será considerada positiva. Mesmo que a localização do objeto rastreado
não seja precisa, quando amostras da vizinhança da localização são colocadas na
e o código CRC UZDIGMX2.
coleção de imagens positivas, há uma boa chance de que essa coleção de
imagens contenha pelo menos uma imagem na qual o objeto esteja bem
centralizado (Brouton Lab, 2022).

O algoritmo MIL é eficaz em situações em que a aparência do objeto


pode variar consideravelmente em cenários de rastreamento de objetos em
tempo real. No entanto, pode ser sensível a variações de iluminação, oclusões e
mudanças extremas na aparência do objeto, que podem afetar sua precisão de
rastreamento. Portanto, para cenários mais desafiadores, podem ser necessá-

572
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

rias técnicas de rastreamento mais avançadas e robustas (Brouton Lab, 2022).

7.3.4.3. Algoritmo KCF

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O algoritmo KCF (Kernelized Correlation Filters) é um método popular de
rastreamento de objetos baseado em filtros de correlação “kernelized”. Ele é
amplamente utilizado para rastrear objetos em sequências de vídeo em tempo
real devido à sua eficiência computacional e capacidade de lidar com desafios
como mudanças de escala, rotação e oclusões parciais.

O algoritmo KCF começa com a seleção manual ou automática da região de


interesse (ROI) que contém o objeto a ser rastreado no primeiro quadro do
vídeo. À medida que o vídeo progride, o modelo de filtro de correlação
kernelizada é aplicado a cada quadro, buscando a posição no quadro que
maximiza a resposta do filtro, indicando a posição mais provável do objeto.

Utiliza o fato de que as múltiplas amostras positivas usadas no rastreador


MIL têm grandes regiões sobrepostas, que levam a algumas boas propriedades
matemáticas que são exploradas por esse rastreador para tornar o

e o código CRC UZDIGMX2.


rastreamento mais rápido e preciso.

O KCF é conhecido por sua eficiência computacional, tornando-o adequado


para rastreamento em tempo real em sistemas com recursos limitados. Além
disso, sua capacidade de lidar com mudanças de escala e oclusões parciais o
torna uma escolha popular para aplicações de rastreamento de objetos em
vídeo.

No entanto, o KCF pode ser sensível a desafios como oclusões completas e


alterações extremas na aparência do objeto, que podem afetar sua precisão.

573
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Portanto, em cenários mais desafiadores, podem ser necessárias técnicas


adicionais ou a combinação com outros algoritmos de rastreamento para obter
resultados mais robustos (BROUTON LAB, 2022).

7.3.4.4. Algoritmo TLD

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O algoritmo TLD (Tracking-Learning-Detection) é uma técnica de
rastreamento de objetos que visa combinar o rastreamento de objetos, o
aprendizado e a detecção para rastrear objetos em sequências de vídeo em
tempo real. O TLD é especialmente projetado para lidar com desafios como
oclusões temporárias, variações na aparência do objeto e mudanças na escala.

O processo começa com a seleção manual ou automática da região de


interesse (ROI) que contém o objeto a ser rastreado no primeiro quadro do
vídeo. O modelo de classificador treinado é usado para realizar a detecção em
quadros subsequentes, utilizando um detector baseado em janelas deslizantes
para procurar o objeto em todo o quadro.

O detector avalia as janelas em busca de semelhança com o objeto treinado.


Assim, o processo de rastreamento é repetido para cada quadro subsequente,

e o código CRC UZDIGMX2.


ajustando a posição da região de interesse com base na estimativa anterior
(BROUTON LAB, 2022).

O TLD é conhecido por sua capacidade de rastrear objetos de forma


robusta, mesmo quando ocorrem oclusões temporárias ou quando a aparência
do objeto muda significativamente. No entanto, pode ser computacionalmente
intensivo e pode não ser tão eficiente quanto outros algoritmos de
rastreamento em tempo real. É especialmente útil em cenários de rastreamento
de objetos complexos.

574
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.3.4.5. Algoritmo MEDIANFLOW


O algoritmo MEDIANFLOW é uma técnica popular de rastreamento de
objetos que é amplamente utilizada em Visão Computacional para acompanhar
objetos em sequências de vídeo em tempo real. Esse algoritmo é conhecido por
sua simplicidade, eficiência computacional e capacidade de lidar com objetos

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
que se movem de maneira relativamente suave e previsível. Não é muito
adequado para objetos com movimentos rápidos ou que mudam sua aparência
rapidamente.

O processo começa com a seleção manual ou automática de uma região de


interesse (ROI) que contém o objeto a ser rastreado no primeiro quadro do vídeo
e rastreia nas direções para frente e para trás no tempo e mede as discrepâncias
entre essas duas trajetórias (entre os frames), permitindo detectar falhas de
rastreamento e selecionar trajetórias nas sequências de vídeo (Brouton Lab,
2022).

O MEDIANFLOW é especialmente eficaz para rastrear objetos que se movem


suavemente e têm uma aparência relativamente consistente ao longo do tempo.
Sua simplicidade o torna rápido e computacionalmente eficiente, tornando-o
adequado para aplicações de rastreamento em tempo real em sistemas com
e o código CRC UZDIGMX2.
recursos limitados.

No entanto, ele pode enfrentar desafios em cenários em que ocorrem


mudanças abruptas na aparência do objeto ou quando o objeto é
frequentemente ocluído. Portanto, em cenários mais complexos, outros
algoritmos de rastreamento podem ser preferíveis.

575
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.3.4.6. Algoritmo MOSSE


O algoritmo MOSSE (Minimum Output Sum of Squared Errors) é um
algoritmo de rastreamento de objetos que se baseia em filtros de correlação
para estimar a posição de um objeto em uma sequência de vídeo. O MOSSE é
conhecido por sua eficiência computacional e robustez em relação a mudanças

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
na aparência do objeto.

Utiliza uma correlação adaptativa para rastreamento de objetos, que produz


filtros de correlação estáveis quando inicializados usando um único quadro, o
que o torna robusto a variações de iluminação, escala, pose e deformações não
rígidas e detecta oclusões e permite ao rastreador pausar e retomar de onde
parou quando o objeto reaparece.

O MOSSE pode incorporar um modelo de predição simples para estimar a


posição do objeto em quadros subsequentes. Isso ajuda a suavizar o
rastreamento e a lidar com movimentos suaves do objeto. O processo de
rastreamento é repetido para cada quadro subsequente, ajustando a posição da
região de interesse com base na estimativa anterior (Brouton Lab, 2022).

O MOSSE é altamente eficiente em termos computacionais e pode rastrear

e o código CRC UZDIGMX2.


objetos em tempo real com facilidade. Além disso, sua robustez a mudanças na
aparência do objeto o torna uma escolha sólida em muitos cenários de
rastreamento. No entanto, o MOSSE pode não funcionar bem em situações em
que ocorrem oclusões significativas, alterações drásticas na aparência do objeto
ou quando o objeto se move de maneira imprevisível e abrupta.

Portanto, a escolha do algoritmo de rastreamento depende das


características específicas do aplicativo e do ambiente em que será utilizado
(Brouton Lab, 2022).

576
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.3.4.7. Algoritmo CSRT


O algoritmo CSRT (Discriminative Correlation Filter with Channel and Spatial
Reliability) é um método de rastreamento de objetos que combina técnicas de
filtros de correlação com informações espaciais e de canal para um
rastreamento de alta precisão. O CSRT é conhecido por ser robusto em relação a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
mudanças na aparência do objeto, deslocamentos e oclusões temporárias
(Brouton Lab, 2022).

O CSRT incorpora informações de canal - múltiplos canais de cores para


representar o objeto, permitindo ao algoritmo lidar com variações de cor - e
espaciais na resposta do filtro para melhorar a precisão do rastreamento. As
informações espaciais consideram a posição do objeto em quadros anteriores,
ajudando a prever sua posição atual.

O algoritmo CSRT verifica a posição estimada do objeto com base na


resposta máxima do filtro de correlação no quadro atual, produzindo a resposta
máxima considerada para a posição atual do objeto. O processo de
rastreamento é repetido para cada quadro subsequente, ajustando a posição da
região de interesse com base na estimativa anterior.

e o código CRC UZDIGMX2.


O FPS, sigla em inglês para "frames per second", que significa "quadros por
segundo", é uma métrica importante para avaliar o desempenho do algoritmo
em termos de velocidade de processamento. Ele indica quantos quadros o
algoritmo é capaz de processar ou rastrear em um segundo. Um FPS mais alto
geralmente significa que o rastreamento está ocorrendo em tempo real e com
eficiência computacional (BROUTON LAB, 2022).

O CSRT é altamente preciso e robusto, sendo eficaz em lidar com objetos


que sofrem alterações na aparência devido a variações de iluminação, oclusões
parciais ou deslocamentos bruscos. É especialmente útil em cenários de rastrea-

577
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

mento de objetos desafiadores. No entanto, seu custo computacional é maior do


que alguns outros algoritmos de rastreamento, o que pode afetar sua eficiência
em sistemas com recursos limitados (Brouton Lab, 2022).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
SUGESTÕES DE USO:

• Use o CSRT quando precisar de maior precisão no rastreamento e


puder tolerar um FPS mais lento;

• Use o KCF quando precisar de um FPS mais rápido, mas pode lidar
com uma precisão de rastreamento de objeto um pouco menor;

• Use MOSSE quando precisar de maior velocidade.

e o código CRC UZDIGMX2.

578
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.3.4.8. Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração das IDEs. Para as atividade propostas recomenda-se o uso
do PyCharm.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades não são provas e não


haverá correção formal por parte dos instrutores; o objetivo é a
autoaprendizagem e prática. As respostas e dicas de desenvolvimento
para cada atividade estão disponíveis em arquivos específicos no
Google Sala de Aula, na aba Etapa Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos

e o código CRC UZDIGMX2.


seguintes símbolos:

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

579
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 68 ●●

Implemente um algoritmo, em Python, de Aprendizado de Máquina para


construir um algoritmo de rastreamento de objetos únicos. O algoritmo deverá
utilizar os modelos de rastreadores da biblioteca OpenCV, conforme abordados
nas seções anteriores. Utilize o conjunto de arquivos disponibilizados no Google

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Sala de Aula.

Siga os passos a seguir para as atividades:

1. Faça o download da pasta Material_complementar_rastreamento_


objetos.zip, contendo os arquivos, compactada-a e salve em seu
computador.
2. Inicie um novo projeto no PyCharm.
3. Traga as funções cv2 da biblioteca OpenCV.
4. Especifique cada um dos rastreadores disponíveis.
5. Selecione, dos vídeos disponibilizados na pasta, o que será utilizado no
rastreamento.
6. Crie a opção de seleção do objeto de interesse para ser o alvo do
rastreamento ao longo do vídeo.

Atividade de experimentação 69 ●● e o código CRC UZDIGMX2.

Implemente um algoritmo, em Python, de Aprendizado de Máquina para


construir um algoritmo de rastreamento de múltiplos objetos. O algoritmo
deverá utilizar os modelos de rastreadores da biblioteca OpenCV, conforme
abordados nas seções anteriores. Utilize o conjunto de arquivos disponibilizados
no Google Sala de Aula. Siga os passos conforme a atividade anterior para a
resolução.

580
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 70 ●●

Implemente um algoritmo, em Python, de Aprendizado de Máquina para


construir um algoritmo de rastreamento de objetos pela webcam. O algoritmo
deverá utilizar a técnica de fluxo óptico para rastrear movimentos em tempo
real. O objetivo é implementar um rastreador que identifica e segue um ponto

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
de interesse escolhido pelo usuário em um vídeo ao vivo.

Siga os passos a seguir para as atividades:

1. Inicie um novo projeto no PyCharm.


2. Traga as funções cv2 da biblioteca OpenCV.
3. Inicialize a captura de vídeo usando a webcam.
4. Defina os parâmetros para o algoritmo de Lucas-Kanade, que será usado
para estimar o fluxo óptico.
5. Crie uma função para selecionar um ponto de interesse no frame por
meio de um clique do mouse.
6. Configure uma janela para visualização do vídeo e atribuir a função de
seleção do ponto à janela.
7. Crie uma máscara para desenhar o trajeto do ponto ao longo do vídeo.

e o código CRC UZDIGMX2.

581
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.3.4.9. Algoritmo Optical Flow Sparse


O algoritmo Optical Flow Sparse (Fluxo Óptico Esparso) é uma técnica de
rastreamento de objetos na Visão Computacional que se baseia na análise de
como os pixels se movem entre frames consecutivos de um vídeo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Ao contrário do Optical Flow Dense, que será abordado na próxima seção,
calcula o movimento de todos os pixels em um quadro, o Optical Flow Sparse
seleciona um conjunto limitado de pontos-chave ou características visuais
distintas e rastreia seu movimento ao longo do vídeo (Wulff e Black, 2015). Seu
funcionamento baseia-se na:

1. Seleção de pontos-chave: no início, um conjunto de pontos-chave ou


características é selecionado no quadro de referência. Esses pontos-chave
podem ser cantos, bordas ou outras características distintas que são
facilmente identificáveis e podem ser rastreadas de um quadro para outro.
2. Cálculo do fluxo óptico: o algoritmo calcula o deslocamento desses
pontos-chave entre o quadro de referência e o quadro subsequente. Isso é
feito analisando como as intensidades dos pixels ao redor dos pontos-chave
mudam ao longo do tempo.
3. Estimativa do movimento: com base no cálculo do fluxo óptico, o algoritmo
e o código CRC UZDIGMX2.
estima a direção e a magnitude do movimento de cada ponto-chave.
4. Atualização da posição: as posições dos pontos-chave são atualizadas com
base nas estimativas de movimento. Isso permite rastrear como esses
pontos se movem no vídeo ao longo do tempo.
5. Rastreamento do objeto: para rastrear um objeto específico, os
pontos-chave que pertencem ao objeto são identificados e rastreados ao
longo dos quadros. A posição geral do objeto pode ser estimada com base
na média ou na posição dominante desses pontos-chave.
6. Iteração: o processo é repetido para cada novo quadro, continuando a ras-

582
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

trear o movimento dos pontos-chave e, por extensão, do objeto.

O Optical Flow Sparse é eficaz para rastrear objetos quando se deseja um


acompanhamento mais específico e granular em relação ao movimento de
pontos-chave específicos. No entanto, pode ser menos robusto em cenários em
que ocorrem grandes deslocamentos, mudanças abruptas na cena ou oclusões

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
frequentes. Para cenários mais desafiadores, outros algoritmos de rastreamento
mais avançados ou a combinação de abordagens de rastreamento podem ser
preferíveis.

Conforme visualizado na Figura 265, o algoritmo de rastreamento Optical


Flow Sparse é uma técnica que rastreia o movimento de objetos em um vídeo
analisando o deslocamento de pixels específicos, conhecidos como "pontos de
interesse" ou "features", entre quadros consecutivos.

Com o algoritmo desenvolvido será possível criar o desenho do “caminho”


percorrido por cada um dos objetos - pessoas -identificados no vídeo.

e o código CRC UZDIGMX2.

Figura 265: Rastreamento utilizando o algoritmo Optical Flow Sparse.


Fonte: os Autores.

583
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.3.4.9.1. Atividade de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração das IDEs. Para as atividade propostas recomenda-se o uso
do PyCharm.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades não são provas e não


haverá correção formal por parte dos instrutores; o objetivo é a
autoaprendizagem e prática. As respostas e dicas de desenvolvimento
para cada atividade estão disponíveis em arquivos específicos no
Google Sala de Aula, na aba Etapa Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos

e o código CRC UZDIGMX2.


seguintes símbolos:

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

584
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 71 ●●●

Implemente um algoritmo, em Python, de Aprendizado de Máquina para


rastreamento de objeto, com análise do movimento em um vídeo, aplicando o
conceito de fluxo óptico esparso. O objetivo é rastrear pontos específicos de
interesse no vídeo, visualizando o trajeto de cada ponto ao longo do tempo.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Utilize o conjunto de arquivos disponibilizados no Google Sala de Aula.

Siga os passos a seguir para as atividades:

1. Inicie um novo projeto no PyCharm.


2. Carregue o vídeo pré-gravado ("videos/walking.avi") para análise.
3. Defina os parâmetros para o detector de cantos Shi-Tomasi e o algoritmo
de Lucas-Kanade para o fluxo óptico.
4. Gere cores aleatórias para representar visualmente os diferentes pontos
de interesse.
5. Leia o primeiro frame do vídeo e convertê-lo para escala de cinza.
6. Detecte pontos de interesse no frame inicial usando o detector de cantos
Shi-Tomasi.
7. Crie uma máscara com as mesmas dimensões do frame para desenhar
os trajetos dos pontos.
8. Implemente um loop para processar cada frame do vídeo.
e o código CRC UZDIGMX2.
9. Exibir o resultado do fluxo esparso denso em uma janela.

585
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.3.4.10. Algoritmo Optical Flow Dense


O algoritmo Optical Flow Dense (Fluxo Óptico Denso) é uma técnica de
rastreamento de objetos e análise de movimento em sequências. Em contraste
com o Optical Flow Sparse, que seleciona um conjunto limitado de pontos-chave
para rastrear, o Optical Flow Dense calcula o movimento de todos os pixels em um

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
quadro em relação ao quadro subsequente (Wulff e Black, 2015). Desta forma, o
seu funcionamento baseia-se:

1. Cálculo do vetor de movimento: o algoritmo analisa a diferença nas


intensidades de pixel entre os quadros consecutivos na imagem. Isso
permite calcular um vetor de movimento para cada pixel, que descreve a
direção e a magnitude do deslocamento desse pixel entre dois quadros.
2. Geração do mapa de fluxo óptico: o resultado é um mapa de fluxo óptico,
em que cada pixel no quadro subsequente é associado a um vetor que
representa seu movimento em relação ao quadro de referência. O mapa de
fluxo óptico é uma representação visual das mudanças de movimento na
cena.
3. Análise de movimento: com o mapa de fluxo óptico é possível analisar
como cada pixel se move no vídeo ao longo do tempo. Isso pode ser usado

e o código CRC UZDIGMX2.


para rastrear objetos, detectar padrões de movimento e medir a velocidade
de objetos em movimento.
4. Segmentação e rastreamento de objetos: para rastrear um objeto
específico em um vídeo é necessário segmentar a região correspondente ao
objeto no quadro de referência. Em seguida, os pixels dentro dessa região
podem ser rastreados ao longo dos quadros usando as informações do
mapa de fluxo óptico.
5. Aplicações: o Optical Flow Dense é amplamente utilizado em várias
aplicações, incluindo estabilização de vídeo, detecção de movimento em sis-

586
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

mas de vigilância, análise de movimento em esportes e monitoramento de


tráfego.

Este algoritmo é eficaz quando se deseja obter informações detalhadas


sobre o movimento de todos os pixels em um vídeo e é especialmente útil em
aplicações que requerem uma análise minuciosa de movimento. No entanto, ele

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
pode ser computacionalmente intensivo, pois envolve o processamento de
todos os pixels em cada quadro do vídeo.

Portanto, a escolha entre o Optical Flow Dense e outras técnicas de


rastreamento depende das necessidades específicas da aplicação e dos recursos
computacionais disponíveis (Wulff e Black, 2015).

Comparativo (Figura 266):

● Sparse: fornece os vetores de fluxo de alguns "recursos


interessantes" (poucos pixels representando as bordas ou os
cantos de um objeto) dentro do quadro;
● Dense: fornece os vetores de fluxo de todo o quadro (todos os

e o código CRC UZDIGMX2.


pixels). Possui maior precisão e maior custo.

Figura 266: Comparativo entre os algoritmos Optical Flow Sparse e Optical Flow Dense.
Fonte: o Autor.

587
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Neste momento, retorne ao Google Sala de Aula e, na aba


"Atividades", procure a seção intitulada "Etapa Conceitualizar".

Nessa área você encontrará uma série de links com materiais

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
que foram criteriosamente escolhidos e disponibilizados. Trata-se de
recursos que têm por objetivo apresentar informações adicionais e
insights, permitindo que você amplie e enriqueça o seu
conhecimento acerca dos temas discutidos neste capítulo.

Este momento final do capítulo deve lhe proporcionar reflexões


críticas a respeito do conteúdo abordado, ajudando na
compreensão e fixação do conteúdo.

e o código CRC UZDIGMX2.

588
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.4. Consolidar
7.4.1. Estudo de Caso
Você se lembra que a Facti recebeu uma demanda de desenvolvimento de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
projeto buscando uma solução para automatizar o monitoramento de acesso
corporativo de um cliente, de forma a aumentar a segurança da empresa que
vem passando por incidentes como roubos, invasões e vandalismo, sendo que
ela deseja implementar um sistema de rastreamento de objetos para monitorar
e melhorar a segurança ao redor da empresa, trazendo, também, melhor
segurança a seus funcionários?

Inicialmente, releia com atenção o cenário do estudo de caso da


"Etapa Inspirar" e as suas anotações e conclusões iniciais. Na
sequência, você deverá promover o aprimoramento da solução
anteriormente apresentada usando os conhecimentos que obteve
e o código CRC UZDIGMX2.
ao longo do capítulo e do conteúdo adicional.

Lembre-se de que este aprimoramento não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos que foram estudados
e a testar novos cenários e hipóteses, validando os seus resultados
práticos.

589
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.4.2. Proposta de implementação


Será preciso criar um MVP, Minimum Viable Product, expressão em inglês para
o menor conjunto de especificações que resolvam algum problema para o
cliente.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Para este MVP, será escolhida a linguagem de programação Python,
utilizando a biblioteca OpenCV para rastreamento de objetos. O ambiente de
programação escolhido será a IDE PyCharm.

O objetivo será desenvolver um algoritmo para que ele tenha a melhor


solução para realizar o rastreamento de objetos para rastrear a movimentação
de pessoas e objetos suspeitos ao redor da empresa do cliente.

7.4.3. Solução final do Estudo de Caso


Agora que foram abordadas as ferramentas essenciais para o
desenvolvimento do rastreamento de objetos, chegou a hora de aplicar todo o
conteúdo de forma mais específica.

O nosso cliente, a Facti, solicitou uma solução para o rastreamento de e o código CRC UZDIGMX2.

objetos e você, que acabou de receber o conteúdo do curso, está apto a propor
uma solução. Primeiro será necessário realizar alguns passos para iniciarmos
nosso estudo de caso.

Comece a organizar nossa infraestrutura pelo nosso banco de vídeos e


arquivos de modelos pré-treinados, que está disponível na aba “Atividades”, na
plataforma do Google Sala de Aula.

590
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Faça o download do arquivo Material_complementar_rastreamento_


objeto.zip, salve-o em um diretório de fácil acesso, pois será preciso
descompactar a pasta para um diretório conhecido, para facilitar o acesso aos
documentos que serão utilizados durante o curso.

Agora será preciso criar o código. Com o PyCharm será possível executar os

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
códigos de cada algoritmo, codificando e testando o por meio do comando
“Run”. Para criar o algoritmo será preciso iniciar um novo documento Python.

No Google Sala de Aula, na aba “Atividades”, na seção “Etapa Consolidar”,


há uma sugestão de solução para o estudo de caso desenvolvido no PyCharm,
com código comentado que pode ser executado.

Para isto, clique com o botão direito do mouse para criar o Projeto
“Rastreamento”, selecione a opção “New” e em seguida, "Python File”,
nomeando-o como “rastreamento_sparce” e dê "Enter”. Uma nova área de
programação é criada para a escrita do algoritmo de rastreamento.

Conforme visualizado na Figura 267, o algoritmo de rastreamento Optical


Flow Dense é uma técnica de Visão Computacional que estima o movimento de
todos os pixels em uma imagem ou quadro em relação a um quadro de
referência.

Com o algoritmo desenvolvido será possível demonstrar o fluxo óptico da e o código CRC UZDIGMX2.

intensidade dos pixels de cada um dos objetos - pessoas - identificados no vídeo.


Esta técnica fornece maior precisão que o rastreamento Optical Flow Sparce.

591
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 267: Rastreamento utilizando o algoritmo Optical Flow Dense.
Fonte: os Autores.

O código que deverá ser implementado para o rastreamento de movimento


usando o fluxo óptico denso de Farneback pode ser extremamente útil no

e o código CRC UZDIGMX2.


contexto do estudo de caso mencionado, em que a Facti busca desenvolver um
projeto para automatizar o monitoramento de acesso corporativo com o
objetivo de aumentar a segurança. Aqui estão algumas maneiras de como o
código pode ser adaptado e utilizado:

● Detecção de movimento não autorizado: o fluxo óptico denso pode ser


usado para detectar movimentos não usuais ou suspeitos ao redor da
empresa. Por exemplo, movimentos durante horários não habituais ou em
áreas restritas podem ser automaticamente identificados e alertados;

592
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Análise de padrões de movimento: o sistema pode analisar padrões de


movimento para identificar comportamentos suspeitos ou anômalos. Isso
pode incluir o rastreamento de trajetórias de pessoas ou veículos que
circulam pela área;
● Integração com sistemas de alerta: quando um movimento suspeito é
detectado, o sistema pode integrar-se com mecanismos de alerta, como

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
notificações automáticas para a equipe de segurança ou para sistemas de
resposta a incidentes.
● Monitoramento contínuo: o sistema pode funcionar 24 horas por dia,
oferecendo monitoramento contínuo, o que é essencial para a prevenção de
roubos, invasões e vandalismo;
● Registro e análise de vídeos: além do monitoramento em tempo real, o
sistema pode gravar vídeos para posterior análise e revisão. Isso pode ser
útil para investigações após incidentes de segurança;
● Melhoria da segurança dos funcionários: o sistema pode ser usado para
garantir a segurança dos funcionários, monitorando suas entradas e saídas e
garantindo que apenas pessoas autorizadas tenham acesso a áreas
específicas.

e o código CRC UZDIGMX2.

Arquive o refinamento do estudo de caso no formulário disponível


no Google Sala de Aula, na aba “Etapa Consolidar”.

593
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

7.5. Avaliar
Para concluir este capítulo, você deverá realizar a “Etapa Avaliar”, que
consiste no preenchimento do Questionário de Avaliação disponível no Google
Sala de Aula e que tem como objetivo permitir que você acompanhe

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
individualmente a evolução do seu aprendizado.

Não será atribuída nota para a atividade, mas a sua entrega é obrigatória,
pois, acima de tudo, servirá como insumo para uma análise pessoal e também
para a realização de autocrítica a respeito dos pontos compreendidos e daqueles
que exigem maior dedicação.

O formulário salvará as respostas de forma automática e, por isso, pode ser


iniciado em um momento e finalizado posteriormente. Ele também será
disponibilizado a você, para que faça consultas futuras. Além dos materiais
didáticos fornecidos, você poderá usar quaisquer outros recursos e referências.
Todavia, atente para o fato de que poderá respondê-lo somente uma vez.

O registro e envio das respostas é individual e deve ser realizado dentro do


prazo estipulado para a realização do curso.

e o código CRC UZDIGMX2.

594
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Referências
BROUTON LAB. A Complete Review of the OpenCV Object Tracking
Algorithms. 2022. Disponível em: https://broutonlab.com/blog/opencv-
object-tracking. Acesso em: 10 janeiro 2024.

MACENA, A.S. Rastreamento de múltiplos objetos utilizando modelos de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Aprendizado Profundo em Hardware Limitado. Trabalho de conclusão de
curso (Ciência da Computação) – Universidade Federal de Sergipe. São Cristóvão,
p. 73, 2021.

MENESES, M.C.C. Rastreamento em Tempo Real de Múltiplos Objetos por


Associação de Detecções. Dissertação (Mestrado) - Universidade Federal de
Sergipe, 2019.

PEGORETTI, H.F. Rastreamento de múltiplos objetos utilizando filtro de


Kalman. Trabalhos de Conclusão de Curso (Graduação em Engenharia de
Controle e Automação) - Universidade Federal de Santa Catarina, Blumenau,
p.50, 2021.

SHU, G., DEHGHAN, A., OREIFEJ, O. HAND, E., SHAH, M. Part-Based


Multiple-Person Tracking with Partial Occlusion Handling. IEEE Conference on
Computer Vision and Pattern Recognition (CVPR), p. 1815-1821, 2012.

TORRES, R.S., FALCÃO, A.X., GONÇALVES, M.A., PAPA, J.P., ZHANG, B., FAN, W.,
FOX, E.A. A genetic programming framework for content-based image retrieval.
Pattern Recognition, Elsevier, v. 42, n. 2, p. 283–292, 2009.
e o código CRC UZDIGMX2.
TRUCCO, E., VERRI, A. Introductory techniques for 3-D computer vision.
Prentice Hall Englewood Cliffs, 1998.

WULFF, J., BLACK, M.J. Efficient Sparse-to-Dense Optical Flow Estimation using a
Learned Basisand Layers. IEEE Conference on Computer Vision and Pattern
Recognition (CVPR), p. 120-130, 2015.

ZHAO, Z.Q., ZHENG, P., XU, S.T., WU, X. Object detection with Deep Learning: A
review. IEEE Transactions on Neural Networks and Learning Systems, v. 30, p.
1–21, 2019.

595
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Capítulo 8:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Visão Computacional
aplicada ao
reconhecimento de
textos

e o código CRC UZDIGMX2.

Autores
Júlio César Leitão Júnior

Marcelo de Almeida Viana


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.1. Introdução
Boas vindas ao capítulo Visão Computacional aplicada ao
reconhecimento de textos, um material para guiar você ao mundo da Visão
Computacional, com um enfoque particular no reconhecimento de textos. Este

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
capítulo desvenda como as máquinas interpretam e processam textos a partir
de imagens, explorando o papel crucial das técnicas de Inteligência Artificial na
transformação de imagens em informações textuais compreensíveis.

O tema inicia com a discussão dos conceitos fundamentais do


reconhecimento óptico de caracteres (OCR) e sua importância na conversão de
imagens de texto em dados digitais editáveis. Você ganhará uma compreensão
clara de como o OCR revoluciona a maneira como interagimos com documentos
impressos e imagens contendo texto.

O conteúdo prosseguirá abordando sobre as técnicas para


pré-processamento de imagens, detalhando métodos essenciais como
binarização, equalização de histograma, rotação e alinhamento, remoção de
ruído, operações morfológicas, detecção de bordas, segmentação e formas de
limiarização. Essas técnicas são fundamentais para melhorar a qualidade das

e o código CRC UZDIGMX2.


imagens e facilitar o reconhecimento de texto mais preciso pelo OCR.

Em seguida, será explorado as ferramentas populares como Tesseract, EAST


e EasyOCR, fornecendo insights sobre como estas ferramentas são aplicadas
para reconhecer textos em diferentes cenários.

E, finalmente, será abordado o uso do Aprendizado de Máquina no


reconhecimento de texto com OCR, realçando como as técnicas são integradas
para melhorar a precisão e a eficiência do reconhecimento de texto,
adaptando-se a variados estilos e formatos.

597
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Ao final deste capítulo, você deverá não apenas ter compreendido os


conceitos fundamentais da Visão Computacional aplicada ao reconhecimento
de textos, mas também terá adquirido habilidades práticas para enfrentar os
desafios no campo da IA.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.

598
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.2. Inspirar
Você já explorou a importância crescente da Visão Computacional no campo
do reconhecimento de textos, uma tecnologia empregada por diversas
entidades, incluindo empresas e governos, para melhorar processos e oferecer

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
serviços mais eficientes e personalizados?

Considere como essa tecnologia é capaz de identificar e interpretar textos


em imagens e vídeos, convertendo esses dados visuais em informações valiosas
e aplicáveis. Qual é o papel essencial desses sistemas avançados na detecção
precisa, extração e interpretação de texto em uma ampla gama de aplicações?

Neste curso, será explorado não só os aspectos técnicos da Visão


Computacional aplicada ao reconhecimento de textos, mas também entender
como esses elementos se integram para criar soluções inovadoras e melhorar a
eficácia em diversos setores.

O reconhecimento de texto está revolucionando áreas como automação de


escritório, gestão documental, marketing e até mesmo no campo educacional e
de acessibilidade. Essa tecnologia oferece insights detalhados que otimizam
processos e enriquecem a experiência do usuário, impulsionando a inovação.
e o código CRC UZDIGMX2.
Por exemplo, na automação de escritório, o reconhecimento de texto pode
ser utilizado para digitalizar documentos rapidamente, facilitando o
armazenamento e a recuperação de informações. No setor de marketing, essa
tecnologia permite analisar padrões em comentários de clientes e feedbacks,
proporcionando um entendimento mais profundo do comportamento do
consumidor.

E, na educação ou em iniciativas de acessibilidade, ela ajuda na conversão de


textos impressos para formatos acessíveis a pessoas com deficiências visuais.

599
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Percebe-se que a tecnologia de reconhecimento de texto oferece múltiplas


aplicações que podem aprimorar efetivamente as operações em diversos
contextos.

Aqui, serão apresentadas maneiras de aplicar os conhecimentos adquiridos


de forma prática e adaptada, incorporando tecnologias de reconhecimento de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
texto em contextos específicos e direcionados. O objetivo é propor e guiar o
desenvolvimento da eficiência em um mundo cada vez mais tecnológico.

Antes de iniciarmos a "Etapa de Conceitualização" na qual


haverá a apresentação do conteúdo e a experimentação dos
conceitos trabalhados por meio de atividades práticas, entre no
Google Sala de Aula, na aba "Etapa Inspirar", para acessar todos
os materiais disponibilizados, que visam a estimular sua reflexão e
iniciar a ambientação com o conteúdo deste capítulo.

Como última atividade desta etapa, prepare-se para trabalhar a


solução inicial do estudo de caso que será apresentado na
próxima seção.
e o código CRC UZDIGMX2.

A solução inicial que você elaborará não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos apresentados e a
entender como trabalhá-los de maneira prática.

600
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.2.1. Estudo de Caso - Renovando a


História: algoritmo para digitalização de
documentos manuscritos

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Este estudo visa demonstrar como a análise minuciosa das necessidades de
preservação e acesso a documentos históricos, aliada à integração de
tecnologias avançadas de Inteligência Artificial, pode resultar no
desenvolvimento de um sistema eficiente e inovador para a conversão de textos
manuscritos em formato digital.

É importante refletir sobre as características únicas dos manuscritos, como


variações de caligrafia, estado de conservação do papel e tinta, e peculiaridades
linguísticas de diferentes épocas. Tais considerações são fundamentais para o
desenvolvimento de um algoritmo adaptável.

Leia com atenção o cenário do estudo de caso e lembre-se: o

e o código CRC UZDIGMX2.


propósito desta atividade é promover uma reflexão inicial acerca do
assunto a ser discutido no cenário tendo por base somente os
conhecimentos de que você dispõe neste momento.

8.2.1.1. Cenário
Em um projeto que une tradição e tecnologia, uma prestigiada universidade,
detentora de um acervo significativo de documentos manuscritos históricos,

601
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

enfrentou o desafio de preservar e tornar acessível esse valioso patrimônio.

Visando transformar esses manuscritos em formatos digitais, até mesmo


para conseguir buscar termos específicos dentro dos documentos, a
universidade se aproximou da Facti, uma ICT (Instituição de Ciência e
Tecnologia) privada, conhecida por seus avanços em Tecnologia da Informação e

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Comunicação (TIC), para desenvolver uma solução tecnológica inovadora.

A biblioteca da universidade, reconhecida por seu acervo rico e diversificado,


contém uma vasta coleção de manuscritos que datam de várias épocas,
oferecendo um campo fértil para a aplicação de um algoritmo aplicado ao
reconhecimento de textos.

O projeto consiste então na criação de um software de conversão de texto


manuscrito em formato digital. Este algoritmo será uma ferramenta de
digitalização avançada que permite a transcrição automática de documentos,
preservando suas características originais, mas tornando-os acessíveis e
pesquisáveis em formato digital.

Esse processo não apenas facilita a consulta e o estudo desses documentos


por pesquisadores e estudantes, mas também contribui para a preservação
digital do patrimônio histórico e cultural.

Este projeto, ao ser concluído, representará um marco na preservação do e o código CRC UZDIGMX2.

patrimônio histórico e na democratização do acesso ao conhecimento,


permitindo que documentos antes restritos a um pequeno grupo de
especialistas se tornem disponíveis para o público em geral, contribuindo para a
educação e pesquisa em diversas áreas do conhecimento.

Deste modo, a Facti necessita contar com a sua ajuda para transformar este
projeto em realidade, ou seja, você precisa criar este algoritmo para o
reconhecimento de textos.

602
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.2.1.2. Decisões tecnológicas


O objetivo será construir um algoritmo de reconhecimento de textos para a
Facti e, para isto, irá precisar tomar algumas decisões de negócio.

1. Qual linguagem de programação utilizar?

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
2. Como será o desenvolvimento do algoritmo, qual ambiente de
programação será utilizado?
3. Quais as bibliotecas de programação disponíveis para realizar o
reconhecimento de textos?

Importante: coloque a sua resposta na atividade


"Apresentação da solução inicial", no Google Sala de Aula, em
um documento no formato de texto. Utilize este momento para
trabalhar as suas ideias iniciais com o máximo de detalhamento que
puder. Mais adiante, as suas anotações serão retomadas para o
refinamento da solução do estudo de caso.

e o código CRC UZDIGMX2.

603
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3. Conceitualizar
8.3.1. Introdução ao reconhecimento de
textos com OCR

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
A quantidade de dados disponível em formato digital tem aumentado
incessantemente nas últimas décadas, com estimativas de dados gerados,
segundo a AIIM International (Association for Information and Image Management
International), na ordem de trilhões de gigabytes. Desta forma, dada a
impossibilidade de processar e gerenciar manualmente essa vasta quantidade
de dados textuais, surge a necessidade de sistemas automáticos para descrever
o conteúdo textual de imagens e vídeos (Turner et al., 2014).

Neste contexto, o reconhecimento de texto automático, um desafio


significativo na Visão Computacional, torna-se essencial para localizar e
identificar texto em documentos genéricos, no qual consiste de um processo de
identificar e converter palavras e caracteres contidos em imagens ou em outros
formatos não-textuais em texto digital legível e manipulável por computadores.

e o código CRC UZDIGMX2.


Este processo começa com a análise da imagem para identificar áreas que
contêm texto, usando técnicas de processamento de imagem para melhorar a
legibilidade e reduzir ruídos. Em seguida, algoritmos de reconhecimento óptico
de caracteres (OCR, do inglês Optical Character Recognition) são aplicados para
extrair o texto, mapeando os padrões visuais dos caracteres para símbolos
textuais. Esta tarefa não é simples devido à diversidade de formatos de texto,
como variações de fonte, cor, tamanho e distorções geométricas (Romero, 2018).

A tecnologia OCR é amplamente utilizada para automatizar a entrada de


dados, reduzindo a necessidade de digitação manual e melhorando a eficiência

604
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

em diversas tarefas, além de permitir a conversão de diferentes tipos de


documentos, como imagens digitalizadas de texto impresso, documentos
manuscritos, fotos ou páginas de livros, em dados de texto editáveis e
codificados por máquina. Este processo envolve a identificação e a extração de
caracteres de imagens e sua transformação em texto digital, facilitando a edição,
a busca e o processamento eletrônico (Romero, 2018). As etapas principais do

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
funcionamento do OCR são:

1. Aquisição da imagem: o processo começa com a captura de uma imagem


contendo texto, que pode ser obtida por meio de scanners, câmeras digitais
ou dispositivos móveis;
2. Pré-processamento da imagem: antes da extração do texto, a imagem
passa por um pré-processamento para melhorar a qualidade e a legibilidade
do texto. Isso pode incluir ajustes de contraste e brilho, correção de
inclinação (skew), remoção de ruídos e binarização (transformação em preto
e branco);
3. Segmentação: nesta etapa, a imagem é dividida em segmentos menores
para identificar e isolar linhas, palavras ou caracteres individuais. Isso facilita
o reconhecimento preciso de cada elemento textual;
4. Reconhecimento de caracteres: os caracteres isolados são analisados e

e o código CRC UZDIGMX2.


comparados com um banco de dados ou um modelo de caracteres
conhecidos. Usando técnicas de Visão Computacional e, frequentemente,
algoritmos de Aprendizado de Máquina, o sistema OCR tenta identificar cada
caractere com base em seu formato e características;
5. Pós-processamento: após o reconhecimento, o texto pode passar por uma
etapa de pós-processamento para corrigir erros comuns, como confusões
entre caracteres com formas similares. Algumas vezes, o contexto é utilizado
para melhorar a precisão, usando algoritmos de Processamento de
Linguagem Natural;

605
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

6. Conversão e exportação: finalmente, os caracteres reconhecidos são


convertidos em texto digital, que pode ser editado, armazenado ou
processado. Esse texto é frequentemente exportado para outros formatos.

Os sistemas projetados para identificar e extrair informações textuais de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
imagens são referidos, portanto, como sistemas de extração e reconhecimento
de texto. As técnicas utilizadas para localizar e reconhecer o texto nesses
sistemas dependem significativamente do contexto em que o texto aparece na
imagem e do fundo sobre o qual ele está inserido. Existem diferentes categorias
de imagens baseadas nesses aspectos e os tipos de texto presentes nelas são:
imagens de documentos, imagens artificiais (texto superposto) e imagens de
cena (Jung et al., 2004).

As imagens do tipo documento são distintas por terem texto sobre um


fundo uniforme, com caracteres geralmente alinhados horizontalmente,
apresentando pouca variação em fonte e cor, além de alto contraste com o plano
de fundo (Figura 268). Essas imagens normalmente são obtidas por scanners,
gerando imagens de alta resolução com iluminação controlada, o que facilita a
extração de caracteres em comparação com outros tipos de imagem (Jung et al.,
2004).
e o código CRC UZDIGMX2.

Figura 268: Exemplo de imagem de documento.


Fonte: adaptado de Carielo et al. (2021).

606
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Assim, em imagens de documentos, em que o texto predomina sobre um


fundo uniforme, o processo inicial envolve a identificação do layout da página,
distinguindo texto de gráficos e figuras. Em seguida, sistemas de OCR são
utilizados para transformar as áreas de texto da imagem em texto simples.
Originalmente desenvolvidos para digitalizar documentos com o objetivo de
facilitar o armazenamento, edição e busca de informações, os sistemas de OCR

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
atuais alcançam taxas de reconhecimento de caracteres entre 95% e 99% para
imagens classificadas como documentos (Jung et al., 2004).

As imagens artificiais são aquelas em que textos são adicionados a uma


imagem existente por meio de processos de edição (Figura 269). Diferentemente
das imagens de documento, estas podem conter caracteres sobre fundos
complexos e variados, apresentando uma ampla gama de tamanhos, estilos,
cores e orientações. Designers, visando atrair a atenção, muitas vezes optam por
caracteres estilizados, os quais podem ser encontrados em uma diversidade de
cores e orientações, frequentemente sobrepostos a fundos texturizados (Jung et
al., 2004).

e o código CRC UZDIGMX2.

Figura 269: Exemplo de imagem artificial com a inserção do texto AI (Artificial Intelligence).
Fonte: imagem gerada por IA.

607
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

As imagens de cena são aquelas em que os caracteres são elementos


intrínsecos da cena capturada. A extração de texto dessas imagens é mais
desafiadora do que nas imagens de documento e artificiais. Isso ocorre porque o
texto está integrado à cena e pode estar sujeito a condições de iluminação
variáveis, oclusões, baixo contraste com o fundo, diferentes orientações e
distorções de perspectiva. Adicionalmente, as imagens de cena podem ser

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
impactadas por variações nos parâmetros das câmeras, incluindo foco,
iluminação e movimento.

Figura 270: Exemplo de imagem de cena.


Fonte: adaptado de Facti.

Com os avanços na Inteligência Artificial e no Aprendizado de Máquina, o


e o código CRC UZDIGMX2.
reconhecimento de texto tem se tornado cada vez mais sofisticado, permitindo
não apenas a leitura de textos em diferentes estilos de fonte e idiomas, mas
também a interpretação de textos manuscritos e a adaptação a variadas
condições de iluminação e qualidade de imagem. Essa tecnologia é amplamente
utilizada em diversas aplicações, como digitalização de documentos, leitura
automática de placas de veículos, sistemas de assistência a pessoas com
deficiências visuais, automatização de entrada de dados e muitos outros campos
em que a conversão rápida e precisa de imagens de texto em texto digital é
necessária.

608
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3.2. Técnicas para pré-processamento de


imagens
O pré-processamento de imagens para reconhecimento de texto é uma
etapa crucial no processo de OCR, pois prepara a imagem para uma análise mais

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
eficiente e precisa, além de procurar corrigir os defeitos na imagem por meio de
algoritmos. Para aprimorar a qualidade das imagens é necessário utilizar duas
principais técnicas, realce e restauração, de modo que a imagem resultante seja
mais adequada que a imagem original (Bovik, 2009).

A restauração de imagem é aplicada quando existe um conhecimento prévio


ou uma avaliação do processo de degradação da imagem, baseando-se em
princípios da teoria de filtragem. Diferentemente, o realce de imagem é utilizado
sem um conhecimento a priori específico da degradação da qualidade,
resultando em uma representação menos precisa e clara do objeto ou cena
original (Romero, 2018). Algumas das principais técnicas de pré-processamento
incluem as etapas a seguir.

8.3.2.1. Binarização e o código CRC UZDIGMX2.

A transformação de uma imagem colorida para escala de cinza (Figura 271) é


frequentemente o ponto de partida para diversos algoritmos de análise de
imagem para destacar os caracteres. Esta etapa diminui a quantidade de dados
na imagem, simplificando o processamento, mas ainda mantém a maior parte
das informações essenciais, como bordas, regiões e pontos de interseção. Uma
imagem em escala de cinza nada mais é do que uma combinação linear dos
canais de cores de uma imagem no espaço de cores RGB (vermelho, verde e
azul).

609
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Figura 271: Imagem colorida (à esquerda) e em escala de cinza (à direita).


Fonte: os Autores.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
8.3.2.2. Equalização de Histograma
O histograma é uma representação gráfica que correlaciona cada valor de
intensidade possível de um pixel com a frequência de sua ocorrência na
imagem. Basicamente, é uma tabela que contabiliza quantas vezes cada valor de
intensidade, ou faixa de intensidades, aparece nos pixels da imagem.
Geralmente, esses valores são exibidos em um gráfico de barras, mostrando
para cada nível de cinza a quantidade (ou percentual) de pixels correspondentes
na imagem (Figura 272). A análise do histograma de uma imagem fornece
insights sobre a qualidade do contraste e do brilho médio da imagem, ajustando
o contraste da imagem para distribuir uniformemente a intensidade luminosa,
melhorando a visibilidade do texto.

e o código CRC UZDIGMX2.

Figura 272: Histograma da intensidade de pixels da imagem anterior.


Fonte: os Autores.

610
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O histograma anterior mostra que os níveis de cinza estão concentrados em


direção à extremidade clara do intervalo, ou seja, correspondendo a uma
imagem com características predominantemente claras. Se uma imagem não
está utilizando todos os níveis de cinza disponíveis, pode-se alterá-la para
melhorar o contraste. Para manipular o histograma de uma maneira consistente
e significativa usa-se o processo de equalização, que significa redistribuir

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
uniformemente o brilho ou as intensidades dos pixels de uma imagem de forma
a abranger todo o espectro disponível de intensidades, realçando as
características e detalhes da imagem.

8.3.2.3. Rotação e alinhamento


A técnica de rotação e alinhamento, também conhecida como deskewing, é
um processo importante no pré-processamento de imagens, especialmente em
aplicações de reconhecimento de texto, como OCR. Esta técnica visa corrigir a
orientação de uma imagem para que o texto ou outros elementos importantes
estejam alinhados corretamente, geralmente de forma horizontal ou vertical
(Figura 273; Brown e Seales, 2001).

Em muitos casos, as imagens de documentos digitalizados ou fotografias


e o código CRC UZDIGMX2.
podem apresentar uma inclinação ou desalinhamento devido a uma variedade
de fatores, como a posição da câmera, do scanner ou do próprio documento
durante a digitalização. A presença de inclinação pode dificultar
significativamente o reconhecimento de texto e a análise de imagem e pode ser
tratada principalmente pelo uso da Transformada de Hough (Hough, 1962). Este
processo envolve os seguintes passos:

● Detecção da inclinação: determinar o ângulo de inclinação da imagem


pode ser feito usando técnicas como análise de bordas, detecção de linhas
ou análise de distribuição de pixels;
611
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Cálculo do ângulo de correção: uma vez identificado o ângulo de


inclinação, calcula-se o ângulo necessário para corrigir a imagem. O objetivo
é alinhar o texto ou os elementos da imagem de forma que fiquem paralelos
aos eixos da imagem;
● Rotação da imagem: a imagem é rotacionada pelo ângulo calculado, feito
por meio de operações de transformação geométrica que realinham a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
imagem sem alterar o conteúdo;
● Normalização: ajuste das intensidades de pixel para reduzir as variações
causadas por diferentes condições de iluminação ou qualidade da câmera;
● Ajuste final e recorte: após a rotação, pode ser necessário fazer ajustes
finos ou recortar a imagem para remover bordas desnecessárias ou espaços
vazios resultantes da rotação.

e o código CRC UZDIGMX2.

Figura 273: Correção da imagem na projeção vertical.


Fonte: adaptado de Krishnan (2018).

612
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3.2.4. Remoção de ruído


A técnica de remoção de ruído em processamento de imagens é uma etapa
fundamental para melhorar a qualidade visual de uma imagem ao eliminar ou
reduzir elementos indesejados conhecidos como ruído. O ruído é uma variação
aleatória de brilho ou cor na imagem, que pode ser introduzido durante a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
captura, transmissão ou processamento da imagem. A remoção de ruído é
especialmente importante em aplicações como reconhecimento de padrões,
processamento de imagens médicas (Figura 274) e análise de imagens de
satélite (Barboza, 2013).

Figura 274: Remoção de ruído da imagem.


Fonte: adaptado de EESC-USP (2018).

e o código CRC UZDIGMX2.

Existem vários métodos para a remoção de ruído e a escolha do método


adequado depende do tipo de ruído presente e das características da imagem.
Alguns dos métodos mais comuns são (Barboza, 2013):

● Filtro médio (Mean filter): este método substitui cada pixel na imagem pelo
valor médio dos pixels em sua vizinhança. É eficaz para reduzir ruídos
aleatórios, mas pode resultar em perda de detalhes e bordas na imagem;
● Filtro Gaussiano: utiliza uma função de distribuição gaussiana para suavizar

613
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

a imagem, atribuindo pesos aos pixels vizinhos com base na sua distância do
pixel central. É útil para reduzir ruídos, preservando melhor os detalhes em
comparação com o filtro médio;

● Filtro mediano (Median filter): substitui cada pixel pelo valor mediano de
seus vizinhos. É eficaz na remoção de ruídos do tipo impulsivo, caracterizado

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
pela presença de pixels brancos e pretos aleatórios espalhados pela
imagem, e preserva melhor as bordas do que o filtro médio;
● Filtro bilateral: combina a suavização de ruído com a preservação de
bordas. O filtro bilateral pondera os pixels pela proximidade espacial e pela
semelhança em intensidade, mantendo as bordas enquanto suaviza outras
áreas;
● Transformada wavelet: uma abordagem mais sofisticada que envolve a
decomposição da imagem em componentes de frequência. Permite a
remoção seletiva de ruídos de alta frequência, preservando os detalhes
importantes;
● Técnicas de Aprendizado de Máquina e Deep Learning: métodos
avançados que utilizam redes neurais e outras técnicas de aprendizado para
aprender a remover ruídos de forma mais eficiente, muitas vezes superando
os métodos tradicionais.

e o código CRC UZDIGMX2.

8.3.2.5. Operações morfológicas


As operações morfológicas são um conjunto de técnicas de processamento
de imagem usadas para extrair informações úteis sobre a forma e estrutura de
objetos dentro de uma imagem. Baseadas na teoria matemática da morfologia,
essas operações são aplicadas principalmente a imagens binárias, mas também
podem ser adaptadas para imagens em escala de cinza. As operações
morfológicas são utilizadas para diversas finalidades, como pré-processamento,

614
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

segmentação, reconhecimento de padrões e análise de imagens (Gonzalez e


Woods, 2008).

O conceito fundamental da morfologia é a comparação dos objetos de


interesse em uma imagem com um objeto de forma definida, conhecido como
elemento estruturante. Utilizando este elemento, pode-se avaliar e medir em

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
que medida ele se encaixa ou não na imagem e o elemento estruturante
selecionado proporciona uma perspectiva única do objeto analisado,
ressaltando a importância de sua escolha apropriada para a análise desejada.
Duas operações morfológicas básicas são a dilatação e a erosão, das quais
outras operações, como abertura e fechamento, são derivadas (Romero, 2018):

● Dilatação (Dilation): esta operação faz com que os objetos na imagem


fiquem maiores, expandindo sua área. É realizada aplicando um elemento
estruturante à imagem; se qualquer pixel do elemento estruturante se
sobrepuser a um pixel do objeto na imagem, o pixel do objeto é considerado
parte da dilatação. A dilatação é útil para preencher pequenos buracos e
expandir objetos;
● Erosão (Erosion): a erosão tem o efeito oposto da dilatação, reduzindo os
objetos na imagem. Um elemento estruturante é aplicado de tal forma que,
para um pixel da imagem ser mantido, todos os pixels do elemento
estruturante devem se sobrepor aos pixels do objeto. A erosão é usada para e o código CRC UZDIGMX2.

remover pequenos artefatos e separar objetos que estão ligeiramente


conectados;
● Abertura (Opening): a abertura é a dilatação seguida pela erosão. É usada
para remover pequenos objetos de uma imagem, enquanto mantém a
forma e o tamanho dos objetos maiores;
● Fechamento (Closing): o fechamento é a erosão seguida pela dilatação. É
útil para fechar pequenos buracos e lacunas dentro dos objetos, além de
conectar componentes ligeiramente separados.

615
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3.2.6. Detecção de bordas e segmentação


Primeiramente, entende-se borda como o limite ou a fronteira entre duas
regiões com propriedades distintas de nível de cinza (Figura 275). A técnica de
detecção de bordas e segmentação são processos fundamentais no campo do
processamento de imagens e Visão Computacional. Eles são usados para

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
identificar e isolar características específicas dentro de uma imagem, facilitando
a análise e posterior interpretação (Romero, 2018).

Figura 275: Remoção de ruído da imagem.


Fonte: adaptado de EESC-USP (2018).

e o código CRC UZDIGMX2.

A detecção de bordas envolve identificar os pontos em uma imagem em que


ocorre uma mudança brusca ou descontinuidade na intensidade da imagem.
Essas mudanças geralmente correspondem às bordas dos objetos na imagem e
a identificação é crucial para entender a forma e a estrutura dos objetos.
Algumas técnicas comuns de detecção de bordas incluem operadores de
gradiente, que calculam a variação da intensidade em diferentes direções;
detector de bordas de Canny, que usa um algoritmo multi-estágio para detectar
uma ampla gama de bordas na imagem e; filtros Laplacianos, que identificam
regiões em que há mudanças rápidas de intensidade (Romero, 2018).
616
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3.2.7. Limiarização
A técnica de limiarização (thresholding) é um método simples, mas eficaz de
segmentação de imagem usado no processamento de imagens. O objetivo da
limiarização é simplificar a análise de uma imagem ao reduzir a quantidade de
cores ou tons de cinza para apenas dois, transformando a imagem em uma

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
representação binária (Figura 276). Isso é alcançado ao estabelecer um limiar de
intensidade em que todos os pixels com intensidades acima do limiar são
convertidos para um valor, geralmente branco, e todos os pixels com
intensidades abaixo do limiar são convertidos para outro valor, geralmente preto
(Romero, 2018).

Figura 276: Limiarização binária.


Fonte: os Autores.

e o código CRC UZDIGMX2.

A transformação de uma imagem em escala de cinza em uma representação


binária (apenas dois tons) é uma técnica valiosa para diversos propósitos, como
análise da forma da imagem, em que a estrutura é mais relevante do que a
intensidade dos pixels, além da identificação de objetos e sua distinção do fundo
da imagem.

A forma mais básica de limiarização é realizada pela divisão do histograma,


em que os pixels com tonalidade de cinza igual ou superior a um determinado
valor de limiar são convertidos em brancos, enquanto os demais se tornam pre-

617
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

tos (Romero, 2018). Desta forma, os pixels rotulados com 1 (um) correspondem
aos objetos e os pixels etiquetados com 0 (zero) correspondem ao fundo
(background).

O valor de limiar, que corresponde a um tom de cinza predefinido, pode ser


determinado de acordo com o tom de cinza original do pixel. Se o limiar for

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
estabelecido apenas com base no valor do pixel original, ele é conhecido como
limiar global. No entanto, se o limiar também levar em consideração
propriedades locais do ponto, como a média dos pixels vizinhos, ele é referido
como limiar local. Além disso, se o limiar variar dependendo das coordenadas
espaciais do pixel original, ele é classificado como limiar dinâmico ou adaptativo
(ROMERO, 2018).

8.3.2.7.1. Limiarização global


Os métodos de limiarização global utilizam um único valor de limiar aplicado
a todos os pixels da imagem. O método desenvolvido por Otsu (Otsu, 1975) é
considerado um dos mais eficientes para limiarização global, pois seu algoritmo
sugere a segmentação da imagem em duas classes, em que o limiar ideal é
aquele que minimiza a variância interna das classes. Alternativamente, pode-se
e o código CRC UZDIGMX2.
também buscar o limiar que maximiza a variância entre as classes.

Comumente, por razões de eficiência computacional, prefere-se a


abordagem que maximiza a variância entre as classes para determinar o limiar
ótimo. O objetivo é dividir a imagem, que contém diversos níveis de cinza, em
duas classes distintas, uma para os pixels pretos e outra para os brancos,
representando, respectivamente, o objeto e o fundo (Romero, 2018).

O método de Otsu é particularmente eficaz na binarização de imagens com


histogramas bimodais que possuem um vale bem definido entre os picos. Con-

618
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

tudo, seu desempenho pode ser comprometido em situações em que a área do


objeto é pequena em relação à área do fundo, resultando em um histograma
que não apresenta bimodalidade clara (Trier e Jain, 1995). A Figura 277 ilustra o
resultado da aplicação do método de Otsu em uma imagem.

Imagem original Imagem original Limiarização global

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
(colorida) (escala de cinza) (Otsu)

Figura 277: Limiarização global - método de Otsu.


Fonte: adaptado de Unipython.

8.3.2.7.2. Limiarização local


Nos algoritmos de limiarização local, um valor de limiar é atribuído a cada

e o código CRC UZDIGMX2.


pixel da imagem com base nas características da área ao redor dele. Isso resulta
na criação de uma superfície de limiarização que se ajusta às particularidades
locais da imagem. Para capturar essas características, uma janela deslizante (ou
máscara) percorre a imagem, coletando informações dos pixels sob a janela,
como média, variância e amplitude dinâmica. Esses dados são usados para
determinar um limiar para o pixel central da janela. Esse procedimento é
repetido até que todos os pixels da imagem tenham sido processados (Romero,
2018).

619
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O método de Niblack, especificamente, calcula os valores de limiar com base


na média e no desvio padrão dos pixels sob a janela deslizante. Valores mais
baixos geram caracteres com traços mais espessos, enquanto valores mais altos
resultam em traços finos, podendo até causar interrupções no processo de
binarização. Janelas muito pequenas podem permitir que o ruído influencie
excessivamente na determinação do limiar, enquanto janelas muito grandes

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
podem ser inadequadas por não preservar detalhes locais suficientemente
(Seixas et al., 2008). A Figura 278 ilustra o resultado da aplicação do método de
Niblack.

Imagem original Imagem original Limiarização local


(colorida) (escala de cinza) (Niblack)

Figura 278: Limiarização local - método de Niblack.


Fonte: adaptado de Unipython.

e o código CRC UZDIGMX2.

8.3.2.7.3. Limiarização adaptativa


A limiarização adaptativa é uma técnica avançada de processamento de
imagem usada para converter uma imagem em escala de cinza para uma
representação binária. Diferente da limiarização global, que aplica um único
valor de limiar para toda a imagem, a limiarização adaptativa determina o limiar
para cada pixel com base nas condições locais da imagem. Isso significa que o
valor do limiar varia ao longo da imagem, adaptando-se às características
específicas de cada região (Bertholdo, 2007).

620
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Esta técnica é particularmente útil em situações em que a iluminação da


imagem não é uniforme ou quando diferentes partes da imagem têm diferentes
níveis de contraste. Ao adaptar o valor do limiar às condições locais, a
limiarização adaptativa pode preservar detalhes importantes em áreas mais
escuras ou mais claras e é capaz de lidar melhor com variações de iluminação e
sombras (Bertholdo, 2007).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Os métodos comuns de limiarização adaptativa, utilizados no
processamento de imagens, incluem a Limiarização Adaptativa Local, que
determina o valor de limiar para cada pixel com base na média ou mediana dos
pixels vizinhos; a Limiarização Adaptativa com Base em Ponderação, que utiliza
pesos ou combinações de medidas estatísticas como média, mediana e desvio
padrão; e Algoritmos Específicos, como os métodos de Sauvola ou Niblack, que
se baseiam em cálculos estatísticos mais complexos (Bertholdo, 2007).

Essa técnica é essencial em diversas aplicações, como OCR para texto em


fundos variados, análise de imagens médicas e processamento de imagens de
vigilância, permitindo uma segmentação precisa de objetos em condições de
iluminação variáveis. A Figura 279 ilustra o resultado da aplicação da
limiarização adaptativa.

e o código CRC UZDIGMX2.


Imagem original Imagem original Limiarização
(colorida) (escala de cinza) adaptativa

Figura 279: Limiarização adaptativa.


Fonte: adaptado de Unipython.

621
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3.3. Abordagens das ferramentas técni-


cas com OCR
As ferramentas técnicas com OCR variam desde bibliotecas e frameworks de
programação até softwares e aplicativos dedicados. A seguir serão abordadas

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
algumas das ferramentas mais populares e amplamente utilizadas.

8.3.3.1. OCR com Tesseract


O Tesseract é uma biblioteca de software aberto de OCR que se destaca por
sua flexibilidade, precisão e suporte a uma ampla gama de idiomas. O projeto
teve início como uma iniciativa de pesquisa e rapidamente se destacou como um
potencial complemento para a linha de scanners, tanto em hardware quanto em
software. Naquela época, a maioria das ferramentas de OCR disponíveis ainda
estavam em seus estágios iniciais de desenvolvimento e enfrentava diversas
falhas. Originalmente desenvolvido pela Hewlett-Packard (HP) em 1985, foi
posteriormente aprimorado e mantido pelo Google desde 2006 (Smith, 2007).

A ferramenta processa imagens binárias e pode utilizar regiões específicas


e o código CRC UZDIGMX2.
de texto como entrada. O procedimento de processamento segue uma
sequência de etapas, algumas das quais eram inovadoras para a época. A
primeira etapa consiste na análise de componentes conectados, durante a qual
os contornos dos componentes são armazenados. Isso permite a detecção e o
reconhecimento eficaz de textos invertidos, como reconhecer texto preto em
fundo branco, sendo notável por ser uma das primeiras ferramentas de OCR a
lidar com textos brancos em fundo preto. Nesta fase, os contornos são
agrupados em blobs (Binary Large Objects) com base em seu enquadramento.

622
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Os blobs¹ são organizados em linhas de texto, que são posteriormente


analisadas para determinar se correspondem a um layout de texto fixo ou a um
texto com espaçamento proporcional. As linhas de texto são divididas em
palavras com base nas variações de espaçamento entre os caracteres. Para os
textos com layout fixo, cada caracter é separado individualmente, enquanto os
textos proporcionais são divididos em palavras usando espaços definidos e

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
espaços incertos (Smith, 2007).

O processo de reconhecimento ocorre em duas etapas: na primeira, as


palavras são reconhecidas individualmente. As palavras que são
satisfatoriamente identificadas são então utilizadas como dados de treinamento
para um classificador adaptativo, aumentando a precisão do reconhecimento ao
longo da página. Como a melhoria do classificador adaptativo pode acontecer
mais para o fim do texto, uma segunda passagem é realizada, em que palavras
previamente mal reconhecidas são reavaliadas. Na etapa final, espaços incertos
são ajustados e hipóteses alternativas são consideradas para identificar textos
em letras minúsculas (Smith, 2007).

No processamento de linhas de texto pelo Tesseract, as etapas principais


incluem a filtragem de blobs e a construção de linhas. Uma vez que as linhas são
estabelecidas, suas bases são definidas para separar cada linha de texto
individualmente. Em casos de textos com espaçamento irregular, o Tesseract e o código CRC UZDIGMX2.

aborda o problema medindo o espaço em uma faixa vertical limitada entre a


base da linha e a média da linha. Espaços próximos ao limite se tornam
ambíguos, permitindo que decisões finais sejam tomadas após o
reconhecimento da palavra. Se o reconhecimento de uma palavra não for
satisfatório, as palavras são divididas em pontos localizados em vértices
côncavos (Smith, 2007).

¹ Blobs referem-se a regiões de uma imagem que diferem em propriedades, como brilho ou cor, em comparação com o fundo ou
áreas circundantes. Eles são usados para identificar e extrair informações sobre objetos ou características específicas em uma
imagem.

623
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Caso as palavras continuem insatisfatórias após múltiplas divisões, elas são


encaminhadas para o associador. O associador inicia uma busca por
combinações possíveis de blobs e caracteres, do melhor para o pior. Esse método
de divisão e associação simplifica a estrutura de dados necessária para manter
um gráfico completo de segmentação (Smith, 2007).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O classificador do Tesseract emprega dados previamente treinados para
efetuar a classificação e identificar correspondências de caracteres. O uso de um
classificador adaptativo é aconselhável para reconhecer diferentes tipos de
fontes. A normalização da linha de base e da altura do caracter facilita a
distinção entre caracteres maiúsculos e minúsculos. Essas características fazem
do Tesseract um líder de mercado em precisão, com suas escolhas distintas de
atributos representando uma vantagem significativa (Smith, 2007).

8.3.3.1.1. Reconhecimento pelo Tesseract


Originalmente desenvolvido para reconhecer apenas o inglês, o Tesseract
expandiu seu suporte para outras línguas a partir de 2007. A criação de um
sistema de OCR para uma língua específica não contribui significativamente para
o reconhecimento de outras línguas do mundo, considerando a grande
e o código CRC UZDIGMX2.
diversidade linguística, incluindo variantes históricas. Um aspecto crucial no
desenvolvimento de um sistema OCR multilíngue é a definição das unidades de
reconhecimento (RU, do inglês Recognition Units) que são os elementos
individuais reconhecidos pelo OCR. Essas unidades ajudam a generalizar
alfabetos, conjuntos de caracteres e grafemas, cada um com seu significado
específico (Smith, 2013).

O Tesseract é testado regularmente em 30 idiomas, usando conjuntos de


teste variados, como para línguas baseadas no latim e russo, com dados gera-

624
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

dos a partir da digitalização de livros e textos de PDFs. As primeiras tecnologias


de OCR exigiam scanners caros ou dispositivos ópticos especializados, mas
atualmente o reconhecimento pode ser realizado até mesmo off-line em um
smartphone, embora a qualidade da imagem possa afetar significativamente o
resultado do OCR. A precisão dos dispositivos móveis ultrapassou 90%, com
potencial para melhorar ainda mais mediante processamento de imagem para

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
corrigir imperfeições como distorções ou iluminação inadequada (Ch et al.,
2015).

e o código CRC UZDIGMX2.

625
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3.3.1.2. Atividade de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração das IDEs. Para as atividade propostas recomenda-se o uso
do Google Colab.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades não são provas e não


haverá correção formal por parte dos instrutores; o objetivo é a
autoaprendizagem e prática. As respostas e dicas de desenvolvimento
para cada atividade estão disponíveis em arquivos específicos no
Google Sala de Aula, na aba Etapa Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos

e o código CRC UZDIGMX2.


seguintes símbolos:

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

626
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 72 ●●

Implemente um algoritmo, em Python, para processar imagens e extrair


texto delas utilizando a biblioteca OpenCV para manipulação de imagens e a
Tesseract OCR para reconhecimento de caracteres. O objetivo é aprender a
transformar imagens para facilitar o reconhecimento de texto e a manipular

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
diferentes configurações da Tesseract OCR para lidar com idiomas e cenários
variados. Utilize o conjunto de arquivos disponibilizados no Google Sala de Aula.

Siga os passos a seguir para as atividades:

1. Inicie um novo projeto no Google Colab.


2. Importar as bibliotecas necessárias, incluindo pytesseract e cv2, para
visualização de imagens no Colab.
3. Carregar imagens de texto de diferentes fontes e formatos.
4. Transformar as imagens do padrão BGR (padrão do OpenCV) para RGB.
5. Utilizar a pytesseract.image_to_string para extrair texto das imagens.
6. Aplicar filtros e técnicas de processamento de imagem para melhorar a
acurácia do reconhecimento de texto.
7. Implementar a detecção e marcação de padrões específicos no texto
reconhecido, como datas, usando expressões regulares.
8. Explorar diferentes modos de segmentação de página da Tesseract OCR
e o código CRC UZDIGMX2.
para lidar com diversos formatos de texto.
9. Realizar a detecção de texto em cenários naturais e imagens complexas.

627
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3.3.2. OCR com EAST


O detector de texto EAST (Efficient and Accurate Scene Text Detector) é um
algoritmo de detecção de texto avançado, que foi projetado para ser eficiente e
preciso na localização de texto em imagens, particularmente em cenas naturais
ou ambientes com texto incorporado, como placas de rua, letreiros de lojas,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
anúncios ou mesmo em condições desafiadoras, como texto com orientação
variada, fontes diversas e sob diferentes condições de iluminação. Ele utiliza
técnicas de Deep Learning e redes neurais convolucionais (CNNs) para identificar
regiões de texto na imagem, gerando caixas delimitadoras ao redor do texto
detectado (Zhou, 2017).

Ao integrar o EAST com sistemas de OCR, é possível criar uma solução de


reconhecimento de texto mais robusta e eficaz. Primeiro, o EAST realiza a
varredura da imagem para identificar regiões que contêm texto, que por meio
das CNNs busca reconhecer padrões e formas que indicam a presença de texto,
independentemente de sua orientação ou formato. Uma vez que identifica e
segmenta as áreas de texto na imagem, essas áreas segmentadas são
alimentadas em um sistema de OCR (Zhou, 2017).

Nesta etapa, o OCR processa o conteúdo dentro das caixas delimitadoras


e o código CRC UZDIGMX2.
para reconhecer e transcrever com precisão os caracteres e palavras detectadas.
O sistema de OCR analisa as formas dos caracteres e os converte em texto
digital, que pode ser lido, editado ou processado posteriormente. O OCR é capaz
de lidar com diferentes estilos de fonte e pode adaptar-se para reconhecer texto
em diversas línguas.

628
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3.3.2.1. Atividade de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração das IDEs. Para as atividade propostas recomenda-se o uso
do Google Colab.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades não são provas e não


haverá correção formal por parte dos instrutores; o objetivo é a
autoaprendizagem e prática. As respostas e dicas de desenvolvimento
para cada atividade estão disponíveis em arquivos específicos no
Google Sala de Aula, na aba Etapa Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos


seguintes símbolos:
e o código CRC UZDIGMX2.

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

629
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 73 ●●

Implemente um algoritmo, em Python, para detectar e reconhecer texto em


imagens utilizando a biblioteca OpenCV com o detector EAST e a Tesseract OCR
para reconhecimento de caracteres. O objetivo é aprender a aplicar técnicas
avançadas de detecção de texto em imagens, aprimorar a precisão do

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
reconhecimento de texto e explorar o uso de algoritmos de supressão de
máxima e não-máxima para resultados mais precisos. Utilize o conjunto de
arquivos disponibilizados no Google Sala de Aula.

Siga os passos a seguir para as atividades:

1. Inicie um novo projeto no Google Colab.


2. Importe as bibliotecas necessárias, incluindo pytesseract e cv2, para
visualização de imagens no Colab.
3. Conecte ao Google Drive e acessar arquivos de imagens e o modelo de
rede neural EAST para detecção de texto.
4. Carregue e processar uma imagem para prepará-la para a detecção de
texto, ajustando suas dimensões e proporções.
5. Carregue a rede neural EAST e aplicar a detecção na imagem processada
para obter scores e geometrias.
6. Utilize supressão de não-máxima para filtrar detecções redundantes e
e o código CRC UZDIGMX2.
melhorar a precisão.
7. Extraia regiões de interesse (ROIs) com base nas detecções e aplique o
Tesseract OCR para reconhecer o texto nessas regiões.
8. Expanda as ROIs para melhorar a acurácia do reconhecimento de texto e
ajuste as configurações da Tesseract OCR.
9. Exiba a imagem original com as detecções de texto marcadas e imprima
os textos reconhecidos.

630
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3.3.3. OCR com EasyOCR


A EasyOCR é uma biblioteca de software de código aberto para OCR,
projetada para ser fácil de usar e implementar. Desenvolvida pela Jaided AI
(https://jaided.ai/), é baseada em técnicas modernas de Deep Learning, a
EasyOCR oferece uma solução eficaz para a extração de texto de imagens. Os

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
pontos chave sobre a EasyOCR são:

● Suporte a múltiplos idiomas: uma das características notáveis do EasyOCR


é seu suporte a mais de 80 idiomas, incluindo idiomas com caracteres não
latinos, como chinês, japonês e coreano;
● Baseado em Deep Learning: EasyOCR utiliza redes neurais convolucionais
(CNNs) e redes neurais recorrentes (RNNs), em particular, a arquitetura
CRNN (Convolutional Recurrent Neural Network), para reconhecer texto em
imagens;
● Facilidade de uso: como o nome sugere, EasyOCR foi projetada para ser
simples e direta, permitindo que desenvolvedores integrem recursos de OCR
em seus aplicativos com poucas linhas de código;
● Flexibilidade e personalização: a biblioteca é flexível e pode ser
personalizada para diferentes tipos de tarefas de OCR, adaptando-se a

e o código CRC UZDIGMX2.


variados cenários e necessidades;
● Uso prático: EasyOCR é adequada para uma ampla gama de aplicações,
desde a extração de texto em documentos digitalizados até a leitura de
placas de rua e identificação de texto em imagens de produtos;
● Comunidade e código aberto: sendo um projeto de código aberto, EasyOCR
beneficia-se de contribuições contínuas da comunidade, o que resulta em
melhorias e atualizações regulares;
● Integração com outras ferramentas: a biblioteca pode ser facilmente
integrada com outras ferramentas e frameworks de processamento de
imagem, ampliando sua utilidade e eficácia.
631
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Como a EasyOCR utiliza um detector de texto baseado em redes neurais


para localizar as prováveis áreas na imagem que contêm texto, marcando-as
com caixas delimitadoras, após a detecção é realizado o reconhecimento dos
caracteres dentro das áreas delimitadas para capturar padrões espaciais e
sequenciais no texto, facilitando o reconhecimento preciso de caracteres e
palavras (Vedhaviyassh et al., 2022).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Após o reconhecimento dos caracteres, a EasyOCR utiliza técnicas de PLN
para formar palavras e frases coerentes, o que inclui a correção de erros e a
formatação adequada do texto, suportado por modelos treinados em grandes
conjuntos de dados contendo textos em diferentes línguas, o que permite
reconhecer texto em diversos idiomas com eficácia. O resultado do processo é
entregue em um formato que inclui o texto extraído, juntamente com
informações sobre a localização do texto na imagem, assim como as
coordenadas das caixas delimitadoras (Vedhaviyassh et al., 2022).

e o código CRC UZDIGMX2.

632
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3.3.3.1. Atividade de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração das IDEs. Para as atividade propostas recomenda-se o uso
do Google Colab.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades não são provas e não


haverá correção formal por parte dos instrutores; o objetivo é a
autoaprendizagem e prática. As respostas e dicas de desenvolvimento
para cada atividade estão disponíveis em arquivos específicos no
Google Sala de Aula, na aba Etapa Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos

e o código CRC UZDIGMX2.


seguintes símbolos:

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

633
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 74 ●●

Implemente um algoritmo, em Python, para realizar o reconhecimento de


texto em imagens utilizando a biblioteca EasyOCR, que é mantida pela Jaided AI
e oferece suporte para diversos idiomas. O objetivo é aprender a aplicar o OCR
em imagens, manipular o resultado do reconhecimento e explorar o suporte a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
múltiplos idiomas. Utilize o conjunto de arquivos disponibilizados no Google Sala
de Aula.

Siga os passos a seguir para as atividades:

1. Inicie um novo projeto no Google Colab.


2. Instale a biblioteca EasyOCR, cv2 e as dependências necessárias.
3. Configure a lista de idiomas suportados pelo EasyOCR e a opção para
utilizar GPU no processamento, se disponível.
4. Carregue uma imagem e exibir sua visualização.
5. Utilize o EasyOCR para realizar o reconhecimento de texto na imagem e
escrever o texto reconhecido na imagem, incluindo a criação de uma
função para desenhar caixas delimitadoras ao redor do texto e outra
para escrever o texto com uma fonte específica.
6. Teste o reconhecimento de texto em imagens com diferentes idiomas,
como inglês e francês, ajustando a lista de idiomas e a fonte conforme
e o código CRC UZDIGMX2.
necessário.
7. Explore o reconhecimento de texto em imagens com fundo complexo,
implementando uma função para adicionar um fundo ao texto
reconhecido e melhorar a legibilidade.
8. Exiba a imagem com as marcações do texto reconhecido e os resultados
do OCR.

634
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.3.4. Uso do Aprendizado de Máquina no


reconhecimento de texto com OCR
O uso do Aprendizado de Máquina no reconhecimento de texto com OCR
representa um avanço significativo na capacidade de interpretar e processar

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
informações visuais em formato textual. Esta aplicação envolve o treinamento
de algoritmos para identificar e transcrever caracteres e palavras a partir de
imagens, transformando-os em dados textuais legíveis e manipuláveis por
computadores. A principal vantagem do uso do Aprendizado de Máquina em
OCR é a sua capacidade de lidar com a complexidade e a diversidade do texto
em diferentes contextos e formatos (Silva Filho, 2022).

O Aprendizado de Máquina, especialmente na forma de redes neurais


profundas, fornece a base para o desenvolvimento de sistemas OCR robustos e
precisos. Os modelos, especialmente as redes neurais convolucionais (CNNs) e
recorrentes (RNNs), são eficazes na captura de características espaciais e
sequenciais do texto. A capacidade desses modelos de aprender padrões
complexos em grandes conjuntos de dados os torna particularmente adequados
para o reconhecimento de texto, que envolve a identificação de uma ampla

e o código CRC UZDIGMX2.


variedade de estilos de fonte, tamanhos de caracteres e idiomas (Silva Filho,
2022).

Inicialmente, um modelo, como o modelo sequencial do TensorFlow/Keras, é


treinado usando um vasto conjunto de dados que contém imagens de texto,
junto com suas respectivas transcrições. Durante o treinamento, o modelo
aprende a identificar padrões e características que definem diferentes caracteres
e palavras. Em imagens com texto, o modelo primeiro identifica as áreas que
contêm texto (detecção) e depois divide essas áreas em segmentos menores,
como linhas, palavras ou caracteres individuais (segmentação). Cada

635
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

segmento é analisado pelo modelo, que identifica e transcreve os caracteres.


Esta etapa é crítica e requer que o modelo reconheça uma ampla gama de
variações no texto, incluindo diferentes fontes, tamanhos e estilos (Silva Filho,
2022).

Durante o treinamento, a rede aprende a identificar padrões visuais que

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
correspondem a diferentes caracteres e palavras. Esse aprendizado é facilitado
por técnicas como backpropagation e otimização por gradientes, que ajustam os
pesos da rede para minimizar os erros de reconhecimento. Assim, após a
transcrição inicial, um processo de pós-processamento pode ser aplicado para
corrigir erros comuns e melhorar a precisão do texto reconhecido.

Nesta etapa, pode-se incluir a verificação ortográfica e a correção contextual


baseada em linguagem natural. No entanto, os desafios incluem a necessidade
de grandes conjuntos de dados de treinamento e a capacidade de generalizar
para novos tipos de texto ou idiomas não representados no conjunto de
treinamento. Além disso, a qualidade da imagem, como resolução e iluminação,
pode afetar significativamente o desempenho do sistema OCR.

e o código CRC UZDIGMX2.

636
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Neste momento, retorne ao Google Sala de Aula e, na aba


"Atividades", procure a seção intitulada "Etapa Conceitualizar".

Nessa área você encontrará uma série de links com materiais

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
que foram criteriosamente escolhidos e disponibilizados. Trata-se de
recursos que têm por objetivo apresentar informações adicionais e
insights, permitindo que você amplie e enriqueça o seu
conhecimento acerca dos temas discutidos neste capítulo.

Este momento final do capítulo deve lhe proporcionar reflexões


críticas a respeito do conteúdo abordado, ajudando na
compreensão e fixação do conteúdo.

e o código CRC UZDIGMX2.

637
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.4. Consolidar
8.4.1. Estudo de Caso
Você se lembra que a universidade, em parceria com a Facti, decidiu integrar

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
as mais recentes tecnologias de Inteligência Artificial em seu projeto de
digitalização de manuscritos históricos?

Este estudo de caso é direcionado ao desenvolvimento de um algoritmo


avançado de Aprendizado de Máquina, especializado na transcrição e
interpretação de textos manuscritos antigos, com o objetivo de converter esses
documentos em formatos digitais acessíveis e pesquisáveis.

Inicialmente, releia com atenção o cenário do estudo de caso da


"Etapa Inspirar" e as suas anotações e conclusões iniciais. Na
sequência, você deverá promover o aprimoramento da solução

e o código CRC UZDIGMX2.


anteriormente apresentada usando os conhecimentos que obteve
ao longo do capítulo e do conteúdo adicional.

Lembre-se de que este aprimoramento não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos que foram estudados
e a testar novos cenários e hipóteses, validando os seus resultados
práticos.

638
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.4.2. Proposta de implementação


Será preciso criar um MVP, Minimum Viable Product, expressão em inglês para
o menor conjunto de especificações que resolvam algum problema para o
cliente.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Para este MVP, será escolhida a linguagem de programação Python,
utilizando a biblioteca TensorFlow para reconhecimento de textos. O ambiente
de programação escolhido será o Google Colab IDE.

O objetivo será desenvolver um algoritmo para a universidade para que ela


tenha a melhor solução em realizar o reconhecimento de textos de acordo com
o projeto de digitalização de manuscritos históricos.

8.4.3. Infraestrutura para o estudo de caso


Conforme você já se familiarizou em capítulos anteriores, para este estudo
de caso será aplicado o reconhecimento de texto, em conjunto com o
TensorFlow, uma biblioteca abrangente e de código aberto para computação

e o código CRC UZDIGMX2.


numérica e Aprendizado de Máquina. Além disso, recomenda-se utilizar o
Google Colaboratory para desenvolvimento do algoritmo.

A base de dados de treinamento para a identificação dos caracteres será o


conjunto MNISP 0-9 para identificação dos caracteres numéricos e o conjunto
Kaggle A-Z para identificação dos caracteres do alfabeto.

639
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.4.4. Solução final do Estudo de Caso


Agora que foram abordadas as técnicas essenciais para o desenvolvimento
do reconhecimento de texto com OCR, chegou a hora de aplicar todo o conteúdo
de forma mais específica.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O nosso cliente, a Facti, solicitou uma solução para o reconhecimento de
textos e você, que acabou de receber o conteúdo do curso, está apto a propor
uma solução. Primeiro será necessário realizar alguns passos para iniciar o
estudo de caso.

Comece a organizar a infraestrutura pelo arquivo do modelo pré-treinado,


que está disponível na aba “Atividades”, na plataforma do Google Sala de Aula.

Faça o download do arquivo Material_complementar_reconhecimento_


texto.zip, salve-o em um diretório de fácil acesso, pois será preciso direcionar o
caminho para esta pasta dentro do seu Google Drive, para facilitar o acesso aos
documentos que serão utilizados durante o capítulo. Siga os seguintes passos
para realizar o upload desta pasta em seu Google Drive:

● Acesse o seu Google Drive no link: https://drive.google.com;


● Clique em “Meu Drive” e escolha a opção “Upload de arquivo”, conforme

e o código CRC UZDIGMX2.


abordado nos capítulos anteriores;
● Localize e selecione a pasta Material_complementar_reconhecimento_
texto.zip em seu computador para realizar o upload;
● Não é necessário descompactar os arquivos da pasta;
● Ao montar o drive no código, permita que o notebook acesse seus arquivos
do Google Drive.

Agora é hora de começar a criar o código. Como o Google Colab permite


executar trechos individuais do código (inserindo-os a cada célula criada), a cada

640
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

trecho é possível codificar e testar o código por meio do comando “Executar” ou


pelas teclas de atalho “Ctrl + Enter”.

No Google Sala de Aula, na aba “Atividades”, na seção “Etapa Consolidar”,


há uma sugestão de solução para o estudo de caso e, a cada célula do arquivo
há trechos de código podem ser executados. Atente-se às orientações contidas

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
no documento para conseguir executar o algoritmo, conforme constam no
arquivo do Google Colab.

Arquive o refinamento do estudo de caso no formulário disponível


no Google Sala de Aula, na aba “Etapa Consolidar”.

e o código CRC UZDIGMX2.

641
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

8.5. Avaliar
Para concluir este capítulo, você deverá realizar a “Etapa Avaliar”, que
consiste no preenchimento do Questionário de Avaliação disponível no Google
Sala de Aula e que tem como objetivo permitir que você acompanhe

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
individualmente a evolução do seu aprendizado.

Não será atribuída nota para a atividade, mas a sua entrega é obrigatória,
pois, acima de tudo, servirá como insumo para uma análise pessoal e também
para a realização de autocrítica a respeito dos pontos compreendidos e daqueles
que exigem maior dedicação.

O formulário salvará as respostas de forma automática e, por isso, pode ser


iniciado em um momento e finalizado posteriormente. Ele também será
disponibilizado a você, para que faça consultas futuras. Além dos materiais
didáticos fornecidos, você poderá usar quaisquer outros recursos e referências.
Todavia, atente para o fato de que poderá respondê-lo somente uma vez.

O registro e envio das respostas é individual e deve ser realizado dentro do


prazo estipulado para a realização do curso.

e o código CRC UZDIGMX2.

642
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Referências
BARBOZA, R.S. Filtragem de Ruídos em Imagens Digitais. Tese (Doutorado) –
Universidade Federal de Pernambuco. Programa de Pós-Graduação em
Engenharia Elétrica. Recife, p.104, 2013.

BERTHOLDO, F.A.R. Técnicas de Limiarização para Melhorar a Qualidade

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Visual de Documentos Históricos. Dissertação (Mestrado) – Universidade
Federal de Minas Gerais. Curso de Pós-Graduação em Ciência da Computação,
p75, 2007.

BOVIK, A.C. The essential guide to image processing. Academic Press, 2009.

BROWN, M.S., SEALES, W.B. Document restoration using 3D shape: a general


deskewing algorithm for arbitrarily warped documents. Proceedings Eighth
IEEE International Conference on Computer Vision, 2: 367-374, 2001.

CARIELO, M.S., PRESTES, J.A.L., MARINHO, W.A.T. Modelagem preditiva com


aprendizagem de máquina para a produção de café dos Municípios de Minas
Gerais. L Congresso Brasileiro de Engenharia Agrícola, 2021.

CH, S., MAHNA, S., KASHYAP, N. Optical Character Recognition on Handheld


Devices. International Journal of Computer Applications, 115(22): 10–13,
2015.

GONZALEZ, R.C., WOODS, R.E. Digital image processing. Upper Saddle River, NJ,
Pearson/Prentice Hall, 2008.
e o código CRC UZDIGMX2.
HOUGH, P.V. Method and means for recognizing complex patterns. U.S. Patent
3,069,654, 1962.

JUNG, K., KIM, K.I., JAIN, A.K. Text information extraction in images and video: a
survey. Pattern recognition, 37(5): 977-997, 2004.

OTSU, N. A threshold selection method from gray-level histograms. Automatica


11(285-296): 23-27, 1975.

643
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

ROMERO, R.V. Processo automático de reconhecimento de texto em imagens


de documentos de identificação genéricos. Dissertação (Mestrado) - Escola
Politécnica da Universidade de São Paulo. Departamento de Engenharia de
Computação e Sistemas Digitais. São Paulo, p.168, 2018.

SEIXAS, F.L., MARTINS, A., STILBEN, A.R., MADEIRA, D., ASSUMPÇÃO, R., MANSUR,
R., VICTER, S.M., MENDES, V.B., CONCI, A. Avaliação dos métodos para a
segmentação automática dos tecidos do encéfalo em ressonância magnética.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Simpósio de Pesquisa Operacional e Logística da Marinha, Rio de Janeiro,
2008.

SILVA FILHO, D.C. Reconhecimento de caracteres utilizando redes neurais


convolucionais para auxiliar nas correções do sistema multiprova. Trabalho
de Conclusão de Curso (Graduação em Engenharia da Computação) -
Universidade Federal do Rio Grande do Norte, Departamento de Engenharia de
Computação e Automação, Natal, 2022.

SMITH, R. An Overview of the Tesseract OCR Engine. Ninth International


Conference on Document Analysis and Recognition (ICDAR 2007), 2: 629–633,
2007.

SMITH, R.W. History of the Tesseract OCR engine: what worked and what didn’t.
Proc. SPIE 8658, Document Recognition and Retrieval XX, 865802, 2013.

TRIER, O.D., JAIN, A.K. Goal-directed evaluation of binarization methods. IEEE


Transactions on Pattern Analysis and Machine Intelligence, 17(12):
1191-1201, 1995.

TURNER, V., GANTZ, J.F., REINSEL, D., MINTON, S. The digital universe of
e o código CRC UZDIGMX2.
opportunities: rich data and the increasing value of the internet of things. IDC
Analyze the Future, 2014.

VEDHAVIYASSH, D.R., SUDHAN, R., SARANYA, G., SAFA, M., ARUN, D. Comparative
Analysis of EasyOCR and TesseractOCR for Automatic License Plate Recognition
using Deep Learning Algorithm. 6th International Conference on Electronics,
Communication and Aerospace Technology, 2022.

ZHOU, X., YAO, C., WEN, H., WANG. Y., ZHOU, S., HE, W., LIANG, J. EAST: An
Efficient and Accurate Scene Text Detector. IEEE Conference on Computer
Vision and Pattern Recognition (CVPR), 5551-5560, 2017.

644
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Capítulo 9:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Visão Computacional
aplicada ao
reconhecimento e
sintetização de voz

e o código CRC UZDIGMX2.

Autores
Júlio César Leitão Júnior

Marcelo de Almeida Viana


Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.1. Introdução
Boas vindas ao capítulo Visão Computacional aplicada ao
reconhecimento e sintetização de voz, um conteúdo construído para levar
você ao campo da Visão Computacional, com um enfoque particular no

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
reconhecimento e na síntese de voz.

Este tema explora as interações avançadas de como as máquinas


processam e respondem à voz humana, utilizando técnicas de Inteligência
Artificial para realizar tarefas complexas que simulam a inteligência humana.

Neste capítulo será abordado os fundamentos do reconhecimento e da


síntese de voz, passando desde os conceitos básicos até suas aplicações
práticas. O capítulo fornece uma compreensão abrangente sobre como as
máquinas captam, interpretam e respondem a estímulos sonoros,
apresentando informações de forma clara e compreensível.

O conteúdo começa com uma "introdução ao reconhecimento e


sintetização de voz", em que será destacado a importância e os fundamentos
do processamento de voz. Esta seção estabelece uma base sólida para entender
como os sons são captados, processados e transformados por sistemas de
Visão Computacional e IA. e o código CRC UZDIGMX2.

Em seguida, serão trabalhados os tipos de classificação e sinais de áudio,


além de técnicas de extração de recursos. Enfatizamos a relevância de dados de
alta qualidade e as técnicas para extrair informações valiosas do áudio,
considerando as nuances e complexidades dos sons humanos.

O capítulo avança detalhando os métodos pelos quais as técnicas de


Aprendizado de Máquina são aplicadas para analisar e gerar fala., explorando
tanto o reconhecimento de voz, incluindo a conversão de fala para texto, quan-

646
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

to a síntese de voz, que transforma texto em fala natural. Além disso, serão
apresentadas as bibliotecas de programação e ferramentas utilizadas nesses
processos.

Também será discutido os "desafios no reconhecimento de voz", destacando


os obstáculos enfrentados pelos sistemas de IA, como ruídos de fundo,

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
variações de sotaque e a complexidade da linguagem natural.

Ao final deste capítulo, você deverá não apenas ter compreendido os


conceitos fundamentais da Visão Computacional aplicada ao reconhecimento e
sintetização de voz, mas também terá adquirido habilidades práticas para
enfrentar os desafios no campo da IA.

e o código CRC UZDIGMX2.

647
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.2. Inspirar
Você já considerou a extraordinária evolução da Visão Computacional
aplicada ao reconhecimento e síntese de voz? Esta tecnologia está
revolucionando a forma como interagimos com máquinas e sistemas, sendo

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
amplamente utilizada por instituições para aprimorar a segurança, personalizar
experiências do usuário e até mesmo auxiliar na acessibilidade.

Imagine a habilidade de um sistema computacional em não apenas


reconhecer diferentes vozes humanas, mas também em sintetizá-las? Essa
capacidade permite uma variedade de aplicações, desde assistentes virtuais até
sistemas de alerta em emergências.

Neste estudo, será explorado os aspectos técnicos dessa tecnologia e


entender como ela é integrada para criar soluções inovadoras que melhoram a
eficiência em diversos setores. No campo do reconhecimento de voz, sistemas
avançados são capazes de identificar um indivíduo específico pela sua voz,
tornando-se ferramentas valiosas em áreas como segurança e autenticação de
identidade.

Essa tecnologia pode ser usada, por exemplo, para garantir que apenas
pessoas autorizadas acessem informações sensíveis ou locais restritos. Além e o código CRC UZDIGMX2.

disso, o reconhecimento de voz está transformando o atendimento ao cliente,


permitindo que sistemas automatizados respondam a perguntas e resolvam
problemas de forma eficiente e personalizada.

A síntese de voz, por outro lado, está revolucionando a interação


humano-computador, tornando possível que máquinas “falem” de maneira
natural e fluente. Isso é especialmente útil em assistentes virtuais, dispositivos
de acessibilidade para pessoas com deficiência visual ou auditiva, e até mesmo
na indústria do entretenimento, em que a voz sintetizada pode criar experiência-

648
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

as imersivas e personalizadas.

Este capítulo irá apresentar maneiras práticas de como aplicar os


conhecimentos adquiridos em Visão Computacional para reconhecimento e
síntese de voz, adaptando-os a contextos específicos.

O objetivo é guiar o desenvolvimento de soluções eficientes em um mundo

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
cada vez mais tecnológico, explorando as múltiplas aplicações dessa tecnologia
que podem aprimorar significativamente operações em variados ambientes.

Antes de iniciarmos a "Etapa de Conceitualização" na qual


haverá a apresentação do conteúdo e a experimentação dos
conceitos trabalhados por meio de atividades práticas, entre no
Google Sala de Aula, na aba "Etapa Inspirar", para acessar todos
os materiais disponibilizados, que visam a estimular sua reflexão e
iniciar a ambientação com o conteúdo deste capítulo.

Como última atividade desta etapa, prepare-se para trabalhar a


solução inicial do estudo de caso que será apresentado na
próxima seção.
e o código CRC UZDIGMX2.

A solução inicial que você elaborará não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos apresentados e a
entender como trabalhá-los de maneira prática.

649
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.2.1. Estudo de Caso - Software assistente


para reconhecimento de comandos de voz
O escopo deste estudo é explorar como a análise meticulosa das demandas
de suporte técnico e a incorporação de tecnologias avançadas de Inteligência

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Artificial podem conduzir à criação de um assistente de voz inteligente
transformador, projetado especificamente para atender às necessidades de
suporte técnico remoto de uma renomada empresa de tecnologia.

A implementação deste assistente de voz tem o potencial de redefinir o


padrão de suporte ao cliente no setor tecnológico, fornecendo à Facti
informações preciosas sobre a eficácia da assistência prestada e as preferências
dos clientes. Tais dados serão fundamentais para aperfeiçoar continuamente as
estratégias de suporte técnico, assegurando que sejam mais adaptáveis,
eficientes e alinhadas às expectativas dos clientes.

Leia com atenção o cenário do estudo de caso e lembre-se: o

e o código CRC UZDIGMX2.


propósito desta atividade é promover uma reflexão inicial acerca do
assunto a ser discutido no cenário tendo por base somente os
conhecimentos de que você dispõe neste momento.

9.2.1.1. Cenário
Uma renomada empresa de tecnologia, que mantém seu nome em sigilo

650
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

por razões contratuais, procurou a Facti, como uma Instituição Científica e


Tecnológica (ICT) Privada, com um projeto desafiador e inovador. Esta empresa,
conhecida por seu compromisso com a vanguarda tecnológica, enfrenta um
desafio crescente em fornecer suporte técnico remoto eficaz e de alta qualidade
para sua ampla base de clientes globais.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O projeto consiste no desenvolvimento de um software para um assistente
de voz inteligente. O objetivo principal é que este assistente possa compreender
com precisão e responder a comandos de voz em tempo real, oferecendo
soluções técnicas imediatas e personalizadas.

A intenção é não apenas melhorar a eficiência do suporte remoto aos clientes,


mas também proporcionar uma experiência interativa mais satisfatória e
humanizada.

Além disso, uma funcionalidade deste assistente de voz é sua capacidade de


transcrever automaticamente todas as interações com os clientes. Essa
transcrição será vital para a análise de dados posterior, permitindo uma
recuperação eficiente de informações e um controle de qualidade aprimorado.

A empresa pretende utilizar esses dados para refinar continuamente seus


serviços e produtos, bem como para entender melhor as necessidades e

e o código CRC UZDIGMX2.


preferências de seus clientes.

Diante deste cenário, a Facti é desafiada a apresentar uma proposta para um


algoritmo de Aprendizado de Máquina de ponta, que possa não apenas
identificar e interpretar comandos de voz com uma alta taxa de precisão, mas
também aprender com as interações passadas para aprimorar continuamente
seu desempenho.

O algoritmo deve ser capaz de lidar com variações na fala, como diferentes
sotaques, modulações e ambiguidades linguísticas, garantindo assim uma
interação eficaz com uma base de clientes global e diversificada.

651
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

A colaboração entre a empresa de tecnologia e a Facti promete não apenas


revolucionar o suporte ao cliente no setor de tecnologia, mas também
estabelecer novos padrões para assistentes de voz inteligentes no futuro.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
9.2.1.2. Decisões tecnológicas
O objetivo será construir um algoritmo de reconhecimento de voz para a
Facti e, para isto, vamos precisar tomar algumas decisões de negócio.

1. Qual linguagem de programação utilizar?


2. Como será o desenvolvimento do algoritmo, qual ambiente de programação
será utilizado?
3. Quais as bibliotecas de programação disponíveis para realizar o
reconhecimento de voz?

Importante: coloque a sua resposta na atividade

e o código CRC UZDIGMX2.


"Apresentação da solução inicial", no Google Sala de Aula, em
um documento no formato de texto. Utilize este momento para
trabalhar as suas ideias iniciais com o máximo de detalhamento que
puder. Mais adiante, as suas anotações serão retomadas para o
refinamento da solução do estudo de caso.

652
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.3. Conceitualizar
9.3.1. Introdução ao reconhecimento e
sintetização de voz

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
São frequentes as situações em que as pessoas necessitam assegurar sua
autenticidade, como na realização de transações bancárias, identificação em
empresas, aeroportos e a biometria é um dos métodos empregados como meio
de identificação mais utilizados. Existem diversas características biológicas que
podem ser utilizadas em um processo de identificação, dentre as principais
tem-se: impressão digital, retina, íris, geometria da mão, face, voz e assinatura
(Carlos Jr, 2011).

O reconhecimento de voz, também conhecido como reconhecimento


automático de fala (ASR, Automatic Speech Recognition), é uma tecnologia que
permite que um sistema de computador interprete e converta a fala humana em
texto ou comandos compreensíveis pela máquina. É uma área da ciência da
computação que se concentra em entender e transcrever a linguagem falada em
formato escrito (Hilleshein, 2018).
e o código CRC UZDIGMX2.

O objetivo principal do reconhecimento de voz é permitir a interação entre


humanos e computadores por meio da fala, eliminando a necessidade de
entrada de texto por meio de teclado ou toque. Essa tecnologia desempenha um
papel fundamental em várias aplicações, como assistentes virtuais, sistemas de
resposta de voz interativa, controle de dispositivos por voz, transcrição
automática, legendagem em tempo real, entre outros.

O processo de reconhecimento de voz envolve a captura do sinal de áudio


contendo a fala, a segmentação em unidades significativas (como fonemas ou

653
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

palavras) e a correspondência dessas unidades com palavras ou frases em um


vocabulário conhecido. Esse processo pode ser realizado por meio de diferentes
técnicas e algoritmos, incluindo abordagens baseadas em padrões e
Aprendizado de Máquina (Hilleshein, 2018).

O reconhecimento de voz baseado em padrões utiliza técnicas de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
processamento de sinal para extrair características acústicas da fala e
compará-las a modelos pré definidos, como Modelos Ocultos de Markov (HMMs)
ou Modelos de Mistura Gaussiana (GMMs), para identificar as palavras faladas.

Já o reconhecimento de voz baseado em Aprendizado de Máquina utiliza de


algoritmos, como redes neurais artificiais, para treinar modelos capazes de
reconhecer a fala por meio do processamento de grandes volumes de dados de
treinamento (Martins, 2020).

Embora o reconhecimento de voz tenha avançado consideravelmente nos


últimos anos, ainda enfrenta desafios, como a variação da fala em diferentes
contextos, ruído de fundo, sotaques e entonações. No entanto, o constante
aprimoramento das técnicas de IA e o aumento da disponibilidade de dados têm
impulsionado o desenvolvimento de sistemas de reconhecimento de voz mais
precisos e eficientes.

e o código CRC UZDIGMX2.


No geral, o reconhecimento de voz desempenha um papel importante na
automação de tarefas, na melhoria da acessibilidade, na criação de interfaces
mais naturais e na facilitação da interação entre humanos e máquinas.

A síntese de voz, também conhecida como text-to-speech (TTS), é uma


tecnologia que converte texto escrito em voz artificialmente gerada. É um
processo pelo qual um sistema de computador recebe um texto como entrada e
produz um áudio que simula a fala humana.

Primeiro, o texto é processado por um motor de síntese de voz, que analisa a


estrutura linguística, como a sintaxe e a prosódia, para determinar como o

654
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

texto deve ser vocalizado. Em seguida, são aplicadas técnicas de Processamento


de Linguagem Natural e modelagem acústica para gerar os sons da fala
correspondentes ao texto (Fernandez, 2021).

Existem diferentes abordagens para a síntese de voz. Alguns sistemas


utilizam a concatenação de fragmentos de fala gravados previamente, em que

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
uma biblioteca de unidades sonoras é construída a partir da gravação de vozes
humanas e, posteriormente, essas unidades são combinadas para formar o
áudio desejado.

Outros sistemas utilizam a síntese de voz por modelagem, em que modelos


estatísticos ou redes neurais são treinados com grandes conjuntos de dados de
fala humana para aprender padrões e características da fala, permitindo a
geração de voz artificial a partir do texto (Ostermann Filho, 2002).

Os avanços recentes na síntese de voz têm permitido a criação de vozes mais


naturais e expressivas. As técnicas de Aprendizado de Máquina e Inteligência
Artificial têm desempenhado um papel importante no desenvolvimento de
sistemas de síntese de voz de alta qualidade. A personalização da voz também é
possível, em que é viável adaptar a síntese de voz para se assemelhar a uma voz
específica ou alterar características como tom, entonação e ritmo (Ostermann
Filho, 2002).
e o código CRC UZDIGMX2.

A síntese de voz tem diversas aplicações práticas, como assistentes virtuais,


sistemas de navegação por voz, audio livros, legendagem de conteúdo,
acessibilidade para pessoas com deficiência visual e atendimento ao cliente
automatizado. Ela facilita a comunicação e interação entre humanos e máquinas,
tornando a informação mais acessível e permitindo uma experiência mais
natural e intuitiva.

É uma tecnologia que converte texto em fala artificial, utilizando técnicas de


PLN, modelagem acústica e Aprendizado de Máquina. Ela desempenha um pa-

655
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

pel importante em várias aplicações e contribui para a criação de interfaces de


comunicação mais eficazes e inclusivas (Ostermann Filho, 2002).

Em resumo, o reconhecimento de voz e a síntese de voz são duas


tecnologias relacionadas, mas distintas, que estão envolvidas na interação entre
humanos e computadores por meio da fala. A principal diferença entre elas

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
reside na direção do processamento, o reconhecimento de voz lida com a
entrada de fala e a converte em texto, enquanto a síntese de voz faz o oposto,
convertendo texto em fala artificial.

Sobre este tema, em aspectos gerais, reflita:

Como o reconhecimento de voz transformou a maneira como


interagimos com a tecnologia?

Quais são os principais desafios técnicos no desenvolvimento de


sistemas eficazes de reconhecimento de voz?

Qual é o futuro do reconhecimento e da sintetização de voz,

e o código CRC UZDIGMX2.


considerando as tendências tecnológicas atuais?

E agora, sobre o seu cotidiano, pense:

Como o reconhecimento de voz mudou a forma como realizamos


tarefas diárias, por exemplo, enviar mensagens ou fazer pesquisas
online?

De que maneira a sintetização de voz pode melhorar a experiência


de consumo de conteúdo, como ouvir notícias ou livros?

656
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.3.2. Características e processo de


extração de áudio
Um sinal de áudio é uma representação das variações de pressão sonora ao
longo do tempo. É um sinal contínuo que carrega informações sobre as

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
características acústicas de uma fonte sonora, como uma voz, uma música ou
qualquer outro som. São amplamente utilizados em várias aplicações, como
comunicação por telefone, transmissão de rádio, música, gravação de voz,
sistemas de reconhecimento de fala e síntese de voz (Covo, 2016).

Quando um objeto vibra, as moléculas de ar oscilam para frente e para trás a


partir de sua posição de repouso e transmitem sua energia para as moléculas
vizinhas. Isso resulta na transmissão de energia de uma molécula para outra,
que por sua vez produz uma onda sonora. As partes em que o ar é empurrado
para mais perto são chamadas de compressões, e as partes em que ele é
empurrado para longe são chamadas de rarefações. Essas ondas que
atravessam o espaço usando compressões e rarefações são chamadas de ondas
longitudinais (Covo, 2016).

Essas variações de pressão são o que cria as oscilações de uma onda sonora

e o código CRC UZDIGMX2.


e são captadas por dispositivos de gravação, como um microfone e podem ser
armazenadas ou processadas digitalmente, sendo representadas como uma
forma de onda, em que o eixo horizontal representa o tempo e o eixo vertical
representa a amplitude do sinal.

A amplitude do sinal de áudio varia de acordo com a intensidade do som em


diferentes pontos no tempo. Quando um som é mais intenso, a amplitude do
sinal de áudio correspondente é maior e quando o som é menos intenso, a
amplitude é menor (Covo, 2016).

657
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Compressão e rarefação são termos utilizados para descrever as variações


de pressão em um sinal de áudio. Eles estão relacionados ao conceito de ondas
sonoras e ao comportamento das partículas do meio em que o som se propaga.
No caso de um sinal de áudio contínuo, essas compressões e rarefações
ocorrem repetidamente ao longo do tempo, formando uma forma de onda
(Costa, 2014).

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
A sequência de compressões e rarefações é o que permite a transmissão do
som de uma fonte sonora para o ouvinte. Ao propagar-se através de um meio,
como o ar, as ondas sonoras geradas pelas compressões e rarefações causam a
vibração das partículas, resultando em um padrão de pressão que é detectado
pelo ouvido humano, permitindo a percepção do som (Costa, 2014).

● Compressão: é o momento em que as partículas do meio são pressionadas


juntas, resultando em uma região de alta pressão. Durante a compressão, as
partículas vibram mais próximas umas das outras, aumentando a densidade
do meio. Isso causa um aumento momentâneo na pressão do sinal de áudio.
● Rarefação: ocorre quando as partículas do meio se afastam, resultando em
uma região de baixa pressão. Durante a rarefação, as partículas se afastam
umas das outras, diminuindo a densidade do meio. Isso causa uma
diminuição momentânea na pressão do sinal de áudio.
e o código CRC UZDIGMX2.
Esses conceitos de compressão e rarefação são fundamentais para entender
como as ondas sonoras se comportam e como o áudio é capturado e
reproduzido em sistemas de gravação e reprodução de som.

Assim, algumas características de uma onda sonora são:

● Amplitude: refere-se ao deslocamento máximo das moléculas de ar da


posição de repouso;
● Crista e vale: a crista é o ponto mais alto da onda, enquanto o vale é o
ponto mais baixo;

658
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Comprimento de onda: a distância entre 2 cristas ou vales sucessivos é


conhecida como comprimento de onda;
● Ciclo: todo sinal de áudio percorre a forma de ciclos. Um movimento
ascendente completo e um movimento descendente do sinal formam um
ciclo;
● Frequência: A frequência refere-se à velocidade com que um sinal está

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
mudando ao longo de um período de tempo;
● Velocidade do som: é a velocidade com que a onda sonora se propaga
através do meio;
● Harmônicos: muitos sons complexos, como instrumentos musicais,
possuem componentes de frequência adicionais chamados harmônicos.
Esses são múltiplos inteiros da frequência fundamental e contribuem para a
qualidade e timbre do som.

9.3.2.1. Tipos de classificação de áudio


A classificação de dados acústicos envolve o agrupamento ou rotulagem de
diferentes tipos de sinais de áudio com base em suas características acústicas.
Essa tarefa é comumente realizada por algoritmos de Aprendizado de Máquina e
pode ter várias aplicações como, por exemplo, classificação de espécies de e o código CRC UZDIGMX2.

animais, eventos ambientais, falhas em máquinas, emoções na fala e idiomas


(Silva, 2021).

A classificação de som ambiente refere-se à tarefa de categorizar e


identificar diferentes tipos de sons encontrados no ambiente ao nosso redor.
Essa classificação é importante em várias aplicações, como sistemas de
monitoramento acústico, análise de áudio e reconhecimento de eventos
sonoros. Alguns exemplos de classificação de som ambiente temos ruídos
urbanos, eventos naturais (chuvas, trovões, vento, ondas do mar, etc.), eventos

659
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

domésticos, eventos de segurança e transporte. A classificação de som ambiente


envolve o uso de algoritmos de processamento de sinais e técnicas de
Aprendizado de Máquina, em que características acústicas dos sons, como
frequência, intensidade, padrões temporais e texturas sonoras, são extraídas e
utilizadas para a classificação. Essa classificação pode ser realizada em tempo
real, em dispositivos embarcados ou em sistemas de análise de grandes

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
volumes de dados de áudio (Franchin, 2007).

A classificação musical refere-se à tarefa de categorizar e identificar


diferentes tipos de músicas com base em suas características. Essa classificação
é útil em várias aplicações, como sistemas de recomendação musical,
organização de bibliotecas musicais, análise de tendências musicais,
identificação de gêneros musicais, emoções musicais, artistas ou bandas,
instrumentos e estilos musicais. A classificação musical geralmente envolve a
extração de características acústicas ou simbólicas das músicas, que podem
incluir informações sobre ritmo, melodia, harmonia, timbre e estrutura.
Algoritmos de Aprendizado de Máquina, como redes neurais, árvores de decisão
e métodos estatísticos, podem ser aplicados para treinar modelos de
classificação com base nessas características e realizar a classificação de novas
músicas (Magalhães, 2013).

A classificação de linguagem natural refere-se à tarefa de categorizar ou e o código CRC UZDIGMX2.

rotular textos ou documentos em diferentes categorias com base no seu


conteúdo ou significado. Essa classificação é amplamente utilizada em
Processamento de Linguagem Natural para uma variedade de aplicações, como
filtragem de spam, análise de sentimentos, detecção de tópicos, categorização
de documentos e classificação de intenções em chatbots. A classificação de
linguagem natural geralmente envolve o uso de algoritmos de Aprendizado de
Máquina, como algoritmos de classificação Supervisionada, como Naive Bayes,
árvores de decisão, máquinas de vetores de suporte (SVM) e redes neurais.

660
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Esses algoritmos são treinados em conjuntos de dados rotulados, nos quais


os textos são previamente categorizados. Durante o treinamento, os algoritmos
aprendem padrões e características relevantes para a classificação e, em
seguida, podem ser aplicados a novos textos para realizar a classificação.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
9.3.2.2. Tipos de sinais de áudio
Um sinal de áudio analógico é uma representação contínua e física do som.
Ele é gerado por meio de variações elétricas ou mecânicas que correspondem às
características da onda sonora original. Um sinal analógico é contínuo no tempo
e na amplitude, ou seja, pode assumir qualquer valor dentro de uma faixa
contínua. Os sinais de áudio analógicos são utilizados em tecnologias mais
antigas, como toca-discos, fitas cassete e rádios FM (Pinto, 2018).

Já um sinal de áudio digital é uma representação discretizada do som, que é


convertido em uma sequência de números digitais.

Esse processo envolve a amostragem do sinal analógico em intervalos


regulares de tempo e a quantização da amplitude em valores discretos. Os
valores amostrados são então codificados em formato digital, geralmente

e o código CRC UZDIGMX2.


utilizando-se uma representação binária. Durante o processo de amostragem, o
sinal analógico é mantido no domínio do tempo e cada amostra representa a
amplitude do sinal em um momento específico (Pinto, 2018).

As amostras são armazenadas como números digitais, geralmente


utilizando-se uma representação binária de bits. O número de bits usado para
representar cada amostra é chamado de resolução ou profundidade de bits e
afeta a qualidade e a faixa dinâmica do áudio digital resultante. O sinal digital
resultante é uma sequência de números que pode ser armazenada, processada
e transmitida por meio de dispositivos digitais como CDs, arquivos MP3 e trans-

661
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

missões de áudio via Internet (Pinto, 2018).

A principal diferença entre os dois tipos de sinal está na forma como a


informação é representada e processada. Enquanto o sinal analógico é uma
representação contínua e direta do som, o sinal digital é uma representação
discretizada e codificada em valores numéricos.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
O uso de sinais de áudio digital traz vantagens como a facilidade de
armazenamento, a capacidade de processamento e a capacidade de transmitir e
reproduzir áudio com alta fidelidade. Além disso, sinais digitais podem ser
facilmente manipulados e processados por meio de algoritmos de
processamento de sinais, permitindo uma ampla gama de aplicações em
tecnologias modernas de áudio.

9.3.2.3. Extração de recursos


A extração de recursos de um sinal de áudio envolve a identificação e
extração de características relevantes do áudio, com o objetivo de representar e
descrever o conteúdo do sinal de forma mais eficiente e informativa. Esses
recursos são usados em várias aplicações de processamento de áudio, como

e o código CRC UZDIGMX2.


reconhecimento de fala, classificação de áudio e análise musical (Ribeiro, 2018).
Algumas das características comumente extraídas de um sinal de áudio:

● Domínio do tempo: é uma representação de um sinal de áudio em relação


ao tempo (Figura 280). Ele mostra como as características do sinal variam ao
longo do tempo e é uma das formas mais básicas de visualização e análise
de um sinal de áudio. Além da visualização, a análise no domínio do tempo
também envolve a extração de informações e características do sinal de
áudio. Isso pode incluir a detecção de eventos, a identificação de padrões, a
segmentação do áudio em partes distintas e a medição de parâmetros como
duração, intensidade e taxa de variação;
662
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 280: Sinal no domínio do tempo.
Fonte: adaptado de Deckmann e Pomilio (2020).

● Domínio da frequência: é uma forma de representar um sinal de áudio com


base nas suas componentes de frequência (Figura 281). Enquanto o domínio
do tempo mostra como a amplitude do sinal varia ao longo do tempo, o
domínio da frequência revela as diferentes frequências presentes no sinal. A
análise no domínio da frequência é baseada na Transformada de Fourier,
que converte um sinal de áudio do domínio do tempo para o domínio da
frequência. Essa transformação permite decompor o sinal em suas
componentes de frequência individuais, revelando informações sobre a
distribuição espectral do áudio;

e o código CRC UZDIGMX2.

Figura 281: Sinal no domínio da frequência.


Fonte: adaptado de Deckmann e Pomilio (2020).

663
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

● Espectrograma: é uma representação visual do espectro de frequência de


um sinal de áudio ao longo do tempo. Ele mostra como as diferentes
frequências estão presentes no sinal em cada instante de tempo, fornecendo
informações detalhadas sobre as características espectrais do áudio. Para
criar um espectrograma, o sinal de áudio é dividido em pequenos
segmentos de tempo chamados de janelas. Em cada janela, uma

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
transformação de Fourier é aplicada para obter a representação das
componentes de frequência presentes naquele intervalo de tempo. O
resultado é então plotado como um gráfico bidimensional, em que o eixo
horizontal representa o tempo e o eixo vertical representa a frequência.

Figura 282: Espectrograma de áudio.

e o código CRC UZDIGMX2.


Fonte: Rossini (2018).

● Mel-Frequency Cepstral Coefficients (MFCC): são coeficientes amplamente


utilizados na área de processamento de sinais de áudio e reconhecimento de
fala. Eles são derivados do espectro de frequência de um sinal de áudio e
fornecem uma representação compacta das características espectrais do
áudio. A extração de MFCC envolve várias etapas como: pré-ênfase, janela de
Hamming, Transformada de Fourier, escala de Mel, banco de filtros Mel,
logaritmo, Transformada Cepstral e coeficientes MFCC. Todos estes
parâmetros capturam características espectrais do sinal de áudio de forma

664
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

compacta e são amplamente utilizados como recursos para o


reconhecimento de fala, classificação de áudio e outras tarefas de
processamento de áudio. Eles são robustos em relação a variações de
frequência e têm demonstrado serem eficazes na representação das
propriedades acústicas e fonéticas do áudio.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Dada a abordagem, reflita:

Quais são as características únicas do áudio que o tornam um


meio complexo para processamento e análise?

De que maneiras os diferentes tipos de classificação de áudio são


aplicados em cenários reais, como em sistemas de reconhecimento de
voz ou identificação de música?

De que forma o avanço da tecnologia de processamento de áudio


tem impactado a indústria de entretenimento, comunicação e
segurança?

Como os avanços na extração de recursos de áudio podem e o código CRC UZDIGMX2.

contribuir para melhorias em sistemas de saúde, como na


monitorização de pacientes ou diagnósticos baseados em som?

Essas perguntas podem ajudar você a aprofundar a compreensão


sobre as nuances do processamento de áudio, incluindo as técnicas de
extração e classificação, bem como as diversas aplicações práticas e
desafios associados a esses métodos.

665
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.3.3. Como o Aprendizado de Máquina


reconhece e sintetiza voz
O Aprendizado de Máquina, especialmente no campo do Processamento de
Linguagem Natural e reconhecimento de voz, tem feito avanços significativos no

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
reconhecimento e síntese de voz. Esses avanços são possíveis graças a
algoritmos sofisticados e a bibliotecas especializadas que facilitam o
desenvolvimento de aplicações de áudio.

Além disso, a disponibilidade de grandes conjuntos de dados de voz e texto


tem permitido o treinamento de modelos mais precisos e eficientes. Técnicas
como redes neurais profundas, aprendizado de transferência e aprendizado
supervisionado têm sido fundamentais para melhorar a precisão do
reconhecimento de voz e a naturalidade da síntese de voz.

A integração de sistemas de PLN com avançadas técnicas de Aprendizado de


Máquina também tem permitido a criação de assistentes virtuais e sistemas de
resposta automática mais inteligentes e responsivos. Esses sistemas são capazes
de entender e responder a comandos de voz em linguagem natural, tornando a
interação com dispositivos e serviços tecnológicos mais intuitiva e acessível.

e o código CRC UZDIGMX2.


Ademais, o uso de modelos de atenção e redes neurais generativas tem
aberto novas fronteiras para a síntese de voz, permitindo a criação de vozes
sintéticas que são quase indistinguíveis das humanas, tanto em termos de
entonação quanto de emoção.

9.3.3.1. Reconhecimento de voz


O reconhecimento de voz envolve a conversão de fala em texto, um proces-

666
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

só que é geralmente alcançado por meio de modelos de Aprendizado de


Máquina treinados em grandes conjuntos de dados de áudio e texto
correspondente.

Esses modelos aprendem a mapear características acústicas da fala para


unidades linguísticas como palavras ou fonemas. Este processo é aprimorado

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
por técnicas avançadas como redes neurais profundas, que podem capturar
nuances complexas da linguagem falada.

Além disso, a integração de modelos de linguagem, que entendem a


estrutura e a semântica da linguagem, melhora significativamente a precisão do
reconhecimento. Esses sistemas são capazes de lidar com diversos sotaques,
dialetos, e variações na velocidade da fala, tornando-os cada vez mais robustos
em ambientes reais.

A evolução na capacidade de processamento e a disponibilidade de poder


computacional também têm sido fundamentais, permitindo o treinamento de
modelos mais complexos e a sua implantação em uma variedade de
dispositivos, desde smartphones até sistemas em nuvem.

Avanços em técnicas de Aprendizado Semi-Supervisionado e não


supervisionado estão abrindo caminhos para o treinamento de modelos de

e o código CRC UZDIGMX2.


reconhecimento de voz com menos dados anotados, reduzindo a barreira para o
desenvolvimento de sistemas de reconhecimento de voz em idiomas e dialetos
menos representados.

● Pré-processamento de áudio: esta etapa é crucial para melhorar a


qualidade do sinal de áudio e inclui técnicas como filtragem de ruído,
normalização do volume e segmentação de áudio. O objetivo é preparar o
áudio para uma análise mais eficaz.
● Extração de características: aqui, características representativas são
extraídas do áudio. O MFCC é comumente usado por capturar a forma como

667
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

o ouvido humano percebe o som. Outras técnicas incluem espectrogramas e


o uso de log-Mel energias.

● Modelagem acústica: modelos como redes neurais profundas (DNNs),


redes neurais convolucionais (CNNs) e redes neurais recorrentes (RNNs),
incluindo suas variantes como LSTM (Long Short-Term Memory), são usados

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
para mapear as características acústicas para unidades linguísticas. Esses
modelos são treinados com enormes conjuntos de dados de áudio e seus
transcritos correspondentes.
● Decodificação: a saída do modelo acústico é então transformada em uma
sequência de palavras. Isso geralmente envolve o uso de modelos de
linguagem, que ajudam a garantir que a transcrição final faça sentido no
contexto da linguagem.

9.3.3.2. Síntese de voz


A síntese de voz, conhecida também como TTS (text-to-speech), tem como
objetivo produzir fala natural e inteligível a partir de texto. Esse processo
envolve várias etapas, desde a análise e interpretação do texto até a geração do

e o código CRC UZDIGMX2.


sinal de áudio final. Avanços significativos nesta área foram alcançados graças
ao uso de técnicas de Aprendizado de Máquina, especialmente redes neurais
profundas.

Modelos como o Tacotron e o WaveNet demonstram uma capacidade notável


de gerar fala que não só soa natural em termos de pronúncia, mas também
captura nuances como entonação, ritmo e emoção. Esses modelos conseguem
interpretar o contexto e a estrutura gramatical do texto para produzir uma fala
coerente e fluida.

Há também um esforço contínuo para tornar a síntese de voz mais

668
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

personalizável e adaptável a diferentes contextos. Isso inclui a capacidade de


modificar características da voz, como tom, velocidade e sotaque, o que é
particularmente útil em aplicações que exigem a adaptação da voz a diferentes
personagens ou contextos.

Com a evolução das técnicas de Aprendizado de Máquina e a disponibilidade

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
de dados de treinamento mais diversificados, a síntese de voz está se tornando
cada vez mais sofisticada, permitindo aplicações em áreas como assistentes
virtuais, leitura de textos para pessoas com deficiência visual, sistemas de
navegação GPS e até em jogos e entretenimento, em que a capacidade de gerar
vozes realistas e expressivas abre novas possibilidades para a interação entre
usuários e tecnologia.

● Processamento de texto: o primeiro passo é transformar o texto em uma


representação fonética, incluindo a determinação de entonação e ritmo. Isso
envolve a análise linguística do texto, incluindo a tokenização e a conversão
texto-para-fonema.
● Modelagem de fala: tecnologias avançadas como redes neurais profundas
são usadas para gerar o sinal de áudio. Modelos como o Tacotron criam uma
representação espectral do áudio, que é então convertida em ondas sonoras
por um vocoder, como o WaveNet. Estes modelos são capazes de gerar fala
que soa surpreendentemente natural e fluída. e o código CRC UZDIGMX2.

669
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.3.3.3. Atividade de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração das IDEs. Para as atividade propostas recomenda-se o uso
do Google Colab.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades não são provas e não


haverá correção formal por parte dos instrutores; o objetivo é a
autoaprendizagem e prática. As respostas e dicas de desenvolvimento
para cada atividade estão disponíveis em arquivos específicos no
Google Sala de Aula, na aba Etapa Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos

e o código CRC UZDIGMX2.


seguintes símbolos:

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

670
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 75 ●

Implemente um algoritmo, em Python, para realizar o reconhecimento de de


voz e análise de áudios diversos. Utilize a biblioteca SpeechRecognition para
reconhecer e transcrever voz em áudios de diferentes fontes, incluindo
gravações de microfone, arquivos de áudio e mensagens de voz. O objetivo é

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
familiarizar-se com a biblioteca, explorar diferentes métodos de reconhecimento
de voz e trabalhar com arquivos de áudio em diversos formatos. Utilize o
conjunto de arquivos disponibilizados no Google Sala de Aula.

Siga os passos a seguir para as atividades:

1. Inicie um novo projeto no Google Colab.


2. Instale as bibliotecas SpeechRecognition e PyAudio.
3. Explore a classe Recognizer da biblioteca SpeechRecognition, que oferece
métodos para reconhecer voz de diferentes APIs.
4. Teste o reconhecimento de voz em um áudio livro e analise o texto
transcrito.
5. Utilize gravação de voz pelo microfone (em ambientes locais) e
transcreva a voz capturada.
6. Transcreva e analise os resultados para diferentes fontes de áudio.

e o código CRC UZDIGMX2.

671
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.3.3.4. Bibliotecas e ferramentas


A frente da tecnologia de Processamento de Linguagem Natural, as ferramentas
e bibliotecas de análise de áudio, reconhecimento e síntese de voz em Python
estão impulsionando a evolução da interação entre humanos e máquinas. Essas
soluções especializadas são essenciais para o desenvolvimento de sistemas que

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
permitem comunicações mais naturais e intuitivas, além de desempenharem um
papel importante em aplicações que vão desde a assistência virtual até
tecnologias assistivas. Vamos explorar algumas das ferramentas e bibliotecas
mais influentes neste campo, destacando suas funcionalidades únicas e
aplicações práticas.

A biblioteca Librosa é um componente chave para análise de áudio em


Python. Ela permite a extração de características de áudio, como timbre, ritmo, e
tom, além de realizar análise espectral detalhada. A visualização de áudio
facilitada pela Librosa ajuda na interpretação e entendimento dos dados de
áudio.

Ela é útil no pré-processamento de dados para tarefas como reconhecimento


de voz, permitindo a limpeza e a padronização do áudio antes de ser processado
por algoritmos de Aprendizado de Máquina. Ela também encontra aplicações em
e o código CRC UZDIGMX2.
classificação de áudio e análise de música, em que características específicas do
áudio são identificadas e utilizadas para categorizar ou analisar faixas musicais.

TensorFlow e PyTorch são ferramentas para a construção e treinamento de


modelos de Aprendizado de Máquina, incluindo aqueles utilizados em
reconhecimento e síntese de voz. Ambas oferecem suporte avançado para redes
neurais profundas, que são essenciais para modelar e entender padrões
complexos em dados de áudio. O TensorFlow e PyTorch permitem a criação de
modelos que podem aprender a identificar e replicar as nuances da fala huma-

672
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

humana, tornando-os vitais para aplicações em reconhecimento de voz e


sistemas de resposta automatizada.

Já o Kaldi, é uma ferramenta específica para reconhecimento de voz,


amplamente utilizada em pesquisas acadêmicas e aplicações industriais. Ele foi
projetado para ser eficiente e preciso, oferecendo funcionalidades como treina-

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
mento de modelos de fala, alinhamento (sincronização de áudio com texto) e
decodificação (conversão do sinal de áudio em texto). Sua eficácia é evidente em
sistemas de reconhecimento de voz em que a precisão e a rapidez são críticas.

O ESPnet, combina as funcionalidades de reconhecimento de fala e síntese


de voz em uma única plataforma. Integrando as capacidades do PyTorch para
Aprendizado de Máquina e do Kaldi para reconhecimento de voz, o ESPnet é
uma ferramenta para o desenvolvimento de sistemas avançados de
Processamento de Linguagem Natural. Ela é especialmente útil para a criação de
sistemas que não apenas entendem a fala humana, mas também podem gerar
respostas faladas de maneira natural e fluente.

Estas tecnologias, impulsionadas pelo avanço contínuo em técnicas de


Aprendizado de Máquina, estão transformando a interação entre humanos e
máquinas, tornando-as mais naturais e intuitivas. Elas têm um papel

e o código CRC UZDIGMX2.


fundamental em diversas aplicações, desde assistentes virtuais e sistemas de
navegação até leitores de tela para pessoas com deficiência visual, expandindo
as fronteiras do que é possível em termos de automação e acessibilidade.

673
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Pense a respeito:

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
De que forma os avanços no Aprendizado de Máquina têm
contribuído para melhorar a precisão e naturalidade no
reconhecimento e na síntese de voz, e quais são os principais
desafios que ainda precisam ser superados?

Como o reconhecimento de voz está transformando as


interações humanas com a tecnologia e quais implicações isso tem
para a acessibilidade e a privacidade dos usuários?

De que maneira a síntese de voz está evoluindo para criar


experiências mais realistas e humanas, e quais são os impactos
potenciais dessa evolução na comunicação e no entretenimento?

Como a interação diária com assistentes virtuais e dispositivos


habilitados para voz, que utilizam Aprendizado de Máquina,
Reconhecimento e Síntese de Voz, influencia a maneira como
escolhemos e utilizamos ferramentas tecnológicas para e o código CRC UZDIGMX2.

comunicação e aprendizado em nosso cotidiano?

674
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.3.3.5. Atividades de experimentação

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IMPORTANTE: Antes de iniciar as atividades de experimentação, é
fundamental completar os passos anteriores relacionados à
configuração das IDEs. Para as atividade propostas recomenda-se o uso
do Google Colab.

Recomenda-se estudar o conteúdo dos tópicos anteriores para se


familiarizar com os temas que serão abordados nas atividades.

É importante esclarecer que estas atividades não são provas e não


haverá correção formal por parte dos instrutores; o objetivo é a
autoaprendizagem e prática. As respostas e dicas de desenvolvimento
para cada atividade estão disponíveis em arquivos específicos no
Google Sala de Aula, na aba Etapa Conceitualizar.

O nível de complexidade de cada atividade é indicado pelos

e o código CRC UZDIGMX2.


seguintes símbolos:

● Complexidade Baixa
●● Complexidade Média
●●● Complexidade Alta

Encorajamos a criação de suas soluções antes de consultar o


gabarito disponível, para maximizar o aprendizado.

675
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 76 ●●

Implemente um algoritmo, em Python, para análise de áudio com o modelo


YAMNet e TensorFlow. Utilize o modelo de classificação de áudio baseado em
redes neurais profundas disponível no TensorFlow Hub, para identificar e
classificar eventos sonoros em gravações de áudio. Você deverá explorar a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
manipulação de áudio com a biblioteca Librosa e visualizará espectrogramas
para entender as características do áudio. Utilize o conjunto de arquivos
disponibilizados no Google Sala de Aula.

Siga os passos a seguir para as atividades:

1. Inicie um novo projeto no Google Colab.


2. Instale as bibliotecas necessárias, incluindo tensorflow, tensorflow_hub e
librosa.
3. Carregue o modelo YAMNet do TensorFlow Hub, que é capaz de prever
521 eventos de áudio diferentes.
4. Explore o mapeamento das classes do modelo YAMNet, utilizando o
arquivo CSV fornecido com o modelo para obter os nomes das classes de
eventos de áudio.
5. Pré-processe os arquivos de áudio para adequá-los aos requisitos do
modelo YAMNet, normalizando as amostras para mono e 16 kHz.
e o código CRC UZDIGMX2.
6. Identifique os principais eventos de áudio no arquivo e visualizar os
dados de áudio e o espectrograma correspondente.
7. Monte o Google Drive e extrair um arquivo zip contendo amostras de
áudio para análise.
8. Aplique o pré-processamento e a análise YAMNet em um arquivo de
áudio de exemplo (como um som de buzina de carro) e visualizar os
resultados.

676
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Atividade de experimentação 77 ●●●

Implemente um algoritmo, em Python, para construir um modelo de rede


neural convolucional para reconhecimento de emoções em áudios. Utilizando
um conjunto de dados que inclui gravações de voz com diferentes emoções,
você deverá realizar uma análise exploratória de dados, extração de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
características, treinamento do modelo e avaliação do desempenho. O objetivo é
criar um modelo capaz de identificar a emoção expressa em um arquivo de
áudio. Utilize o conjunto de arquivos disponibilizados no Google Sala de Aula.

Siga os passos a seguir para as atividades:

1. Inicie um novo projeto no Google Colab.


2. Comece baixando e carregando os conjuntos de dados de expressões
faladas e cantadas. Os dados incluem gravações de diferentes emoções
e serão usados para treinar e testar o modelo.
3. Realize uma análise exploratória de dados para entender as
características dos arquivos de áudio, como duração, taxa de
amostragem e distribuição das emoções.
4. Extraia características dos arquivos de áudio usando os coeficientes
cepstrais de frequência mel (MFCCs).
5. Crie e treine um modelo de rede neural convolucional para classificar as
e o código CRC UZDIGMX2.
emoções nas gravações de voz. Ajuste os parâmetros do modelo e use
técnicas como dropout para melhorar o desempenho.
6. Avalie o desempenho do modelo utilizando métricas como matriz de
confusão e relatório de classificação. Analise quais emoções são mais
facilmente identificadas pelo modelo e quais apresentam maior
dificuldade.
7. Teste o modelo treinado com novos arquivos de áudio e visualize os
resultados, incluindo a exibição de waveforms e espectrogramas dos
áudios testados.

677
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.3.3.6. Desafios no reconhecimento de voz


O reconhecimento de voz tem se tornado uma tecnologia cada vez mais
presente no nosso dia a dia, com aplicações em assistentes virtuais, dispositivos
inteligentes, sistemas de segurança e muitas outras áreas. No entanto, como
qualquer tecnologia, o reconhecimento de voz enfrenta diversos desafios, tanto

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
técnicos quanto éticos.

Um dos principais desafios técnicos é a precisão na identificação e


interpretação das palavras. Diferentes sotaques, dialetos e variações na fala
podem dificultar o reconhecimento correto das palavras. Ruídos de fundo e
condições acústicas adversas podem também interferir na qualidade do áudio
captado, prejudicando a eficácia do reconhecimento.

Outro desafio técnico importante é a capacidade de entender a intenção e o


contexto em que as palavras são ditas. A interpretação de linguagem natural é
complexa e envolve não apenas o reconhecimento de palavras individuais, mas
também a compreensão de frases, expressões idiomáticas e a inferência de
significados implícitos.

Do ponto de vista ético, um dos maiores desafios é a privacidade e a

e o código CRC UZDIGMX2.


segurança dos dados. Sistemas de reconhecimento de voz frequentemente
coletam e armazenam grandes volumes de dados de voz, o que gera
preocupações sobre como esses dados são usados e protegidos.

Além disso, o avanço das técnicas de Inteligência Artificial tem dado origem
a uma nova preocupação: o deepfake de áudio. Deepfakes são manipulações
digitais avançadas que podem criar gravações de voz falsas, mas incrivelmente
realistas. Essas gravações podem ser usadas para imitar a voz de uma pessoa
específica e são capazes de enganar sistemas de reconhecimento de voz e até
mesmo seres humanos.

678
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

O uso de deepfakes de áudio pode ter implicações sérias, desde a


disseminação de informações falsas até fraudes e ataques cibernéticos. Por
exemplo, criminosos podem usar deepfakes para imitar a voz de uma autoridade
ou de um indivíduo conhecido para realizar golpes ou espalhar desinformação.

Para combater esses desafios, os desenvolvedores de sistemas de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
reconhecimento de voz estão trabalhando em melhorias na precisão do
reconhecimento, em algoritmos mais robustos contra interferências e ruídos, e
em sistemas mais sofisticados de compreensão de linguagem natural. Estão
sendo desenvolvidas técnicas para detectar e prevenir o uso mal-intencionado
de deepfakes de áudio.

Veja algumas abordagens que estão sendo exploradas para combater esses
problemas.

● Detecção de anomalias: algoritmos de IA são treinados para identificar


sutis diferenças entre áudios reais e sintetizados, como padrões de
respiração, nuances vocais e idiossincrasias na fala, que podem não ser
perfeitamente replicadas por deepfakes.
● Análise espectral: esta técnica envolve a análise do espectro de frequência
do áudio. Deepfakes muitas vezes deixam "assinaturas" no espectro que
podem ser detectadas.
e o código CRC UZDIGMX2.
● Blockchain e criptografia: para garantir a autenticidade de gravações,
algumas soluções propõem o uso de blockchain e criptografia para criar um
registro seguro e imutável de áudios legítimos.
● Educação e conscientização: informar o público sobre a existência de
deepfakes de áudio e como identificá-los pode ser uma ferramenta poderosa
na prevenção de seu uso mal-intencionado.
● Colaboração interinstitucional: a colaboração entre empresas de
tecnologia, instituições de pesquisa e órgãos governamentais é crucial para
o desenvolvimento de padrões e políticas eficazes contra a disseminação de

679
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

deepfakes de áudio.

● Legislação e políticas públicas: a criação de leis e regulamentações


específicas pode desempenhar um papel importante na prevenção do uso
mal-intencionado de deepfakes de áudio. Isso inclui a definição de
penalidades para a criação e disseminação de deepfakes prejudiciais, bem

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
como a proteção de vítimas.
● Autenticação de fontes: desenvolvimento de sistemas que verificam a
origem de gravações de áudio, assegurando que elas vêm de fontes
confiáveis e não foram alteradas.
● Aprimoramento contínuo de técnicas de detecção: à medida que as
técnicas de criação de deepfakes evoluem, as estratégias de detecção
também precisam ser continuamente atualizadas e aprimoradas para
manter sua eficácia.

Esses esforços são vitais para garantir a segurança e a integridade da


informação em uma era em que a tecnologia de deepfakes está se tornando cada
vez mais sofisticada e acessível. É um desafio constante que exige uma
combinação de inovação tecnológica, colaboração interdisciplinar, educação
pública e políticas adequadas para proteger indivíduos e sociedades contra os
riscos associados a deepfakes de áudio.
e o código CRC UZDIGMX2.
Em resumo, o reconhecimento de voz é uma tecnologia promissora com
muitas aplicações úteis, mas enfrenta desafios significativos, tanto no aspecto
técnico quanto no ético, especialmente no que diz respeito à privacidade dos
dados e ao risco representado pelos deepfakes de áudio.

680
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Neste momento, retorne ao Google Sala de Aula e, na aba


"Atividades", procure a seção intitulada "Etapa Conceitualizar".

Nessa área você encontrará uma série de links com materiais

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
que foram criteriosamente escolhidos e disponibilizados. Trata-se de
recursos que têm por objetivo apresentar informações adicionais e
insights, permitindo que você amplie e enriqueça o seu
conhecimento acerca dos temas discutidos neste capítulo.

Este momento final do capítulo deve lhe proporcionar reflexões


críticas a respeito do conteúdo abordado, ajudando na
compreensão e fixação do conteúdo.

e o código CRC UZDIGMX2.

681
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.4. Consolidar
9.4.1. Estudo de Caso
Você se lembra de como a Facti foi desafiada a criar um assistente de voz

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
inteligente para uma empresa de tecnologia, com o objetivo de melhorar o
suporte técnico remoto?

Este estudo de caso foca no desenvolvimento de um algoritmo avançado de


Aprendizado de Máquina para compreender e responder com precisão a
comandos de voz, visando otimizar a experiência de suporte ao cliente.

Inicialmente, releia com atenção o cenário do estudo de caso da


"Etapa Inspirar" e as suas anotações e conclusões iniciais. Na
sequência, você deverá promover o aprimoramento da solução
anteriormente apresentada usando os conhecimentos que obteve

e o código CRC UZDIGMX2.


ao longo do capítulo e do conteúdo adicional.

Lembre-se de que este aprimoramento não será objeto de


correção ou avaliação: trata-se de uma atividade individual que
deverá lhe ajudar a refletir sobre os conceitos que foram estudados
e a testar novos cenários e hipóteses, validando os seus resultados
práticos.

682
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.4.2. Proposta de implementação


Será preciso criar um MVP, Minimum Viable Product, expressão em inglês para
o menor conjunto de especificações que resolvam algum problema para o
cliente.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Para este MVP, será escolhida a linguagem de programação Python,
utilizando a biblioteca Librosa para reconhecimento de voz. O ambiente de
programação escolhido será o Google Colab IDE.

O objetivo será desenvolver um algoritmo para que ele tenha a melhor


solução para realizar o reconhecimento de comandos de voz.

9.4.3. Solução final do Estudo de Caso


Agora que estudamos as ferramentas essenciais para o desenvolvimento do
reconhecimento facial em imagens, chegou a hora de aplicarmos todo o
conteúdo de forma mais específica.

O nosso cliente, a Facti, solicitou uma solução para o reconhecimento de


comandos de voz e você, que acabou de receber o conteúdo do curso, está apto e o código CRC UZDIGMX2.

a propor uma solução. Primeiro será necessário realizar alguns passos para
iniciarmos nosso estudo de caso.

Começar a organizar a infraestrutura pelo banco de áudios de modelos


pré-treinados, que está disponível na aba “Atividades”, seção “Consolidar”, na
plataforma do Google Sala de Aula.

Faça o download do arquivo Material_complementar_reconhecimento_


voz.zip, salve-o em um diretório de fácil acesso, pois será preciso direcionar o

683
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

caminho para esta pasta dentro do seu Google Drive, para facilitar o acesso aos
documentos que serão utilizados durante o curso. Siga os seguintes passos para
realizar o upload desta pasta em seu Google Drive:

● Acesse o seu Google Drive no link: https://drive.google.com;


● Clique em “Meu Drive” e escolha a opção “Upload de arquivo”, conforme a

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Figura 283;
● Localize e selecione a pasta Material_complementar_reconhecimento_voz.zip
em seu computador para realizar o upload;
● Não é necessário descompactar os arquivos da pasta.

Figura 283: Upload da pasta Material_complementar_reconhecimento_voz.zip no Google Drive.


Fonte: adaptado de Google Drive.

Agora comece a criar o código. Como o Google Colab nos permite executar

e o código CRC UZDIGMX2.


trechos individuais do código (inserindo-os a cada célula criada) e a cada trecho
é possível codificar e testar o código por meio do comando “Executar” ou pelas
teclas de atalho “Ctrl + Enter”.

No Google Sala de Aula, na aba “Atividades”, na seção “Etapa Consolidar”,


há uma sugestão de solução para o estudo de caso e, a cada célula, trechos de
código podem ser executados. Atente-se às orientações para conseguir executar
o algoritmo, conforme constam no arquivo do Google Colab.

Neste estudo de caso, a Facti enfrenta o desafio de criar um assistente de


voz inteligente para uma empresa de tecnologia, visando aprimorar o suporte

684
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

técnico remoto. O objetivo era desenvolver um algoritmo avançado de


Aprendizado de Máquina capaz de compreender e responder com precisão a
comandos de voz, otimizando a experiência de suporte ao cliente.

Ao longo do estudo, será utilizado o dataset "Mini Speech Commands" para


treinar e avaliar um modelo de reconhecimento de voz. O processo começa com

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
a exploração de dados (EDA) para entender melhor o dataset, incluindo a
visualização da distribuição dos comandos e a duração das gravações de áudio.

Também é possível explorar visualmente os dados de áudio por meio de


forma de onda e espectrogramas, tanto de STFT (Transformada de Fourier de
Curto Termo) quanto de MFCCs (Coeficientes Cepstrais de Frequência Mel).

O pré-processamento envolve a extração de características MFCC de cada


arquivo de áudio, seguido pela criação de conjuntos de dados de treinamento,
validação e teste. O modelo, construído com o TensorFlow e Keras, inclui
camadas de convolução, pooling, dropout e normalização, apropriadas para o
processamento de sinais de áudio.

O modelo deve ser treinado por várias épocas, utilizando callbacks para
monitorar o progresso e salvar o melhor modelo. A avaliação do modelo deve
mostrar uma taxa de acerto significativa, e as métricas de precisão e perda são

e o código CRC UZDIGMX2.


visualizadas para entender melhor o desempenho ao longo do treinamento.

Finalmente, o modelo deve ser testado em arquivos de áudio reais, em que


deve ser de prever comandos com precisão. Uma matriz de confusão pode ser
usada para visualizar o desempenho do modelo em relação a cada comando.

O estudo de caso deve demonstrar a eficácia do Aprendizado de Máquina no


desenvolvimento de um assistente de voz inteligente, reconhecendo comandos
de voz com precisão, para aplicações em suporte técnico remoto e outras áreas
em que a interação por voz é crucial.

685
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Arquive o refinamento do estudo de caso no formulário disponível


no Google Sala de Aula, na aba “Etapa Consolidar”.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
e o código CRC UZDIGMX2.

686
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

9.5. Avaliar
Para concluir este capítulo, você deverá realizar a “Etapa Avaliar”, que
consiste no preenchimento do Questionário de Avaliação disponível no Google
Sala de Aula e que tem como objetivo permitir que você acompanhe

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
individualmente a evolução do seu aprendizado.

Não será atribuída nota para a atividade, mas a sua entrega é obrigatória,
pois, acima de tudo, servirá como insumo para uma análise pessoal e também
para a realização de autocrítica a respeito dos pontos compreendidos e daqueles
que exigem maior dedicação.

O formulário salvará as respostas de forma automática e, por isso, pode ser


iniciado em um momento e finalizado posteriormente. Ele também será
disponibilizado a você, para que faça consultas futuras. Além dos materiais
didáticos fornecidos, você poderá usar quaisquer outros recursos e referências.
Todavia, atente para o fato de que poderá respondê-lo somente uma vez.

O registro e envio das respostas é individual e deve ser realizado dentro do


prazo estipulado para a realização do curso.

e o código CRC UZDIGMX2.

687
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Referências
CARLOS Jr, L.F.M. Reconhecimento facial utilizando redes neurais. Trabalho de
conclusão de curso (Ciência da Computação) - Centro Universitário Eurípides de
Marília. Marilia, p. 52, 2011.

COSTA, E.S. Utilização de parâmetros acústicos para quantificação de

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
parâmetros hidrológicos. Tese de doutorado (Escola de Engenharia) -
Universidade Federal de Minas Gerais. Belo Horizonte, p. 115, 2014.

COVO, C.C.C. Modelagem Matemática e Computacional de Efeito sem Ondas


Sonoras. 2016. Disponível em: https://sca.profmat-sbm.org.br/profmat_tcc.
php?id1=2377&id2=74241. Acesso em: 12 janeiro 2024.

DECKMANN, S.M., POMILIO, J.A. Análise de sinais no domínio da frequência.


2020. Disponível em: https://www.dsce.fee.unicamp.br/~antenor/pdffiles/
qualidade/b3.pdf. Acesso em: 12 janeiro 2024.

FERNANDEZ, P.B. Investigando soluções Text-to-speech. Trabalho de


Conclusão de Curso (Ciência da Computação) - Pontifícia Universidade Católica
do Rio de Janeiro. Rio de Janeiro, p. 40, 2021.

FRANCHIN, W.J. Adição e avaliação de estímulos sonoros como ferramenta de


apoio à exploração visual de dados. Dissertação (Mestrado) - Universidade de
São Paulo, ICMC-USP, São Carlos, p.105, 2007.

HILLESHEIN, H. Utilização de Técnicas de Aprendizagem de Máquina em


e o código CRC UZDIGMX2.
Biometria. Trabalho de Conclusão de Curso (Engenharia de Telecomunicações) -
Instituto Federal de Santa Catarina. São José, p. 33, 2018.

MAGALHÃES, M.J.S. Classificação Automática de Gêneros Musicais baseada


em Aproximações Polinomiais no Domínio do Tempo. Dissertação (Mestrado)
- Universidade Federal do Rio de Janeiro, COPPE, Rio de Janeiro, p.58, 2013.

MARTINS, R.M. Análise comparativa entre os métodos HMM e GMM-UBM:


busca pelo α-ótimo dos locutores crianças utilizando a técnica VTLN. Novas
Edições Acadêmicas, 2020.

688
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

OSTERMANN FILHO, P.E. Desenvolvimento de regras de pronúncia para


síntese de fala em Língua Portuguesa. Dissertação de Mestrado (Ciência da
Computação) - Universidade Federal do Rio Grande do Sul. Porto Alegre, p. 130,
2002.

PINTO, A.A. Processamento de sinais sonoros para identificação de notas


musicais utilizando o Raspberry PI. Trabalho de Conclusão de Curso
(Engenharia Mecatrônica) - Centro Federal de Educação Tecnológica de Minas.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Divinópolis, p. 98, 2018.

RIBEIRO, F.M. Extração e análise de características da fala para identificação


de evidências da patologia da dislexia. Dissertação de mestrado (Ciência da
Computação) - Universidade Federal de Ouro Preto. Ouro Preto, p. 87, 2018.

PINTO, A.A. Processamento de sinais sonoros para identificação de notas


musicais utilizando o Raspberry PI. Trabalho de Conclusão de Curso
(Engenharia Mecatrônica) - Centro Federal de Educação Tecnológica de Minas.
Divinópolis, p. 98, 2018.

RIBEIRO, F.M. Extração e análise de características da fala para identificação


de evidências da patologia da dislexia. Dissertação de mestrado (Ciência da
Computação) - Universidade Federal de Ouro Preto. Ouro Preto, p. 87, 2018.

ROSSINI. Novas técnicas geram síntese e efeitos de áudio. 2018. Disponível


em: https://aun.webhostusp.sti.usp.br/index.php/2018/06/12/novas-tecnicas-ge
ram-sintese-e-efeitos-de-audio/. Acesso em: 12 janeiro 2024.

SILVA, L.C. Detecção e classificação de padrões sonoros utilizando


Inteligência Artificial. Dissertação (Mestrado) - Universidade Federal de Santa
e o código CRC UZDIGMX2.
Catarina, Centro Tecnológico, Programa de PósGraduação em Engenharia
Mecânica, Florianópolis, p.150, 2021.

689
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Avaliação Final
Você concluiu todo o seu ciclo de estudos neste curso, totalizando 240 horas
de capacitação.

Esperamos que, com isto, o curso de Inteligência Artificial aplicada à Visão

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
Computacional possa de alguma maneira contribuir com a sua carreira
profissional ou acadêmica - ou, pelo menos, trazer conhecimentos que sejam
úteis e interessantes para qualquer aspecto da sua vida.

Você tem direito a receber um certificado gratuito, a ser emitido pela Facti.
Para isto, deverá obter a aprovação em uma Avaliação Final, que está
disponibilizada no Google Sala de Aula, englobando todo o conteúdo
apresentado nos capítulos deste material.

É muito importante você atentar para o seguinte:

● A Avaliação Final deverá ser realizada somente após o término de todas as


demais atividades e dentro do prazo do curso. Não haverá prorrogações.
● A Avaliação Final poderá ser realizada apenas uma única vez e, para obter o
certificado, você deverá obter nota superior ou igual a 7,0 (isto é, 70 pontos
ou mais) e ter marcado todas as demais atividades do Google Sala de Aula
e o código CRC UZDIGMX2.
como concluídas.
● A Avaliação Final será composta por um questionário individual. O progresso
do questionário é salvo de forma automática, o que lhe permitirá iniciar,
pausar e retomar sem perder o progresso.
● Além dos materiais didáticos fornecidos, você poderá usar quaisquer outros
recursos e referências, bem como consultar a Internet.
● Quando concluir a Avaliação Final, você receberá uma cópia das respostas e
também saberá a nota que tirou, bem como as questões que acertou e
errou.

690
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Considerações finais
A conclusão deste curso de Inteligência Artificial aplicada à Visão
Computacional não lhe dará todas as respostas sobre o tema. Pelo contrário: a
nossa expectativa é de que ele ajude na formulação de novas perguntas e

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
reflexões a respeito daquilo que já foi inventado ou ainda nem sequer
conseguimos imaginar que será criado.

Como você deve ter percebido, o campo da Inteligência Artificial aplicada à


Visão Computacional é muito amplo e vasto, abrangendo aplicações distintas
que variam desde a realização de pesquisas acadêmicas sobre novas formas de
utilização até a produção de bens e serviços em larga escala. E nesse espectro,
também não podemos nos esquecer das pessoas que estudam o tema por
interesse próprio e, muitas vezes com escassos recursos, podem trazer ideias
inovadoras que mudam o rumo da História.

Qualquer que seja o perfil mais aderente à sua realidade, o estudo da


Inteligência Artificial aplicada à Visão Computacional deve ser contínuo. A base
fornecida por este curso não é e nem deve ser entendida como definitiva; na
verdade, em um campo tão dinâmico, a cada momento existem novidades e

e o código CRC UZDIGMX2.


mudanças que exigem de qualquer pessoa uma dedicação para acompanhar as
principais evoluções - sob pena de uma rápida desatualização.

Deixamos uma reflexão final a você, que concluiu todo o curso: o que
esperar da Inteligência Artificial aplicada à Visão Computacional nos próximos
anos e como fazer para que essas tecnologias não se tornem algo desconhecido
ou fora de controle?

Agradecemos pela sua participação e desejamos que continue sempre


estudando sobre este e outros temas. Caso tenha gostado da experiência e
queira realizar mais cursos conosco, visite www.qualifacti.com.br e se inscreva.

691
Trilha de Aprendizagem: Inteligência Artificial aplicada à Visão Computacional

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
INSTITUIÇÃO EXECUTORA

COORDENADORA

e o código CRC UZDIGMX2.

INICIATIVA

Este projeto foi apoiado pelo Ministério da Ciência, Tecnologia e Inovação, com recursos da Lei nº 8.248,
de 23 de outubro de 1991, no âmbito do PPI-Softex, coordenado pela Softex e publicado Residência em
TIC 03 (Processo: 01245.010224/2022-33).
Portal de Assinatura Eletrônica

Documento assinado eletronicamente por Adriana da Silva Nogueira, autenticado por meio de
usuário e senha, em 31/01/2024, às 21:06, mediante o emprego da Plataforma de Assinatura
Eletrônica do P91.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IP: 187.106.43.141
Navegador: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/121.0.0.0 Safari/537.36

Documento assinado eletronicamente por José Augusto de Lima Prestes, autenticado por meio de
usuário e senha, em 31/01/2024, às 21:13, mediante o emprego da Plataforma de Assinatura
Eletrônica do P91.

IP: 179.228.160.49
Navegador: Mozilla/5.0 (iPhone; CPU iPhone OS 17_3 like Mac OS X) AppleWebKit/605.1.15
(KHTML, like Gecko) FxiOS/122.0 Mobile/15E148 Safari/605.1.15

Documento assinado eletronicamente por Marcelo de Almeida Viana, autenticado por meio de
usuário e senha, em 31/01/2024, às 21:08, mediante o emprego da Plataforma de Assinatura
Eletrônica do P91.

IP: 177.194.14.152
Navegador: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/121.0.0.0 Safari/537.36

Documento assinado eletronicamente por Larissa de Oliveira Figueira Canciglieri, autenticado por
meio de usuário e senha, em 31/01/2024, às 21:09, mediante o emprego da Plataforma de
Assinatura Eletrônica do P91.

IP: 179.191.248.93
Navegador: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/120.0.0.0 Safari/537.36

Documento assinado eletronicamente por Bruno Agrofoglio Ferreira, autenticado por meio de usuário
e senha, em 31/01/2024, às 21:09, mediante o emprego da Plataforma de Assinatura Eletrônica do
P91.

IP: 179.125.214.7
Navegador: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/120.0.0.0 Safari/537.36
e o código CRC UZDIGMX2.
Portal de Assinatura Eletrônica

Documento assinado eletronicamente por Peterson Gomes de Moura Barros, autenticado por meio
de usuário e senha, em 31/01/2024, às 21:08, mediante o emprego da Plataforma de Assinatura
Eletrônica do P91.

Documento assinado eletronicamente. Verificação no site https://p91.facti.com.br/pae/validacao.html, informando o código verificador PAE5-4855-8341-7156-3868-3111
IP: 179.232.48.82
Navegador: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/120.0.0.0 Safari/537.36

A autenticidade deste documento pode ser conferida no site


https://p91.facti.com.br/pae/validacao.html, informando o código verificador
PAE5-4855-8341-7156-3868-3111 e o código CRC UZDIGMX2.

Dados do documento orginal


Nome do arquivo: [LINFO CCTI] Material Didático - Trilha de Aprendizagem_ Inteligência Artificial
Aplicada à Visão Computacional.pdf
Nome do responsável: Adriana da Silva Nogueira
Data e hora do upload: 31/01/2024 21:06
IP utilizado no upload: 187.106.43.141
Hash md5: 09d93bfb19e968efee0d2c954331641d

Em consonância com o previsto na Lei Geral de Proteção de Dados Pessoais - LGPD (Lei nº.
13.709/2018), tanto o responsável pelo documento quanto quem o assinou autorizaram a Facti a
promover o tratamento dos seguintes dados pessoais de sua titularidade para os fins de assinatura
eletrônica de documento, estando cientes e de acordo com a exibição pública desses mesmos
dados na folha de assinaturas: nome completo e endereço IP da conexão.

Em consonância com o previsto na Lei Geral de Proteção de Dados Pessoais - LGPD (Lei nº.
13.709/2018), tanto o responsável pelo documento quanto quem o assinou declararam e
reconheceram que a Facti poderá manter arquivados por tempo indeterminado os dados pessoais
citados anteriormente, bem como compartilhá-los com terceiros (sejam eles pessoas físicas ou
jurídicas, públicas ou privadas) nas formas admitidas pela legislação, a fim de demonstrar a validade
do ato jurídico praticado quando da assinatura eletrônica de documento.

e o código CRC UZDIGMX2.

Você também pode gostar