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

这篇具有很好参考价值的文章主要介绍了目标检测任务中常用的数据集格式(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的区别

目标检测任务中常用的数据集格式(voc、coco、yolo),目标检测,YOLO,人工智能

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:目录中存放的是源图片的数据,包括训练与测试的所有图片。(当然图片并不一定要是 .jpg 格式的,只是规定文件夹名字叫 JPEGImages );
  • Annotations(注释):存放的是标注数据,通过XML文件格式,为图像数据存储各类任务的标签。其中部分标签为目标检测的标签。里面存放的是每张图片打完标签所对应的XML文件。每一张图片文件都对应一个xml文件。
  • ImageSets/Main:ImageSets文件夹下本次讨论的只有Main文件夹,---存放的是训练和验证时的文件列表,此文件夹中存放的主要又有四个文本文件test.txt、train.txt、trainval.txt、val.txt, 其中分别存放的是测试集图片的文件名、训练集图片的文件名、训练验证集图片的文件名、验证集图片的文件名。每行一个文件名(不包含扩展名),例如 train.txt 是下面这种格式的:

# train.txt
aaaa
bbbb
cccc

  • SegmentationClass与SegmentationObject:存放的都是图片,且都是图像分割结果图,对目标检测任务来说没有用。class segmentation 标注出每一个像素的类别
  • object segmentation 标注出每一个像素属于哪一个物体。

目录如下所示

VOC_ROOT


└─JPEGImages         # 存放源图片
│      ├─img0001.jpg
│      ├─img0002.jpg
│      ├─img0003.jpg
│      └─img0004.jpg


├─Annotations     # 存放xml文件,与JPEGImages中的图片一一对应,解释图片的内容等等
│      ├─img0001.xml
│      ├─img0002.xml
│      ├─img0003.xml
│      └─img0004.xml

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

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,如果是自己的数据集就Unspecified 
		<truncated>1</truncated>   # 目标是否被截断,(比如在图片之外),或者被遮挡(超过15%), 0表示完整
		<difficult>0</difficult>   # 检测难易程度,0表示容易识别),这个主要是根据目标的大小,光照变化,图片质量来判断,虽有标注, 但一般忽略这类物体
		<bndbox>                   # 物体的bound box, 包含左下角和右上角xy坐标
			<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数据集解析

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(看图说话)
annotations: 对应标注文件夹
	├── instances_train2017.json		: 对应目标检测、分割任务的训练集标注文件
	├── instances_val2017.json			: 对应目标检测、分割任务的验证集标注文件
	├── captions_train2017.json			: 对应图像描述的训练集标注文件
	├── captions_val2017.json			: 对应图像描述的验证集标注文件
	├── person_keypoints_train2017.json	: 对应人体关键点检测的训练集标注文件
	└── person_keypoints_val2017.json	: 对应人体关键点检测的验证集标注文件夹
 
 
Object segmentation			  : 目标级分割
Recognition in context		  : 图像情景识别
Superpixel stuff segmentation : 超像素分割
330K images (>200K labeled)	  : 超过33万张图像,标注过的图像超过20万张
1.5 million object instances  : 150万个对象实例
80 object categories		  : 80个目标类别
91 stuff categories			  : 91个材料类别
5 captions per image		  : 每张图像有5段情景描述
250,000 people with keypoints : 对25万个人进行了关键点标注
 
 
""" 注意 """
COCO数据集格式中,bbox 的保存格式为 [x, y, w, h]  
如果需要转换为[x1,y1,x2,y2],可以通过如下进行转换
bbox = [x1, y1, x1 + w - 1, y1 + h - 1]

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

注意: 虽然每个json文件都有"info", “images” , “annotations”, "licenses","categories"关键字,但不同的任务对应的json文件中annotation的形式不同。

(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

每一行代表标注的一个目标文章来源地址https://www.toymoban.com/news/detail-619745.html

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

到了这里,关于目标检测任务中常用的数据集格式(voc、coco、yolo)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • [数据集][目标检测]昆虫检测数据集VOC+YOLO格式1873张7类别

    数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1873 标注数量(xml文件个数):1873 标注数量(txt文件个数):1873 标注类别数:7 标注类别名称:[\\\"Boerner\\\",\\\"Leconte\\\",\\\"Linnaeus\\\",\\\"acuminatus\\\",\\\"arma

    2024年03月19日
    浏览(15)
  • 目标检测数据集格式转换:将labelme格式转为YOLO以及VOC格式

    目标检测数据集格式转换:将labelme格式转为YOLO以及VOC格式

    一个目标检测项目需要自己找图片标注数据进行训练,训练需要YOLO格式,但数据增广需要VOC格式,该文记录如何将labelme标注的数据格式转为YOLO格式,再从YOLO格式转为VOC格式,只作为自己用的记录,如果你刚好也需要这么干,或者需要文中提到的某一种转换,也可以参考一下

    2024年02月08日
    浏览(12)
  • [数据集][目标检测]牛羊检测数据集VOC+YOLO格式3393张2类别

    数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3393 标注数量(xml文件个数):3393 标注数量(txt文件个数):3393 标注类别数:2 标注类别名称:[\\\"cow\\\",\\\"sheep\\\"] 每个类别标注的框数: cow

    2024年03月19日
    浏览(15)
  • [数据集][目标检测]茶叶病害数据集VOC+YOLO格式883张8类别

    数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):883 标注数量(xml文件个数):883 标注数量(txt文件个数):883 标注类别数:8 标注类别名称:[\\\"algalleaf\\\",\\\"Anthracnose\\\",\\\"birdeyespot\\\",\\\"brownblight

    2024年01月16日
    浏览(17)
  • YOLO目标检测——无人机航拍行人检测数据集下载分享【含对应voc、coc和yolo三种格式标签】

    YOLO目标检测——无人机航拍行人检测数据集下载分享【含对应voc、coc和yolo三种格式标签】

    实际项目应用 :智能交通管理、城市安防监控、公共安全救援等领域 数据集说明 :无人机航拍行人检测数据集,真实场景的高质量图片数据,数据场景丰富 标签说明 :使用lableimg标注软件标注,标注框质量高,含voc(xml)、coco(json)和yolo(txt)三种格式标签,分别存放在不同文件

    2024年01月18日
    浏览(117)
  • 数据集格式相互转换——CoCo、VOC、YOLO、TT100K

    数据集格式相互转换——CoCo、VOC、YOLO、TT100K

    将annotations目录下的所有xml标注文件按coco格式写入了json文件中。 此处得到的是全部的标签信息,可根据如下代码进行train、val和test的比例划分: train和val同理。 train、val和test分别执行一次即可。 以上代码参考自博文数据转换。

    2023年04月09日
    浏览(40)
  • VOC/YOLO/COCO数据集格式转换及LabelImg/Labelme/精灵标注助手Colabeler标注工具介绍

    VOC/YOLO/COCO数据集格式转换及LabelImg/Labelme/精灵标注助手Colabeler标注工具介绍

    数据集格式:VOC(xml)、YOLO(txt)、COCO(json) 本文主要对 Label格式 ,以及 LabelImg、Labelme、精灵标注助手Colabeler 这常用的三种数据标注软件进行介绍。 LabelImg是目标检测数据标注工具,可以标注标注两种格式: VOC标签格式,标注的标签存储在xml文件 YOLO标签格式,标注的标签存储在

    2023年04月22日
    浏览(13)
  • [数据集][VOC][目标检测]河道垃圾水面漂浮物数据集目标检测可用yolo训练-1304张介绍

    数据集格式:Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):1304 标注数量(xml文件个数):1304 标注类别数:1 标注类别名称:[\\\"trash\\\"] 每个类别标注的框数: trash count = 1386 数据集详细介绍: [数据集介绍][目标检测

    2024年02月05日
    浏览(11)
  • 伪装目标检测中数据集的标注格式:COCO和VOC

    1.OSFormer中提供的COD10K的json格式,是coco的格式,但由于伪装目标检测任务的特殊性,标注信息中还有一个segmentation段 首先将一整个json文件分解: 然后转化为VOC格式: 这样生成的xml文件,没有之前COD10K标注的segmentation信息,还需要进一步考虑,在转换为xml的脚本中加上识别

    2024年04月27日
    浏览(47)
  • 关于目标检测任务中,YOLO(txt格式)标注文件的可视化

    关于目标检测任务中,YOLO(txt格式)标注文件的可视化

    本文是针对yolo标注格式txt文件的可视化脚本介绍  如果是VOC格式的xml文件,参考:关于目标检测任务中,XML(voc格式)标注文件的可视化 代码比较简单, 50行这样 。。。。 下面是代码的目录结构,1.jpeg 是数据图像,1.txt是对应的相对坐标信息和索引类别 result.png 是保存的绘制

    2024年02月03日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包