From 45838ec080a416aff8f8a9d4ba900c8eb8d9ee6c Mon Sep 17 00:00:00 2001 From: Alex Burlacu Date: Thu, 23 Mar 2023 19:08:40 +0200 Subject: [PATCH] Add an example of model with plots --- examples/reporting/model_reporting_plots.py | 62 +++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 examples/reporting/model_reporting_plots.py diff --git a/examples/reporting/model_reporting_plots.py b/examples/reporting/model_reporting_plots.py new file mode 100644 index 00000000..ecba52a1 --- /dev/null +++ b/examples/reporting/model_reporting_plots.py @@ -0,0 +1,62 @@ +# ClearML - Example of manual model reporting +from clearml import Task, OutputModel +from clearml.utilities.plotly_reporter import SeriesInfo +import pandas as pd +import numpy as np + +# Connecting ClearML with the current process, +task = Task.init(project_name="examples", task_name="Model reporting plots example") + +# Create output model and connect it to the task +output_model = OutputModel(task=task) + +# Optional: add labels to the model, so we do not forget +labels = {"background": 0, "cat": 1, "dog": 2} +output_model.update_labels(labels) + +# Register an already existing Model file somewhere +model_url = "https://github.com/ultralytics/yolov5/releases/download/v6.2/yolov5x6.pt" +output_model.update_weights(register_uri=model_url) + +output_model.report_scalar("Reported Metrics", "Val - mAP@50", 72.7, 0) +output_model.report_single_value("Total epochs", 8) + +df = pd.DataFrame( + { + "Model": ["YOLOv5n", "YOLOv5s", "YOLOv5m6", "YOLOv5x6"], + "size (pixels)": [640, 640, 1280, 1280], + "Val - mAP@50-95": [28.0, 37.4, 51.3, 55.0], + "CPU Speed b1 (ms)": [45, 98, 887, 3136], + } +) +output_model.report_table( + title="Summary Table", series="Comparison", iteration=0, table_plot=df +) + +output_model.report_line_plot( + title="Accuracy", + series=[ + SeriesInfo( + name="Validation", + data=np.array( + [ + [0, 0.3], + [1, 0.55], + [2, 0.7], + [3, 0.77], + [4, 0.8], + [5, 0.816], + [6, 0.822], + [7, 0.829], + ] + ), + ) + ], + xaxis="Iteration", + yaxis="Validation Accuracy", +) + +# Or upload a local model file to be later used +# output_model.update_weights(weights_filename="/path/to/file.onnx") + +print("Model registration completed")