YOLOv8如何在含多边形标签的测试集上计算mAP?
计算YOLOv8-OBB模型测试集mAP的方法
YOLOv8官方工具原生支持OBB(定向边界框)任务的评估,不需要额外第三方工具,直接通过命令行或Python API即可计算mAP,步骤如下:
1. 准备数据集配置文件
首先创建一个yaml配置文件(比如命名为test_dataset.yaml),用来指定测试集的结构和任务类型,内容如下:
path: ./test # 测试集根文件夹路径 test: images # 测试集图片子文件夹(相对于path) obb: true # 声明这是OBB任务 names: 0: 类别1 # 替换为你的实际类别名称,按标签中的类别ID顺序对应 1: 类别2 # 按需添加所有类别
2. 命令行方式评估
直接在终端运行以下命令:
yolo val model=best.pt data=test_dataset.yaml device=0 # device=0用GPU,用CPU则改为device=cpu
运行完成后,终端会输出整体mAP50、mAP50-95以及每个类别的AP值,同时会在runs/val/obb目录下生成详细的评估报告和可视化结果。
3. Python代码方式评估
如果需要集成到自定义脚本中,使用以下代码:
from ultralytics import YOLO # 加载预训练模型 model = YOLO('best.pt') # 执行评估任务,指定数据集配置和OBB任务类型 eval_results = model.val(data='test_dataset.yaml', task='obb', device='0') # 打印关键评估指标 print(f"mAP50: {eval_results.box.map50:.4f}") print(f"mAP50-95: {eval_results.box.map:.4f}")
注意事项
- 确保
labels文件夹中的txt标签符合YOLO-OBB格式:每行格式为class_id x1 y1 x2 y2 x3 y3 x4 y4,其中坐标是归一化到0-1的多边形四个顶点坐标。 - 如果测试集只有单个类别,yaml中的
names只需保留对应ID的类别即可。
内容的提问来源于stack exchange,提问作者HarriS
相关产品推荐
相关产品推荐

