Anchor-Based Detectors
Les détecteurs avec ancres prédisent les objets sous forme de décalages par rapport à des boîtes d’ancrage prédéfinies, comme dans Faster R-CNN, SSD, RetinaNet et YOLOv5. Fonctionnement et comparaison.
Les détecteurs fondés sur des ancres sont des modèles de détection d'objets qui répartissent des boîtes d'ancrage prédéfinies sur une image et prédisent, pour chaque ancre, des scores de classe et les décalages qui la transforment en boîte englobante ajustée. Cette famille comprend les modèles à deux étapes, comme Faster R-CNN, dont le réseau de propositions de régions attribue un score aux ancres pour produire des régions candidates, ainsi que les modèles à une étape, comme SSD, RetinaNet et YOLOv2 à YOLOv5, qui classifient et affinent directement chaque ancre. Les ancres ont constitué la méthode standard de localisation des objets depuis Faster R-CNN en 2015, jusqu'à ce que les détecteurs sans ancres, comme FCOS, atteignent une précision équivalente en 2019.
Fonctionnement de la détection fondée sur des ancres#
Un backbone et un cou transforment l'image en cartes de caractéristiques, et un ensemble fixe d'ancres — plusieurs tailles et rapports d'aspect — est placé sur chaque cellule de chaque carte. Pour chaque ancre, la tête de détection prédit un score par classe, ainsi qu'un score d'objectness pour YOLOv2 à YOLOv5, et quatre valeurs de régression. Le codage largement utilisé de Faster R-CNN déplace le centre de l'ancre d'une fraction de sa largeur et de sa hauteur, et multiplie sa largeur et sa hauteur par une exponentielle :
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})")L’ancre devient une boîte de 78.2 × 121.8 pixels centrée en (336.0, 227.2) : elle s’est déplacée de 16 pixels vers la droite et de 12.8 pixels vers le haut, s’est élargie de 22 % (exp(0.2)) et a diminué de 5 % en hauteur (exp(−0.05)). Comme les décalages sont relatifs à la taille de l’ancre, les mêmes valeurs prédites conviennent aux ancres petites et grandes.
À l'inférence, le détecteur décode ainsi chaque ancre, élimine les boîtes dont le score est inférieur au seuil de confiance, puis applique la suppression non maximale (NMS) pour éliminer les doublons provenant d'ancres voisines.
Entraînement : annotation de chaque ancre#
Pendant l'entraînement, chaque ancre reçoit une étiquette selon son intersection sur union (IoU) avec les boîtes annotées. RetinaNet utilise les seuils suivants :
Le réseau de propositions de régions de Faster R-CNN utilise des valeurs plus strictes : 0,7 et 0,3. Les 9 ancres par emplacement de RetinaNet, réparties sur cinq niveaux pyramidaux, représentent environ 100 000 ancres par image, presque toutes négatives. Sa perte focale réduit le poids de ces exemples négatifs faciles afin qu'ils ne submergent pas l'entraînement.
Principales architectures fondées sur des ancres#
- Détecteurs à deux étapes : Le réseau de propositions de régions de Faster R-CNN attribue aux ancres un score d'objet ou d'arrière-plan et les affine pour obtenir environ 300 propositions par image ; une deuxième tête classe et affine chaque proposition. Avec un backbone VGG-16, le modèle tournait à 5 FPS sur GPU ; Mask R-CNN ajoute une branche de masques à cette même architecture.
- Détecteurs d'objets à une étape : SSD, RetinaNet et les modèles YOLO de YOLOv2 à YOLOv5 classifient et affinent chaque ancre en un seul passage. YOLOv2 a remplacé les ancres choisies manuellement par des groupes k-means calculés à partir des largeurs et hauteurs des boîtes d'entraînement.
Ultralytics YOLOv5 est fondé sur des ancres, avec 3 ancres sur chacun de ses trois niveaux de sortie. Il associe les annotations aux ancres selon leur forme : une ancre est candidate lorsque la largeur et la hauteur d'une annotation sont toutes deux à moins d'un facteur 4 de celles de l'ancre. Les variantes YOLOv5u du package Ultralytics remplacent cette tête par la tête séparée sans ancres introduite dans YOLOv8, une architecture que YOLO26 poursuit.
Détecteurs avec ou sans ancres#
Les détecteurs sans ancres prédisent une boîte à partir de chaque point de la grille, sous forme de distances jusqu'aux quatre bords, ou à partir de points clés, comme le centre des objets. Ils n'ont donc aucune taille d'ancre, aucun rapport d'aspect ni seuil IoU à régler et produisent un candidat par emplacement plutôt qu'un par forme d'ancre. ATSS a attribué l'écart de précision entre RetinaNet et FCOS, qui n'utilise pas d'ancres, à la manière dont chacun sélectionnait les exemples positifs pour l'entraînement : avec la même règle de sélection, les deux atteignaient la même précision, et RetinaNet obtenait 39,2 AP sur COCO minival avec 9 ancres par emplacement et 39,3 AP avec 1.










