项目场景:
对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 = 1
for entry in data:
if 'iter' in entry and 'loss_cls' in entry:
# 检查是否进入了新的epoch
if 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()