From 9256ffaa4da57cd86d0a7fde2290db3f646675fe Mon Sep 17 00:00:00 2001 From: Marcin Ostrowski Date: Mon, 3 Mar 2025 23:22:35 +0100 Subject: [PATCH] Add 'with EventStorage()' context --- detectron2/modeling/proposal_generator/rpn.py | 8 ++++---- detectron2/modeling/roi_heads/fast_rcnn.py | 12 ++++++------ detectron2/modeling/roi_heads/roi_heads.py | 12 ++++++------ 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/detectron2/modeling/proposal_generator/rpn.py b/detectron2/modeling/proposal_generator/rpn.py index 99cd536d2f..eadff37a34 100644 --- a/detectron2/modeling/proposal_generator/rpn.py +++ b/detectron2/modeling/proposal_generator/rpn.py @@ -7,7 +7,7 @@ from detectron2.config import configurable from detectron2.layers import Conv2d, ShapeSpec, cat from detectron2.structures import Boxes, ImageList, Instances, pairwise_iou -from detectron2.utils.events import get_event_storage +from detectron2.utils.events import EventStorage from detectron2.utils.memory import retry_if_cuda_oom from detectron2.utils.registry import Registry @@ -398,9 +398,9 @@ def losses( pos_mask = gt_labels == 1 num_pos_anchors = pos_mask.sum().item() num_neg_anchors = (gt_labels == 0).sum().item() - storage = get_event_storage() - storage.put_scalar("rpn/num_pos_anchors", num_pos_anchors / num_images) - storage.put_scalar("rpn/num_neg_anchors", num_neg_anchors / num_images) + with EventStorage() as storage: + storage.put_scalar("rpn/num_pos_anchors", num_pos_anchors / num_images) + storage.put_scalar("rpn/num_neg_anchors", num_neg_anchors / num_images) localization_loss = _dense_box_regression_loss( anchors, diff --git a/detectron2/modeling/roi_heads/fast_rcnn.py b/detectron2/modeling/roi_heads/fast_rcnn.py index 039e2490fa..4e4436c8a2 100644 --- a/detectron2/modeling/roi_heads/fast_rcnn.py +++ b/detectron2/modeling/roi_heads/fast_rcnn.py @@ -10,7 +10,7 @@ from detectron2.layers import ShapeSpec, batched_nms, cat, cross_entropy, nonzero_tuple from detectron2.modeling.box_regression import Box2BoxTransform, _dense_box_regression_loss from detectron2.structures import Boxes, Instances -from detectron2.utils.events import get_event_storage +from detectron2.utils.events import EventStorage __all__ = ["fast_rcnn_inference", "FastRCNNOutputLayers"] @@ -108,11 +108,11 @@ def _log_classification_stats(pred_logits, gt_classes, prefix="fast_rcnn"): num_accurate = (pred_classes == gt_classes).nonzero().numel() fg_num_accurate = (fg_pred_classes == fg_gt_classes).nonzero().numel() - storage = get_event_storage() - storage.put_scalar(f"{prefix}/cls_accuracy", num_accurate / num_instances) - if num_fg > 0: - storage.put_scalar(f"{prefix}/fg_cls_accuracy", fg_num_accurate / num_fg) - storage.put_scalar(f"{prefix}/false_negative", num_false_negative / num_fg) + with EventStorage() as storage: + storage.put_scalar(f"{prefix}/cls_accuracy", num_accurate / num_instances) + if num_fg > 0: + storage.put_scalar(f"{prefix}/fg_cls_accuracy", fg_num_accurate / num_fg) + storage.put_scalar(f"{prefix}/false_negative", num_false_negative / num_fg) def fast_rcnn_inference_single_image( diff --git a/detectron2/modeling/roi_heads/roi_heads.py b/detectron2/modeling/roi_heads/roi_heads.py index 2f4546cd0c..4f9d09c314 100644 --- a/detectron2/modeling/roi_heads/roi_heads.py +++ b/detectron2/modeling/roi_heads/roi_heads.py @@ -9,7 +9,7 @@ from detectron2.config import configurable from detectron2.layers import ShapeSpec, nonzero_tuple from detectron2.structures import Boxes, ImageList, Instances, pairwise_iou -from detectron2.utils.events import get_event_storage +from detectron2.utils.events import EventStorage from detectron2.utils.registry import Registry from ..backbone.resnet import BottleneckBlock, ResNet @@ -115,8 +115,8 @@ def select_proposals_with_visible_keypoints(proposals: List[Instances]) -> List[ all_num_fg.append(selection_idxs.numel()) ret.append(proposals_per_image[selection_idxs]) - storage = get_event_storage() - storage.put_scalar("keypoint_head/num_fg_samples", np.mean(all_num_fg)) + with EventStorage() as storage: + storage.put_scalar("keypoint_head/num_fg_samples", np.mean(all_num_fg)) return ret @@ -295,9 +295,9 @@ def label_and_sample_proposals( proposals_with_gt.append(proposals_per_image) # Log the number of fg/bg samples that are selected for training ROI heads - storage = get_event_storage() - storage.put_scalar("roi_head/num_fg_samples", np.mean(num_fg_samples)) - storage.put_scalar("roi_head/num_bg_samples", np.mean(num_bg_samples)) + with EventStorage() as storage: + storage.put_scalar("roi_head/num_fg_samples", np.mean(num_fg_samples)) + storage.put_scalar("roi_head/num_bg_samples", np.mean(num_bg_samples)) return proposals_with_gt