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用户预期的方向(多少度090180270)。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 下载自己需要的类别的更多相关文章

  1. 一键GHOST优盘版安装XP/win7系统

    系统的安装方法有各种各样,一键GHOST优盘版也是其中的一种系统安装方法,也是俗称的U盘系统安装.下面豆豆来详细介绍下使用一键GHOST优盘版系统安装方法. 一.安装: 所谓"优盘" ...

  2. 【Detection】物体识别-制作PASCAL VOC数据集

    PASCAL VOC数据集 PASCAL VOC为图像识别和分类提供了一整套标准化的优秀的数据集,从2005年到2012年每年都会举行一场图像识别challenge 默认为20类物体 1 数据集结构 ...

  3. 01 . Vue简介,原理,环境安装

    简介 vue是一个JavaMVVM库,是一套用于构建用户界面的渐进式框架,是初创项目的首选前端框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计.它是轻量级的,它有很多独立的功能或库 ...

  4. 【随笔】从gitHub上获取源码

    有时候,需要从gitHub上获取源码,下面介绍几个方法: 1.获取链接: 打开gitHub代码库的页面,能在右边看到这个: 点击红圈里的标记,该链接就会复制下来. 然后,如果安装了小乌龟(Tortoi ...

  5. android文件管理器源码、斗鱼直播源码、企业级erp源码等

    Android精选源码 文件清理管理器 自定义水平带数字的进度条以及自定义圆形带数字的进度条 利用sectionedRecyclerViewAdapter实现分组列表的recyclerView源码 流 ...

  6. FCN 项目部分代码学习

    下面代码由搭档注释,保存下来用作参考. github项目地址:https://github.com/shekkizh/FCN.tensorflowfrom __future__ import prin ...

  7. SecureCRT 用法总结

    SecureCRT 用法总结   1.下载与破解方法: Mac:https://www.jianshu.com/p/9427f12b1fdb Window:https://drive.google.c ...

  8. composer 的设计原理及其基本用法

    相信有在用PHP的朋友近年来常听到composer这个套件管理工具.它到底是做什么用的?又是为了解决什么问题而存在呢? 要了解这个,得先从历史开始说起…. PHP最早加载类的方法 初学PHP时,最早会 ...

  9. caffe学习(1):多平台下安装配置caffe

    如何在 centos 7.3 上安装 caffe 深度学习工具   有好多朋友在安装 caffe 时遇到不少问题.(看文章的朋友希望关心一下我的创业项目趣智思成) 今天测试并整理一下安装过程.我是在阿 ...

随机推荐

  1. 基于C#的机器学习--垃圾邮件过滤

    在这一章,我们将建立一个垃圾邮件过滤分类模型.我们将使用一个包含垃圾邮件和非垃圾邮件的原始电子邮件数据集,并使用它来训练我们的ML模型.我们将开始遵循上一章讨论的开发ML模型的步骤.这将帮助我们理解工 ...

  2. 如何用visual studio code更好的编写python

    目录 1.先决条件 2.Visual Studio Code扩展安装Python 3.Visual Studio Code扩展安装Python for VSCode 4.Visual Studio C ...

  3. axios全局引用

    在vue项目开发中,我们使用axios进行ajax请求,很多人一开始使用axios的方式,会当成vue-resoure的使用方式来用,即在主入口文件引入import VueResource from ...

  4. Linux系统上安装配置MAVEN

    1,下载maven 首先进入maven下载目录:http://maven.apache.org/download.cgi 2,上传maven到linux系统 以下操作路径都是本人习惯,目录可以随意更改 ...

  5. Flask路由+视图补充

    一.路由设置的两种方法 1.装饰器 @app.route('/index/') def index(): return 'Hello World!' 2.源码 route->decorator- ...

  6. 网站 cache control 最佳实践

    推荐阅读: 2020年软件开发趋势 高并发案例 - 库存超发问题 负载均衡的分类及算法 异地多活架构 Postman 的替代品来了 有时,当第二次访问网站时,看起来比较怪,样式不正常. 通常,是因为 ...

  7. SpringMVC简单使用教程

    一.SpringMVC简单入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--conf ...

  8. C语言进阶——结构体,联合,枚举

    ----------------------------------------------------------我是一条划分线----------------------------------- ...

  9. 简单理解设计模式——享元模式-线程池-任务(tesk)

    前面在写到多线程的文章的时候,一直想写一篇关于线程池等一系列的文章,做一下记录,本篇博客记录一下设计模式中享元模式的设计思想,以及使用享元模式的实现案例——线程池,以及线程池的简化版——任务(tesk ...

  10. 你可能不知道的 Python 技巧

    英文 | Python Tips and Trick, You Haven't Already Seen 原作 | Martin Heinz (https://martinheinz.dev) 译者 ...