exponenta event banner

randomPatchExtractionDatastore

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

Описание

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

Для этого объекта требуется наличие Toolbox™ глубокого обучения.

Примечание

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

Создание

Описание

пример

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

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

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

Входные аргументы

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

Входные данные, содержащие обучающий ввод в сеть, указанные как ImageDatastore, PixelLabelDatastore(Панель инструментов компьютерного зрения), или TransformedDatastore.

Указание PixelLabelDatastore требуется программа Computer Vision Toolbox™.

Примечание

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

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

Указание PixelLabelDatastore требуется панель инструментов Computer Vision.

Примечание

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

Создание второго хранилища данных, преобразующего изображения в 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)')

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

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

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

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

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

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

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

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

См. также

| | (Панель инструментов компьютерного зрения) | (Панель инструментов компьютерного зрения) | (инструментарий для глубокого обучения) | (инструментарий для глубокого обучения) | (инструментарий для глубокого обучения)

Представлен в R2018b