class_docstr: The head used in :paper:`fcos`. It adds an additional centerness
  prediction branch on top of :class:`RetinaNetHead`.
class_docstr_tok: ["The","head","used","in",":","paper",":","`","fcos","`",".","It","adds","an","additional","centerness","prediction","branch","on","top","of",":","class",":","`","RetinaNetHead","`","."]
code: def forward(self, features):
      assert len(features) == self._num_features
      logits = []
      bbox_reg = []
      ctrness = []
      for feature in features:
          logits.append(self.cls_score(self.cls_subnet(feature)))
          bbox_feature = self.bbox_subnet(feature)
          bbox_reg.append(self.bbox_pred(bbox_feature))
          ctrness.append(self.ctrness(bbox_feature))
      return logits, bbox_reg, ctrness
  
imports: import logging
  from typing import List, Optional, Tuple
  import torch
  from fvcore.nn import sigmoid_focal_loss_jit
  from torch import nn
  from torch.nn import functional
  from detectron2.layers import ShapeSpec, batched_nms
  from detectron2.structures import Boxes, ImageList, Instances, pairwise_point_box_distance
  from detectron2.utils.events import get_event_storage
  from ..anchor_generator import DefaultAnchorGenerator
  from ..backbone import Backbone
  from ..box_regression import Box2BoxTransformLinear, _dense_box_regression_loss
  from .dense_detector import DenseDetector
  from .retinanet import RetinaNetHead
label_desc: Use image node_id 2 for calling the FCOSHead obj's underlying member method code with example usage: obj.forward(features) and returns: logits,  bbox_reg,  ctrness