项目场景:
对mmdetection框架下训练好的log.json文件进行评估。
问题描述
使用框架底下自带的评估文件,不能对loss进行评估。也就是文件:tools/analysis_tools/analyze_logs.py
解决方案:
自己做了评估loss的代码,目前只能评估下图红色箭头标示类,其余可在mmdetection自带的analyze_logs.py文件评估。
代码如下:
import json
import matplotlib.pyplot as plt# 初始化空列表以存储所有的数据
data = []# 打开并逐行读取JSON文件
with open('E:/Deeplearning/ChangeDetection/Mmdetection/Mmdetection/loss-log/20240724_100019.log.json', 'r') as file:for line in file:# 解析每行的JSON数据try:entry = json.loads(line)data.append(entry)except json.JSONDecodeError as e:print(f"Error parsing line: {e}")# 初始化
iterations = []
loss_cls_values = []# 设置每个epoch的初始偏移值
epoch_offset = 0# 记录当前epoch
current_epoch = 1for entry in data:if 'iter' in entry and 'loss_cls' in entry:# 检查是否进入了新的epochif entry['epoch'] > current_epoch:current_epoch = entry['epoch']epoch_offset += 700 # 700是每个epoch的迭代数# 计算当前iter的全局值global_iter = epoch_offset + entry['iter']iterations.append(global_iter)loss_cls_values.append(entry['loss_cls'])# 绘制loss_cls的损失图
plt.figure(figsize=(10, 5))
plt.plot(iterations, loss_cls_values, label='loss_cls', color='blue')
plt.xlabel('Iterations')
plt.ylabel('Loss')
plt.title('Loss_cls over Iterations')
plt.legend()
plt.grid(True)
plt.show()