ReturnTmp's Blog ReturnTmp's Blog
首页
基础课程
编程语言
框架技术
运维笔记
人工智能
随笔摘录
  • 友链
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

ReturnTmp

分享有趣好玩的计算机知识
首页
基础课程
编程语言
框架技术
运维笔记
人工智能
随笔摘录
  • 友链
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 机器学习

  • 计算机视觉

    • 目标检测常用数据集及转换方式
      • 前言
      • COCO
        • 标注格式
        • 目录概述
      • VOC
        • 标注格式
        • 目录概述
      • YOLO
        • 目录概述
      • 格式转换
      • 参考文章
    • YOLOv8 快速入门
    • YOLOv8『小目标』检测指南
    • YOLOv8 目标检测及图片裁剪
    • YOLOv8 断点续训
    • labelimg yolo 数据集生成及划分
    • 『LabelImg』使用小技巧
    • labelimg IndexError 错误
    • Flappy Bird AI 模型训练实战
    • YOLOv8 常用转换脚本
    • YOLOv8
    • 中秋特别版『贪吃蛇』,但是『AI』
    • GPU 查询和抢占
    • 『SAHI』大图片小目标检测切片辅助超推理库
  • 软件体系架构

  • 基础课程
  • 计算机视觉
ReturnTmp
2023-09-07
目录

目标检测常用数据集及转换方式

# 前言

我们经常使用标注工具(如LabelImg、LabelMe等)生成的数据集或者一些开源数据集进行目标检测模型的训练,但是这些自定义数据集格式多样且不具有一致性,而目标检测的数据格式相比于其他任务又复杂很多,因此,为了兼容一些框架和源码,我们一般需要将自定义数据集转换为标准格式,本文将会主要相机讲解各种数据集格式及转换方式

# COCO

COCO 全称是 Common Objects in COntext,是微软团队提供的一个可以用来进行图像识别的数据集。MS COCO 数据集中的图像分为训练、验证和测试集。COCO 通过在 Flickr 上搜索80个对象类别和各种场景类型来收集图像,其使用了亚马逊的 Mechanical Turk(AMT)。

官网:COCO - Common Objects in Context (cocodataset.org) (opens new window)

# 标注格式

我们下载之后可以看到标注文件如下

image-20230908083342837

COCO 通过大量使用 Amazon Mechanical Turk 来收集数据。COCO 数据集现在有3种标注类型:object instances(目标实例), object keypoints(目标上的关键点), 和image captions(看图说话),使用 JSON 文件存储。存储格式如下(具体配置请查看官网:COCO - Common Objects in Context (cocodataset.org) (opens new window))

{
    "info": info,
    "licenses": [license],
    "images": [image],
    "annotations": [annotation],
    "categories": [category]
}
1
2
3
4
5
6
7

在 train.json 和 val.json 中,虽然内容很多,但是总体来说从开始到结尾按照顺序就是这5段,其中 info、licenses、images 这三个结构体/类型在不同 JSON 文件中类型相同,定义共享。

不共享的是 annotation 和 category 这两种结构体,他们在不同类型的 JSON 文件中是不一样的。

images 数组元素的数量等同于划入训练集(或者测试集)的图片的数量;

annotations 数组元素的数量等同于训练集(或者测试集)中bounding box的数量;

categories 数组元素的数量(Image Caption 没有此字段)

# 目录概述

-coco/
    |-train2017/
    	|-1.jpg
    	|-2.jpg
    |-val2017/
    	|-3.jpg
    	|-4.jpg
    |-test2017/
    	|-5.jpg
    	|-6.jpg
    |-annotations/
    	|-instances_train2017.json
    	|-instances_val2017.json
    	|-*.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14

train2017 以及 val2017 这两个文件夹中存储的是训练集和验证集的图像,而 test2017 文件夹中存储的是测试集的信息,可以只是图像,也可以包含标注,一般是单独使用的。annotations 文件夹中的文件就是标注文件

# VOC

**VOC(Visual Object Classes)**数据集来源于 PASCAL VOC 挑战赛,开始于2005年,结束于2012年最后一届。VOC 并不是一个非常大型的目标检测数据集,但是在COCO诞生之前,它是非常主流的目标检测任务基准数据集,主要数据集为 VOC2007 和 VOC2012

官网:The PASCAL Visual Object Classes Homepage (ox.ac.uk) (opens new window)

# 标注格式

<annotation>
	<folder>VOC</folder>            # 图像所在文件夹
	<filename>000032.jpg</filename> # 图像文件名
	<source>                        # 图像源
		<database>The VOC Database</database>
		<annotation>PASCAL VOC</annotation>
		<image>flickr</image>
	</source>
	<size>                          # 图像尺寸信息
		<width>500</width>    # 图像宽度
		<height>281</height>  # 图像高度
		<depth>3</depth>      # 图像通道数
	</size>
	<segmented>0</segmented>  # 图像是否用于分割,0代表不适用,对目标检测而言没关系
	<object>                  # 一个目标对象的信息
		<name>aeroplane</name>    # 目标的类别名
		<pose>Frontal</pose>      # 拍摄角度,若无一般为Unspecified
		<truncated>0</truncated>  # 是否被截断,0表示完整未截断
		<difficult>0</difficult>  # 是否难以识别,0表示不难识别
		<bndbox>            # 边界框信息
			<xmin>104</xmin>  # 左上角x
			<ymin>78</ymin>   # 左上角y
			<xmax>375</xmax>  # 右下角x
			<ymax>183</ymax>  # 右下角y
		</bndbox>
	</object>
    # 下面是其他目标的信息,这里略掉
	<object>
        其他object信息,这里省略
	</object>
</annotation>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 目录概述

-VOC/
	|-JPEGImages/
		|-1.jpg
		|-2.jpg
	|-Annotations/
		|-1.xml
		|-2.xml
	|-ImageSets/
		|-Layout/
			|-*.txt
		|-Main/
			|-train.txt
			|-val.txt
			|-trainval.txt
			|-test.txt
		|-Segmentation/
			|-*.txt
		|-Action/
			|-*.txt
	|-SegmentationClass/
	|-SegmentationObject/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

其中对于目标检测任务而言,最常用的以及必须的文件夹包括:JPEGImages,Annotations,ImageSets/Main。

JPEGImages 里存放的是图像,而 Annotations 里存放的是 xml 标注文件

# YOLO

YOLO 数据集格式的出现主要是为了训练 YOLO 模型,其文件格式一般为 txt 文件,可以通过修改模型的配置文件进行数据加载,每行如下所示:

{目标类别} {目标中心点x坐标} {目标中心点y坐标} {目标框宽度w} {目标框高度h}
1

需要注意的是 YOLO 数据集的标注格式是将目标框的位置信息进行归一化处理(此处归一化指的是除以图片宽或高)

# 目录概述

-yolo/
	|-images/
		|-train/
			|-1.jpg
			|-2.jpg
		|-test/
			|-3.jpg
			|-4.jpg
		|-val/
			|-5.jpg
			|-6.jpg
	|-labels/
		|-train/
			|-1.txt
			|-2.txt
		|-test/
			|-3.txt
			|-4.txt
		|-val/
			|-5.txt
			|-6.txt
	|-train.txt
	|-test.txt
	|-val.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

除此之外还有 DOTA 数据集,使用 txt 格式标注文件,每一行格式是“x1,y1,x2,y2,x3,y3,x4,y4,类别,difficult”,由于DOTA数据集为旋转框标注,因此以四个点坐标为标注格式,但是这不是本文重点,因此这个不详细解释

# 格式转换

这里推荐一个 voc yolo coco 相互转换 的脚本仓库:DeepLearning/others/label_convert at master · KKKSQJ/DeepLearning (github.com) (opens new window)

# 参考文章

目标检测 | 常用数据集标注格式以及转换代码_以下哪些属于图像分类部分导入数据时_JUST LOVE SMILE的博客-CSDN博客 (opens new window)

常见目标检测数据集标注格式_在目标检测中,样本标签用json还是yaml存储?_yjyn1的博客-CSDN博客 (opens new window)

常见数据集格式+数据集标注_booze-J的博客-CSDN博客 (opens new window)

目标检测常用数据集格式 - 知乎 (zhihu.com) (opens new window)

【目标检测】yolo的三种数据集格式 - 知乎 (zhihu.com) (opens new window)

编辑 (opens new window)
上次更新: 2023/10/14, 10:01:13
机器学习基础 高等数学
YOLOv8 快速入门

← 机器学习基础 高等数学 YOLOv8 快速入门→

最近更新
01
百度网盘加速
03-24
02
新版 PyCharm 设置 Conda 虚拟环境
03-24
03
腾讯云域名转到阿里云
03-24
更多文章>
Theme by Vdoing | Copyright © 2023-2024 ReturnTmp | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式