From 485da42273839d20ea6bdaf142fd02c1027aba61 Mon Sep 17 00:00:00 2001 From: Dhruv Nair Date: Thu, 6 Jul 2023 21:36:28 +0530 Subject: [PATCH] Comet updates (#11818) * update colab link * fix path check for datasets * apply yapf * run precommit hooks * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- utils/loggers/comet/README.md | 2 +- utils/loggers/comet/__init__.py | 28 +++++++++++++++++++--------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/utils/loggers/comet/README.md b/utils/loggers/comet/README.md index aee8d16a336c..3ad52b01b4e9 100644 --- a/utils/loggers/comet/README.md +++ b/utils/loggers/comet/README.md @@ -59,7 +59,7 @@ Check out an example of a [completed run here](https://www.comet.com/examples/co Or better yet, try it out yourself in this Colab Notebook -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1RG0WOQyxlDlo5Km8GogJpIEJlg_5lyYO?usp=sharing) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/comet-ml/comet-examples/blob/master/integrations/model-training/yolov5/notebooks/Comet_and_YOLOv5.ipynb) # Log automatically diff --git a/utils/loggers/comet/__init__.py b/utils/loggers/comet/__init__.py index 839fcf907e8f..ad7fa5521c6d 100644 --- a/utils/loggers/comet/__init__.py +++ b/utils/loggers/comet/__init__.py @@ -42,7 +42,7 @@ COMET_UPLOAD_DATASET = os.getenv('COMET_UPLOAD_DATASET', 'false').lower() == 'true' # Evaluation Settings -COMET_LOG_CONFUSION_MATRIX = os.getenv('COMET_LOG_CONFUSION_MATRIX', 'true').lower() == 'true' +COMET_LOG_CONFUSION_MATRIX = (os.getenv('COMET_LOG_CONFUSION_MATRIX', 'true').lower() == 'true') COMET_LOG_PREDICTIONS = os.getenv('COMET_LOG_PREDICTIONS', 'true').lower() == 'true' COMET_MAX_IMAGE_UPLOADS = int(os.getenv('COMET_MAX_IMAGE_UPLOADS', 100)) @@ -51,10 +51,10 @@ IOU_THRES = float(os.getenv('IOU_THRES', 0.6)) # Batch Logging Settings -COMET_LOG_BATCH_METRICS = os.getenv('COMET_LOG_BATCH_METRICS', 'false').lower() == 'true' +COMET_LOG_BATCH_METRICS = (os.getenv('COMET_LOG_BATCH_METRICS', 'false').lower() == 'true') COMET_BATCH_LOGGING_INTERVAL = os.getenv('COMET_BATCH_LOGGING_INTERVAL', 1) COMET_PREDICTION_LOGGING_INTERVAL = os.getenv('COMET_PREDICTION_LOGGING_INTERVAL', 1) -COMET_LOG_PER_CLASS_METRICS = os.getenv('COMET_LOG_PER_CLASS_METRICS', 'false').lower() == 'true' +COMET_LOG_PER_CLASS_METRICS = (os.getenv('COMET_LOG_PER_CLASS_METRICS', 'false').lower() == 'true') RANK = int(os.getenv('RANK', -1)) @@ -137,7 +137,7 @@ def __init__(self, opt, hyp, run_id=None, job_type='Training', **experiment_kwar self.comet_log_predictions = COMET_LOG_PREDICTIONS if self.opt.bbox_interval == -1: - self.comet_log_prediction_interval = 1 if self.opt.epochs < 10 else self.opt.epochs // 10 + self.comet_log_prediction_interval = (1 if self.opt.epochs < 10 else self.opt.epochs // 10) else: self.comet_log_prediction_interval = self.opt.bbox_interval @@ -232,7 +232,8 @@ def check_dataset(self, data_file): with open(data_file) as f: data_config = yaml.safe_load(f) - if data_config['path'].startswith(COMET_PREFIX): + path = data_config.get('path') + if path and path.startswith(COMET_PREFIX): path = data_config['path'].replace(COMET_PREFIX, '') data_dict = self.download_dataset_artifact(path) @@ -313,8 +314,16 @@ def add_assets_to_artifact(self, artifact, path, asset_path, split): image_logical_path, label_logical_path = map(lambda x: os.path.relpath(x, path), [image_file, label_file]) try: - artifact.add(image_file, logical_path=image_logical_path, metadata={'split': split}) - artifact.add(label_file, logical_path=label_logical_path, metadata={'split': split}) + artifact.add( + image_file, + logical_path=image_logical_path, + metadata={'split': split}, + ) + artifact.add( + label_file, + logical_path=label_logical_path, + metadata={'split': split}, + ) except ValueError as e: logger.error('COMET ERROR: Error adding file to Artifact. Skipping file.') logger.error(f'COMET ERROR: {e}') @@ -476,8 +485,9 @@ def on_val_end(self, nt, tp, fp, p, r, f1, ap, ap50, ap_class, confusion_matrix) 'f1': f1[i], 'true_positives': tp[i], 'false_positives': fp[i], - 'support': nt[c]}, - prefix=class_name) + 'support': nt[c], }, + prefix=class_name, + ) if self.comet_log_confusion_matrix: epoch = self.experiment.curr_epoch