YOLOv5训练损失、精度、mAP绘图功能 | 支持多模型对比,多结果绘在一个图片(消融实验、科研必备

YOLOv5训练损失、精度、mAP绘图功能 | 支持多模型对比,多结果绘在一个图片(消融实验、科研必备

一、本文介绍

本文给大家带来的是YOLOv5系列的绘图功能,我将向大家介绍YOLO系列的绘图功能。我们在进行实验时,经常需要比较多个结果,针对这一问题,我写了点代码来解决这个问题,它可以根据训练结果绘制损失(loss)和mAP(平均精度均值)的对比图。这个工具不仅支持多个文件的对比分析,还允许大家在现有代码的基础上进行修,从而达到数据可视化的功能,大家也可以将对比图来放在论文中进行对比也是非常不错的选择。
效果图
在这里插入图片描述
在这里插入图片描述

二、核心代码

import os
import pandas as pd
import matplotlib.pyplot as plt
 
 
def plot_metrics_and_loss(experiment_names, metrics_info, loss_info, metrics_subplot_layout, loss_subplot_layout,
                          metrics_figure_size=(15, 10), loss_figure_size=(15, 10), base_directory='runs/train'):
    # Plot metrics
    plt.figure(figsize=metrics_figure_size)
    for i, (metric_name, title) in enumerate(metrics_info):
        plt.subplot(*metrics_subplot_layout, i + 1)
        for name in experiment_names:
            file_path = os.path.join(base_directory, name, 'results.csv')
            data = pd.read_csv(file_path)
            column_name = [col for col in data.columns if col.strip() == metric_name][0]
            plt.plot(data[column_name], label=name)
        plt.xlabel('Epoch')
        plt.title(title)
        plt.legend()
    plt.tight_layout()
    metrics_filename = 'metrics_curves.png'
    plt.savefig(metrics_filename)
    plt.show()
 
    # Plot loss
    plt.figure(figsize=loss_figure_size)
    for i, (loss_name, title) in enumerate(loss_info):
        plt.subplot(*loss_subplot_layout, i + 1)
        for name in experiment_names:
            file_path = os.path.join(base_directory, name, 'results.csv')
            data = pd.read_csv(file_path)
            column_name = [col for col in data.columns if col.strip() == loss_name][0]
            plt.plot(data[column_name], label=name)
        plt.xlabel('Epoch')
        plt.title(title)
        plt.legend()
    plt.tight_layout()
    loss_filename = 'loss_curves.png'
    plt.savefig(loss_filename)
    plt.show()
 
    return metrics_filename, loss_filename
 
 
# Metrics to plot
metrics_info = [
    ('metrics/precision', 'Precision'),
    ('metrics/recall', 'Recall'),
    ('metrics/mAP_0.5', 'mAP at IoU=0.5'),
    ('metrics/mAP_0.5:0.95', 'mAP for IoU Range 0.5-0.95')
]
 
# Loss to plot
loss_info = [
    ('train/box_loss', 'Training Box Loss'),
    ('train/cls_loss', 'Training Classification Loss'),
    ('train/obj_loss', 'Training OBJ Loss'),
    ('val/box_loss', 'Validation Box Loss'),
    ('val/cls_loss', 'Validation Classification Loss'),
    ('val/obj_loss', 'Validation obj Loss')
]
 
# Plot the metrics and loss from multiple experiments
metrics_filename, loss_filename = plot_metrics_and_loss(
    experiment_names=['exp40', 'exp38'],
    metrics_info=metrics_info,
    loss_info=loss_info,
    metrics_subplot_layout=(2, 2),
    loss_subplot_layout=(2, 3)
)

三、使用方法

使用方式非常简单,我们首先在yolo文件夹根目录下创建一个python文件,将核心代码粘贴进去,代码其中experiment_names这个参数就代表我们的每个训练结果的名字, 我们只需要修改这个即可,我这里就是五个结果进行对比,修改完成之后大家运行该文件即可。在这里插入图片描述

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
YOLOv5 训练过程中,可以使用以下指令来得到训练结果中的 AP 值和 mAP 值: ``` python train.py --data coco.yaml --cfg models/yolov5s.yaml --weights '' --batch-size 64 --epochs 300 --device 0,1,2,3 --multi-scale --cache-images --name yolov5s_results --project yolov5_results --exist-ok --evolve ``` 其中,`--data` 指定数据集的配置文件,`--cfg` 指定模型的配置文件,`--weights` 指定预训练模型的权重文件,`--batch-size` 指定每个批次的图像数量,`--epochs` 指定训练的轮数,`--device` 指定训练使用的 GPU 设备编号,`--multi-scale` 表示使用多尺度训练,`--cache-images` 表示将图像缓存到内存中以加快训练速度,`--name` 指定训练结果保存的文件夹名称,`--project` 指定训练结果保存的项目名称,`--exist-ok` 表示如果训练结果文件夹已存在,则不会报错,而是继续训练,`--evolve` 表示进行超参数优化。 在训练完成后,可以使用以下指令来计算 AP 值和 mAP 值: ``` python val.py --data coco.yaml --weights runs/train/yolov5s_results/weights/best.pt --task val --img-size 640 --iou 0.65 --half --conf 0.001 --project yolov5_results --name yolov5s_results --exist-ok ``` 其中,`--data` 指定数据集的配置文件,`--weights` 指定训练完成后保存的模型权重文件,`--task` 指定需要进行的任务,`--img-size` 指定输入图像的尺寸,`--iou` 指定 IoU 阈值,`--half` 表示使用半精度浮点数计算,`--conf` 指定预测框的置信度阈值,`--project` 指定训练结果保存的项目名称,`--name` 指定训练结果保存的文件夹名称,`--exist-ok` 表示如果结果文件夹已存在,则不会报错,而是覆盖其中的文件。 计算完成后,AP 值和 mAP 值将会在控制台输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南栀北辰SDN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值