Matlab:数据集读取 imageDatastore() 的用法 您所在的位置:网站首页 matlab自带的数据集 Matlab:数据集读取 imageDatastore() 的用法

Matlab:数据集读取 imageDatastore() 的用法

2024-07-06 18:22| 来源: 网络整理| 查看: 265

在做机器学习时经常要分类读取数据,自己写还是有点繁琐的,MATLAB已经内嵌的imageDatastore使用起来很方便。 imageDatastore()函数用于读取指定路径下的所有文件 使用语法: ImageDatastore(path,Name,Value) 输入参数为文件(夹)路径,以及一些键值对,输出为一个ImageDatastore对象。 直接看例子吧,现在要读取下图MNIST的训练集 在这里插入图片描述

path_train = 'F:\手写体识别\新建文件夹\train'; imds_train = imageDatastore(path_train,'IncludeSubfolders',true,'FileExtensions','.jpg',... 'LabelSource','foldernames'); path_train = 'F:\手写体识别\新建文件夹\train'; folders_train = fullfile(path_train,{'0' '1' '2' '3' '4' '5' '6' '7' '8' '9'}); imds_train = imageDatastore(folders_train, 'FileExtensions','.jpg',... 'LabelSource','foldernames');

两种输出结果是一样的,区别在于imageDatastore的输入路径,如果只输入上级目录(上图的train),则需要加上’IncludeSubfolders’,true键值对输入。上面代码已经涵盖了常用的三个键值对。Fullfile也是很好用的函数。 ‘IncludeSubfolders’ :是否包含子文件夹 ‘FileExtensions’ :文件扩展名 ‘LabelSource’ :Label来源 此外,‘ReadSize’:使用read()函数每次读取多少文件 输出结果如下:

imds_train = ImageDatastore - 属性: Files: { 'F:\手写体识别\新建文件夹\train\0\0_1.jpg'; 'F:\手写体识别\新建文件夹\train\0\0_10.jpg'; 'F:\手写体识别\新建文件夹\train\0\0_100.jpg' ... and 59997 more } Folders: { 'F:\手写体识别\新建文件夹\train' } Labels: [0; 0; 0 ... and 59997 more categorical] AlternateFileSystemRoots: {} ReadSize: 1 SupportedOutputFormats: [1×5 string] DefaultOutputFormat: "png" ReadFcn: [function_handle]

已经读取到60000个训练数据的文件路径和对应的label,注意这里只读取了文件路径,并没有读入数据,而且也不需要专门读出来。

最后介绍ImageDatastore对象的几个常用对象函数

countEachLabel 作用:对每种标签的数据进行计数 用法:countEachLabel(imdsn) 注:imds为ImageDatastore对象,下同preview 作用:读取一个数据,经过测试好像就是读取第一个,像是一个预览的功能 用法:preview(imds)read 作用:从ImageDatastore对象中读出数据,注意这里直接是数据了,一次读取ReadSize个,而且是顺序读取,比如我第一次使用read(imds),返回前ReadSize个数据,再使用read(imds),返回的是ReadSize+1~2*ReadSize的数据,像是batchsize 用法:read(imds)readall 作用:读取所有数据 用法:readall(imds)readimage 作用:按索引读取图像 用法:readimage(imds,i),i代表第i个数据hasdata 作用:判断是否有数据可读,如果ImageDatastore里的数据不够一个ReadSize了,则为hasdata(imds)会返回0 用法:hasdata(imds)reset 作用:将数据存储重置为初始状态,相当于重置了read函数,从头开始读 用法:reset(imds)shuffle 作用:打乱数据顺序 用法:shuffle(imds)splitEachLabel 作用:按比例拆分数据,每个标签都拆分相同比例 用法:splitEachLabel(imds,0.8,0.2)combine 作用:合并数据集 用法:combine(imds1,imds2,…,imsdN)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有