coco数据集格式计算mAP的python脚本

news/2024/10/5 21:50:15/

目录

  • 背景说明
  • COCOeval 计算mAP
  • txt文件转换为coco json 格式
  • 自定义数据集标注

背景说明

在完成YOLOv5模型移植,运行在板端后,通常需要衡量板端运行的mAP

一般需要两个步骤
步骤一:在板端批量运行得到目标检测结果,可保存为yolo的txt格式也可保存为json格式;
目标检测任务中常用的数据集格式(voc、coco、yolo)
步骤二:计算预测结果 和 标注结果的mAP,本文重点介绍该步骤。

探索历程(可略过):如果想基于预测的txt计算mAP,推荐 Cartucho/mAP, 由于开发时间有限,最终还是决定基于json 格式进行计算。

COCOeval_mAP_13">COCOeval 计算mAP

经验证该脚本不局限coco 80分类,只要满足json数据集格式,即可使用该脚本进行计算

python"># get_map.py
import argparse
import glob
import jsonif __name__ == "__main__":import argparseimport globimport jsonif __name__ == "__main__":parser = argparse.ArgumentParser(description='')parser.add_argument('--result-json', type=str, help='Json of inference results.')parser.add_argument('--benchmark-json', type=str, help='Json of labels.')args = parser.parse_args()result_json = args.result_jsoninstances_train2017_json = args.benchmark_jsonwith open(result_json, 'r') as r:result = json.load(r)def get_img_id(item):return item["image_id"]imgIds = set(map(get_img_id, result))try:from pycocotools.coco import COCOfrom pycocotools.cocoeval import COCOevalcocoGt = COCO(glob.glob(instances_train2017_json)[0])  # initialize coco ground truth apicocoDt = cocoGt.loadRes(result_json)  # initialize coco pred apicocoEval = COCOeval(cocoGt, cocoDt, 'bbox')cocoEval.params.imgIds = list(imgIds)  # image IDs to evaluatecocoEval.evaluate()cocoEval.accumulate()cocoEval.summarize()map, map50 = cocoEval.stats[:2]  # update results(mAP@0.5:0.95, mAP@0.5)except Exception as e:print('ERROR: pycocotools unable to run:%s' % e)

执行的命令行脚本如下

python get_map.py  --result-json yolov5s_predictions.json --benchmark-json  instances_val2017.json

输出截图如下,和官方的效果一致
在这里插入图片描述
在这里插入图片描述

  • instances_val2017.json为COCO标准数据集,下载命令如下
# 下载标注文件(2017 Annotations)
wget http://images.cocodataset.org/annotations/annotations_trainval2017.zip
  • yolov5s_predictions.json为yolov5 预测的数据集
    执行YOLOv5源码中的验证脚本val.txt即可得到,需要注意,在运行时需要指定–save-json保存输出结果的json文件,指定–save-conf在json文件中会保存预测框置信度。
python val.py --save-json --save-conf

数据格式如下
链接: https://pan.baidu.com/s/1udt4iPGEL0glxojS3OmklQ 提取码: asdc
在这里插入图片描述

txt文件转换为coco json 格式

  1. 训练的txt文件,数据格式如下

58 0.389578 0.416103 0.038594 0.163146
62 0.127641 0.505153 0.233313 0.2227

对应【标签 x y w h】

模型直接预测得到的txt文件,数据格式如下

46 0.0451243 0.215648 0.0848332 0.431296 0.725234
46 0.102373 0.546547 0.198804 0.326551 0.70208

对应【标签 conf x y w h】

  1. json文件中数据格式如下

{
“image_id”: 5,
“category_id”: 0,
“bbox”: [
280.697,
41.816,
218.932,
349.688
],
“score”: 0.94485
},
其中bbbox为映射到原始图片的值,同样需要score分数

将预测的txt文件转换为json格式

自定义数据集标注

1)准备图片
2)使用LableImg标注工具
对目标进行标注
[图片]
标注结果保存为VOC格式。
可将VOC格式转换为JSON


http://www.ppmy.cn/news/1473789.html

相关文章

【HICE】转发服务器实验

1.在本地主机上操作 2.在客户端操作设置主机的IP地址为dns 3.测试,客户机是否能ping通

mac|idea导入通义灵码插件

官方教程:通义灵码下载安装指南_智能编码助手_AI编程_云效(Apsara Devops)-阿里云帮助中心 下载插件: ⇩ TONGYI Lingma - JetBrains 结果如下: 选择apply、ok,会出现弹窗,点击登录 可以实现:生成单元测…

Towards Deep Learning Models Resistant to Adversarial Attacks

这篇论文的主要内容是关于开发对抗攻击具有抗性的深度学习模型。对抗攻击是通过对输入数据进行微小且精心设计的扰动,诱使深度学习模型做出错误的预测。这种攻击在图像识别、语音识别和自然语言处理等任务中尤为突出。 这篇论文的主要内容是关于开发对抗攻击具有抗…

【音视频 | RTSP】RTSP协议详解 及 抓包例子解析(详细而不赘述)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

Unity 简单载具路线 Waypoint 导航

前言 在游戏开发和导航系统中,"waypoint" 是指路径中的一个特定位置或点。它通常用于定义一个物体或角色在场景中移动的目标位置或路径的一部分。通过一系列的 waypoints,可以指定复杂的移动路径和行为。以下是一些 waypoint 的具体用途&…

每周算法:无向图的双连通分量

题目链接 冗余路径, Redundant Paths G 题目描述 为了从 F F F 个草场中的一个走到另一个,奶牛们有时不得不路过一些她们讨厌的可怕的树。 奶牛们已经厌倦了被迫走某一条路,所以她们想建一些新路,使每一对草场之间都会至少有两条相互分离…

【坚果识别】果实识别+图像识别系统+Python+计算机课设+人工智能课设+卷积算法

一、介绍 坚果识别系统,使用Python语言进行开发,通过TensorFlow搭建卷积神经网络算法模型,对10种坚果果实(‘杏仁’, ‘巴西坚果’, ‘腰果’, ‘椰子’, ‘榛子’, ‘夏威夷果’, ‘山核桃’, ‘松子’, ‘开心果’, ‘核桃’&a…

浅谈贝叶斯定理

引言 贝叶斯定理用于确定事件的条件概率。它以一位英国统计学家的名字命名,托马斯贝叶斯他在1763年发现了这个公式。贝叶斯定理是数学中一个非常重要的定理,它为一种独特的统计推断方法奠定了基础。贝氏推论它用于根据可能与事件相关的条件的先验知识&a…