Curvas de Aprendizagem
O que observamos:
- Baseline: Training accuracy sobe rapidamente, validation estagna
- Melhorado: Curvas mais próximas, indicando melhor generalização
- Transfer Learning: Ambas curvas sobem suavemente juntas
Disciplina: Deep Learning
Faculdade Senac DF
💡 Machine Learning é como ensinar um computador a reconhecer padrões, similar a como uma criança aprende a distinguir gatos de cachorros.
💭 Ideia Principal: O computador não "entende" o que é um gato, mas aprende padrões matemáticos que associam características visuais à resposta correta!
Como um professor que corrige provas
Como um detetive procurando pistas
Como um técnico especialista:
Como um especialista que aprende sozinho:
🔍 CNN é uma "receita especial" de IA projetada especificamente para entender imagens, como um oftalmologista é especialista em olhos.
Primeiro você vê contornos básicos
Depois identifica círculos, retângulos
Reconhece olhos, nariz, orelhas
Finalmente vê: "É um gato!"
Como uma lupa que examina pequenas partes da imagem
Sabe que os olhos ficam acima da boca
Das bordas simples até objetos complexos
Um padrão aprendido serve para toda a imagem
💡 Conexão com o Mundo Real: CNNs são usadas em carros autônomos para identificar pedestres, placas de trânsito e outros veículos - exatamente como nossos olhos fazem quando dirigimos!
Imagine um scanner de mesa que examina uma foto, mas ao invés de apenas copiar, ele procura características específicas como bordas, curvas, texturas...
O que faz: Um filtro pequeno (3x3 pixels) passa por toda a imagem
Como funciona: Multiplica os valores dos pixels e soma o resultado
Analogia: Como passar um ímã sobre areia para encontrar ferro
Conv2D(32 filtros, tamanho 3x3)
O que faz: Remove valores negativos, mantém apenas os positivos
Por quê: Destacar apenas as características importantes
Analogia: Como um marcador que só risca onde encontra o que procura
O que faz: Pega o valor mais importante de cada região
Vantagem: Reduz o tamanho da imagem mantendo info essencial
Analogia: Como resumir um capítulo de livro nos pontos principais
Encontra linhas e contornos
Identifica padrões repetitivos
Reconhece formas arredondadas
Detecta vértices e pontas
🎯 Resultado Final: Cada filtro cria um "mapa" destacando onde encontrou suas características específicas. Juntos, eles formam uma "impressão digital" da imagem que o computador usa para fazer a classificação!
Detector de padrões
Como um scanner que procura formas específicas
Filtros: 16, 32, 64...
Liga/Desliga neurônios
Como um interruptor: liga se importante, desliga se não
Remove valores negativos
Resumir informações
Como fazer um resumo dos pontos principais
MaxPooling: pega o maior valor
Decisão final
Como o cérebro que toma a decisão final
128 neurônios → 1 saída
A 'fábrica' de inteligência artificial
Como uma fábrica completa de carros - tem tudo que precisamos
O 'assistente amigável' do TensorFlow
Como um assistente que simplifica tarefas complexas
Caderno interativo para programar
Como um caderno onde você escreve código e vê resultados instantaneamente
Vamos ensinar um computador a identificar se uma foto mostra um gato ou um cachorro
Milhares de fotos de gatos e cachorros
Redimensionar e organizar as imagens
Ensinar a rede neural os padrões
Ver se realmente aprendeu
2.000 imagens
1.000 gatos + 1.000 cachorros
Para ensinar o modelo1.000 imagens
500 gatos + 500 cachorros
Para acompanhar o aprendizadoImagens separadas
Nunca vistas antes
Para avaliar se realmente aprendeuDetectar câncer em exames de imagem
Identificar pedestres e obstáculos
Reconhecimento facial em aeroportos
Checkout automático em lojas
Monitorar saúde das plantas
Auto-marcação de pessoas em fotos
💡 Objetivo Principal: Ao dominar este projeto simples de gatos vs cachorros, vocês terão as bases para trabalhar com qualquer tipo de classificação por imagem!
🍳 Como preparar ingredientes antes de cozinhar um prato especial
Assim como um chef organiza ingredientes, precisamos preparar nossas imagens para a CNN
Cats and Dogs Dataset: 25.000 imagens
tf.keras.utils.get_file('cats_and_dogs.zip', origin=URL)
Como dividir um baralho para diferentes jogos:
160x160 pixels - tamanho otimizado
tf.image.resize(image, [160, 160])
De [0-255] para [0-1]: Facilita o aprendizado
tf.cast(image, tf.float32) / 255.0
Gira imagem até 40°
Espelha horizontalmente
Aproxima até 20%
Varia iluminação
💡 Resultado: De 20.000 imagens → 100.000+ variações para treinamento!
Cada camada tem um propósito específico, como andares de um edifício especializado
model = tf.keras.Sequential([
# Camada de entrada e normalização
tf.keras.layers.Rescaling(1./255),
# Primeiro bloco convolucional
tf.keras.layers.Conv2D(16, 3, activation='relu'),
tf.keras.layers.MaxPooling2D(),
# Segundo bloco convolucional
tf.keras.layers.Conv2D(32, 3, activation='relu'),
tf.keras.layers.MaxPooling2D(),
# Terceiro bloco convolucional
tf.keras.layers.Conv2D(64, 3, activation='relu'),
tf.keras.layers.MaxPooling2D(),
# Classificação
tf.keras.layers.Flatten(),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
Entrada: (160, 160, 3) → Normalização: /255
Detecta bordas e padrões básicos
Reduz dimensões, mantém características
Detecta formas e texturas complexas
Segunda redução dimensional
Reconhece objetos complexos
Terceira redução dimensional
Converte matriz 3D em vetor 1D
Previne overfitting - 20% neurônios desligados
Aprendizado de alta-level features
Classificação binária: 0=gato, 1=cachorro
💡 Insight: A maior parte dos parâmetros (99%) está na primeira camada densa, onde os 20.736 features extraídos pelas convoluções são processados pelos 128 neurônios.
🏃♀️ Como treinar para uma maratona, mas com dados
O computador "aprende" ajustando milhões de parâmetros através de exemplos
model.compile(
optimizer='adam', # Otimizador inteligente
loss='binary_crossentropy', # Função de erro
metrics=['accuracy'] # Métrica de avaliação
)
O que acontece: Imagem passa por todas as camadas
prediction = model(batch_images)
Calculando o erro: Quão longe estamos do correto?
loss = binary_crossentropy(y_true, y_pred)
Aprendendo com o erro: Como melhorar?
gradients = tape.gradient(loss, model.trainable_variables)
Ajuste inteligente: Adam optimizer em ação
optimizer.apply_gradients(zip(gradients, variables))
Como o modelo está performando nos dados de treino
Performance em dados nunca vistos (mais importante!)
Medida do erro - deve diminuir com o tempo
# Iniciando o treinamento
history = model.fit(
train_dataset,
epochs=15,
validation_data=validation_dataset,
verbose=1
)
# Resultado típico:
# Epoch 15/15
# 625/625 [======] - 45s - loss: 0.2089 - accuracy: 0.9210
# - val_loss: 0.3876 - val_accuracy: 0.8740
🎯 Como uma criança aprende com os erros
Modelo faz uma previsão
Criança chuta: "Isso é um gato!"Modelo aprende com o erro
Professor diz: "Não, era um cachorro!"🔄 Este ciclo se repete milhares de vezes até o modelo aprender!
⚡ Como interruptores inteligentes
Regra: Se positivo: passa. Se negativo: bloqueia (vira 0)
Como um guarda que só deixa pessoas 'positivas' passaremRegra: Transforma qualquer número em valor entre 0 e 1
Como um conversor de notas para porcentagem📚 Como um estudante que 'decoreba' ao invés de entender
Modelo funciona muito bem nos dados de treino, mas mal em dados novos
Estuda, entende conceitos, vai bem em qualquer prova
Decora respostas, vai bem só em provas iguais ao treino
Como estudar em grupo - não depender só de uma pessoa
Dropout(0.2) - desliga 20%
Como estudar com livros diferentes sobre o mesmo assunto
RandomRotation, RandomFlip
Como dar mais neurônios para o cérebro pensar
Conv2D(64) ao invés de Conv2D(16)
🎓 Como um PhD ajudando um estudante iniciante
Usar conhecimento de um modelo já treinado em milhões de imagens
O que observamos:
Tipos de erro mais comuns:
Aumentou accuracy de validação em 13 pontos percentuais
Atingiu 95% de accuracy em apenas 10 epochs
Gap < 5% indica boa generalização
Validation accuracy é mais importante que training
🏆 Modelo Final: Transfer Learning com MobileNetV2 atingiu 95% de accuracy em validação, com apenas 2% de overfitting e convergência em 10 epochs. Pronto para produção!
🏭 Como transformar uma receita de cozinha em restaurante industrial
Criar e treinar modelo
Colocar modelo online para usar
Acompanhar performance em produção
Prof. Alexsander Barreto
AlexHolanda.com.brDisponível para dúvidas
Materiais: Disponível no site do professor
📅 Próxima aula: Implementação prática em laboratório!
Classificação precisa entre gatos e cachorros usando Transfer Learning com MobileNetV2
Convergência rápida com apenas 10 epochs e baixo overfitting (2%)
Domínio completo do pipeline de Deep Learning para visão computacional
Classificação de imagens médicas, detecção de tumores, análise de radiografias
Detecção de placas, reconhecimento de sinais, sistemas de navegação autônoma
Busca visual de produtos, recomendações por imagem, controle de qualidade
Reconhecimento facial, detecção de comportamentos suspeitos, controle de acesso
Com este projeto, você demonstrou conhecimento sólido em: Redes Neurais Convolucionais, Transfer Learning, Data Augmentation, Regularização e Avaliação de Modelos.
Agora você está preparado para enfrentar qualquer desafio em Computer Vision e Deep Learning! 🚀
🌐 Visite: AlexHolanda.com.br
💬 Entre em contato para dúvidas
📚 Mais conteúdos no site
🎓 Sucesso nos seus projetos!