| import json |
| import pandas as pd |
| import matplotlib.pyplot as plt |
| import os |
|
|
| |
| try: |
| with open('outputs/classification/training_history.json', 'r') as f: |
| cls_history = json.load(f) |
| |
| epochs = [x['epoch'] for x in cls_history] |
| train_loss = [x['train_loss'] for x in cls_history] |
| val_loss = [x['val_loss'] for x in cls_history] |
| val_auc = [x['val_auc_roc'] for x in cls_history] |
|
|
| plt.figure(figsize=(12, 5)) |
| plt.subplot(1, 2, 1) |
| plt.plot(epochs, train_loss, label='Train Loss') |
| plt.plot(epochs, val_loss, label='Val Loss') |
| plt.title('Classification Loss (ViT+LoRA)') |
| plt.xlabel('Epoch') |
| plt.ylabel('Loss') |
| plt.legend() |
|
|
| plt.subplot(1, 2, 2) |
| plt.plot(epochs, val_auc, label='Val AUC-ROC', color='green') |
| plt.title('Classification AUC-ROC') |
| plt.xlabel('Epoch') |
| plt.ylabel('AUC-ROC') |
| plt.legend() |
|
|
| plt.tight_layout() |
| plt.savefig('classification_metrics.png') |
| plt.close() |
| except Exception as e: |
| print("Error plotting classification:", e) |
|
|
|
|
| import csv |
|
|
| |
| try: |
| epochs = [] |
| mAP50 = [] |
| mAP50_95 = [] |
| |
| with open('runs/detect/outputs/detection/yolov8_tn50002/results.csv', 'r') as f: |
| reader = csv.DictReader(f) |
| |
| reader.fieldnames = [name.strip() for name in reader.fieldnames] |
| |
| for row in reader: |
| epochs.append(int(row['epoch'])) |
| mAP50.append(float(row['metrics/mAP50(B)'])) |
| mAP50_95.append(float(row['metrics/mAP50-95(B)'])) |
| |
| plt.figure(figsize=(8, 5)) |
| plt.plot(epochs, mAP50, label='mAP@50') |
| plt.plot(epochs, mAP50_95, label='mAP@50-95') |
| plt.title('Detection mAP (YOLOv8)') |
| plt.xlabel('Epoch') |
| plt.ylabel('mAP') |
| plt.legend() |
| plt.tight_layout() |
| plt.savefig('detection_metrics.png') |
| plt.close() |
| except Exception as e: |
| print("Error plotting detection:", e) |
|
|
| print("Plotting complete.") |
|
|