PASCAL VOC数据集分析

2023-11-12

PASCAL VOC数据集分析
PASCAL VOC为图像识别和分类提供了一整套标准化的优秀的数据集,从2005年到2012年每年都会举行一场图像识别challenge。
本文主要分析PASCAL VOC数据集中和图像中物体识别相关的内容。
在这里采用PASCAL VOC2012作为例子。下载地址为:点击打开链接。(本文中的系统环境为ubuntu14.04)
下载完之后解压,可以在VOCdevkit目录下的VOC2012中看到如下的文件:
其中在图像物体识别上着重需要了解的是Annotations、ImageSets和JPEGImages。
JPEGImages
JPEGImages文件夹中包含了PASCAL VOC所提供的所有的图片信息,包括了训练图片和测试图片。
这些图像都是以“年份_编号.jpg”格式命名的。
图片的像素尺寸大小不一,但是横向图的尺寸大约在500*375左右,纵向图的尺寸大约在375*500左右,基本不会偏差超过100。(在之后的训练中,第一步就是将这些图片都resize到300*300或是500*500,所有原始图片不能离这个标准过远。)
这些图像就是用来进行训练和测试验证的图像数据。
Annotations
Annotations文件夹中存放的是xml格式的标签文件,每一个xml文件都对应于JPEGImages文件夹中的一张图片。
xml文件的具体格式如下:(对于2007_000392.jpg)
<annotation>
	<folder>VOC2012</folder>                           
	<filename>2007_000392.jpg</filename>                               //文件名
	<source>                                                           //图像来源(不重要)
		<database>The VOC2007 Database</database>
		<annotation>PASCAL VOC2007</annotation>
		<image>flickr</image>
	</source>
	<size>					                           //图像尺寸(长宽以及通道数)						
		<width>500</width>
		<height>332</height>
		<depth>3</depth>
	</size>
	<segmented>1</segmented>		                           //是否用于分割(在图像物体识别中01无所谓)
	<object>                                                           //检测到的物体
		<name>horse</name>                                         //物体类别
		<pose>Right</pose>                                         //拍摄角度
		<truncated>0</truncated>                                   //是否被截断(0表示完整)
		<difficult>0</difficult>                                   //目标是否难以识别(0表示容易识别)
		<bndbox>                                                   //bounding-box(包含左下角和右上角xy坐标)
			<xmin>100</xmin>
			<ymin>96</ymin>
			<xmax>355</xmax>
			<ymax>324</ymax>
		</bndbox>
	</object>
	<object>                                                           //检测到多个物体
		<name>person</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>198</xmin>
			<ymin>58</ymin>
			<xmax>286</xmax>
			<ymax>197</ymax>
		</bndbox>
	</object>
</annotation>
对应的图片为:
ImageSets
ImageSets存放的是每一种类型的challenge对应的图像数据。
在ImageSets下有四个文件夹:
其中Action下存放的是人的动作(例如running、jumping等等,这也是VOC challenge的一部分)
Layout下存放的是具有人体部位的数据(人的head、hand、feet等等,这也是VOC challenge的一部分)
Main下存放的是图像物体识别的数据,总共分为20类。
Segmentation下存放的是可用于分割的数据。
在这里主要考察Main文件夹。
Main文件夹下包含了20个分类的***_train.txt、***_val.txt和***_trainval.txt。
这些txt中的内容都差不多如下:
前面的表示图像的name,后面的1代表正样本,-1代表负样本。
_train中存放的是训练使用的数据,每一个class的train数据都有5717个。
_val中存放的是验证结果使用的数据,每一个class的val数据都有5823个。
_trainval将上面两个进行了合并,每一个class有11540个。
需要保证的是train和val两者没有交集,也就是训练数据和验证数据不能有重复,在选取训练数据的时候 ,也应该是随机产生的。
SegmentationClass和SegmentationObject
这两个文件夹下保存了物体分割后的图片,在物体识别中没有用到,在这里不做详细展开。
接下来需要研究的是如何自己生成训练数据和测试数据,将在下一篇中阐述。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PASCAL VOC数据集分析 的相关文章

随机推荐

  • Docker构建tomcat无法用startup.sh启动,无法输出catalina.out

    最近部署测试环境 想尝试一下docker 毕竟技术人不能落伍 So 我先学习了一下docker的简单使用 很多东西都是实践出真知 没必要看书找教程 大概看一下能干就可以了 菜鸟教程地址Docker 教程 菜鸟教程 初学者可以了解一下 下面进
  • 编程变量命名的一些技巧

    最近做项目仿真时 在编程的时候发现自己对变量的命名比较混乱 没有统一的规则 故搜集了一些资料对变量命名的技巧和原则有所了解和总结 总的来说 就是英文字母大小写 数字 下划线 按照一定的规则搭配 自己比较喜欢的是帕斯卡 pascal 命名法和
  • stm32f103 TIM2定时器4路PWM输出实验

    这里以TIM2为例 pwm c include pwm h uint16 t TIM2 CCR1 Val uint16 t TIM2 CCR2 Val uint16 t TIM2 CCR3 Val uint16 t TIM2 CCR4 Va
  • 【前端】HTML基础总结

    概要 html基本结构 nbsp 空格 emsp 空字符 html标签 h1 h1 标题标签1 6之间字体大小逐渐减小 p p 段落标签 b b 加粗 strong strong 加粗优化搜索 i i 斜体 div div 块级元素 spa
  • 数据结构学习——栈的应用:迷宫问题

    简介 基于栈的迷宫问题本质上是深度优先遍历 从起点开始深度优先搜索 遇到碰壁的情况时 根据栈的特性 可以 回溯 到之前走过的路 并继续搜索未搜索的方向 具体实现 我使用的ide是qt 它里面的一些图形库有助于我更加直观地理解深度优先搜索的过
  • 华为OD机试真题-评论转换输出-2023年OD统一考试(B卷)

    题目描述 在一个博客网站上 每篇博客都有评论 每一条评论都是一个非空英文字母字符串 评论具有树状结构 除了根评论外 每个评论都有一个父评论 当评论保存时 使用以下格式 首先是评论的内容 然后是回复当前评论的数量 最后是当前评论的所有子评论
  • 服务器显示中国移动,中国移动服务器地址是什么

    中国移动服务器地址是什么 内容精选 换一换 域名的DNS服务器定义了域名用于解析的权威DNS服务器 通过华为云注册成功的域名默认使用华为云DNS进行解析 详细内容 请参见华为云DNS对用户提供域名服务的DNS是什么 若您选择非华为云DNS进
  • 微服务部署:蓝绿部署、滚动部署、灰度部署(金丝雀部署)、功能开关发布

    简介 产品或项目不可能一步到位 一次性推向用户 故而有版本的存在 在app版本更新或者项目迭代的过程中 不可避免需要发布 发布就是部署 部署就是修改 修改则意味着风险 目前有很多用于部署的技术 本文将目前常用的布署方案做一个总结 备注 本文
  • C++指针的注意事项

    1 定义指针时 切勿忘记初始化 2 当指针作为函数参数时 函数体内记得判空 3 动态申请内存时 不要忘记判断内存申请是否成功 4 勿忘释放内存 并且只释放堆内存 即动态申请的内存 5 内存释放后 记得将指针置空 6 函数返回值一定不要是局部
  • 恶意域名解析

    原因 今天在使用搜狗搜索我们公司的网站名称的时候搜索到一个域名为 test99 cn的网站 打开直接弹出了我们的后台管理系统 后果 非法网站被工信部扫描到之后 将会影响到该主机客户的域名备案等信息 另外我们的后台管理系统就这样被暴露了 解决
  • linux内核配置支持ipv6,Linux系统IPv6配置

    1 自动获取IPV6地址 修改 etc sysconfig network文件 加入下列配置文本 NETWORKING IPV6 yes 然后 运行命令service network restart 用命令ifconfig a 查看IPV6
  • 远程RPC+插桩巧解瑞数5,人人都能懂的瑞数(附源码)

    前言 众所周知 rpc对于一些复杂的加密有奇效 我们只需要找到加密函数所在的位置即可通过RPC远程调用 从而省去了扣代码补环境等掉头发过程 本篇以维普期刊为例 一探瑞数的奥秘 1 抓包分析请求接口 通过抓包分析可知 我们要找的url是Sea
  • 学习笔记-Matlab算法篇-差分方程建模

    差分方程建模 01差分方程建模 02蛛网模型 问题提出 在自由竞争的社会中 很多领域会出现循环波动的现象 在经济领域中 可以从自由集市上某种商品的价格变化看到如下现象 在某一时期 商品的上市量大于需求 引起价格下跌 生产者觉得该商品无利可图
  • 诗词-- 收集

    摘自语录 1 所有的优越感 都来自缺乏见识和缺乏悲悯 2 如果一样东西你得到了 却觉得不过如此 那么这个东西其实是你的欲望 如果一样东西你得到了之后 依然爱不释手 那么这这才是你真正想要的 3 不行动的话 你永远都是观众 4 别用自我牺牲
  • Qt扫盲-QStackedWidget理论总结

    QStackedWidget理论总结 1 简述 2 布局用法 3 页面切换 4 常用功能 1 简述 QStackedWidget和QTabWidget的功能类似 都是为解决大量的控件在一个页面上可能显示不出来 同时呢 这些控件也可以按一定方
  • 学习笔记——git从远程仓库拉取代码修改并提交和本地代码提交到远程仓库

    最近开始学习使用git 找了好多博主的文章总结了一下 并非原创 多多指教 一 git从远程仓库拉取代码修改并提交 1 本地新建项目目录 2 从远程仓库拉取代码到本地 git clone git xxx xxx git 注 默认拉取的是mas
  • pytorch自学笔记(旧)

    pytorch自学笔记 数据预处理 心得笔记 代码分析 需要用到的包 如何预处理自己的图片文件 数据预处理 心得笔记 首先要理解一下pytorch中的神经网络的数据格式 通过print打印mnist数据的shape可以知道 输入pytorc
  • docker-stack一键编排lnmp

    环境要求 1 配置nfs存储卷 1 在docker swarm集群中所有节点都确认安装nfs客户端软件 yum install nfs utils rpcbind y 2 在192 168 122 1 上搭建nfs 共享目录给docker
  • 包含输入输出的 单元测试 Python unittest

    提交一个小task 需要编写单元测试 百度了一下 多数以基础的函数为主 没有涉及到包含输入输出项的测试 找了好久才找到这个 由于没找到转载项 只好搬过来了 还望原主海谅 import unittest import io import sy
  • PASCAL VOC数据集分析

    PASCAL VOC数据集分析 PASCAL VOC为图像识别和分类提供了一整套标准化的优秀的数据集 从2005年到2012年每年都会举行一场图像识别challenge 本文主要分析PASCAL VOC数据集中和图像中物体识别相关的内容 在