目标检测常见数据集格式(YOLO、VOC、COCO)
目录
1.YOLO格式数据
1.1数据格式
1.2YOLO格式数据示例
1.3YOLO格式可视化
2.COCO数据格式
2.1数据格式
2.2COCO格式数据示例
2.3COCO格式可视化
3.VOC数据格式
3.1数据格式
3.2VOC格式数据示例
3.3COCO格式可视化
🍓🍓1.YOLO格式数据
🍭1.1数据格式
YOLO格式数据后缀为txt
🍋1.2YOLO格式数据示例
YOLO格式数据一般包含图片路径、图片宽度和高度、物体类别和物体位置信息等。其中物体位置信息通常由目标框的左上角坐标(x,y)、目标框的宽度和高度 (w,h) 构成,统称为bounding box (BBox)。
以下是一个YOLO格式数据的示例:
1 0.5685714285714286 0.39084507042253525 0.02 0.03051643192488263
0 0.8114285714285714 0.5363849765258216 0.022857142857142857 0.04460093896713615
1 0.845 0.6666666666666666 0.024285714285714285 0.046948356807511735
2 0.6335714285714286 0.18427230046948356 0.01 0.01643192488262911
每一行表示一个目标框,每个目标框由一组5个数字(归一化)组成,每个数字代表的含义如下。
- label_index :为标签名称在标签数组中的索引,下标从 0 开始。
- cx:标记框中心点的 x 坐标,数值是原始中心点 x 坐标除以 图宽 后的结果。
- cy:标记框中心点的 y 坐标,数值是原始中心点 y 坐标除以 图高 后的结果。
- w:标记框的 宽,数值为 原始标记框的 宽 除以 图宽 后的结果。
- h:标记框的 高,数值为 原始标记框的 高 除以 图高 后的结果。
🍇1.3YOLO格式可视化
YOLO格式的label可视化python代码:
import cv2# 画在原图001.jpg上
img = cv2.imread('001.jpg')
h, w, _ = img.shape# yolo标注数据文件名为001.txt
with open('001.txt', 'r') as f:temp = f.read()temp = temp.split()# 根据公式进行转换
x_, y_, w_, h_ = eval(temp[1]), eval(temp[2]), eval(temp[3]), eval(temp[4])x1 = w * x_ - 0.5 * w * w_
x2 = w * x_ + 0.5 * w * w_
y1 = h * y_ - 0.5 * h * h_
y2 = h * y_ + 0.5* h * h_# 画图验证,注意画图坐标要转换成int格式
cv2.rectangle(img, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 0))
cv2.imshow('yolo_display', img)
cv2.waitKey(0)
🍓🍓2.COCO数据格式
🍭2.1数据格式
coco格式数据后缀为json
COCO 数据集的格式是基于 JSON(JavaScript Object Notation)的,使用一个主 JSON 文件来描述整个数据集,以及其他辅助的 JSON 文件来存储图像和标注等信息。在 COCO 数据集格式中,主要的 JSON 文件通常被称为 "instance" 文件,它包含了以下重要字段:
- "info" 字段:用于描述数据集的基本信息,例如名称、版本、年份等。
- "license" 字段:包含了数据集使用的许可证信息,可以指定数据集的使用和共享方式。
- "images" 字段:存储了每张图像的相关信息,包括图像的唯一标识符、文件名、高度、宽度等。
- "annotations" 字段:记录了每个图像的标注信息,每个标注包含了一些必要的信息,如标注的唯一标识符、所属图像的标识符、类别、边界框信息等。
- "categories" 字段:定义了数据集中所有类别的信息,包括类别的唯一标识符、名称等。
🍋2.2COCO格式数据示例
以下是一个COCO数据格式的JSON文件的例子:
{"info": {"year": 2021,"version": "1.0","description": "COCO Dataset Example","contributor": "John Doe","url": "http://example.com","date_created": "2021-06-01"},"licenses": [{"id": 1,"name": "License 1","url": "http://example.com/license1"},{"id": 2,"name": "License 2","url": "http://example.com/license2"}],"images": [{"id": 1,"width": 500,"height": 400,"file_name": "image1.jpg","license": 1,"date_captured": "2021-01-01"},{"id": 2,"width": 800,"height": 600,"file_name": "image2.jpg","license": 2,"date_captured": "2021-02-01"}],"annotations": [{"id": 1,"image_id": 1,"category_id": 1,"bbox": [100, 100, 200, 200],"area": 40000,"iscrowd": 0},{"id": 2,"image_id": 1,"category_id": 2,"bbox": [300, 200, 150, 250],"area": 37500,"iscrowd": 1},{"id": 3,"image_id": 2,"category_id": 1,"bbox": [50, 50, 300, 400],"area": 120000,"iscrowd": 0}],"categories": [{"id": 1,"name": "cat","supercategory": "animal"},{"id": 2,"name": "dog","supercategory": "animal"}]
}
JSON文件包含了一个COCO数据集的基本信息。它包括了数据集的信息(年份、版本、描述等)、许可证信息、图像信息(宽度、高度、文件名等)、标注信息(标注ID、图像ID、类别ID、边界框、面积等)以及类别信息(类别ID、类别名称、超类别等)。
🍇2.3COCO格式可视化
coco格式的label可视化python代码:
import json
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
from PIL import Imagedef load_data(json_file, image_file):with open(json_file, 'r') as f:data = json.load(f)image = Image.open(image_file)return data, imagedef draw_bbox(image, bbox, label):ax = plt.gca()rect = Rectangle((bbox[0], bbox[1]), bbox[2], bbox[3], linewidth=1, edgecolor='red', facecolor='none')ax.add_patch(rect)plt.text(bbox[0], bbox[1], label, fontsize=10, color='red', weight='bold')def visualize(json_file, image_file):data, image = load_data(json_file, image_file)plt.imshow(image)for ann in data['annotations']:label = data['categories'][ann['category_id']]['name']bbox = ann['bbox']draw_bbox(image, bbox, label)plt.axis('off')plt.show()json_file = 'path_to_json_file.json'
image_file = 'path_to_image_file.jpg'
visualize(json_file, image_file)
记得将path_to_json_file.json
和path_to_image_file.jpg
替换为实际的文件路径。
🍓🍓3.VOC数据格式
🍭3.1数据格式
VOC格式数据后缀为xml
🍋3.2VOC格式数据示例
VOC数据格式是一种用于图像标注的标准格式,它用于存储图像及其相关的标注信息。在VOC格式中,每张图片的标注标签信息会被保存到一个XML文件中。XML文件的结构包括以下几个部分:
- annotation:这是整个XML文件的主要部分,包含了图片的名字及基本信息。
- folder:图片所在的文件夹名称。
- filename:图片的文件名。
- path:图片的完整路径。
- source:图片的来源信息,例如图片来自哪个数据库。
- size:图片的尺寸信息,包括宽度、高度和深度。
- segmented:图片是否被分割,0表示未分割,1表示被分割。
- object:每个目标的标定框坐标,包括左上角的坐标和右下角的坐标。
以下是一个VOC数据格式的JSON文件的例子:
<annotation><folder>17</folder> # 图片所处文件夹<filename>77258.bmp</filename> # 图片名<path>~/frcnn-image/61/ADAS/image/frcnn-image/17/77258.bmp</path><source> #图片来源相关信息<database>Unknown</database> </source><size> #图片尺寸<width>640</width><height>480</height><depth>3</depth></size><segmented>0</segmented> #是否有分割label<object> 包含的物体<name>car</name> #物体类别<pose>Unspecified</pose> #物体的姿态<truncated>0</truncated> #物体是否被部分遮挡(>15%)<difficult>0</difficult> #是否为难以辨识的物体, 主要指要结体背景才能判断出类别的物体。虽有标注, 但一般忽略这类物体<bndbox> #物体的bound box<xmin>2</xmin> #左<ymin>156</ymin> #上<xmax>111</xmax> #右<ymax>259</ymax> #下</bndbox></object>
</annotation>
🍇3.3COCO格式可视化
coco格式的label可视化python代码:
import cv2
import xml.etree.ElementTree as ETdef visualize_labels(image_path, xml_path):# 读取图像image = cv2.imread(image_path)# 读取XML文件tree = ET.parse(xml_path)root = tree.getroot()# 遍历XML文件中的对象for obj in root.findall('object'):bbox = obj.find('bndbox')# 提取边界框的坐标xmin = int(bbox.find('xmin').text)ymin = int(bbox.find('ymin').text)xmax = int(bbox.find('xmax').text)ymax = int(bbox.find('ymax').text)# 在图像上绘制边界框cv2.rectangle(image, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2)# 提取对象的标签label = obj.find('name').text# 在图像上标注对象的标签cv2.putText(image, label, (xmin, ymin - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)# 显示图像cv2.imshow("Image", image)cv2.waitKey(0)cv2.destroyAllWindows()# 示例用法
image_path = 'path_to_image.jpg'
xml_path = 'path_to_xml.xml'
visualize_labels(image_path, xml_path)
说明:
- 首先,需要将
path_to_image.jpg
替换为实际的图像文件路径。 - 然后,将
path_to_xml.xml
替换为相应图像的VOC格式的XML标签文件路径。 - 使用
cv2.rectangle
函数绘制边界框,使用cv2.putText
函数标注对象的标签。 - 最后,使用
cv2.imshow
函数显示可视化结果,按任意键关闭图像窗口。
整理不易,欢迎一键三连!!!
送你们一条美丽的--分割线--
🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷
相关文章:
目标检测常见数据集格式(YOLO、VOC、COCO)
目录 1.YOLO格式数据 1.1数据格式 1.2YOLO格式数据示例 1.3YOLO格式可视化 2.COCO数据格式 2.1数据格式 2.2COCO格式数据示例 2.3COCO格式可视化 3.VOC数据格式 3.1数据格式 3.2VOC格式数据示例 3.3COCO格式可视化 🍓🍓1.YOLO格式数据 &…...

搭建 es 集群
一、VMware准备机器 首先准备三台机器 这里我直接使用 VMware 构建三个虚拟机 都是基于 CentOS7 然后创建新用户 部署 es 需要单独创建一个用户,我这里在构建虚拟机的时候直接创建好了 然后将安装包上传 可以使用 rz 命令上传,也可以使用工具上传 工…...

Android弹出通知
发现把Android通知渠道的重要性设置为最高时,当发送通知时,通知能直接弹出来显示,以前一直搞不明白为什么别的app的通知可以弹出来,我的不行,搞了半天原来是这个属性在作怪,示例如下: class Ma…...
如何用 UDP 实现可靠传输?并以LabVIEW为例进行说明
UDP(用户数据报协议)本身是一个无连接的、不可靠的传输协议,它不提供数据包的到达确认、排序保证或重传机制。因此,如果要在UDP上实现可靠传输,就需要在应用层引入额外的机制。以下是一些常见的方法: 确认和…...
【任职资格】某大型商业金融银行任职资格体系搭建项目纪实
【客户背景】某大型商业金融银行位于南方某省,成立于上个世纪九十年代,是一家具有独立法人资格的股份制商业银行,经过多年发展,下辖20多家分行,近200多个营业网点,并于21世纪初成功上市,规模不断…...

如何利用IP地址分析风险和保障网络安全
随着网络攻击的不断增加和演变,保障网络安全已经成为了企业和组织不可忽视的重要任务。在这样的背景下,利用IP地址分析风险和建立IP风险画像标签成为了一种有效的手段。本文将深入探讨IP风险画像标签的作用以及如何利用它来保障网络安全。 IP风险画像查…...

轧钢自动化中的智能仪器:监控、控制和优化新视角
摘要:轧钢自动化是现在及未来的发展趋势,而自动化的轧钢发展,更是离不开形形色色的智能仪器,本文来看看那些应用于轧钢生产中的测量仪。 关键词:智能仪器,在线测量仪,测径仪,测宽仪,测厚仪,测长仪,工业数据分析采集软件…...
第十四届蓝桥杯省赛C++B组题解
考点 暴力枚举,搜索,数学,二分,前缀和,简单DP,优先队列,链表,LCA,树上差分 A 日期统计 暴力枚举: #include<bits/stdc.h> using namespace std; int …...

语音控制模块_雷龙发展
一 硬件原理 1,串口 uart串口控制模式,即异步传送收发器,通过其完成语音控制。 发送uart将来自cpu等控制设备的并行数据转换为串行形式,并将其串行发送到接收uart,接收uart然后将串行数据转换为接收数据接收设备的并行…...

idea 开发serlvet班级通讯录管理系统idea开发mysql数据库web结构计算机java编程layUI框架开发
一、源码特点 idea开发 java servlet 班级通讯录管理系统是一套完善的web设计系统mysql数据库 系统采用serlvetdaobean mvc 模式开发,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 servlet 班…...
Python高级语法
Python高级语 1 列表推导式1.1 什么是列表推导式1.2 列表推导式的使用 2 字典推导式2.1 什么是字典推导式2.2 字典推导式的使用 3 元组推导式4 集合推导式5 三元表达式5.1 什么是三元表达式5.2 三元表达式的使用 1 列表推导式 1.1 什么是列表推导式 列表推导式的英文…...

HTML5语义化元素
在HTML5之前,网站的分布层级有哪些呢? nav,header,main,footer 这样做有一个弊端 我们往往过多的使用div,通过ID或class来区分元素 对于浏览器来说这些元素不够语义化 对于我来说搜索引擎来说,不…...
Android 性能优化——APP启动优化
一、APP启动流程 首先在《Android系统和APP启动流程》中我们介绍了 APP 的启动流程,但都是 FW 层的流程,这里我们主要分析一下在 APP 中的启动流程。要了解 APP 层的启动流程,首先要了解 APP 启动的分类。 1、启动分类 冷启动 应用从头开始…...

计算机网络:TCP篇
计网tcp部分面试总结 tcp报文格式: 序列号:通过SYN传给接收端,当SYN为1,表示请求建立连接,且设置序列号初值,后面没法送一次数据,就累加数据大小,保证包有序。 确认应答号&#x…...
【NLP11-迁移学习】
1、了解迁移学习中的有关概念 1.1、预训练模型(pretrained model) 一般情况下预训练模型都是大型模型,具备复杂的网络结构,众多的参数量,以及在足够大的数据集下进行训练而产生的模型。在NLP领域,预训练模型往往是语…...
Android11 FallbackHome启动和关闭流程分析
Android 7.0引入了新特性:Direct Boot Mode,设备启动后进入的一个新模式,直到用户解锁(unlock)设备此阶段结束。在这个模式下,系统调用 resolveHomeActivity 找到的是FallbackHome ,而不是我们的…...
elasticsearch-java api 8 升级
es client api 升级 背景 公司项目从sring-boot2 升级到了spring-boot3 ,es的服务端也跟着升级到了es8 ,而es的客户端7和服务端8 是不兼容的, 客户端es 7使用的是: elasticsearch-rest-high-level-client es 8 升级到…...
HCIA_IP路由基础问题?
目录 1. 什么是路由?2. 什么是路由器?3. 什么是路由信息?4. 路由器信息和路由表的区别?5. 路由表的生成方式?6.直连路由生效条件是什么?7.Inloopback0是什么接口?8.最优路由选择的原则ÿ…...

(黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
(黑马出品_高级篇_01)SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术——保护 今日目标1.初识Sentinel1.1.雪崩问题及解决方案1.2.服务保护技术对比1.3.Sentinel介绍和安装1.3.1.初识Sentinel1.3.2.安装Sentinel 1.…...

高架学习笔记之信息系统分类概览
目录 零、前言 一、业务处理系统(TPS) 概念 功能 特点 二、管理信息系统(MIS) 概念 功能 组成 三、决策支持系统(DSS) 概念 功能 特点 组成 1. 数据仓库 2. 数据挖掘工具 3. 决策模型 4. 可视化界面 四、专家系统(ES) 概念 特点 组成 求解过程 专家系统…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...