Prévia do material em texto
RESUMO – CIÊNCIA DE DADOS COM PYTHON
TEMA 2 - REDES NEURAIS CONVOLUCIONAIS
INTRODUÇÃO
O que são redes neurais artificiais
· Redes neurais artificiais simulam aspectos do funcionamento biológico por meio de modelos computacionais.
· Elas são usadas com sucesso em diferentes áreas para análise e aprendizado a partir de dados.
Aprendizado Profundo (Deep Learning)
· O Aprendizado Profundo utiliza redes neurais com várias camadas ocultas.
· Essas camadas trabalham juntas para identificar e extrair características dos dados de treinamento.
· Essa abordagem ampliou o destaque e a capacidade das redes neurais.
Redes CNN e aplicações
· As CNN (Redes Neurais Convolucionais) são um tipo de rede de aprendizado profundo voltado principalmente para visão computacional.
· Elas exigem configuração de diversos parâmetros, mas frameworks e bibliotecas facilitam o desenvolvimento.
· É uma área em forte crescimento e com grande potencial de evolução.
Módulo 1. Fundamentos de redes convolucionais
INTRODUÇÃO ÀS REDES NEURAIS CONVOLUCIONAIS (CNN)
📌 Redes neurais artificiais
· São modelos computacionais inspirados nos neurônios biológicos.
· Utilizadas com sucesso no reconhecimento de padrões.
· Aplicadas para resolver diversos problemas práticos.
🔍 Evolução das Redes Neurais
· Com o avanço das aplicações, as arquiteturas das redes neurais foram adaptadas e especializadas.
· O objetivo dessas adaptações foi atender domínios específicos de problemas de forma mais eficiente.
📌 Visão computacional e o surgimento das CNN
O que é visão computacional?
· A visão computacional é uma área que busca fazer com que sistemas computacionais:
· Identifiquem objetos em imagens ou vídeos;
· Reconheçam cenários estáticos ou dinâmicos;
· Forneçam dados para análise ou tomada de ação automática.
Surgimento das CNN
· Para atender melhor problemas de visão computacional, surgiram as Redes Neurais Convolucionais (CNN – Convolutional Neural Network).
· As CNN são uma classe especializada de redes neurais artificiais aplicada com sucesso em tarefas de visão computacional.
· Destacam-se pelo sucesso em tarefas de:
· Reconhecimento de imagens;
· Detecção de objetos;
· Classificação visual.
📌 Objetivo das CNN:
· As CNN foram desenvolvidas para extrair características dos objetos automaticamente e de forma adaptativa.
· O treinamento ocorre por meio do algoritmo de retropropagação (backpropagation).
📌 Principais Estruturas das CNN
As CNN utilizam alguns blocos principais de construção:
· Camadas de convolução;
· Camadas de pool (pooling);
· Camadas totalmente conectadas organizadas em hierarquias espaciais.
📌 Origem das Redes Convolucionais
Pesquisas iniciais
· A origem das redes neurais convolucionais (CNN) está nos estudos de:
· David H. Hubel
· Torsten Wiesel
· Pesquisas realizadas entre 1958 e 1959 com gatos e, posteriormente, macacos.
· Os pesquisadores receberam o Prêmio Nobel de Medicina e Fisiologia em 1981 por seus estudos sobre o córtex visual.
📌 Descobertas importantes sobre o córtex visual
Os estudos mostraram que:
Funcionamento do Córtex Visual:
· Muitos neurônios do córtex visual possuem pequenos campos receptores locais.
· Isso significa que:
· Cada neurônio responde apenas a estímulos visuais de uma região específica.
Descobertas importantes:
Os pesquisadores identificaram que:
· Os campos receptivos de diferentes neurônios podem:
· Se sobrepor;
· Trabalhar em conjunto;
· Cobrir todo o campo visual.
· Alguns neurônios respondem apenas a:
· Linhas horizontais;
· Linhas com outras orientações específicas.
Resultado dessa organização:
A combinação da resposta de vários neurônios permite que o córtex visual:
· Detecte padrões visuais complexos;
· Reconheça diferentes formas e estruturas.
📌 Evolução para as CNN modernas
· As descobertas sobre o córtex visual inspiraram o desenvolvimento das CNN.
· Um trabalho importante nessa evolução foi a rede Neocognitron, criada por Fukushima (1980).
· Esses estudos serviram como base para as redes convolucionais modernas usadas atualmente.
Resumo:
· As CNN são redes neurais especializadas em visão computacional.
· Inspiram-se no funcionamento do córtex visual biológico.
· Aprendem automaticamente características das imagens usando:
· Convolução;
· Pooling;
· Camadas totalmente conectadas.
· Sua origem está nos estudos sobre percepção visual realizados por Hubel e Wiesel, evoluindo posteriormente para os modelos modernos utilizados hoje.
🔍 Camada de Convolução (CONV)
· A camada de convolução (CONV) é responsável por identificar e mapear características da imagem fornecida à CNN.
· Ela utiliza filtros (kernels) que executam a operação de convolução sobre a imagem de entrada.
Como funciona?
· A imagem é representada por uma matriz de valores.
· Um filtro percorre pequenas blocos da imagem.
· Em cada posição:
· Multiplicam-se os valores da imagem pelos valores do filtro;
· Soma-se o resultado dessas multiplicações;
· O valor obtido compõe a matriz de saída.
Exemplo: Imagine uma imagem representada por uma matriz de números 6 × 6.
· A imagem possui uma matriz 6 × 6.
Passo 1 – Selecionar uma parte da imagem: O filtro cobre um pequeno bloco da imagem.
Passo 2 – Multiplicar os valores: Cada número da imagem é multiplicado pelo número correspondente do filtro.
Passo 3 – Somar os resultados
Passo 4 – Obter o valor final
· O valor obtido na matriz de saída foi calculado pela convolução:
· Esse valor (25) é colocado na matriz de saída.
Passo 5 – Repetir o processo: O filtro continua se movendo pela imagem até analisar todas as regiões.
Deslocamento do filtro (Stride):
· O movimento do filtro pela imagem é chamado de stride (tamanho do passo).
· O stride define:
· Quantas posições o filtro avança por vez;
· O tamanho do resultado gerado.
Hiperparâmetros da camada CONV:
· Os principais hiperparâmetros da camada de convolução são:
· Tamanho do filtro;
· Tamanho do passo (stride).
· O resultado da convolução é chamado de: Mapa de características (feature map) ou Mapa de ativação.
🧩 Camada de Preenchimento (Padding)
· O padding é uma técnica usada para permitir que o filtro alcance também as bordas da imagem.
· O tipo mais comum é o preenchimento com zeros (zero padding).
Objetivos do padding:
· Manter o tamanho da matriz de entrada após a convolução → Evita perda de informações das bordas;
· Permitir o uso de mais camadas na CNN;
· Evitar que os mapas de características fiquem cada vez menores.
Exemplo:
Sem padding:
· Imagem → fica menor após a convolução.
Com padding:
· Adicionam-se zeros nas bordas;
· O filtro consegue analisar toda a imagem;
· O tamanho é preservado.
· Torna possível aplicar mais camadas convolucionais.
💡 Ideia principal: Padding funciona como uma margem extra em volta da imagem, evitando perda de informações importantes e permitir modelos mais profundos.
⚡ Funções de Ativação
· Após a convolução, os resultados passam por uma função de ativação não linear.
· Essas funções ajudam a rede a:
· Aprender padrões complexos;
· Simular comportamentos semelhantes aos neurônios biológicos.
⚡Principais funções de ativação:
📌 Função Sigmoide
· Também chamada de função logística.
· Produz valores entre 0 e 1.
· Muito usada para representar probabilidades.
· Fórmula:
📌 Função Tanh (Tangente Hiperbólica)
· Baseada na função sigmoide.
· Produz valores entre −1 e 1.
· Pode representar melhor valores positivos e negativos.
· Fórmula:
📌 Função ReLU
· ReLU (Rectified Linear Unit) é a função mais utilizada em CNNs.
· É a função mais usada nas camadas de convolução.
· Seu funcionamento é simples:
· Valores negativos → retornam 0.
· Exemplo: ReLU(-3) = 0
· Valores positivos → permanecem iguais.
· Exemplo: ReLU(5) = 5
· Fórmula:
· Por que a ReLU é tão usada?
· Processamento mais rápido;
· Menor custo computacional;
· Melhor desempenho em redes profundas.
📌 Função Softmax
· A função Softmax é utilizada no final da CNN.
· Sua função é transformar resultados em probabilidades.
· Fórmula:mudanças buscam melhorar o desempenho do modelo.
💡 Exemplo :
· Avaliação de uma CNN para: Reconhecimento de caracteres manuscritos
· Conjunto de teste: 5.000 imagens
· O desempenho é medido por métricas de avaliação.
⚠️ Destaque Final
· O sucesso de modelos de CNNs depende da execução adequada de três etapas:
· Pré-processamento dos dados
· Construção e treinamento
· Avaliação e otimização
· Essas fases garantem que o modelo execute suas tarefas com:
· Eficiência
· Precisão
· Maior desempenho em aplicações de visão computacional.
Módulo 2. Representação de objetos e de cenas
REPRESENTAÇÃO DE OBJETOS EM VISÃO COMPUTACIONAL
· A representação de objetos em visão computacional envolve diferentes técnicas que permitem analisar, interpretar e classificar imagens.
🔍 Extração de Características
· As características extraídas das imagens são:
· Combinadas
· Enviadas para camadas posteriores da rede
· Essas informações são utilizadas para:
· Análise
· Classificação
💡 Exemplo:
· Detecção de bordas em uma imagem de rosto.
· Nesse processo:
· Filtros convolucionais identificam:
· Transições de intensidade dos pixels
· Bordas relacionadas às características faciais.
🧩 Modelagem 3D e Segmentação Semântica
· Em aplicações mais avançadas de visão computacional, destacam-se duas técnicas:
🏗️ Modelagem 3D:
· Consiste na reconstrução de objetos tridimensionais a partir de imagens bidimensionais.
· Permite uma compreensão mais completa do ambiente.
🖼️ Segmentação Semântica:
· Tem como objetivo atribuir rótulos a cada pixel da imagem.
· Cada pixel é identificado conforme:
· Classe
· Objeto ao qual pertence.
🚗 Aplicações:
· Essas técnicas são utilizadas em:
· Robótica
· Realidade aumentada
· Navegação autônoma
· Veículos autônomos
· Seu papel é identificar e interpretar o ambiente ao redor.
💡 Exemplo:
· Segmentação semântica de uma cena urbana em imagem de alta resolução.
· Cada pixel pode receber rótulos como:
· Estrada
· Pedestre
· Veículo
🏷️ Reconhecimento e Classificação de Objetos
· É uma das tarefas mais comuns e importantes da visão computacional.
· Utiliza técnicas como as CNNs para:
· Identificar objetos
· Classificá-los
· Atribuir rótulos ou categorias específicas
📍 Áreas de aplicação:
· Sistemas de segurança
· Controle de qualidade industrial
· Assistência médica
💡 Exemplos:
🚦 Monitoramento de tráfego
· CNNs podem:
· Reconhecer
· Classificar diferentes tipos de veículos em tempo real.
🐶 Classificação de raças de cães
· Em um conjunto de imagens de teste:
· A CNN atribui corretamente o rótulo de cada raça com alta precisão.
⚠️ Destaque Final
· As redes neurais convolucionais (CNNs) são ferramentas importantes para:
· Análise de imagens
· Interpretação visual
· Sua aplicação vai desde:
· Extração de características
· Até o reconhecimento e classificação de objetos
· Isso demonstra sua utilidade em diversas aplicações do mundo real.
MODELOS DE RECONHECIMENTO DE OBJETOS
· São essenciais para identificar e classificar elementos visuais em imagens.
· Existem diferentes métodos para reconhecimento de objetos, incluindo:
· Técnicas tradicionais
· Abordagens baseadas em aprendizado profundo
🤖 Aprendizado Profundo para Reconhecimento de Objetos
· O aumento da disponibilidade de dados e os avanços em algoritmos favoreceram o uso do aprendizado profundo.
· Nesse contexto, as redes neurais convolucionais (CNNs) destacam-se como uma das abordagens mais eficazes.
⚙️ Capacidade das CNNs:
· As CNNs aprendem representações hierárquicas de características visuais.
· Essa capacidade permite:
· Reconhecimento preciso de objetos
· Funcionamento em diversas condições
📍 Aplicações:
· Sistemas de vigilância
· Automação industrial
· Assistência médica
💡 Exemplo:
· Em um sistema de segurança, o reconhecimento de objetos com aprendizado profundo pode:
· Identificar pessoas
· Detectar veículos
· Reconhecer objetos suspeitos
· O monitoramento ocorre em tempo real, permitindo emissão de alertas.
🖼️ Redes Neurais Convolucionais (CNNs) para Detecção de Objetos
· A detecção de objetos com CNNs é uma etapa importante da visão computacional.
· Essa técnica é utilizada em sistemas como:
· Veículos autônomos
· Monitoramento de segurança
· Robótica
💡 Exemplo:
· Em um sistema de assistência ao motorista, as CNNs podem detectar:
· Pedestres
· Veículos
· Obstáculos na estrada
· Isso contribui para uma condução mais segura e autônoma.
📊 Avaliação e Otimização de Modelos
· A avaliação e otimização são etapas essenciais para garantir desempenho robusto e preciso.
· O modelo é avaliado utilizando:
· Conjunto de dados de teste
· Métricas de desempenho
📈 Métricas:
· Precisão
· Recall
· F1-score
🔧 Possíveis otimizações:
Com base nos resultados da avaliação, podem ser realizadas:
· Ajuste de hiperparâmetros
· Modificação da arquitetura da rede
· Aumento de dados
🔄 Processo iterativo:
· A avaliação e a otimização formam um processo contínuo.
· O objetivo é garantir que o modelo:
· Generalize bem dados não vistos
· Execute suas tarefas de forma eficaz.
💡 Exemplo:
· Em um ambiente de varejo, a otimização de um modelo de detecção pode:
· Melhorar a detecção de produtos nas prateleiras
· Reduzir falsos positivos
· Isso é feito por meio do ajuste de hiperparâmetros.
⚠️ Destaque Final
· As CNNs e o aprendizado profundo demonstram grande importância no:
· Reconhecimento de objetos
· Detecção de objetos em imagens
· O avanço contínuo dos algoritmos e das tecnologias está impulsionando:
· Inovações
· Novas aplicações no mundo real.
SEGMENTAÇÃO DE IMAGENS EM VISÃO COMPUTACIONAL
📌 Segmentação de Imagens
· A segmentação de imagens é essencial para:
· Identificar regiões de interesse
· Separar objetos do fundo em uma cena visual.
· Técnicas avançadas permitem:
· Análise detalhada de imagens complexas.
🧩 Segmentação Semântica
· É uma técnica avançada de processamento de imagens.
· Seu objetivo é atribuir um rótulo semântico a cada pixel da imagem.
· Isso permite uma compreensão:
· Mais detalhada
· Mais precisa do conteúdo visual.
⚙️ Uso das CNNs:
· As redes neurais convolucionais (CNNs) são amplamente utilizadas nessa tarefa.
· Cada pixel recebe uma classe específica, como:
· Pessoa
· Carro
· Árvore
📍 Aplicações:
· Vigilância por vídeo
· Navegação autônoma
· Análise de imagens médicas
🏷️ Segmentação de Instâncias
· É uma extensão da segmentação semântica.
· Além de atribuir rótulos aos pixels, ela:
· Distingue diferentes instâncias de objetos da mesma classe.
· Isso significa que:
· Cada objeto é identificado de forma única e individual.
💡 Importância:
· É especialmente útil quando há:
· Objetos sobrepostos
· Objetos muito próximos entre si
⚙️ Uso das CNNs
· As CNNs também são muito utilizadas na: Segmentação de instâncias
· Elas fornecem:
· Segmentação detalhada
· Alta precisão na identificação dos objetos.
📍 Aplicações citadas
· Reconhecimento de objetos em tempo real
· Robótica
· Veículos autônomos
🏢 Aplicações Empresariais da Segmentação de Imagens
A segmentação de imagens contribui para:
· Maior eficiência
· Aumento da produtividade
· Melhoria na tomada de decisões
🛒 Segmentação no Varejo:
· Utilizada para:
· Identificar produtos nas prateleiras
· Contar produtos
· Monitorar estoque
· Otimizar o layout da loja
🚗 Segmentação na Indústria Automotiva:
· Aplicada em sistemas de assistência ao motorista para:
· Identificar pedestres
· Rastrear veículos
· Detectar obstáculos na estrada
🌱 Segmentação na Agricultura de Precisão:
· Utilizada para:
· Monitorar crescimento das plantas
· Identificar pragas
· Otimizar o uso de pesticidas
🏥 Segmentação na Área da Saúde:
· Pode auxiliar em:
· Diagnóstico precoce de doenças
· Segmentação de órgãos
· Planejamento cirúrgico
⚠️ Destaque Final
· A segmentação semântica e a segmentação de instâncias possuem papel fundamental em diferentes setores industriais.
· O uso de CNNs e técnicas avançadas de processamento de imagens estápromovendo:
· Inovações
· Melhoria da eficiência operacional
· Ampliação das aplicações da visão computacional em empresas ao redor do mundo.
RECONHECIMENTO DE CENAS EM VISÃO COMPUTACIONAL
📌 Reconhecimento de Cenas
· O reconhecimento de cenas permite compreender imagens de forma holística, indo além da identificação de objetos isolados.
· Utiliza algoritmos avançados, incluindo redes neurais convolucionais (CNNs).
· Possui alta precisão e é importante em aplicações como:
· Vigilância
· Navegação autônoma
· Seu objetivo é proporcionar uma compreensão mais profunda do contexto visual.
🏙️ Classificação de Ambientes
· As CNNs desempenham papel essencial na identificação e rotulação de cenários em imagens.
· O treinamento é realizado com conjuntos de dados previamente rotulados.
· As redes aprendem a reconhecer padrões visuais específicos associados a diferentes ambientes.
📍 Exemplo de Ambientes:
· Ruas urbanas
· Florestas
· Praias
· Interiores de edifícios
💡 Importância:
· A classificação de ambientes permite:
· Compreensão mais profunda das imagens
· Aplicação em diversas áreas.
🚗 Exemplo:
· Em veículos autônomos, as CNNs podem:
· Identificar rapidamente o ambiente ao redor
· Auxiliar na tomada de decisões seguras durante a condução.
📐 Análise de Contexto Espacial
· As CNNs conseguem compreender a relação espacial entre objetos em uma cena.
· Isso possibilita uma visão completa do ambiente visual.
📊 Exemplo:
Tabela de localização de móveis em um ambiente:
Objeto
Posição (x, y)
Sofá
(100, 50)
Mesa
(150, 120)
Cadeira
(130, 90)
Televisão
(50, 200)
💡 O que a tabela demonstra:
· As CNNs podem compreender:
· Posição relativa dos objetos
· Organização espacial da cena
🤖 Aplicação:
· Em navegação autônoma, robôs precisam:
· Entender a disposição dos objetos
· Locomover-se com segurança no ambiente.
🌍 Aplicações Práticas em Reconhecimento de Cenas
As CNNs são utilizadas em diferentes cenários reais, oferecendo informações valiosas e auxiliando decisões em tempo real.
🎥 Sistemas de Vigilância:
· Redes neurais podem identificar automaticamente atividades suspeitas
· Exemplos:
· Roubos
· Vandalismos
🌱 Agricultura de Precisão:
· As CNNs podem:
· Analisar imagens agrícolas
· Detectar pragas
· Identificar áreas que necessitam de irrigação.
🕶️ Realidade Aumentada:
· As CNNs analisam o ambiente ao redor do usuário
· Com base no contexto espacial:
· Sobrepõem informações virtuais ao cenário real.
⚠️ Destaque Final
· O reconhecimento de cenas com CNNs envolve:
· Classificação de ambientes
· Análise de contexto espacial
· Aplicações práticas
· Essas técnicas avançadas estão promovendo:
· Inovações em visão computacional
· Desenvolvimento de novas aplicações tecnológicas em diversos setores.
APLICAÇÕES AVANÇADAS DE INTELIGÊNCIA ARTIFICIAL EM VISÃO COMPUTACIONAL
📌 Aplicações Avançadas em Visão Computacional
· A operação de ambientes de visão computacional é importante em diversos setores.
· Permite:
· Processamento eficiente de informações visuais
· Tomada de decisões
· Execução de tarefas complexas
· Contribui para a inovação em áreas como:
· Automação industrial
· Assistência médica avançada
🎨 Geração de Imagens
· A geração de imagens é uma área avançada da visão computacional.
· Utiliza redes neurais convolucionais (CNNs) para:
· Aprender padrões visuais
· Gerar novas imagens realistas, semelhantes às utilizadas no treinamento.
🤖 Redes Generativas Adversariais (GANs):
· A GAN (Generative Adversarial Network) funciona por meio de duas redes neurais em competição:
· Uma gera imagens
· Outra avalia as imagens geradas
· Esse processo ocorre de forma:
· Iterativa
· Com refinamento contínuo das imagens produzidas.
📍 Aplicações:
· Criação de arte digital
· Geração de imagens médicas sintéticas
· Utilizadas no treinamento de modelos de diagnóstico por imagem.
🎥 Análise de Vídeo em Tempo Real
· É uma aplicação fundamental da visão computacional.
· As CNNs são utilizadas para analisar sequências de vídeo em tempo real.
⚙️ Funções desempenhadas:
· Detecção de objetos
· Reconhecimento de padrões de movimento
· Compreensão da intenção por trás das ações observadas
💡 Exemplo:
· Em sistemas de vigilância, a análise em tempo real pode:
· Detectar comportamentos suspeitos
· Identificar:
· Intrusões
· Atividades anômalas
· Isso possibilita:
· Resposta rápida
· Maior eficácia no monitoramento
🧠 IA para Tomada de Decisões Baseadas em Visão
· É uma área emergente que integra:
· Visão computacional
· Algoritmos de aprendizado de máquina
· O objetivo é:
· Tomar decisões autônomas com base em informações visuais.
🚗 Exemplo apresentado: Veículos Autônomos
· As CNNs são usadas para:
· Identificar sinais de trânsito
· Reconhecer pedestres
· Detectar outros veículos
⚙️ Decisões realizadas em tempo real
Com base nas informações visuais, o veículo pode:
· Acelerar
· Frear
· Realizar curvas
📍 Potencial de aplicação:
Essa tecnologia pode transformar setores como:
· Transporte
· Manufatura
· Assistência médica
⚠️ Destaque Final
· O avanço da tecnologia em IA e visão computacional amplia o potencial de aplicações avançadas.
· Essas soluções podem gerar benefícios como:
· Maior eficiência
· Mais segurança
· Melhoria da qualidade de vida
· Seu impacto tende a transformar diversos setores no futuro.
Módulo 3. Arquiteturas para visão computacional
ARQUITETURAS CONVOLUTIVAS EM VISÃO COMPUTACIONAL
📌 Arquiteturas Convolutivas
· As arquiteturas convolutivas são fundamentais na visão computacional.
· Permitem a extração de características relevantes das imagens por meio de operações de convolução.
· São amplamente utilizadas em tarefas como:
· Reconhecimento de objetos
· Detecção de padrões
· Segmentação de imagens
⚙️ Fundamentos das Arquiteturas Convolutivas
· As arquiteturas convolutivas formam a base das redes neurais convolucionais (CNNs).
· São essenciais para o processamento eficiente de imagens.
🧩 Estrutura das Arquiteturas:
As CNNs são compostas por diferentes tipos de camadas:
1. Camadas Convolucionais:
· Aplicam operações de convolução.
· Responsáveis por extrair características das imagens.
2. Camadas de Pooling:
· Utilizadas para reduzir a dimensionalidade das características extraídas.
3. Camadas Totalmente Conectadas:
· Responsáveis pela classificação final das informações aprendidas.
💡 Exemplo: LeNet-5
· Arquitetura desenvolvida por Yann LeCun.
· Muito utilizada para reconhecimento de dígitos manuscritos.
📚 Importância:
· Compreender esses fundamentos é importante para:
· Projetar
· Implementar CNNs eficazes em diferentes aplicações.
🏗️ Implementação de Redes Neurais Convolucionais (CNNs)
· A implementação envolve a criação e treinamento de modelos capazes de executar tarefas específicas de visão computacional.
⚙️ Etapas da Implementação:
Incluem:
· Definição da arquitetura da rede
· Camadas convolucionais
· Pooling
· Camadas totalmente conectadas
· Compilação do modelo
· Uso de:
· Funções de perda
· Otimizadores adequados
🔧 Ajustes necessários:
A implementação também requer:
· Pré-processamento dos dados de entrada
· Ajuste dos hiperparâmetros
· Para alcançar o melhor desempenho possível.
💡 Exemplo:
· Implementação de uma CNN para reconhecimento de objetos.
· O treinamento utiliza:
· Conjunto de dados rotulado
· Contendo múltiplas classes de objetos.
🏢 Casos de Uso Empresariais em Visão Computacional
As CNNs e a visão computacional possuem grande impacto na:
· Otimização de processos
· Segurança
· Qualidade de produtos e serviços
🛒 Setor Varejista:
· Aplicações:
· Análise de vídeo
· Monitoramento de estoque em tempo real
· Possibilitam:
· Identificação automática de produtos
· Detecção de furtos
🚗 Indústria Automotiva:
· Aplicação em sistemas avançados de assistência ao motorista (ADAS).
· As CNNs são utilizadas para:
· Detectar sinais de trânsito
· Reconhecer pedestres
· Identificar obstáculos na estrada
🏥 Setor da Saúde:
· Uso emdiagnóstico por imagem.
· Auxiliam médicos na:
· Detecção precoce de doenças
· Interpretação de exames médicos
⚠️ Destaque Final
· As CNNs possuem aplicações que vão desde:
· Fundamentos das arquiteturas convolutivas
· Até casos de uso empresariais.
· O domínio dessas tecnologias é importante para:
· Explorar seu potencial
· Impulsionar inovação em diversos setores empresariais.
REDES NEURAIS CONVOLUCIONAIS (CNNS) PARA RECONHECIMENTO DE IMAGENS
📌 CNNs para Reconhecimento de Imagens
· As redes neurais convolucionais (CNNs) são modelos de aprendizado profundo altamente eficazes.
· Destacam-se no reconhecimento de padrões em imagens.
· Possuem capacidade de:
· Aprender características complexas
· Fazer isso diretamente a partir dos dados.
⚙️ Arquitetura e Funcionamento das CNNs
· As CNNs são fundamentais na visão computacional devido à capacidade de:
· Processar imagens
· Extrair características de forma eficiente.
🧩 Estrutura das CNNs:
A arquitetura é composta por diferentes tipos de camadas:
1. Camadas Convolucionais:
· Aplicam filtros para extrair características específicas das imagens.
2. Camadas de Pooling:
· Responsáveis por:
· Reduzir a dimensionalidade
· Preservar características importantes.
3. Camadas Totalmente Conectadas:
· Executam a Classificação final
· Baseiam-se nas características extraídas pelas camadas anteriores.
💡 Importância:
· Compreender a arquitetura e o funcionamento das CNNs é essencial para:
· Aplicá-las de forma eficaz
· Resolver problemas de reconhecimento de imagens.
🎯 Treinamento e Avaliação de Modelos de CNN
· São etapas críticas no desenvolvimento de sistemas de visão computacional.
📚 Processo de Treinamento:
· Os modelos são treinados com:
· Conjuntos de dados rotulados
· Durante o treinamento, aprendem a:
· Associar imagens de entrada
· Às saídas desejadas.
⚙️ Como ocorre o aprendizado:
· O aprendizado é realizado por meio do:
· Ajuste dos pesos e vieses das conexões da rede
· Utiliza algoritmos de otimização, como:
· Gradiente descendente
📊 Processo de Avaliação:
· Após o treinamento, os modelos são testados em:
· Conjuntos de dados de teste
· O objetivo é verificar:
· Precisão
· Capacidade de generalização
📈 Métricas:
· Acurácia
· Precisão
· Recall
🏢 Aplicações Empresariais de Reconhecimento de Imagens
· O reconhecimento de imagens possui papel importante em diversas áreas empresariais.
· As CNNs impulsionam soluções em tarefas como:
· Detecção de objetos
· Reconhecimento facial
· Diagnóstico médico por imagem
🛒 Varejo:
· Sistemas baseados em CNNs podem:
· Automatizar inventários
· Melhorar a experiência do cliente
· Exemplo:
· Reconhecimento automático de produtos.
🛡️ Segurança:
· Sistemas de vigilância com CNNs podem:
· Detectar atividades suspeitas em tempo real
· Emitir alertas às autoridades competentes.
⚠️ Destaque Final
· As CNNs têm grande impacto no reconhecimento de imagens.
· Sua importância envolve:
· Arquitetura
· Treinamento
· Aplicações empresariais
· O entendimento e uso adequado dessa tecnologia são essenciais para:
· Aproveitar seu potencial
· Promover eficiência e inovação em diversos setores industriais.
REDES NEURAIS RECORRENTES (RNNS) EM VISÃO COMPUTACIONAL
📌 RNNs em Visão Computacional
· As redes neurais recorrentes (RNNs) são arquiteturas de aprendizado de máquina capazes de lidar com dados sequenciais.
· Exemplos de dados citados:
· Texto
· Áudio
· Vídeo
· Em visão computacional, são utilizadas em tarefas que exigem análise temporal, como:
· Reconhecimento de gestos
· Descrição de vídeos
⚙️ Arquitetura e Funcionamento das RNNs
· As RNNs (recurrent neural networks) são projetadas para trabalhar com:
· Séries temporais
· Sequências de dados
🔁 Diferença em relação às redes neurais tradicionais
· As RNNs possuem conexões retroativas.
· Isso permite que informações anteriores influenciem a saída atual.
· Dessa forma, conseguem lidar com situações em que ordem e contexto são importantes.
🧩 Estrutura das RNNs
· A arquitetura é composta por: Unidades de células recorrentes
· Essas células:
· Processam cada elemento da sequência
· Mantêm uma memória interna.
🧠 Função da memória interna
· Permite:
· Capturar padrões temporais complexos
· Interpretar informações ao longo do tempo.
📍 Aplicações:
· Reconhecimento de atividades em vídeos
· Previsão de movimento em séries temporais
🎥 Análise Temporal em Visão Computacional
· Refere-se à capacidade de:
· Extrair
· Compreender padrões temporais
· em dados visuais, como:
· Vídeos
· Sequências de imagens
⚙️ Papel das RNNs
· As RNNs possibilitam:
· Modelagem de dependências temporais
· Análise de movimentos
· Análise de mudanças ao longo do tempo
💡 Exemplo: Reconhecimento de atividades humanas
· Em vídeos de vigilância, as RNNs podem:
· Identificar padrões de movimento
· Reconhecer ações ao longo do tempo, como:
· Caminhar
· Correr
· Dirigir veículos
💡 Exemplo: Reconhecimento de gestos
· As RNNs podem:
· Capturar a dinâmica dos movimentos
· Analisar movimentos das mãos e dedos
· Isso permite a interpretação precisa dos gestos realizados.
🏢 Aplicações Empresariais de Análise de Vídeo com RNNs
As RNNs possuem aplicações em diversos setores empresariais.
🛒 Varejo
· Utilizadas para análise do comportamento do cliente
· Permitem identificar:
· Padrões de tráfego
· Tempo gasto em diferentes áreas da loja.
🛡️ Segurança
· Sistemas de vigilância com RNNs podem:
· Detectar automaticamente atividades suspeitas
· Exemplos:
· Invasões
· Roubos
· Vandalismo
· Também possibilitam alertas em tempo real aos operadores.
🏭 Manufatura
· Aplicadas no monitoramento da produção em tempo real
· Permitem:
· Identificar falhas
· Prevenir defeitos antes que ocorram.
⚠️ Destaque Final
· As RNNs possuem grande potencial para transformar a análise de vídeo em diferentes contextos empresariais.
· Seu uso permite:
· Extração de informações valiosas
· Maior eficiência operacional
· Melhor compreensão de dados visuais sequenciais.
ARQUITETURAS GENERATIVAS ADVERSARIAIS (GANS) EM VISÃO COMPUTACIONAL
📌 GANs em Visão Computacional
· As redes generativas adversariais (GANs) são modelos de aprendizado de máquina capazes de:
· Gerar dados sintéticos realistas.
· Em visão computacional, são utilizadas em tarefas como:
· Geração de imagens
· Aprimoramento de fotos
· Tradução de estilos
⚙️ Arquitetura e Funcionamento das GANs
· As GANs são uma classe especial de redes neurais profundas.
· Seu funcionamento baseia-se em dois modelos que competem entre si em um processo chamado jogo de minimax.
🧩 Componentes das GANs
1. Gerador
· Responsável por criar amostras de dados sintéticos.
2. Discriminador
· Responsável por distinguir dados reais de dados sintéticos.
🔄 Processo de Aprendizado:
· O funcionamento ocorre de forma:
· Iterativa
· Competitiva
· Esse processo leva ao aprimoramento contínuo do gerador
· Como resultado os dados gerados tornam-se cada vez mais realistas.
📍 Versatilidade das GANs
· Permitem gerar dados de alta qualidade em diferentes domínios:
· Imagens
· Áudio
· Texto
· Isso torna as GANs:
· Versáteis
· Poderosas.
🖼️ Aplicações de GANs em Visão Computacional
As GANs possuem diversas aplicações relacionadas à geração e aprimoramento de imagens.
🎨 Geração de Imagens:
As GANs podem ser utilizadas para:
· Criar arte digital
· Gerar avatares personalizados
· Sintetizar rostos humanos
· Criar imagens médicas sintéticas
· Utilizadas no treinamento de modelos de diagnóstico.
✨ Aprimoramento de Imagens:
Também são aplicadas em tarefas como:
· Remoção de ruído
· Aumento de resolução
· Colorização de imagens em preto e branco
💡 Importância:
· Essas aplicações demonstram a capacidade das GANs de:
· Expandir os limites da geração
· Manipular imagens com alta qualidade.
⚠️ Desafios e Considerações Éticas
· O uso das GANs apresenta desafios importantes.
Risco de Viés e Manipulação:
· As GANs podem gerar imagens falsas ou distorcidas
· Isso poderesultar em:
· Engano
· Difamação de indivíduos
· Uso inadequado das imagens geradas.
Direitos Autorais e Propriedade Intelectual:
· A criação de conteúdo sintético realista gera preocupações relacionadas a:
· Direitos autorais
· Propriedade intelectual
Uso Ético e Responsável:
· É necessário a:
· Transparência
· Conscientização
· Responsabilidade no uso das GANs
· O objetivo é compreender:
· Impactos sociais e culturais dessa tecnologia.
⚠️ Destaque Final
· Compreender o funcionamento, aplicações e desafios das GANs é essencial para:
· Explorar seu potencial de forma ética
· Impulsionar inovação e progresso
· Seu impacto vai além da visão computacional, alcançando outras áreas tecnológicas.
ARQUITETURAS DE PROCESSAMENTO EM NUVEM PARA VISÃO COMPUTACIONAL
📌 Processamento em Nuvem para Visão Computacional
· As arquiteturas de processamento em nuvem permitem:
· Processamento eficiente de grandes volumes de dados visuais
· Uso de recursos computacionais:
· Escaláveis
· Flexíveis
🏗️ Modelos de Implantação em Nuvem para Visão Computacional
· Os modelos de implantação oferecem formas flexíveis e escaláveis de executar aplicações de análise de imagens.
· Os principais modelos citados são:
· IaaS
· PaaS
· SaaS
1. Infraestrutura como Serviço (IaaS)
· Permite que as empresas:
· Implantem e gerenciem máquinas virtuais
· Utilizem softwares de visão computacional na nuvem
· Característica principal: controle total do ambiente de implantação.
2. Plataforma como Serviço (PaaS)
· Os provedores oferecem:
· Plataformas
· Ferramentas específicas para desenvolvimento e implantação
· Benefícios:
· Simplificação da implementação
· Facilidade de gerenciamento dos aplicativos.
3. Software como Serviço (SaaS)
· Os aplicativos de visão computacional são oferecidos como serviços totalmente gerenciados na nuvem.
· Permite às empresas:
· Utilizar recursos de análise de imagens
· Sem configurar ou manter infraestrutura própria.
💡 Benefícios dos Modelos em Nuvem:
· Proporcionam:
· Agilidade
· Escalabilidade
· Economia de custos
☁️ Serviços e Ferramentas de Processamento em Nuvem
· Os provedores de nuvem oferecem recursos para:
· Análise de imagens
· Processamento eficiente e escalável
📍 Provedores:
· Amazon Web Services (AWS)
· Microsoft Azure
· Google Cloud Platform (GCP)
⚙️ Recursos oferecidos:
Incluem:
· Armazenamento de dados
· Processamento de imagens
· Treinamento de modelos de machine learning
· Implantação de aplicativos
💡 Exemplos:
☁️ Amazon Rekognition (AWS)
· Serviço de análise de imagens capaz de:
· Detectar objetos
· Reconhecer faces
· Identificar texto
· Analisar imagens e vídeos
🖼️ Azure Computer Vision
· Oferece recursos semelhantes para:
· Análise de imagens
· Aplicações empresariais.
📌 Importância:
· Esses serviços simplificam o desenvolvimento e facilitam a implantação
· Permitem utilizar computação em nuvem sem necessidade de infraestrutura própria.
🏢 Casos de Uso Empresariais em Visão Computacional na Nuvem
A visão computacional em nuvem pode:
· Aumentar a eficiência operacional
· Melhorar a experiência do cliente
· Gerar informações valiosas para empresas
🛒 Varejo
· Aplicações:
· Monitoramento do layout da loja
· Detecção de padrões de tráfego de clientes
· Identificação de produtos fora de estoque
🛡️ Segurança
· Uso de recursos na nuvem para:
· Detecção de objetos
· Reconhecimento facial
· Objetivo:
· Proteger ativos
· Garantir segurança de funcionários e clientes.
🏭 Manufatura
· Aplicação da análise de imagens para:
· Inspeção de produtos
· Detecção de defeitos durante a produção
⚠️ Destaque Final
· Os modelos de implantação em nuvem, juntamente com os serviços e ferramentas de processamento, demonstram o potencial da computação em nuvem na visão computacional.
· Ao utilizar a nuvem, as empresas podem alcançar:
· Maior agilidade
· Escalabilidade
· Redução de custos
· Esses benefícios impulsionam:
· Inovação
· Sucesso empresarial em aplicações de visão computacional.
Módulo 4. Aplicação em Python
A INTRODUÇÃO AO PYTHON PARA VISÃO COMPUTACIONAL
📌 Python para Visão Computacional
· O Python é amplamente utilizado em visão computacional devido a:
· Simplicidade
· Flexibilidade
· Grande variedade de bibliotecas especializadas
· O aprendizado dos fundamentos da linguagem fornece:
· Base sólida para explorar aplicações em visão computacional.
📚 Fundamentos do Python para Iniciantes
· O Python é uma linguagem de programação de alto nível.
· Destaca-se por:
· Simplicidade
· Legibilidade
🧩 Conceitos fundamentais:
Para iniciantes, é importante compreender:
· Sintaxe básica
· Estruturas de controle de fluxo
· Loops
· Condicionais
· Tipos de dados
· Inteiros
· Strings
· Listas
· Funções
💡 Importância:
· O domínio desses conceitos:
· Desenvolve habilidades de programação
· Representa o primeiro passo para estudar tópicos mais avançados, como:
· Visão computacional
💡 Saiba Mais:
· O texto recomenda consultar: Tutorial oficial do Python
· Para aprofundamento na linguagem.
🖼️ Manipulação de Imagens em Python
· É uma habilidade essencial para trabalhar com visão computacional.
📦 Bibliotecas:
· OpenCV
· Pillow
· Scikit-image
⚙️ Funcionalidades oferecidas:
Essas bibliotecas permitem:
· Carregar imagens
· Exibir imagens
· Modificar imagens
· Salvar imagens
🔧 Tarefas de processamento de imagens:
· Redimensionamento
· Rotação
· Detecção de bordas
· Filtragem
📌 Importância:
· Aprender essas técnicas é útil para desenvolver aplicações de visão computacional.
💻 Desenvolvimento de Aplicações Simples de Visão Computacional
· Criar aplicações simples é um passo importante para consolidar os conhecimentos adquiridos.
🛠️ Possibilidades:
Com conhecimentos básicos de Python e manipulação de imagens, é possível desenvolver:
· Detecção de objetos em imagens
· Reconhecimento de padrões
· Sistemas simples de vigilância
💡 Dica:
· A biblioteca OpenCV é destacada como:
· Uma solução ampla para projetos
· Oferece:
· Algoritmos
· Funções pré-implementadas
· Isso facilita o desenvolvimento de aplicações.
⚠️ Destaque Final
· Tornar-se proficiente em visão computacional envolve três etapas principais:
· Dominar os fundamentos do Python
· Aprender manipulação de imagens
· Desenvolver aplicações simples
· O texto destaca que:
· Dedicação e prática permitem desenvolver habilidades sólidas
· Abrindo caminho para:
· Projetos mais avançados
· Novos desafios técnicos.
BIBLIOTECAS PYTHON PARA PROCESSAMENTO DE IMAGENS
📚 Introdução às bibliotecas Python para processamento de imagens
· Python possui diversas bibliotecas especializadas que facilitam a análise e manipulação de imagens.
· Essas bibliotecas oferecem ferramentas para tarefas de processamento de imagens e visão computacional.
· Conhecer suas funcionalidades é essencial para trabalhar com imagens em Python.
Principais bibliotecas
🔹 OpenCV
· Biblioteca muito popular para processamento de imagens.
· Disponibiliza ampla variedade de ferramentas.
· Possui recursos avançados voltados para visão computacional.
🔹 Pillow (PIL)
· Biblioteca usada para:
· Abrir imagens;
· Manipular imagens;
· Salvar imagens.
· Suporta diversos formatos de arquivos de imagem.
🔹 Scikit-image
· Biblioteca focada em algoritmos de processamento e análise de imagens.
· Mais orientada ao desenvolvimento de técnicas e análises específicas.
🛠️ Manipulação e transformação de imagens
· São atividades fundamentais no processamento de imagens.
· Realizadas por meio das funções e métodos fornecidos pelas bibliotecas Python.
Operações de manipulação de imagens
Podem incluir:
· Redimensionamento;
· Rotação;
· Corte;
· Alteração de brilho;
· Alteração de contraste.
Transformações avançadas
Podem envolver:
· Aplicação de filtros;
· Operações morfológicas;
· Detecção de bordas;
· Segmentação de imagens.
⚠️ Atenção
· É importante saber aplicar corretamente cada técnica para resolver problemas específicos de processamento de imagens.
🏢 Aplicaçõesempresariais do processamento de imagens em Python
🛍️ Varejo
Uso para:
· Análise de estoque;
· Detecção de produtos defeituosos;
· Reconhecimento de padrões de consumo.
🚗 Indústria automotiva
Aplicações em:
· Sistemas avançados de assistência ao motorista (ADAS);
· Reconhecimento de placas de veículos;
· Inspeção da qualidade de fabricação.
🏥 Saúde
Aplicações em:
· Diagnóstico médico por imagem;
· Detecção de doenças;
· Acompanhamento de tratamentos.
💡 Conclusão
· O processamento de imagens em Python contribui para inovação e eficiência em diversos setores.
· Para atuar na área, é importante:
· Dominar bibliotecas de processamento de imagens;
· Aprender técnicas de manipulação e transformação;
· Compreender aplicações empresariais dessas tecnologias.
CONSTRUÇÃO DE MODELOS DE VISÃO COMPUTACIONAL EM PYTHON
📚 Introdução
· A construção de modelos de visão computacional é essencial para criar sistemas personalizados e eficientes.
· Em Python, o desenvolvimento desses modelos é realizado com bibliotecas populares voltadas para machine learning e deep learning.
· O foco está na criação e treinamento de modelos utilizando ferramentas como:
· TensorFlow;
· Keras;
· PyTorch.
🏗️ Construção e treinamento de modelos de aprendizado de máquina
· São etapas fundamentais no desenvolvimento de soluções de visão computacional.
· Os modelos podem ser treinados para diversas tarefas, como:
· Classificação de imagens;
· Detecção de objetos;
· Segmentação semântica.
Bibliotecas:
· TensorFlow
· Keras
· PyTorch
Como ocorre o treinamento:
· Os modelos aprendem utilizando um conjunto de dados rotulado.
· Durante o treinamento:
· Ajustam seus parâmetros internos;
· Buscam minimizar uma função de perda.
Aspectos importantes no treinamento:
Para desenvolver modelos eficazes, é necessário compreender:
· Uso de conjuntos de dados;
· Escolha de algoritmos;
· Otimização de hiperparâmetros.
🖼️ Implementação de Redes Neurais Convolucionais (CNNs) em Python
· As CNNs podem ser implementadas utilizando:
· TensorFlow;
· Keras;
· PyTorch.
· Essas bibliotecas oferecem interfaces intuitivas e poderosas para construção e treinamento dos modelos.
Componentes importantes da arquitetura CNN:
Para implementar CNNs de forma eficaz, é importante entender:
· Camadas convolucionais;
· Camadas de pooling;
· Camadas totalmente conectadas;
· Técnicas de regularização;
· Técnicas de otimização.
⚠️ Atenção:
· Compreender a arquitetura e as técnicas utilizadas é essencial para criar CNNs adaptadas às necessidades do projeto e com melhor desempenho.
🏢 Aplicações de modelos de visão computacional em negócios
· Os modelos de visão computacional geram insights valiosos e impulsionam a inovação empresarial.
· Além de áreas conhecidas como varejo, indústria automotiva e saúde, existem aplicações estratégicas em outros setores.
🌱 Agricultura e agronegócio
Aplicações:
· Monitoramento de plantações com drones e câmeras;
· Identificação de:
· Pragas;
· Doenças;
· Áreas de estresse agrícola.
· Apoio à tomada de decisão sobre:
· Manejo agrícola;
· Uso de fertilizantes;
· Aplicação de defensivos.
🚘 Setor de seguros
Aplicações:
· Avaliação de danos e sinistros por fotos e vídeos;
· Identificação e classificação de danos;
· Estimativa de custos de reparo;
· Agilização do processo de reivindicação.
Benefícios:
· Redução de custos operacionais;
· Atendimento mais rápido e conveniente aos segurados.
📦 Logística e cadeia de suprimentos
Aplicações:
· Automação do controle de qualidade;
· Inspeção de produtos em tempo real;
· Identificação de:
· Defeitos;
· Inconsistências;
· Falhas de fabricação.
· Rastreamento de mercadorias por:
· Leitura automática de códigos de barras;
· Reconhecimento de embalagens.
💡 Conclusão
· Dominar a construção e o treinamento de modelos de aprendizado de máquina e a implementação de CNNs é uma habilidade essencial em visão computacional.
· Essas tecnologias possuem alto valor estratégico, contribuindo para:
· Inovação;
· Crescimento empresarial;
· Competitividade das empresas em diferentes setores.
PRÉ-PROCESSAMENTO DE DADOS E AUGMENTAÇÃO DE IMAGENS EM PYTHON
📚 Introdução
· O pré-processamento de dados e a augmentação de imagens são etapas importantes na preparação de conjuntos de dados para modelos de visão computacional.
· Essas técnicas ajudam a:
· Melhorar a qualidade dos dados;
· Aumentar a diversidade das imagens;
· Tornar os modelos mais eficazes.
🛠️ Pré-processamento de dados em visão computacional
· Consiste em técnicas que melhoram a qualidade e utilidade dos dados.
· O objetivo é aumentar a eficácia dos modelos de visão computacional.
Técnicas comuns de pré-processamento:
Incluem:
· Normalização;
· Redimensionamento;
· Conversão de cores;
· Remoção de ruído;
· Correção de distorções.
Exemplo de normalização:
· Em conjuntos de imagens, é comum normalizar os valores de pixel para o intervalo [0,1].
· Isso é feito dividindo cada valor de pixel pelo valor máximo possível:
· Exemplo: 255 em imagens em escala de cinza.
Benefícios do pré-processamento:
· Reduz a variação nos dados de entrada;
· Torna os modelos mais:
· Robustos;
· Eficientes durante o treinamento;
· Eficientes na fase de inferência.
🔄 Augmentação de imagens
· Técnica usada para aumentar a quantidade e a diversidade de dados.
· Consiste em gerar novas imagens a partir de transformações aplicadas às imagens originais.
Transformações utilizadas:
Podem incluir:
· Rotação;
· Translação;
· Espelhamento;
· Mudança de brilho;
· Mudança de contraste.
Exemplo de augmentação:
· Em um conjunto de imagens de rostos para reconhecimento facial:
· As imagens podem ser rotacionadas em ângulos aleatórios;
· Isso simula diferentes orientações faciais;
· Gera novas imagens para enriquecer o conjunto de dados.
⚠️ Atenção:
· A augmentação permite criar conjuntos de dados mais variados, contribuindo para modelos com melhor capacidade de aprendizado.
🏢 Aplicações do pré-processamento em projetos de negócios
· O pré-processamento é essencial para garantir:
· Dados de alta qualidade;
· Melhor generalização dos modelos durante a inferência.
🛍️ Varejo:
Aplicações:
· Padronização da qualidade de fotos de produtos em catálogos on-line;
· Garantia de experiência visual consistente para os clientes.
🏭 Manufatura:
Aplicações:
· Correção de distorções em imagens de peças produzidas;
· Facilitação da inspeção automatizada de qualidade.
🏥 Saúde:
Aplicações:
· Normalização de imagens médicas de diferentes fontes;
· Melhoria da precisão do diagnóstico com visão computacional.
💡 Conclusão
· O uso adequado de técnicas de pré-processamento e augmentação melhora significativamente:
· O desempenho dos modelos;
· A confiabilidade das soluções de visão computacional.
· Essas técnicas possuem aplicação relevante em diversos projetos de negócios.
IMPLEMENTAÇÃO DE CNNS EM PYTHON PARA VISÃO COMPUTACIONAL
📚 Introdução
· As redes neurais convolucionais (CNNs) são fundamentais na visão computacional moderna.
· Permitem:
· Reconhecimento de padrões;
· Classificação de imagens.
· O foco está na implementação e treinamento de CNNs em Python.
🔍 CNNs e sua importância na visão computacional
· As CNNs são eficazes em tarefas de visão computacional devido à capacidade de processar imagens por meio de:
· Camadas convolucionais;
· Camadas de pooling.
· Essas estruturas permitem identificar e analisar padrões presentes nas imagens.
🛠️ Bibliotecas utilizadas:
🔹 TensorFlow
· Plataforma poderosa e flexível para:
· Desenvolvimento de modelos de deep learning;
· Treinamento de modelos.
· Possui suporte integrado para CNNs.
🔹 Seaborn
· Biblioteca voltada para visualização de dados.
· Complementa o TensorFlow ao facilitar a criação de:
· Gráficos estatísticos;
· Visualizações atrativas e informativas.
· Auxilia na:
· Análise dos resultados;
· Interpretação do desempenho dos modelos.
🗂️ Base de dados MNIST
· A MNIST (Modified National Institute of Standards and Technology)é uma base de dados amplamente utilizada em visão computacional.
· É considerada um benchmark padrão para avaliação de algoritmos de classificação de imagens.
Características da MNIST:
· Contém:
· 70 mil imagens;
· Imagens em escala de cinza;
· Dígitos manuscritos de 0 a 9;
· Cada imagem possui seu respectivo rótulo.
Finalidade da base MNIST:
· Permite testar a eficácia de algoritmos de aprendizado de máquina.
· É especialmente utilizada na avaliação de:
· Redes neurais convolucionais (CNNs);
· Tarefas de reconhecimento de padrões.
⚠️ Atenção:
· A MNIST oferece uma forma consistente e acessível de comparar o desempenho de modelos de classificação de imagens.
💡 Conclusão
· CNNs são pilares da visão computacional por sua capacidade de reconhecer e classificar padrões em imagens.
· O uso combinado de:
· TensorFlow para desenvolvimento e treinamento;
· Seaborn para visualização dos resultados;
· MNIST para testes e avaliação;
contribui para a implementação e análise eficiente de modelos de visão computacional em Python.
ROTEIRO DE PRÁTICA Treinamento de Rede Neural Convolucional (CNN) com MNIST
📚 Objetivo da prática
· Implementar e treinar uma Rede Neural Convolucional (CNN) usando a base de dados MNIST no Google Colab.
· Aprender:
· Instalação das bibliotecas necessárias;
· Pré-processamento dos dados;
· Construção e treinamento do modelo CNN;
· Avaliação do desempenho por meio da matriz de confusão.
Parte 1 — Treinamento da Rede Neural
📦 Passo 1: Instalar o TensorFlow
Objetivo: Instalar o TensorFlow, biblioteca utilizada para criar e treinar modelos de deep learning.
!pip install tensorflow # Instala a biblioteca TensorFlow
Passo 2: Implementar o código no Google Colab
Objetivo do código:
· Carregar a base MNIST;
· Preparar as imagens;
· Construir a arquitetura CNN;
· Compilar e treinar o modelo para reconhecer dígitos manuscritos.
import tensorflow as tf # Importa o TensorFlow
from tensorflow.keras import layers, models # Importa camadas e modelos do Keras
from keras.datasets import mnist # Importa a base MNIST
import numpy as np # Importa operações numéricas
import matplotlib.pyplot as plt # Importa geração de gráficos
# Carregar dados MNIST
(train_images, train_labels), (test_images, test_labels) = mnist.load_data() # Carrega imagens e rótulos
# Pré-processamento dos dados
train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255 # Redimensiona e normaliza treino
test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255 # Redimensiona e normaliza teste
# Converter rótulos em one-hot
train_labels = tf.keras.utils.to_categorical(train_labels) # Converte rótulos de treino
test_labels = tf.keras.utils.to_categorical(test_labels) # Converte rótulos de teste
# Construir o modelo CNN
model = models.Sequential([ # Cria modelo sequencial
layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), # Camada convolucional com 32 filtros
layers.MaxPooling2D((2,2)), # Reduz dimensionalidade da imagem
layers.Conv2D(64, (3,3), activation='relu'), # Segunda camada convolucional
layers.MaxPooling2D((2,2)), # Segunda camada de pooling
layers.Conv2D(64, (3,3), activation='relu'), # Terceira camada convolucional
layers.Flatten(), # Transforma dados em vetor
layers.Dense(64, activation='relu'), # Camada densa com 64 neurônios
layers.Dense(10, activation='softmax') # Saída com 10 classes (0–9)
])
# Compilar modelo
model.compile(
optimizer='adam', # Define o otimizador Adam
loss='categorical_crossentropy', # Função de perda para classificação
metrics=['accuracy'] # Mede a acurácia
)
# Treinar o modelo
model.fit(
train_images,
train_labels,
epochs=5, # Número de épocas
batch_size=64, # Quantidade de imagens por lote
validation_data=(test_images, test_labels) # Dados de validação
)
▶️ Passo 3: Executar o código
· Após implementar o código no Google Colab:
· Execute a célula;
· O modelo iniciará o treinamento;
· A acurácia será exibida durante as épocas.
Resultado da execução:
📊 Parte 2 — Compreensão prática dos resultados da CNN
📦 Passo 4: Instalar o Seaborn
Objetivo: Instalar o Seaborn, biblioteca usada para criar visualizações gráficas.
!pip install seaborn # Instala a biblioteca Seaborn
📈 Passo 5: Gerar a matriz de confusão
Objetivo do código
· Fazer previsões usando a CNN treinada;
· Comparar previsões e valores reais;
· Criar uma matriz de confusão para avaliar o desempenho do modelo.
import seaborn as sns # Importa Seaborn
# Fazer previsões
predictions = model.predict(test_images) # Gera previsões do modelo
# Converter previsões em rótulos
predicted_labels = np.argmax(predictions, axis=1) # Obtém classe prevista
true_labels = np.argmax(test_labels, axis=1) # Obtém classe real
# Calcular matriz de confusão
confusion_matrix = tf.math.confusion_matrix(
labels=true_labels,
predictions=predicted_labels
) # Cria matriz de confusão
# Plotar gráfico
plt.figure(figsize=(10,8)) # Define tamanho do gráfico
sns.heatmap(
confusion_matrix,
annot=True,
fmt='d',
cmap='viridis'
) # Gera mapa de calor
plt.xlabel('Classe Predita') # Nome eixo X
plt.ylabel('Classe Verdadeira') # Nome eixo Y
plt.title('Matriz de Confusão') # Título gráfico
plt.show() # Exibe gráfico
▶️ Passo 6: Executar o código
· Execute o código no Google Colab.
· O resultado será uma matriz de confusão em formato de gráfico de calor.
📊 Matriz de Confusão
📌 O que a matriz mostra
· A matriz de confusão apresenta como a rede neural classificou os dados.
· Permite visualizar:
· Acertos (diagonal);
· Erros;
· Classes com melhor ou pior desempenho.
Exemplo apresentado no texto
· O dígito 0:
· Foi classificado corretamente 976 vezes;
· Foi classificado incorretamente:
· 1 vez como 1;
· 2 vezes como 7;
· 1vez como 8.
💡 Dica: Quanto maiores os valores na diagonal principal da matriz, melhor o desempenho do modelo.
✅ Conclusão
· A prática apresentou uma aplicação completa de visão computacional utilizando:
· TensorFlow;
· CNNs;
· Base MNIST;
· Seaborn.
· O processo envolveu:
· Treinamento da rede neural;
· Geração de previsões;
· Avaliação do desempenho com matriz de confusão.
· O estudo mostra que aplicações de machine learning para visão computacional podem ser ampliadas para projetos mais avançados.
Alterando o código acima, foi comentada a linha responsável por realizar a terceira camada convolucional e executado todo o código novamente. Verificou-se que:
#layers.Conv2D(64, (3,3), activation='relu')
Sim, houve modificação nos resultados, mas ela foi pequena e não alterou significativamente o desempenho final do modelo.
🔍 Houve alteração?
✅ Sim, mas de forma sutil.
Apesar da acurácia final praticamente permanecer igual, a matriz de confusão mudou.
Isso significa que:
· O desempenho geral ficou semelhante;
· Porém, os erros e acertos por classe foram distribuídos de forma diferente.
Por exemplo:
Classe
Com 3ª camada
Sem 3ª camada
0
976
978
5
882
874
6
948
932
8
967
958
Algumas classes melhoraram levemente e outras pioraram.
🧩 Motivo da alteração
Existem dois fatores principais:
1️⃣ Remoção da terceira camada convolucional
A terceira camada convolucional é responsável por aprender características mais profundas e detalhadas da imagem.
Com ela:
· A rede possui maior profundidade;
· Aprende padrões mais complexos;
· Tem maior capacidade de extração de características.
Sem ela:
· O modelo fica mais simples;
· Possui menos parâmetros;
· Realiza menos processamento de padrões avançados.
Isso modifica a forma como a CNN aprende e classifica os dígitos.
2️⃣ Natureza aleatória do treinamento
⚠️ Atenção
Mesmo treinando o mesmo modelo do zero, os resultados podem variar devido a fatores aleatórios, como:
· Inicialização aleatória dos pesos;
· Embaralhamento (shuffle) dos dados;
· Atualizações do otimizador Adam durante o treinamento.
Por isso, pequenas diferenças entre execuções são esperadas.💡 Conclusão
Sim, houve modificação nos resultados, observada principalmente na matriz de confusão e na distribuição dos erros por classe.
Entretanto, a acurácia final permaneceu praticamente igual (≈99,16%), indicando que, para o conjunto MNIST e apenas 5 épocas de treino, a remoção da terceira camada convolucional não causou perda significativa de desempenho geral, embora tenha alterado o comportamento interno da classificação e a precisão em algumas classes específicas.
Contudo reduzir o número de camadas de convolução podem mudar os resultados, principalmente em relação à:
· Acurácia do modelo;
· Capacidade de reconhecer padrões;
· Desempenho na classificação das imagens;
· Matriz de confusão.
⚠️ Consequências práticas
Possíveis vantagens
· Treinamento mais rápido;
· Menor custo computacional;
· Modelo mais leve.
Possíveis desvantagens
· Redução da capacidade de identificar padrões complexos;
· Possível queda na acurácia;
· Maior chance de erros de classificação.
TEMA 4. MACHINE LEARNING APLICADO PARA PLN
📌 Crescimento do uso de serviços eletrônicos
· O uso de serviços eletrônicos cresce para:
· reduzir custos financeiros;
· economizar tempo;
· aumentar a eficiência no uso de recursos.
🧠 Expansão da Inteligência Artificial
· A busca por maior eficiência impulsiona investimentos em Inteligência Artificial (IA).
· Entre as áreas em crescimento da IA está o Processamento de Linguagem Natural (PLN).
💬 Processamento de Linguagem Natural (PLN)
· O PLN é voltado para o desenvolvimento de sistemas capazes de trabalhar com linguagem humana.
· O estudo apresenta modelos de aprendizado de máquina aplicados ao PLN.
· Essas tecnologias fazem parte das aplicações modernas que estão transformando a convivência e a interação na sociedade.
Módulo 1. Redes Neurais para PLN
VISÃO GERAL DE REDES NEURAIS
🔹 Aspectos essenciais de redes neurais
· Redes neurais são modelos computacionais da inteligência artificial inspirados na estrutura e funcionamento do cérebro humano.
· São utilizadas em diferentes tarefas, como:
· Reconhecimento de imagens;
· Processamento de linguagem;
· Apoio à tomada de decisão.
Estrutura básica de uma rede neural
· A rede neural é composta por nós interconectados, que representam neurônios artificiais.
· Esses neurônios são organizados em camadas.
Funcionamento dos neurônios
· Cada neurônio:
· Recebe entradas (inputs);
· Processa essas entradas;
· Aplica uma função que combina:
· Pesos (weights);
· Limites (threshold);
· Produz uma saída (activation).
Processo de aprendizado
· O aprendizado da rede neural ocorre por meio de um algoritmo de otimização.
· Esse algoritmo busca:
· Minimizar os erros entre:
· O resultado esperado;
· O resultado de referência.
· Para isso, utiliza-se um conjunto de dados chamado base de treinamento.
Resultado do treinamento
· Após o treinamento, as redes neurais conseguem:
· Generalizar características dos dados;
· Aprender padrões;
· Reconhecer informações relevantes em novos dados.
💬 Redes neurais aplicadas para PLN
🔹 Aplicação em Processamento de Linguagem Natural (PLN):
· As redes neurais possuem forte aplicação em PLN.
· Houve um crescimento significativo de aplicações nessa área.
· Atualmente, pessoas com diferentes níveis de conhecimento utilizam ferramentas de PLN para:
· Fazer consultas;
· Estudar diversos assuntos.
Motivo da popularidade:
· Parte dessa popularidade ocorre porque as redes neurais conseguem:
· Reconhecer padrões;
· Aprender representações complexas;
· Processar grandes volumes de dados textuais.
🤖 Modelos de redes neurais usados em PLN
🔹 Redes neurais recorrentes (RNNs)
· Desenvolvidas para processar dados sequenciais.
· São adequadas para PLN porque:
· Consideram entradas anteriores ao processar a entrada atual.
· Isso permite melhor compreensão da natureza sequencial do texto.
🔹 Redes neurais convolucionais (CNNs)
· Muito utilizadas em visão computacional.
· Também podem ser aplicadas em PLN para:
· Classificação de texto;
· Análise de sentimento.
· Principal destaque:
· Capacidade de:
· Capturar padrões locais;
· Identificar estruturas hierárquicas no texto.
🔹 Transformadores
· Modelos baseados em mecanismo de atenção.
· Esse mecanismo permite:
· Capturar dependências entre palavras com elevada eficiência.
· Principais aplicações:
· Resposta a perguntas;
· Classificação de texto;
· Tradução automática.
🔹 Transferência de aprendizado e modelos pré-treinados
· Baseiam-se na arquitetura dos transformadores.
· Funcionam de forma simplificada por meio da:
· Previsão da próxima palavra em uma sequência.
· Características principais:
· São pré-treinados com grandes quantidades de textos.
· Isso os torna mais eficazes para:
· Capturar representações contextualizadas das palavras;
· Produzir texto semelhante ao humano.
📌 Conclusão
· As redes neurais possuem papel fundamental nas aplicações de PLN.
· Sua capacidade de:
· Aprender padrões;
· Processar grandes volumes de texto;
· Compreender relações linguísticas;
contribui diretamente para o avanço das tecnologias de linguagem natural.
REDES NEURAIS RECORRENTES
🧠 Estrutura das redes neurais recorrentes
· As redes neurais recorrentes (RNNs – Recurrent Neural Network) foram desenvolvidas para processar dados sequenciais.
· Essa característica as torna adequadas para aplicações que envolvem:
· Previsões de séries temporais;
· Processamento de linguagem natural (PLN);
· Processamento de fala.
· Funcionamento geral:
· As RNNs possuem uma estrutura formada por conexões que criam loops.
· Esses loops permitem que a rede:
· Mantenha memória interna;
· Capture dependências temporais nos dados de entrada.
⚙️ Elementos da estrutura das RNNs
🔹 Entrada sequencial
· Os dados são recebidos como sequências de entradas.
· O processamento ocorre:
· Um elemento por vez;
· Seguindo a ordem da sequência.
🔹 Memória interna
· As RNNs utilizam estados ocultos (hidden states).
· Esses estados funcionam como uma memória interna.
· Função da memória interna:
· Permite:
· Armazenar informações de entradas anteriores;
· Utilizar esse contexto durante o processamento da sequência.
🔹 Parâmetros compartilhados
· As RNNs utilizam os mesmos pesos e vieses em todas as etapas do tempo.
· Resultado desse compartilhamento:
· A rede consegue:
· Aprender padrões;
· Identificar relacionamentos em dados sequenciais.
🔹 Desdobramento ao longo do tempo
· Durante o treinamento os estados ocultos são conectados em várias etapas temporais.
· Esse processo representa o comportamento da rede ao longo da sequência de dados.
🔹 Backpropagation Through Time (BPTT)
· O BPTT (Backpropagation Through Time) é uma variação do algoritmo backpropagation.
· Foi adaptado para lidar com a natureza temporal dos dados.
· Função do BPTT: Realizar o treinamento das RNNs considerando as conexões entre diferentes momentos da sequência.
📌 Destaque das RNNs
· As RNNs se destacam em tarefas nas quais:
· A ordem dos dados é importante;
· O contexto das informações influencia o resultado.
· Por isso, são especialmente úteis em aplicações que trabalham com dados sequenciais.
RNNS APLICADAS PARA PLN
🧠 Papel das RNNs no PLN
· As RNNs (Redes Neurais Recorrentes) não são exclusivas do Processamento de Linguagem Natural (PLN), mas possuem grande destaque nessa área.
· Esse destaque ocorre devido à capacidade de:
· Lidar com dados sequenciais;
· Capturar informações contextuais;
· Identificar dependências entre palavras nas frases.
💬 Aplicações das RNNs em PLN
🔹 Modelagem de linguagem
· Utilizada para prever a probabilidade de ocorrência de uma palavra com base nas palavras anteriores da frase.
🔹 Geração de texto
· Permite:
· Criar poesias;
· Produzir histórias;
· Gerar diálogos.
· O modelo aprende a partir do treinamento em um grande corpus de texto.
🔹 Tradução de máquina
· Responsável por:
· Receber uma frase em um idioma;
· Traduzir para outro idioma.
🔹 Análise de sentimento
· Utilizada para classificar textos em categoriascomo:
· Positivo;
· Negativo;
· Neutro.
🔹 Reconhecimento de entidade nomeada
· Tem a função de identificar e classificar entidades presentes no texto.
· Exemplos de entidades
· Nomes;
· Datas;
· Locais.
🔹 Reconhecimento de fala
· Permite converter linguagem falada em texto escrito.
🔹 Resumo de texto
· Utilizada para gerar versões resumidas de textos longos.
· O processo considera:
· O contexto;
· As informações importantes do texto.
🔹 Sistemas de diálogo
· As RNNs podem ser usadas na criação de:
· Chatbots;
· Sistemas conversacionais.
· Função principal:
· Gerar respostas apropriadas considerando:
· O contexto da conversa;
· A interação com o usuário.
📌 Conclusão
· As RNNs apresentam grande sucesso em aplicações de PLN devido à sua capacidade de:
· Processar sequências;
· Compreender contexto;
· Relacionar informações entre palavras e frases.
REDES NEURAIS DE CONVOLUÇÃO
🧠 Aspectos essenciais das CNNs
· As CNNs (Convolutional Neural Networks) são modelos de aprendizado profundo (deep learning).
· Foram projetadas inicialmente para reconhecimento visual.
· Principais aplicações iniciais:
· Classificação de imagens;
· Detecção de objetos;
· Segmentação de imagens.
⚙️ Camadas essenciais da arquitetura de uma CNN
🔹 Observação importante:
· Alguns textos utilizam o termo recursos em vez de características.
· No contexto das CNNs: Recursos e características possuem o mesmo significado.
🔹 Camadas de convolução:
· Utilizam a técnica de convolução para:
· Capturar características dos dados;
· Criar um mapa de características.
· Isso é feito por meio da aplicação de: Filtros (kernels).
🔹 Camada de pooling: Responsável por reduzir o mapa de características.
🔹 Funções de ativação: Possuem o objetivo de aprender padrões complexos presentes nos dados.
🔹 Camadas totalmente conectadas: Realizam a conexão de todos os neurônios da camada anterior com a camada de saída.
🔹 Dropout:
· Técnica usada para evitar que o modelo fique superespecializado na base de treinamento.
· ⚠️ Overfitting: Esse excesso de especialização é chamado de overfitting.
· Funcionamento do dropout:
· Consiste em descartar neurônios aleatoriamente.
· Objetivo: Aumentar a capacidade do modelo de reconhecer diferentes entradas.
💬 CNNs aplicadas para PLN
🔹 Uso das CNNs além da visão computacional
· Embora tenham grande destaque em visão computacional, as CNNs também podem ser aplicadas em:
· Processamento de Linguagem Natural (PLN);
· Reconhecimento de fala.
🔹 Relação entre visão computacional e PLN
· Tanto imagens quanto textos precisam ser convertidos em representações numéricas para processamento.
· Processamento de imagens: A imagem é convertida em matriz numérica.
· Processamento de texto: As palavras são convertidas em vetores numéricos.
· Diferença principal:
· Nas CNNs aplicadas ao texto: O processamento ocorre em uma dimensão;
· Enquanto em imagens: Trabalha-se com duas ou três dimensões.
🤖 Aplicações das CNNs em PLN
As CNNs podem ser utilizadas para diversas tarefas em processamento de linguagem natural, como:
· Classificação de texto;
· Classificação de documentos;
· Reconhecimento de entidades nomeadas;
· Geração de texto;
· Modelagem de linguagem.
🔹 Modelagem de linguagem:
· Nesse tipo de aplicação as CNNs atuam como parte de arquiteturas mais complexas.
📌 Conclusão
· As CNNs, embora originalmente desenvolvidas para reconhecimento visual, também apresentam aplicações relevantes em PLN.
· Sua capacidade de:
· Extrair características;
· Trabalhar com representações numéricas;
· Executar diferentes tarefas linguísticas;
amplia seu uso além da visão computacional.
MODELO TRANSFORMER
🧠 Arquitetura e aspectos do modelo Transformer
· O Transformer é uma das arquiteturas mais modernas de redes neurais para Processamento de Linguagem Natural (PLN).
· Foi apresentado no artigo Attention is All You Need (2017).
· Sua principal característica é o mecanismo de atenção.
🔹 Mecanismo de atenção:
· Permite ao modelo:
· Focalizar os aspectos essenciais de uma sequência de entrada;
· Identificar informações relevantes durante o processamento.
⚙️ Principais características do Transformer
🔹 Arquitetura sem recorrência:
· O Transformer NÃO possui loops ou recorrência.
· Isso possibilita: Paralelização do treinamento.
· Essa é uma diferença importante em relação às RNNs (Redes Neurais Recorrentes).
🔹 Codificador e decodificador
· Codificador (Encoder):
· Responsável por:
· Processar a sequência de entrada;
· Gerar representações contextuais.
· Decodificador (Decoder):
· Utiliza essas representações para gerar a sequência de saída.
🔹 Conexões residuais e normalização
· Possuem o objetivo de reduzir problemas de aprendizado do modelo.
· ⚠️ Problema minimizado:
· Buscam diminuir os impactos do desaparecimento do gradiente durante o treinamento.
📚 Modelos baseados em Transformer
🔹 BERT
· O BERT (Bidirectional Encoder Representations from Transformers) é um dos principais modelos baseados em Transformer.
· Características:
· Produz: resultados de alta qualidade.
· Funciona por meio de:
· Pré-treinamento em grandes volumes de texto;
· Posterior ajuste para tarefas específicas.
💬 Modelo Transformer aplicado para PLN
🔹 Modelagem de linguagem
· O Transformer pode ser treinado para prever a probabilidade de ocorrência de palavras.
· Considera:
· Palavras anteriores;
· Palavras posteriores.
🔹 Transferência de aprendizado
· O modelo é pré-treinado de forma não supervisionada.
· O treinamento utiliza grandes volumes de texto (corpora ou corpus).
· Resultado: O modelo aprende a capturar relações entre palavras.
🔹 Ajuste fino para tarefas específicas
· Após o pré-treinamento o modelo pode ser adaptado para aplicações específicas.
· Exemplos:
· Análise de sentimento;
· Resposta a perguntas;
· Reconhecimento de entidades nomeadas;
· Tradução automática.
🔹 Captura eficiente de dependências
· O mecanismo de atenção permite dar foco às palavras mais relevantes de uma frase.
· Isso melhora a compreensão do contexto e das relações linguísticas.
📌 Conclusão
· O sucesso do Transformer está na capacidade de:
· Aprender padrões complexos;
· Identificar relacionamentos na linguagem natural.
· Além do BERT, o GPT também é uma aplicação baseada na arquitetura Transformer.
TRANSFORMADOR GENERATIVO PRÉ-TREINADO
🧠 O que é o GPT
· O GPT (Transformador Generativo Pré-Treinado) é um modelo de linguagem desenvolvido pela OpenAI.
· É baseado na arquitetura Transformer.
· Tornou-se amplamente conhecido por suas aplicações em Processamento de Linguagem Natural (PLN).
· Ganhou grande notoriedade em 2023 devido ao impacto de suas aplicações em diversas áreas do conhecimento.
⚙️ Aspectos essenciais do GPT
🔹 Arquitetura Transformer:
· O GPT é construído com base na arquitetura Transformer.
· Por isso, utiliza mecanismos de atenção.
🔹 Modelo de linguagem generativa:
· O GPT é um modelo generativo.
· Isso significa que ele pode produzir textos semelhantes aos escritos por humanos.
🔹 Pré-treinamento com aprendizado não supervisionado:
· O GPT é treinado com:
· Grandes volumes de dados textuais;
· Aprendizado não supervisionado.
· Funcionamento no pré-treinamento:
· O modelo aprende a:
· Prever a próxima palavra de uma sequência;
· Utilizar o contexto para construir conexões entre palavras.
🔹 Mecanismo de atenção:
· O mecanismo de atenção permite ao GPT:
· Capturar dependências entre palavras;
· Identificar a importância das palavras de acordo com o contexto da frase.
🔹 Geração autorregressiva:
· O GPT utiliza geração autorregressiva.
· Funcionamento: As palavras anteriores são usadas para gerar sentenças coerentes.
🔹 Avanço contínuo:
· O GPT possui diferentes variantes, como:
· GPT-2;
· GPT-3.
· Evolução observada:
· Essas versões demonstraram avanços em:
· Compreensão;
· Geração de texto;
· Processamento de linguagem natural.
💬 GPT aplicado ao PLN
· O funcionamento do GPT em PLN destaca duas etapas:
1. Pré-treinamento
· O modeloé treinado em:
· Grandes corpus de texto;
· De forma não supervisionada.
· Objetivos do pré-treinamento:
· Desenvolver a capacidade de:
· Relacionar palavras;
· Fazer previsões sobre a próxima palavra;
· Considerar o contexto da sequência.
· Resultado: O texto gerado apresenta:
· Coerência sintática;
· Coerência semântica.
· Destaque: O processo utiliza bilhões de palavras em conjuntos de dados.
2. Ajuste fino (Fine-tuning)
· Ocorre após o pré-treinamento.
· Objetivo: Adaptar o modelo para tarefas específicas.
· Funcionamento:
· Alguns parâmetros do modelo são modificados e ajustados;
· Para que o GPT fique mais adequado ao contexto da tarefa desejada.
🌐 Aplicações do GPT
🔹 Geração de texto:
· O GPT pode:
· Produzir histórias;
· Criar poesias;
· Dialogar com usuários a partir de uma sequência inicial de palavras.
🔹 Conclusão e sugestão de texto: O modelo consegue completar frases e fazer sugestões de continuação com base em entradas parciais.
🔹 Respostas a perguntas: Pode responder perguntas considerando determinado contexto.
🔹 Sumarização de texto: É capaz de resumir textos.
🔹 Tradução de idiomas: O GPT pode converter textos entre diferentes idiomas.
📌 Conclusão
· O GPT causou grande impacto no PLN devido à capacidade de:
· Compreender linguagem natural;
· Gerar textos coerentes;
· Adaptar-se a diferentes tarefas.
· Suas aplicações abrangem diversas áreas e contribuem para:
· Novas oportunidades de trabalho;
· Pesquisas em inteligência artificial e linguagem natural.
Módulo 2. Frameworks para PLN
VISÃO GERAL SOBRE FRAMEWORKS
🧠 Aspectos gerais sobre frameworks
· Frameworks são estruturas com regras e predefinições que orientam a forma de desenvolver aplicações.
· Na computação, ajudam a:
· Padronizar o desenvolvimento de software;
· Acelerar a criação de aplicações;
· Fornecer ferramentas e bibliotecas úteis ao desenvolvedor.
⚙️ Aspectos essenciais de um framework
🔹 Definição e propósito:
· Todo framework é criado com um objetivo específico.
· Exemplo: Frameworks voltados para aprendizado de máquina.
🔹 Abstração e modularidade:
· O framework deve oferecer uma camada de alto nível.
· Isso permite ao desenvolvedor:
· Abstrair complexidades da tecnologia utilizada.
· Funcionamento:
· Essa abstração pode ocorrer por meio de:
· Componentes de software com funções específicas;
· Componentes que podem ser testados separadamente.
🔹 Componentes reutilizáveis:
· Frameworks disponibilizam elementos reutilizáveis, como:
· Bibliotecas;
· Módulos;
· APIs.
· Objetivo: Facilitar a implementação de funcionalidades comuns.
· Exemplo: Frameworks que oferecem modelos de aprendizado de máquina prontos para uso.
🔹 Suporte para linguagens de programação:
· Um framework: Não é uma linguagem de programação.
· Portanto, deve oferecer recursos para ser utilizado em: Uma ou mais linguagens.
· Exemplos:
· Frameworks compatíveis com:
· Python;
· JavaScript.
🔹 Documentação:
· Espera-se que um framework possua: Boa documentação.
· Isso facilita:
· O estudo;
· A utilização da ferramenta.
⚠️ Limitações dos frameworks:
· Apesar das vantagens, frameworks podem:
· Impor restrições ao desenvolvimento.
· Expressão comum: O termo “Engessar o programador” refere-se às regras e limitações impostas pelo framework.
· Importância:
· Mesmo com restrições, frameworks são fundamentais para:
· Padronizar;
· Agilizar o desenvolvimento de software.
🔄 Framework x Biblioteca
🔹 Diferença principal: Framework e biblioteca não são a mesma coisa.
· Framework
· Possui:
· Escopo mais amplo;
· Orientação para a estrutura geral da aplicação.
· Biblioteca
· Possui:
· Escopo mais específico;
· Funções voltadas para tarefas particulares.
🛠️ Tipos de frameworks
1. Frameworks para aplicações web
· Fornecem recursos para:
· Solicitações HTTP;
· Roteamento;
· Modelagem;
· Interações com banco de dados.
Exemplos:
· Django;
· Flask;
· Ruby on Rails;
· Express.js;
· ASP.NET.
2. Frameworks para interface do usuário
· Disponibilizam:
· Componentes;
· Estilos pré-construídos.
· Objetivo: Facilitar a construção de Interfaces de usuário.
· Exemplos:
· NextJS;
· Angular.
3. Frameworks para tratamento de testes
· Oferecem:
· Ferramentas;
· APIs para testes automatizados.
· Exemplos citados
· JUnit;
· pytest;
· Jasmine.
4. Frameworks para ciência de dados e aprendizado de máquina
· Disponibilizam ferramentas para:
· Manipulação de dados;
· Análise de dados;
· Visualização;
· Modelos de aprendizado de máquina.
· Frameworks para PLN:
· spaCy;
· gensim;
· scikit-learn;
· Transformers.
📌 Conclusão
· Frameworks são ferramentas importantes porque:
· Organizam o desenvolvimento;
· Reduzem complexidade;
· Reaproveitam componentes;
· Tornam o processo de criação de software mais rápido e padronizado.
· Eles existem para diferentes finalidades, incluindo:
· Aplicações web;
· Interfaces;
· Testes;
· Ciência de dados e aprendizado de máquina.
FRAMEWORK SPACY
🧠 Aspectos conceituais sobre o spaCy
· O spaCy é um framework de Processamento de Linguagem Natural (PLN):
· Principal objetivo: Realizar o processamento eficiente e preciso de dados de textos, por meio de algoritmos e estruturas de dados eficientes.
· O spaCy é:
· De código aberto;
· Desenvolvido em Python;
· Criado pela equipe da Explosion AI.
· Site oficial: https://spacy.io/
📌 Motivos da popularidade do spaCy
🔹 Eficiência: Utiliza estruturas de dados e algoritmos eficientes, isso permite processar grandes volumes de texto.
🔹 Personalização: Permite ajustar modelos conforme o domínio da aplicação.
🔹 Facilidade de uso: Disponibiliza componentes pré-construídos facilitando tarefas comuns de PLN.
🔹 Precisão: Oferece modelos pré-treinados de aprendizado de máquina.
🔹 Suporte multilíngue: Possui suporte para diversos idiomas.
📌 Instalação do spaCy e modelo de linguagem
· Passo 1 — Instalar o spaCy
· Execute na primeira célula:
!pip install spacy
· Passo 2 — Baixar o modelo de linguagem
· O código usa o modelo en_core_web_sm (inglês). Execute:
!python -m spacy download en_core_web_sm
🧩 Principais funcionalidades de PLN no spaCy
🔹 Tokenização:
· Objetivo: Dividir um texto em tokens individuais.
· Tokens podem ser:
· Palavras;
· Pontuações;
· Outros elementos do texto.
· Código:
nlp = spacy.load("en_core_web_sm") # Carrega o modelo de linguagem do spaCy
texto = "Eu uso o framework spaCy." # Define o texto que será analisado
doc = nlp(texto) # Processa o texto e cria um objeto analisável
for token in doc: # Percorre cada token presente no texto
print(token.text) # Exibe o texto de cada token
Imprime:
🔹 Marcação de parte do discurso (POS Tagging)
· Objetivo: Atribuir classes gramaticais a cada token.
· Exemplos de classes gramaticais:
· Substantivo;
· Verbo;
· Adjetivo.
· Código:
for token in doc: # Percorre todos os tokens do texto processado
print(token.text, token.pos_) # Exibe o token e sua classe gramatical
Imprime:
🔹 Reconhecimento de Entidade Nomeada (NER)
· Objetivo: Identificar e classificar entidades nomeadas presentes no texto.
· Exemplos de entidades:
· Nomes;
· Lugares;
· Datas.
· Código:
for ent in doc.ents: # Percorre as entidades identificadas no texto
print(ent.text, ent.label_) # Exibe a entidade e sua classificação
Imprime:
📌 Resumo geral
· O spaCy é um framework de PLN popular devido à:
· Eficiência;
· Facilidade de uso;
· Personalização;
· Precisão;
· Suporte a múltiplos idiomas.
· Entre suas funcionalidades destacam-se:
· Tokenização;
· Marcação de parte do discurso;
· Reconhecimento de entidades nomeadas.
· Esses recursos permitem realizar tarefas importantes de análise e processamento de textos de forma prática e eficiente.
FRAMEWORK GENSIM
🧠 Aspectos conceituais sobre o Gensim
· O Gensim é um framework de código aberto para Processamento de Linguagem Natural (PLN).
· Foi desenvolvido em: Python.
· É ideal para grandes coleções de texto.
· Projetado para tarefas como:
· Vetorização de texto: é o processode converter palavras, frases ou documentos inteiros em sequências de números (vetores).
· Cálculo de similaridade de documentos: Calcular a similaridade entre documentos com base em suas representações vetoriais.
· Modelagem de tópicos: Descoberta de tópicos em uma coleção de documentos sem a necessidade de rotulagem manual);
· Outras tarefas de análise de texto.
· Objetivo principal: Tratar tarefas de processamento de linguagem natural com foco na modelagem de tópicos e na criação de incorporações de palavras.
· Site oficial: https://radimrehurek.com/gensim/
📌 Principais características do Gensim
🔹 Modelagem de tópicos
· Implementa algoritmos como:
· LSA (Análise Semântica Latente);
· LDA (Alocação de Dirichlet Latente).
· Objetivo:
· Descobrir tópicos em coleções de documentos;
· Sem necessidade de rotulagem manual.
🔹 Incorporações de palavras (Word Embeddings)
· Disponibiliza ferramentas para criar representações vetoriais de palavras.
· Exemplo de Algoritmos:
· Word2Vec;
· FastText.
🔹 Similaridade de documentos
· Permite calcular a similaridade entre documentos.
· O cálculo é feito com base em representações vetoriais.
🔹 Vetorização de texto
· Oferece métodos para converter textos em representações numéricas.
· Essas representações podem ser usadas em modelos de aprendizado de máquina.
📌 Instalação do Gensim
Passo 1 — Instalar o Gensim no Colab
!pip install gensim
⚙️ Principais funcionalidades de PLN no Gensim
🔹 Incorporações de palavras com Word2Vec
Objetivo: Criar representações numéricas de palavras usando o algoritmo Word2Vec.
Código:
from gensim.models import Word2Vec # Importa o Word2Vec
# Define frases de treinamento
frases = [
["laranja", "é", "uma", "fruta"],
["banana", "também", "é", "uma", "fruta"]
]
modelo = Word2Vec( # Treina o modelo
frases,
vector_size=100, # Tamanho do vetor
window=5, # Janela de contexto
min_count=1, # Frequência mínima da palavra
sg=0 # Usa arquitetura CBOW
)
vetor = modelo.wv["laranja"] # Obtém vetor da palavra
print(vetor) # Exibe o vetor
Imprime: [-8.7274825e-03 2.1301615e-03 -8.7354420e-04 -9.3190884e-03 -9.4281426e-03 -1.4107180e-03 4.4324086e-03 3.7040710e-03 -6.4986930e-03 -6.8730675e-03 -4.9994122e-03 -2.2868442e-03 -7.2502876e-03 -9.6033178e-03 -2.7436293e-03 -8.3628409e-03 -6.0388758e-03 -5.6709289e-03 -2.3441375e-03 -1.7069972e-03 -8.9569986e-03 -7.3519943e-04 8.1525063e-03 7.6904297e-03 -7.2061159e-03 -3.6668312e-03 3.1185520e-03 -9.5707225e-03 1.4764392e-03 6.5244664e-03 5.7464195e-03 -8.7630618e-03 -4.5171441e-03 -8.1401607e-03 4.5956374e-05 9.2636338e-03 5.9733056e-03 5.0673080e-03 5.0610625e-03 -3.2429171e-03 9.5521836e-03 -7.3564244e-03 -7.2703874e-03 -2.2653891e-03 -7.7856064e-04 -3.2161034e-03 -5.9258583e-04 7.4888230e-03 -6.9751858e-04 -1.6249407e-03 2.7443992e-03 -8.3591007e-03 7.8558037e-03 8.5361041e-03 -9.5840869e-03 2.4462664e-03 9.9049713e-03 -7.6658037e-03 -6.9669187e-03 -7.7365171e-03 8.3959233e-03 -6.8133592e-04 9.1444086e-03 -8.1582209e-03 3.7430846e-03 2.6350426e-03 7.4271322e-04 2.3276759e-03 -7.4690939e-03 -9.3583735e-03 2.3545765e-03 6.1484552e-03 7.9856887e-03 5.7358947e-03 -7.7733636e-04 8.3061643e-03 -9.3363142e-03 3.4061326e-03 2.6675343e-04 3.8572443e-03 7.3857834e-03 -6.7251669e-03 5.5844807e-03 -9.5222248e-03 -8.0445886e-04 -8.6887367e-03 -5.0986730e-03 9.2892265e-03 -1.8582619e-03 2.9144264e-03 9.0712793e-03 8.9381328e-03 -8.2084350e-03 -3.0123137e-03 9.8866057e-03 5.1044310e-03 -1.5880871e-03 -8.6920215e-03 2.9615164e-03 -6.6758976e-03]
O que o código faz:
· Treina um modelo com frases simples.
· Aprende relações entre palavras.
· Gera um vetor numérico para a palavra “laranja”.
· Por que parece “grande”: mesmo com poucas frases, o modelo ainda gera 100 números para cada palavra, porque essa é a dimensão que você definiu. Se fosse vector_size=300, o vetor teria 300 números.
🔹 Similaridade de documentos com consultas de similaridade
Objetivo: Calcular a semelhança entre documentos usando incorporações de palavras.
Código:
from gensim.models import Word2Vec # Importa Word2Vec
frases = [ # Frases de exemplo
["laranja", "é", "uma", "fruta"],
["banana", "também", "é", "uma", "fruta"]
]
modelo = Word2Vec(frases, min_count=1) # Treina modelo
similaridade = modelo.wv.similarity("laranja", "banana") # Calcula similaridade
print(similaridade) # Exibe resultado
Imprime: 0.13887982
O que o código faz:
· Define frases de exemplo como listas de palavras (["laranja", "é", "uma", "fruta"]).
· Treina um modelo Word2Vec com essas frases, criando representações vetoriais (embeddings) para cada palavra.
· Calcula a similaridade entre os vetores das palavras "laranja" e "banana".
· Exibe o valor da similaridade no console, mostrando quão próximas semanticamente essas palavras estão no modelo (0.13887982).
🔹 Modelagem de tópicos com LDA
Objetivo: Realizar modelagem de tópicos usando o algoritmo LDA (Latent Dirichlet Allocation).
Código:
from gensim.models import LdaModel # Importa LDA
from gensim.corpora import Dictionary # Importa dicionário
texto = [ # Textos de exemplo
["laranja", "é", "uma", "fruta"],
["banana", "também", "é", "uma", "fruta"]
]
dicionario = Dictionary(texto) # Cria dicionário
# Converte para bag-of-words
corpus = [
dicionario.doc2bow(doc)
for doc in texto
]
modelo = LdaModel( # Treina modelo LDA
corpus=corpus,
num_topics=2,
id2word=dicionario
)
print(modelo.print_topics()) # Exibe tópicos
Imprime: [(0, '0.225*"uma" + 0.212*"fruta" + 0.192*"é" + 0.141*"laranja" + 0.120*"também" + 0.110*"banana"'), (1, '0.214*"é" + 0.180*"fruta" + 0.174*"banana" + 0.156*"também" + 0.155*"uma" + 0.120*"laranja"')]
O que o código faz:
· Cria um dicionário de palavras.
· Converte textos em representação numérica.
· Treina um modelo LDA para:
· Identificar tópicos presentes nos documentos.
📌 Resumo geral
· O Gensim é um framework voltado para PLN e análise textual em Python.
· Destaca-se por:
· Modelagem de tópicos;
· Incorporações de palavras;
· Similaridade de documentos;
· Vetorização de texto.
· Entre suas funcionalidades principais estão:
· Word2Vec para representação de palavras;
· SoftCosineSimilarity para comparação de documentos;
· LDA para descoberta de tópicos em textos.
FRAMEWORKS SCIKIT-LEARN E TENSORFLOW
🧠 Aspectos conceituais sobre o Scikit-Learn
· O Scikit-Learn é um dos principais frameworks de uso geral para aprendizado de máquina.
· Possui:
· Código aberto;
· Desenvolvimento em Python.
· Inclui funcionalidades voltadas para Processamento de Linguagem Natural (PLN).
🔹 Principais aplicações do Scikit-Learn:
· Classificação de texto;
· Análise de sentimentos;
· Extração de recursos.
⭐ Motivos da popularidade:
· O framework se destaca por possuir:
· Ampla documentação;
· Grande quantidade de exemplos.
· Isso facilita:
· O estudo;
· O uso prático.
· Site oficial: https://scikit-learn.org/stable/
⚙️ Características do Scikit-Learn voltadas para PLN
🔹 Extração de recursos:
· Tem como objetivo capturar características principais dos textos.
· Essas características são utilizadas em modelos de aprendizado de máquina.
🔹 Classificação de texto:
· Oferece funcionalidades para:
· Análise de sentimento;
· Detecção de spam;
· Categorização de tópicos.
🔹 Seleção e avaliação de modelos:
· Disponibiliza funções para dividir dados em: treinamento e teste.
· Também oferece técnicas para avaliar o desempenho dos modelos.
🔹 Integração com bibliotecas de PLN:
· Pode ser integrado com outras bibliotecas e frameworks especializados em PLN.
🔹 Eficiência:
· Possui algoritmos eficientes para problemas de PLN de pequena escala e média escala.
🤖 Aspectos conceituais sobre o TensorFlow
· O TensorFlow é um dos principais frameworks voltados para aprendizado de máquina.
· Possui:
· Código aberto;
· Desenvolvimento pelo Google.
· Pode ser utilizado em diversos domínios, incluindo Processamento de Linguagem Natural.
⭐ Diferenciais do TensorFlow, em que:
· → probabilidade do i-ésimo resultado.
· → saída do i-ésimo neurônio.
· → quantidade de neurônios de saída.
· Explicação:
· Recebe as pontuações dos neurônios de saída (z);
· Converte esses valores em probabilidades;
· A soma das probabilidades resulta em 100% (ou 1).
· 💡 Comentário: A função Softmax pode ser entendida como uma versão generalizada da função logística, aplicada a múltiplas saídas.
🏗️ Camada de Aglomeração (Pooling Layer – POOL)
· A camada POOL (Pooling Layer) tem como objetivo reduzir a quantidade de neurônios e dados processados nas próximas camadas.
· Geralmente é aplicada logo após a convolução.
· Benefícios do pooling:
· Redução da carga computacional;
· Menor uso de memória;
· Redução do número de parâmetros;
· Aumento da eficiência da rede.
· Relação com overfitting: O pooling ajuda a combater o overfitting (sobreajuste).
· O que é overfitting?
· Ocorre quando o modelo:
· Aprende excessivamente os dados de treinamento;
· Fica superespecializado;
· Tem dificuldade para generalizar novos dados.
· ⚠️ Atenção: O pooling é uma importante técnica de regularização para melhorar a capacidade de generalização da CNN.
🔄 Principais Tipos de Pooling
📌 Max Pooling
· Seleciona o maior valor da submatriz.
· Características:
· Preserva as informações mais importantes;
· Mantém os recursos detectados.
· É o método mais utilizado.
· Exemplo explicado:
· Observa-se cada bloco da imagem.
· Escolhe-se o maior número.
· Esse valor vai para a saída.
📌 Average Pooling
· Calcula a média dos valores da submatriz.
· Características:
· Produz um efeito de suavização;
· Não preserva diretamente os recursos detectados.
· Exemplo explicado:
· Soma-se todos os elementos do bloco.
· Divide-se pela quantidade de elementos.
· O valor médio é colocado na saída.
· O que isso mostra?
· O pooling reduziu significativamente o tamanho dos dados.
· Isso reduz custo computacional.
· Parâmetros necessários:
· Assim como na convolução, é preciso definir:
· Stride (tamanho do passo)
· Dimensões da saída
Comentário importante:
· Neurônios de pooling não possuem pesos.
· Eles apenas agregam informações usando funções como:
· máximo;
· média.
🏗️ Camada Totalmente Conectada (Fully Connected)
· O que é?
· Camada geralmente aplicada no final da CNN.
· Também chamada de Camada densa ou Dense layer.
· Funcionamento:
· A entrada é convertida em um vetor plano (matriz coluna).
· Cada elemento de entrada conecta-se a todos os neurônios da camada seguinte.
· Explicação do Fluxo mostrado na imagem:
· Imagem retangular inicial (matriz).
· Transformação da imagem em vetor coluna.
· Conexão completa entre entradas e neurônios seguintes.
· Característica principal: Conexão total entre entradas e saídas da camada.
📝 Resumo Geral
As CNN utilizam diferentes camadas que trabalham em conjunto:
1. Convolução (CONV) → extrai características da imagem.
2. Padding → preserva dimensões e informações das bordas.
3. Funções de ativação → introduzem não linearidade e permitem aprendizado complexo.
4. Softmax → transforma saídas em probabilidades de classificação.
5. Pooling (POOL) → reduz processamento e ajuda a evitar overfitting.
Juntas, essas etapas tornam as CNN extremamente eficientes para visão computacional e reconhecimento de padrões.
PARÂMETROS E HIPERPARÂMETROS DA REDE CNN
📌 Diferença entre Parâmetro e Hiperparâmetro
· Parâmetro: variável ajustada automaticamente durante o treinamento da rede.
· Hiperparâmetro: variável definida previamente pelo desenvolvedor.
A correta definição dessas variáveis é importante para:
· Dimensionar adequadamente a CNN;
· Compreender os recursos computacionais necessários;
· Garantir o funcionamento adequado do modelo.
1. Principais Parâmetros da CNN
São valores aprendidos automaticamente pela rede.
Principais exemplos:
· As matrizes de filtros, chamada kernels, da camada de convolução;
· Pesos sinápticos da camada totalmente conectada.
2. Principais Hiperparâmetros da CNN
São definidos antes do treinamento.
· Camada de convolução:
· Dimensão do kernel;
· Quantidade de filtros;
· Stride (deslocamento);
· Padding (preenchimento);
· Funções de ativação.
· Camada de aglomeração (pooling)
· Método de agrupamento;
· Tamanho do filtro;
· Stride;
· Padding.
· Camada totalmente conectada
· Quantidade de pesos;
· Função de ativação.
· Outros hiperparâmetros
· Arquitetura do modelo;
· Método de otimização;
· Taxa de aprendizagem;
· Função de perda;
· Batch size;
· Épocas;
· Regularização;
· Método de pesos iniciais;
· Divisão do conjunto de dados.
📌 Categorias dos hiperparâmetros
Os hiperparâmetros podem ser divididos em duas categorias:
· Os que determinam a estrutura da rede;
· Os que caracterizam o treinamento da rede.
1. Hiperparâmetros que Determinam a Estrutura da Rede
São usados para construir a arquitetura da CNN.
· Dimensionamento da matriz de filtros (kernel):
· A matriz de filtros é aplicada na camada de convolução;
· Extrai características da imagem por meio da convolução;
· Essas características são enviadas para as próximas camadas.
· Tipo de Kernel
· Define quais características podem ser extraídas da imagem, como:
· Bordas;
· Detecção de padrões;
· Nitidez.
· Stride (deslocamento)
· Representa a quantidade de pixels que o kernel se move sobre a imagem.
· Efeitos do stride:
· Quanto maior o Stride:
· Menor será a sobreposição entre regiões analisadas;
· Menor será a matriz de características resultante.
· Padding (preenchimento): Consiste em adicionar bordas de zeros na imagem para permitir que o kernel ultrapasse seus limites.
· Tipos de padding:
· Preenchimento válido (Valid Padding):
· Também chamado de “sem preenchimento”
· Não adiciona zeros;
· O mapa de características fica menor que a imagem original.
· Mesmo preenchimento (Same Padding):
· Garante que a camada de saída tenha o mesmo tamanho da camada de entrada.
· Preenchimento completo (Full Padding):
· Adiciona zeros à borda da entrada;
· Produz saída maior que a entrada.
📐 Fórmula do Tamanho da Saída (Mapa de Características)
A dimensão da saída é calculada por:
Onde:
· I → largura da imagem de entrada;
· K → largura do kernel (matriz de filtro);
· P → largura do padding;
· S → largura do stride;
· O → dimensão da saída.
Exemplo de Dimensionamento da Saída:
Dados:
· Stride: ,
· Padding: ,
· Kernel: ,
· Imagem: ,
Concluímos, portanto, que a dimensão horizontal da matriz resultante é dada por:
Resultado: A dimensão horizontal da matriz de saída é 3.
Outros hiperparâmetros:
· Camadas e Unidades Ocultas:
· Entre a entrada e a saída podem existir camadas ocultas.
· A quantidade ideal depende de testes.
· Consequências:
· Poucas camadas/unidades: Menor capacidade de classificação.
· Muitas camadas/unidades: Maior custo computacional.
· Funções de Ativação:
· Introduzem não linearidade ao modelo.
· Uso comum:
· Camadas de convolução: geralmente ReLU (melhores resultados);
· Outras possibilidades: Sigmoide e tanh.
· Camada de saída: Softmax.
· Camada Dropout:
· Técnica de regularização utilizada para:
· Melhorar a precisão na validação;
· Aumentar a capacidade de generalização;
· Evitar overfitting.
· Funcionamento:
· Durante o treinamento:
· Alguns nós são temporariamente ignorados;
· A rede aprende representações mais independentes.
· Indicação: Redes de grandes dimensões.
2. Hiperparâmetros que Determinam o Treinamento da Rede
· Relacionam-se ao processo de aprendizado da CNN.
· Aplicação principal:
· Redes CNN são usadas em visão computacional, para reconhecer padrões complexos em imagens.
· Para tanto, elas precisam passar por um processo de treinamento que seja eficiente.
· Treinamento eficiente: É necessário ajustar hiperparâmetros que influenciam diretamente o desempenho da rede.
· Principais hiperparâmetros:
· Taxa de aprendizagem;
· Momentum;
· Épocas;
· Batch size;
· Pesos iniciais.
🚀 Taxa de Aprendizagem (Learning Rate)
Define a velocidade de atualização dos parâmetros da rede.
Taxa🔹 Grande variedade de recursos
· O TensorFlow oferece:
· Diversos algoritmos;
· Modelos eficientes;
· Aplicáveis ao aprendizado de máquina em geral.
🔹 Gerenciamento de hardware
· Um dos grandes diferenciais do TensorFlow é o suporte a GPU e TPUs.
· Resultado: Esses recursos tornam as soluções muito mais eficientes computacionalmente.
🔹 Documentação e comunidade:
· O TensorFlow possui:
· Documentação rica;
· Diversos exemplos práticos.
· Comunidade ativa:
· Conta com:
· Grande comunidade de desenvolvedores;
· Compartilhamento constante de:
· Projetos;
· Soluções.
📌 Conclusão
· O Scikit-Learn e o TensorFlow são frameworks importantes para aprendizado de máquina e aplicações de PLN.
· O Scikit-Learn se destaca por:
· Simplicidade;
· Documentação;
· Ferramentas para classificação e avaliação de modelos.
· O TensorFlow se destaca por:
· Grande quantidade de recursos;
· Eficiência computacional;
· Uso de GPU e TPU;
· Comunidade ativa e ampla documentação.
O FRAMEWORK TRANSFORMER
🧠 Aspectos conceituais sobre o framework Transformer
· O framework Transformer utiliza uma das arquiteturas mais modernas de aprendizagem profunda (deep learning).
· Foi apresentado no artigo: Attention Is All You Need (Vaswani et al., 2017).
· Ganhou destaque no Processamento de Linguagem Natural (PLN) devido à capacidade de:
· Trabalhar com dados sequenciais de forma eficiente;
· Capturar dependências de longo alcance;
· Facilitar a paralelização do processamento.
· Objetivo básico: Geração de texto, tradução e análise de sentimento.
· Site oficial: https://huggingface.co/docs/transformers/index
⭐ Principais características do framework Transformer
🔹 Mecanismo de atenção
· Utiliza mecanismo de atenção.
· Esse mecanismo permite:
· Avaliar a importância das palavras em uma frase;
· Fazer ponderações ao gerar novas palavras.
🔹 Paralelização
· Permite processamento paralelo das palavras.
· Resultado: Treinamento mais rápido em comparação a modelos com processamento sequencial.
🔹 Contexto bidirecional
· O framework processa textos em duas direções simultaneamente.
· Isso favorece melhor compreensão do contexto textual.
🔹 Modelos pré-treinados
· Utiliza modelos avançados já treinados previamente.
· Modelos:
· BERT — Representações de Codificador Bidirecional de Transformadores;
· GPT — Transformador Generativo Pré-Treinado;
· T5 — Transformador de Transferência Texto-para-Texto.
· Destaque: Esses modelos representam o estado da arte em PLN.
🔹 Aprendizagem por transferência e adaptação
· O framework também se destaca pela Aprendizagem por Transferência entre modelos pré-treinados;
· Devido a capacidade de:
· Adaptar-se a diferentes idiomas;
· Capturar relações linguísticas complexas.
📌 Instalação o Transformers
Passo 1 — Instalar as bibliotecas
Antes de executar qualquer exemplo:
!pip install transformers torch
· transformers → framework da Hugging Face.
· torch → biblioteca usada pelos modelos (return_tensors="pt" usa PyTorch).
⚙️ Principais funcionalidades de PLN do framework Transformer
🔹 Classificação de texto
Objetivo: Categorizar textos em classes ou rótulos pré-definidos.
Exemplo de Código com BERT:
from transformers import BertForSequenceClassification, BertTokenizer # Importa BERT e tokenizador
modelo = BertForSequenceClassification.from_pretrained('bert-base-uncased') # Carrega modelo BERT
tokenizador = BertTokenizer.from_pretrained('bert-base-uncased') # Carrega tokenizador
entrada = tokenizador(
"Eu trabalho com Transformers para PLN!",
return_tensors="pt"
) # Converte texto em tensores PyTorch
saida = modelo(**entrada) # Executa modelo
print(saida.logits) # Exibe resultado da classificação
Imprime: tensor([[0.1087, 0.1184]]
O que o código faz
· Carrega um modelo BERT.
· Tokeniza o texto.
· Processa a entrada e gera uma saída de classificação.
· Esses valores representam:
· A confiança do modelo em determinadas classes.
· Como o modelo bert-base-uncased não foi ajustado especificamente para classificação do texto dado, os números não possuem interpretação direta sem treinamento adicional.
· ⚠️ Observação:
· O modelo bert-base-uncased é treinado em inglês.
· O texto está em português, então os resultados podem não ser ideais.
🔹 Reconhecimento de Entidades Nomeadas (NER)
Objetivo: Identificar e classificar entidades nomeadas em textos.
Código:
from transformers import pipeline # Importa pipeline pronta
ner = pipeline(
"ner",
model="dbmdz/bert-large-cased-finetuned-conll03-english"
) # Carrega modelo NER
resultado = ner("Cada vez mais o estudo de PLN será um grande diferencial.") # Executa NER
print(resultado) # Mostra entidades encontradas
Imprime: [{'entity': 'I-ORG', 'score': np.float32(0.99946576), 'index': 11, 'word': 'P', 'start': 26, 'end': 27}, {'entity': 'I-ORG', 'score': np.float32(0.9991062), 'index': 12, 'word': '##L', 'start': 27, 'end': 28}, {'entity': 'I-ORG', 'score': np.float32(0.9962335), 'index': 13, 'word': '##N', 'start': 28, 'end': 29}]
O que o código faz:
· Carrega um modelo específico para reconhecimento de entidades nomeadas.
· Processa o texto.
· Produz uma saída com possíveis entidades identificadas.
· ⚠️ Como o modelo está em inglês e o texto está em português, pode:
· Não reconhecer entidades;
· Produzir resultados inconsistentes.
🔹 Resposta a perguntas (Question Answering)
Objetivo
· Extrair respostas a partir de um contexto e uma pergunta específica.
Código comentado
from transformers import pipeline # Importa pipeline
qa = pipeline(
"question-answering",
model="distilbert-base-cased-distilled-squad"
) # Carrega modelo QA
resultado = qa(
question="Qual o uso do framework Transformers?",
context="O framework Transformers é usado para tarefas de processamento de linguagem natural."
) # Executa pergunta e resposta
print(resultado["answer"]) # Exibe resposta encontrada
Imprime: Tarefas de processamento de linguagem natural
O que o código faz
· Carrega um modelo de Perguntas e respostas.
· Recebe uma pergunta e um contexto.
· Processa as entradas e extrai uma resposta do texto.
📌 Resumo geral
· O framework Transformer é uma tecnologia moderna para PLN baseada em:
· Mecanismo de atenção;
· Paralelização;
· Modelos pré-treinados.
· Entre suas aplicações destacam-se:
· Classificação de texto;
· Reconhecimento de entidades nomeadas;
· Resposta a perguntas.
· Sua capacidade de:
· Processar contexto;
· Adaptar-se a idiomas;
· Capturar relações linguísticas complexas;
explica seu grande impacto nas aplicações atuais de linguagem natural.
Módulo 3. Aplicações em Python
EXEMPLOS DE PLN COM SPACY
📌 Objetivo da prática
Aplicar técnicas de Processamento de Linguagem Natural (PLN) utilizando o framework spaCy em Python, explorando:
· Tokenização → separação do texto em palavras e símbolos.
· Reconhecimento de Parte da Fala (POS Tagging) → identificação da função gramatical das palavras.
· Reconhecimento de Entidades Nomeadas (NER) → identificação de nomes de locais, pessoas, organizações etc.
🛠️ Roteiro da prática no Google Colab
1. Criar um novo projeto no Google Colab
· Abrir o Google Colab.
· Criar um notebook novo.
2. Instalar bibliotecas necessárias
· Objetivo do código: Instalar as bibliotecas necessárias para executar tarefas de PLN:
· spaCy → framework de processamento de linguagem natural.
· TensorFlow → biblioteca de aprendizado de máquina utilizada em IA.
· Criar uma célula e executar:
!pip install spacy tensorflow
3. Baixar o modelo de linguagem em português
· Objetivo do código:Baixar o modelo pt_core_news_sm, que permite ao spaCy compreender textos em português do Brasil.
· Criar outra célula e executar:
!python -m spacy download pt_core_news_sm
⚠️ Atenção:
· O aninhamento/indentação faz parte da sintaxe do Python.
· Se o código estiver mal organizado, poderá ocorrer erro de execução.
💻 Código principal
Objetivo do código:
Processar um texto em português utilizando o spaCy para:
1. Tokenizar o texto;
2. Identificar a parte dafala de cada palavra;
3. Reconhecer entidades nomeadas.
import spacy # Importa a biblioteca spaCy
# Carrega o modelo spaCy para português do Brasil
nlp = spacy.load('pt_core_news_sm')
# Texto que será analisado
texto = "No Brasil, existem pessoas amigáveis e inteligentes que gostam de estudar PLN."
# Processa o texto usando o modelo NLP
documento = nlp(texto)
#documento = texto # Linha comentada (não executa)
# Tokenização
print("Tokens:") # Exibe o título da seção
for token in documento: # Percorre cada token do texto
print(token.text) # Mostra cada palavra ou símbolo
# Parte da Fala
print("\nParte da Fala:") # Pula linha e exibe o título
for token in documento: # Percorre os tokens novamente
print(token.text, token.pos_) # Exibe palavra e classe gramatical
# Reconhecimento de Entidade Nomeada
print("\nReconhecimento de Entidade Nomeada:") # Título da seção
for entidade in documento.ents: # Percorre as entidades reconhecidas
print(entidade.text, entidade.label_) # Exibe entidade e categoria
Imprime:
Tokens:
No
Brasil
,
existem
pessoas
amigáveis
e
inteligentes
que
gostam
de
estudar
PLN
.
Parte da Fala:
No ADP
Brasil PROPN
, PUNCT
existem VERB
pessoas NOUN
amigáveis ADJ
e CCONJ
inteligentes ADJ
que PRON
gostam VERB
de SCONJ
estudar VERB
PLN PROPN
. PUNCT
Reconhecimento de Entidade Nomeada:
Brasil LOC
· O que o código faz?
1. Tokenização: A tokenização divide o texto em pequenas unidades chamadas tokens.
· Palavras são separadas individualmente.
· Pontuação também vira token.
· Parte da Fala (POS Tagging)
· O spaCy identifica a classe gramatical de cada palavra.
· Exemplo:
· Brasil PROPN
· existem VERB
· pessoas NOUN
· amigáveis ADJ
· Principais categorias mostradas:
· PROPN → nome próprio
· VERB → verbo
· NOUN → substantivo
· ADJ → adjetivo
· PRON → pronome
· PUNCT → pontuação
· Finalidade: Permite compreender a função gramatical das palavras dentro da frase.
· Reconhecimento de Entidades Nomeadas (NER)
· O spaCy identifica entidades importantes no texto.
· Resultado: Brasil LOC
· O que significa?
· Brasil → reconhecido como LOC (Localização).
· Finalidade:
· Detectar automaticamente:
· Países e cidades;
· Pessoas;
· Organizações;
· Lugares e outras entidades relevantes.
✅ Principais conclusões
· O spaCy é uma ferramenta poderosa para PLN em Python.
· Com poucas linhas de código é possível:
· separar palavras (tokenização);
· identificar classes gramaticais (POS Tagging);
· reconhecer entidades (NER).
· O modelo pt_core_news_sm permite trabalhar com textos em português.
· A prática demonstra o potencial do spaCy para análises linguísticas e aplicações de Inteligência Artificial.
EXEMPLOS DE PLN COM GENSIM
📌 Objetivo da prática
Utilizar o framework Gensim em Python para:
· Baixar textos das obras de Machado de Assis disponíveis na biblioteca NLTK;
· Treinar um modelo de Word2Vec;
· Identificar a semelhança entre palavras dentro do corpus textual.
Essa técnica permite analisar relações semânticas entre palavras e encontrar termos com significados ou contextos parecidos.
🛠️ Roteiro da prática no Google Colab
1. Criar um novo projeto no Google Colab
· Abrir o Google Colab;
· Criar um novo notebook.
2. Instalar o Gensim
· Objetivo do código:
· Instalar a biblioteca Gensim, utilizada para:
· Modelagem de tópicos;
· Representação vetorial de palavras;
· Técnicas de PLN, como Word2Vec.
· Criar uma célula e executar:
pip install gensim
3. Instalar o NLTK
· Objetivo do código
· Instalar a biblioteca NLTK (Natural Language Toolkit), responsável por:
· Disponibilizar corpora (bases textuais);
· Fornecer recursos para processamento de linguagem natural.
· Criar outra célula e executar:
!pip install nltk
4. Baixar o pacote de tokenização
· Objetivo do código:
· Baixar o recurso punkt, utilizado pelo NLTK para:
· Separação de frases;
· Tokenização de textos.
· Criar nova célula e executar:
import nltk
nltk.download('punkt')
⚠️ Atenção
· O aninhamento/indentação faz parte da sintaxe do Python.
· Caso o código esteja incorretamente organizado, o programa poderá não executar.
💻 Código principal
Objetivo do código: Baixar o corpus de Machado de Assis, treinar um modelo Word2Vec e identificar palavras semelhantes ao termo "amor".
import gensim # Importa a biblioteca Gensim
from gensim.models import Word2Vec # Importa o modelo Word2Vec
import nltk # Importa a biblioteca NLTK
from nltk.corpus import machado # Importa o corpus Machado de Assis
# Download dos dados do NLTK sobre Machado de Assis
nltk.download('machado') # Baixa o corpus machado
# Carregar o corpus sobre Machado de Assis
sentences = machado.sents() # Obtém as frases do corpus
# Treinar o modelo Word2Vec
model = Word2Vec(
sentences, # Usa as frases como base de treino
vector_size=100, # Define tamanho dos vetores
window=5, # Define janela de contexto
min_count=1, # Considera palavras com pelo menos 1 ocorrência
workers=4 # Usa 4 núcleos do processador
)
# Testar a semelhança de uma palavra com outras
word = "amor" # Define a palavra de busca
similar_words = model.wv.most_similar(word) # Busca palavras semelhantes
print(f"Incorporações de Palavras para '{word}':") # Exibe título do resultado
for similar_word, similarity in similar_words: # Percorre palavras semelhantes
print(f"{similar_word}: {similarity:.4f}") # Exibe palavra e grau de similaridade
Imprime:
[nltk_data] Downloading package machado to /root/nltk_data...
Incorporações de Palavras para 'amor':
sentimento: 0.8477
talento: 0.8107
interesse: 0.7835
caráter: 0.7709
destino: 0.7597
ódio: 0.7544
respeito: 0.7533
gênio: 0.7506
valor: 0.7503
ofício: 0.7502
🔍 O que o código faz?
1. Download do corpus: O NLTK baixa textos de Machado de Assis.
· Finalidade: Disponibilizar um conjunto de textos reais para treinamento do modelo.
2. Treinamento do Word2Vec:
· O Word2Vec aprende relações entre palavras analisando:
· frequência;
· contexto;
· proximidade nas frases.
· Principais parâmetros:
· vector_size=100 → Define o tamanho do vetor que representa cada palavra.
· window=5 → Define quantas palavras vizinhas serão consideradas no contexto.
· min_count=1 → Inclui todas as palavras do corpus.
· workers=4 → Utiliza múltiplos processadores para acelerar o treinamento.
🧠 Semelhança entre palavras
· Após o treinamento, o modelo procura palavras semanticamente próximas da palavra:
· word = "amor"
· Resultado:
· sentimento: 0.8477
· talento: 0.8107
· interesse: 0.7835
· caráter: 0.7709
· destino: 0.7597
· ódio: 0.7544
· respeito: 0.7533
· gênio: 0.7506
· valor: 0.7503
· ofício: 0.7502
📖 Interpretação do resultado
· O modelo identifica palavras que aparecem em contextos semelhantes ao termo "amor".
· O que significam os números?
· Representam o grau de similaridade;
· Quanto mais próximo de 1, maior a relação contextual entre as palavras.
· Exemplo:
· sentimento → 0.8477
· Forte associação contextual com "amor".
· Importante:
· O modelo não procura apenas sinônimos;
· Ele encontra palavras usadas em contextos parecidos.
✅ Principais conclusões
· O Gensim permite criar modelos de representação vetorial de palavras.
· O Word2Vec aprende relações semânticas analisando grandes volumes de texto.
· O corpus de Machado de Assis serve como base para o treinamento do modelo.
· A técnica de similaridade entre palavras pode ser usada para:
· encontrar variações linguísticas;
· sugerir palavras relacionadas;
· apoiar mecanismos de busca e recomendação;
· desenvolver aplicações de PLN e Inteligência Artificial.
· A prática demonstra o potencial do Gensim para análise semântica e compreensão automática da linguagem natural.
ANÁLISE DE SENTIMENTOS COM UMA RNN USANDO SCIKIT-LEARN
📌 Objetivo da prática
Aplicar técnicas de análise de sentimentos utilizando uma Rede Neural Recorrente (RNN) com LSTM, empregando bibliotecas como Scikit-Learn, TensorFlow/Keras e Pandas em Python.
A prática busca:
· Preparar textos para análise;· Treinar um modelo de classificação;
· Identificar se uma frase possui sentimento positivo ou negativo;
· Avaliar o desempenho da rede neural.
🛠️ Roteiro da prática no Google Colab
1. Criar um novo projeto no Google Colab
· Abrir o Google Colab;
· Criar um notebook novo.
2. Instalar bibliotecas necessárias
· Objetivo do código
· Instalar as bibliotecas usadas no projeto:
· Scikit-Learn → preparação e divisão dos dados;
· Pandas → manipulação de dados;
· TensorFlow/Keras → construção e treinamento da RNN.
· Criar uma célula e executar:
!pip install scikit-learn pandas tensorflow
💻 Código principal
Objetivo do código: Preparar textos, treinar uma RNN do tipo LSTM e avaliar sua capacidade de classificar sentimentos.
import pandas as pd # Importa Pandas para manipulação de dados
import numpy as np # Importa NumPy para operações numéricas
from sklearn.model_selection import train_test_split # Divide treino e teste
from sklearn.preprocessing import LabelEncoder # Codifica rótulos
from tensorflow.keras.models import Sequential # Modelo sequencial
from tensorflow.keras.layers import Embedding, LSTM, Dense, Dropout # Camadas da rede
from tensorflow.keras.preprocessing.text import Tokenizer # Tokenização de texto
from tensorflow.keras.preprocessing.sequence import pad_sequences # Ajuste do tamanho das sequências
from tensorflow.keras.utils import to_categorical # Conversão para one-hot
# Amostra de dados para análise de sentimentos
data = [
("O filme é maravilhoso! Adorei.", 1), # Frase positiva
("O enredo estava confuso, e a atuação não foi boa.", 0), # Frase negativa
("Este restaurante tem a melhor comida da cidade.", 1), # Frase positiva
("O serviço foi terrível, e o lugar estava sujo.", 0) # Frase negativa
]
# Converter dados para DataFrame
df = pd.DataFrame(data, columns=['text', 'sentiment']) # Cria tabela de dados
# Tokenização e ajustes
tokenizer = Tokenizer() # Cria tokenizador
tokenizer.fit_on_texts(df['text']) # Aprende vocabulário
sequences = tokenizer.texts_to_sequences(df['text']) # Converte textos em números
word_index = tokenizer.word_index # Guarda índice das palavras
max_length = max(len(sequence) for sequence in sequences) # Maior frase
data_padded = pad_sequences(sequences, maxlen=max_length) # Padroniza tamanho
# Codificação para rótulos
encoder = LabelEncoder() # Cria codificador
labels_encoded = encoder.fit_transform(df['sentiment']) # Codifica rótulos
labels_one_hot = to_categorical(labels_encoded) # Converte em one-hot
# Separação treino e teste
X_train, X_test, y_train, y_test = train_test_split(
data_padded,
labels_one_hot,
test_size=0.25,
random_state=42
)
# Criar e compilar modelo RNN
model = Sequential() # Cria modelo sequencial
model.add(
Embedding(
input_dim=len(word_index) + 1,
output_dim=64,
input_length=max_length
)
) # Camada de embeddings
model.add(LSTM(64)) # Camada LSTM
model.add(Dense(32, activation='relu')) # Camada intermediária
model.add(Dropout(0.5)) # Reduz overfitting
model.add(Dense(2, activation='softmax')) # Saída com 2 classes
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy']
) # Compila modelo
# Treinar modelo
model.fit(
X_train,
y_train,
epochs=10,
batch_size=2
) # Realiza treinamento
# Avaliar modelo
loss, accuracy = model.evaluate(X_test, y_test) # Mede desempenho
print("Test Accuracy:", accuracy) # Exibe acurácia
Imprime:
🔍 O que o código faz?
1. Criação do conjunto de dados:
· O código usa frases simples classificadas como:
· 1 → positivo
· 0 → negativo
· Exemplo:
Texto
Sentimento
O filme é maravilhoso!
1
O serviço foi terrível
0
2. Tokenização dos textos
· O Tokenizer converte palavras em números.
· Exemplo: "O filme é maravilhoso"
↓
[1, 2, 3, 4]
· Finalidade: Permitir que a rede neural processe texto como dados numéricos.
3. Padronização das sequências
· As frases podem ter tamanhos diferentes.
· O pad_sequences():
· adiciona zeros;
· ajusta todas para o mesmo comprimento.
· Finalidade: Garantir entrada padronizada na rede neural.
4. Codificação dos rótulos
· Os sentimentos são transformados em formato One-Hot Encoding.
· Exemplo:
Classe
One-hot
Negativo
[1,0]
Positivo
[0,1]
· Finalidade: Adequar os rótulos ao treinamento da rede.
🧠 5. Construção da RNN com LSTM
· A rede neural possui: Embedding
· Transforma palavras em vetores numéricos densos.
· palavra → vetor matemático
· LSTM:
· Tipo de RNN especializada em:
· lembrar contexto;
· analisar sequência de palavras;
· compreender dependências no texto.
· Dense + ReLU
· Camada intermediária responsável por:
· aprender padrões;
· combinar informações extraídas.
· Dropout: Remove neurônios aleatoriamente durante o treino.
· Finalidade: Reduzir overfitting (excesso de adaptação ao treino).
· Softmax:
· Camada final de classificação.
· Retorna probabilidades para:
· positivo;
· negativo.
6. Treinamento e avaliação
· O modelo é treinado com:
· 10 épocas
· batch size = 2
· Depois calcula:
· loss → erro do modelo;
· accuracy → percentual de acertos.
💻 Código de teste da frase
Objetivo do código: Classificar o sentimento de uma nova frase.
# Testar uma frase
test_sentence = "O serviço não foi bom." # Frase para análise
# Tokenizar e ajustar a frase
test_sequence = tokenizer.texts_to_sequences([test_sentence]) # Texto → números
test_padded = pad_sequences(
test_sequence,
maxlen=max_length
) # Ajusta tamanho
# Fazer classificação
prediction = model.predict(test_padded)[0] # Obtém probabilidades
sentiment_label = (
"positivo"
if prediction[1] > prediction[0]
else "negativo"
) # Define classe
confidence = max(prediction) * 100 # Calcula confiança
print(f"Frase de Teste: '{test_sentence}'") # Exibe frase
print(f"Sentimento: {sentiment_label}") # Mostra classe
print(f"Confiança: {confidence:.2f}%") # Mostra confiança
📌 Resultado esperado:
Frase de Teste: 'O serviço não foi bom.'
Sentimento: positivo
Confiança: 52.68%
🔎 Interpretação do resultado
O modelo:
· analisou a frase;
· comparou com padrões aprendidos;
· estimou um sentimento.
O que significa a confiança?
· Representa a probabilidade da previsão;
· Quanto maior, maior a segurança do modelo.
Atenção ⚠️
A base usada é muito pequena (apenas 4 frases).
Por isso:
· os resultados podem variar;
· a precisão tende a ser baixa;
· a confiança pode ser limitada.
✅ Principais conclusões
· A análise de sentimentos identifica emoções ou opiniões em textos.
· O processo envolve:
· tokenização;
· codificação;
· treinamento da rede neural;
· classificação.
· A LSTM é uma RNN eficiente para linguagem natural porque considera o contexto das palavras.
· O Scikit-Learn auxilia no preparo dos dados, enquanto o TensorFlow/Keras constrói e treina a rede.
· Mesmo com um exemplo simples, a prática demonstra o potencial das RNNs para PLN e Inteligência Artificial.
ANÁLISE DE SENTIMENTOS COM UMA CNN USANDO SCIKIT-LEARN
📌 Objetivo da prática
· Aplicar técnicas de análise de sentimentos utilizando uma Rede Neural Convolucional (CNN) por meio do Scikit-Learn, TensorFlow/Keras e Python.
· Embora as CNNs sejam normalmente utilizadas em visão computacional, elas também podem ser aplicadas em Processamento de Linguagem Natural (PLN) para identificar padrões em textos e classificar sentimentos.
· A prática tem como objetivo:
· Preparar textos para análise;
· Treinar um modelo CNN;
· Classificar sentimentos como positivo ou negativo;
· Avaliar o desempenho do modelo.
🛠️ Roteiro da prática no Google Colab
1. Criar um novo projeto no Google Colab
· Abrir o Google Colab;
· Criar um notebook novo.
2. Instalar bibliotecas necessárias
· Objetivo do código:
· Instalar as bibliotecas utilizadas no projeto:
· Scikit-Learn → divisão e preparação dos dados;
· Pandas → manipulação dos dados;
· TensorFlow/Keras → construção e treinamento da CNN.
· Criar uma célula e executar:!pip install scikit-learn pandas tensorflow
💻 Código principal com comentários
Objetivo do código: Preparar os textos, construir uma CNN para análise de sentimentos, treinar o modelo e medir sua precisão.
import pandas as pd # Importa Pandas para manipular dados
import numpy as np # Importa NumPy para operações numéricas
from sklearn.model_selection import train_test_split # Divide treino e teste
from sklearn.preprocessing import LabelEncoder # Codifica rótulos
from tensorflow.keras.models import Sequential # Modelo sequencial
from tensorflow.keras.layers import (
Embedding,
Conv1D,
GlobalMaxPooling1D,
Dense,
Dropout
) # Camadas da CNN
from tensorflow.keras.preprocessing.text import Tokenizer # Tokenização
from tensorflow.keras.preprocessing.sequence import pad_sequences # Ajuste das sequências
from tensorflow.keras.utils import to_categorical # One-hot encoding
# Amostra de dados para análise de sentimentos
data = [
("O filme é maravilhoso! Adorei.", 1), # Frase positiva
("O enredo estava confuso, e a atuação não foi boa.", 0), # Frase negativa
("Este restaurante tem a melhor comida da cidade.", 1), # Frase positiva
("O serviço foi terrível, e o lugar estava sujo.", 0) # Frase negativa
]
# Converter dados para DataFrame
df = pd.DataFrame(
data,
columns=['text', 'sentiment']
) # Cria tabela com textos e sentimentos
# Tokenização e ajuste
tokenizer = Tokenizer() # Cria tokenizador
tokenizer.fit_on_texts(df['text']) # Aprende vocabulário
sequences = tokenizer.texts_to_sequences(df['text']) # Texto → números
word_index = tokenizer.word_index # Índice das palavras
max_length = max(
len(sequence)
for sequence in sequences
) # Tamanho da maior frase
data_padded = pad_sequences(
sequences,
maxlen=max_length
) # Padroniza tamanho
# Codificação de rótulos
encoder = LabelEncoder() # Cria codificador
labels_encoded = encoder.fit_transform(
df['sentiment']
) # Codifica sentimentos
labels_one_hot = to_categorical(
labels_encoded
) # One-hot encoding
# Separação treino e teste
X_train, X_test, y_train, y_test = train_test_split(
data_padded,
labels_one_hot,
test_size=0.25,
random_state=42
)
# Criar e compilar modelo CNN
model = Sequential() # Cria modelo
model.add(
Embedding(
input_dim=len(word_index) + 1,
output_dim=64,
input_length=max_length
)
) # Embedding das palavras
model.add(
Conv1D(
128,
5,
activation='relu'
)
) # Camada convolucional
model.add(
GlobalMaxPooling1D()
) # Redução das características
model.add(
Dense(
64,
activation='relu'
)
) # Camada intermediária
model.add(
Dropout(0.5)
) # Evita overfitting
model.add(
Dense(
2,
activation='softmax'
)
) # Camada de saída
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy']
) # Compila modelo
# Treinamento do modelo
model.fit(
X_train,
y_train,
epochs=10,
batch_size=2
) # Treina CNN
# Avaliar modelo
loss, accuracy = model.evaluate(
X_test,
y_test
) # Calcula desempenho
print("Teste de Precisão:", accuracy) # Exibe precisão
🔍 O que o código faz?
1. Criação do conjunto de dados
O código utiliza frases classificadas como:
· 1 → positivo
· 0 → negativo
Exemplo:
Texto
Sentimento
O filme é maravilhoso
1
O serviço foi terrível
0
2. Tokenização dos textos
· O Tokenizer transforma palavras em números.
· Exemplo: "O filme é maravilhoso"
↓
[1,2,3,4]
· Finalidade: Permitir que textos sejam processados pela rede neural.
3. Padronização das sequências
· As frases possuem tamanhos diferentes.
· O pad_sequences():
· adiciona zeros;
· padroniza o comprimento.
· Finalidade: Garantir entradas com mesmo tamanho na CNN.
4. Codificação dos sentimentos
· Os rótulos são convertidos para One-Hot Encoding.
· Exemplo:
Classe
Vetor
Negativo
[1,0]
Positivo
[0,1]
· Finalidade: Adequar os dados para treinamento.
5. Construção da CNN
· A arquitetura possui várias camadas.
· Embedding: Transforma palavras em vetores numéricos.
· Conv1D:
· Camada convolucional que detecta padrões locais e identifica combinações relevantes de palavras.
· Parâmetros:
· 128 filtros
· janela de tamanho 5
· ativação ReLU
· GlobalMaxPooling1D: Seleciona as características mais importantes encontradas pela convolução.
· Dense + ReLU: Aprende relações entre os padrões identificados.
· Dropout: Desativa parte dos neurônios durante o treino.
· Finalidade: Reduzir overfitting.
· Softmax
· Camada final responsável por:
· calcular probabilidades;
· definir o sentimento.
6. Treinamento e avaliação
· O treinamento usa:
· 10 épocas
· batch size = 2
· Depois o modelo mede:
· loss → erro;
· accuracy → taxa de acerto.
💻 Código para testar uma frase
Objetivo do código: Usar o modelo treinado para prever o sentimento de uma nova frase.
# Testar uma frase
test_sentence = "O serviço foi razoável." # Frase de teste
# Tokenizar e ajustar frase
test_sequence = tokenizer.texts_to_sequences(
[test_sentence]
) # Texto → números
test_padded = pad_sequences(
test_sequence,
maxlen=max_length
) # Ajusta tamanho
# Fazer classificação
prediction = model.predict(
test_padded
)[0] # Obtém probabilidades
sentiment_label = (
"positivo"
if prediction[1] > prediction[0]
else "negativo"
) # Define sentimento
confidence = max(prediction) * 100 # Calcula confiança
print(f"Frase de Teste: '{test_sentence}'") # Exibe frase
print(f"Sentimento: {sentiment_label}") # Exibe classificação
print(f"Confiança: {confidence:.2f}%") # Exibe confiança
📌 Resultado esperado
Frase de Teste: 'O serviço foi razoável.'
Sentimento: positivo
Confiança: 62.60%
🔎 Interpretação do resultado
O modelo:
· processou a frase;
· identificou padrões aprendidos;
· estimou o sentimento.
O que significa a confiança?
· Representa a probabilidade da previsão;
· Quanto maior o valor, maior a segurança da rede.
Atenção ⚠️
· A base utilizada possui apenas 4 frases.
· Por isso:
· o modelo tem pouco conhecimento;
· os resultados podem variar;
· a precisão pode ser limitada.
🔄 CNN x RNN na análise de sentimentos
O texto destaca que:
CNN
RNN/LSTM
Detecta padrões locais
Analisa sequência e contexto
Muito usada em visão computacional
Muito usada em PLN
Processamento mais paralelo
Considera dependências temporais
Apesar das diferenças, ambas podem ser utilizadas em análise de sentimentos.
✅ Principais conclusões
· A CNN também pode ser aplicada em PLN.
· O processo envolve:
· tokenização;
· padronização;
· treinamento;
· classificação.
· A camada Conv1D identifica padrões relevantes em sequências de palavras.
· O TensorFlow/Keras implementa a CNN e o Scikit-Learn auxilia na preparação dos dados.
· Mesmo usando poucos exemplos, a prática demonstra o potencial das CNNs para análise de sentimentos e Inteligência Artificial.
ANÁLISE DE SENTIMENTOS USANDO O FRAMEWORK TRANSFORMER
📌 Objetivo da prática
Aplicar técnicas de análise de sentimentos utilizando o framework Transformer, considerado o estado da arte (tecnologia mais avançada) em muitas aplicações de Processamento de Linguagem Natural (PLN).
A prática tem como finalidade:
· Instalar a biblioteca Transformers;
· Utilizar um modelo pré-treinado;
· Realizar análise automática de sentimentos;
· Identificar se um texto possui sentimento positivo ou negativo;
· Interpretar a confiança da previsão.
🛠️ Roteiro da prática no Google Colab
1. Criar um novo projeto no Google Colab
· Abrir o Google Colab;
· Criar um notebook novo.
2. Instalar a biblioteca Transformers
· Objetivo do código:
· Instalar a biblioteca Transformers, usada para:
· PLN avançado;
· análise de sentimentos;
· tradução;
· geração de texto;
· classificação textual;
· uso de modelos pré-treinados.
· Criar uma célula e executar:
!pip install transformers
💻 Código principal com comentáriosObjetivo do código: Utilizar um pipeline Transformer pré-treinado para realizar análise automática de sentimentos em um texto.
from transformers import pipeline # Importa pipeline do Transformers
# Carregar pipeline de análise de sentimentos
nlp = pipeline("sentiment-analysis") # Cria modelo pré-treinado
# Texto para análise
text = "I am really enjoying this movie. It's so much fun!" # Texto em inglês
# Realizar análise de sentimentos
results = nlp(text) # Executa classificação
# Interpretar rótulo e pontuação
sentiment_label = results[0]['label'] # Obtém sentimento
sentiment_score = results[0]['score'] # Obtém confiança
print(f"Texto: {text}") # Exibe texto analisado
print(f"Rótulo do Sentimento: {sentiment_label}") # Exibe classe
print(f"Pontuação do Sentimento: {sentiment_score:.4f}") # Exibe confiança
🔍 O que o código faz?
1. Importação do pipeline
· O código importa: pipeline
· O que é um pipeline?
· É uma ferramenta do Transformers que:
· carrega modelos prontos;
· executa tarefas automaticamente;
· reduz a necessidade de programação complexa.
· Finalidade: Facilitar o uso de modelos avançados de PLN.
🧠 2. Carregamento do modelo de sentimentos
· O comando: pipeline("sentiment-analysis")
· cria um sistema pronto para:
· ler textos;
· interpretar emoções;
· classificar sentimentos.
· Importante:
· O modelo é pré-treinado, ou seja:
· já foi treinado com grande quantidade de dados;
· não precisa de treinamento manual.
3. Definição do texto
· O exemplo utiliza: I am really enjoying this movie. It's so much fun!
· Tradução aproximada: "Estou realmente gostando deste filme. É muito divertido!"
· Finalidade: Fornecer uma frase para o modelo analisar.
4. Execução da análise
· O comando: results = nlp(text)
· faz o modelo:
· processar o texto;
· identificar padrões linguísticos;
· prever o sentimento.
· O resultado é retornado como:
· label → categoria do sentimento;
· score → confiança da previsão.
5. Interpretação dos resultados
· O código extrai: Label
· Indica o sentimento detectado.
· Exemplos:
· POSITIVE → positivo
· NEGATIVE → negativo
· Score: Representa a confiança da previsão.
· Valores:
· próximos de 1 → alta confiança;
· próximos de 0 → baixa confiança.
📌 Resultado esperado
Texto: I am really enjoying this movie. It's so much fun!
Rótulo do Sentimento: POSITIVE
Pontuação do Sentimento: 0.9999
🔎 Interpretação do resultado
· O modelo classificou o texto como:✅ POSITIVE
· Com confiança:✅ 0.9999
· O que isso significa?
· O texto apresenta palavras e expressões associadas a emoções positivas;
· O modelo possui altíssima confiança nessa previsão.
· Expressões como: enjoying e fun fortemente indicam sentimento positivo.
🔄 Transformer x RNN x CNN
· Os Transformers representam o estado da arte em PLN.
Comparação geral:
Modelo
Característica
RNN / LSTM
Analisa sequência e contexto temporal
CNN
Detecta padrões locais em textos
Transformer
Usa atenção (attention) e processa contexto de forma mais eficiente
Vantagens do Transformer:
· Maior capacidade de compreensão contextual;
· Uso de modelos pré-treinados;
· Alta precisão em tarefas de PLN;
· Menor necessidade de treinamento manual.
⚠️ Atenção
· O Python depende da indentação (aninhamento).
· Se o código estiver:
· desalinhado;
· com espaços incorretos;
· mal organizado,
· o programa pode gerar erro.
✅ Principais conclusões
· O Transformer é uma das arquiteturas mais avançadas para PLN.
· O pipeline do Transformers simplifica o uso de modelos complexos.
· A análise de sentimentos pode ser feita sem treinar um modelo do zero.
· O sistema retorna:
· sentimento identificado;
· grau de confiança da previsão.
· O exemplo demonstra o potencial dos Transformers para Inteligência Artificial e análise textual.
TEMA 5. IA APLICADA AO RECONHECIMENTO DE VOZ
INTRODUÇÃO
📌 Evolução dos sistemas de voz
· Tecnologias antes vistas em filmes de ficção científica, como conversar com aparelhos e robôs, estão se tornando realidade.
· Atualmente, existem produtos capazes de reconhecer comandos de voz e auxiliar em tarefas do cotidiano.
🌍 Impacto e possibilidades de aplicação
· Os sistemas de reconhecimento de voz ainda possuem grande potencial de crescimento.
· Podem gerar benefícios em áreas como:
· acessibilidade para pessoas com restrições físicas;
· segurança e saúde públicas com serviços mais eficientes;
· entretenimento, ampliando experiências em jogos e filmes.
🧠 Avanço dos algoritmos de reconhecimento de voz
· O desenvolvimento dessas aplicações foi possível graças a pesquisas e à busca por soluções para problemas reais.
· Os algoritmos de reconhecimento de voz evoluíram significativamente com:
· uso de aprendizado de máquina;
· popularização de tecnologias que facilitam o estudo e o desenvolvimento de novas soluções.
Módulo 1. Sistema de Reconhecimento de Voz
RECONHECIMENTO DE VOZ: COMO FUNCIONA E SUAS APLICAÇÕES
🎯 O que é reconhecimento de voz
· Tecnologia que permite identificar e interpretar palavras faladas.
· Converte a fala em:
· Texto
· Comandos executáveis por sistemas computacionais.
· Possibilita interações mais naturais e eficientes entre pessoas e máquinas.
· Tem potencial para transformar diferentes setores, como:
· Atendimento ao cliente
· Automação residencial
📱 Dispositivos integrados com reconhecimento de voz
· Atualmente, diversos dispositivos utilizam essa tecnologia, como:
· Celulares
· Computadores
· Esses equipamentos possuem microfones sensíveis capazes de captar a voz.
· Programas específicos processam o som e o transformam em comandos.
· Alguns dispositivos podem auxiliar em atividades do cotidiano.
Exemplo:
· A Alexa, da Amazon, utiliza reconhecimento de voz para executar comandos e auxiliar usuários em tarefas diárias.
📊 Eficiência na captura de dados
· O reconhecimento de voz é um recurso eficiente para captura e registro de dados.
· Muitas informações do dia a dia acabam sendo perdidas devido à dificuldade de inserção em sistemas.
· O uso da voz torna o processo de entrada de dados mais rápido e prático.
Exemplo apresentado no texto: inspeção de equipamentos
· Inspetores precisam registrar diversas informações.
· O preenchimento manual de formulários ou digitação pode ser:
· Inconveniente
· Demorado
· Uma perda de oportunidade.
· Com reconhecimento de voz:
· O profissional fala no dispositivo.
· O sistema converte automaticamente a fala em texto digital.
⚠️ Aplicação prática
· Esse modelo pode ser usado em diversas situações em que a digitação pode ser substituída por comandos de voz.
♿ Benefícios para pessoas com restrições de mobilidade
· O reconhecimento de voz possui grande importância para pessoas com limitações de movimento.
· A tecnologia:
· Amplia a independência
· Facilita a integração ao mundo digital
· Atua como uma extensão das capacidades do usuário.
🏠 Principais aplicações:
· Produção de textos:
· Gerar
· Formatar
· Arquivar
· Impressão de documentos.
· Escrita e envio de e-mails.
· Busca e navegação na internet.
· Auxílio em atividades domésticas:
· Ligar e desligar dispositivos
· Fornecer informações
· Registrar dados importantes
💡 Conclusão
· Os sistemas de reconhecimento de voz ampliam a interação entre pessoas e tecnologia.
· Funcionam como uma extensão das habilidades humanas, permitindo realizar tarefas por meio da fala.
· Para pessoas com limitações físicas, promovem:
· Mais inclusão
· Maior autonomia
· Ampliação das possibilidades de participação no mundo digital.
ELEMENTOS FUNDAMENTAIS DOS SISTEMAS DE RECONHECIMENTO DE VOZ
🎯 Função dos sistemas de reconhecimento de voz
· Os sistemas de reconhecimento de voz atuam na interpretação e processamento da fala humana.
· O entendimento desses elementos ajuda a compreender:
· Como os sistemas funcionam.
· Como podem ser aplicados em diferentes contextos.
🧠 Evolução do reconhecimento de voz
· Inicialmente, o reconhecimento de voz tinha foco na identificação da voz de um indivíduo.
· Com a evolução tecnológica, passou a reconhecera fala, transformando palavras pronunciadas em:
· Texto
· Comandos para acionamento de dispositivos.
· Esse processamento depende de programas específicos.
⚙️ Desenvolvimento dos sistemas
· Construir um sistema de reconhecimento de voz é uma tarefa complexa.
· Exige:
· Técnicas de inteligência artificial.
· Aprendizado de máquina.
· Grandes quantidades de dados.
· Equipamentos adequados.
· Estratégias eficientes de desenvolvimento.
· Os algoritmos passam por treinamento para:
· Extrair características da fala.
· Identificar padrões posteriormente.
🗂️ Classificação dos sistemas de reconhecimento de fala
· Os sistemas podem pertencer a mais de uma categoria.
🔹 Palavras isoladas (expressões isoladas)
· Reconhecem palavras por meio dos intervalos de silêncio entre elas.
· O silêncio é chamado de janela da amostra.
· Funcionam alternando entre:
· Escutar
· Não escutar
· Capturam palavras individualmente para formar textos.
🔹 Palavras conectadas (enunciados conectados)
· Funcionam de forma semelhante aos sistemas de palavras isoladas.
· Permitem o processamento de enunciados com pausas mínimas entre eles.
🔹 Fala contínua
· Processam a fala natural como um todo, semelhante a um ditado.
· Precisam identificar os limites das expressões para determinar o conteúdo.
· São difíceis de implementar.
🔹 Fala espontânea
· São mais complexos que os sistemas de fala contínua.
· Trabalham com fala natural sem sofisticação linguística.
· Conseguem interpretar:
· Linguagem coloquial
· Expressões espontâneas
· O texto cita como exemplo as conversas do Jarvis, das histórias do Homem de Ferro.
🔹 Verificação e identificação de voz
· Sistemas capazes de identificar usuários pela voz.
⚠️ Fatores complexos no reconhecimento de fala
· O reconhecimento de fala envolve desafios, sendo o locutor um dos principais.
👤 Sistemas dependentes de locutor
· Treinados para reconhecer a fala de uma pessoa específica.
· Características:
· Maior precisão para aquele locutor.
· Menor capacidade de generalização.
👥 Sistemas independentes de locutor
· Projetados para reconhecer diversas vozes.
· São treinados com muitos exemplos de fala.
· Características:
· Maior capacidade de generalização.
· Menor precisão individual.
· Mais adequados ao uso empresarial.
🗣️ Outros fatores que influenciam o reconhecimento de fala
🔹 Pronúncia
· Pessoas pronunciam as mesmas palavras de maneiras diferentes.
· Acentos podem alterar significativamente a pronúncia.
🔹 Regionalismo
· O modo de falar varia conforme a região.
· Isso influencia diretamente a forma como as palavras são pronunciadas.
🔹 Saúde
· Condições relacionadas à saúde podem modificar a fala.
· Isso pode gerar:
· Imprecisões
· Falsas interpretações.
🔹 Vocabulário
· A quantidade de palavras reconhecidas afeta a qualidade do sistema.
· Quanto maior o vocabulário:
· Mais difícil o reconhecimento.
· Maior a chance de palavras com pronúncia semelhante.
🔹 Gramática
· As regras de combinação das palavras influenciam o reconhecimento.
· A gramática:
· Ajuda a reduzir ambiguidades.
· Precisa ser flexível para evitar perda de informação.
🔹 Ambiente e ruídos
· Ruídos interferem no processamento da fala.
· O sistema precisa separar:
· Voz do locutor
· Sons do ambiente
· Essa separação é um dos grandes desafios do reconhecimento de voz.
💡 Conclusão
· O reconhecimento de fala depende de múltiplos elementos e fatores.
· Os algoritmos precisam lidar com:
· Diferentes formas de fala
· Variações humanas
· Ruídos do ambiente
· Por isso, o desenvolvimento desses sistemas exige tecnologia avançada e grande capacidade de processamento.
ALGORITMOS DE RECONHECIMENTO DE FALA
🎯 Objetivo dos algoritmos de reconhecimento de fala
· Existem diversos algoritmos desenvolvidos para reconhecer a fala humana.
· Eles se diferenciam pela forma como:
· Extraem características da fala.
· Generalizam o reconhecimento.
· Transformam sinais sonoros em texto.
· Entre os principais algoritmos citados estão:
· Processamento de Linguagem Natural (PLN)
· Modelos Ocultos de Markov
· N-gramas
· Diarização do locutor
🧠 Conceitos básicos sobre Processamento de Linguagem Natural (PLN)
· O Processamento de Linguagem Natural (PLN) reúne técnicas que permitem aos computadores compreender linguagem humana falada ou escrita.
· Utiliza métodos de:
· Inteligência artificial
· Processamento de informações
· Estruturação de dados
· Assim como os seres humanos utilizam os ouvidos para ouvir, os sistemas usam microfones para coletar áudio.
⚙️ Principais fases do PLN
O PLN possui duas etapas principais:
1. Pré-processamento dos dados
2. Desenvolvimento do algoritmo
🧹 Pré-processamento de dados
· Também chamado de:
· Limpeza dos dados
· Higienização dos dados
· Tem como objetivo:
· Remover dados que dificultam o processamento.
· Organizar e destacar informações relevantes do texto.
🔹 Tokenização:
· Consiste em dividir o texto em unidades menores (tokens).
· A unidade mais comum é a palavra.
· Exemplo do texto: “A inteligência artificial pode ser utilizada para reconhecer emoções”
· Após a tokenização:
· “A”
· “inteligência”
· “artificial”
· “pode”
· “ser”
· “utilizada”
· “para”
· “reconhecer”
· “emoções”
🔹 Remoção de palavras de parada:
· Remove palavras comuns para destacar termos mais importantes.
· Exemplos frequentes:
· Artigos
· Preposições
· Resultado do exemplo:
· “inteligência”
· “artificial”
· “pode”
· “ser”
· “utilizada”
· “reconhecer”
· “emoções”
🔹 Lematização:
· Reduz palavras à forma raiz, removendo flexões.
· Resultado do exemplo:
· “inteligência”
· “artificial”
· “poder”
· “ser”
· “utilizar”
· “reconhecer”
· “emoção”
🔹 Marcação de parte da fala
· Classifica as palavras conforme sua classe gramatical no contexto.
· Exemplo:
· “A” → artigo
· “inteligência” → substantivo
· “artificial” → adjetivo
· “pode” → verbo
· “ser” → verbo
· “utilizada” → verbo
· “para” → preposição
· “reconhecer” → verbo
· “emoções” → substantivo
💡 Finalidade do pré-processamento:
· Preparar os dados para o processamento linguístico posterior.
· Destacar estruturas e características relevantes do texto.
🔍 Algoritmos para extração de características
· Após o pré-processamento, os algoritmos podem extrair informações relevantes dos dados.
· Entre os diversos métodos existentes, dois se destacam.
📋 Sistema baseado em regras
· Utiliza:
· Normas linguísticas
· Gramática
· Regras que simulam o raciocínio presente na fala.
· O desenvolvimento depende de especialistas do contexto.
· Exemplo citado:
· Oficinas de manutenção podem exigir especialistas que conheçam:
· Jargões técnicos
· Linguagem usada por mecânicos e inspetores.
· ✅ Vantagem:
· Grande flexibilidade.
· Regras podem ser:
· Revisadas
· Aprimoradas
· Acrescentadas ao sistema.
· ⚠️ Desvantagem:
· Forte dependência de especialistas.
· Dificuldade em generalizar soluções.
🤖 Sistema baseado em aprendizado de máquina
· Utiliza algoritmos treinados com conjuntos de dados.
· Aprende padrões da linguagem sem necessidade de regras explícitas.
· Baseia-se em:
· Métodos estatísticos
· Redes neurais
· O processo envolve:
· Treinamento
· Validação
· Testes de qualidade
· ✅ Vantagens
· Maior capacidade de:
· Generalização
· Interpretação flexível da linguagem
· Menor dependência de especialistas.
· ⚠️ Desafios
· Necessidade de:
· Grande volume de dados de treinamento.
· Estrutura computacional robusta.
· Atualização constante da base de conhecimento.
💡 Conclusão
· O reconhecimento de fala depende de algoritmos capazes de processar e extrair características da linguagem.
· O PLN prepara e organiza os dados para análise.
· Os sistemas podem funcionar:
· Por regras linguísticas
· Por aprendizado de máquina
· Os algoritmos de extração de características tornam a interpretação da linguagem mais flexível e abrangente.
CADEIAS OCULTAS DE MARKOV
🎯 Importância das cadeias ocultas de Markov
· As cadeias ocultas de Markov são ferramentas utilizadasem:
· Transcrição de fala
· Reconhecimento de padrões
· Sistemas de reconhecimento de voz em dispositivos inteligentes
· São importantes aliadas no estudo e desenvolvimento de tecnologias de reconhecimento de fala.
⚙️ Modelos de cadeias ocultas de Markov
· Os modelos de Markov calculam a probabilidade de um estado ocorrer considerando apenas o estado atual.
· O texto apresenta um exemplo baseado na transição de notas de estudantes.
📊 Exemplo de transição de notas
Foram considerados três estados:
· Nota baixa
· Nota média
· Nota alta
🔹 Probabilidades após uma nota alta
· Nota alta → nota alta: 85%
· Nota alta → nota média: 10%
· Nota alta → nota baixa: 5%
· O mesmo tipo de análise deve ser realizado para:
· Nota média
· Nota baixa
🧮 Matriz de transição de estados
· As probabilidades podem ser representadas em uma matriz de transição.
· Matriz de transição de estados:
· Nessa matriz:
· Linhas e colunas representam os estados.
· Elementos da matriz representam as probabilidades de transição.
· Uma característica importante:
· A soma dos elementos de cada linha é igual a 1.
⚠️ Função da matriz
· Estimar a probabilidade dos próximos estados possíveis.
🔄 Probabilidade após vários períodos
· Para estimar a probabilidade de um estado após n períodos, a matriz de transição é multiplicada por ela mesma várias vezes, como abaixo:
· Com sucessivas multiplicações:
· A matriz converge.
· Os valores das mesmas colunas tornam-se iguais.
💡 Método alternativo
· O texto apresenta uma forma mais eficiente:
· Resolver um sistema de equações associado à matriz.
· Condição utilizada: x + y + z = 1
📌 Resultado do exemplo:
Foram obtidas as probabilidades:
· Nota baixa (x): 6,95%
· Nota média (y): 18,26%
· Nota alta (z): 74,78%
📈 Probabilidade a partir do estado atual
· O modelo também permite calcular probabilidades considerando o estado atual do indivíduo.
· No exemplo:
· O estudante estava em nota média.
· Multiplicando o vetor do estado atual pela matriz de transição, obtiveram-se:
· Nota baixa → 6,95%
· Nota média → 18,26%
· Nota alta → 74,78%
· Isso mostra como o modelo prevê probabilidades futuras a partir do estado presente.
🧠 Aplicação em Processamento de Linguagem Natural (PLN)
· As cadeias ocultas de Markov também podem ser aplicadas ao Processamento de Linguagem Natural (PLN).
🔤 O que representam os estados no PLN?
· Os estados podem representar:
· Palavras
· Categorias ou marcações gramaticais da fala
🎯 O que o modelo estima?
· O objetivo é estimar:
· A probabilidade de ocorrência de uma palavra
· Considerando o estado atual.
📝 Utilização no reconhecimento de linguagem
· As cadeias de Markov podem ser usadas para:
· Sequenciamento de palavras
· Validação de palavras
· Apoio ao processamento linguístico
⚠️ Principal desafio: Assim como em outras técnicas de PLN, um grande desafio é possuir uma base de treinamento robusta.
💡 Conclusão
· As cadeias ocultas de Markov são modelos probabilísticos importantes no reconhecimento de fala e no PLN.
· Elas utilizam:
· Estados
· Probabilidades de transição
· Informações do estado atual
· Sua aplicação permite prever sequências e validar palavras, embora dependa de uma boa base de treinamento para alcançar resultados eficazes.
N-GRAMAS E DIARIZAÇÃO DO LOCUTOR
📌 O que são N-gramas?
· Técnica utilizada no Processamento de Linguagem Natural (PLN).
· Consiste em formar sequências de N palavras ou caracteres para modelar a probabilidade de ocorrência de um texto.
· O objetivo é compreender quais palavras costumam aparecer juntas.
🔹 Exemplo de funcionamento:
Frase: "Este é um texto de exemplo."
· N = 1 (unigrama)
· Cada palavra é tratada separadamente:
· "Este"
· "é"
· "um"
· "texto"
· "de"
· "exemplo"
· Nesse caso, o resultado é semelhante à tokenização.
· N = 3 (trigrama)
· As palavras passam a ser agrupadas:
· ("Este", "é", "um")
· ("é", "um", "texto")
· ("um", "texto", "de")
· ("texto", "de", "exemplo")
🔹 Como os N-gramas ajudam?
· Permitem analisar o contexto das palavras e não apenas palavras isoladas.
· Melhoram o reconhecimento de fala, pois avaliam a probabilidade de determinadas palavras ocorrerem juntas.
· Funcionam de maneira semelhante às associações feitas pelo cérebro humano.
🔹 Relação com aprendizado de máquina:
· Modelos de aprendizado de máquina aprendem a partir de dados de entrada.
· Nos N-gramas, essa entrada é formada pelos grupos de palavras.
· O objetivo do treinamento é ajustar a rede para maximizar a taxa de acerto.
Etapas importantes no uso de N-gramas:
· Alimentação do modelo: É necessário selecionar os grupos de palavras mais significativos.
· Filtro:
· Remove informações irrelevantes ou ruídos.
· Evita prejudicar o aprendizado do modelo.
⚠️ Escolha do valor de N:
· A definição do valor de N é importante:
· N muito pequeno: Gera palavras com pouco relacionamento entre si.
· N muito grande:
· Cria associações excessivamente fortes.
· Pode prejudicar a generalização do modelo.
📌 Diarização do Locutor
🔹 O que é?
· Técnica que divide um fluxo de áudio em segmentos homogêneos.
· Seu objetivo é identificar:
· Quem falou
· Quando falou
🔹 Como funciona?
· A diarização é composta por duas etapas principais:
· Segmentação
· Procura os pontos de mudança de locutor no áudio.
· Identifica início e término da fala.
· Agrupamento
· Reúne segmentos de fala com base nas características do falante.
· Associa cada trecho ao locutor correspondente.
🔹 Aplicações práticas
A diarização possui várias aplicações:
· Indexação: Marca termos utilizados em reuniões e gravações.
· Recuperação: Facilita a busca de informações sem precisar ouvir todo o áudio.
· Reconhecimento de fala com identificação do locutor: Permite reconhecer o conteúdo falado e identificar quem falou.
· Agenda de reuniões e palestras: Produz transcrições mais realísticas e organizadas.
Exemplos de uso:
· Ferramentas de comunicação como:
· Zoom
· Skype
· Teams
· Esses sistemas precisam reconhecer:
· O locutor
· O momento de início da fala
· O momento de término da fala
📌 Resumo
· N-gramas analisam grupos de palavras para compreender contexto e melhorar o reconhecimento de linguagem.
· O sucesso do modelo depende da filtragem adequada e da escolha correta do valor de N.
· Diarização do locutor identifica quem está falando e em qual momento.
· Essa técnica melhora a transcrição automática, a organização de gravações e a busca de informações em áudios.
· O uso crescente de reuniões e gravações digitais tem aumentado o interesse do mercado e da academia pela diarização.
Módulo 2. Arquitetura de reconhecimento de voz
ELEMENTOS BÁSICOS E APLICAÇÕES DA ARQUITETURA DE RECONHECIMENTO DE VOZ
📌 Elementos básicos do reconhecimento de voz
· A fala é a forma mais natural de comunicação humana.
· Por isso, existem diversos estudos voltados ao processamento e reconhecimento da fala.
· O reconhecimento de fala envolve principalmente:
· Captação dos sinais sonoros da fala.
· Representação digital desses sinais.
· Uso de estruturas de dados e algoritmos de processamento digital para manipular e interpretar os sons.
· A arquitetura de reconhecimento de voz é fundamental para permitir que dispositivos eletrônicos compreendam a fala humana.
📌 Principais aplicações do reconhecimento de fala
Entre as aplicações práticas dos algoritmos de reconhecimento de voz, destacam-se:
· Codificação e síntese de fala
· Reconhecimento e verificação de locutor
· Aprimoramento de fala
· Segmentação e rotulagem de fala
· Identificação de linguagem
· Reconhecimento de atitude e emoção
· Processamento de sinal audiovisual
🔹 Arquitetura dos algoritmos de reconhecimento de voz
· O funcionamento dos sistemas de reconhecimento de voz ocorre por meio de várias etapas integradas:
1. Captura do sinal sonoro: Recebimento da fala pelo sistema.
2. Pré-processamento do sinal: Preparação e tratamento inicial do áudio.
3. Extração de características relevantes: Identificação de informações importantes presentesna fala.
4. Modelagem do contexto linguístico: Análise do contexto da linguagem utilizada.
5. Aplicação de algoritmos de aprendizado de máquina: Interpretação dos dados e reconhecimento da fala.
· A integração dessas etapas é essencial para o funcionamento adequado do sistema.
🔹 Aplicações práticas no cotidiano:
· Codificação de fala
· Transforma sinais de áudio em códigos de texto.
· Pode ser usada em tarefas específicas, como:
· Ligar ou desligar luzes por comando de voz.
· Síntese de texto para fala
· Converte texto em sons.
· Pode variar desde:
· Conversão simples de palavras.
· Leitura fluida e coordenada de textos, semelhante à fala humana.
· Reconhecimento e verificação de locutor
· Permite identificar:
· Quem está falando.
· O que está sendo falado.
· Aprimoramento de fala
· Realiza ajustes na fala do locutor.
· Exemplo: Correção de afinação em jogos de karaokê.
· Segmentação e rotulagem de fala
· Auxilia na transcrição automática da fala.
· Exemplo: Geração automática de legendas em vídeos.
· Identificação de linguagem: Detecta qual idioma está sendo utilizado na fala.
· Reconhecimento de atitude e emoção
· Analisa padrões sonoros associados a emoções.
· Aplicação comum: Detectores de mentira.
· Processamento de sinal audiovisual
· Integra sinais sonoros e visuais.
· Pode:
· Ler sinais visuais e produzir fala.
· Captar fala e gerar sinais visuais.
⚠️ Aspectos éticos e legais
· O reconhecimento de fala precisa lidar não apenas com desafios técnicos, mas também com:
· Questões éticas.
· Respeito à legislação.
· Surgem questionamentos importantes, como:
· A transcrição representa exatamente o que o locutor disse?
· Como evitar o uso inadequado da tecnologia?
⚠️ Atenção: potencial de mau uso
· Dispositivos modernos, como celulares, conseguem:
· Ouvir.
· Processar.
· Interpretar a fala humana.
· Esse avanço tecnológico traz benefícios, mas também potencial para uso indevido.
· Por isso, não se pode ignorar os impactos relacionados à privacidade, segurança e responsabilidade no uso da tecnologia.
ARQUITETURA DE RECONHECIMENTO DE VOZ E REPRESENTAÇÃO DA FALA
📌 Visão geral
· A representação da fala é essencial para transformar sinais sonoros em comandos compreensíveis para dispositivos eletrônicos.
· O reconhecimento de voz envolve um processo com várias etapas, que incluem:
· Captação do áudio.
· Processamento digital.
· Interpretação das palavras.
· Essa tecnologia possibilita uma interação mais intuitiva entre humanos e máquinas.
📌 Arquitetura para reconhecimento de voz
A arquitetura básica dos algoritmos de reconhecimento de voz é organizada em várias etapas.
🔹 Entrada do sinal sonoro
· Os sinais de voz passam inicialmente por remoção de ruídos.
· São aplicados algoritmos de filtragem para obter a forma de onda da fala.
🔹 Processamento e conversão
· As ondas sonoras são:
· Processadas.
· Convertidas em vetores de características.
· Esses vetores servem como entrada para o decodificador de fala.
🔹 Decodificação:
· O decodificador busca a melhor correspondência entre:
· A sequência de características da fala capturada.
· As sequências armazenadas na base de conhecimento do modelo (classes acústicas).
· Para isso, utiliza informações de:
· Modelos acústicos.
· Modelos de linguagem.
· Essas informações são obtidas durante a fase de treinamento do modelo, realizada antes do reconhecimento.
🔹 Resultado:
· O resultado do reconhecimento pode ser utilizado para:
· Aperfeiçoar os modelos acústicos.
· Melhorar o desempenho do sistema.
📌Etapas da arquitetura básica
A arquitetura básica de reconhecimento de voz é composta por:
· Representação
· Vetor de características
· Modelagem acústica
· Modelagem da linguagem
· Modelagem léxica
· Algoritmo de busca (decodificador)
· Palavras reconhecidas
📌 Representação da fala
🔹 Desafios do reconhecimento de fala
· O reconhecimento de fala é considerado um problema complexo devido às muitas variações nos sinais de voz.
· Entre os principais fatores estão:
· Acústica dos fonemas
· Variações acústicas do ambiente
· Variações de humor do locutor
· Aspectos culturais
🔹 Acústica dos fonemas
· Fonema é a menor unidade sonora da língua.
· O número de fonemas pode variar em relação ao número de letras (grafemas) das palavras.
· Exemplos:
· Estudar
· 7 grafemas
· 7 fonemas
· Canto
· 5 grafemas
· 4 fonemas
· Táxi
· 4 grafemas
· 5 fonemas
· O “x” possui som de “ks”.
🔹 Influência do ambiente e do locutor
· Diversos fatores interferem na captura e interpretação da voz:
1. Variações do ambiente: A acústica do ambiente e a posição do locutor influenciam a qualidade da captura da fala.
2. Humor do locutor:
· O humor pode alterar:
· A forma da fala.
· A velocidade com que a pessoa fala.
3. Aspectos culturais: Influenciam a maneira como o locutor se expressa.
4. Tratamento das variações da fala:
· Para lidar com essas variações:
· A voz é convertida de sinal analógico para sinal digital.
· São aplicadas técnicas de redução de ruídos.
· Esse tratamento busca tornar o reconhecimento de voz mais eficiente e preciso.
VETOR DE CARACTERÍSTICAS E MODELAGEM ACÚSTICA
📌 Visão geral
· No reconhecimento de fala, a criação de vetores de características e a modelagem acústica são etapas essenciais.
· Essas etapas permitem:
· Transformar sinais de áudio em dados utilizáveis.
· Fazer com que sistemas compreendam e processem a fala humana com maior precisão.
📌 Vetor de características
🔹 O que são características:
· Características (ou recursos) são estruturas utilizadas para classificar dados.
· O conceito é comum em algoritmos de aprendizado de máquina, mas não se limita a eles.
· Exemplo: Em um sistema de gerenciamento de passageiros, algumas características podem ser:
· Nome do passageiro
· Idade
· Cidade de partida
· Cidade de destino
· Conexões do voo
· Horários de partida e chegada
💡 Vetor de características no reconhecimento de voz
· De forma semelhante ao exemplo do passageiro, o sistema de reconhecimento de voz precisa extrair características do sinal digital.
· Isso é realizado por meio da: Transformação do sinal digital em um conjunto de dados com taxa fixa.
· Como o sistema trabalha nessa etapa:
· Nesse momento, o sistema:
· Ainda não trabalha diretamente com palavras.
· Trabalha com medidas fixas de sinais digitais.
· Essas medidas serão analisadas pelas:
· Modelagens acústica
· Modelagem léxica
· Modelagem de linguagem
· O objetivo é associar os sinais digitais ao que foi falado pelo locutor.
📌 Modelagem acústica
🔹 Função da modelagem acústica:
· O modelo acústico trabalha com as formas de onda do áudio.
· Sua função é identificar a qual fonema cada som corresponde.
· Esse processo ocorre no nível de:
· Letra por letra (fonema por fonema).
🔹 Treinamento do modelo acústico:
· Para reconhecer os fonemas, o modelo passa por uma fase prévia de treinamento.
· Durante o treinamento:
· São fornecidas gravações de áudio.
· Junto com suas transcrições correspondentes.
· Assim, o sistema aprende a relacionar:
· Sons da fala.
· Fonemas correspondentes.
🔹 Representação estatística:
· As relações obtidas pela modelagem acústica são representadas como:
· Representações estatísticas das sequências de vetores de características.
· Técnicas utilizadas:
· As técnicas mais comuns incluem:
· Modelo Oculto de Markov (HMM)
· Algoritmos de aprendizado de máquina
· Essas técnicas são utilizadas porque:
· Conseguem modelar sequências temporais.
· Trabalham com propriedades estatísticas.
· Permitem capturar variações na pronúncia dos fonemas.
🔹 Aplicações da modelagem acústica
📞 Atendimento ao cliente:
· Sistemas de reconhecimento de voz permitem:
· Interações mais naturais.
· Atendimento mais eficiente.
· Redução da necessidade de intervenção humana.
· Melhoria da experiência do usuário.
🏠 Dispositivos de controle por voz
· Aplicações em dispositivos como:
· Smart TVs
· Sistemas de automação residencial
· O reconhecimento de voz funciona como umainterface intuitiva, permitindo:
· Controle de dispositivos eletrônicos por meio de comandos de voz simples.
MODELAGENS DA LINGUAGEM E LÉXICA
📌 Visão geral
· A modelagem da linguagem e a modelagem léxica são componentes importantes dos sistemas de reconhecimento de voz.
· Essas modelagens permitem:
· Reconhecer palavras individuais.
· Compreender o contexto e a estrutura das frases.
· Tornar as interações mais naturais e precisas.
📌 Modelagem da linguagem
🔹 Função da modelagem da linguagem
· O modelo de linguagem trabalha em conjunto com o modelo acústico.
· Seu objetivo é:
· Descartar previsões que não fazem sentido.
· Restringir a escolha das palavras com base em regras gramaticais.
· O modelo é definido como a probabilidade de ocorrência de uma sequência de palavras, normalmente representada por um N-Grama.
🔹 Estrutura matemática do modelo
A modelagem da linguagem é formada por:
· Conjunto finito de palavras (V)
· Conjunto de sentenças (S) formadas a partir de V
· Função de probabilidade aplicada às sequências de palavras.
Características da função de probabilidade
· Para qualquer sequência pertencente ao conjunto de sentenças:
· A probabilidade deve ser maior ou igual a zero:
· Além disso, a soma das probabilidades das sequências possíveis deve ser igual a 1.
· 💡 Significado da fórmula:
· A função :
· Representa uma distribuição de probabilidade sobre as sentenças do conjunto S.
· O objetivo é:
· Encontrar a probabilidade de ocorrência de uma sequência, considerando informações já conhecidas.
· Em outras palavras:
· Isso significa que a função representa uma distribuição de probabilidade sobre as sentenças.
🔹 Objetivo do modelo de linguagem:
· O objetivo é calcular a probabilidade de ocorrência de uma sequência de palavras, considerando informações já conhecidas.
💡 Exemplo com N-Grama de tamanho 3:
· Supondo que temos um N-Grama com N = 3, a probabilidade da ocorrência de uma sequência é calculada considerando:
· Nesse caso, a probabilidade da sequência é calculada pelo produto das probabilidades condicionais.
📝 Interpretação do exemplo:
· A sequência de palavras é calculada considerando:
· A probabilidade da primeira palavra.
· A probabilidade da segunda palavra condicionada à primeira.
· A probabilidade da terceira palavra condicionada às duas anteriores.
· Assim, o modelo utiliza o contexto das palavras anteriores para prever a próxima palavra.
📌 Modelagem léxica
🔹 O que é modelagem léxica:
· A modelagem léxica trata do relacionamento entre:
· Palavras
· Seus respectivos significados
· Também é chamada de dicionário, pois descreve:
· Um vocabulário.
· As definições associadas às palavras.
🔹 Diferença entre modelagem léxica e dicionário:
· O dicionário possui um escopo mais amplo porque inclui:
· Sinônimos
· Pronúncias
· A modelagem léxica concentra-se na descrição do vocabulário e sua estrutura linguística.
🔹 Definição de modelagem léxica:
· A modelagem léxica descreve:
· O conjunto completo de morfemas de uma língua.
· Todas as suas possíveis derivações.
· Morfemas são as menores unidades com significado que forma uma palavra.
· Ou seja, um morfema carrega o sentido da palavra.
· Ele pode ser o radical (a base do significado);
· Ou afixos (como prefixos e sufixos) que mudam o sentido ou a função da palavra
🧩 Tipos de morfemas:
1. Radical: A base da palavra que contém o seu significado central.
· Exemplos: problema, probleminha, problemão.
2. Afixos: Morfemas que se juntam ao radical para formar novas palavras.
· Prefixos: vêm antes do radical.
· Exemplos: desleal, infeliz, impossível.
· Sufixos: vêm depois do radical.
· Exemplos: floricultura, felizmente.
3. Vogal Temática: Morfema que liga o radical às desinências, facilitando a pronúncia.
· Exemplos: “a” em casas; “e” em vender.
4. Desinências: Morfemas que indicam as flexões da palavra em número, tempo e modo verbal
· Nominais: indicam gênero (masculino/feminino) e número (singular/plural).
· Exemplos: gatas (-s indica plural), gato (-o indica gênero masculino).
· Verbais: indicam pessoa, número, modo e tempo do verbo.
· Exemplos: falávamos (-vamos indica 1ª pessoa do plural, pretérito imperfeito).
ALGORITMO DE BUSCA (DECODIFICADOR) E PALAVRAS RECONHECIDAS
📌 Visão geral
· Os sistemas de reconhecimento de voz utilizam algoritmos de busca (decodificadores) para interpretar a fala humana.
· Esses algoritmos permitem:
· Comparar informações da fala com conhecimentos armazenados.
· Identificar palavras e produzir resultados compreensíveis.
📌 Algoritmo de busca (decodificador)
🔹 Função do decodificador:
· O decodificador utiliza informações fornecidas pelas:
· Modelagem acústica
· Modelagem da linguagem
· Modelagem léxica
· Sua função é:
· Comparar essas informações com as cadeias presentes na base de conhecimento do sistema.
· Importância do decodificador:
· O decodificador combina as probabilidades das palavras com modelos de linguagem e vocabulário para determinar a sequência de palavras mais provável.
· Essa comparação é essencial para identificar e interpretar corretamente as palavras faladas.
🔹 Relação entre vocabulário e desempenho:
· O decodificador funciona como um algoritmo de busca.
· Por isso:
· ⚠️Quanto maior o vocabulário:
· Maior será:
· A quantidade de comparações realizadas.
· O esforço computacional necessário.
· Para evitar lentidão, os algoritmos precisam de:
· Estruturas de dados eficientes
· Maior eficiência computacional.
📌 Palavras reconhecidas
🔹 O que são palavras reconhecidas:
· Representam o resultado final do algoritmo de reconhecimento de voz.
· A saída pode ser:
· Sequência de comandos
· Transcrição da fala do locutor
🔹 Dependência do contexto da aplicação:
· O resultado depende do tipo de aplicação utilizada.
· Mesmo com diferentes níveis de complexidade:
· A sequência de execução do sistema permanece a mesma.
· Isso favorece:
· Generalização da solução
· Uso da arquitetura como referência em reconhecimento de voz.
💡 Aperfeiçoamento do modelo
· O resultado obtido pode ser utilizado para melhorar o próprio modelo de reconhecimento.
🔄 Ciclo de feedback:
· Ao analisar erros, imprecisões e falhas de interpretação é possível:
· Ajustar o algoritmo.
· Refinar sua capacidade de interpretar a fala humana.
· Melhorar continuamente:
· Precisão
· Confiabilidade
· Performance do sistema.
📌 Como medir a qualidade do modelo: Perplexidade
🔹 Importância da perplexidade:
· A linguagem é dinâmica e sofre mudanças constantes.
· Revisões manuais dos modelos são inviáveis em larga escala.
· Por isso, utiliza-se a perplexidade como medida de avaliação.
· A perplexidade é usada para:
· Comparar modelos de reconhecimento de voz.
· Medir a qualidade da previsão de uma sequência de palavras.
🔹 Definição da perplexidade:
· A perplexidade mede a dificuldade do modelo em encontrar a sequência correta de palavras.
Fórmula da perplexidade:
Fórmula equivalente:
Onde:
· → corresponde a uma sequência de palavras.
· → é a probabilidade de ocorrência da palavra
· → representa o produtório: indica a multiplicação de todos os termos da sequência.
🔹 Interpretação da perplexidade:
· Quanto maior a perplexidade: Pior é o modelo.
· A medida auxilia a avaliar a dificuldade de reconhecimento imposta pela língua.
🔹 Exemplo de cálculo da perplexidade:
· Suponha que existem duas possibilidades para um mesmo evento:
· Uma com 80% de chance (0,8).
· Outra com 20% de chance (0,2).
· Cálculo da perplexidade:
· Cálculo da inversa da perplexidade:
· Interpretação do exemplo:
· A inversa da perplexidade representa: Probabilidade de acerto do modelo.
· No exemplo apresentado: O sistema possui 70,70% de probabilidade de acerto.
Módulo 3. Quantização de sinais
CONCEITOS FUNDAMENTAIS SOBRE A QUANTIZAÇÃO DE SINAIS
📌 Visão geral
· A quantização de sinais é um processo fundamental na transformação de sinais analógicos em digitais.
· Esse processo é importante para diversas tecnologias, como:
· Reconhecimento de voz
· Comunicações digitais· Processamento de áudio
· A quantização contribui para:
· Melhorar a qualidade e a precisão das informações capturadas.
· Otimizar a eficiência dos sistemas que utilizam esses dados.
📌 Esquema básico de aquisição de dados
🔹 Relação com reconhecimento de voz:
· Os algoritmos de reconhecimento de voz possuem diversas aplicações práticas.
· Por isso, existem muitos estudos voltados ao tema.
· ⚠️ Atenção: Características comuns dos algoritmos
· Os trabalhos relacionados ao reconhecimento de voz têm em comum:
· Tratamento probabilístico dos dados.
· Mesma fonte de entrada de dados.
· Principais abordagens:
· Cadeias ocultas de Markov
· Aprendizado de máquina
🔹 Etapa de aquisição de dados:
· A entrada de dados exige atenção especial porque diversos fatores podem prejudicar:
· A aquisição do sinal.
· O comportamento do algoritmo.
Etapas do processo de aquisição:
1. Sistema físico: Representa a emissão do áudio pelo locutor.
2. Captura por sensor: O áudio emitido precisa ser capturado.
3. Sinais analógicos:
· Os sinais iniciais são:
· Contínuos
· Analógicos
4. Conversão analógico-digital: O sistema precisa converter o sinal analógico em digital.
5. Tratamento computacional: O sinal digital é convertido para um formato adequado ao processamento pelo computador.
⚠️ Atenção: Conversão analógico-digital
· A conversão é realizada pelo: CAD (Conversor Analógico-Digital)
· Sua função é: Transformar sinais analógicos em digitais.
🔹 Quantização de sinais:
· O que é quantização?
· A técnica de transformação de sinais analógicos em digitais é chamada de quantização.
· A quantização realiza:
· Mapeamento de valores contínuos para valores discretos.
💡 Significado do processo:
· A quantização:
· Aproxima valores do mundo real.
· Cria uma representação digital utilizável pelo sistema.
⚠️ Atenção: Limitações da quantização
· Durante a conversão podem ocorrer:
· Perdas de informação
· Limites de precisão do sistema digital
· Erros numéricos
· Esses fatores influenciam o comportamento esperado dos algoritmos.
📌 Desafios da quantização e erros numéricos
🔹 Principais desafios:
· Apesar de ser essencial, a quantização apresenta dificuldades importantes.
· Entre os principais desafios estão:
· Introdução de erros numéricos.
· Perda de informações durante a conversão.
🔹 Erros de quantização:
· Na conversão: Valores contínuos são aproximados para valores discretos.
· Essa aproximação pode gerar: Erros de quantização.
⚠️ Impacto dos erros:
· Os erros podem:
· Acumular ao longo do processamento.
· Reduzir a precisão dos algoritmos de reconhecimento de voz.
⚠️ Desafio de engenharia
· Existe um equilíbrio necessário entre:
· Resolução da quantização
· Capacidade de processamento dos dispositivos
· Esse balanceamento é um desafio constante para engenheiros.
📌 Aplicações práticas e benefícios da quantização
🔹 Aplicações além do reconhecimento de voz:
· A quantização é utilizada em diversas áreas, incluindo:
· Comunicações digitais
· Processamento de imagens
· Controle de sistemas
· Reconhecimento de voz
🔹 Benefícios no reconhecimento de voz:
· A quantização melhora:
· A interpretação de comandos de voz.
· A transcrição com alta precisão.
· Resultados obtidos:
· Maior satisfação do usuário
· Ampliação das possibilidades de uso
· Exemplos:
· Assistentes virtuais
· Sistemas de atendimento automatizado
💡 Impacto tecnológico:
· O aprimoramento da quantização permite:
· Desenvolvimento de tecnologias mais eficientes.
· Maior precisão dos sistemas.
· Estímulo à inovação e à eficiência operacional em diferentes áreas tecnológicas.
ELEMENTOS ESSENCIAIS DO PROCESSAMENTO DE SINAIS
🔹 Visão geral
· O processamento de sinais é importante para:
· Análise e manipulação de dados.
· Aplicações em áreas como:
· Telecomunicações
· Processamento de áudio
· Processamento de imagens
· Seu estudo permite compreender:
· Como os sinais são capturados.
· Como são processados.
· Como são interpretados em tecnologias modernas.
📌 Detalhes sobre o quantizador
🔹 Captura e processamento do áudio:
· O reconhecimento de voz começa com a captura do som emitido pelo locutor.
· Inicialmente, o áudio é capturado como sinal analógico.
· Em seguida, ocorre a conversão para sinal digital.
· Esse processo é chamado de quantização.
🔹 Características dos sinais:
📈 Sinais analógicos
· São sinais contínuos.
· Possuem características:
· Podem assumir qualquer valor entre os limites mínimo e máximo do som audível.
· Variam ao longo do tempo.
💻 Sinais digitais
· São representados por: Sequências de valores discretos.
· Durante a conversão ocorrem perdas de informação.
🔹 O quantizador
· O responsável pela quantização é chamado de quantizador.
Características básicas do quantizador:
· Não utiliza memória.
· É instantâneo.
💡 Significado prático:
· A transformação do sinal no instante t:
· Não depende de amostras anteriores.
· Não depende de amostras posteriores.
📌 Processo de amostragem e discretização
🔹 Amostragem do sinal:
· Antes da conversão digital, o sinal analógico passa pela amostragem.
· Nesse processo ocorre: Discretização no tempo.
· São coletadas amostras do sinal analógico ao longo do tempo.
🔹 Conversão para sinal digital:
· A sequência de amostras ainda não é um sinal digital.
· Isso acontece porque:
· Os valores das amostras continuam podendo ser contínuos.
· Para completar a conversão:
· Cada amostra é mapeada para um nível discreto.
· Esses níveis são representados por bits.
💡 Exemplo: Discretização com 3 bits
· O texto utiliza: N = 3 bits
· Nesse caso:
· Cada amostra é associada a um dos níveis discretizados.
· Fórmula do total de níveis
· O número total de níveis depende da quantidade de bits utilizada.
· Exemplo:
· Para N = 3 →
· Resultado: 8 níveis de discretização.
📌 Medição do erro de quantização
🔹 Erro de quantização
· O quantizador aproxima:
· Cada valor da amostra
· Para o nível discreto mais próximo.
· Pode existir diferença entre:
· Valor da amostra.
· Valor quantizado.
· Essa diferença é chamada de: Erro de quantização
Fórmula do erro:
Exemplo de cálculo do erro:
· Vamos supor que:
· Valor da amostra: 6,3
· Valor quantizado: 6
· Cálculo:
· Interpretação:
· O erro de quantização é: 0,3
· Quanto mais próximo de zero:
· Melhor é a qualidade da quantização.
📊 Erro total da quantização:
🔹 Medindo o erro total:
· Para avaliar toda a quantização:
· É necessário somar os erros de todas as amostras.
· Considerando uma amostra com N elementos, o erro total é dado por:
⚠️ Objetivo do quantizador:
· O quantizador deve: Minimizar o erro total de quantização.
· Isso garante:
· Melhor qualidade na representação digital do sinal.
· Maior precisão no processamento dos dados.
QUANTIZAÇÃO VETORIAL
🔹 Visão geral
· A quantização vetorial é uma técnica importante no:
· Processamento de sinais
· Compressão de dados
· Ela contribui para:
· Maior eficiência dos sistemas.
· Melhor qualidade no armazenamento e tratamento de dados.
· Possui aplicações em áreas como:
· Comunicações
· Reconhecimento de padrões
📌 Fundamentação
🔹 O que é quantização vetorial
· A quantização vetorial:
· Agrupa elementos semelhantes.
· Organiza esses elementos em torno de centroides.
· É utilizada para:
· Compactação de dados
· Correção de dados, reduzindo perdas.
· Em outras palavras:
· A quantização vetorial representa os dados de forma mais compacta, reduzindo o armazenamento e aumentando a eficiência.
🔹 Definição matemática
A quantização vetorial é definida pela busca do agrupamento que minimiza a distância entre os pontos e seus centroides.
Onde:
· → Representa os pontos da amostragem.
· → Representa o centroide do agrupamento.
· → Representa a quantidade ótima de grupos.
🔹 Regiões de Voronoi:
· O agrupamento apresentado é visualizado por meio das: Regiões de Voronoi
· Cada região:
· Representa um conjunto que agrupa elementos semelhantes.
· É formada por pontos associados a um mesmo centroide.
· Essa técnica é considerada:baixa:
· Aprendizado lento;
· Convergência mais suave.
Taxa alta:
· Aprendizado mais rápido;
· Porém, pode de impedir a convergência.
Fórmula de atualização dos pesos:
Onde:
· → peso na iteração atual;
· → peso da iteração anterior;
· → incremento do peso. Sendo que a formula do Incremento:
· Onde:
· E = erro entre valor esperado e obtido;
· η (eta) = taxa de aprendizagem positiva e constante.
🔄 Momentum
Valor positivo que utiliza informações das iterações anteriores para atualizar os pesos.
Objetivo:
· Reduzir oscilações grandes;
· Tornar o treinamento mais estável.
Fórmula:
Onde:
· (gamma) → é o Momentum. O valor usado na prática varia entre 0,5 e 0,9.
🔁 Quantidade de Épocas
· Representa a quantidade de vezes que todos os dados de treinamento são fornecidos para a rede durante o treinamento.
· Dependendo da quantidade de épocas, podem ocorrer duas situações:
⚠️ Underfitting:
· Ocorre quando:
· A rede não aprende adequadamente os padrões;
· Pode ser causado por poucas épocas.
⚠️ Overfitting:
· Ocorre quando:
· A rede se especializa excessivamente nos dados de treino;
· Não consegue generalizar.
· Pode ser causado por: Excesso de épocas.
📦 Tamanho do Lote (Batch Size)
· Define quantas amostras são processadas por vez.
· Exemplo:
· Imagine que temos 1000 amostras;
· Configuramos o Batch size = 100.
· Funcionamento:
1. Rede processa primeiras 100 amostras;
2. Treina;
3. Processa próximas 100;
4. Repete até completar o conjunto.
· Resultado: Para completar 1 época com batch size 100, são necessárias 10 iterações.
🎲 Pesos Iniciais da Rede
· A CNN precisa iniciar o treinamento com pesos iniciais.
· Importância: Essa escolha pode influenciar a convergência do algoritmo de treinamento.
· Estratégia comum:
· Escolher pesos conforme a função de ativação utilizada;
· Geralmente utiliza-se distribuição uniforme.
💡 Resumo
· A CNN depende de dois grupos principais:
· Parâmetros (aprendidos automaticamente):
· Kernels;
· Pesos sinápticos.
· Hiperparâmetros (definidos previamente):
· Estrutura da rede:
· Kernel;
· Stride;
· Padding;
· Camadas;
· Funções de ativação;
· Dropout.
· Treinamento:
· Taxa de aprendizagem;
· Momentum;
· Épocas;
· Batch size;
· Pesos iniciais.
· A definição adequada desses hiperparâmetros influencia diretamente:
· O desempenho da rede;
· O custo computacional;
· A capacidade de generalização do modelo.
TREINAMENTO DA REDE CNN
📌 Objetivo do Treinamento
O treinamento de uma rede CNN tem como finalidade:
· Fazer a rede extrair informações dos dados de treinamento;
· Permitir que a rede generalize os resultados, ou seja, consiga reconhecer padrões além dos exemplos usados no treinamento.
🔹 O que o treinamento da CNN precisa encontrar
Para atingir seu objetivo, o treinamento busca determinar:
1. Kernels das camadas de convolução:
· Resultam da aplicação dos filtros de convolução sobre os dados de entrada;
· Trabalham em conjunto com as funções de ativação;
· Normalmente, utiliza-se a função ReLU.
2. Pesos sinápticos das camadas totalmente conectadas:
· Precisam minimizar as diferenças entre:
· Previsões de saída (dados rotulados);
· Resultados obtidos pela rede no treinamento.
⚙️ Algoritmo de Treinamento: Backpropagation
· O método mais utilizado para treinar redes neurais é o algoritmo de retropropagação de erro (backpropagation).
· Esse algoritmo consiste em duas etapas principais.
1. Etapa de Avanço (Forward)
Nesta fase:
· As ativações são propagadas:
· Da camada de entrada;
· Até a camada de saída.
Objetivo: Produzir a saída da rede a partir dos dados fornecidos.
2. Etapa de Retrocesso (Backward)
Nesta fase:
· Os pesos sinápticos são atualizados;
· O erro é calculado, representando a diferença entre:
· O valor obtido pela rede;
· O valor de referência esperado.
Esse erro é então:
· Propagado para trás na rede;
· Utilizado para ajustar os pesos e melhorar o desempenho do modelo.
💡 Observação:
O valor de referência utilizado para comparar a saída da rede também pode receber outros nomes:
· Valor nominal;
· Valor alvo (target).
📖 Resumo
O treinamento da CNN busca:
· Encontrar kernels nas camadas convolucionais;
· Ajustar pesos sinápticos nas camadas totalmente conectadas;
· Minimizar erros entre previsões e valores esperados.
O processo é realizado pelo backpropagation, composto por:
1. Avanço → propagação das ativações até a saída;
2. Retrocesso → propagação do erro e atualização dos pesos.
FUNÇÃO DE PERDA
📌 O que é Função de Perda?
· A função de perda (ou função de custo) é utilizada para:
· Medir a compatibilidade entre:
· As previsões de saída da rede;
· Os valores obtidos/esperados.
· Ideia principal: Erro menor → indica que a rede está bem treinada para o conjunto de treinamento.
⚠️ Limitação da Função de Perda
· Mesmo que o erro seja pequeno: Não há garantia de boa generalização da rede.
· Motivo:
· Isso pode acontecer devido a problemas nos dados de treinamento, levando ao overfitting (superespecialização da rede).
· Nesse caso:
· A rede aprende muito bem os dados de treino;
· Mas pode ter dificuldade em generalizar para novos dados.
🔹 Relação com a Função de Ativação
· A função de perda é aplicada: Após a função de ativação da camada de saída.
· Como normalmente utiliza-se a Softmax:
· Os valores de saída ficam no intervalo de 0 a 1.
⚙️ Escolha da Função de Perda
· A função de perda é escolhida de acordo com o contexto da aplicação.
· Os dois casos mais comuns são:
1. Entropia Cruzada para Classificação Multiclasse
· Utilizada em: Problemas de classificação multiclasse.
· Fórmula:
· Objetivo:
· Medir a diferença entre:
· Valores reais ();
· Previsões da rede (.
· Quanto menor o valor da entropia cruzada: Melhor o desempenho da classificação.
2. Erro Quadrático Médio – MSE (Regressão)
· Utilizado em: Problemas de regressão com valores contínuos.
· Fórmula:
· MSE é o acrônimo de: Mean Square Error (Erro Quadrático Médio).
· Objetivo:
· Calcular a média dos erros quadráticos entre:
· Valores reais ();
· Valores previstos ().
· Quanto menor o MSE: Menor a diferença entre previsão e valor real.
💡 Resumo
A função de perda:
· Mede o erro das previsões da rede;
· Também é chamada de função de custo;
· É aplicada após a Softmax na saída da CNN;
· Ajuda a avaliar o treinamento, mas não garante generalização.
Principais funções:
· Classificação multiclasse: Entropia cruzada
· Regressão contínua: Erro quadrático médio (MSE).
ALGORITMOS DE OTIMIZAÇÃO
📌 Função dos algoritmos de otimização
· Durante o treinamento da rede neural, é necessário utilizar algoritmos de otimização para minimizar a função de erro.
· Esses algoritmos ajustam os pesos sinápticos da rede para melhorar as previsões.
📌 Principais algoritmos
· Gradiente de descida (Gradient Descent)
· Calcula o gradiente da função de custo.
· Usa esse valor para atualizar os pesos da rede e reduzir o erro.
· Gradiente de descida estocástico (Stochastic Gradient Descent – SGD)
· Semelhante ao gradiente de descida tradicional.
· Atualiza os pesos usando apenas um subconjunto dos dados de treinamento por vez.
· Gradiente acelerado de Nesterov
· Utiliza o gradiente acumulado anteriormente para dar um “salto” inicial.
· Depois realiza uma correção antes da atualização dos pesos, buscando melhorar o processo de otimização.
APLICAÇÕES DAS REDES CNN
📌 CNN e visão computacional
· As redes CNN combinam diferentes técnicas e parâmetros para resolver problemas de visão computacional.
· Seu sucesso está relacionado à capacidade de analisar e identificar padrões em imagens.
· Como são redes de aprendizado supervisionado, utilizam dados com rótulos para aprender.
📌 Principais aplicações das CNN
· Classificação: identifica a categoria de um objeto presente na imagem.
· Localização: encontra o objeto alvo e o destaca dentro de uma moldura.
· Detecção: localiza múltiplos objetos em uma mesma imagem.
· Segmentação: classifica e identifica a posição exata do objeto de interesse na imagem.
📌 Classificaçãoa função, o seguinte código deve ser adicionado abaixo dela.
🎯 Objetivo do teste:
· Criar um reconhecedor de voz;
· Executar a função obter_audio();
· Verificar se a captura de áudio foi realizada corretamente.
# Testando a função obter_audio()
if __name__ == "__main__": # Verifica se o arquivo está sendo executado diretamente
microfone = sr.Recognizer() # Cria um objeto reconhecedor de voz
audio = obter_audio(microfone) # Chama a função para capturar o áudio
print("Função obter_audio() executada com sucesso.") # Exibe mensagem de confirmação
🔊 Execução do programa:
· Durante a execução, o usuário deve pronunciar a frase: “Isto é um teste”
· O programa:
· Ativa o microfone;
· Aguarda a fala do usuário;
· Captura o áudio;
· Exibe uma mensagem indicando que a função foi executada.
✅ Resultado observado:
· O resultado apresentado mostra que:
· O áudio foi capturado corretamente;
· A função obter_audio() executou com sucesso;
· O sistema está pronto para as próximas etapas do reconhecimento de voz.
PROGRAMA COMPLETO PARA TRANSFORMAR ÁUDIO EM TEXTO
· O desenvolvimento do programa permite explorar uma aplicação prática do reconhecimento de voz.
· Utilizando bibliotecas em Python, como SpeechRecognition, é possível:
· Capturar áudio do microfone;
· Processar o sinal de áudio;
· Converter a fala em texto.
· Essa tecnologia pode ser aplicada em diferentes cenários, como:
· Assistentes virtuais;
· Transcrição automática de gravações;
· Sistemas baseados em reconhecimento de voz.
🔄 Função para transformar áudio em texto
· A função tem como objetivo converter o áudio capturado em texto.
· Ela recebe dois parâmetros:
· microfone → reconhece padrões de fala usando modelos pré-treinados;
· audio → contém o áudio capturado anteriormente.
🎯 Objetivo do código:
· Utilizar o serviço Google Speech Recognition para:
· Interpretar o áudio;
· Converter a fala em texto em português;
· Retornar o conteúdo reconhecido.
def transformar_audio_em_texto(microfone, audio): # Define a função que converte áudio em texto
try: # Inicia o bloco de tratamento de exceções
frase = microfone.recognize_google(audio, language='pt-BR') # Usa o Google para reconhecer a fala em português
return frase # Retorna o texto reconhecido
except sr.UnknownValueError: # Trata erro caso o áudio não seja compreendido
print("Não entendi") # Exibe mensagem de erro
📌 Funcionamento da função:
· O método recognize_google():
· Envia o áudio ao Google Speech Recognition;
· Processa a fala;
· Retorna o texto correspondente.
· O parâmetro language='pt-BR':
· Define o idioma como português do Brasil.
⚠️ Tratamento de exceção:
· O código utiliza tratamento de exceção porque:
· Nem sempre o sistema consegue entender a fala do locutor;
· Ruídos ou pronúncia podem dificultar o reconhecimento.
· Nesses casos, o programa exibe: "Não entendi"
🎤 Função para escutar o microfone
· A próxima etapa é implementar a função que:
· Ativa o microfone;
· Captura o áudio;
· Chama a função responsável pela conversão em texto.
· O microfone é criado a partir da função Recognizer() da biblioteca SpeechRecognition.
🎯 Objetivo do código:
· Criar o reconhecedor de voz;
· Obter o áudio do usuário;
· Converter o áudio em texto;
· Retornar o texto reconhecido.
def escutar_microfone(): # Define a função que realiza todo o processo de escuta
microfone = sr.Recognizer() # Cria o objeto reconhecedor de voz
audio = obter_audio(microfone) # Captura o áudio do microfone
texto = transformar_audio_em_texto(microfone, audio) # Converte o áudio em texto
return texto # Retorna o texto reconhecido
📌 Funcionamento da função:
· Recognizer() cria o mecanismo de reconhecimento de voz.
· obter_audio():
· Ativa o microfone;
· Captura o áudio do usuário.
· transformar_audio_em_texto():
· Processa o áudio;
· Converte a fala em texto.
· O resultado final é retornado pela função.
▶️ Função principal
· A função principal é responsável por iniciar todo o processo.
🎯 Objetivo do código:
· Chamar a função escutar_microfone();
· Exibir na tela a frase reconhecida.
if __name__ == '__main__': # Verifica se o programa está sendo executado diretamente
texto = escutar_microfone() # Captura e converte a fala em texto
print("A frase que você disse foi: " + texto) # Exibe o texto reconhecido
📌 Funcionamento da função principal:
· O programa:
1. Ativa o microfone;
2. Aguarda o usuário falar;
3. Captura o áudio;
4. Converte a fala em texto;
5. Exibe o resultado na linha de comando.
⚠️ Atenção:
· Para o programa funcionar corretamente, é necessário:
· Importar o pacote SpeechRecognition;
· Incluir a função obter_audio(), desenvolvida anteriormente.
✅ Resultado do teste:
Durante o teste realizado:
Diga alguma coisa:
A frase que você disse foi: Olá isto é um teste
· O resultado demonstra que:
· O microfone capturou a fala;
· O sistema reconheceu o áudio;
· A frase foi convertida corretamente em texto.
Entrada (32×32×1)
Conv2D (6 filtros)
Average Pooling
Conv2D (16 filtros)
Average Pooling
Conv2D (120 filtros)
Flatten
Dense (84 neurônios)
Dense (10 neurônios – saída)
image5.png
image6.png
image7.png
image8.png
image9.png
image10.png
image11.png
image12.png
image13.png
image14.png
image15.png
image16.png
image17.png
image18.png
image19.png
image20.png
image21.png
image22.png
image23.png
image24.png
image25.png
image26.png
image27.png
image28.png
image29.png
image30.png
image31.png
image32.png
image33.png
image34.png
image35.png
image36.png
image37.png
image38.png
image39.png
image40.png
image41.png
image1.jpeg
image2.png
image3.png
image4.pngsupervisionada
· Na classificação, a rede associa uma imagem de entrada a uma categoria previamente definida nos dados de treinamento.
· Essas categorias funcionam como rótulos usados para ensinar a rede.
Módulo 2. Arquiteturas de redes convolucionais
ARQUITETURAS DE REDES NEURAIS DE CONVOLUÇÃO
📌 Estrutura Básica da CNN
· A arquitetura básica de uma rede CNN é composta por três tipos principais de camadas:
· Camadas de convolução;
· Camadas de pooling;
· Camadas totalmente conectadas.
· Essas camadas trabalham em sequência para processar imagens e gerar uma predição final.
🔹 Fluxo Geral de Processamento da CNN
· O processamento da CNN ocorre de forma gradual, seguindo uma sequência de etapas.
1. Camada de Convolução + ReLU:
· A imagem passa pela camada de convolução;
· A operação de convolução é aplicada sobre os dados de entrada;
· Em seguida, normalmente é aplicada a função de ativação ReLU sobre os resultados obtidos.
· Função da etapa: Extrair características da imagem processada.
2. Camada de Pooling
· Após a convolução e aplicação da ReLU, é utilizada uma camada de pooling.
· Podem ser aplicadas funções como:
· Max pooling;
· Average pooling.
· Função da etapa: Dar continuidade ao processamento das características extraídas.
· O processo de convolução, ativação e pooling pode se repetir várias vezes.
· Redução do Tamanho da Imagem:
· Conforme a imagem passa pelas camadas da rede, seu tamanho é reduzido.
· Isso ocorre ao longo das etapas de convolução e pooling.
· Enquanto isso, a rede preserva e destaca características importantes para a análise.
3. Camadas Totalmente Conectadas:
· No final da CNN são adicionadas: Uma ou mais camadas totalmente conectadas.
· Nessas camadas, os pesos sinápticos são calculados.
· Ao final das camadas totalmente conectadas são aplicadas funções de ativação ReLU.
4. Camada Final e Predição:
· A última camada da rede é responsável pela produção da predição final.
· Nessa etapa, normalmente é aplicada a função de ativação Softmax.
· Função da Softmax: Produzir a saída final da rede para a predição.
💡 Resumo Geral do Fluxo da CNN
A arquitetura CNN segue, normalmente, a seguinte sequência:
1. Convolução → extração de características;
2. ReLU → aplicação da ativação;
3. Pooling → continuação do processamento;
4. Repetição das etapas de convolução e pooling;
5. Camadas totalmente conectadas → cálculo dos pesos sinápticos;
6. ReLU nas camadas conectadas;
7. Softmax → geração da predição final.
BANCO DE DADOS DE DÍGITOS MANUSCRITOS
📌 Importância da base de dados MNIST
· O avanço das redes CNN foi impulsionado pela disponibilidade de bases de dados confiáveis para testes e comparação de resultados.
· A MNIST é uma das bases mais utilizadas em aplicações de visão computacional e aprendizado de máquina.
📌 Características da MNIST
· É composta por imagens em tons de cinza de números escritos à mão.
· Cada imagem possui:
· 28 × 28 pixels
· Um dígito centralizado de 0 a 9.
· O conjunto contém 70.000 imagens, divididas em:
· 50.000 para treinamento;
· 10.000 para teste;
· 10.000 para validação.
💡 Dica — Por que a MNIST é tão usada?
· Os dados possuem padronização de tamanho, escala e forma de armazenamento.
· Isso facilita o estudo, o treinamento e a comparação de algoritmos de aprendizado de máquina, especialmente aqueles baseados em redes CNN.
VARIAÇÕES DA ARQUITETURA DAS REDES CNN
📌 Evolução das arquiteturas CNN
· As arquiteturas das redes CNN passaram por grande evolução ao longo dos anos.
· Esse avanço ocorreu devido ao desenvolvimento de pesquisas e melhorias contínuas na área.
🏆 Papel das competições
· Competições como a ILSVRC (ImageNet Large Scale Visual Recognition Challenge) contribuíram para essa evolução.
· O objetivo dessas competições é avaliar algoritmos de:
· detecção de objetos;
· classificação de imagens.
· Esses desafios incentivaram a criação e o aperfeiçoamento de novas arquiteturas CNN.
📚 Principais arquiteturas abordadas
· O estudo destaca algumas arquiteturas importantes de redes CNN:
· LeNet-5
· AlexNet
· GoogLeNet
· VGGNet
· ResNet
· Xception
· SENet
· Essas arquiteturas apresentam variações e aplicações diferentes dentro da visão computacional.
🧠 LeNet-5
📌 O que é a LeNet-5?
· A LeNet-5 foi desenvolvida por Yann LeCun em 1998.
· É uma arquitetura de CNN (Rede Neural Convolucional) voltada para classificação de dígitos.
· Foi utilizada para reconhecimento de números escritos à mão em cheques digitalizados.
· Trabalha com imagens em escala de cinza de 32 × 32 pixels.
📌 Arquitetura da LeNet-5
Tabela: Arquitetura da LeNet-5
Número da camada
Dimensões da entrada de dados
Dimensões do kernel
Stride
Quantidade de mapas de características
Tipo de camada
Função de ativação
1
32 × 32
-
-
1
Entrada
-
2
28 × 28
5 × 5
1
6
Convolução
ReLU
3
14 × 14
2 × 2
2
6
Pooling
ReLU
4
10 × 10
5 × 5
1
16
Convolução
ReLU
5
5 × 5
2 × 2
2
16
Pooling
ReLU
6
1 × 1
5 × 5
1
120
Convolução
ReLU
7
84
-
-
-
Totalmente conectada
ReLU
8
10
-
-
-
Totalmente conectada
Softmax
📌 Preparação das imagens da base MNIST:
· Os dados da tabela são referentes às imagens da base MNIST.
· Antes de serem fornecidas à LeNet-5, as imagens passam por dois processos:
· Ajuste do tamanho da imagem:
· As imagens originais do MNIST possuem 28 × 28 pixels.
· A LeNet-5 exige entradas de 32 × 32 pixels.
· Para isso, ocorre um preenchimento com zeros (padding) até atingir 32 × 32 pixels.
· Normalização:
· Os valores dos pixels são convertidos para uma escala entre 0 e 1.
· Como as imagens estão em tons de cinza (0–255), basta:
· Após a normalização, os dados são enviados para a rede.
⚠️ Atenção:
· Depois da camada de entrada, a LeNet-5 não utiliza preenchimento (padding).
· Por isso, o tamanho das imagens diminui gradualmente conforme passam pelas camadas da rede.
📌 Função das camadas da LeNet-5:
🔹 Camada 1 – Entrada
· Recebe a imagem ajustada para 32 × 32 pixels.
🔹 Camada 2 – Convolução
· Possui 6 kernels de convolução.
· Cada kernel possui dimensão 5 × 5.
· Produz 6 mapas de características com dimensão 28 × 28.
🔹 Camada 3 – Pooling
· Realiza subamostragem dos dados.
· Utiliza o método Average Pooling.
· Reduz as dimensões da entrada.
🔹 Camada 4 – Convolução
· Contém 16 kernels de convolução.
· Cada kernel possui dimensão 5 × 5.
· Extrai características mais complexas da imagem.
🔹 Camada 5 – Pooling
· Semelhante à camada 3.
· Utiliza kernels 2 × 2.
· Produz 16 mapas de características de 5 × 5.
🔹 Camada 6 – Convolução
· Possui 120 kernels de convolução.
· Cada kernel possui dimensão 5 × 5.
· Continua o processo de extração de características.
🔹 Camada 7 – Totalmente conectada
· Camada Fully Connected (FC).
· Integra as características extraídas anteriormente.
🔹 Camada 8 – Saída
· Também é uma camada totalmente conectada.
· Responsável pela classificação final dos dígitos.
📌 Observações importantes da LeNet-5:
· Funções de ativação:
· Das camadas 2 a 7, é aplicada a função de ativação ReLU.
· Na camada de saída (camada 8), utiliza-se a função Softmax.
🧠 AlexNet
📌 Desenvolvimento e destaque:
· A AlexNet foi desenvolvida por Alex Krizhevsky, Ilya Sutskever e Geoffrey Hinton.
· Em 2012, venceu o desafio ImageNet Large Scale Visual Recognition Challenge.
· Obteve taxa de erro de 17%, superando o segundo colocado, que alcançou 26%.
⚙️ Principais características da AlexNet:
· Possui arquitetura semelhante à LeNet-5, porém é mais profunda, com maior quantidade de camadas ocultas.
· Empilha camadas convolucionais diretamente umas sobre as outras.
· Sua estrutura inclui:
· Camadas de convolução com kernels 11×11, 5×5 e 3×3;
· Max Pooling (pooling máximo);
· Dropout;
· Aumento de dados (data augmentation);
· Função de ativação ReLU após camadas convolucionais e totalmente conectadas;
· Método de otimização SGD (Gradiente de Descida Estocástico) com momentum.
· A camada final utiliza Softmax para realizar a classificação.📌 Arquitetura da AlexNet
· A AlexNet possui:
· Camada de entrada RGB;
· Diversas camadas de convolução e pooling;
· Três camadas totalmente conectadas ao final da rede.
· Uma arquitetura semelhante chamada ZF Net, criada por Matthew Zeiler e Rob Fergus, venceu o desafio ImageNet Large Scale Visual Recognition Challenge.
· A ZF Net é baseada na AlexNet, com ajustes em hiperparâmetros como:
· quantidade de mapas de características;
· dimensões dos kernels.
Tabela: Arquitetura da AlexNet.
Número da camada
Dimensões do kernel
Stride
Quantidade de mapas de características
Dimensões das entradas
Padding
Tipo de camada
Função de ativação
1
-
-
3 (RGB)
227 × 227
-
Entrada
-
2
11 × 11
4
96
55 × 55
Válido
Convolução
ReLU
3
3 × 3
2
96
27 × 27
Válido
Max Pooling
-
4
5 × 5
1
256
27 × 27
Mesmo
Convolução
ReLU
5
3 × 3
2
256
13 × 13
Válido
Max Pooling
-
6
3 × 3
1
384
13 × 13
Mesmo
Convolução
ReLU
7
3 × 3
1
384
13 × 13
Mesmo
Convolução
ReLU
8
3 × 3
1
256
13 × 13
Mesmo
Convolução
ReLU
9
-
-
-
4.096
-
Totalmente conectada
ReLU
10
-
-
-
4.096
-
Totalmente conectada
ReLU
11
-
-
-
1.000
-
Totalmente conectada
Softmax
🧠 GoogLeNet
🏆 Desempenho e desenvolvimento:
· A GoogLeNet, também chamada de Inception V1, venceu a competição ILSVRC 2014.
· Foi desenvolvida por Christian Szegedy.
· Obteve taxa de erro inferior a 6,67%, alcançando desempenho próximo ao nível humano.
⚙️ Principais características da arquitetura:
· A GoogLeNet é mais profunda do que as CNN anteriores.
· Seu diferencial é o uso de módulos de iniciação (Inception Modules).
· Esses módulos permitem utilizar os parâmetros de forma mais eficiente por meio de sub-redes internas.
🔍 Funcionamento dos módulos Inception:
· O segundo conjunto de camadas convolucionais utiliza kernels de diferentes tamanhos:
· 1 × 1
· 3 × 3
· 5 × 5
· O objetivo é capturar padrões em diferentes escalas da imagem.
· Todas as camadas convolucionais utilizam:
· função de ativação ReLU;
· padding “mesmo” (same);
· stride igual a 1.
· Isso garante que as dimensões das saídas permaneçam iguais às das entradas.
⚠️ Atenção: A notação “3 × 3” indica o tamanho do kernel (filtro) utilizado na camada convolucional.
🧠 VGGNet
🏆 Desenvolvimento e desempenho:
· A VGGNet foi proposta por Karen Simonyan e Andrew Zisserman.
· Conquistou o segundo lugar no ILSVRC 2014.
· Alcançou 92,7% de precisão na base ImageNet.
⚙️ Características da arquitetura:
· A VGGNet possui uma arquitetura considerada simples e organizada.
· Seu padrão estrutural utiliza:
· 2 ou 3 camadas convolucionais em sequência;
· seguidas por uma camada de pooling.
📌 Estrutura da rede:
· A arquitetura é composta por:
· 16 camadas convolucionais;
· 2 camadas totalmente conectadas (ocultas);
· 1 camada de saída.
· Utiliza grande quantidade de filtros, porém todos com dimensão 3 × 3.
🧠 ResNet (Rede Residual)
🏆 Desempenho e evolução:
· A ResNet (Rede Residual) foi a vencedora do ILSVRC 2015.
· Desenvolvida por pesquisadores da Microsoft, alcançou taxa de erro inferior a 3,6%.
· Sua arquitetura utilizou uma CNN com 152 camadas, representando um grande avanço nas redes convolucionais.
📌 Tendência das CNN modernas:
· O sucesso da ResNet reforçou uma tendência importante:
· menos parâmetros;
· maior profundidade da rede (mais camadas).
· Isso mostrou que redes mais profundas podem alcançar desempenho superior.
⚙️ Principal característica: conexões de salto:
· O diferencial da ResNet são as conexões de salto (skip connections ou conexões de atalho).
· Essas conexões formam os chamados blocos residuais.
· Funcionam adicionando o sinal de entrada de uma camada diretamente à saída de uma camada posterior.
⚠️ Função das conexões de salto:
· As conexões de salto ajudam a evitar perda de desempenho causada por determinadas camadas.
· Elas contribuem para manter a eficiência e facilitar o treinamento de redes muito profundas.
🧠 Xception
📌 Origem e desenvolvimento:
· O Xception é uma evolução da arquitetura GoogLeNet.
· Foi desenvolvido por François Chollet.
· Seu objetivo é aprimorar a extração de características utilizando uma arquitetura mais eficiente.
⚙️ Principais características:
· Explora o conceito de convolução separável em profundidade (depthwise separable convolution).
· Possui 36 camadas convolucionais responsáveis pela extração de características.
· Essas camadas são organizadas em 14 módulos.
🔗 Uso de conexões residuais:
· A arquitetura utiliza conexões residuais lineares ao redor dos módulos.
· Apenas o primeiro e o último módulos não possuem essas conexões.
· Em resumo, o Xception é baseado no empilhamento linear de camadas de convolução separáveis em profundidade combinadas com conexões residuais.
🧠 SENet (Squeeze-and-Excitation Network)
🏆 Desempenho e origem:
· A SENet (Squeeze-and-Excitation Network) venceu o desafio ILSVRC 2017.
· Alcançou uma taxa de erro de 2,25%.
· Seu nome significa “rede de compressão e excitação”.
⚙️ Principais características:
· A SENet é uma extensão de arquiteturas existentes, como a ResNet.
· Sua principal ideia é adicionar parâmetros a cada canal de um bloco convolucional.
· Isso permite que a rede ajuste e pondere adaptativamente a importância de cada mapa de características.
💡 Curiosidade:
· Os blocos convolucionais da SENet são chamados de “blocos SE”:
· S = Squeeze (Compressão)
· E = Excitation (Excitação).
MODELOS PRÉ-TREINADOS E TRANSFERÊNCIA DE APRENDIZADO
📌 Evolução das arquiteturas CNN
· As arquiteturas de redes convolucionais continuam evoluindo constantemente.
· Competições como o ILSVRC ajudam a acompanhar e impulsionar esse avanço.
🔄 Transferência de aprendizado
· É possível utilizar redes pré-treinadas em diferentes arquiteturas CNN.
· Essa técnica é chamada de transferência de aprendizado (transfer learning).
· Ela aproveita conhecimentos já aprendidos pela rede em treinamentos anteriores.
⚙️ Vantagens práticas
· O uso de modelos pré-treinados não elimina o treinamento, mas facilita o início do desenvolvimento.
· A técnica é especialmente útil em metodologias ágeis, como o RAD (Rapid Application Development).
· Permite reduzir tempo e esforço em projetos com ciclos curtos de entrega.
Módulo 3. Classificação de imagens com rede convolucional
REDES CNN NA PRÁTICA
📌 Desenvolvimento de projetos com CNN
· As redes CNN são muito utilizadas em projetos de visão computacional.
· Para implementá-las, existem ferramentas computacionais que facilitam o desenvolvimento.
· O exemplo apresentado utiliza a arquitetura LeNet-5.
💻 Python e TensorFlow
· O projeto é desenvolvido com:
· Python → linguagem amplamente usada em Ciência de Dados e Aprendizado de Máquina;
· TensorFlow → framework voltado para criação de aplicações de aprendizado de máquina.
· O Python se destaca por:
· grande quantidade de documentação;
· comunidades ativas;
· plataformas on-line como Google Colab, que evitam configurações locais complexas.
· O TensorFlow fornece:
· recursos;
· algoritmos;
· funções que simplificam o desenvolvimento do projeto.
⚠️ Atenção
· O TensorFlow não toma decisões do projeto automaticamente.
· Para criar uma rede CNN, é necessário conhecer:
· camadas da rede;
· hiperparâmetros;
· fundamentos teóricos estudados anteriormente.
IMPLEMENTAÇÃO DA ARQUITETURA LENET-5
📌 Visão geral do projeto
A implementação da arquitetura LeNet-5 é aplicada ao reconhecimento de imagens da base MNIST, uma das bases mais utilizadas em testes de aprendizado de máquina.
O projeto foi organizado em blocos no Google Colab, facilitando a compreensão e separando cada etapa do processo.
Etapas do projeto
· Carregamento dos dados
· Visualização dos dados
· Separação dos conjuntos
· Padding (preenchimento)
· Normalização
· Implementação da arquitetura LeNet-5
· Visualização da arquitetura
· Treinamento
· Avaliação
· Predição
· Recuperação do modelo
· Visualização do histórico de treinamento
📥 1. Carregamentodos Dados
Objetivo:
Importar a base MNIST usando o TensorFlow.
A base já vem separada em:
· Treinamento → usado para aprender padrões
· Teste → usado para verificar o desempenho final
Resumo didático:
A base MNIST contém imagens de dígitos manuscritos.
Quando os dados são carregados, são criados dois pares:
Dados de treinamento:
· x_treino: Contém as imagens
· y_treino: Contém os rótulos (número representado)
Dados de teste:
· x_teste: Imagens para teste
· y_teste: Rótulos para teste
Importante:
· Variáveis iniciadas com x: armazenam imagens
· Variáveis iniciadas com y: armazenam categorias/rótulos
import tensorflow as tf # Importa a biblioteca TensorFlow
(x_treino, y_treino), (x_teste, y_teste) = tf.keras.datasets.mnist.load_data()
# Carrega a base MNIST já separada em treino e teste
🖼️ 2. Visualização dos Dados
Objetivo: Verificar se os dados foram carregados corretamente, exibindo algumas imagens da base.
Resumo didático:
Após carregar os dados, é importante visualizar algumas imagens para confirmar que:
· a importação funcionou;
· as imagens estão corretas;
· os rótulos correspondem aos dígitos.
Para isso é utilizada a biblioteca matplotlib.
O programa mostra:
· os 5 primeiros registros;
· a imagem do dígito;
· o rótulo correspondente.
import matplotlib.pyplot as plt # Importa biblioteca de gráficos
for i in range(5): # Repete 5 vezes para mostrar 5 imagens
plt.subplot(1, 5, i+1) # Cria uma grade com 1 linha e 5 colunas
plt.subplot(1, 5, i+1) # Seleciona a posição atual da imagem
plt.tight_layout() # Ajusta o espaçamento entre imagens
plt.imshow(x_treino[i].reshape(28, 28), cmap='gray') # Exibe a imagem em escala de cinza
plt.title('Rótulo:{}'.format(y_treino[i])) # Mostra o rótulo da imagem
plt.xticks([]) # Remove marcações do eixo X
plt.yticks([]) # Remove marcações do eixo Y
plt.show() # Exibe todas as imagens
O que o código faz?
O laço:
for i in range(5)
mostra os cinco primeiros exemplos do conjunto de treinamento.
Cada imagem aparece com:
· imagem do dígito;
· título com o rótulo.
Resultado esperado
O programa exibe:
· 5 imagens do MNIST
· cada uma com seu respectivo número (0–9).
Isso confirma que os dados foram carregados corretamente.
📂 3. Separação dos Conjuntos de Dados
Objetivo:
Dividir os dados em:
· treinamento
· validação
· teste
Resumo didático:
O modelo utiliza três subconjuntos.
1. Dados de treinamento
Usados para:
· aprender padrões;
· extrair características;
· generalizar informações.
2. Dados de validação
Usados durante o treinamento para:
· ajustar o modelo;
· acompanhar desempenho;
· reduzir erros.
3. Dados de teste
Usados apenas no final para:
· medir qualidade;
· avaliar capacidade de predição.
Como a divisão foi feita?
A base MNIST possui:
· 60.000 imagens de treino
· 10.000 imagens de teste
Na implementação:
· 55.000 → treinamento
· 5.000 → validação
· 10.000 → teste
import numpy as np # Importa biblioteca NumPy
quantidade_dados_treino = 55000 # Define quantidade usada para treinamento
x_validacao = x_treino[quantidade_dados_treino:, ..., np.newaxis] # Separa imagens de validação e adiciona canal da imagem
y_validacao = y_treino[quantidade_dados_treino:] # Separa rótulos da validação
x_treino = x_treino[:quantidade_dados_treino, ..., np.newaxis] # Mantém imagens de treinamento e adiciona canal
y_treino = y_treino[:quantidade_dados_treino] # Mantém rótulos de treinamento
x_teste = x_teste[..., np.newaxis] # Adiciona canal às imagens de teste
print('Formato da Imagem:{}'.format(x_treino[0].shape), end='\n') # Mostra formato da imagem
print('Conjunto de Treinamento:{} registros'.format(len(x_treino))) # Mostra quantidade de treino
print('Conjunto de Validação:{} registros'.format(len(x_validacao))) # Mostra quantidade de validação
print('Conjunto de Testes:{} registros'.format(len(x_teste))) # Mostra quantidade de testes
Atenção:
O trecho: np.newaxis adiciona um canal da imagem.
· Antes: (28,28)
· Depois: (28,28,1)
· Esse 1 representa: uma imagem com 1 canal de cor (escala de cinza).
Resultado obtido:
Formato da imagem: (28,28,1)
Treinamento: 55000
Validação: 5000
Teste: 10000
🧩 4. Padding (Preenchimento)
Objetivo: Ajustar o tamanho das imagens para atender às exigências da LeNet-5.
Resumo didático:
· A LeNet-5 recebe imagens: 32 × 32
· Mas o MNIST possui: 28 × 28
· Por isso é necessário adicionar bordas com zeros.
· Esse processo é chamado de: Padding (preenchimento).
O que o padding faz?
· Transforma 28×28 em 32×32
· adicionando:
· 2 pixels de zeros em cima
· 2 embaixo
· 2 à esquerda
· 2 à direita
# Adiciona padding nas imagens de treino
x_treino = np.pad(
x_treino,
((0,0),(2,2),(2,2),(0,0)),
'constant'
)
# Padding na validação
x_validacao = np.pad(
x_validacao,
((0,0),(2,2),(2,2),(0,0)),
'constant'
)
# Padding nos testes
x_teste = np.pad(
x_teste,
((0,0),(2,2),(2,2),(0,0)),
'constant'
)
print('Informações sobre as mudanças dos dados de entrada:\n') # Exibe cabeçalho
print('Conjunto de treinamento: {}'.format(x_treino.shape)) # Mostra novo formato treino
print('Conjunto de validação: {}'.format(x_validacao.shape)) # Mostra novo formato validação
print('Conjunto de testes: {}'.format(x_teste.shape)) # Mostra novo formato testes
Resultado:
Após o preenchimento:
Treinamento: (55000,32,32,1)
Validação: (5000,32,32,1)
Teste: (10000,32,32,1)
Atenção:
O padding:
· não altera o conteúdo da imagem;
· apenas adiciona bordas de zeros.
Isso garante compatibilidade com a LeNet-5.
📊 5. Normalização dos Dados
Objetivo: Padronizar os valores dos pixels.
Resumo didático:
· As imagens do MNIST possuem pixels em: 0 até 255, onde:
· 0 → preto
· 255 → branco
· Para melhorar o treinamento, transformamos os valores para: 0 até 1
· Isso é chamado de: normalização.
Por que normalizar?
A normalização ajuda a:
· evitar erros numéricos;
· melhorar estabilidade;
· acelerar o aprendizado da rede.
Como é feita?
Dividindo cada pixel por: 255
normalizar_dados = lambda t: t/255 # Cria função lambda que divide os valores por 255
x_treino = normalizar_dados(x_treino) # Normaliza treino
x_validacao = normalizar_dados(x_validacao) # Normaliza validação
x_teste = normalizar_dados(x_teste) # Normaliza teste
O que é a função lambda?
· Uma lambda é uma função curta criada em uma única linha.
· Neste caso: lambda t: t/255, significa:
· receba um valor e devolva ele dividido por 255.
🏗️ 6. Arquitetura LeNet-5
Objetivo: Implementar a arquitetura da rede neural convolucional LeNet-5.
Resumo didático: Até o momento foram feitos apenas ajustes nos dados.
Agora o objetivo é:
· criar a CNN;
· definir suas camadas;
· especificar como os dados passam pela rede.
A LeNet-5 possui 8 camadas principais:
Tipo
Quantidade
Entrada
1
Convolução (CONV)
3
Pooling
2
Totalmente conectadas
2
Estrutura da LeNet-5:
· Fluxo da arquitetura:
Função utilizada:
· O modelo foi criado dentro da função: arquitetura_LeNet_5(funcao_ativacao)
Objetivo da função:
· Permitir escolher a função de ativação das camadas convolucionais e densas.
· Exemplo: 'relu'
Bibliotecas utilizadas:
· Sequential: Usado para criar um modelo sequencial, ou seja, uma camada após outra.
· Conv2D: Usado para camadas de convolução.
· AveragePooling2D: Usado para camadas de pooling (aglomeração).
· Flatten: Usado para transformar mapas 2D em vetor.
· Dense: Usado para camadas totalmente conectadas.
Objetivo do código: Montar toda a arquitetura LeNet-5 camada por camada.
from tensorflow.keras import Sequential # Importa modelo sequencial
from tensorflow.keras.layers import Conv2D, AveragePooling2D, Flatten, Dense # Importa tipos de camadas
# Cria função da arquitetura
def arquitetura_LeNet_5(funcao_ativacao):
modelo = Sequential() # Cria modelo vazio
# Primeira convolução com 6 filtros 5x5
modelo.add(
Conv2D(
6,
kernel_size=(5,5),
strides=(1,1),
activation=funcao_ativacao,input_shape=(32,32,1),
padding='valid'
)
)
# Primeiro pooling
modelo.add(
AveragePooling2D(
pool_size=(2,2),
strides=(2,2),
padding='valid'
)
)
# Segunda convolução com 16 filtros
modelo.add(
Conv2D(
16,
kernel_size=(5,5),
strides=(1,1),
activation=funcao_ativacao,
padding='valid'
)
)
# Segundo pooling
modelo.add(
AveragePooling2D(
pool_size=(2,2),
strides=(2,2),
padding='valid'
)
)
# Terceira convolução com 120 filtros
modelo.add(
Conv2D(
120,
kernel_size=(1,1),
strides=(1,1),
activation=funcao_ativacao,
padding='valid'
)
)
modelo.add(Flatten()) # Vetoriza os dados
modelo.add(Dense(84, activation=funcao_ativacao)) # Camada totalmente conectada
modelo.add(Dense(10, activation='softmax')) # Camada de saída com 10 classes
return modelo # Retorna modelo pronto
🔍 Explicação simples das camadas:
1. Conv2D
· Realiza extração de características.
· Exemplos:
· bordas;
· curvas;
· formas.
2. Average Pooling
· Reduz o tamanho da imagem.
· Benefícios:
· menos processamento;
· redução de ruído;
· preservação das características.
3. Flatten
· Transforma:
· Antes: mapas 2D
· Depois: vetor 1D
· Isso é necessário para conectar com as camadas densas.
4. Dense
· Camada totalmente conectada.
· Responsável por:
· combinar características;
· realizar classificação.
Atenção:
· A última camada possui: Dense(10)
· Porque o MNIST possui:
· 10 categorias:
·
· 0
· 1
· 2
· 3
· 4
· 5
· 6
· 7
· 8
· 9
📐 7. Fórmula das Dimensões das Camadas
Objetivo: Calcular o tamanho da saída de cada camada.
Resumo didático:
· Quando uma camada convolucional ou pooling é aplicada, o tamanho da imagem muda.
· O cálculo é feito pela fórmula: , onde:
Símbolo
Significado
O
saída
I
entrada
K
kernel
P
padding
S
stride
Camada 1 — Primeira Convolução
Dados:
· Entrada = 32 Aplicação:
Resultado: 32×32 → 28×28
· Kernel = 5
· Padding = 0
· Stride = 1
Camada 2 — Primeiro Pooling
Dados:
· Entrada = 28 Aplicação:
Resultado: 28×28 → 14×14
· Kernel = 2
· Padding = 0
· Stride = 2
Camada 3 — Segunda Convolução
Dados:
· Entrada = 14 Aplicação:
Resultado: 14×14 → 10×10
· Kernel = 5
· Padding = 0
· Stride = 1
Camada 4 — Segundo Pooling
Dados:
· Entrada = 10 Aplicação:
Resultado: 10×10 → 5×5
· Kernel = 2
· Padding = 0
· Stride = 2
Resultado das dimensões
· Fluxo final: 32×32 → 28×28 → 14×14 → 10×10 → 5×5
Explicação do Flatten
· Após o segundo pooling:
· Temos: 5×5×16
· Quantidade de neurônios:
· Esses 400 nós são conectados a 84 neurônios da primeira camada densa.
👀 8. Visualização da Arquitetura
Objetivo: Exibir o resumo do modelo criado.
Resumo didático:
· Depois de montar a arquitetura:
· chamamos a função;
· criamos o modelo;
· pedimos o resumo.
· O método summary() mostra:
· camadas;
· dimensões;
· quantidade de parâmetros.
Objetivo do código: Criar e visualizar a LeNet-5.
# Cria modelo usando ReLU como parâmetro da função que vai montar a arquitetura do modelo modelo = arquitetura_LeNet_5('relu')
modelo.summary() # Mostra resumo da arquitetura
Atenção:
· Foi usada ‘relu’ como função de ativação.
· Ela ajuda a:
· acelerar aprendizado;
· reduzir saturação;
· melhorar desempenho.
Resultado da execução do código:
🚀 9. Treinamento do Modelo
Objetivo: Treinar a rede neural com os dados preparados.
Resumo didático:
· Treinamento ocorre em duas etapas:
1. Compile:
· Configura:
· perda;
· otimizador;
· métrica.
2. Fit:
· Executa:
· aprendizado da rede.
Objetivo: Compilar, treinar e salvar o modelo.
from tensorflow.keras.losses import CategoricalCrossentropy # Importa funções de perda
# Configura treinamento
modelo.compile(
loss='sparse_categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy']
)
quantidade_de_epocas = 10 # Define número de épocas
# Treina o modelo
historico_treinamento = modelo.fit(
x_treino,
y_treino,
validation_data=(x_validacao, y_validacao),
batch_size=64,
epochs=quantidade_de_epocas
)
modelo.save('modelo_lenet5') # Salva modelo treinado
🔍 Explicando os parâmetros:
· loss: Função de erro.
· No código: sparse_categorical_crossentropy
· Usada para classificação multiclasse.
· Optimizer: Método de atualização dos pesos.
· No caso: sgd
· (Stochastic Gradient Descent)
· Responsável por minimizar erro.
· metrics: Métrica de avaliação.
· Usada: accuracy (acurácia)
· batch_size = 64: Treinamento em grupos de 64 imagens.
· epochs = 10: O modelo percorre 10 vezes todo o conjunto de treino.
Resultado do treinamento
A saída mostra:
· época;
· perda (loss);
· acurácia.
Exemplo:
Epoch 1/10
loss 1.0769
accuracy 0.6863
↓
Epoch 2/10
loss 0.3118
accuracy 0.9067
↓
Epoch 3/10
loss 0.2305
accuracy 0.9297
↓
Epoch 4/10
loss 0.1816
accuracy 0.9464
↓
Epoch 5/10
loss 0.1483
accuracy 0.9547
↓
Epoch 6/10
loss 0.1255
accuracy 0.9613
↓
Epoch 7/10
loss 0.1102
accuracy 0.9661
↓
Epoch 8/10
loss 0.0979
accuracy 0.9690
↓
Epoch 9/10
loss 0.0892
accuracy 0.9729
↓
Epoch 10/10
loss 0.0823
accuracy 0.9746
O que isso significa?
· Durante o treinamento loss diminuiu → Indica erro menor.
· Accuracy aumentou → Indica maior número de acertos.
Atenção:
Salvar o modelo é importante porque permite:
· reutilizar treinamento;
· evitar novo treinamento futuro;
· carregar o modelo depois.
📊 10. Avaliação do Modelo
Objetivo: Testar o desempenho do modelo usando o conjunto de dados de teste.
Resumo didático:
· Após o treinamento, é necessário verificar:
· se o modelo aprendeu corretamente;
· qual é seu nível de erro;
· quantas previsões ele acerta.
· Para isso usamos: evaluate()
· Essa função calcula:
· loss (erro)
· accuracy (acurácia)
Objetivo do código: Avaliar o modelo usando os dados de teste.
# Avalia modelo com dados de teste
loss, accuracy = modelo.evaluate(
x_teste,
y_teste,
batch_size=64
)
print('loss:{}'.format(loss)) # Exibe erro do modelo
print('accuracy:{}'.format(accuracy)) # Exibe acurácia
Explicação do código:
· evaluate()
· Recebe:
· imagens de teste;
· rótulos verdadeiros.
· E devolve:
· erro;
· acurácia.
· batch_size=64
· Os testes são feitos em grupos de 64 imagens.
Resultado obtido:
157/157
loss:0.0845
accuracy:0.9742
Interpretação dos resultados:
· Loss: 0.0845
· Representa erro do modelo.
· Quanto menor, melhor.
· Accuracy: 0.9742
· Representa porcentagem de acertos.
· Convertendo 97,42% de acerto.
Atenção:
· Um modelo de boa qualidade geralmente apresenta:
· Loss próximo de 0
· Accuracy próxima de 1 ou 100%
🔮 11. Predição de Dados
Objetivo: Usar o modelo treinado para classificar uma imagem específica.
Resumo didático:
· Agora o modelo é colocado em prática.
· A ideia é:
· escolher uma imagem;
· pedir ao modelo uma previsão;
· observar o resultado.
· A função usada é: predict()
Objetivo do código: Realizar a classificação de uma imagem do conjunto de teste.
indice_imagem = 1976 # Escolhe imagem do teste
# Faz previsão da imagem
predicao = modelo.predict(
x_teste[indice_imagem].reshape(1,32,32,1)
)
# Mostra vetor de probabilidades
print(
'Predição: {}'.format(predicao[0]),
end='\n\n'
)
# Mostra classe prevista
print(
'Nosso modelo CNN prevê que o dígito na imagem é:',
predicao.argmax()
)
# Exibe imagem usada
plt.imshow(
x_teste[indice_imagem].reshape(32,32),
cmap='Greys'
)
Explicação do código
· indice_imagem
· Seleciona qual imagem será usada.
· Neste caso: 1976
· reshape()
· A imagem precisa ficar no formato: (1,32,32,1)
· Porque o modelo espera:
· lote de imagens;
· largura;
· altura;
· canal.
· predict()
· Retorna probabilidades para cada categoria.
· Ou seja, quanto o modelo acredita que a imagem pertence a cada número.
· argmax()
· Escolhe a posição do maior valor.
· Essa posição representa aprevisão final.
Resultado obtido:
· Vetor de previsão:
Predição: [3.539e−05, 2.956e−04, 8.428e−06, 9.937e−01, 5.128e−10, 5.485e−03, 5.300e−09, 3.820e−05, 1.162e−06, 4.009e−04]
Como interpretar?
Cada posição corresponde a:
Posição
Dígito
0
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
· Maior valor: 0.9937 esta na posição 3
· Portanto, o modelo prevê que o dígito seja o número 3.
Atenção:
· O vetor retornado pela rede:
· não contém diretamente o número;
· contém graus de confiança.
· A previsão final é a categoria com maior probabilidade.
💾 12. Recuperação do Modelo
Objetivo: Carregar um modelo salvo anteriormente.
Resumo didático:
· Depois do treinamento, o modelo foi salvo.
· Agora podemos:
· recuperar;
· reutilizar;
· continuar utilizando sem novo treinamento.
· Isso economiza:
· tempo;
· processamento.
Objetivo do código: Carregar o arquivo salvo do modelo.
# Carrega modelo salvo
modelo_recuperado = tf.keras.models.load_model('modelo_lenet5')
Explicação:
· A função: load_model() recupera:
· pesos;
· arquitetura;
· parâmetros.
· Tudo exatamente como estava salvo.
Atenção:
· Sem salvar o modelo, seria necessário treinar novamente.
· O que pode levar:
· minutos;
· horas;
· ou até dias em projetos maiores.
📈 13. Impressão do Treinamento
Objetivo: Visualizar o comportamento do erro durante o treinamento.
Resumo didático:
· Durante o treinamento, foi criada a variável: historico_treinamento
· Ela armazenou:
· erro do treino;
· erro da validação;
· métricas.
· Agora usamos essas informações para construir um gráfico.
Objetivo do código: Plotar a evolução do erro ao longo das épocas.
plt.title('Cálculo do Erro ao longo do treinamento') # Define título
plt.ylabel('Erro') # Nome eixo Y
plt.xlabel('Época') # Nome eixo X
plt.plot(historico_treinamento.history['loss']) # Curva erro treino
plt.plot(historico_treinamento.history['val_loss']) # Curva erro validação
plt.legend(['loss (treinamento)','val_loss (validação)'], loc='upper right') # Mostra legenda
plt.show() # Exibe gráfico
Explicação do gráfico:
O gráfico mostra duas curvas.
· loss (treinamento):
· Representa erro nos dados usados para aprender.
· Trecho: history['loss']
· val_loss (validação):
· Representa erro nos dados de validação.
· Trecho: history['val_loss']
O que observar no gráfico?
· Um treinamento saudável geralmente apresenta:
· loss diminuindo
· Indica aprendizado da rede.
· val_loss próxima da loss
· Indica boa generalização.
Atenção:
· Se:
· loss ↓ e val_loss ↑
· Pode indicar overfitting.
· Ou seja:
· modelo decorando treino;
· piorando em dados novos.
📌 Resumo Final da Implementação LeNet-5
· O projeto completo realizou:
· Preparação dos dados
· Carregamento MNIST
· Visualização
· Separação treino/validação/teste
· Padding 32×32
· Normalização
· Construção da CNN
· Implementação LeNet-5
· Definição das camadas
· Cálculo das dimensões
· Treinamento e uso
· Compilação
· Treinamento
· Salvamento
· Avaliação
· Predição
· Recuperação
· Visualização do histórico
🎯 Resultado Final
A implementação da LeNet-5 conseguiu:
· reconhecer dígitos do MNIST;
· atingir aproximadamente: 97,4% de acurácia
mostrando que a arquitetura possui excelente desempenho para tarefas de classificação de imagens simples.
TEMA 3. IA APLICADA À VISÃO COMPUTACIONAL
📌 Integração entre IA e visão computacional
· A combinação de Inteligência Artificial (IA) com visão computacional tem potencial para transformar a forma como empresas analisam dados visuais.
· Essa integração permite interpretar imagens e vídeos de maneira avançada.
🖼️ Extração e análise de informações visuais
· Metodologias avançadas possibilitam:
· representação precisa de objetos e cenas;
· extração de informações relevantes a partir de imagens e vídeos;
· uso de arquiteturas sofisticadas para análise visual.
💻 Papel do Python e oportunidades
· A linguagem Python oferece suporte importante para o desenvolvimento dessas aplicações.
· Além de gerar insights estratégicos para empresas, essa área cria diversas oportunidades profissionais em diferentes setores.
Módulo 1. Metodologia da inteligência artificial
FUNDAMENTOS DA INTELIGÊNCIA ARTIFICIAL
📜 História da Inteligência Artificial
· O termo Inteligência Artificial (IA) foi criado em 1956, durante uma conferência no Dartmouth College, nos Estados Unidos.
· O objetivo inicial era desenvolver sistemas capazes de pensar e agir como seres humanos.
· Desde sua criação, a IA passou por períodos de avanços e dificuldades em seu desenvolvimento.
· Atualmente, a IA tornou-se parte importante do cotidiano e está presente em diversas áreas, incluindo a visão computacional.
🤖 Tipos de Aprendizado de Máquina (AM)
· O Aprendizado de Máquina (AM) é um campo importante dentro da IA.
· Existem diferentes tipos de AM, entre eles:
· Aprendizado supervisionado
· Aprendizado não supervisionado
· Aprendizado por reforço
📌 Exemplo de aprendizado supervisionado
· Exemplo: Previsão do preço de casas com base em suas características.
· No aprendizado supervisionado, o modelo recebe um conjunto de dados rotulado, contendo:
· Características do imóvel:
· Tamanho
· Número de quartos
· Localização
· Resultado esperado:
· Preço da casa
📊 Exemplo de dados de treinamento
Tamanho (m²)
Quartos
Localização
Preço esperado (milhares de reais)
150
3
Urbana
250
200
4
Suburbana
300
120
2
Rural
180
💡 Como o modelo aprende:
· O modelo analisa os dados já conhecidos e aprende a relação entre:
· Características da casa
· Preço correspondente
· Após o treinamento, ele consegue prever o preço de novas casas com base em suas características.
🏢 Aplicações Empresariais da IA
· Empresas utilizam IA para:
· Melhorar a eficiência operacional
· Aumentar a produtividade
· Estimular a inovação
📍 Setores de aplicação da IA:
· Varejo
· Saúde
· Manufatura
· Segurança
🛍️ Exemplo no varejo:
Os sistemas de IA e visão computacional são utilizados para:
· Análise de estoque
· Reconhecimento facial: Personalização da experiência do cliente
· Detecção de fraudes
✅ Benefícios dessas aplicações:
· Melhoram os processos internos das empresas.
· Auxiliam na oferta de melhores produtos e serviços aos clientes.
⚠️ Conclusão
· O estudo da IA envolve compreender:
· Sua história
· Os tipos de aprendizado de máquina
· Suas aplicações empresariais
· Esses aspectos ajudam a entender o impacto e o potencial da IA na sociedade, nos negócios e em áreas como a visão computacional.
INTRODUÇÃO À VISÃO COMPUTACIONAL
🧠 Conceitos Básicos de Visão Computacional
· A visão computacional é uma área da inteligência artificial focada na interpretação e análise de imagens digitais.
· Seu objetivo é permitir que os computadores:
· Entendam
· Processem
· Interpretem conteúdos visuais do mundo real de forma semelhante ao cérebro humano.
· O avanço do hardware e dos algoritmos tornou a visão computacional uma ferramenta poderosa, com aplicações em diversos setores.
⚙️ Processamento de Imagens e Aprendizado de Máquina
· A visão computacional é baseada em dois princípios principais:
🖼️ Processamento de Imagem:
· Envolve técnicas para manipular e analisar imagens digitais.
· Principais técnicas citadas:
· Filtragem
· Segmentação
· Detecção de bordas
· Reconhecimento de padrões
🤖 Aprendizado de Máquina:
· Fornece os métodos e algoritmos que ensinam os computadores a:
· Reconhecer padrões
· Tomar decisões com base em dados visuais.
🏭 Aplicações Práticas em Diversos Setores
🚗 Indústria Automotiva
· A visão computacional é utilizada em:
· Sistemas avançados de assistência ao motorista
· Veículos autônomos
· Essas tecnologias permitem que os carros reconheçam:
· Sinais de trânsito
· Pedestres
· Obstáculos na estrada
🏥 Setor de Saúde
· A visão computacional auxilia em:
· Diagnósticos médicos
· Análise de imagens de exames
· Exemplos de exames citados:
· Ressonâncias magnéticas
· Tomografias computadorizadas
· Seu uso ajuda médicos na:
· Identificação de anomalias
· Detecçãode doenças
⚠️ Desafios da Visão Computacional
Apesar dos avanços, ainda existem desafios importantes:
· Interpretação de imagens em condições variáveis, como:
· Mudanças de iluminação
· Oclusões
· Distorções
· Privacidade e segurança dos dados visuais
· Consideradas preocupações crescentes.
🔮 Futuro da Visão Computacional
· O futuro da visão computacional é considerado promissor devido ao avanço de:
· Algoritmos mais sofisticados
· Conjuntos de dados massivos
· Hardwares mais poderosos
💡 Expectativas futuras
· Continuidade da transformação em diversas indústrias.
· Melhoria em:
· Eficiência
· Precisão
· Segurança
· Expansão das aplicações no mundo real.
REDES NEURAIS CONVOLUCIONAIS (CNNS)
📌 O que são CNNs?
· As redes neurais convolucionais (CNNs) são ferramentas poderosas da inteligência artificial, com grande destaque na visão computacional.
· Tiveram um impacto revolucionário em áreas como:
· Reconhecimento de imagens
· Diagnóstico médico
· São inspiradas no córtex visual humano.
· Possuem a capacidade de aprender automaticamente características importantes das imagens.
⚙️ Estrutura e Funcionamento das CNNs
· As CNNs são compostas por diferentes tipos de camadas, cada uma com funções específicas.
🧩 Camadas Convolucionais
· Responsáveis por extrair características das imagens de entrada.
· Utilizam filtros convolucionais para identificar padrões e informações relevantes.
📉 Camadas de Pooling
· Responsáveis por reduzir a dimensionalidade das características extraídas.
· Ajudam a simplificar os dados processados.
🔗 Camadas Totalmente Conectadas
· Executam tarefas de:
· Classificação
· Regressão
· Utilizam as características aprendidas pelas camadas anteriores.
💡 Arquitetura Hierárquica
· A combinação dessas camadas forma uma arquitetura hierárquica.
· Essa estrutura permite que as CNNs aprendam representações complexas de dados visuais.
· Por isso, são altamente eficazes em:
· Reconhecimento de imagens
· Análise visual
🎯 Treinamento de Redes Neurais Convolucionais
· O treinamento ocorre com um conjunto de imagens rotuladas.
· Durante esse processo:
· Os pesos das camadas convolucionais e totalmente conectadas são ajustados continuamente.
· O ajuste é realizado por meio do algoritmo de retropropagação.
· O objetivo é minimizar a função de perda.
📊 Exemplo de Treinamento:
· Exemplo apresentado: reconhecimento de dígitos escritos à mão.
· Conjunto de treinamento:
· 60.000 imagens
· Dígitos de 0 a 9
📝 Como ocorre a associação:
· Após várias iterações de treinamento, a CNN aprende a relacionar:
· Imagem do dígito → Rótulo correto
Exemplo:
Imagem
Rótulo
Imagem do 3
3
Imagem do 7
7
· Assim, a rede aprende a identificar corretamente cada dígito.
🖼️ Aplicações Avançadas em Reconhecimento de Imagens
As CNNs possuem diversas aplicações práticas, incluindo:
· Reconhecimento facial
· Identificação de objetos em tempo real
· Diagnóstico médico por imagens de exames
🏥 Uso na Medicina:
· As CNNs são utilizadas para:
· Analisar imagens de ressonância magnética
· Detectar anomalias e doenças
· Esse uso demonstra sua capacidade de auxiliar no diagnóstico médico.
⚠️ Destaque Final
· As CNNs apresentam grande versatilidade e poder para resolver problemas complexos de análise visual.
· Seu uso se estende a diferentes domínios, reforçando sua importância na visão computacional e na inteligência artificial.
APLICAÇÕES BÁSICAS DE IA EM VISÃO COMPUTACIONAL
📌 Papel da IA na Visão Computacional
· A inteligência artificial (IA) contribui para transformar imagens em informações relevantes.
· Essas informações auxiliam na tomada de decisões em diferentes áreas.
· Entre as principais aplicações destacam-se:
· Reconhecimento de objetos
· Detecção de faces e emoções
· Análise de imagens médicas
🖼️ Reconhecimento de Objetos
· É uma das principais aplicações das redes neurais convolucionais (CNNs).
· Permite identificar e classificar objetos em imagens com alta precisão.
⚙️ Como funciona:
· O processo envolve:
· Extração de características das imagens, como:
· Formas
· Texturas
· Cores
· Classificação dos objetos com base nessas características.
📍 Aplicações citadas:
· Sistemas de vigilância
· Veículos autônomos
· Reconhecimento de placas de veículos
💡 Exemplo apresentado:
· Em um sistema de vigilância urbana, as CNNs podem:
· Identificar pessoas
· Detectar carros
· Reconhecer outros objetos em tempo real
· Isso contribui para a segurança pública.
😀 Detecção de Faces e Emoções
· Redes neurais podem ser treinadas para:
· Localizar rostos em imagens
· Identificar expressões faciais
📍 Exemplo de Emoções:
· Felicidade
· Tristeza
🔓 Aplicações dessa tecnologia:
· Desbloqueio de dispositivos
· Sistemas de segurança
· Monitoramento de espaços públicos
💡 Exemplo apresentado:
· Em um sistema de monitoramento de tráfego, as CNNs podem:
· Detectar rostos de motoristas
· Avaliar emoções
· O objetivo é compreender o estado emocional dos condutores.
🏥 Análise de Imagens Médicas
· Redes neurais são treinadas para interpretar exames médicos.
· Exemplos de exames citados:
· Radiografias
· Tomografias
⚙️ Funções desempenhadas:
· Auxílio no diagnóstico de doenças
· Segmentação e análise de imagens de órgãos internos
· Apoio no:
· Planejamento de cirurgias
· Planejamento de tratamentos
💡 Exemplo:
· Em mamografias, as CNNs podem identificar sinais de câncer de mama.
⚠️ Destaque Final
· As aplicações apresentadas demonstram a diversidade de uso das CNNs em diferentes áreas, como:
· Segurança
· Análise emocional
· Saúde
· Por meio da análise e interpretação de imagens, as CNNs mostram:
· Versatilidade
· Alta eficácia
· Capacidade de resolver problemas complexos em diversos domínios.
DESENVOLVIMENTO DE MODELOS EM VISÃO COMPUTACIONAL
· O desenvolvimento de modelos em visão computacional com CNNs envolve três etapas principais:
· Pré-processamento de dados
· Construção e treinamento de modelos
· Avaliação e otimização de desempenho
🖼️ Pré-processamento de Dados
· Etapa responsável pela preparação e limpeza dos dados antes de serem utilizados no modelo.
⚙️ Principais atividades no pré-processamento:
· Redimensionamento das imagens: Ajuste para um tamanho específico.
· Normalização dos pixels: Conversão dos valores para um intervalo predefinido.
· Ampliação de dados (aumento do conjunto de treinamento): Aumenta a diversidade dos dados.
🔧 Outras técnicas citadas:
· Segmentação de regiões de interesse
· Remoção de ruídos e artefatos indesejados
· Técnicas voltadas para:
· Melhorar a qualidade
· Aumentar a utilidade dos dados para o modelo.
💡 Exemplo:
· Normalização de uma imagem em escala de cinza
· Intensidades de pixel ajustadas para o intervalo [0,1].
🏗️ Construção e Treinamento de Modelos
· Consiste em definir a arquitetura da rede neural e preparar o modelo para aprendizagem.
🧩 Componentes da arquitetura:
· Camadas convolucionais
· Camadas de pooling
· Camadas totalmente conectadas
⚙️ Compilação do modelo:
· Inclui:
· Função de perda
· Algoritmo de otimização
🔄 Processo de treinamento:
· Os pesos da rede são ajustados iterativamente utilizando:
· Conjunto de dados rotulado
· O ajuste ocorre por meio da:
· Minimização da função de perda
· Uso de algoritmos como o gradiente descendente.
📚 Épocas de treinamento:
· O treinamento pode ocorrer em várias épocas.
· Em cada época:
· Todo o conjunto de treinamento passa pela rede uma ou mais vezes.
💡 Exemplo:
· Treinamento de uma CNN para: Classificar gatos e cachorros
· Base de treinamento: 10.000 imagens.
📊 Avaliação e Otimização de Desempenho
· Após o treinamento, o modelo é testado em um conjunto de validação.
· O objetivo é medir sua capacidade de generalizar dados não vistos.
📈 Métricas utilizadas:
· Previsão
· Recall
· F1-score
· Matriz de confusão
🔧 Possíveis otimizações:
Com base nos resultados, podem ser realizados:
· Ajuste de hiperparâmetros
· Modificação da arquitetura da rede
· Aumento de dados
Essasa função, o seguinte código deve ser adicionado abaixo dela.
🎯 Objetivo do teste:
· Criar um reconhecedor de voz;
· Executar a função obter_audio();
· Verificar se a captura de áudio foi realizada corretamente.
# Testando a função obter_audio()
if __name__ == "__main__": # Verifica se o arquivo está sendo executado diretamente
microfone = sr.Recognizer() # Cria um objeto reconhecedor de voz
audio = obter_audio(microfone) # Chama a função para capturar o áudio
print("Função obter_audio() executada com sucesso.") # Exibe mensagem de confirmação
🔊 Execução do programa:
· Durante a execução, o usuário deve pronunciar a frase: “Isto é um teste”
· O programa:
· Ativa o microfone;
· Aguarda a fala do usuário;
· Captura o áudio;
· Exibe uma mensagem indicando que a função foi executada.
✅ Resultado observado:
· O resultado apresentado mostra que:
· O áudio foi capturado corretamente;
· A função obter_audio() executou com sucesso;
· O sistema está pronto para as próximas etapas do reconhecimento de voz.
PROGRAMA COMPLETO PARA TRANSFORMAR ÁUDIO EM TEXTO
· O desenvolvimento do programa permite explorar uma aplicação prática do reconhecimento de voz.
· Utilizando bibliotecas em Python, como SpeechRecognition, é possível:
· Capturar áudio do microfone;
· Processar o sinal de áudio;
· Converter a fala em texto.
· Essa tecnologia pode ser aplicada em diferentes cenários, como:
· Assistentes virtuais;
· Transcrição automática de gravações;
· Sistemas baseados em reconhecimento de voz.
🔄 Função para transformar áudio em texto
· A função tem como objetivo converter o áudio capturado em texto.
· Ela recebe dois parâmetros:
· microfone → reconhece padrões de fala usando modelos pré-treinados;
· audio → contém o áudio capturado anteriormente.
🎯 Objetivo do código:
· Utilizar o serviço Google Speech Recognition para:
· Interpretar o áudio;
· Converter a fala em texto em português;
· Retornar o conteúdo reconhecido.
def transformar_audio_em_texto(microfone, audio): # Define a função que converte áudio em texto
try: # Inicia o bloco de tratamento de exceções
frase = microfone.recognize_google(audio, language='pt-BR') # Usa o Google para reconhecer a fala em português
return frase # Retorna o texto reconhecido
except sr.UnknownValueError: # Trata erro caso o áudio não seja compreendido
print("Não entendi") # Exibe mensagem de erro
📌 Funcionamento da função:
· O método recognize_google():
· Envia o áudio ao Google Speech Recognition;
· Processa a fala;
· Retorna o texto correspondente.
· O parâmetro language='pt-BR':
· Define o idioma como português do Brasil.
⚠️ Tratamento de exceção:
· O código utiliza tratamento de exceção porque:
· Nem sempre o sistema consegue entender a fala do locutor;
· Ruídos ou pronúncia podem dificultar o reconhecimento.
· Nesses casos, o programa exibe: "Não entendi"
🎤 Função para escutar o microfone
· A próxima etapa é implementar a função que:
· Ativa o microfone;
· Captura o áudio;
· Chama a função responsável pela conversão em texto.
· O microfone é criado a partir da função Recognizer() da biblioteca SpeechRecognition.
🎯 Objetivo do código:
· Criar o reconhecedor de voz;
· Obter o áudio do usuário;
· Converter o áudio em texto;
· Retornar o texto reconhecido.
def escutar_microfone(): # Define a função que realiza todo o processo de escuta
microfone = sr.Recognizer() # Cria o objeto reconhecedor de voz
audio = obter_audio(microfone) # Captura o áudio do microfone
texto = transformar_audio_em_texto(microfone, audio) # Converte o áudio em texto
return texto # Retorna o texto reconhecido
📌 Funcionamento da função:
· Recognizer() cria o mecanismo de reconhecimento de voz.
· obter_audio():
· Ativa o microfone;
· Captura o áudio do usuário.
· transformar_audio_em_texto():
· Processa o áudio;
· Converte a fala em texto.
· O resultado final é retornado pela função.
▶️ Função principal
· A função principal é responsável por iniciar todo o processo.
🎯 Objetivo do código:
· Chamar a função escutar_microfone();
· Exibir na tela a frase reconhecida.
if __name__ == '__main__': # Verifica se o programa está sendo executado diretamente
texto = escutar_microfone() # Captura e converte a fala em texto
print("A frase que você disse foi: " + texto) # Exibe o texto reconhecido
📌 Funcionamento da função principal:
· O programa:
1. Ativa o microfone;
2. Aguarda o usuário falar;
3. Captura o áudio;
4. Converte a fala em texto;
5. Exibe o resultado na linha de comando.
⚠️ Atenção:
· Para o programa funcionar corretamente, é necessário:
· Importar o pacote SpeechRecognition;
· Incluir a função obter_audio(), desenvolvida anteriormente.
✅ Resultado do teste:
Durante o teste realizado:
Diga alguma coisa:
A frase que você disse foi: Olá isto é um teste
· O resultado demonstra que:
· O microfone capturou a fala;
· O sistema reconheceu o áudio;
· A frase foi convertida corretamente em texto.
Entrada (32×32×1)
Conv2D (6 filtros)
Average Pooling
Conv2D (16 filtros)
Average Pooling
Conv2D (120 filtros)
Flatten
Dense (84 neurônios)
Dense (10 neurônios – saída)
image5.png
image6.png
image7.png
image8.png
image9.png
image10.png
image11.png
image12.png
image13.png
image14.png
image15.png
image16.png
image17.png
image18.png
image19.png
image20.png
image21.png
image22.png
image23.png
image24.png
image25.png
image26.png
image27.png
image28.png
image29.png
image30.png
image31.png
image32.png
image33.png
image34.png
image35.png
image36.png
image37.png
image38.png
image39.png
image40.png
image41.png
image1.jpeg
image2.png
image3.png
image4.png