Заметки по глубокому обучению (31) 3D свертки и сверточные нейронные сети

глубокое обучение

Во-первых, свертка трехмерных изображений RGB

Сначала просмотрите процесс следующей двумерной операции свертки:

在这里插入图片描述Затем давайте посмотрим, как 3D-изображения могут выполнять эффективные операции свертки.在这里插入图片描述Метод расчета аналогичен двумерной свертке, которая делится на трехмерное изображение3×3×33\times3\times3блоки (так называемыеКуб свертки), свернуть 27 пикселей, то есть умножить и суммировать с фильтром поэлементно, чтобы получить значение в выходной двумерной матрице.在这里插入图片描述3D-изображения и фильтры могут иметь разную высоту и ширину, но должны иметьодинаковое количество каналов. В примере RGB есть три цветовых канала, RGB (которые составляют любой цвет в изображении).

2. Фильтр наложения

Рассмотрим вопрос: обнаружение вертикальных и горизонтальных краев может быть достигнуто с помощью предыдущего метода, но что, если мы хотим обнаружить более общие края (другими словами: хотим обнаружить больше информации об объектах)? Вроде 43°. В настоящее время необходим метод, называемый наложением фильтра.

  • Используйте фильтр обнаружения вертикального края, чтобы получить результат обнаружения вертикального края [2D].
  • Используйте фильтр обнаружения горизонтального края, чтобы получить результат обнаружения горизонтального края [2D].
  • Наложите матрицы обнаружения вертикальных и горизонтальных краев, чтобы получить результат [3D].
  • Этот [3D] результат накладывает эффекты вертикального и горизонтального обнаружения.

Давайте посмотрим на схему учителя:在这里插入图片描述

Три, сводка параметров

3D изображение:n×n×ncn\times n\times n_cфильтр:f×f×ncf\times f\times n_cВыход свертки:nf+1×nf+1×nc'n-f+1\times n-f+1\times n_c'в,nc'=n_c'= #filtersfiltersОбратите внимание, что здесь используются padding=valid и stride=1. Таким образом, более общий вывод свертки выглядит следующим образом:n+2pf+1s×n+2pf+1s×nc'\frac{n+2p-f+1}{s}\times \frac{n+2p-f+1}{s}\times n_c'Количество выходных каналовnc'n_c'равно количеству фильтров, которое также равно количеству обнаруженных признаков (в приведенном выше примере изображения RGB обнаруживаются как вертикальные, так и горизонтальные края)

4. Однослойная сверточная сеть

在这里插入图片描述 Подсчитайте количество параметров в однослойной сетиИзображение в один слой3×3×33\times3\times3, количество фильтров 10, сколько параметров у этого слоя?

  • Каждая позиция 27, операции свертки плюс значение смещения B, чтобы получить желаемую свертка 28 каждого параметра фильтра.
  • Всего есть 10 фильтров, в 10 раз выше процесс, всего 280 параметров.

Видно, что каким бы большим ни было изображение, параметров не так много, в зависимости от количества и размера фильтров, что вызывается в сверточной нейронной сетиизбегать переоснащения.

5. Описание символа

f[l]f^{[l]}: первоеllразмер фильтра слоя

p[l]p^{[l]}: первоеllКоличество отступов в слое

s[l]s^{[l]}: первоеllРазмер шага слоя

nc[l]n_c^{[l]}: первоеllКоличество фильтров для слоя

f[l]×f[l]×nc[l1]f^{[l]}\times f^{[l]}\times n_c^{[l-1]}: первоеllИзмерение фильтра слоя

f[l]×f[l]×nc[l1]×nc[l]f^{[l]}\times f^{[l]}\times n_c^{[l-1]}\times n_c^{[l]}: первоеllВесовой размер слоя

nc[l]:1×1×1×nc[l]n_c^{[l]} :1\times1\times1\times n_c^{[l]}: первоеllРазмер смещения слоя

nH[l1]×nW[l1]×nc[l1]n_{H}^{[l-1]}\times n_{W}^{[l-1]}\times n_c^{[l-1]}: первоеllвходной размер слоя

nH[l]×nW[l]×nc[l]n_{H}^{[l]}\times n_{W}^{[l]}\times n_c^{[l]}: первоеllвыходной размер слоя

m×nH[l]×nW[l]×nc[l]m\times n_{H}^{[l]}\times n_{W}^{[l]}\times n_c^{[l]}: первоеllВыходной размер слоя [m отсчетов] (методы векторизации в глубоком обучении)

nH[l]=nH[l1]+2p[l]f[l]s[l]+1n_{H}^{[l]}=\lfloor{\frac{n_{H}^{[l-1]}+2p^{[l]}-f^{[l]}}{s^{[l]}}+1}\rfloor

nW[l]=nW[l1]+2p[l]f[l]s[l]+1n_{W}^{[l]}=\lfloor{\frac{n_{W}^{[l-1]}+2p^{[l]}-f^{[l]}}{s^{[l]}}+1}\rfloor

Шесть, сверточная нейронная сеть для классификации изображений

Первая свертка:在这里插入图片描述Вторая свертка:在这里插入图片描述Третья свертка:在这里插入图片描述Разверните последний результат свертки в столбец векторов и регрессию логистики/softmax, чтобы получить результат прогнозирования.在这里插入图片描述

7. Типичные типы слоев в сверточных нейронных сетях

  • Сверточный слой Convolution (CONV)
  • Пулирующий слой Объединение в пул (POOL)
  • Полностью подключенный слой Полностью подключенный (FC)

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