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

增强的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 自动选择合适的解析策略。

集成状态

已完成的集成

  1. 训练任务 (trainAsync) - 完全集成
  2. 检测 "Results saved to" - 所有任务类型都支持
  3. 多任务类型解析 - 支持分类、检测、分割

⚠️ 待完成的集成

虽然代码逻辑已经增强,但以下方法中的 "Results saved to" 检测还需要添加:

  1. 验证方法 (validate) - 需要在日志读取循环中添加检测
  2. 预测方法 (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解析失败不会影响任务完成状态
  • 支持部分指标解析,即使某些字段缺失
  • 详细的日志记录便于调试

下一步

需要为 validatepredict 方法添加相同的 "Results saved to" 检测逻辑,以实现完整的功能覆盖。