目标检测任务中常用的数据集格式(voc、coco、yolo)

一、Pascal VOC

VOC数据集(Annotation的格式是xmI)

Pascal VOC数据集是目标检测的常用的大规模数据集之一,从05年到12年都会举办比赛,比赛任务task:

  • 分类Classification
  • 目标检测Object Detection
  • 语义分割Class Segmentation
  • 实例分割Object Segmentation
  • Action Classification(专注于人体动作的一种分类)
  • Person Layout(专注于人体各部位的一种目标检

A.  数据集包含种类

一共包含了20类。一共包含了20类。

Person: person
Animal: bird, cat, cow, dog, horse, sheep
Vehicle: aeroplane, bicycle, boat, bus, car, motorbike, train
Indoor: bottle, chair, dining table, potted plant, sofa, tv/monitor

B.  V0C2007和V0C2012的区别

VOC2007中包含9963张标注过的图片, 由train/val/test三部分组成, 共标注出24,640个物体。

对于检测任务,VOC2012的trainval/test包含08-11年的所有对应图片。 trainval有11540张图片共27450个物体

C.  VOC数据集文件结构

Pascal VOC数据集 由五个部分构成:JPEGImages,Annotations,ImageSets,SegmentationClass以及SegmentationObject。

.
└── VOCdevkit             #根目录
    └── VOC2012           #不同年份的数据集,这里只下载了2012的,还有2007等其它年份的
        ├── Annotations   #存放xml文件,与JPEGImages中的图片一一对应,每个xml对应JPEGImage中的一张图片描述了图片信息
        ├── ImageSets     #该目录下存放的都是txt文件,txt文件中每一行包含一个图片的名称,末尾会加上±1表示正负样本
        │   ├── Action    #【Action下存放的是人的动作(例如running、jumping等等)】
        │   ├── Layout   # 【Layout下存放的是具有人体部位的数据】
        │   ├── Main      # 【Main下存放的是图像物体识别的数据,总共分为20类。】
        │   └── Segmentation  # 【Segmentation下存放的是可用于分割的数据】
        ├── JPEGImages            #存放源图片
        ├── SegmentationClass   #【存放按照 class 分割的图片,语义分割相关;目标检测不需要】
        └── SegmentationObject  #【存放按照 object 分割的图片,实例分割相关;目标检测不需要】

  • JPEGImages:存放的是训练与测试的所有图片。
  • Annotations(注释):数据集标签的存储路径,通过XML文件格式,为图像数据存储各类任务的标签。其中部分标签为目标检测的标签。里面存放的是每张图片打完标签所对应的XML文件。每一张图片文件都对应一个xml文件。
  • ImageSets:ImageSets文件夹下本次讨论的只有Main文件夹,此文件夹中存放的主要又有四个文本文件test.txt、train.txt、trainval.txt、val.txt, 其中分别存放的是测试集图片的文件名、训练集图片的文件名、训练验证集图片的文件名、验证集图片的文件名。
  • SegmentationClass与SegmentationObject:存放的都是图片,且都是图像分割结果图,对目标检测任务来说没有用。class segmentation 标注出每一个像素的类别
  • object segmentation 标注出每一个像素属于哪一个物体。

目录如下所示

VOC
├─Annotations
│      ├─img0001.xml
│      ├─img0002.xml
│      ├─img0003.xml
│      ├─img0004.xml
│      ├─img0005.xml
│      └─img0006.xml

├─ImageSets
│  └─Main
│      ├─test.txt
│      ├─train.txt
│      ├─trainval.txt
│      └─val.txt

└─JPEGImages
        ├─img0001.jpg
        ├─img0002.jpg
        ├─img0003.jpg
        ├─img0004.jpg
        ├─img0005.jpg
        └─img0006.jpg
 

D.  标注信息是用xmI文件组织

xml文件的标注格式如下:

<annotation><folder>VOC2007</folder>   # 图片所处文件夹<filename>000001.jpg</filename>  # 图片文件名<path>pathto/000001.jpg</path><source><database>The VOC2007 Database</database><annotation>PASCAL VOC2007</annotation><image>flickr</image><flickrid>341012865</flickrid></source><owner><flickrid>Fried Camels</flickrid><name>Jinky the Fruit Bat</name></owner><size>  # 图像尺寸,深度<width>353</width><height>500</height><depth>3</depth></size><segmented>0</segmented>  # 是否用于分割<object>  # 标注目标 1<name>dog</name>  # 物体类别<pose>Left</pose>  # 拍摄角度:front, rear, left, right, unspecified <truncated>1</truncated>  # 目标是否被截断(比如在图片之外),或者被遮挡(超过15%)<difficult>0</difficult>  # 检测难易程度,这个主要是根据目标的大小,光照变化,图片质量来判断,虽有标注, 但一般忽略这类物体<bndbox>     # 物体的bound box<xmin>48</xmin><ymin>240</ymin><xmax>195</xmax><ymax>371</ymax></bndbox></object><object>  # 标注目标 2<name>person</name><pose>Left</pose><truncated>1</truncated><difficult>0</difficult><bndbox><xmin>8</xmin><ymin>12</ymin><xmax>352</xmax><ymax>498</ymax></bndbox></object>
</annotation>

二、COCO数据集

COCO数据集有91类,虽然比ImageNet和SUN类别少,但是每一类的图像多,这有利于获得更多的每类中位于某种特定场景的能力,对比PASCAL VOC,其有更多类和图像。

和VOC相比,coco数据集上小目标多,单幅图片目标多,物体大多非中心分布,更符合日常环境,所以coco检测难度更大.

COCO难度更大,因为coco数据集每张图片中的物体数目很多,所以导致相对别的数据集,该数据集检测的准确率很低

为了更好的介绍这个数据集,微软在ECCV Workshops里发表这篇文章:Microsoft COCO: Common Objects in Context。从这篇文章中,我们了解了这个数据集以scene understanding为目标,主要从复杂的日常场景中截取,图像中的目标通过精确的segmentation进行位置的标定。图像包括91类目标,328,000影像和2,500,000个label。

A.  coco数据集包含类别:

80类分别为

[‘person’, ‘bicycle’, ‘car’, ‘motorcycle’, ‘airplane’, ‘bus’, ‘train’, ‘truck’, ‘boat’, ‘traffic light’, ‘fire hydrant’, ‘stop sign’, ‘parking meter’, ‘bench’, ‘bird’, ‘cat’, ‘dog’, ‘horse’, ‘sheep’, ‘cow’, ‘elephant’, ‘bear’, ‘zebra’, ‘giraffe’, ‘backpack’, ‘umbrella’, ‘handbag’, ‘tie’, ‘suitcase’, ‘frisbee’, ‘skis’, ‘snowboard’, ‘sports ball’, ‘kite’, ‘baseball bat’, ‘baseball glove’, ‘skateboard’, ‘surfboard’, ‘tennis racket’, ‘bottle’, ‘wine glass’, ‘cup’, ‘fork’, ‘knife’, ‘spoon’, ‘bowl’, ‘banana’, ‘apple’, ‘sandwich’, ‘orange’, ‘broccoli’, ‘carrot’, ‘hot dog’, ‘pizza’, ‘donut’, ‘cake’, ‘chair’, ‘couch’, ‘potted plant’, ‘bed’, ‘dining table’, ‘toilet’, ‘tv’, ‘laptop’, ‘mouse’, ‘remote’, ‘keyboard’, ‘cell phone’, ‘microwave’, ‘oven’, ‘toaster’, ‘sink’, ‘refrigerator’, ‘book’, ‘clock’, ‘vase’, ‘scissors’, ‘teddy bear’, ‘hair drier’, ‘toothbrush’]

B.  COCO 数据集文件结构

COCO_ROOT #根目录
├── annotations # 存放json格式的标注
│ ├── instances_train2017.json
│ └── instances_val2017.json
└── train2017 # 存放图片文件
│ ├── 000000000001.jpg
│ ├── 000000000002.jpg
│ └── 000000000003.jpg
└── val2017
├── 000000000004.jpg
└── 000000000005.jpg

与VOC一个文件一个xml标准不同的是,COCO所有的目标框标注都是在同一个json里(instances_train2017.json 或者 instances_val2017.json)。json解析出来是字典格式

coco共有3种标注类型,这3种类型共享这些基本类型:info、image、license,使用JSON文件存储。每种类型包含了训练和验证

  • object instances(目标实例): 也就是目标检测object detection 标注;
  • object keypoints(目标上的关键点);
  • image captions(看图说话)

 json文件的标注格式如下,以Object Instance为例,这种格式的文件从头至尾按照顺序分为以下段落:

(1)images字段列表元素的长度等同于划入训练集(或者测试集)的图片的数量;
(2)annotations字段列表元素的数量等同于训练集(或者测试集)中bounding box的数量;
(3)categories字段列表元素的数量等同于类别的数量

# 整个 json 文件格式
{"info": info,               # dict"licenses": [license],      # list,内部是dict"images": [image],          # list,内部是dict"annotations": [annotation],# list,内部是dict"categories": [category]    # list,内部是dict
}# 上面中每个字典的结构
info{                           # 数据集信息描述"year": int,                # 数据集年份"version": str,             # 数据集版本"description": str,         # 数据集描述"contributor": str,         # 数据集提供者"url": str,                 # 数据集下载链接"date_created": datetime,   # 数据集创建日期
}
license{"id": int,     # int 协议id号      在images中遵循的license即1"name": str,   # str 协议名 "url": str,    # str 协议链接    
} # images是一个list,存放所有图片(dict)信息。image是一个dict,存放单张图片信息 
image{     "id": int,                  # 图片的ID编号(每张图片ID唯一)"width": int,               # 图片宽"height": int,              # 图片高"file_name": str,           # 图片名字"license": int,             # 协议"flickr_url": str,          # flick图片链接url"coco_url": str,            # coco图片链接url"date_captured": datetime,  # 数据集获取日期
}# annotations是一个list,存放所有标注(dict)信息。annotation是一个dict,存放单个目标标注信息。
annotation{"id": int,                  # 图片中每个被标记物体的id编号,目标对象ID(每个对象ID唯一),每张图片可能有多个目标"image_id": int,            # 该物体所在图片的对应ID"category_id": int,         # 被标记物体的对应类别ID编号,与categories中的ID对应"segmentation": RLE or [polygon],   # 实例分割,对象的边界点坐标[x1,y1,x2,y2,....,xn,yn]"area": float,              # 对象区域面积"bbox": [xmin,ymin,width,height], # 目标检测,对象定位边框[x,y,w,h]"iscrowd": 0 or 1,          # 表示是否是人群/ 0 or 1 目标是否被遮盖,默认为0
}
# 类别描述
categories{                  "id": int,                  # 类别对应的ID编号(0默认为背景)"name": str,                # 子类别名字"supercategory": str,       # 主类别名字, 类别所属的大类,如卡车和轿车都属于机动车这个class
}

三、YOLO数据集格式

标签使用txt文本进行保存。yolo的目录如下所示:

dataset
├─images
│  ├─train
│  │    ├─ flip_mirror_himg0026393.jpg
│  │    ├─ flip_mirror_himg0026394.jpg
│  │    ├─ flip_mirror_himg0026395.jpg
│  │    ├─ flip_mirror_himg0027314.jpg
│  │    ├─ flip_mirror_himg0027315.jpg
│  │    └─flip_mirror_himg0027316.jpg
│  └─val
│     ├─ flip_mirror_himg0027317.jpg
│     └─flip_mirror_himg0027318.jpg
└─labels
    ├─train
    │    ├─ flip_mirror_aimg0025023.txt
    │    ├─ flip_mirror_aimg0025024.txt
    │    ├─ flip_mirror_aimg0025025.txt
    │    ├─ flip_mirror_aimg0025026.txt
    │    ├─ flip_mirror_aimg0025027.txt
    │    └─ flip_mirror_aimg0025028.txt
    └─val 
         ├─ flip_mirror_aimg0025029.txt
         └─flip_mirror_aimg0025030.txt

标签使用txt文本进行保存。

yolo标注格式如下所示:

<object-class> <x> <y> <width> <height>

例如:

0 0.412500 0.318981 0.358333 0.636111

每一行代表标注的一个目标

  • 0:对象的标签索引
  • x,y:目标的中心坐标,相对于图片的H和W做归一化。即x/W,y/H。
  • width,height:目标(bbox)的相对宽和高,相对于图像的H和W做归一化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/17348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于PHP校园疫情防控信息管理系统-计算机毕设 附源码12057

PHP校园疫情防控信息管理系统 摘 要 如今计算机行业的发展极为快速&#xff0c;搭载于计算机软件运行的数据库管理系统在各行各业得到了广泛的运用&#xff0c;其在数据管理方面具有的准确性和高效性为大中小企业的日常运营提供了巨大的帮助。自从2020年新冠疫情爆发以来&…

ES6及以上新特性

ES6&#xff08;ECMAScript 2015&#xff09;及以上版本引入了许多新特性&#xff0c;每个版本都有不同的增强和改进。以下是 ES6 及以上版本的新特性的详细描述&#xff1a; ES6&#xff08;ECMAScript 2015&#xff09;&#xff1a; let 和 const 声明&#xff1a;引入块级作…

【嵌入式学习笔记】嵌入式入门2——中断(外部中断)

1.什么是中断 打断CPU执行正常的程序&#xff0c;转而处理紧急程序&#xff0c;然后返回原暂停的程序继续运行&#xff0c;就叫中断 1.1.中断的作用与意义 作用1&#xff1a;实时控制在确定时间内对相应事件作出响应——定时器中断作用2&#xff1a;故障处理检测到故障&…

Makefile模板和工程模板(消息队列和共享内存)的使用

一、 Makefile模板 #指定生成的文件名 OJB_OUT test#指定每一个c文件对应的.o文件 OBJS a.o b.o main.o#指定编译器 CC gcc#指定需要的库 ULDFLAGS ########################################### #以下的内容不需要修改 ########################################### all:…

NASA和uAvionix在AAM测试场部署SkyLine C2指挥和控制服务

蒙大拿州比格福克和弗吉尼亚州汉普顿2023年07月28日——美国宇航局和uAvionix签署了一项太空法案协议&#xff0c;为城市环境中的无人机系统 (UAS)开发先进的超视距(BVLOS)指挥和控制(C2)技术。根据协议&#xff0c;NASA将与uAvionix合作&#xff0c;利用基于互联网的基础设施和…

(二)Spring WeFlux响应式编程第二种整合方案|道法术器

Spring WebFlux 响应式异步编程|道法术器(一) Spring WeFlux响应式编程整合另一种方案|道法术器(二) R2dbc操作mysql 注意下面红色部分与上一篇"Spring WebFlux 响应式异步编程|道法术器(一)" 不一样的依赖包 技术整合: <!--设置spring-boot依赖的版本 --> &l…

kafka部署

1.kafka安装部署 1.1 kafaka下载 https://archive.apache.org/dist/kafka/2.4.0/kafka_2.12-2.4.0.tgz Binary downloads是指预编译的软件包,可供直接下载和安装,无需手动编译。在计算机领域中,二进制下载通常指预构建的软件分发包,可以直接安装在系统上并使用 "2.…

麒麟-飞腾Kylin-V4桌面arm64系统静态编译QT

1.系统具体版本&#xff1a; 2. 因为此版本的源很老了&#xff0c;需要修改版本的源&#xff0c;才能正常更新各种软件&#xff0c;否则&#xff0c;你连麒麟商店都打不开。 sudo vi /etc/apt/sources.list 选择你系统对应版本的源地址&#xff1a; #4.0.2桌面版本: deb ht…

ModuleNotFoundError: No module named ‘_sqlite3‘

前言 遇到报错信息如下&#xff1a; ModuleNotFoundError: No module named _sqlite3解决方式 参考解决方式&#xff1a; https://blog.csdn.net/jaket5219999/article/details/53512071 find / -name _sqlite*.socp /usr/lib64/python3.6/lib-dynload/_sqlite3.cpython-36…

uniapp 路由跳转方式

export function goBack(index, url) {if (index 1) { // 关闭当前页&#xff0c;返回上一页面或多级页面。uni.navigateBack({delta: url,animationType: pop-out,animationDuration: 300});} else if (index 2) { // 保留当前页&#xff0c;跳转到非tabbar页面&#xff0c;…

vue拖拽改变宽度

1.封装组件ResizeBox.vue <template><div ref"resize" class"resize"><div ref"resizeHandle" class"handle-resize" /><slot /></div> </template> <script> export default {name: Resi…

【Docker】使用docker-maven-plugin插件构建发布推镜像到私有仓库

文章目录 1. 用docker-maven-plugin插件推送项目到私服docker1.1. 构建镜像 v1.01.2. 构建镜像 v2.01.3. 推送到镜像仓库 2. 拉取私服docker镜像运行3. 参考资料 本文描述了在Spring Boot项目中通过docker-maven-plugin插件把项目推送到私有docker仓库中&#xff0c;随后拉取仓…

pgsql 查看某个表建立了那些索引sql

执行以下sql&#xff1a; SELECTns.nspname as schema_name,tab.relname as table_name,cls.relname as index_name,am.amname as index_type,idx.indisprimary as is_primary,idx.indisunique as is_unique FROMpg_index idx INNER JOIN pg_class cls ON cls.oididx.indexrel…

小程序相较于APP,广告变现有哪些优势?

对于开发者而言&#xff0c;微信小程序开发门槛相对较低&#xff0c;难度不及APP&#xff0c;能够满足简单的基础应用&#xff0c;适合生活服务类线下商铺以及非刚需低频应用的转换。 和早期相比&#xff0c;今天小程序在产品功能、UI设计、交互体验等方面&#xff0c;越来越精…

【深度学习】MAT: Mask-Aware Transformer for Large Hole Image Inpainting

论文&#xff1a;https://arxiv.org/abs/2203.15270 代码&#xff1a;https://github.com/fenglinglwb/MAT 文章目录 AbstractIntroductionRelated WorkMethod总体架构卷积头Transformer主体Adjusted Transformer Block Multi-Head Contextual Attention Style Manipulation Mo…

在排序数组中查找元素的第一个和最后一个位置——力扣34

文章目录 题目描述法一 二分查找 题目描述 法一 二分查找 int bsearch_1(int l, int r) {while (l < r){int mid (l r)/2;if (check(mid)) r mid;else l mid 1;}return l; }int bsearch_2(int l, int r) {while (l < r){int mid ( l r 1 ) /2;if (check(mid)) l …

Istio 安全 mTLS认证 PeerAuthentication

这里定义了访问www.ck8s.com可以使用http也可以使用https访问&#xff0c;两种方式都可以访问。 那么是否可以强制使用mtls方式去访问&#xff1f; mTLS认证 PeerAuthentication PeerAuthentication的主要作用是别人在和网格里的pod进行通信的时候&#xff0c;是否要求mTLS mTL…

链表OJ:环形链表

Lei宝啊&#xff1a;个人主页 愿所有美好与我们不期而遇 题目描述 &#xff1a; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 接口&#xff1a; bool hasCycle(struct ListNode *head) 示例1&#xff1a; 示例2&#xff1a; 返回值&#xff1a; true或…

十分钟配置好Neovim go开发环境(其他语言一样)

文章目录 前言仓库地址用法快捷键问题反馈 前言 这篇文章的目的是为了分享下我自己的Neovim配置。 本人是Golang程序员&#xff0c;最开始使用的IDE是JetBrains Goland。有一说一这个ide适配度很高&#xff0c;认识的很多人都使用这个。但是它也有几个对我来说的缺点&#xf…

认识C语言

目录 1.C语言的发展历史 2.C语言的特点 3.C语言的应用领域 1.C语言的发展历史 C语言的发展历史可以追溯到20世纪60年代。在那个时候&#xff0c;计算机科学领域存在着多种编程语言&#xff0c;但它们在功能、效率和可移植性等方面存在一些限制。 C语言的起源可以追溯到贝尔实…