Настройка увеличения данных изображения
Центр увеличения данных изображения настраивает набор опций предварительной обработки для увеличения изображения, таких как изменение размеров, поворот и отражение.
imageDataAugmenter используется augmentedImageDatastore для формирования пакетов дополненных изображений. Дополнительные сведения см. в разделе Дополнительные изображения для обучения со случайными геометрическими преобразованиями.
aug = imageDataAugmenter создает imageDataAugmenter со значениями свойств по умолчанию, совместимыми с преобразованием идентификатора.
FillValue - Значение заливкиЗначение заливки, используемое для определения точек вне границ при повторной выборке, задается как числовой скалярный или числовой вектор.
Если дополненные изображения являются одноканальными, то FillValue должен быть скаляром.
Если дополненные изображения являются многоканальными, то FillValue может быть скаляром или вектором с длиной, равной числу каналов входного изображения. Например, если входным изображением является изображение RGB, FillValue может быть вектором длины 3.
Для изображений в оттенках серого и цветных изображений по умолчанию используется значение заливки 0. Для категориальных изображений значением заливки по умолчанию является '<undefined>' этикетка и trainNetwork игнорирует заполненные пикселы при обучении.
Пример: 128
RandXReflection - Случайное отражениеfalse (по умолчанию) | trueСлучайное отражение в направлении влево-вправо, заданное как логический скаляр. Когда RandXReflection является true (1), каждое изображение отражается горизонтально с вероятностью 50%. Когда RandXReflection является false (0), изображения не отражаются.
RandYReflection - Случайное отражениеfalse (по умолчанию) | trueСлучайное отражение в направлении сверху вниз, указанное как логический скаляр. Когда RandYReflection является true (1), каждое изображение отражается вертикально с вероятностью 50%. Когда RandYReflection является false (0), изображения не отражаются.
RandRotation - Диапазон вращения[0 0] (по умолчанию) | 2-элементный числовой вектор | дескриптор функцииДиапазон поворота, в градусах, применяемый к входному изображению, указанный как одно из следующих значений.
2-элементный числовой вектор. Второй элемент должен быть больше или равен первому элементу. Угол поворота выбирается случайным образом из непрерывного равномерного распределения в пределах заданного интервала.
дескриптор функции. Функция не должна принимать входные аргументы и возвращать угол поворота в виде числового скаляра. Используйте дескриптор функции для выбора углов поворота из непересекающегося интервала или с использованием неравномерного распределения вероятностей. Дополнительные сведения об дескрипторах функций см. в разделе Создание дескриптора функции.
По умолчанию дополненные изображения не поворачиваются.
Пример: [-45 45]
RandScale - Диапазон равномерного масштабирования[1 1] (по умолчанию) | 2-элементный числовой вектор | дескриптор функцииДиапазон равномерного (изотропного) масштабирования, применяемый к входному изображению, определяется как одно из следующих значений.
2-элементный числовой вектор. Второй элемент должен быть больше или равен первому элементу. Масштабный коэффициент выбирается случайным образом из непрерывного равномерного распределения в пределах заданного интервала.
дескриптор функции. Функция не должна принимать входные аргументы и возвращать масштабный коэффициент в виде числового скаляра. Используйте дескриптор функции, чтобы выбрать масштабные коэффициенты из непересекающегося интервала или с помощью неравномерного распределения вероятности. Дополнительные сведения об дескрипторах функций см. в разделе Создание дескриптора функции.
По умолчанию увеличенные изображения не масштабируются.
Пример: [0.5 4]
RandXScale - Диапазон горизонтального масштабирования[1 1] (по умолчанию) | 2-элементный вектор положительных чисел | дескриптор функцииДиапазон горизонтального масштабирования, применяемый к входному изображению, указанный как одно из следующих значений.
2-элементный числовой вектор. Второй элемент должен быть больше или равен первому элементу. Горизонтальный масштабный коэффициент выбирается случайным образом из непрерывного равномерного распределения в пределах заданного интервала.
дескриптор функции. Функция не должна принимать входные аргументы и возвращать масштабный коэффициент по горизонтали в виде числового скаляра. Используйте дескриптор функции для выбора горизонтальных масштабных коэффициентов из непересекающегося интервала или с использованием неравномерного распределения вероятностей. Дополнительные сведения об дескрипторах функций см. в разделе Создание дескриптора функции.
По умолчанию увеличенные изображения не масштабируются в горизонтальном направлении.
Примечание
При указании RandScale, то imageDataAugmenter игнорирует значение RandXScale при масштабировании изображений.
Пример: [0.5 4]
RandYScale - Диапазон вертикального масштабирования[1 1] (по умолчанию) | 2-элементный вектор положительных чисел | дескриптор функцииДиапазон вертикального масштабирования, применяемый к входному изображению, определяется как одно из следующих значений.
2-элементный числовой вектор. Второй элемент должен быть больше или равен первому элементу. Вертикальный масштабный коэффициент выбирается случайным образом из непрерывного равномерного распределения в пределах заданного интервала.
дескриптор функции. Функция не должна принимать входные аргументы и возвращать масштабный коэффициент по вертикали в виде числового скаляра. Используйте дескриптор функции для выбора масштабных коэффициентов по вертикали из непересекающегося интервала или с использованием неравномерного распределения вероятностей. Дополнительные сведения об дескрипторах функций см. в разделе Создание дескриптора функции.
По умолчанию увеличенные изображения не масштабируются в вертикальном направлении.
Примечание
При указании RandScale, то imageDataAugmenter игнорирует значение RandYScale при масштабировании изображений.
Пример: [0.5 4]
RandXShear - Диапазон горизонтального сдвига[0 0] (по умолчанию) | 2-элементный числовой вектор | дескриптор функцииДиапазон горизонтального сдвига, применяемый к входному изображению, указанный как одно из следующих значений. Сдвиг измеряется как угол в градусах и находится в диапазоне (-90, 90).
2-элементный числовой вектор. Второй элемент должен быть больше или равен первому элементу. Угол горизонтального сдвига выбирается случайным образом из непрерывного равномерного распределения в пределах заданного интервала.
дескриптор функции. Функция не должна принимать входные аргументы и возвращать угол горизонтального сдвига в виде числового скаляра. Используйте дескриптор функции для выбора углов горизонтального сдвига из непересекающегося интервала или с использованием неравномерного распределения вероятности. Дополнительные сведения об дескрипторах функций см. в разделе Создание дескриптора функции.
По умолчанию дополненные изображения не сдвигаются в горизонтальном направлении.
Пример: [0 45]
RandYShear - Диапазон вертикального сдвига[0 0] (по умолчанию) | 2-элементный числовой вектор | дескриптор функцииДиапазон вертикального сдвига, применяемый к входному изображению, определяется как одно из следующих значений. Сдвиг измеряется как угол в градусах и находится в диапазоне (-90, 90).
2-элементный числовой вектор. Второй элемент должен быть больше или равен первому элементу. Угол вертикального сдвига выбирается случайным образом из непрерывного равномерного распределения в пределах заданного интервала.
дескриптор функции. Функция не должна принимать входные аргументы и возвращать вертикальный угол сдвига в виде числового скаляра. Используйте дескриптор функции, чтобы выбрать вертикальные углы сдвига из непересекающегося интервала или с помощью неравномерного распределения вероятности. Дополнительные сведения об дескрипторах функций см. в разделе Создание дескриптора функции.
По умолчанию дополненные изображения не режутся в вертикальном направлении.
Пример: [0 45]
RandXTranslation - Диапазон горизонтального перемещения[0 0] (по умолчанию) | 2-элементный числовой вектор | дескриптор функцииДиапазон горизонтального перемещения, применяемый к входному изображению, определяется как одно из следующих значений. Расстояние перемещения измеряется в пикселях.
2-элементный числовой вектор. Второй элемент должен быть больше или равен первому элементу. Расстояние горизонтального перемещения выбирается случайным образом из непрерывного равномерного распределения в пределах заданного интервала.
дескриптор функции. Функция не должна принимать входные аргументы и возвращать расстояние горизонтального перевода в виде числового скаляра. Используйте дескриптор функции для выбора расстояний горизонтального перемещения из непересекающегося интервала или с использованием неравномерного распределения вероятностей. Дополнительные сведения об дескрипторах функций см. в разделе Создание дескриптора функции.
По умолчанию дополненные изображения не перемещаются в горизонтальном направлении.
Пример: [-5 5]
RandYTranslation - Диапазон вертикального перемещения[0 0] (по умолчанию) | 2-элементный числовой вектор | дескриптор функцииДиапазон вертикального перемещения, применяемый к входному изображению, определяется как одно из следующих значений. Расстояние перемещения измеряется в пикселях.
2-элементный числовой вектор. Второй элемент должен быть больше или равен первому элементу. Расстояние вертикального перемещения выбирается случайным образом из непрерывного равномерного распределения в пределах заданного интервала.
дескриптор функции. Функция не должна принимать входные аргументы и возвращать расстояние вертикального перевода в виде числового скаляра. Используйте дескриптор функции для выбора расстояний вертикального перемещения из непересекающегося интервала или с использованием неравномерного распределения вероятностей. Дополнительные сведения об дескрипторах функций см. в разделе Создание дескриптора функции.
По умолчанию дополненные изображения не перемещаются в вертикальном направлении.
Пример: [-5 5]
augment | Применение идентичных случайных преобразований к нескольким изображениям |
Создайте дополнительный модуль для обработки изображений перед обучением. Этот увеличитель вращает изображения на случайные углы в диапазоне [0, 360] градусов и изменяет размеры изображений на случайные масштабные коэффициенты в диапазоне [0,5, 1].
augmenter = imageDataAugmenter( ... 'RandRotation',[0 360], ... 'RandScale',[0.5 1])
augmenter =
imageDataAugmenter with properties:
FillValue: 0
RandXReflection: 0
RandYReflection: 0
RandRotation: [0 360]
RandScale: [0.5000 1]
RandXScale: [1 1]
RandYScale: [1 1]
RandXShear: [0 0]
RandYShear: [0 0]
RandXTranslation: [0 0]
RandYTranslation: [0 0]
Создайте хранилище данных дополненного изображения с помощью центра увеличения данных изображения. Для хранилища данных дополненного изображения также требуются образцы данных, метки и размер выходного изображения.
[XTrain,YTrain] = digitTrain4DArrayData;
imageSize = [56 56 1];
auimds = augmentedImageDatastore(imageSize,XTrain,YTrain,'DataAugmentation',augmenter)auimds =
augmentedImageDatastore with properties:
NumObservations: 5000
MiniBatchSize: 128
DataAugmentation: [1x1 imageDataAugmenter]
ColorPreprocessing: 'none'
OutputSize: [56 56]
OutputSizeMode: 'resize'
DispatchInBackground: 0
Предварительный просмотр случайных преобразований, примененных к первым восьми изображениям в хранилище данных изображения.
minibatch = preview(auimds); imshow(imtile(minibatch.input));

Просмотр различных случайных преобразований, примененных к одному набору изображений.
minibatch = preview(auimds); imshow(imtile(minibatch.input));

Обучение сверточной нейронной сети с использованием данных дополненного изображения. Увеличение объема данных помогает предотвратить переоборудование сети и запоминание точных деталей обучающих изображений.
Загрузите образец данных, который состоит из синтетических изображений рукописных цифр.
[XTrain,YTrain] = digitTrain4DArrayData;
digitTrain4DArrayData загружает набор обучающих цифр 4-D виде данных массива. XTrain множество 28 на 28 на 1 на 5000, где:
28 - высота и ширина изображений.
1 - количество каналов.
5000 - количество синтетических изображений рукописных цифр.
YTrain - категориальный вектор, содержащий метки для каждого наблюдения.
Отложите 1000 изображений для проверки сети.
idx = randperm(size(XTrain,4),1000); XValidation = XTrain(:,:,:,idx); XTrain(:,:,:,idx) = []; YValidation = YTrain(idx); YTrain(idx) = [];
Создание imageDataAugmenter объект, определяющий параметры предварительной обработки для увеличения изображения, такие как изменение размера, поворот, перемещение и отражение. Случайное перемещение изображений до трех пикселей по горизонтали и вертикали и поворот изображений на угол до 20 градусов.
imageAugmenter = imageDataAugmenter( ... 'RandRotation',[-20,20], ... 'RandXTranslation',[-3 3], ... 'RandYTranslation',[-3 3])
imageAugmenter =
imageDataAugmenter with properties:
FillValue: 0
RandXReflection: 0
RandYReflection: 0
RandRotation: [-20 20]
RandScale: [1 1]
RandXScale: [1 1]
RandYScale: [1 1]
RandXShear: [0 0]
RandYShear: [0 0]
RandXTranslation: [-3 3]
RandYTranslation: [-3 3]
Создание augmentedImageDatastore объект, используемый для обучения сети, и укажите размер вывода изображения. Во время обучения хранилище данных выполняет увеличение изображения и изменяет его размер. Хранилище данных дополняет изображения, не сохраняя их в памяти. trainNetwork обновляет параметры сети и затем отбрасывает дополненные изображения.
imageSize = [28 28 1];
augimds = augmentedImageDatastore(imageSize,XTrain,YTrain,'DataAugmentation',imageAugmenter);Укажите архитектуру сверточной нейронной сети.
layers = [
imageInputLayer(imageSize)
convolution2dLayer(3,8,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,16,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,32,'Padding','same')
batchNormalizationLayer
reluLayer
fullyConnectedLayer(10)
softmaxLayer
classificationLayer];Укажите варианты обучения стохастического градиентного спуска с импульсом.
opts = trainingOptions('sgdm', ... 'MaxEpochs',15, ... 'Shuffle','every-epoch', ... 'Plots','training-progress', ... 'Verbose',false, ... 'ValidationData',{XValidation,YValidation});
Обучение сети. Поскольку изображения проверки не увеличиваются, точность проверки превышает точность обучения.
net = trainNetwork(augimds,layers,opts);

Для предварительного просмотра преобразований, примененных к образцам изображений, используйте augment функция.
Для увеличения изображения во время обучения создайте augmentedImageDatastore и укажите параметры предварительной обработки с помощью 'DataAugmentation' пара имя-значение с imageDataAugmenter. Хранилище данных дополненного изображения автоматически применяет случайные преобразования к учебным данным.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.