Создание модульных нейронных сетей

Многие нейронные сети, используемые для приложений обработки изображений, имеют архитектуру, следующую модульному шаблону. Шаблон состоит из модуля энкодера, который понижает дискретизацию входа, за которой следует декодер, который повышает дискретизацию данных. Слои моста опционально соединяют модули энкодера и декодера. Модульный шаблон используется сверточными нейронными сетями (CNNs), такими как U-Net, и генератором генеративной состязательной сети (GAN) и сетями дискриминатора, такими как CycleGAN и PatchGAN.

Создайте модули энкодера и декодера

Для создания модулей энкодера и декодера можно:

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

  • Создайте модули энкодера и декодера из базовых блоков слоев, которые следуют повторяющемуся шаблону. Чтобы создать модуль, задайте функцию, которая задает шаблон, затем соберите блоки в модуль с помощью blockedNetwork функция.

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

Тип блокаОписание
Начальный блок
  • Система координат imageInputLayer (Deep Learning Toolbox)

  • A convolution2dLayer (Deep Learning Toolbox) с шагом [1 1]

  • Необязательный слой нормализации

  • Слой активации

Блок понижающей дискретизации
  • Слой понижающей дискретизации, такой как слой объединения или convolution2dLayer (Deep Learning Toolbox) с шагом больше 1

  • Необязательный слой нормализации

  • Слой активации

Остаточный блок
  • A convolution2dLayer (Deep Learning Toolbox)

  • Необязательный слой нормализации

  • Слой активации

  • Необязательный слой отсева

  • Второй convolution2dLayer (Deep Learning Toolbox)

  • Необязательный второй слой нормализации

  • Система координат additionLayer (Deep Learning Toolbox), который обеспечивает пропускное соединение между каждым блоком

Блок повышающей дискретизации
  • Слои, которые выполняют усиление дискретизации, такие как транспонированный слой свертки или слой свертки с последующим изменением размера или слоя «глубина-пространство».

  • Необязательный слой нормализации

  • Слой активации

Конечный блок
  • A convolution2dLayer (Deep Learning Toolbox)

  • Необязательный выходной слой

Создайте сети из модулей энкодера и декодера

После того, как у вас есть энкодер и модуль декодера, можно объединить модули, чтобы сформировать генератор CNN, GAN или сеть дискриминатора GAN, используя encoderDecoderNetwork функция. В конце сети можно опционально включать мостовое соединение, пропускать соединения или дополнительные слои.

Можно также создать популярные GAN-генераторы и сети дискриминаторов непосредственно с помощью функций, доступных в Image Processing Toolbox™. Эти сети включают CycleGAN, PatchGAN, pix2pixHD и МОДУЛЬ. Для получения дополнительной информации смотрите Запуск с сетями GAN для преобразования изображений в изображения.

См. также

| |

Похожие темы