Компьютерное зрение

Понимание сверточных нейронных сетей (часть 2)

Если вы еще не читали предыдущую часть этого блога, перейдите сюда, чтобы лучше понять темы, представленные в этом блоге. —Понимание сверточных нейронных сетей (часть 1)

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

Рецептивные поля

Формально это область во входном пространстве, на которую влияет конкретная функция CNN. Говоря более неформально, это часть тензора, которая после свертки приводит к функции. Таким образом, в основном это дает нам представление о том, откуда мы получаем наши результаты, когда данные проходят через слои сети.

На этом изображении у нас есть двухслойная полностью сверточная нейронная сеть с ядром 3×3 в каждом слое. Зеленая область отмечает восприимчивое поле одного пикселя во втором слое, а желтая область отмечает восприимчивое поле одного пикселя в третьем последнем слое.

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

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

Локальное рецептивное поле

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

Вы можете более подробно изучить Local Receptive Field в этом блоге Ричмонда Алаке (это премиум-блог, для чтения блога вам потребуется учетная запись Medium или подписка на Medium Premium). — Local Receptive Поле

Глобальное рецептивное поле

Глобальное рецептивное поле — это не что иное, как исходный размер изображения, который необходимо уменьшить в процессе свертки. Например, если есть изображение i1 размера 7x7, и мы используем фильтр k1 размера 3x3 на i1, чтобы создать другое изображение i2 размером 5x5, и снова применить фильтр k2 с тем же размером 3x3 для создания окончательного изображения i3. Здесь локальное принимающее поле для i3 будет иметь размер i2, то есть 5x5, но глобальное принимающее поле для i3 > будет исходным размером изображения, т. е. i1 7x7.

Выходная размерность Размер

Представьте, есть изображение размером 200x200, сколько слоев свертки потребуется, чтобы превратить это изображение 200x200 в изображение 1x1 с использованием ядра 3x3? Для обучения таких данных потребуется много слоев, а также много вычислительной мощности, потому что мы знаем, что после каждой свертки изображения ядром 3x3 размер просто уменьшается на 2x2, т.е. если изображение 200x200 находится в первый слой будет свернут ядром 3x3, тогда вывод будет 198x198, затем 196x196, 194x194 и так далее, пока не достигнет 1x1. Всегда помните, что нормальная архитектура CNN должна иметь 5–15 слоев, от максимума до максимума 16–32, хотя это зависит от разрешения изображения. Эта проблема уменьшения количества слоев обычно решается путем добавления слоя Max-Pooling.

Максимальное объединение

Max Pooling – это функция, обычно встраиваемая в архитектуры сверточных нейронных сетей (CNN). Основная идея слоя пула состоит в том, чтобы «накапливать» функции из карт, созданных путем свертки фильтра по изображению. Формально его функция заключается в постепенном уменьшении пространственного размера представления для уменьшения количества параметров и вычислений в сети. Наиболее распространенной формой объединения является максимальное объединение.

Максимальное объединение выполняется частично, чтобы помочь переоснащению, предоставляя абстрактную форму представления. Кроме того, это снижает вычислительные затраты за счет уменьшения количества параметров для изучения и обеспечивает базовую трансляционную инвариантность к внутреннему представлению. Максимальное объединение выполняется путем применения максимального фильтра к (обычно) непересекающимся подобластям исходного представления. Другие формы объединения – средние и мин. В Max-pooling мы обычно называем фильтры или ядра маской, потому что они извлекают и инкапсулируют больше данных по сравнению с фильтрами и ядрами.

Практикуйте интуицию на наборе данных MNIST

Загрузить набор данных MNIST

MNIST — один из самых известных наборов данных в области машинного обучения.

  • Он содержит 70 000 изображений рукописных цифр.
  • Очень просто скачать
  • Размеры изображений 28x28
  • Изображения в градациях серого

Визуализируйте первые шесть обучающих изображений

Посмотреть изображение более подробно

Предварительная обработка изображений и меток

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

Изменить форму данных, чтобы они соответствовали нашей CNN

Определить архитектуру модели

Вы должны передать следующие аргументы:

  • filters — количество фильтров.
  • kernel_size — число, определяющее высоту и ширину (квадратного) окна свертки.

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

  • шаги — шаг свертки. Если вы ничего не укажете, шаг будет равен 1.
  • padding – одно из значений «допустимый» или «одинаковый». Если вы ничего не укажете, заполнение будет «действительным».
  • активация — обычно «relu». Если вы ничего не укажете, активация не будет применена. Вам настоятельно рекомендуется добавить функцию активации ReLU к каждому сверточному слою в ваших сетях.

Что нужно помнить

  • Всегда добавляйте функцию активации ReLU к слоям Conv2D в вашей CNN. За исключением последнего слоя в сети, плотные слои также должны иметь функцию активации ReLU.
  • При построении сети для классификации последним слоем в сети должен быть слой Dense с функцией активации SoftMax. Количество узлов в последнем слое должно равняться общему количеству классов в наборе данных.

На что следует обратить внимание:

  • Сеть начинается с последовательности двух сверточных слоев, за которыми следуют слои с максимальным объединением.
  • Последний слой имеет одну запись для каждого класса объектов в наборе данных и имеет функцию активации SoftMax, которая возвращает вероятности.
  • Глубина Conv2D увеличивается от входного слоя с 1 до 32 и до 64.
  • Мы также хотим уменьшить высоту и ширину — здесь вступает в действие максимальное объединение. Обратите внимание, что размеры изображения уменьшаются с 28 до 14 после слоя объединения.
  • Вы можете видеть, что каждая выходная форма имеет Нет вместо размера пакета, это означает изменение размера пакета во время выполнения.
  • Наконец, мы добавляем один или несколько полносвязных слоев, чтобы определить, какой объект содержится в изображении. Например, если в последнем слое максимального объединения были найдены колеса, этот слой преобразует эту информацию, чтобы предсказать присутствие автомобиля на изображении с более высокой вероятностью. Если бы были глаза, ноги и хвосты, то это могло означать, что на изображении есть собака.

Ключевые моменты

  1. Рецептивное поле — это часть тензора, которая после свертки приводит к функции.
  2. Если нейрон связан только с небольшой областью нейронов входного слоя, то эта область на входном изображении называется локальным рецептивным полем для скрытого нейрона.
  3. Максимальное объединение Общая интуиция заключается в том, что слой объединения предназначен для «накопления» функций из карт, созданных путем свертки фильтра по изображению.
  4. В Max-pooling мы обычно называем фильтры или ядра масками, поскольку они извлекают и инкапсулируют больше данных, чем фильтры и ядра.
  5. Всегда добавляйте функцию активации ReLU к слоям Conv2D в вашей CNN, и при построении сети для классификации последний слой в сети должен быть слоем Dense с SoftMax. функция активации.

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

Получите больше визуального представления об архитектуре CNN — Tensorspace.js