此示例显示如何创建,读取和增强图像数据存储,以用于培训深度学习网络。特别是,此示例显示了如何创建一个imageageAtastore.
来自图像集合的对象,读取和提取数据存储的属性,并创建一个AugmentedimageGedataStore.
在培训期间使用。
用A.imageageAtastore.
对象管理一系列无法完全适合内存的图像集合。大量图像在深度学习应用中很常见,这通常涉及培训数千个标记的图像。这些图像通常存储在文件夹中,其中包含每个类的图像的子文件夹。
此示例使用示例食物图像数据集,其中包含978张食物拍摄九个类,大约为77 MB。下载exampleFoodImageDataset.zip.
来自MathWorks网站的文件,然后解压缩文件。
zipfile = matlab.internal.examples.Download万博1manbetxSupportFile('nnet'那'data / exampleFoodImageGageTaset.zip');filepath = fileparts(zipfile);datafolder = fullfile(filepath,'exampleFoodImageTataSet');解压缩(ZipFile,DataFolder);
此数据集中的图像分为每个类的子文件夹。
从路径和子文件夹中的图像中创建图像数据存储。使用文件夹名称作为标签名称。
FoodImds = imageageAtastore(DataFolder,......'insertumbfolders',真的,......'labelsource'那'foldernames');
提取数据存储的属性。
找到观察总数。此数据集有978个观察分为九个类。
numobs = length(foodimds.labels)
numobs = 978.
找到每班的观察数。您可以看到,此数据集不包含每个类中的相同数量的观察。
numobsperclass = counteChentlabel(Foodimds)
numobsperclass =9×2表标签数______________ _____ caesar_salad 26 caprese_salad 15法语_fries 181 grees_salad 24汉堡238 Hot_dog 31披萨299生鱼片40寿司124
您还可以使用直方图可视化类标签的分发。
直方图(Foodimds.Labels)Set(GCA,'ticklabelinterpreter'那'没有任何')
通过查看数据存储区的随机选择,检查数据是否正常。
numobstoshow = 8;idx = randperm(numobs,numobstoshow);imshow(imtile(foodimds.files(idx),'gridsize',[2 4],'thumbnailsize',[100 100]))
您还可以查看属于特定类的图像。
类=“比萨”;idxclass = find(foodimds.labels == class);idx = randsample(idxclass,numobstoshow);imshow(imtile(foodimds.files(idx),'gridsize',[2 4],'thumbnailsize',[100 100])));
要仔细查看数据存储或文件夹中的单个图像,请使用图像浏览器(图像处理工具箱)应用程序。
增强使您可以培训网络以不变地扭曲图像数据中的扭曲。例如,您可以将随机旋转添加到输入图像,使得网络不变地旋转。一个AugmentedimageGedataStore.
对象提供了一种方便的方法来应用有限的增强到2-D图像以进行分类问题。
定义增强方案。该方案应用[-90,90]度之间的随机旋转和[1,2]之间的随机缩放。增强数据存储自动调整图像的大小输入
培训期间的价值。
imageaugmenter = imagedataAugmenter(......'randroatation',[ - 90 90],......'randscale',[1 2]);InputSize = [100 100];
使用增强方案,定义增强图像数据存储。
AugfoodImds = AugmentedimageGageAtastore(输入,食品,......'dataaugmentation',imageaugmender);
增强的数据存储包含与原始图像数据存储相同数量的图像。
augfoodimds.numobservations.
ANS = 978.
当您使用增强图像数据存储作为训练图像的来源时,数据存储随机仔细使用每个时代的训练数据,其中epoch是通过整个训练数据集的训练算法的完整通行证。因此,每个时代使用略微不同的数据集,但每个时代中的训练图像的实际数量不会改变。
可视化要用于培训网络的增强图像数据。
将数据存储播放。
Augfoodimds = Shuffle(Augfoodimds);
这AugmentedimageGedataStore.
对象在读取数据存储时应用转换,并且不会在内存中存储变换的图像。因此,每次阅读相同的图像时,都会看到所定义的增强的随机组合。
使用读
读取增强数据存储的子集。
subset1 =读取(八卦食品);
在调用读取并再次读取数据存储的子集之前将数据存储重置为其状态。
重置(Augfoodimds)子集2 =读取(八福品种);
显示增强图像的两个子集。
imshow(imtile(subset1.input,'gridsize',[2 4]))
imshow(imtile(subset2.input,'gridsize',[2 4]))
您可以看到这两个实例都显示了具有不同变换的相同图像。将转换应用于图像中有用于深度学习应用程序,因为您可以在随机更改图像的随机版本上培训网络。这样做使网络从该类公开到不同的图像变化,并且即使它们具有不同的视觉属性,也可以学习分类图像。
创建数据存储区对象后,使用深网络设计师应用程序或Trainnetwork.
培训图像分类网络的功能。例如,看到使用净化网络转移学习。
有关预处理图像的更多信息,请参阅深度学习的预处理图像。您还可以使用更高级的增强,例如不同级别的亮度或饱和度,通过使用转变
和结合
功能。有关更多信息,请参阅深入学习的数据购物。
AugmentedimageGedataStore.
|深网络设计师|imageageAtastore.
|Trainnetwork.