You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.2 KiB
3.2 KiB
增强的YOLO结果解析功能
问题解决
用户提到分类任务中 results.csv 文件格式不同,可能没有 mAP50-95 指标。现已增强解析功能以支持多种任务类型。
主要改进
1. 增强的 parseResultsCsv 方法
现在支持不同任务类型的CSV格式解析:
分类任务 (classify)
- 主要指标:accuracy, top1_acc, top5_acc
- CSV格式示例:
epoch,train/loss,val/loss,metrics/accuracy,metrics/top1_acc,metrics/top5_acc 0,1.234,0.987,0.8521,0.8521,0.9543 - 解析逻辑:
- 优先解析
accuracy作为主要准确率 - 同时记录 Top-1 和 Top-5 准确率
- 保存格式:
accuracy:0.8521
- 优先解析
检测任务 (detect)
- 主要指标:precision, recall, mAP50, mAP50-95
- CSV格式示例:
epoch,train/box_loss,train/cls_loss,train/dfl_loss,metrics/precision,metrics/recall,metrics/mAP50,metrics/mAP50-95 0,0.123,0.456,0.789,0.8521,0.7432,0.8123,0.7654 - 保存格式:
precision:0.8521,recall:0.7432,map:0.7654
分割任务 (segment)
- 主要指标:同检测任务
- 处理方式:与检测任务相同
2. 新增方法
parseGenericResults
- 用于处理未知任务类型
- 通用解析逻辑,尝试识别常见的指标名称
saveClassificationAccuracyToDatabase
- 专门用于保存分类任务的准确率
- 区别于检测/分割任务的保存方法
3. 智能任务类型识别
String taskType = config.getTaskType();
if (taskType == null) {
taskType = "detect"; // 默认为检测任务
}
根据 YoloConfig.taskType 自动选择合适的解析策略。
集成状态
✅ 已完成的集成
- 训练任务 (trainAsync) - 完全集成
- 检测 "Results saved to" - 所有任务类型都支持
- 多任务类型解析 - 支持分类、检测、分割
⚠️ 待完成的集成
虽然代码逻辑已经增强,但以下方法中的 "Results saved to" 检测还需要添加:
- 验证方法 (validate) - 需要在日志读取循环中添加检测
- 预测方法 (predict) - 需要在日志读取循环中添加检测
使用示例
分类任务输出
检测到YOLO结果保存路径: D:\data\train\classify\runs\classify\train1
分类任务解析到准确率(Accuracy): 0.8521
分类任务解析到Top-1准确率: 0.8521
分类任务解析到Top-5准确率: 0.9543
已保存分类任务准确率到数据库 - 训练ID: 12345, 准确率: accuracy:0.8521
检测任务输出
检测到YOLO结果保存路径: D:\data\train\detect\runs\detect\train1
检测/分割任务解析到识别率 - Precision: 0.8521, Recall: 0.7432, mAP: 0.7654
已保存识别率到数据库 - 训练ID: 12346, 识别率: precision:0.8521,recall:0.7432,map:0.7654
数据库字段格式
分类任务
rate: "accuracy:0.8521"
检测/分割任务
rate: "precision:0.8521,recall:0.7432,map:0.7654"
错误处理
- 如果CSV解析失败,不会影响任务完成状态
- 支持部分指标解析,即使某些字段缺失
- 详细的日志记录便于调试
下一步
需要为 validate 和 predict 方法添加相同的 "Results saved to" 检测逻辑,以实现完整的功能覆盖。