Предварительно обработайте изображения для глубокого обучения

Чтобы обучить сеть и сделать предсказания на новых данных, ваши изображения должны совпадать с входным размером сети. Если необходимо настроить размер изображений, чтобы совпадать с сетью, то можно перемасштабировать или обрезать данные к необходимому размеру.

Можно эффективно увеличиться, сумма обучающих данных путем применения рандомизировала augmentation к данным. Увеличение также позволяет вам обучить нейронные сети, чтобы быть инвариантными к искажениям в данных изображения. Например, можно добавить рандомизированные вращения, чтобы ввести изображения так, чтобы сеть была инвариантной к присутствию вращения во входных изображениях. augmentedImageDatastore обеспечивает удобный способ применить ограниченный набор увеличений к 2D изображениям для проблем классификации.

Для более усовершенствованных операций предварительной обработки, чтобы предварительно обработать изображения для проблем регрессии или предварительно обработать 3-D объемные изображения, можно начать со встроенного хранилища данных. Можно также предварительно обработать изображения согласно собственному конвейеру при помощи transform и combine функции.

Измените размер изображений Используя перемасштабирование и обрезку

Можно сохранить данные изображения как числовой массив, ImageDatastore объект или таблица. ImageDatastore позволяет вам импортировать данные в пакетах от коллекций изображений, которые являются слишком большими, чтобы уместиться в памяти. Можно использовать увеличенный datastore изображений или измененный 4-D массив для обучения, предсказания и классификации. Можно использовать измененный трехмерный массив для предсказания и классификации только.

Существует два способа изменить размер данных изображения, чтобы совпадать с входным размером сети.

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

  • Обрезка извлекает подобласть изображения и сохраняет пространственную степень каждого пикселя. Можно обрезать изображения от центра или от случайных положений в изображении.

Изменение размеров опцииФормат данныхИзменение размеров функцииПример кода
Перемасштабирование
  • Трехмерный массив, представляющий одно цветное или многоспектральное изображение

  • Трехмерный массив, представляющий стек полутоновых изображений

  • Массив 4-D, представляющий стек изображений

imresize

im = imresize(I,outputSize);

outputSize задает размерности перемасштабированного изображения.

  • Массив 4-D, представляющий стек изображений

  • ImageDatastore

  • таблица

augmentedImageDatastore

auimds = augmentedImageDatastore(outputSize,I);

outputSize задает размерности перемасштабированного изображения.

Обрезка
  • Трехмерный массив, представляющий одно цветное или многоспектральное изображение

imcrop (Image Processing Toolbox)

im = imcrop(I,rect);

rect задает размер и положение 2D окна обрезки.

  • Трехмерный массив, представляющий стек полутоновых изображений

  • Массив 4-D, представляющий стек цвета или многоспектральных изображений

imcrop3 (Image Processing Toolbox)

im = imcrop3(I,cuboid);

cuboid задает размер и положение 3-D окна обрезки.

  • Массив 4-D, представляющий стек изображений

  • ImageDatastore

  • таблица

augmentedImageDatastore

auimds = augmentedImageDatastore(outputSize,I,'OutputSizeMode',m);

Задайте m как 'centercrop' обрезать от центра входного изображения.

Задайте m как 'randcrop' обрезать от случайного местоположения во входном изображении.

Увеличьте изображения для обучения со случайными геометрическими преобразованиями

Для проблем классификации изображений можно использовать augmentedImageDatastore увеличивать изображения со случайной комбинацией изменения размеров, вращения, отражения, сдвига и преобразований перевода.

Схема показывает как trainNetwork использует увеличенный datastore изображений, чтобы преобразовать обучающие данные в течение каждой эпохи. Когда вы используете увеличение данных, одна случайным образом увеличенная версия каждого изображения используется в течение каждой эпохи обучения. Для примера рабочего процесса смотрите, Обучат сеть с Увеличенными Изображениями.

  1. Задайте учебные изображения.

  2. Сконфигурируйте опции преобразования изображений, такие как область значений углов поворота и применить ли отражение наугад путем создания imageDataAugmenter.

    Совет

    Чтобы предварительно просмотреть преобразования, к которым применяются демонстрационные изображения, используйте augment функция.

  3. Создайте augmentedImageDatastore. Задайте учебные изображения, размер выходных изображений и imageDataAugmenter. Размер выходных изображений должен быть совместим с размером imageInputLayer из сети.

  4. Обучите сеть, задав увеличенный datastore изображений как источник данных для trainNetwork. Для каждой итерации обучения увеличенный datastore изображений применяет случайную комбинацию преобразований к изображениям в мини-пакете обучающих данных.

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

Выполните дополнительные операции обработки изображений Используя встроенные хранилища данных

Некоторые хранилища данных выполняют определенные и ограниченные операции предварительной обработки изображений, когда они читают пакет данных. Эти специализированные хранилища данных перечислены в таблице. Можно использовать эти хранилища данных в качестве источника обучения, валидации и наборов тестовых данных для применения глубокого обучения то использование Deep Learning Toolbox™. Все эти хранилища данных возвращают данные в формате, поддержанном trainNetwork.

DatastoreОписание
augmentedImageDatastoreПримените случайные аффинные геометрические преобразования, включая изменение размеров, вращение, отражение, сдвиг и перевод, для учебных глубоких нейронных сетей. Для примера смотрите, что Передача обучения Использует Предварительно обученную сеть.
pixelLabelImageDatastore (Computer Vision Toolbox)Примените идентичные аффинные геометрические преобразования к изображениям, и соответствующие метки основной истины для того, чтобы обучить сети семантической сегментации (требует Computer Vision Toolbox™). Для примера смотрите, что Семантическая Сегментация Использует Глубокое обучение.
randomPatchExtractionDatastore (Image Processing Toolbox)Извлеките несколько пар случайных закрашенных фигур от изображений, или пиксельные изображения метки (требует Image Processing Toolbox™). Опционально можно применить идентичные случайные аффинные геометрические преобразования к парам закрашенных фигур. Для примера смотрите, что Одно Суперразрешение Изображений Использует Глубокое обучение.
denoisingImageDatastore (Image Processing Toolbox)Применяйтесь случайным образом сгенерированный Гауссов шум для того, чтобы обучить сети шумоподавления (требует Image Processing Toolbox).

Примените конвейеры обработки пользовательского изображения Используя объединение и преобразование

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

Преобразуйте хранилища данных с данными изображения

transform функция создает измененную форму datastore, названного underlying datastore, путем преобразования данных, считанных базовым datastore согласно функции преобразования, которую вы задаете.

Пользовательская функция преобразования должна принять данные в формате, возвращенном read функция базового datastore. Для данных изображения в ImageDatastore, формат зависит от ReadSize свойство.

  • Когда ReadSize 1, функция преобразования должна принять целочисленный массив. Размер массива сопоставим с типом изображений в ImageDatastore. Например, полутоновое изображение имеет размерности m-by-n, изображение истинного цвета имеет размерности m-by-n-by-3, и многоспектральное изображение с каналами c имеет размерности m-by-n-by-c.

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

transform функция должна возвратить данные, которые совпадают с входным размером сети. transform функция не поддерживает one-many отображения наблюдения.

Совет

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

Объедините хранилища данных с данными изображения

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

  • Конкатенация данных в ячейку таблицы 2D столбца или массив 2D ячейки столбца для того, чтобы обучить нейронные сети с одним входом, таким как сети регрессии от изображения к изображению.

  • Конкатенация данных к (numInputs+1) - массив ячейки столбца для того, чтобы обучить нейронные сети с несколькими входными параметрами.

Смотрите также

| | | |

Связанные примеры

Больше о