- Estratégias de Melhoria do YOLOv5 ====================================
O framework YOLOv5 tem sido amplamente aprimorado para detectar objetos em diferentes escalas. Implementações comuns incluem a adição de uma camada de detecção adicional, resultando em um total de quatro mapas de características. Cada ponto de ancoragem pode prever três caixas delimitadoras, melhorando a capacidade de detecção de objetos pequenos. Otimizações específicas focam em balancear acurácia e velocidade de inferência.
- Algoritmos de Otimização: SGD, Adam e AdamW ==============================================
A escolha do algoritmo de otimização impacta diretamente a convergência do modelo. O Stochastic Gradient Descent (SGD) atualiza os parâmetros usando apenas o gradiente atual, requerendo ajuste manual da taxa de aprendizado. Adam, por outro lado, estima momentos de primeira e segunda ordem das taxas de gradiente, adaptando automaticamente a taxa de aprendizado para cada parâmetro, o que geralmente leva a uma convergência mais rápida. AdamW estende Adam adicionando regularização de decaimento de peso diretamente no cálculo do gradiente, ajudando a mitigar overfitting.
A formulação matemática do Adam é:
m_t = β₁ * m_{t-1} + (1 - β₁) * g_t
v_t = β₂ * v_{t-1} + (1 - β₂) * g_t²
θ_t = θ_{t-1} - α * m̂_t / (√v̂_t + ε)
No AdamW, o decaimento de peso é aplicado separadamente:
θ_t = θ_{t-1} - η * (α * m̂_t / (√v̂_t + ε) + λ * θ_{t-1})
Uma estratégia comum é utilizar Adam para convergência inicial rápida e, em seguida, mudar para SGD para refinamento fino, aproveitando os pontos fortes de ambos.
- Visualização de Features e Mapas de Calor ============================================
A visualização dos mapas de características gerados pelas camadas convolucionais permite entender quais partes da imagem são ativadas para diferentes classes. Técnicas como Grad-CAM produzem mapas de calor que destacam regiões relevantes para a predição, auxiliando na interpretação do modelo e identificação de falhas.
- Tratamento de Desbalanceamento de Amostras e Métricas ========================================================
Problemas de classificação frequentemente apresentam desbalanceamento de classes. Métricas tradicionais como acurácia podem ser enganosas. Alternativas incluem precisão, recall, F1-score e a Área sob a Curva ROC (AUC-ROC). Para problemas multi-classe, métricas como precisão macro e micro-averaged são úteis. Em detecção de objetos, o Mean Average Precision (mAP) é padrão, com variantes que consideram o desbalanceamento de classes.
- Conceitos Chave em Redes Neurais ===================================
Funções de Ativação e Backpropagation
Funções de ativação como ReLU, Sigmoid e Softmax introduzem não-linearidade. Durante a retropropagação, seus gradientes conectam as atualizações de parâmetros entre camadas. Por exemplo, a derivada da ReLU é 1 para entradas positivas e 0 caso contrário.
Batch Normalization (BN)
A camada de Batch Normalization normaliza as ativações, contendo parâmetros aprendíveis γ (escala) e β (deslocamento). Esses parâmetros permitem que a rede mantenha a capacidade expressiva mesmo após a normalização. Durante a inferência, são utilizadas as médias e variâncias acumuladas durante o treinamento.
Regularização e Overfitting
Técnicas como Dropout e regularização L2 (decaimento de peso) ajudam a prevenir overfitting. O Dropout desativa aleatoriamente neurônios durante o treinamento, forçando a rede a aprender representações mais robustas.
- Cálculo de Complexidade e Tamanho do Modelo ==============================================
O número de operações de ponto flutuante (FLOPs) e a quantidade de parâmetros são métricas importantes para avaliar a eficiência de um modelo. Um modelo com 1 bilhão de parâmetros em precisão FP32 ocupa aproximadamente 3.72 GB de memória. O cálculo dos FLOPs em camadas convolucionais e totalmente coenctadas pode ser automatizado usando ferramentas como thop em PyTorch.
- Norma L2 e Representação de Features =======================================
A normalização L2 dos vetores de características projeta-os em uma hiperesfera, tornando os classificadores lineares equivalentes a comparar similaridades de cosseno com centros de classe. Isso é particularmente útil em tarefas como reconhecimento facial, onde funções de perda como ArcFace maximizam a separação angular entre classes.
# Exemplo simplificado de normalização L2 em um batch
import numpy as np
def l2_normalize(features, eps=1e-8):
norms = np.linalg.norm(features, axis=1, keepdims=True)
normalized = features / (norms + eps)
return normalized
# Vetores de características de exemplo
feature_vectors = np.array([[3.0, 4.0], [1.0, 2.0], [0.0, 5.0]])
normalized_features = l2_normalize(feature_vectors)
print(normalized_features)
- Taxa de Aprendizado e Escalonamento ======================================
Políticas de taxa de aprendziado como escalonamento cosseno reduzem gradualmente a taxa de aprendizado ao longo do treinamento, seguindo uma curva de cosseno. Isso ajuda a escapar de mínimos locais no início e converge suavemente nas fases finais.
- ConvNets vs Transformers ===========================
Redes Neurais Convolucionais (CNNs) capturam características locais através de conectividade parcial e compartilhamento de parâmetros, sendo inerentemente adequadas para dados com estrutura espacial como imagens. Trensformers, por outro lado, usam mecanismos de atenção para modelar dependências de longo alcance em sequências, sendo populares em processamento de linguagem natural. Híbridos combinam as vantagens de ambas as arquiteturas.