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 обозначает количество каналов изображения.

Примечание

Размер входного изображения сети должен быть выбран таким образом, чтобы размерность входов слоев max-pooling была четными числами.

Типы данных: 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 должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

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

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

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

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

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

2stage-1 NumFirstEncoderFilters

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

2stage NumFirstEncoderFilters

The 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 и depth значения входов слоев max-pooling ровны, выберите размер входного изображения сети, чтобы подтвердить любой из следующих критериев:

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

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

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

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

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

свернуть все

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

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

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

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

Типы данных: 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.

  • Срок смещения всех слоев свертки равен нулю.

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

Совет

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

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

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

Ссылки

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

Введенный в R2019b