Residual Networks (ResNet)
Explora o poder das redes residuais (ResNet). Aprende como as ligações de salto resolvem o problema dos gradientes evanescentes para permitir deep learning em visão computacional.
As redes residuais, amplamente conhecidas como ResNets, são um tipo específico de arquitetura de rede neuronal artificial (ANN) concebida para permitir o treino de redes extremamente profundas. Introduzida por investigadores da Microsoft em 2015, a ResNet resolveu um obstáculo crítico do aprendizado profundo conhecido como o problema do desaparecimento do gradiente. Nas redes tradicionais, empilhar mais camadas frequentemente levava à saturação ou degradação do desempenho, porque o sinal necessário para atualizar os pesos do modelo desaparecia à medida que se propagava para trás pelas camadas. A ResNet introduziu "conexões de salto" (ou conexões residuais), que permitem que os dados contornem uma ou mais camadas e fluam diretamente para as etapas de processamento subsequentes. Esta inovação demonstrou que era possível treinar redes mais profundas de forma eficaz, conduzindo a avanços significativos na visão computacional (CV) e tornando-se um conceito fundamental para as arquiteturas modernas.
O conceito central: aprendizado residual#
A característica definidora de uma ResNet é o "bloco residual". Numa rede neuronal convolucional (CNN) padrão, cada camada tenta aprender um mapeamento direto da entrada para a saída. À medida que as redes se tornam mais profundas, aprender este mapeamento direto torna-se cada vez mais difícil.
A ResNet altera esta abordagem ao formular o objetivo de aprendizado de forma diferente. Em vez de esperar que cada conjunto de camadas aprenda todo o mapeamento subjacente, o bloco residual faz com que as camadas aprendam o "resíduo" — ou seja, a diferença — entre a entrada e a saída pretendida. A entrada original é então adicionada novamente ao resíduo aprendido através de uma conexão de salto. Esta alteração estrutural implica que, se um mapeamento de identidade (passar a entrada sem alterações) for ideal, a rede poderá facilmente aprender a reduzir os resíduos a zero. Isto torna os modelos de aprendizado profundo (DL) muito mais fáceis de otimizar, permitindo-lhes passar de dezenas para centenas ou até milhares de camadas.
Principais variantes de arquitetura#
Desde a sua criação, várias versões da ResNet tornaram-se referências padrão na comunidade de IA.
- ResNet-50: Uma versão com 50 camadas que utiliza um design de "gargalo". Este design usa convoluções 1x1 para reduzir e depois restaurar as dimensões, tornando a rede computacionalmente eficiente e mantendo uma precisão elevada.
- ResNet-101 e ResNet-152: Variantes mais profundas, com 101 e 152 camadas, respetivamente. São frequentemente utilizadas quando os recursos computacionais permitem uma maior complexidade para captar mapas de características mais detalhados.
- ResNeXt: Uma evolução da ResNet que introduz uma dimensão de "cardinalidade", dividindo o bloco residual em vários caminhos paralelos, o que melhora a eficiência e o desempenho.
Aplicações no mundo real#
A robustez das arquiteturas ResNet tornou-as uma escolha preferencial para uma vasta gama de tarefas visuais.
- Análise de imagens médicas: Na área da saúde, é fundamental identificar anomalias subtis em exames de alta resolução. Os modelos baseados em ResNet são frequentemente utilizados para detetar condições como a deteção de tumores em imagens médicas, em que a profundidade da rede ajuda a distinguir padrões detalhados em dados de MRI ou CT.
- Veículos autónomos: Os veículos autónomos precisam de uma extração de características fiável a partir de transmissões de câmaras para identificar peões, sinais e obstáculos. As ResNets servem frequentemente como espinha dorsal dos sistemas de deteção de objetos em aplicações de IA no setor automóvel, fornecendo as características visuais detalhadas necessárias para uma navegação segura.
ResNet vs. outras arquiteturas#
É útil distinguir a ResNet de outras arquiteturas populares para compreender a sua utilidade específica.
- ResNet vs. VGG: As redes VGG (Grupo de Geometria Visual) também são CNNs profundas, mas não têm conexões residuais. Consequentemente, são muito mais difíceis de treinar em profundidades comparáveis às da ResNet e são geralmente mais dispendiosas do ponto de vista computacional devido às suas grandes camadas totalmente conectadas.
- ResNet vs. Inception: As redes Inception concentram-se na largura, utilizando filtros de vários tamanhos dentro da mesma camada para captar características em diferentes escalas. A ResNet concentra-se na profundidade. Arquiteturas modernas como a Inception-ResNet combinam ambos os conceitos.
- ResNet vs. Transformer de visão (ViT): Enquanto os ViTs utilizam mecanismos de autoatenção para processar imagens globalmente, as ResNets dependem de convoluções locais. No entanto, as ResNets continuam a ser uma referência sólida e são frequentemente mais rápidas para conjuntos de dados menores ou inferência em tempo real.
Exemplo de Implementação#
Bibliotecas modernas de aprendizado profundo, como PyTorch, simplificam o acesso a modelos ResNet pré-treinados. Estes modelos são inestimáveis para o aprendizado por transferência, em que um modelo treinado num grande conjunto de dados como o ImageNet é ajustado para uma tarefa específica.
O seguinte trecho de Python demonstra como carregar um modelo ResNet-50 pré-treinado utilizando torchvision (parte do ecossistema PyTorch) e realizar uma simples passagem para a frente. Embora os utilizadores da Ultralytics Platform possam utilizar frequentemente o YOLO26 para deteção, compreender os conceitos subjacentes da espinha dorsal, como a ResNet, é fundamental para uma personalização avançada.
import torch
import torchvision.models as models
# Load a pre-trained ResNet-50 model
resnet50 = models.resnet50(weights=models.ResNet50_Weights.DEFAULT)
resnet50.eval() # Set model to evaluation mode
# Create a dummy input tensor (batch_size, channels, height, width)
input_tensor = torch.randn(1, 3, 224, 224)
# Perform a forward pass to get predictions
with torch.no_grad():
output = resnet50(input_tensor)
print(f"Output shape: {output.shape}") # Expect [1, 1000] for ImageNet classesImportância na IA moderna#
Embora arquiteturas mais recentes, como o YOLO26, empreguem estruturas altamente otimizadas para obter a máxima velocidade e precisão, os princípios do aprendizado residual continuam a ser ubíquos. O conceito de conexões de salto é agora um componente padrão em muitas redes avançadas, incluindo Transformers utilizados no processamento de linguagem natural (NLP) e nos mais recentes modelos de deteção de objetos. Ao permitir que a informação flua mais livremente pela rede, a ResNet abriu caminho para os modelos profundos e complexos que impulsionam a inteligência artificial atual.









