内容
gzip压缩文件以供下载。在未压缩之后,它们采用简单的二进制矩阵格式,文件后缀为“.mat”。文件格式将在后面的部分中介绍。
“-dat”文件存储图像序列。“-cat”文件存储相应的图像类别。每个“-dat”文件存储29,160个图像对(6个类别,5个实例,6个照明,9个高程和18个方位角)。第6类用于没有对象的图像,可用于训练系统拒绝图像,而不是5个对象类别。每个相应的“-cat”文件包含29,160个类别标签(动物为0,人为1,飞机为2,卡车为3,汽车为4,空白为5)。
每个“-info”文件存储29,160个10维向量,其包含关于相应图像的附加信息。向量中的前4个元素是:
- 1.类别中的实例(0到9)
- 2.高程(0到8,表示相机是30,35,40,45,50,55,60,分别距离水平65,70度)
- 3.方位角(0,2,4,...,34,乘以10得到方位角度)
- 4.照明条件(0到5)
和接下来的6个元素描述了当叠加到杂乱的背景上时添加到对象的扰动。(见下一节)
对于常规培训和测试,“-dat”和“-cat”文件就足够了。如果需要某些其他形式的分类或预处理,则提供“-info”文件。
抖动的物体和破碎的背景
捕获后,处理每个图像,使对象在图像中居中(对象像素的质心位于图像的中心),缩放使得边界框大约为80x80像素,并放置在制服上背景,包括投射阴影。
然后将3个变化源添加到数据集中: - 对象被攻击 - 对象叠加到复杂背景上 - 将distractor对象添加到背景中
物体以5种方式随机地被扰乱。它们按0.78到1.0之间的因子进行缩放; 面内旋转-5至+5度; 并在水平和垂直方向上移动-6到+6像素。图像强度(在0到255的范围内)是-20到+20之间的随机值; 图像对比度在0.8到1.3的范围内。这些扰动存储在“-info”文件的最后6个元素中:
- 5.水平移位(-6到+6)
- 6.垂直移位(-6到+6)
- 7.亮度变化(-20到+20)
- 8.对比度(0.8到1.3)
- 9.对象比例(0.78到1.0)
- 10.旋转(-5到+5度)
从Corel图像库的自然场景图像的子集中提取复杂背景图像。这些图像包含具有大区域对比度的场景,例如湖泊山脉和不规则区域边界。
每个图像都添加一个分心器对象。牵开器位于图像的边界,但可能使主要物体在中心变得杂乱。
有些图像只有背景和干扰物。这些图像属于他们自己的类别,如类别文件中所示。
文件格式
文件以所谓的“二进制矩阵”文件格式存储,该文件格式是用于各种元素类型的向量和多维矩阵的简单格式。二进制矩阵文件以文件头开头,该文件头描述矩阵的类型和大小,然后是矩阵的二进制图像。
标题最好由C结构描述:
struct header {
int magic; // 4字节
int ndim; // 4个字节,小尾数
int dim [3];
};
请注意,当矩阵的维度少于3维时,比如说它是1D向量,那么dim [1]和dim [2]都是1.当矩阵的维度超过3时,标题后面会跟着更大的维度信息。否则,在文件头到来之后,矩阵数据与最后一维中的索引一起存储的变化最快。
幻数编码矩阵的元素类型:
-用于0x1E3D4C51单精度矩阵
- 0x1E3D4C52用于打包矩阵
- 0x1E3D4C53用于双精度矩阵
- 0x1E3D4C54为一个整数矩阵
- 0x1E3D4C55为字节矩阵
- 0x1E3D4C56一小段矩阵
由于文件是在Intel机器上生成的,因此它们使用little-endian方案对4字节整数进行编码。在使用big-endian的机器上读取文件时要特别注意。
- “-dat”文件存储尺寸为29160x2x108x108的4D张量。
- “-cat”文件存储尺寸为29,160的1D向量。
- “-info”文件存储尺寸为29160x10的2D矩阵。
这是一段Matlab代码,用于说明如何阅读一些示例文件。(为了避免endian混淆,我们读取标题的字节):
>> fid = fopen('norb-5x46789x9x18x6x2x108x108-training-10-dat.mat','r');
>> fread(fid,4,'uchar'); %result = [85 76 61 30],它是一个字节矩阵
>> fread(fid,4,'uchar'); %result = [4 0 0 0],ndim = 4
>> fread(fid,4,'uchar'); %result = [232 113 0 0],dim0 = 29160(= 113 * 256 + 232)
>> fread(fid,4,'uchar'); %result = [2 0 0 0],dim1 = 2
>> fread(fid,4,'uchar'); %result = [108 0 0 0],dim2 = 108
>> fread(fid,4,'uchar'); %result = [108 0 0 0],dim3 = 108
>> imshow(transpose(reshape(fread(108 * 108),108,108)),[0 255]); %显示第一张图片
>> fid = fopen('norb-5x46789x9x18x6x2x108x108-training-10-cat.mat','r');
>> fread(fid,4,'uchar'); %[84 76 61 30],整数矩阵
>> fread(fid,4,'uchar'); %[1 0 0 0] ndim = 1
>> fread(fid,4,'uchar'); %[232 113 0 0] dim0 = 29160(= 113 * 256 + 232)
>> fread(fid,4,'uchar'); %[1 0 0 0](忽略这个)
>> fread(fid,4,'uchar'); %[1 0 0 0](忽略这个)
>> fread(fid,10,'int'); %[0 1 2 3 4 5 0 1 2 3](在小端CPU上)
>> fid = fopen('norb-5x46789x9x18x6x2x108x108-training-10-info.mat','r');
>> fread(fid,4,'uchar'); %[84 76 61 30],整数矩阵
>> fread(fid,4,'uchar'); %[2 0 0 0] ndim = 2
>> fread(fid,4,'uchar'); %[232 113 0 0] dim0 = 29160(= 113 * 256 + 232)
>> fread(fid,4,'uchar'); %[10 0 0 0] dim1 = 10
>> fread(fid,4,'uchar'); %[1 0 0 0](忽略这个)
>> fread(fid,10,'int'); %[8 5 10 4 -3 0 -6 1 0 -4](在小端CPU上)
这是从“norb-5x46789x9x18x6x2x108x108-training-10-dat.mat”读取的前30个图像对的屏幕截图,排列自上而下和从左到右(列主要)。每对下面的标题显示相应“-cat.mat”和“-info.mat”文件中的内容。它们是“类别/实例/高程/方位角/照明”。对于背景图像,后面的4个数字都是-1。