Anchor-Based Detectors
Os detetores baseados em âncoras preveem objetos como deslocamentos em relação a caixas-âncora predefinidas, como em Faster R-CNN, SSD, RetinaNet e YOLOv5. Como funcionam e como se comparam.
Os detetores baseados em âncoras são modelos de deteção de objetos que distribuem caixas-âncora predefinidas por uma imagem e preveem, para cada âncora, pontuações de classe e os desvios que a transformam numa caixa delimitadora ajustada. Esta família inclui modelos de duas etapas, como Faster R-CNN, cuja rede de propostas de regiões atribui pontuações às âncoras para produzir regiões candidatas, e modelos de uma etapa, como SSD, RetinaNet e YOLOv2 a YOLOv5, que classificam e ajustam diretamente cada âncora. As âncoras foram a abordagem padrão para localizar objetos desde o Faster R-CNN, em 2015, até os detetores sem âncoras, como o FCOS, igualarem a sua precisão em 2019.
Como funciona a deteção baseada em âncoras#
Um backbone e um neck transformam a imagem em mapas de características, e um conjunto fixo de âncoras, com vários tamanhos e proporções, é colocado em cada célula de cada mapa. Para cada âncora, a cabeça de deteção prevê uma pontuação por classe, além de uma pontuação de objetualidade no YOLOv2 a YOLOv5, e quatro valores de regressão. A codificação amplamente utilizada do Faster R-CNN desloca o centro da âncora por frações da sua largura e altura e escala exponencialmente a sua largura e altura:
import torch
# One anchor as (center x, center y, width, height) in pixels
anchor = torch.tensor([320.0, 240.0, 64.0, 128.0])
# Offsets (tx, ty, tw, th) that the regression branch predicts for this anchor
tx, ty, tw, th = torch.tensor([0.25, -0.10, 0.20, -0.05])
# Faster R-CNN decoding: shift the center in units of anchor size, scale width and height exponentially
cx = anchor[0] + tx * anchor[2]
cy = anchor[1] + ty * anchor[3]
w = anchor[2] * torch.exp(tw)
h = anchor[3] * torch.exp(th)
print(f"anchor 64x128 at (320, 240) -> box {w:.1f}x{h:.1f} at ({cx:.1f}, {cy:.1f})")A âncora transforma-se numa caixa de 78,2 × 121,8 píxeis centrada em (336,0, 227,2): deslocou-se 16 píxeis para a direita e 12,8 píxeis para cima, ficou 22% mais larga (e^0,2) e 5% mais baixa (e^−0,05). Como os desvios são relativos ao tamanho da âncora, os mesmos valores previstos funcionam para âncoras pequenas e grandes.
Durante a inferência, o detetor descodifica todas as âncoras desta forma, descarta as caixas abaixo de um limiar de confiança e aplica a supressão não máxima (NMS) para remover as duplicadas de âncoras vizinhas.
Treino: atribuir rótulos a cada âncora#
Durante o treino, cada âncora recebe um rótulo com base na sua interseção sobre união (IoU) com as caixas anotadas. O RetinaNet utiliza estes limiares:
A rede de propostas de regiões do Faster R-CNN utiliza valores mais rigorosos: 0,7 e 0,3. As 9 âncoras por localização do RetinaNet, distribuídas por cinco níveis piramidais, totalizam cerca de 100 000 âncoras por imagem, quase todas negativas; a sua focal loss reduz o peso desses exemplos negativos fáceis para que não dominem o treino.
Principais arquiteturas baseadas em âncoras#
- Detetores de duas etapas: A rede de propostas de regiões do Faster R-CNN atribui às âncoras uma pontuação de objeto ou fundo e ajusta-as para gerar cerca de 300 propostas por imagem; uma segunda cabeça classifica e ajusta cada proposta. Com um backbone VGG-16, executava a 5 FPS numa GPU; o Mask R-CNN acrescenta um ramo de máscaras ao mesmo desenho.
- Detetores de objetos de uma etapa: SSD, RetinaNet e os modelos YOLO do YOLOv2 ao YOLOv5 classificam e ajustam todas as âncoras numa só passagem. O YOLOv2 substituiu as âncoras escolhidas manualmente por agrupamentos k-means das larguras e alturas das caixas de treino.
O YOLOv5 da Ultralytics é baseado em âncoras, com 3 âncoras em cada um dos seus três níveis de saída, e associa os rótulos às âncoras com base na forma: uma âncora é candidata quando a largura e a altura de um rótulo são ambas inferiores a 4× as da âncora. As variantes YOLOv5u do pacote Ultralytics substituem essa cabeça pela cabeça dividida sem âncoras introduzida no YOLOv8, um desenho que o YOLO26 mantém.
Detetores baseados em âncoras vs. sem âncoras#
Os detetores sem âncoras preveem uma caixa a partir de cada ponto da grelha — como distâncias às quatro extremidades — ou a partir de pontos-chave, como os centros dos objetos. Assim, não têm tamanhos de âncora, proporções ou limiares de IoU para ajustar e produzem um candidato por localização, em vez de um por forma de âncora. O ATSS concluiu que a diferença de precisão entre o RetinaNet e o FCOS sem âncoras resultava da forma como cada um selecionava as amostras positivas de treino: com a mesma regra de seleção, ambos alcançavam a mesma precisão, e o RetinaNet obteve 39,2 AP no COCO minival com 9 âncoras por localização e 39,3 AP com 1.










