randomPatchExtractionDatastore

Datastore для извлечения случайных 2D или 3-D случайных закрашенных фигур от изображений или пикселя помечает изображения

Описание

randomPatchExtractionDatastore извлечения соответствующие случайным образом расположенные закрашенные фигуры от двух основанных на изображении хранилищ данных. Например, входные хранилища данных могут быть двумя хранилищами данных изображений, которые содержат сетевые входные параметры и желали сетевых ответов для того, чтобы обучить сети регрессии от изображения к изображению, или изображения основной истины и данные о пиксельных метках для того, чтобы обучить сети семантической сегментации.

Этот объект требует, чтобы у вас был Deep Learning Toolbox™.

Примечание

Когда вы используете randomPatchExtractionDatastore как источник обучающих данных, datastore извлекает несколько случайных закрашенных фигур из каждого изображения в течение каждой эпохи, так, чтобы каждая эпоха использовала немного отличающийся набор данных. Фактическое количество учебных закрашенных фигур в каждую эпоху является количеством учебных изображений, умноженных на PatchesPerImage. Закрашенные фигуры изображений не хранятся в памяти.

Создание

Описание

пример

patchds = randomPatchExtractionDatastore(ds1,ds2,PatchSize) создает datastore, который извлекает случайным образом расположенные закрашенные фигуры размера PatchSize от входных данных в datastore ds1 и данные об ответе в datastore ds2.

patchds = randomPatchExtractionDatastore(ds1,ds2,PatchSize,Name,Value) пары "имя-значение" использования, чтобы установить PatchesPerImage, DataAugmentation, и DispatchInBackground свойства. Можно задать несколько пар "имя-значение". Заключите каждое имя свойства в кавычки.

Например, randomPatchExtractionDatastore(imds1,imds2,50,'PatchesPerImage',40) создает datastore, который случайным образом генерирует 40 закрашенных фигур размера 50 50 пиксели от каждого изображения в хранилищах данных изображений imds1 и imds2.

Входные параметры

развернуть все

Входные данные, содержащие учебный вход к сети, заданной как ImageDatastore, PixelLabelDatastore, или TransformedDatastore. Если вы задаете TransformedDatastore, затем базовым datastore должен быть ImageDatastore или PixelLabelDatastore.

Определение PixelLabelDatastore требует Computer Vision Toolbox™.

Примечание

ImageDatastore позволяет чтение пакета JPG или упреждающую выборку использования файлов изображений PNG. Если вы используете пользовательскую функцию в чтении изображений, то упреждающей выборки не происходит.

Данные об ответе, представляющие желаемые сетевые ответы, заданные как ImageDatastore, PixelLabelDatastore, или TransformedDatastore. Если вы задаете TransformedDatastore, затем базовым datastore должен быть ImageDatastore или PixelLabelDatastore.

Определение PixelLabelDatastore требует Computer Vision Toolbox.

Примечание

ImageDatastore позволяет чтение пакета JPG или упреждающую выборку использования файлов изображений PNG. Если вы используете пользовательскую функцию в чтении изображений, то упреждающей выборки не происходит.

Свойства

развернуть все

Это свойство доступно только для чтения.

Исправьте размер, заданный как одно из следующих.

  • Вектор с 2 элементами положительных целых чисел для 2D закрашенных фигур. PatchSize имеет форму [r c], где r задает количество строк, и c задает количество столбцов в закрашенной фигуре.

  • Вектор с 3 элементами положительных целых чисел для 3-D закрашенных фигур. PatchSize имеет форму [r c p], где r задает количество строк, c задает количество столбцов, и p задает количество плоскостей в закрашенной фигуре.

Количество случайных закрашенных фигур на изображение, заданное как положительное целое число.

Предварительная обработка примененного к входным изображениям, заданным как imageDataAugmenter объект или 'none'. Когда DataAugmentation 'none', никакая предварительная обработка не применяется, чтобы ввести изображения.

Увеличьте данные со случайными преобразованиями, такими как изменение размеров, вращение, и отражение, чтобы помочь препятствовать тому, чтобы сеть сверхсоответствовала и запомнила точные детали обучающих данных. randomPatchExtractionDatastore применяет то же случайное преобразование к обеим закрашенным фигурам в каждой паре. Datastore увеличивает данные в режиме реального времени в то время как обучение.

DataAugmentation свойство не поддержано для 3-D данных. Чтобы предварительно обработать 3-D данные, используйте transform функция.

Диспетчеризируйте наблюдения в фоновом режиме во время обучения, прогноза или классификации, заданной как false или true. Чтобы использовать фоновую диспетчеризацию, у вас должен быть Parallel Computing Toolbox™.

Количество наблюдений, которые возвращены в каждом пакете. Можно изменить значение MiniBatchSize только после того, как вы создаете datastore. Для обучения, прогноза, и классификации, MiniBatchSize свойство установлено в мини-пакетный размер, заданный в trainingOptions.

Это свойство доступно только для чтения.

Общее количество наблюдений в randomPatchExtractionDatastore. Количество наблюдений является продолжительностью одной учебной эпохи.

Функции объекта

combineОбъедините данные от нескольких datastores
hasdataОпределите, доступны ли данные для чтения
numpartitionsКоличество разделов datastore
partitionРазделите datastore
partitionByIndexРаздел randomPatchExtractionDatastore согласно индексам
previewПодмножество данных в datastore
readСчитайте данные из randomPatchExtractionDatastore
readallСчитывайте все данные в datastore
readByIndexСчитайте данные, заданные индексом от randomPatchExtractionDatastore
resetСброс Datastore к начальному состоянию
shuffleПереставьте данные в datastore
transformПреобразуйте datastore

Примеры

свернуть все

Создайте datastore изображений, содержащий учебные изображения. Datastore в этом примере содержит цветные изображения JPEG.

imageDir = fullfile(toolboxdir('images'),'imdata');
imds1 = imageDatastore(imageDir,'FileExtensions','.jpg');

Создайте второй datastore, который преобразовывает изображения в imds1 путем применения Гауссовой размытости.

imds2 = transform(imds1,@(x)imgaussfilt(x,2));

Создайте imageDataAugmenter это вращает изображения случайными углами в области значений [0, 90] степени и случайным образом отражает данные изображения горизонтально.

augmenter = imageDataAugmenter('RandRotation',[0 90],'RandXReflection',true)
augmenter = 
  imageDataAugmenter with properties:

           FillValue: 0
     RandXReflection: 1
     RandYReflection: 0
        RandRotation: [0 90]
           RandScale: [1 1]
          RandXScale: [1 1]
          RandYScale: [1 1]
          RandXShear: [0 0]
          RandYShear: [0 0]
    RandXTranslation: [0 0]
    RandYTranslation: [0 0]

Создайте randomPatchExtractionDatastore возразите, что извлекает случайные закрашенные фигуры размера 100 100 от необработанных учебных изображений и соответствующих сглаживавших изображений ответа. Задайте опции увеличения путем установки DataAugmentation свойство.

patchds = randomPatchExtractionDatastore(imds1,imds2,[100 100], ...
    'DataAugmentation',augmenter)
patchds = 
  randomPatchExtractionDatastore with properties:

         PatchesPerImage: 128
               PatchSize: [100 100]
        DataAugmentation: [1×1 imageDataAugmenter]
           MiniBatchSize: 128
         NumObservations: []
    DispatchInBackground: 0

Предварительно просмотрите набор увеличенных закрашенных фигур изображений и соответствующих сглаживавших закрашенных фигур изображений.

minibatch = preview(patchds);
inputs = minibatch.InputImage;
responses = minibatch.ResponseImage;
test = cat(2,inputs,responses);
montage(test','Size',[8 2])
title('Inputs (Left) and Responses (Right)')

Создайте datastore изображений, содержащий учебные изображения.

dataDir = fullfile(toolboxdir('vision'),'visiondata','triangleImages');
imageDir = fullfile(dataDir,'trainingImages');
imds = imageDatastore(imageDir);

Задайте имена классов и их связанную метку IDs. Затем создайте пиксельный datastore метки, содержащий пиксельные метки основной истины для учебных изображений.

classNames = ["triangle","background"];
labelIDs = [255 0];
labelDir = fullfile(dataDir,'trainingLabels');
pxds = pixelLabelDatastore(labelDir,classNames,labelIDs);

Создайте случайный datastore экстракции закрашенной фигуры, чтобы извлечь случайные закрашенные фигуры размера 32 32 пиксели от изображений и соответствующих пиксельных меток. Установите дополнительный PatchesPerImage свойство извлечь 512 случайных закрашенных фигур из каждого изображения и пикселя помечает пару.

patchds = randomPatchExtractionDatastore(imds,pxds,32, ...
     'PatchesPerImage',512);

Создайте сеть для семантической сегментации.

layers = [
    imageInputLayer([32 32 1])
    convolution2dLayer(3,64,'Padding',1)
    reluLayer()
    maxPooling2dLayer(2,'Stride',2)
    convolution2dLayer(3,64,'Padding',1)
    reluLayer()
    transposedConv2dLayer(4,64,'Stride',2,'Cropping',1)
    convolution2dLayer(1,2)
    softmaxLayer()
    pixelClassificationLayer()
    ]
layers = 
  10x1 Layer array with layers:

     1   ''   Image Input                  32x32x1 images with 'zerocenter' normalization
     2   ''   Convolution                  64 3x3 convolutions with stride [1  1] and padding [1  1  1  1]
     3   ''   ReLU                         ReLU
     4   ''   Max Pooling                  2x2 max pooling with stride [2  2] and padding [0  0  0  0]
     5   ''   Convolution                  64 3x3 convolutions with stride [1  1] and padding [1  1  1  1]
     6   ''   ReLU                         ReLU
     7   ''   Transposed Convolution       64 4x4 transposed convolutions with stride [2  2] and output cropping [1  1]
     8   ''   Convolution                  2 1x1 convolutions with stride [1  1] and padding [0  0  0  0]
     9   ''   Softmax                      softmax
    10   ''   Pixel Classification Layer   Cross-entropy loss 

Настройте опции обучения. Чтобы уменьшать учебное время, установите MaxEpochs к 5.

options = trainingOptions('sgdm', ...
    'InitialLearnRate',1e-3, ...
    'MaxEpochs',5, ...
    'Verbose',false);

Обучите сеть.

net = trainNetwork(patchds,layers,options);

Советы

  • randomPatchExtractionDatastore ожидает что выход от read операция на входных возвращаемых массивах хранилищ данных, одного размера.

  • Если входным datastore является ImageDatastore, затем значения в его Labels свойство проигнорировано randomPatchExtractionDatastore.

  • Визуализировать 2D данные в randomPatchExtractionDatastore, можно использовать preview функция, которая возвращает подмножество данных в таблице. Визуализируйте все закрашенные фигуры в той же фигуре при помощи montage функция. Например, этот код отображает предварительный просмотр закрашенных фигур изображений от randomPatchExtractionDatastore названный patchds.

    minibatch = preview(patchds);
    montage(minibatch.InputImage)

Введенный в R2018b