(self, anchors, objectness, box_regression)
return result
Arguments:
            anchors: list[BoxList]
            objectness: tensor of size N, A, H, W
            box_regression: tensor of size N, A * 4, H, W
Arguments:
            anchors: list[BoxList]
            objectness: tensor of size N, A, H, W
            box_regression: tensor of size N, A * 4, H, W
Arguments : anchors : list [ BoxList ] objectness : tensor of size N A H W box_regression : tensor of size N A * 4 H W
def forward_for_single_feature_map(self, anchors, objectness, box_regression):
        """
        Arguments:
            anchors: list[BoxList]
            objectness: tensor of size N, A, H, W
            box_regression: tensor of size N, A * 4, H, W
        """
        device = objectness.device
        N, A, H, W = objectness.shape

        # put in the same format as anchors
        objectness = permute_and_flatten(objectness, N, A, 1, H, W).view(N, -1)
        objectness = objectness.sigmoid()

        box_regression = permute_and_flatten(box_regression, N, A, 4, H, W)

        num_anchors = A * H * W

        pre_nms_top_n = min(self.pre_nms_top_n, num_anchors)
        objectness, topk_idx = objectness.topk(pre_nms_top_n, dim=1, sorted=True)

        batch_idx = torch.arange(N, device=device)[:, None]
        box_regression = box_regression[batch_idx, topk_idx]

        image_shapes = [box.size for box in anchors]
        concat_anchors = torch.cat([a.bbox for a in anchors], dim=0)
        concat_anchors = concat_anchors.reshape(N, -1, 4)[batch_idx, topk_idx]

        proposals = self.box_coder.decode(
            box_regression.view(-1, 4), concat_anchors.view(-1, 4)
        )

        proposals = proposals.view(N, -1, 4)

        result = []
        for proposal, score, im_shape in zip(proposals, objectness, image_shapes):
            boxlist = BoxList(proposal, im_shape, mode="xyxy")
            boxlist.add_field("objectness", score)
            boxlist = boxlist.clip_to_image(remove_empty=False)
            boxlist = remove_small_boxes(boxlist, self.min_size)
            boxlist = boxlist_nms(
                boxlist,
                self.nms_thresh,
                max_proposals=self.post_nms_top_n,
                score_field="objectness",
            )
            result.append(boxlist)
        return result
def forward_for_single_feature_map ( self , anchors , objectness , box_regression ) : device = objectness . device N , A , H , W = objectness . shape # put in the same format as anchors objectness = permute_and_flatten ( objectness , N , A , 1 , H , W ) . view ( N , - 1 ) objectness = objectness . sigmoid ( ) box_regression = permute_and_flatten ( box_regression , N , A , 4 , H , W ) num_anchors = A * H * W pre_nms_top_n = min ( self . pre_nms_top_n , num_anchors ) objectness , topk_idx = objectness . topk ( pre_nms_top_n , dim = 1 , sorted = True ) batch_idx = torch . arange ( N , device = device ) [ : , None ] box_regression = box_regression [ batch_idx , topk_idx ] image_shapes = [ box . size for box in anchors ] concat_anchors = torch . cat ( [ a . bbox for a in anchors ] , dim = 0 ) concat_anchors = concat_anchors . reshape ( N , - 1 , 4 ) [ batch_idx , topk_idx ] proposals = self . box_coder . decode ( box_regression . view ( - 1 , 4 ) , concat_anchors . view ( - 1 , 4 ) ) proposals = proposals . view ( N , - 1 , 4 ) result = [ ] for proposal , score , im_shape in zip ( proposals , objectness , image_shapes ) : boxlist = BoxList ( proposal , im_shape , mode = "xyxy" ) boxlist . add_field ( "objectness" , score ) boxlist = boxlist . clip_to_image ( remove_empty = False ) boxlist = remove_small_boxes ( boxlist , self . min_size ) boxlist = boxlist_nms ( boxlist , self . nms_thresh , max_proposals = self . post_nms_top_n , score_field = "objectness" , ) result . append ( boxlist ) return result