Skip to content

AnchorDecoupledHead

Decoupled detection head with anchors based on Focal Loss for Dense Object Detection

We have named the detection head of RetinaNet as AnchorDecoupledHead to represent it in a more general term. AnchorDecoupledHead consists of a box regression head and a classification head for the given intermediate features, predicting detection boxes for the anchors at each feature's pixel location. Additionally, we provide the option to adjust the number of convolution layers used in the heads through the num_layers value, it is equivalent with RetinaNet when set to 4.

Compatibility matrix

Supporting backbones Supporting necks torch.fx NetsPresso
ResNet
MobileNetV3
MixNet
CSPDarkNet
MobileViT
MixTransformer
EfficientFormer
FPN
YOLOPAFPN
Supported Supported

Field list

Field Description
name (str) Name must be "retinanet_head" to use RetinaNetHead head.
params.anchor_sizes (list[list[int]]) Default anchor sizes for each intermediate feature.
params.aspect_ratios (list[float]) List of aspect ratio for each anchor.
params.num_layers (int) The number of convolution layers of regression and classification head.
params.norm_layer (str) Normalization type for the head.
params.topk_candidates (int) The number of boxes to retain based on score during the decoding step.
params.score_thresh (float) Score thresholding value applied during the decoding step.
params.nms_thresh (float) IoU threshold for non-maximum suppression.
params.class_agnostic (bool) Whether to process class-agnostic non-maximum suppression.

Model configuration example

Anchor-based decoupled detection head
model:
  architecture:
    head:
      name: anchor_decoupled_head
      params:
        anchor_sizes: [[32,], [64,], [128,], [256,]]
        aspect_ratios: [0.5, 1.0, 2.0]
        num_layers: 1
        norm_type: batch_norm
        # postprocessor - decode
        topk_candidates: 1000
        score_thresh: 0.05
        # postprocessor - nms
        nms_thresh: 0.45
        class_agnostic: False