80 Million Tiny Image 图像数据

提供者:刘晓

地址:http://groups.csail.mit.edu/vision/TinyImages/

简介

80 Million Tiny Image 是一个图像数据集,包括 79302017张 分辨率为 32x32 的小图片。全部文件过大(约400GB)。
下载时包含了5个文件,网站上也提供了示例代码教你如何加载这些数据!


主要内容与使用

数据集详情

原始数据名称: 80 Million Tiny Image 图像数据
数据介绍: 80 Million Tiny Image 是一个图像数据集,包括 79302017张 分辨率为 32x32 的小图片。
属性数:
记录数:
无缺失值记录数:
数据来源: http://horatio.cs.nyu.edu/mit/tiny/data/index.html
文件类型: 二进制压缩文件
文件大小: 372.53 Gb

7900万图像存储在一个巨大的二进制文件中,大小为227Gb。每幅图像附带的元数据也位于一个巨大的文件中,大小为57Gb。为了从这些文件中读取图像/元数据,官网提供了一些Matlab包装函数。 有两种读取图像数据的功能版本: (i)loadTinyImages.m - 普通Matlab函数(无MEX),在32/64位下运行。按图像编号加载图像。默认使用这个。 (ii)read_tiny_big_binary.m - 用于64位MEX函数的Matlab封装。比(i)更快更灵活,但需要64位机器。 有两种类型的注释数据: (i)在annotations.txt中排序的手动注释数据,该数据保存手动检查的图像标签以查看图像内容是否与用于收集它的名词一致。一些其他信息,例如搜索引擎,也被存储。这些数据仅适用于很小一部分图像。 (ii)存储在tiny_metadata.bin中的自动注释数据,包括与图像聚集有关的信息,例如搜索引擎,哪个页面,网址缩略图等。这些数据适用于所有7900万图像。

文件

.tgz文件应该包含10个文件:

  • loadTinyImages.m – 读取微型图像数据,纯粹的Matlab版本
  • loadGroundTruth.m – 读取保存手动注释的annotations.txt文件
  • read_tiny_big_binary.m – 读取微小图像数据,64位Matlab / MEX版本
  • read_tiny_big_metadata.m – 读取微小图像元数据,64位Matlab / MEX版本
  • read_tiny_gist_binary.m – 读取微小的Gist,64位的Matlab / MEX版本
  • read_tiny_binary_big_core.c – 用于图像读取的64位MEX源代码
  • read_tiny_metadata_big_core.c – 用于读取元数据的64位MEX源代码
  • read_tiny_binary_gist_core.c – 供读者阅读的64位MEX源代码
  • compute_hash_function.m – 用于执行快速字符串搜索的效用函数,如read_tiny_big_binary.m和read_tiny_big_metadata.m
  • fast_str2num.m – 用于 - read_tiny_big_metadata.m的实用程序函数
  • annotations.txt – 保存注释图像列表的文本文件
  • README.txt – this file

同时下载的包括以下文件:

  • tiny_images.bin - 包含79,302,017张图像的227Gb文件
  • tiny_metadata.bin - 57Gb file holding metadata for all 79,302,017 images保存所有79,302,017张图像的元数据的57Gb文件
  • tinygist80million.bin - 114Gb文件为所有79,302,017张图像保存384-dim Gist描述符
  1. tiny_index.mat - 持有索引信息的7Mb文件,包括: 我们在tiny_images.bin中有图像的所有75,846个名词的word-cell数组 num_imgs - 所有75,846个名词的每个名词的#images矢量

使用说明

在使用之,你必须做两件事:

  • 在Matlab函数中设置绝对路径为二进制文件。总共需要设置7行:
    (i)loadTinyImages.m,第14行 - 设置tiny_images.bin文件的路径
    (ii)read_tiny_big_binary.m,第40行 - 设置tiny_images.bin文件的路径
    (iii)read_tiny_big_binary.m,第42行 - 设置tiny_index.mat文件的路径
    (iv)read_tiny_big_metadata.m,第63行 - 设置tiny_metadata.bin文件的路径
    (v)read_tiny_big_metadata.m,第65行 - 设置tiny_index.mat文件的路径
    (vi)read_tiny_gist_binary.m,第36行 - 设置tiny_index.mat文件的路径
    (vii)read_tiny_gist_binary.m,第38行 - 设置tiny_metadata.bin文件的路径

  • 如果使用MEX版本,则必须使用以下命令编译它们:
    (i)mex read_tiny_binary_big_core.c
    (ii)mex read_tiny_metadata_big_core.c
    (iii)mex read_tiny_binary_gist_core.c

以下是一些正在使用的脚本示例。请查看每个文件顶部的注释以获得更详细的解释。

loadTinyImages.m
---------------

% load in first 10 images from 79,302,017 images
img = loadTinyImages([1:10]);

% load in 10 images at random q = randperm(79302017);
img = loadTinyImages(q(1:10));
%% N.B. function does NOT sort indices, so sorting beforehand would
%% improve speed.




loadGroundTruth.m
-----------------

% read in contents of annotation.txt file
[imageFileName, keyword, correct, engine, ind_engine, image_ndx]=loadGroundTruth;
%%% the labeling convention in correct is:
% -1 = Incorrect, 0 = Skipped, 1 = Correct
% Note that this different to the 'label' field produced by % read_tiny_big_metadata below (meaning of -1 and 0 are swapped)
% but the annotation.txt file information should be used in preference to
% that from read_tiny_big_metadata.m


   64-bit MEX versions: 
-------------------- 

read_tiny_big_metadata.m
----------------------

% load in filenames of first 10 images
data = read_tiny_big_metadata([1:10],{'filename'});

% load in search engine used for
% first 10 images from noun 'aardvark';

data = read_tiny_big_metadata('aardvark',[1:10],{'engine'});

read_tiny_big_binary.m
----------------------

% load in first 10 images from 79,302,017 images
img = read_tiny_big_binary([1:10]);
% note output dimension is 3072x10, rather than 32x32x3x10 % as for loadTinyImages.m

% load in first 10 images from noun 'dog';
q = randperm(79302017);
img = read_tiny_big_binary('dog',q(1:10));
% function sorts indices internally for speed

% load in images for different nouns
img = read_tiny_big_binary({'dog','cat','mouse','pig'},{[1:5],[1:2:10],[8 13],[4:-1:1]});