From 5651ecf3f64bfb1c28b4f515c771f25fd980168d Mon Sep 17 00:00:00 2001 From: Jimmy Kim Date: Wed, 23 Dec 2020 10:32:41 -0800 Subject: [PATCH] meter usage logging implementation Summary: Ensures that all meter classes (e.g. precision, accuracy, recall) inheriting from the base class classy_vision/meters/classy_meter.py have their usage logged. This is done through the log_class_usage function defined in classy_vision/generic/util.py. Reviewed By: kazhang Differential Revision: D25680979 fbshipit-source-id: ebd12203a0f7be82551784c669fd5720d0075e1c --- classy_vision/meters/accuracy_meter.py | 2 ++ classy_vision/meters/classy_meter.py | 4 ++++ classy_vision/meters/precision_meter.py | 2 ++ classy_vision/meters/recall_meter.py | 2 ++ classy_vision/meters/video_meter.py | 1 + 5 files changed, 11 insertions(+) diff --git a/classy_vision/meters/accuracy_meter.py b/classy_vision/meters/accuracy_meter.py index ac33ce0aeb..d6f0ec2966 100644 --- a/classy_vision/meters/accuracy_meter.py +++ b/classy_vision/meters/accuracy_meter.py @@ -25,6 +25,8 @@ def __init__(self, topk): args: topk: list of int `k` values. """ + super().__init__() + assert isinstance(topk, list), "topk must be a list" assert len(topk) > 0, "topk list should have at least one element" assert [is_pos_int(x) for x in topk], "each value in topk must be >= 1" diff --git a/classy_vision/meters/classy_meter.py b/classy_vision/meters/classy_meter.py index 1eb4e70467..ddbbef371c 100644 --- a/classy_vision/meters/classy_meter.py +++ b/classy_vision/meters/classy_meter.py @@ -7,6 +7,7 @@ from typing import Any, Dict, Tuple import torch +from classy_vision.generic.util import log_class_usage class ClassyMeter: @@ -16,6 +17,9 @@ class ClassyMeter: This can include meters like Accuracy, Precision and Recall, etc. """ + def __init__(self): + log_class_usage("Meter", self.__class__) + @classmethod def from_config(cls, config: Dict[str, Any]) -> "ClassyMeter": """Instantiates a ClassyMeter using a configuration. diff --git a/classy_vision/meters/precision_meter.py b/classy_vision/meters/precision_meter.py index 749554ebfc..3192462bc9 100644 --- a/classy_vision/meters/precision_meter.py +++ b/classy_vision/meters/precision_meter.py @@ -26,6 +26,8 @@ def __init__(self, topk): args: topk: list of int `k` values. """ + super().__init__() + assert isinstance(topk, list), "topk must be a list" assert len(topk) > 0, "topk list should have at least one element" assert [is_pos_int(x) for x in topk], "each value in topk must be >= 1" diff --git a/classy_vision/meters/recall_meter.py b/classy_vision/meters/recall_meter.py index b2efb5170b..3fa8dddffe 100644 --- a/classy_vision/meters/recall_meter.py +++ b/classy_vision/meters/recall_meter.py @@ -25,6 +25,8 @@ def __init__(self, topk, target_is_one_hot=True, num_classes=None): args: topk: list of int `k` values. """ + super().__init__() + assert isinstance(topk, list), "topk must be a list" assert len(topk) > 0, "topk list should have at least one element" assert [is_pos_int(x) for x in topk], "each value in topk must be >= 1" diff --git a/classy_vision/meters/video_meter.py b/classy_vision/meters/video_meter.py index eff5f1ef02..1bfcac8c7a 100644 --- a/classy_vision/meters/video_meter.py +++ b/classy_vision/meters/video_meter.py @@ -27,6 +27,7 @@ def __init__(self, clips_per_video_train, clips_per_video_test): clips_per_video_train: No. of clips sampled per video at train time clips_per_video_test: No. of clips sampled per video at test time """ + super().__init__() self._clips_per_video_train = clips_per_video_train self._clips_per_video_test = clips_per_video_test