内容简介:常用图像数据集原始数据(.png或.jpg格式)生成方法
在计算机视觉方面的工作,我们常常需要用到很多图像数据集.像ImageNet这样早已大名鼎鼎的数据集,我等的百十个G的硬盘容量怕是怎么也承载不下;本文中,将给出一些Hello world级的图像数据集生成方法,以及其他相关图像数据资源的整理.
本文的主要内容包括:
- MNIST, CIFAR-10, CIFAR-100等.png或.jpg格式数据集的生成方法;
- 如何编写脚本生成图像数据,并更根据标签文件自动归类;
- 如何使用Digist工具生成这些数据集;
- .h5格式数据文件格式查看方式;
- 相关数据集的下载地址.
生成图像数据
MNIST, CIFAR-10, CIFAR-100等数据在其官网都有相关的介绍,这里也给出相关的数据集的官方地址:
通过官网的介绍可以看出,官网给出的数据集大多都是二进制格式和一些python,matlab格式;有时候我们需要的是原始图像数据,这个时候我们就需要使用代码或者借助其他 工具 自己生成了.
代码生成的方式,在网上也有很多,但良莠不齐.大多需要自己根据官网给出的数据格式,自己更具格式特征生成原始数据,这里就不做具体介绍了,网上有很多.这里介绍一些比较简单快捷的方式,来帮助我们快速得到原始图像数据.
CIFAR-10 图像数据
这部分是我从 kaggle cifar-10 官网 提供的CIFAR-10数据集生成的,原始数据集(.png格式,比较符合我们的要求),但存在一个问题,所给的图片混乱的排列在train目录下,未按照原始10分类进行分类,但好在给出了trainLabels.csv类别映射文件;所以,我们需要解决的首要问题就是,根据这个映射文件自动分成10类别,并存放在10个文件目录下.
下边直接给出我的代码:
# coding: utf-8 import csv import os import shutil import sys # 获取文件名(除去后缀) defgetImageFilePre(filename): if filename.endswith(".png"): temp = filename.split(".") filePre = temp[0] return filePre # string 转 int defstr2Int(stringValue): return int(stringValue) # int 转 string defint2Str(intValue): return str(intValue) # 文件重命名 deffileRename(dirPath): # 三个参数:分别返回 # 1.父目录 # 2.所有文件夹名字(不含路径) # 3.所有文件名字 for parent, dirnames, filenames in os.walk(dirPath): for dirname in dirnames: #输出文件夹信息 count = 1 newTmpPath = os.path.join(dirPath, dirname) os.chdir(newTmpPath) fileContents = os.listdir(newTmpPath) for curFile in fileContents: if curFile.endswith(".png"): newName = dirname + "."+ int2Str(count) + ".png" count = count + 1 shutil.move(curFile, newName) print curFile + " -> " + newName + " ------> OK!" defmain(): # 读取标签文件内容 csvfile = file('trainLabels.csv', 'rb') reader = csv.reader(csvfile) reader = list(reader) # 转化为list列表 # 读取目录下文件列表 dirPath = "F:\\xxxxx\\data_origin\\train_200" os.chdir(dirPath) dirContents = os.listdir(dirPath) dirContents.sort(key=lambda x:int(x[:-4])) #按文件名排序 totalFiles = 50001 for num in range(1, totalFiles): # 0-199 labelContent = reader[num] labelID = reader[num][0] labelName = reader[num][1] imageFilename = dirContents[num-1] tmpFilePre = getImageFilePre(dirContents[num-1]) if str2Int(labelID) == str2Int(tmpFilePre): print "labelID == filePre !!!" baseDirPath = "F:\\xxxxx\\data_origin\\train_with_class" new_dir_name = labelName new_dir_path = os.path.join(baseDirPath, new_dir_name) isExists = os.path.isdir(new_dir_path) if not isExists: os.makedirs(new_dir_path) print new_dir_path + " 创建成功!" else: print new_dir_path + "目录已存在!" shutil.copy(imageFilename, new_dir_path) print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" csvfile.close() rootPath = "F:\\xxxxx\\data_origin\\train_with_class" fileRename(rootPath) if __name__ == '__main__': main()
这样,便分成了10个类别,并根据类别存放在不同的目录下,每一类别5000张图片;在我的Windows平台下耗时1.5个小时(包括文件重命名)才跑完,确实有点慢.下图为最终的结果图:
caffe图像化操作工具digits工具生成图像数据集
详细的使用方法可移步这篇博文: http://www.cnblogs.com/denny402/p/5136155.html
需要安装caffe和digits工具,使用工具可直接生成自动归类的图片数据,速度很快可以一试.
.h5文件结构查看器
在做卷积神经网络的时候,我们经常需要保存.h5数据文件,但有时候我们需要利用这些.h5文件,比如在进行transfor Learning的时候,就需要根据.h5文件的格式进行层冻结.
除了自己用代码一窥.h5文件结构外,还有什么快捷的工具吗?有的,matlab就提供了现成的调用方法.文档地址在这里: http://cn.mathworks.com/help/matlab/ref/h5disp.html
如,我们可以使用matlab命令查看vgg16模型的权重结构
>> h5disp('vgg16_weights.h5')
结果显示如下:
>> h5disp('vgg16_weights.h5') HDF5 vgg16_weights.h5 Group '/' Attributes: 'nb_layers': 37 Group '/layer_0' Attributes: 'nb_params': 0 Group '/layer_1' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x3x64 MaxSize: 3x3x3x64 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 64 MaxSize: 64 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_10' Attributes: 'nb_params': 0 Group '/layer_11' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x128x256 MaxSize: 3x3x128x256 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 256 MaxSize: 256 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_12' Attributes: 'nb_params': 0 Group '/layer_13' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x256x256 MaxSize: 3x3x256x256 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 256 MaxSize: 256 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_14' Attributes: 'nb_params': 0 Group '/layer_15' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x256x256 MaxSize: 3x3x256x256 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 256 MaxSize: 256 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_16' Attributes: 'nb_params': 0 Group '/layer_17' Attributes: 'nb_params': 0 Group '/layer_18' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x256x512 MaxSize: 3x3x256x512 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 512 MaxSize: 512 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_19' Attributes: 'nb_params': 0 Group '/layer_2' Attributes: 'nb_params': 0 Group '/layer_20' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x512x512 MaxSize: 3x3x512x512 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 512 MaxSize: 512 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_21' Attributes: 'nb_params': 0 Group '/layer_22' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x512x512 MaxSize: 3x3x512x512 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 512 MaxSize: 512 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_23' Attributes: 'nb_params': 0 Group '/layer_24' Attributes: 'nb_params': 0 Group '/layer_25' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x512x512 MaxSize: 3x3x512x512 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 512 MaxSize: 512 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_26' Attributes: 'nb_params': 0 Group '/layer_27' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x512x512 MaxSize: 3x3x512x512 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 512 MaxSize: 512 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_28' Attributes: 'nb_params': 0 Group '/layer_29' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x512x512 MaxSize: 3x3x512x512 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 512 MaxSize: 512 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_3' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x64x64 MaxSize: 3x3x64x64 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 64 MaxSize: 64 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_30' Attributes: 'nb_params': 0 Group '/layer_31' Attributes: 'nb_params': 0 Group '/layer_32' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 4096x25088 MaxSize: 4096x25088 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 4096 MaxSize: 4096 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_33' Attributes: 'nb_params': 0 Group '/layer_34' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 4096x4096 MaxSize: 4096x4096 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 4096 MaxSize: 4096 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_35' Attributes: 'nb_params': 0 Group '/layer_36' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 1000x4096 MaxSize: 1000x4096 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 1000 MaxSize: 1000 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_4' Attributes: 'nb_params': 0 Group '/layer_5' Attributes: 'nb_params': 0 Group '/layer_6' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x64x128 MaxSize: 3x3x64x128 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 128 MaxSize: 128 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_7' Attributes: 'nb_params': 0 Group '/layer_8' Attributes: 'nb_params': 2 Dataset 'param_0' Size: 3x3x128x128 MaxSize: 3x3x128x128 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Dataset 'param_1' Size: 128 MaxSize: 128 Datatype: H5T_IEEE_F32LE (single) ChunkSize: [] Filters: none FillValue: 0.000000 Group '/layer_9' Attributes: 'nb_params': 0
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 数据生成工具 ZenData 发布 2.1 版本,新增 ProtoBuf 数据生成等特性
- faker生成器生成虚拟数据的Python模块
- 模拟测试数据的生成方法
- 测试数据生成工具 datafaker
- 数据生成工具 ZenData 1.4 发布,内置国家、日期、时间格式,支持文章生成
- 数据生成工具 ZenData 发布 2.0 版本,自动生成“互联网黑话”!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Machine Learning
Kevin Murphy / The MIT Press / 2012-9-18 / USD 90.00
Today's Web-enabled deluge of electronic data calls for automated methods of data analysis. Machine learning provides these, developing methods that can automatically detect patterns in data and then ......一起来看看 《Machine Learning》 这本书的介绍吧!