Detecção de Objetos do Zero: Parte 3 - Treinando o Detector

15 de maio de 202625 min de leituraNew

Parte 3 detalha o treinamento do detector: transfer learning, augmentations, AdamW, cosine decay, early stopping, treino local e experimentos em GPU na cloud.

Detecção de Objetos do Zero: Parte 3 - Treinando o Detector
React to this article

Scripts de treino costumam parecer pequenos demais para a quantidade de decisões que carregam. Este projeto é um bom exemplo disso.

Por trás de poucos parâmetros existe uma cadeia inteira de escolhas sobre transfer learning, augmentation, otimização, estabilidade de hardware e custo de experimento.

Comece por Transfer Learning, Não por Heroísmo

O repositório parte de pesos pré-treinados do YOLOv11:

from ultralytics import YOLO
 
model = YOLO("yolo11n.pt")

Essa única linha já concentra boa parte da vantagem do projeto.

Transfer learning faz sentido porque o dataset é customizado e relativamente pequeno. Em vez de aprender visão computacional do zero, o modelo reaproveita features já aprendidas e as adapta às regiões semânticas das cartas.

Por Que YOLOv11n?

Há uma decisão madura aqui: começar pequeno, iterar rápido e só depois questionar o teto.

Faz sentido porque:

  • o número de classes é limitado
  • o dataset não é gigantesco
  • velocidade de iteração vale muito
  • custo de experimento também conta

Os experimentos em cloud reforçam esse ponto. Modelos maiores e resoluções maiores não ganharam de forma consistente. Isso é importante porque obriga o projeto a olhar para o gargalo real, e não para a fantasia de que "mais modelo" sempre resolve.

As Augmentations Têm Propósito

O documento training-strategies.md é um dos melhores do repositório porque liga teoria e prática. As augmentations não estão ali para deixar o treino "mais sofisticado". Cada uma responde a um modo de falha plausível do mundo real.

Visão geral da estratégia de augmentation
O conjunto de augmentations não existe para enfeitar o treino. Cada transformação corresponde a um modo de falha real da webcam ou das anotações.

Mosaic

Mosaic aumenta a diversidade de contexto e ajuda principalmente em casos com objetos pequenos e composição variada de cena.

Batch de treino com mosaic
Um batch real com mosaic mostra por que essa augmentation importa: varias cartas, escalas e contextos sao combinados em um sinal de treino mais denso.

Mixup

Mixup ajuda a reduzir overconfidence e dependências ruins do fundo. Ele força o modelo a generalizar melhor em vez de decorar padrões fáceis demais.

Multi-scale

Multi-scale simula uma condição inevitável de uso real: distância variável da webcam, recorte imperfeito e enquadramentos inconsistentes.

Rotação, perspectiva, shear, HSV e erasing

Essas transformações fazem sentido porque cartas reais aparecem inclinadas, com iluminação inconsistente, parcialmente encobertas e em escalas diferentes.

O melhor ponto aqui é o seguinte: augmentation boa não é a que parece sofisticada. É a que corresponde a problemas que o produto realmente vai encontrar.

Otimização e Estabilidade

O projeto usa AdamW, cosine LR e early stopping. É um conjunto coerente para fine-tuning:

  • AdamW costuma funcionar bem em datasets menores
  • cosine decay ajuda a suavizar o refinamento
  • early stopping evita insistir quando o ganho marginal já desapareceu

Outro ponto importante é o treino local em CPU por questões de estabilidade no stack usado com Apple Silicon. Essa decisão pode parecer conservadora, mas é exatamente o tipo de pragmatismo que separa um experimento bonito de um pipeline confiável.

Cloud Não É Mágica

Os experimentos em RunPod são valiosos porque mostram uma verdade pouco glamourosa: mais GPU, mais resolução e mais parâmetros não significam automaticamente melhor resultado.

Se o teto do sistema estiver na qualidade dos labels, um modelo maior pode apenas memorizar melhor esse limite. Nesse contexto, escalar infraestrutura não corrige o problema principal.

O Que o Histórico de Experimentos Ensina

O repositório deixa um aprendizado muito claro:

  • transfer learning foi a base do desempenho
  • augmentations ajudaram porque refletiam o mundo real
  • estabilidade do ambiente de treino importou mais do que throughput teórico
  • escalar o modelo não foi a alavanca mais forte

Isso é exatamente o tipo de conclusão útil que um bom projeto de ML deveria produzir.

Conclusão

O treinamento deste detector funciona porque as escolhas se reforçam mutuamente. Não há fetiche por complexidade. Há alinhamento entre dados, arquitetura, hardware, custo e avaliação.

Batch final de treino
A visao final do batch mostra a diversidade de exemplos de que o modelo realmente aprendeu depois de augmentation, variacao de escala e geometria das cartas.

Na próxima parte, vamos ler as métricas como engenheiros, e não como espectadores de benchmark.

Leituras adicionais

Arthur CostaA

Arthur Costa

Senior Full-Stack Engineer & Tech Lead

Senior Full-Stack Engineer with 8+ years in React, TypeScript, and Node.js. Expert in performance optimization and leading engineering teams.

View all articles →