unet3dLayers

Создайте 3-D слои U-Net для семантической сегментации объемных изображений

Описание

lgraph = unet3dLayers(inputSize,numClasses) возвращает 3-D сеть U-Net. unet3dLayers включает слой классификации пикселей в сеть, чтобы предсказать категориальную метку для каждого пикселя во входе объемное изображение.

Использование unet3dLayers создать сетевую архитектуру для 3-D U-Net. Обучите сеть с помощью функции Deep Learning Toolbox™ trainNetwork (Deep Learning Toolbox).

пример

[lgraph,outputSize] = unet3dLayers(inputSize,numClasses) также возвращает размер выхода объемное изображение от 3-D сети U-Net.

пример

[___] = unet3dLayers(inputSize,numClasses,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в предыдущем синтаксисе.

Примеры

свернуть все

Создайте 3-D сеть U-Net с глубиной декодера энкодера 2. Задайте количество выходных каналов для первого слоя свертки как 16.

imageSize = [128 128 128 3];
numClasses = 5;
encoderDepth = 2;
lgraph = unet3dLayers(imageSize,numClasses,'EncoderDepth',encoderDepth,'NumFirstEncoderFilters',16) 
lgraph = 
  LayerGraph with properties:

         Layers: [40×1 nnet.cnn.layer.Layer]
    Connections: [41×2 table]
     InputNames: {'ImageInputLayer'}
    OutputNames: {'Segmentation-Layer'}

Отобразите сеть.

figure('Units','Normalized','Position',[0 0 0.5 0.55]);
plot(lgraph)

Используйте нейронную сеть для глубокого обучения анализатор, чтобы визуализировать 3-D сеть U-Net.

analyzeNetwork(lgraph);

Визуализация показывает количество выходных каналов для каждого этапа энкодера. Первые слои свертки на этапах 1 и 2 энкодера имеют 16 и 32 выходных канала, соответственно. Вторые слои свертки на этапах 1 и 2 энкодера имеют 32 и 64 выходных канала, соответственно.

Входные параметры

свернуть все

Сетевой входной размер изображения, представляющий объемное изображение в виде одного из этих значений:

  • Трехэлементный вектор из формы [height width depth]

  • Четырехэлементный вектор из формы [height width depth channel]. channel обозначает количество каналов изображений.

Примечание

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Количество классов, чтобы сегментироваться в виде скаляра, больше, чем 1.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: unet3dLayers(inputSize,numClasses,'EncoderDepth',4)

Глубина энкодера в виде положительного целого числа. 3-D сеть U-Net состоит из подсети энкодера и соответствующей подсети декодера. Глубина сети определяет число раз вход, объемное изображение прорежено или сверхдискретизировано во время обработки. Сеть энкодера прореживает вход объемное изображение на коэффициент 2D, где D является значением EncoderDepth. Сеть декодера сверхдискретизировала сеть энкодера выход на коэффициент 2D. Глубина подсети декодера - то же самое как та из подсети энкодера.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

Учитывая этап = {1, 2, …, EncoderDepth}, количество выходных каналов для первого слоя свертки на каждом этапе энкодера равно

2stage-1 NumFirstEncoderFilters

Количество выходных каналов для второго слоя свертки на каждом этапе энкодера равно

2stage NumFirstEncoderFilters

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Размер 3-D свертки фильтрует в виде положительного скалярного целого числа или трехэлементного вектора-строки из положительных целых чисел формы [fh fw fd ]. Типичные значения для размерностей фильтра находятся в области значений [3, 7].

Если вы задаете 'FilterSize' как положительное скалярное целое число значения a, затем ядро свертки имеет универсальный размер [a a a].

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Тип дополнения в виде 'same' или 'valid'. Тип дополнения задает дополнительный стиль для convolution3dLayer (Deep Learning Toolbox) в энкодере и подсетях декодера. Пространственный размер выходной карты функции зависит от типа дополнения. Задайте одну из этих опций:

  • 'same' — Нулевое дополнение применяется к входным параметрам к слоям свертки, таким образом, что выход и входные карты функции одного размера.

  • 'valid' — Нулевое дополнение не применяется к входным параметрам к слоям свертки. Слой свертки возвращает только значения свертки, которые вычисляются без нулевого дополнения. Выходная карта функции меньше, чем входная карта функции.

.

Примечание

Чтобы гарантировать, что height, width, and depth значения входных параметров к макс. объединяющим слоям являются четными, выбирают сетевой входной размер изображения, чтобы подтвердить к любому из этих критериев:

  • Если вы задаете 'ConvolutionPadding' как 'same', затем height, width, and depth входа объемное изображение должны быть кратными 2D.

  • Если вы задаете 'ConvolutionPadding' как 'valid', затем height, width и depth входа объемное изображение должны быть выбраны таким образом что heighti=1D2i(fh1), widthi=1D2i(fw1), и depthi=1D2i(fd1) множители 2D.

    где fh, fw и fd являются высотой, шириной и глубиной 3D ядра свертки, соответственно. D является глубиной энкодера.

Типы данных: char | string

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

свернуть все

Слои, которые представляют 3-D архитектуру сети U-Net, возвратились как layerGraph Объект (Deep Learning Toolbox).

Сетевой размер выходного изображения, возвращенный как четырехэлементный вектор из формы [height, width, depth, channels]. channels является количеством выходных каналов и равен количеству классов, заданных во входе. height, width и depth выходного изображения от сети зависят от типа дополнения свертки.

  • Если вы задаете 'ConvolutionPadding' как 'same', затем height, width и depth сетевого выходного изображения совпадают с height сетевого входного изображения.

  • Если вы задаете 'ConvolutionPadding' как 'valid', затем height, width и depth сетевого выходного изображения меньше height сетевого входного изображения.

Типы данных: double

Больше о

свернуть все

3-D архитектура U-Net

  • 3-D архитектура U-Net состоит из подсети энкодера и подсети декодера, которые соединяются разделом моста.

  • Подсети энкодера и декодера в 3-D архитектуре U-Net состоят из нескольких этапов. EncoderDepth, то, которое задает глубину подсетей энкодера и декодера, определяет номер этапов.

  • Каждый этап энкодера в 3-D сети U-Net состоит из двух наборов сверточных, нормализации партии. и слоев ReLU. Слой ReLU сопровождается 2 макс. слоем объединения 2 на 2. Аналогично, каждый этап декодера состоит из транспонированного слоя свертки для повышающей дискретизации, сопровождаемый двумя наборами сверточных, нормализации партии. и слоев ReLU.

  • Раздел моста состоит из двух наборов свертки, нормализации партии. и слоев ReLU.

  • Термин смещения всех слоев свертки инициализируется, чтобы обнулить.

  • Веса слоя Convolution в подсетях энкодера и декодера инициализируются с помощью 'He' метод инициализации веса.

Советы

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

  • Используйте основанные на закрашенной фигуре подходы для бесшовной сегментации больших изображений. Можно извлечь закрашенные фигуры изображений при помощи randomPatchExtractionDatastore функция в Image Processing Toolbox™.

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

Ссылки

[1] Çiçek, Ö., А. Абдулкадир, С. С. Линкамп, Т. Брокс и О. Роннебергер. "3D U-Net: Изучение Плотной Объемной Сегментации из Разреженной Аннотации". Медицинское Вычисление Изображений и Машинное Вмешательство – MICCAI 2016. MICCAI 2016. Читайте лекции Примечаниям в Информатике. Издание 9901, стр 424–432. Спрингер, Хан.

Введенный в R2019b