coco数据集格式计算mAP的python脚本
目录
- 背景说明
- COCOeval 计算mAP
- txt文件转换为coco json 格式
- 自定义数据集标注
背景说明
在完成YOLOv5模型移植,运行在板端后,通常需要衡量板端运行的mAP。
一般需要两个步骤
步骤一:在板端批量运行得到目标检测结果,可保存为yolo的txt格式也可保存为json格式;
目标检测任务中常用的数据集格式(voc、coco、yolo)
步骤二:计算预测结果 和 标注结果的mAP,本文重点介绍该步骤。
探索历程(可略过):如果想基于预测的txt计算mAP,推荐 Cartucho/mAP, 由于开发时间有限,最终还是决定基于json 格式进行计算。
COCOeval 计算mAP
经验证该脚本不局限coco 80分类,只要满足json数据集格式,即可使用该脚本进行计算
# 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 格式
- 训练的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】
- 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标注工具
对目标进行标注
![[图片]](https://i-blog.csdnimg.cn/direct/6d4db12346ae4230b170e503cc4a130c.png)
标注结果保存为VOC格式。
可将VOC格式转换为JSON
相关文章:
coco数据集格式计算mAP的python脚本
目录 背景说明COCOeval 计算mAPtxt文件转换为coco json 格式自定义数据集标注 背景说明 在完成YOLOv5模型移植,运行在板端后,通常需要衡量板端运行的mAP。 一般需要两个步骤 步骤一:在板端批量运行得到目标检测结果,可保存为yol…...
Linux学习——Linux中无法使用ifconfg命令
Linux学习——Linux中无法使用ifconfg命令? 💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅…...
二分查找3
1. 有序数组中的单一元素(540) 题目描述: 算法原理: 二分查找解题关键就在于去找到数组的二段性,这里数组的二段性是从单个数字a开始出现然后分隔出来的,如果mid落入左半部分那么当mid为偶数时nums[mid1]…...
从零开始学习嵌入式----C语言框架梳理与后期规划
目录 一、环境搭建. 二、见解 三、C语言框架梳理 四、嵌入式学习规划流程图(学习顺序可能有变) 一、环境搭建. C语言是一门编程语言,在学习的时候要准备好环境。我个人比较喜欢用VS,具体怎么安装请百度。学习C语言的时候,切忌…...
ESP32 步进电机精准控制:打造高精度 DIY 写字机器人,实现流畅书写体验
摘要: 想让你的 ESP32 不再仅仅是控制灯光的工具吗? 本文将带你使用 ESP32 开发板、步进电机和简单的机械结构打造一个能够自动写字的机器人。我们将深入浅出地讲解硬件连接、软件代码以及控制逻辑,并提供完整的项目代码和电路图,即使是 Ardu…...
传知代码-图神经网络长对话理解(论文复现)
代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 概述 情感识别是人类对话理解的关键任务。随着多模态数据的概念,如语言、声音和面部表情,任务变得更加具有挑战性。作为典型解决方案,利用全局和局部上下文信息来预测对话中每…...
部署前端项目
常见部署方式有:静态托管服务、服务器部署 1. 静态托管服务 使用平台部署代码,比如 GitHub。 | 创建一个仓库,仓库名一般是 yourGithubName.github.io。 | 将打包后的静态文件文件上传到仓库。 | 在“Settings”(选项࿰…...
使用POI实现Excel文件的读取(超详细)
目录 一 导入poi相关的maven坐标 二 实现创建并且写入文件 2.1实现步骤 2.2实现代码 2.3效果展示 编辑 2.4注意 三 实现从Excel文件中读取数据 3.1实现步骤 3.2实现代码 3.3结果展示 一 导入poi相关的maven坐标 <!-- Apache poi --><dependency><gro…...
Debezium系列之:记录一次数据库某张表部分数据未同步到hive表的原因
Debezium系列之:记录一次数据库某张表部分数据未同步到hive表的原因 一、背景二、查找数据丢失流程三、数据丢失原因四、解决方法一、背景 反馈mysql数据库中某张表的数据没有同步到hive中,现在需要排查定位下原因数据丢失一般常见需求排查的方向: 数据是否采集到hdfs上采集…...
爆破器材期刊
《爆破器材》简介 《爆破器材》自1958年创刊以来,深受广大读者喜爱,是中国兵工学会主办的中央级技术刊物,在国内外公开发行,近几年已发行到10个国家和地区。《爆破器材》杂志被美国著名检索机构《化学文摘》(CA&a…...
Nginx Websocket 协议配置支持
前后分离的 Web 架构应用,在开发环境启动是可以直接连接支持 websocket 协议,因为没有中间件做转发处理。 当我们对前端进行编译后,通过 nginx 反向代理访问时,需要在nginx 配置文件中增加一些特定的头信息,让服务端识…...
【生成式对抗网络】GANs在数据生成、艺术创作,以及在增强现实和虚拟现实中的应用
一、GANs在数据生成中的应用 生成对抗网络(Generative Adversarial Networks, GANs)在数据生成领域具有显著的应用价值。GANs通过生成器(Generator)和判别器(Discriminator)两个相互竞争的神经网络&#x…...
大模型面试(三)
这次是某家公司的一个电话面试,问的过程还比较简单直接。 问:我们在大模型开源项目的应用上遇到了什么困难? 这个。。有两个困难,一个是RAG的优化,一开始RAG是比较慢的,而且召回率不高; 后来…...
pycharm中快捷键汇总
Pycarm指令汇总 Ctrl鼠标 单击,能直接查看其用法 Ctrl/ 快速注释 CtrlC 在pycharm的terminal中可以停止运行, 其他的地方可以复制。 CtrlV 粘贴 CtrlA 全选 CtrlP 查看()中需要填写什么参数 Altenter 自动不补全所需要的库...
TCP/IP协议族结构和协议
TCP/IP协议族是互联网及许多其他网络的基础,它由一系列相互关联的协议组成,用于实现网络通信。TCP/IP协议族采用ARPANET参考模型,大致可以分为四个层次:链路层、网络层、传输层和应用层。每个层次都有特定的协议和功能,确保数据能够从一个网络设备传输到另一个网络设备。 …...
大模型一些概念的理解 - 线性层、前向传播、后向传播
文章目录 前言一、线性层1. 什么是线性层?2. 通俗解释3. 示例 二、前向传播1. 什么是前向传播?2. 通俗解释3. 示例 三、后向传播1. 什么是后向传播?2. 通俗解释3. 具体步骤 四、示例五、在 PyTorch 中的后向传播 前言 最近提问里有问到一些名…...
AWS 云安全性:检测 SSH 暴力攻击
由于开源、低成本、可靠性和灵活性等优势,云基础设施主要由基于linux的机器主导,然而,它们也不能幸免于黑客的攻击,从而影响云的安全性。攻击Linux机器最流行的方法之一是通过SSH通道。 什么是 SSH 安全外壳协议(Sec…...
7.9数据结构
思维导图 作业 doubleloop.h #ifndef __DOUBLELOOP_H__ #define __DOUBLELOOP_H__#include <stdio.h> #include <stdlib.h>typedef int datatype; typedef struct node {union{int len;datatype data;};struct node *pri;//前驱指针struct node *next;//后继指针…...
Python 文件操作:打开数据处理的大门
在 Python 的学习之旅中,文件操作是一个非常实用且必不可少的技能。不论是数据分析还是日常的数据处理,良好的文件操作技巧都能让你的编程之路更加顺畅。今天,我将带你走进 Python 文件操作的世界,不仅教你如何读写文件࿰…...
单对以太网连接器多场景应用
单对以太网连接器应用场景概述 单对以太网(Single Pair Ethernet,简称SPE)作为一种新兴的以太网技术,以其独特的优势在多个领域得到了广泛的应用。SPE通过单对电缆进行数据传输,支持高速数据传输,同时还能…...
如何用wxlivespy实现微信视频号直播数据实时抓取与分析
如何用wxlivespy实现微信视频号直播数据实时抓取与分析 【免费下载链接】wxlivespy 微信视频号直播间弹幕信息抓取工具 项目地址: https://gitcode.com/gh_mirrors/wx/wxlivespy wxlivespy是一款专业级的微信视频号直播间弹幕信息抓取工具,能够实时捕获弹幕、…...
搞懂VMware三种网络模式:从NAT断网到桥接、仅主机的实战选择指南
VMware虚拟网络模式深度解析:从原理到场景化实战 当你在深夜赶项目时,虚拟机突然无法联网——这种经历对于开发者而言无异于噩梦。我曾亲眼见过团队新人在演示前夜因NAT模式配置问题崩溃,也见证过安全工程师因选错网络模式导致测试环境暴露。…...
WordPress站点AI友好化:LLMs.txt插件配置与Markdown输出实战
1. 项目概述:为你的WordPress站点打造AI友好的内容接口如果你运营着一个WordPress网站,并且希望你的内容能被当下最前沿的大型语言模型(LLMs)——比如ChatGPT、Claude、Gemini等——更好地发现、理解和利用,那么你很可…...
基于LLM的MBTI人格模拟对话实验:从系统设计到工程实践
1. 项目概述:当MBTI遇上AI,一次关于人格的深度对话实验最近在GitHub上看到一个挺有意思的项目,叫“Kali-Hac/ChatGPT-MBTI”。光看名字,你可能觉得这又是一个用ChatGPT玩MBTI性格测试的简单脚本。但当我真正clone下来,…...
FanControl深度解析:完全掌控Windows风扇转速的专业级工具
FanControl深度解析:完全掌控Windows风扇转速的专业级工具 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...
让你的自定义结构体也能被qDebug优雅打印:Qt运算符重载的妙用与避坑指南
让自定义结构体与qDebug完美融合:Qt运算符重载实战解析 在Qt开发中,调试信息输出是日常开发不可或缺的环节。当项目规模扩大,自定义数据结构变得复杂时,如何优雅地输出这些结构体的调试信息就成了开发者面临的现实挑战。本文将深入…...
基于Node.js与whatsapp-web.js构建WhatsApp AI聊天机器人全流程解析
1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫harshitethic/whatsapp-chatgpt。光看名字,很多朋友可能就猜到了,这是一个把ChatGPT的能力集成到WhatsApp里的工具。简单来说,就是让你能在WhatsApp里直接和AI对话&…...
FreeRTOS日志任务设计----LogTask 日志任务
🎬 渡水无言:个人主页渡水无言 ❄专栏传送门: 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》 ❄专栏传送门: 《freertos专栏》 《STM32 HAL库专栏》《linux裸机开发专栏》 ❄专栏传送门:《产品测评专栏》…...
从RISC-V到SSITH:构建下一代硬件安全架构的开放之路
1. 项目概述:从“亡羊补牢”到“未雨绸缪”的硬件安全范式转移在智能设备无处不在的今天,我们正面临一个尴尬的现实:许多产品的安全设计,更像是在一栋已经建好的毛坯房里,见缝插针地安装防盗门和监控摄像头。这种“事后…...
初创公司如何构建高效董事会:从法律合规到战略增长引擎
1. 创业公司的董事会:从法律义务到增长引擎对于很多初次创业的创始人来说,“董事会”这个词听起来可能既遥远又麻烦。它像是公司法条里一个冷冰冰的规定,或者是在融资时不得不向投资人妥协、让渡控制权的象征。尤其是在公司刚起步、团队只有三…...
