https://blog.csdn.net/wenxueliu/article/details/80327316

在目标检测中,如果对数据不了解,在数据集处理这块有时候会看得云里雾里。比如

  1. trainval 这个词到底指什么
  2. 标签中的 bbox 中的 ymax, xmax, ymin, xmin 取值范围是多少,如何计算的?
  3. 图片与标签是如何关联起来的等等

本文的目的:

  1. 明白数据集是如何组织的
  2. TensorFlow 是如何对数据做处理的。

数据集详解

在目标检测中,主要用到了 Annotations,ImageSets,JPEGImages

其中 ImageSets/Main/ 保存了具体数据集的索引,Annotations 保存了标签数据, JPEGImages 保存了图片内容。

ImageSets

ImageSets/Main/ 文件夹以 , {class}_trainval.txt {class}_val.txt 的格式命名。 train.txt val.txt 例外

包括 Action,Layout,Main,Segmentation 四个文件夹

  1. Action:存放的是人的动作(例如running、jumping等等,这也是VOC challenge的一部分)
  2. Layout:存放的是具有人体部位的数据(人的head、hand、feet等等,这也是VOC challenge的一部分
  3. Main:存放的是图像物体识别的数据,总共分为20类。
  4. Segmentation:存放的是可用于分割的数据。

ImageSets/Main/ 文件夹以 , {class}_trainval.txt {class}_val.txt 的格式命名。 train.txt val.txt 例外

aeroplane_train.txt
aeroplane_trainval.txt
aeroplane_val.txt
bicycle_train.txt
bicycle_trainval.txt
bicycle_val.txt
bird_train.txt
bird_trainval.txt
bird_val.txt
boat_train.txt
boat_trainval.txt
boat_val.txt
bottle_train.txt
bottle_trainval.txt
bottle_val.txt
bus_train.txt
bus_trainval.txt
bus_val.txt
car_train.txt
car_trainval.txt
car_val.txt
cat_train.txt
cat_trainval.txt
cat_val.txt
chair_train.txt
chair_trainval.txt
chair_val.txt
cow_train.txt
cow_trainval.txt
cow_val.txt
diningtable_train.txt
diningtable_trainval.txt
diningtable_val.txt
dog_train.txt
dog_trainval.txt
dog_val.txt
horse_train.txt
horse_trainval.txt
horse_val.txt
motorbike_train.txt
motorbike_trainval.txt
motorbike_val.txt
person_train.txt
person_trainval.txt
person_val.txt
pottedplant_train.txt
pottedplant_trainval.txt
pottedplant_val.txt
sheep_train.txt
sheep_trainval.txt
sheep_val.txt
sofa_train.txt
sofa_trainval.txt
sofa_val.txt
train.txt
train_train.txt
train_trainval.txt
train_val.txt
trainval.txt
tvmonitor_train.txt
tvmonitor_trainval.txt
tvmonitor_val.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
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  1. {class}_train.txt 保存类别为 class 的训练集的所有索引,每一个 class 的 train 数据都有 5717 个。
  2. {class}_val.txt 保存类别为 class 的验证集的所有索引,每一个 class 的val数据都有 5823 个
  3. {class}_trainval.txt 保存类别为 class 的训练验证集的所有索引,每一个 class 的val数据都有11540 个

每个文件包含内容为

2011_003194 -1
2011_003216 -1
2011_003223 -1
2011_003230  1
2011_003236  1
2011_003238  1
2011_003246  1
2011_003247  0
2011_003253 -1
2011_003255  1
2011_003259  1
2011_003274 -1
2011_003276 -1注:1代表正样本,-1代表负样本。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

VOC2012/ImageSets/Main/train.txt 保存了所有训练集的文件名,从 VOC2012/JPEGImages/ 找到文件名对应的图片文件。VOC2012/Annotations/ 找到文件名对应的标签文件

VOC2012/ImageSets/Main/val.txt 保存了所有验证集的文件名,从 VOC2012/JPEGImages/ 找到文件名对应的图片文件。VOC2012/Annotations/ 找到文件名对应的标签文件

读取 JPEGImages 和 Annotation 文件转换为 tf 的 Example 对象,写入 {train|test}{index}_of{num_shard} 文件。每个文件写的 Example 的数量为 total_size/num_shard。(不同数据集可以适当调节 num_shard 来控制每个输出文件的大小)

Annotations

文件夹中文件以 {id}.xml (id 保存在 VOC2012/ImageSets/Main/文件夹 ) 格式命名的 xml 文件,保存如下关键信息

  1. 物体 label : name ,如下例子为 person
  2. 图片尺寸: depth, height, width
  3. 物体 bbox : bndbox 下 xmax, xmin, ymax, ymin
    <annotation><filename>2009_001137.jpg</filename><folder>VOC2012</folder><object><name>person</name><bndbox><xmax>355</xmax><xmin>187</xmin><ymax>334</ymax><ymin>121</ymin></bndbox><difficult>0</difficult>                //目标是否难以识别(0表示容易识别)<occluded>0</occluded><pose>Unspecified</pose>                //拍摄角度<truncated>0</truncated>                //是否被截断(0表示完整)</object><object><name>pottedplant</name><bndbox><xmax>500</xmax><xmin>376</xmin><ymax>261</ymax><ymin>1</ymin></bndbox><difficult>0</difficult><occluded>1</occluded><pose>Unspecified</pose><truncated>1</truncated></object><segmented>1</segmented><size><depth>3</depth><height>334</height><width>500</width></size><source><annotation>PASCAL VOC2009</annotation><database>The VOC2009 Database</database><image>flickr</image></source></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
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

JPEGImages

以 2009_001137.jpg 为例,解码之后获取 image_data(图片内容的二进制),height, width

数据集转换为 TF Record

以上面例子为例,最终的 TFRecord 为

TF Example
{
'filename' : 'VOC{year}/JPEGImages/{id}.jpg'
'height' :  height
'width' :   width
'classes' : [classes.index(person), classes.index(person)]
'y_mins' : [float(121)/334, float(1)/334]  # 各个 object 的  ymin
'x_mins' : [float(187)/500, float(376)/500]
'y_maxes' : [float(334)/334, float(261)/334]
'x_maxes' : [ float(355)/500, float(500)/500]
'encoded' : '图片内容二进制'
}其中classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat","chair", "cow", "diningtable", "dog", "horse", "motorbike", "person","pottedplant", "sheep", "sofa", "train", "tvmonitor"
]注:difficult = 1 的直接跳过,不进行处理。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

以上为将一张图片及标签转为 TF Example,对于整个数据集,依次遍历数据集即可。

voc2012数据集详解相关推荐

  1. 全卷积神经网路【U-net项目实战】LUNA 2016 数据集详解

    文章目录 1.LUNA 2016 数据集详解 2.mdh数据格式详解 3.python读取mdh的方法 4.annotations.csv坐标转换 5.LUNA16数据集肺结节显示 1.LUNA 20 ...

  2. LUNA 2016 数据集详解

    LUNA 2016 数据集详解 LUNA16数据集的由来 LUNA 2016 数据集来自2016年LUng Nodule Analysis比赛,这里是其官方网站. LUNA16数据集是最大公用肺结节数 ...

  3. ILSVRC2015_VID数据集详解

    数据集下载地址:http://bvisionweb1.cs.unc.edu/ilsvrc2015/ILSVRC2015_VID.tar.gz 总说: 数据集包括3862 snippets用于训练,55 ...

  4. KITTI数据集详解和评价标准

    from: https://blog.csdn.net/Solomon1558/article/details/70173223 摘要:本文融合了Are we ready for Autonomous ...

  5. 从手写数字识别入门深度学习丨MNIST数据集详解

    就像无数人从敲下"Hello World"开始代码之旅一样,许多研究员从"MNIST数据集"开启了人工智能的探索之路. MNIST数据集(Mixed Natio ...

  6. 汇总 | 深度学习中图像语义分割基准数据集详解

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 汇总图像语义分割那些质量最好的数据集与常用benchmark数据集 ...

  7. YOLOv5训练自己的数据集详解

    入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删. 目录 一.YOLOv5源码下载 二.环境配置 三.创建数据集 四.更改配置 1.coco128 ...

  8. 【详解】NLP之常用数据集详解

    GLUE数据集合的介绍: 自然语言处理(NLP)主要自然语言理解(NLU)和自然语言生成(NLG).GLUE(General Language Understanding Evaluation)由纽约 ...

  9. Google Open Images Dataset V4 图片数据集详解1-CSV与图片关系

    今天我们来了解一下google 的Open Images Dataset V4,它的网址是这个:https://storage.googleapis.com/openimages/web/index. ...

  10. MS COCO数据集详解

    这是我的推广信息,以激励自己更好的分享自己的知识和经验!也希望看到的你能够多多支持,谢谢! 1. 滴滴云AI大师: 目前滴滴云正在大力推广自己的云计算服务,需要购买的朋友们用我的AI大师码 「2049 ...

最新文章

  1. Android Camera 预览拉伸
  2. OpsRamp推出以服务为中心的AIOps和云监控功能
  3. JDBC通过连接池链接数据库总是失败的解决办法
  4. 科普:Windows下Netcat使用手册
  5. selenium headless报错Message: unknown error: failed to wait for extension background page to load
  6. 怎么用ubuntu进入python_ubuntu 下python环境的切换使用
  7. opencv-api morphologyEx
  8. tensorflow中协调器 tf.train.Coordinator 和入队线程启动器 tf.train.start_queue_runners
  9. windows环境下面安装neo4j出错记录
  10. MongoDB 之聚合函数查询统计
  11. angular跳转指定页面_angularjs,前端_怎么设置登录成功后跳转到相应的页面,angularjs,前端 - phpStudy...
  12. 【数据处理】——利用Excel VBA批量将详细地址转换成省市区三级行政区划
  13. 4600u黑苹果 r5_黑苹果集显hd4400、hd4600显卡Clover引导驱动方法教程
  14. 十万火急的数据采集项目,爬虫代理测试对比
  15. ActiveMQ 反序列化漏洞 (CVE-2015-5254)
  16. SCI论文撰写和投稿过程的详细介绍 - 易智编译EaseEditing
  17. js android 复制粘贴板,js实现复制到粘贴板方法
  18. 乡村少年宫计算机教师简介,乡村少年宫教师感言
  19. 【图像原理】rgb数字图片概念
  20. 特斯拉员工年薪曝光:软件工程师 109 万元

热门文章

  1. SWAT模型在水文水资源、面源污染模拟中的实践技术应用
  2. JavaScript读取JSON文件
  3. 如何将word文档转换成txt记事本格式?
  4. Redis客户端工具-AnotherRedisDesktopManager
  5. 游戏必备组件有哪些_抖音直播互动游戏有哪些?直播间热场互动必备的5个小游戏...
  6. stata15中文乱码_Stata14打开13数据乱码处理办法
  7. python音乐制作_Python实现音乐的剪辑
  8. 敏感词过滤golang
  9. 动感标题文字快闪(闪白特效)开场PR模板MOGRT
  10. c语言windows停止工作,win7系统一打开便签就提示停止工作的解决方法