pretrainedEncoderNetwork

Создайте сеть энкодера из предварительно обученной сети

Описание

пример

net = pretrainedEncoderNetwork(networkName,depth) создает сеть энкодера, net, от предварительно обученной сети, networkName. Сеть энкодера выполняет depth субдискретизация операций.

Эта функция требует Deep Learning Toolbox™.

пример

[net,outputNames] = pretrainedEncoderNetwork(networkName,depth) также возвращает имена, outputNames, из слоев активации, которые происходят непосредственно прежде, чем проредить операции. Эти активации соответствуют функциям интереса при конкретных пространственных разрешениях или шкалах.

Примеры

свернуть все

Создайте энкодер с тремя операциями субдискретизации на основе предварительно обученной сети SqueezeNet.

encoderNet = pretrainedEncoderNetwork('squeezenet',3)
encoderNet = 
  dlnetwork with properties:

         Layers: [33x1 nnet.cnn.layer.Layer]
    Connections: [36x2 table]
     Learnables: [26x3 table]
          State: [0x3 table]
     InputNames: {'data'}
    OutputNames: {'fire5-concat'}
    Initialized: 1

Отобразите сеть энкодера.

analyzeNetwork(encoderNet)

Создайте сеть энкодера GAN с четырьмя операциями субдискретизации от предварительно обученной сети GoogLeNet.

depth = 4;
[encoder,outputNames] = pretrainedEncoderNetwork('googlenet',depth);

Определите входной размер сети энкодера.

inputSize = encoder.Layers(1).InputSize;

Определите выходной размер слоев активации в сети энкодера путем создания входа выборочных данных и затем вызова forward, который возвращает активации.

exampleInput = dlarray(zeros(inputSize),'SSC');
exampleOutput = cell(1,length(outputNames));
[exampleOutput{:}] = forward(encoder,exampleInput,'Outputs',outputNames);

Определите количество каналов в блоках декодера как длина третьего канала в каждой активации.

numChannels = cellfun(@(x) size(extractdata(x),3),exampleOutput);
numChannels = fliplr(numChannels(1:end-1));

Задайте функцию, которая создает массив слоев для одного блока декодера.

decoderBlock = @(block) [
    transposedConv2dLayer(2,numChannels(block),'Stride',2)
    convolution2dLayer(3,numChannels(block),'Padding','same')
    reluLayer
    convolution2dLayer(3,numChannels(block),'Padding','same')
    reluLayer];

Создайте модуль декодера с тем же количеством повышающей дискретизации блоков, как там прореживают блоки в модуле энкодера.

decoder = blockedNetwork(decoderBlock,depth);

Создайте сеть U-Net путем соединения модуля энкодера и модуля декодера и добавления связей пропуска.

net = encoderDecoderNetwork([224 224 3],encoder,decoder, ...
   'OutputChannels',3,'SkipConnections','concatenate')
net = 
  dlnetwork with properties:

         Layers: [139x1 nnet.cnn.layer.Layer]
    Connections: [167x2 table]
     Learnables: [116x3 table]
          State: [0x3 table]
     InputNames: {'data'}
    OutputNames: {'encoderDecoderFinalConvLayer'}
    Initialized: 1

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

analyzeNetwork(net)

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

свернуть все

Имя предварительно обученной сети в виде одного из этих значений строки. Необходимо установить связанное Дополнение для выбранной предварительно обученной сети.

  • "alexnet" — Смотрите alexnet (Deep Learning Toolbox) для получения дополнительной информации.

  • "googlenet" — Смотрите googlenet (Deep Learning Toolbox) для получения дополнительной информации.

  • "inceptionresnetv2" — Смотрите inceptionresnetv2 (Deep Learning Toolbox) для получения дополнительной информации.

  • "inceptionv3" — Смотрите inceptionv3 (Deep Learning Toolbox) для получения дополнительной информации.

  • "mobilenetv2" — Смотрите mobilenetv2 (Deep Learning Toolbox) для получения дополнительной информации.

  • "resnet18" — Смотрите resnet18 (Deep Learning Toolbox) для получения дополнительной информации.

  • "resnet50" — Смотрите resnet50 (Deep Learning Toolbox) для получения дополнительной информации.

  • "resnet101" — Смотрите resnet101 (Deep Learning Toolbox) для получения дополнительной информации.

  • "squeezenet" — Смотрите squeezenet (Deep Learning Toolbox) для получения дополнительной информации.

  • "vgg16" — Смотрите vgg16 (Deep Learning Toolbox) для получения дополнительной информации.

  • "vgg19" — Смотрите vgg19 (Deep Learning Toolbox) для получения дополнительной информации.

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

Количество субдискретизации операций в энкодере в виде положительного целого числа. Энкодер прореживает вход на коэффициент 2^depth. Вы не можете задать глубину, больше, чем глубина предварительно обученной сети.

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

свернуть все

Сеть Encoder, возвращенная как dlnetwork Объект (Deep Learning Toolbox). Сеть имеет depth отличные пространственные разрешения. Последний слой сети энкодера является слоем, который прибывает непосредственно перед следующей операцией субдискретизации предварительно обученной сети.

Слой называет в сети net это прибывает непосредственно прежде, чем проредить операции, возвращенные как вектор строки.

Введенный в R2021a