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

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

Предварительные требования: Базовое понимание нейронной сети. Прочтите https://medium.com/datadriveninvestor/neural-network-simplified-c28b6614add4

Давайте разберемся, как наш мозг распознает изображение

По словам профессоров-лауреатов Нобелевской премии Хьюбеля и Визеля, визуальная область V1 состоит из простых и сложных ячеек. Простые ячейки помогают в обнаружении признаков, а сложные ячейки объединяют несколько таких локальных особенностей из небольшого пространственного соседства. Пространственный пул помогает с трансляционными инвариантными функциями.

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

что означают трансляционные инвариантные функции?

Инвариантность изображения означает, что даже когда изображение поворачивается, имеет другой размер или просматривается при разном освещении, объект будет распознаваться как один и тот же объект.

Это помогает в распознавании объектов, поскольку представление изображения инвариантно к преобразованиям изображения, таким как смещение, поворот, небольшие деформации и т. Д.

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

Давайте разберемся, что такое CNN и как мы можем его использовать.

Что такое CNN?

CNN расшифровывается как сверточная нейронная сеть, которая представляет собой специализированную нейронную сеть для обработки данных, которые имеют входную форму, такую ​​как 2D-матрица, например изображения.

Сети CNN обычно используются для обнаружения и классификации изображений. Изображения - это двумерная матрица пикселей, на которой мы запускаем CNN, чтобы либо распознать изображение, либо классифицировать изображение. Определите, является ли изображение человека, автомобиля или просто цифрами в адресе.

Как и нейронные сети, CNN также черпает мотивацию из мозга. Мы используем модель распознавания объектов, предложенную Hubel и Wiesel.

Что такое свертка?

Свертка - это математическая операция, в которой у нас есть вход I и аргумент, ядро ​​K, для создания вывода, который выражает, как форма одного изменяется другим.

Давайте объясним на примере изображения.

У нас есть изображение «x», которое представляет собой двумерный массив пикселей с разными цветовыми каналами (красный, зеленый и синий-RGB), и у нас есть детектор функций или ядро ​​«w», а затем вывод, который мы получить после применения математической операции называется карта объектов

Математическая операция помогает вычислить сходство двух сигналов.

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

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

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

Итак, как нам реализовать это в CNN?

Мы реализуем это с помощью сверточного слоя.

Сверточный слой - это основной строительный блок CNN, он помогает в обнаружении функций.

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

Легкий способ понять это: если вы были детективом и наткнулись на большое изображение или картинку в темноте, как вы распознаете это изображение?

Вы будете использовать фонарик и сканировать все изображение. Это именно то, что мы делаем в сверточном слое.

Ядро K, являющееся детектором признаков, эквивалентно фонарику на изображении I, и мы пытаемся обнаружить особенности и создать несколько карт признаков, чтобы помочь нам идентифицировать или классифицировать изображение.

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

Как все это работает?

Давайте возьмем изображение с матрицей 5 на 5 с 3 каналами (RGB), детектором признаков 3 на 3 с 3 каналами (RGB) и просканируем детектор признаков по изображению с шагом 1.

Каким будет размер выходной матрицы или карты объектов, когда я наложу детектор объектов на изображение?

Размер карты объектов в зависимости от размера входного изображения (W), размера детектора объектов (F), шага (S) и нулевого отступа на изображении (P) является

(W−F+2P)/S+1

Размер входного изображения W в нашем случае равен 5.

Детектор признаков или размер воспринимающего поля - F, который в нашем случае равен 3

Шаг (S) равен 1, а количество использованных нулевых отступов (P) на изображении равно 0.

Итак, размер нашей карты объектов будет (5–3 +0) / 1 + 1 = 3.

Таким образом, карта функций представляет собой матрицу 3 * 3 с тремя каналами (RGB).

Это объясняется шаг за шагом ниже

Мы видим, что входное изображение 5 на 5 сокращается до 3 на 3 карты признаков. Глубина или каналы остаются такими же, как 3 (RGB).

мы используем несколько детекторов признаков для поиска краев, мы можем использовать детектор признаков для увеличения резкости изображения или размытия изображения.

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

в этом случае, применяя ту же формулу, мы получаем

(W−F+2P)/S+1 => (5–3 +2)/1 + 1=5,

теперь размер вывода будет 5 на 5 с 3 цветовыми каналами (RGB).

Давайте посмотрим на все это в действии

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

вывод = ввод * вес + смещение

Количество параметров = (3 * 3 * 3) +1 = 28

Для 100 детекторов признаков или фильтров количество параметров будет 2800.

После каждой операции свертки, которая является линейной функцией, мы применяем функцию активации ReLU. Функция активации ReLU привносит нелинейность в сверточный слой.

Он заменяет все отрицательные значения пикселей нулевыми значениями в карте функций.

На рисунке ниже показано преобразование карты функций после применения функции активации ReLU.

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

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

Объединение

теперь мы применяем объединение, чтобы получить трансляционную инвариантность. (запомните изображение розы)

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

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

когда мы используем максимальный пул, он суммирует результат по всей окрестности. теперь у нас меньше единиц по сравнению с картой функций.

В нашем примере мы просматриваем все карты функций, используя поле 2 на 2, и находим максимальное значение.

Итак, теперь мы знаем, что сверточная сеть состоит из

  • Параллельно выполняются множественные свертки - выход - линейная функция активации.
  • Применение нелинейной функции ReLU к сверточным слоям
  • Используйте функцию объединения, например, максимальное объединение, чтобы суммировать статистику ближайших местоположений. Это помогает с «трансляционной инвариантностью»
  • мы сглаживаем максимальный объединенный выход, который затем является входом в полностью подключенную нейронную сеть

На диаграмме ниже представлена ​​полная сверточная нейронная сеть.

Есть ли причина использовать свертку для обнаружения изображений?

Свертка использует три важные идеи

  • Редкие взаимодействия
  • Совместное использование параметров
  • Эквивариантные представления

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

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

Еще одно преимущество - вычисление вывода требует меньшего количества операций, что делает его статистически эффективным.

Совместное использование параметров используется для управления количеством параметров или весов, используемых в CNN.

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

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

Эквивариантное представление

Это означает, что обнаружение объекта инвариантно к изменениям освещенности, изменению положения, но внутреннее представление эквивалентно этим изменениям.

представлять (роза) = представлять (преобразовывать (роза)).

Прочтите, поделитесь с друзьями и хлопайте в ладоши, если это помогло вам лучше понять.