randomPatchExtractionDatastore

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

Описание

A 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 (Computer Vision Toolbox), или TransformedDatastore.

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

Примечание

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

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

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

Примечание

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

Свойства

расширить все

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

Размер закрашенной фигуры, заданный как один из следующих.

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

Создайте 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);

Задайте имена классов и связанные с ними идентификаторы меток. Затем создайте pixel label 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);

Совет

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

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

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

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

Введенный в R2018b