exponenta event banner

unet3dLayers

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

Описание

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

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

пример

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

пример

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

Примеры

свернуть все

Создайте 3D сеть 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)

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

analyzeNetwork(lgraph);

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

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

свернуть все

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

  • Трехэлементный вектор вида [глубина ширины высоты]

  • Четырехэлементный вектор вида [канал глубины ширины высоты]. канал обозначает количество каналов изображения.

Примечание

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

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

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

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

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

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

2стейдж-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' - Заполнение нулем не применяется к входам в слои свертки. Слой свертки возвращает только те значения свертки, которые вычисляются без заполнения нулем. Выходная карта элементов меньше, чем входная карта элементов.

.

Примечание

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

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

  • При указании 'ConvolutionPadding' как 'valid', то высота, ширина и глубина входного объёмного изображения должны выбираться такими, чтобы высота ∑i=1D2i (fh 1), ширина ∑i=1D2i (fw − 1) и глубина ∑i=1D2i (fd − 1) были кратны 2D.

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

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

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

свернуть все

Уровни, представляющие сетевую архитектуру 3-D U-Net, возвращаемые в виде layerGraph(Панель инструментов глубокого обучения).

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

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

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

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

Подробнее

свернуть все

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

  • Архитектура 3-D U-Net состоит из подсети кодера и подсети декодера, которые соединены мостовой секцией.

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

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

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

  • Условие смещения всех слоев свертки инициализируется равным нулю.

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

Совет

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

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

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

Ссылки

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

См. также

Объекты

Функции

Представлен в R2019b