Open Images V4 下载自己需要的类别
OpenImages V4数据集描述
1)这个v4数据集主要有两种用途:
对象检测及分类,意思是说可以用这个数据集训练出对象检测模型,用于识别图像中的对象类别及位置边框。
视觉关系检测,比如你用这个v4数据集训练好一个模型,然后给模型一张图,模型会告诉你“女人在弹吉它”。
2)根据上面说的两个用途,google已经贴心的为你把这个数据集分成两份(共9,011,219张图,这两种数据集的图片不是互斥的,它们有相同的图片),每份又分成了训练集,验证集,测试集。
3)所有作用于对象检测及分类的图片主要特性是有边界框,一张图中可能有多个边界框
我们试着从官网的Boxes这一行下载一个下来,是个csv文件,我们暂称它为边界框表
其中各个字段如下所
ImageID:边界框id,可以理解成一个外键,具体的描述在另一个文件里。
Source:表示边界框是如何制作的:
freeform并且xclick是手动绘制的边界框。
activemil是使用该方法的增强版生成的边界框。在IoU> 0.7时,这些经过人为验证是准确的。
LabelName:此框属于的对象类的MID。
Confidence:虚拟值,始终为1。
XMin,XMax,YMin,YMax:框的坐标,在标准化图像坐标。XMin在[0,1]中,其中0是最左边的像素,1是图像中最右边的像素。Y坐标从顶部像素(0)到底部像素(1)。
这些属性具有以下定义:
IsOccluded:表示该对象被图像中的另一个对象遮挡。
IsTruncated:表示对象超出图像的边界。
IsGroupOf:表示边界框跨越一组对象(例如,花坛或一群人)。我们要求注释者使用这个标签来处理5个以上的实例,这些实例会严重遮挡对方,并且会触及身体。
IsDepiction:指示对象是描述(例如,对象的卡通或图画,而不是真实的物理实例)。
IsInside:表示从对象内部拍摄的照片(例如,汽车内部或建筑物内部)
从Image labels行下载一个文件后,可以看到是标签类别,一幅图上有几个对象,就给你打几个标签,我们暂称它为分类标签表,可做图像分类用。
Source:表示注释的创建方式:verification 是由Google内部注释人员验证的标签。crowdsource-verification是由Crowdsource应用程序验证的标签。machine是机器生成的标签。
Confidence:经人工验证出现在图像中的标签的置信度= 1(正标签)。经过人工验证的图像中缺失的标签的置信度= 0(负标签)。机器生成的标签具有部分置信度,通常> = 0.5。信心越高,标签成为假阳性的机会就越小。
从Image IDs行下载文件后,可以看到是图像的相关信息,它包含图片网址,OpenImages ID,轮换信息,标题,作者和许可证信息,我们暂称它为图片表,可以看得出来,几乎所有的图像都来自flickr网站。每个图像都有一个唯一的64位ID分配。在CSV文件中,它们显示为零填充的十六进制整数,例如000060e3121c7305。
数据与目标网站上显示的数据相同。OriginalSize 是原始图像的下载大小。OriginalMD5是base64编码二进制MD5,如所描述这里。Thumbnail300KURL是约300K像素(〜640x480)的缩略图的可选网址。它提供了为了方便下载数据而没有更方便的方式来获取图像。如果丢失,OriginalURL必须使用(如果需要,然后调整大小相同的大小)。这些缩略图会随时生成,其内容甚至解析度可能每天都会有所不同。Rotation是,图像应逆时针转动,以匹配Flickr用户预期的方向(多少度0,90,180,270)。nan意味着这些信不可用。查看此公告以获取有关此问题的更多信息。我们可以按照这个地址,自已一个一个去下,或者去第一行那边下完整的包都是可以的。
第五行Metadata是元数据,就是分类实际名称,我们暂称它为标签表。
可以将MID格式的类名转换为简短描述,
请注意逗号和引号等字符的存在。该文件遵循标准的CSV转义规则。

可以分析得出,它们形成了一个数据库表关系,是简单的外键关系,图片表描述图片信息,最重要是下载地址,边界框表主要描述一张图有几个边框,它与图片表通过外键ImageID关联,同时每个边框具体属于哪个分类,又要通过LabelName外键和标签表关联。
参考资源:https://blog.csdn.net/wulala789/article/details/80646618
但是到官网下载的时候要一次性下载所有的部分,不仅文件很大,而且下载的也不大快,更重要的是自己训练要用到的类别并不多。正当我手足无措时,刚好就在github上看到了相关的issues(https://github.com/cvdfoundation/open-images-dataset/issues/8)。
我采用的是里面介绍到的工具箱的方法(https://github.com/EscVM/OIDv4_ToolKit),实际操作起来也挺顺利的。
工具箱的介绍:
~OIDv4 ToolKit~
是否想要构建您的个人物体探测器但是您没有足够的图像来训练您的模型?
想训练你的个人图像分类器,但你厌倦了ImageNet的致命缓慢?
您是否已经发现Open Images Dataset v4具有600个类和超过1,700,000个图像以及可以使用的相关边界框?
你想为你的项目利用它,但你不想下载千兆字节和千兆字节的数据!?
使用此存储库,我们可以帮助您尽可能轻松地充分利用此数据集。
特别是,使用Python3编写的这个实用的ToolKit,我们为您提供以下选项:对象检测和图像分类任务:
(2.0)物体检测
- 分别下载600个数据集中的任何一个,负责为每个下载的图像创建相关的边界框
- 同时下载多个类,为每个类创建单独的文件夹和边界框
- 下载多个类并使用每个图像的唯一注释文件为所有这些类创建公共文件夹
- 下载具有所需属性的单个类或多个类
- 使用实用的可视化工具来检查已下载的类
(3.0)图像分类
- 在一个共同的标签文件夹中下载任何19,794个类
- 利用数十种可能的命令来仅选择所需的图像(例如仅测试图像)
接下来是使用工具箱的一些笔记,在Readme里面我们能通过
python main.py -h
看到工具箱的一些官方帮助介绍(我谷歌翻译的):
用法:main.py [-h] [--Dataset/path/to/OID/csv/] [-y]
[ - 类列表[类列表...]]
[--type_csv'train'或'validation'或'test'或'all']
[--sub 子人验证图像的子集或机器生成的h或m)]
[--image_IsOccluded 1或0] [ - image_IsTruncated 1或0]
[--image_IsGroupOf 1或0] [ - image_IsDepiction 1或0]
[--image_IsInside 1或0] [--multiclasses 0(默认值或1)
[--n_threads [默认20]] [--noLabels]
[--limit integer number]
<command>'downloader','visualizer'或'ill_downloader'。
Open Image Dataset Downloader
打开图像数据集下载程序
位置参数:
<command>'downloader','visualizer'或'ill_downloader'。
'downloader','visualizer'或'ill_downloader'。
可选参数:
-h, --help 显示此帮助消息并退出
--Dataset /path/to/OID/csv/
OID数据集文件夹的目录
-y, --yes 是和是可以下载丢失的文件
- 类列表[类列表...]
所需类的“字符串”序列
--type_csv'train'或'validation'或'test'或'all'
从什么csv搜索图像
--sub 人工验证图像或机器生成的子集(h或m)
从人类验证的数据集或从
机器生成一个。
--image_IsOccluded 1或0
图像的可选特征。表示
对象被图像中的另一个对象遮挡。
--image_IsTruncated 1或0
图像的可选特征。表示
对象超出图像的边界。
--image_IsGroupOf 1或0
图像的可选特征。表示
盒子跨越一组物体(分钟5)。
--image_IsDepiction 1或0
图像的可选特征。表示
对象是一个描述。
--image_IsInside 1或0
图像的可选特征。表示a
从对象内部拍摄的照片。
--multiclasses 0(默认值)或1
分别(0)或一起下载不同的类
(1)
--n_threads [默认20]
要使用的线程数
--noLabels 没有标签创作
--limit integer number
要下载的图像数量的可选限制
因为我要下载的类别不止两位数,所以我修改了classes.txt中的类别,在文本中输入了自己需要的种类,最后通过指令
python main.py downloader --classes ./OpenImageV4/OIDv4_ToolKit/classes.txt --type_csv validation
python main.py downloader --classes ./OpenImageV4/OIDv4_ToolKit/classes.txt --type_csv train
python main.py downloader --classes ./OpenImageV4/OIDv4_ToolKit/classes.txt --type_csv test #也可以用--type_csv all 直接下载所有的图片集合
就可以分别下载物体检测任务下的验证集、训练集和测试集合了。
个人感觉下载的速度也不大快,看了下终端,发现训练集中有的类别的图片数目达到了几万张,而实际训练中其实没必要用到这么多图片,所以这时候应该在指令中加上--limit 30(30可以换成自己需要的图片数量)
Open Images V4 下载自己需要的类别的更多相关文章
- 一键GHOST优盘版安装XP/win7系统
系统的安装方法有各种各样,一键GHOST优盘版也是其中的一种系统安装方法,也是俗称的U盘系统安装.下面豆豆来详细介绍下使用一键GHOST优盘版系统安装方法. 一.安装: 所谓"优盘" ...
- 【Detection】物体识别-制作PASCAL VOC数据集
PASCAL VOC数据集 PASCAL VOC为图像识别和分类提供了一整套标准化的优秀的数据集,从2005年到2012年每年都会举行一场图像识别challenge 默认为20类物体 1 数据集结构 ...
- 01 . Vue简介,原理,环境安装
简介 vue是一个JavaMVVM库,是一套用于构建用户界面的渐进式框架,是初创项目的首选前端框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计.它是轻量级的,它有很多独立的功能或库 ...
- 【随笔】从gitHub上获取源码
有时候,需要从gitHub上获取源码,下面介绍几个方法: 1.获取链接: 打开gitHub代码库的页面,能在右边看到这个: 点击红圈里的标记,该链接就会复制下来. 然后,如果安装了小乌龟(Tortoi ...
- android文件管理器源码、斗鱼直播源码、企业级erp源码等
Android精选源码 文件清理管理器 自定义水平带数字的进度条以及自定义圆形带数字的进度条 利用sectionedRecyclerViewAdapter实现分组列表的recyclerView源码 流 ...
- FCN 项目部分代码学习
下面代码由搭档注释,保存下来用作参考. github项目地址:https://github.com/shekkizh/FCN.tensorflowfrom __future__ import prin ...
- SecureCRT 用法总结
SecureCRT 用法总结 1.下载与破解方法: Mac:https://www.jianshu.com/p/9427f12b1fdb Window:https://drive.google.c ...
- composer 的设计原理及其基本用法
相信有在用PHP的朋友近年来常听到composer这个套件管理工具.它到底是做什么用的?又是为了解决什么问题而存在呢? 要了解这个,得先从历史开始说起…. PHP最早加载类的方法 初学PHP时,最早会 ...
- caffe学习(1):多平台下安装配置caffe
如何在 centos 7.3 上安装 caffe 深度学习工具 有好多朋友在安装 caffe 时遇到不少问题.(看文章的朋友希望关心一下我的创业项目趣智思成) 今天测试并整理一下安装过程.我是在阿 ...
随机推荐
- Win10系统下应用窗口任务栏居中效果
实现步骤: 在资源管理器中新建文件夹,一定要保证文件夹内无任何文件 任务栏上鼠标右键,移动到工具栏上,选择新建工具栏 选择新建的空文件夹 空文件夹出现在任务栏后,鼠标可以拖动工具栏前的两条竖线(图片上 ...
- Java框架之Spring01-IOC-bean配置-文件引入-注解装配
Spring 框架,即framework.是对特定应用领域中的应用系统的部分设计和实现的整体结构.就相当于让别人帮你完成一些基础工作,它可以处理系统很多细节问题,而且框架一般是成熟,稳健的. Spri ...
- Salesforce LWC学习(十一) port 1717报错的处理
使用vs code开发lwc的步骤,通常为先创建项目(create project)然后授权一个org(authorize an org),授权以后我们通常便会download代码到本地或者Uploa ...
- JAVA封装、继承、多态
封装 1.概念: 将类的某些信息隐藏在类的内部,不允许外部程序访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: a.只能通过规定的方法访问数据 b.隐藏类的实例细节,方便修改和实 ...
- stormzhangB站直播之总结
此文转自个人微信公众号,原链接为:https://mp.weixin.qq.com/s?__biz=MzUxODk0ODQ3Ng==&mid=2247484313&idx=1& ...
- 8.JavaSE之变量、常量、作用域
变量variable: 变量是什么:就是内存中开辟的可以变化的量! Java是一种强类型语言,每个变量都必须声明其类型. Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型,作用域 ...
- 最新中级java面试总结
最近面试了不少家公司,从一家非外包跳到了外包(委屈脸Ծ‸Ծ),下面总结一下最近的一些心得体会 1.如果在做技术只是为了过日子,而没多大兴趣,那你必须需要考虑一下行业发展方向了.选定一个行业,深入某个行 ...
- 18年第一弹射 和网络有关; 艾曲塞嗯诶系列篇 one
1:当指定接口运行在RIP2组播方式时,以下说法正确的是 2个答案 A 只接收RIPv2组播报文 B 不接收RIPV1 广播报文 2 下面哪条命令是把PPP的认证方式设置为PAP? C ppp au ...
- 关于DockerFile组件,java8新特性的AWT组件,
前段时间由于公司业务开发了App产品,产品用CocosCreator打出来的App, 用的时候,发现获取验证码,获取不到值,折腾了几天,一开始欢迎安装的jdk有问题,但是几次验证不是jdk的问题, 最 ...
- 小程序--->scroll-view组件不能触发相应滚动事件
小程序scroll-view组件不能触发相应滚动事件 在制作加载更多时会发现不能触发相应事件,一般情况下首先要查看两个必要的属性scroll-view的高度是否设置,第二就是scroll-view的滚 ...