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

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

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

Для более продвинутых операций предварительной обработки, для предварительной обработки изображений для регрессионных задач или для предварительной обработки 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 задает размер и положение окна кадрирования 2-D.

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

  • 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, чтобы преобразовать обучающие данные для каждой эпохи. Когда вы используете увеличение данных, в каждую эпоху обучения используется одна случайным образом дополненная версия каждого изображения. Пример рабочего процесса см. в разделе Train сети с дополненными изображениями.

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

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

    Совет

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

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

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

    Когда вы используете дополненный image 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 функций. Для получения дополнительной информации смотрите Datastores для глубокого обучения.

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

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, функция преобразования должна принять массив ячеек с данными изображений. Каждый элемент соответствует изображению в пакете.

The transform функция должна возвращать данные, которые совпадают с входом сети. The transform функция не поддерживает отображений наблюдений «один ко многим».

Совет

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

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

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

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

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

См. также

| | | |

Похожие примеры

Подробнее о