Сеть FCN — на основе блога bestrivern и собственного понимания.

искусственный интеллект
Сеть FCN — на основе блога bestrivern и собственного понимания.

I. Обзор

FCN – это репрезентативная работа по глубокому обучению, применяемая к сегментации изображений. Это сквозной метод сегментации изображений, который позволяет сети делать прогнозы на уровне пикселей и напрямую получать карту меток. Поскольку все уровни в сети FCN являются сверточными, ее называют полностью сверточной сетью.

В полностью сверточных нейронных сетях используются три основных метода:

  1. сверточный

  2. Повышение частоты дискретизации (Upsample)

  3. Пропустить слой

2. Структура сети

FCN классифицирует изображения на уровне пикселей, тем самым решая проблему семантической сегментации на семантическом уровне. В отличие от классической CNN, которая использует полностью связанный слой после сверточного слоя для получения вектора признаков фиксированной длины для классификации (полный слой соединения + вывод softmax), FCN может принимать входные изображения любого размера, используя反卷积层правильноКарта объектов последнего сверточного слоя подвергается повышающей дискретизации, чтобы восстановить ее до того же размера, что и входное изображение, так что прогноз может быть сгенерирован для каждого пикселя, сохраняя при этом пространственную информацию в исходном входном изображении, и, наконец, увеличенный пиксель. мудрая классификация на картах объектов.

output_5.png

3. Подробное объяснение полной свертки

1. Возможность взаимного преобразования полного соединения и полной свертки

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

  • Для любого сверточного слоя существует полносвязный слой, реализующий ту же функцию прямого распространения, что и он. Матрица весов — это огромная матрица, за исключением некоторых конкретных блоков, остальное — ноль. И в большинстве этих блоков все элементы равны.
  • Любой полносвязный слой можно превратить в сверточный слой. Полносвязный слой на самом деле представляет собой операцию свертки, при этом размер ядра свертки равен размеру объекта верхнего слоя.Результатом свертки является узел, соответствующий точке полносвязного слоя. То есть, если размер карты признаков предыдущего слоя полной свертки:NH*NW*NCN_H * N_W * N_C. Полностью сверточный слой:1*1*K1 * 1 * K

тогда ты можешь通过一个卷积操作来代替全连接层, размер ядра сверткиNH*NW*NCN_H * N_W * N_C, а всего K.

  • Реализация сверточного слоя в полносвязный слой: преобразование сверточного слоя в полносвязный слой может быть завершено через a W и b, W: [K, W], b: [K, 1].

2. Почему входное изображение традиционной CNN имеет фиксированный размер?

Для CNN, когда входное изображение проходит через слои свертки и объединения, эти слои не заботятся о размере изображения. Например, для сверточного слоя outputsize = (inputsize - размер ядра) / шаг + 1, не имеет значения, насколько велик входной размер.Для входного размера входной карты объектов свертка скользящего окна может вывести карту объектов outputsize размер (в основном это то, что количество ядер свертки K здесь можно указать самостоятельно). То же самое верно и для слоя пула. Но при входе в полносвязный слой карту объектов (при условии размера n×n) нужно вытянуть в вектор, и каждый элемент (всего n×n) в векторе, как узел, должен быть связан с все узлы в следующем слое.Точки (при условии, что 4096) полностью связаны, количество весов здесь 4096×n×n, и мы знаем, что как только структура нейронной сети определена, ее веса фиксированы, поэтому это n не может быть изменено, n - выходной размер conv5, поэтому, оглядываясь назад слой за слоем, каждый выходной размер должен быть фиксированным, затем каждый входной размер должен быть фиксированным, поэтому размер входного изображения должен быть фиксированным.

3. Какая польза от переформирования весов W полносвязного слоя в фильтры сверточного слоя?

Причина, по которой определенная сетевая структура CNN должна фиксировать размер входного изображения, заключается в том, что количество весов полностью связанного слоя фиксировано, а количество весов связано с размером карты объектов, но FCN полностью соединяет 1000 узлов. на основе CNN Слой изменен на сверточный слой, содержащий 1000 ядер свертки 1 × 1. После этого слоя по-прежнему получается двумерная карта признаков. Точно так же мы не заботимся о размере этой карты признаков, поэтому нет ограничений на размер входного изображения.

Как показано на рисунке ниже, FCN преобразует полносвязный слой в традиционной CNN в сверточный уровень, а соответствующая FCN сети CNN преобразует последние три полносвязных слоя в три сверточных слоя:  output_9.png

output_10.png

  • Полностью связанный слой преобразуется в полностью сверточный слой: в традиционной структуре CNN первые 5 слоев представляют собой сверточные слои, шестой и седьмой слои представляют собой соответственно одномерный вектор длиной 4096, а восьмой слой представляет собой длину 1000. Одномерный вектор , соответствующий вероятностям 1000 различных классов. FCN представляет эти 3 слоя как сверточные слои, а размер ядра свертки (количество каналов, ширина, высота) составляет (4096, 1, 1), (4096, 1, 1), (1000, 1, 1) соответственно. . Кажется, что нет разницы в числах, но концепция и процесс расчета свертки и полной связи разные.Используются веса и смещения, которые были обучены CNN, но разница в том, что веса и смещения имеют свои собственные диапазон, собственное ядро ​​свертки
  • Размер входного изображения в CNN равномерно фиксируется на размере 227x227, первый уровень объединения составляет 55x55, второй уровень объединения составляет 27x27, пятый уровень объединения составляет 13x13, а входное изображение FCN имеет размер H * W, первый слой становится равным 1/2 размера исходного изображения после объединения, второй слой становится размером 1/4 размера исходного изображения, пятый слой становится размером 1/8 размера исходного изображения, а восьмой слой становится размером размер исходного изображения 1/16 от размера исходного изображения
  • После многократных сверток и пулинга полученные изображения становятся все меньше и меньше, а разрешение все ниже и ниже. Когда изображение является наименьшим слоем, когда изображение поступает, сгенерированное изображение называется тепловой картой.Тепловая карта является нашей самой важной многомерной картой признаков.После получения тепловой карты многомерных признаков самым важным шагом является последний шаг Исходное изображение подвергается апсемплингу, и изображение увеличивается в несколько раз до размера исходного изображения

По сравнению с использованием исходной сверточной нейронной сети перед преобразованием для итеративного расчета модели оптимизации для всех 36 позиций, а затем для прогнозирования 36 позиций, более эффективно использовать преобразованную сверточную нейронную сеть для выполнения расчета прямого распространения. потому что все 36 вычислений используют общие вычислительные ресурсы. Этот метод часто используется на практике, обычно увеличивая изображение, а затем используя преобразованную свёрточную нейронную сеть для оценки множества различных местоположений в пространстве, чтобы получить классификационный балл, а затем усреднять эти баллы.

3. Деконволюция

Операцию Upsampling можно рассматривать как деконволюционную, параметры операции свертки, как и у CNN, изучаются с помощью алгоритма bp в процессе обучения модели FCN. Слой деконволюции также является слоем свертки, независимо от размера входных данных, и выводит выходные данные после свертки скользящего окна. Deconv не является настоящей деконволюцией (обратным преобразованием свертки).Недавно распознанное имя должно быть транспонировано convolution.Прямое распространение deconv является обратным распространением conv.    Параметры деконволюции: используйте транспонирование фильтра в процессе свертки (фактически переворачивайте фильтр в горизонтальном и вертикальном направлениях) в качестве карты признаков перед вычислением свертки. Операция    деконволюции выглядит следующим образом:

output_11.png   Синий цвет — это вход слоя деконволюции, а зеленый — выход Полное заполнение, транспонирование Полное заполнение и транспонирование слоя деконволюции.

4. Пропустить структуру

После обработки результатов CNN получается плотное предсказание, и автор обнаружил в эксперименте, что полученные результаты сегментации относительно грубые, поэтому рассмотрим добавление более подробной информации предыдущего слоя, то есть выход предпоследнего слоя и окончательный вывод Выполнение слияния на самом деле является дополнением:

output_12.png

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

5. Модельное обучение

Используйте обученную модель AlexNet, VGG16 или GoogleNet для инициализации и выполняйте тонкую настройку на этой основе, вся тонкая настройка, просто добавьте повышающую дискретизацию в конце, а обучение параметрам по-прежнему использует принцип обратного распространения самой CNN. Используйте целое изображение для обучения без выборки фрагментов. Эксперименты показали, что очень эффективно и продуктивно использовать полный граф напрямую. Инициализируйте сверточные слои оценки класса со всеми нулями. Случайная инициализация не имеет преимуществ в производительности и сходимости.

Пример FCN: на входе может быть цветное изображение любого размера, на выходе тот же размер, что и на входе, глубина: 20 категорий объектов + фон = 21, модель основана на AlexNet

  • синий: сверточный слой

  • Зеленый: слой максимального объединения

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

  • Серый: обрезать, использовать слой обрезки, чтобы унифицировать размер двух перед объединением, и, наконец, обрезать до того же размера, что и входной сигнал.

  • Для входных изображений разного размера соответственно изменяется размер (высота, ширина) каждого слоя данных, а глубина (канал) остается неизменной.

  • Полная часть сверточного слоя используется для извлечения признаков, а выходные данные сверточного слоя (3 синих слоя) извлекаются как признаки для прогнозирования 21 категории.

  • Пунктирная линия на рисунке — работа слоя деконволюции Слой деконволюции (3 оранжевых слоя) может увеличивать размер входных данных. Как и в сверточном слое, конкретные параметры апсемплинга определяются путем обучения.

output_13.png

  1. Инициализирован классической сетью классификации AlexNet. Последние два уровня полностью подключены (красный), параметры отброшены и не используются

output_14.png

2. Предсказать сегментацию маленького изображения () из маленького изображения функции (), а затем напрямую преобразовать его в большое изображение. 

output_15.png

Шаг деконволюции (оранжевый) равен 32, эта сеть называется FCN-32s.

3. Повышение дискретизации выполняется в два этапа (оранжевый × 2).Перед вторым повышением дискретизации вливается результат прогнозирования (синий) четвертого слоя объединения (зеленый). Используйте структуру уровней пропуска для повышения точности.

output_16.png

Второй шаг деконволюции равен 16, и эта сеть называется FCN-16s.

4. Повышение дискретизации делится на три раза (оранжевый × 3), а результаты прогнозирования третьего слоя объединения дополнительно интегрируются.

output_17.png

Другие параметры:

  • мини-пакет: 20 изображений

  • скорость обучения: 0,001

  • Инициализация: параметры сверточных слоев вне сети классификации инициализируются до 0

Параметры деконволюции инициализируются для билинейной интерполяции. Последний слой деконволюции билинейной интерполяции с фиксированным разрядом не обучается  output_18.png

6. Резюме ФКН Резюме FCN:

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

  • Полученные результаты еще недостаточно точны. Хотя 8-кратное повышение частоты дискретизации намного лучше, чем 32-кратное, результат повышения частоты дискретизации по-прежнему остается относительно размытым и гладким, и он не чувствителен к деталям изображения.
  • Отдельные пиксели классифицируются без надлежащего учета соотношения пикселей к пикселям. Игнорировать шаг пространственной регуляризации, используемый в обычных методах сегментации на основе пикселей, и отсутствие пространственной согласованности.