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

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

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

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

Измените размер изображений

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

Метод, чтобы изменить размер изображений зависит от типа данных image.

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

Изменить размер изображений в трехмерном массиве im3d:

im = imresize(im3d,inputSize);
Массив 4-D, представляющий стек изображенийimresize

Изменить размер изображений в 4-D массиве im4d:

im = imresize(im4d,inputSize);
augmentedImageDatastore

Повторно масштабировать изображения в 4-D массиве im4d:

auimds = augmentedImageDatastore(inputSize,im4d);
ImageDatastoreaugmentedImageDatastore

Повторно масштабировать изображения в datastore изображений imds:

auimds = augmentedImageDatastore(inputSize,imds);
Для более полного примера смотрите Нейронную сеть для глубокого обучения Train, чтобы Классифицировать Новые Изображения.
таблицаaugmentedImageDatastore

Повторно масштабировать изображения в таблице tbl:

auimds = augmentedImageDatastore(inputSize,tbl);

По умолчанию augmentedImageDatastore повторно масштабирует изображения к желаемому размеру. Если вместо этого вы хотите обрезать изображения от центра или от случайных положений в изображении, можно использовать аргумент пары "имя-значение" 'OutputSizeMode'. Например, этот код показывает, как обрезать изображения в datastore изображений imds от центра каждого изображения:

auimds = augmentedImageDatastore(inputSize,imds,'OutputSizeMode','centercrop');

Увеличьте изображения для обучения

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

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

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

    Совет

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

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

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

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

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

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

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

Чтобы выполнить более общие и комплексные операции предварительной обработки изображений, чем предлагаемый специализированными хранилищами данных, можно использовать функции combine и transform. Функция transform создает измененную форму datastore, названного underlying datastore, путем преобразования данных, считанных базовым datastore согласно функции преобразования, которую вы задаете. Функция combine конкатенирует данные, считанные от нескольких хранилищ данных до ячейки таблицы 2D столбца или формата 2D ячейки столбца массивов, требуемого trainNetwork. Функция combine поддерживает четность между базовыми хранилищами данных.

ФункцияПолучившийся DatastoreОписание
transformTransformedDatastoreПреобразуйте пакеты считанных данных из базового datastore согласно вашему собственному конвейеру предварительной обработки.
combineCombinedDatastoreГоризонтально конкатенируйте данные, считанные из двух или больше базовых хранилищ данных.

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

  • Когда 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 не выбирает с упреждением.

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

| | | |

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

Больше о