randomPatchExtractionDatastore

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

Описание

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

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

Примечание

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

Создание

Синтаксис

patchds = randomPatchExtractionDatastore(imds1,imds2,patchSize)
patchds = randomPatchExtractionDatastore(imds1,pxds,patchSize)
patchds = randomPatchExtractionDatastore(___,Name,Value)

Описание

пример

patchds = randomPatchExtractionDatastore(imds1,imds2,patchSize) создает datastore, который извлекает случайным образом расположенные закрашенные фигуры размера patchSize от изображений в datastore изображений imds1 и соответствующие закрашенные фигуры от изображений в datastore изображений imds2.

пример

patchds = randomPatchExtractionDatastore(imds1,pxds,patchSize) создает datastore, который извлекает случайным образом расположенные закрашенные фигуры размера patchSize от наземных изображений истины в datastore изображений imds1 и соответствующие закрашенные фигуры от пиксельных изображений метки в пиксельном datastore метки pxds.

Этот синтаксис требует Computer Vision Toolbox™.

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

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

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

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

Введите данные изображения, содержащие учебный вход к сети, заданной как объект ImageDatastore.

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

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

Пиксель ответа маркирует данные, представляющие желаемые сетевые ответы, заданные как объект pixelLabelDatastore.

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

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

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

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Свойства

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

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

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

Создайте второй datastore изображений, содержащий желаемые сетевые ответы. Этот datastore изображений включает пользовательскую функцию чтения под названием myreadfcn (заданный в конце примера), который сглаживает изображения с помощью Гауссовой размытости.

imds2 = imageDatastore(imageDir,'FileExtensions','.jpg','ReadFcn',@myreadfcn);

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

Поддерживание функции

Этот пример задает функцию myreadfcn, которая читает, файл от диска затем сглаживает изображение appling Гауссова размытость. Функция возвращает сглаживавшее изображение.

function J = myreadfcn(filename)
    I = imread(filename);
    J = imgaussfilt(I,2);
end

Создайте 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 на входных возвращаемых массивах хранилищ данных, одного размера.

  • randomPatchExtractionDatastore всегда читает одно изображение за один раз из каждого входного datastore. Это выполняет это путем установки свойства ReadSize входных хранилищ данных к 1.

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

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

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

Введенный в R2018b