"Есть изображения, в которых у меня есть более 100 объектов для классификации."
maxDets = 100 не означает, что он будет классифицировать только 100 изображений, но относится к % AverageRecall given 100 detections per image
inshort maxDets рассчитывается по метрикам не актуально нет. классифицированных изображений.
для получения дополнительной информации посетите: http://cocodataset.org/#detection -eval
Отзыв графика Tensorboard
https://github.com/matterport/Mask_RCNN/issues/663
# Limit to max_per_image detections **over all classes**
if number_of_detections > self.detections_per_img > 0:
cls_scores = result.get_field("scores")
image_thresh, _ = torch.kthvalue(
cls_scores.cpu(), number_of_detections - self.detections_per_img + 1
)
keep = cls_scores >= image_thresh.item()
keep = torch.nonzero(keep).squeeze(1)
result = result[keep]
return result
в соответствии с этим фрагментом кода я обнаружил, что он проверяет номер. обнаружения, так что model.roi_heads.detections_per_img=300
является правильным для вашей цели. И я не нашел много надлежащей документации по maxdets, но я думаю, что приведенный выше код должен работать.
# non-maximum suppression, independently done per class
keep = box_ops.batched_nms(boxes, scores, labels, self.nms_thresh)
# keep only topk scoring predictions
keep = keep[:self.detections_per_img]
этот фрагмент кода говорит о том, что мы можем отфильтровать только некоторые главные обнаружения, которые мы хотим иметь в нашей модели.