Добро пожаловать в третью часть нашей серии блогов о компьютерном зрении. В Части 1 мы представили обзор некоторых вариантов использования компьютерного зрения в различных отраслях, за которым последовала Часть 2: Краткое изложение различных методов компьютерного зрения. В этой третьей части мы обсудим основные строительные блоки, из которых состоят многие современные алгоритмы. Цель состоит не в том, чтобы предоставить углубленную математическую диссертацию, а, скорее, в подробном объяснении. Затем мы будем использовать эти строительные блоки для построения нейронной сети, способной классифицировать изображения.

Свертка

Давайте сразу же погрузимся в то, что, возможно, является наиболее влиятельной техникой в ​​CV. Ниже мы видим визуальное представление операции свертки:

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

Еще не впечатлены? Взгляните на два следующих фильтра:

Ничего особенного, правда? Давайте посмотрим, что получится после применения обоих фильтров к изображению:

Фильтры в операции свертки - это, по сути, не что иное, как детекторы признаков, а результат также называется картой признаков.

Единицы активации

Выпрямленная линейная единица (ReLU) обычно применяется после каждой свертки. Цель состоит в том, чтобы ввести нелинейность, поскольку большинство реальных данных также нелинейны, а свертка - это чисто линейная операция. Как это работает? ReLu будет проверять пиксель за пикселем на наличие отрицательных значений, если пиксель имеет отрицательное значение, он будет заменен нулем. Существуют и другие функции активации, которые могут вносить нелинейность в нейронные сети, такие как сигмоид или tanh, но ReLu в большинстве случаев превосходит по производительности.

Объединение

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

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

Полностью подключенный уровень (FCL)

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

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

Активация Softmax (SMA)

Мы почти там! Как мы видим выше, на последнем уровне мы выполняем фактическое предсказание в нашей модели. Мы представляем Softmax, который представляет собой логистическую регрессию на стероидах, он присваивает десятичные вероятности каждому классу в многоклассовой задаче, а сумма вероятностей должна быть равна 1.

Le CNN Архитектура

Мы обсудили, как работают 5 основных элементов, и создали набор инструментов сверточной нейронной сети (CNN). Теперь мы можем использовать все эти инструменты, складывая их друг на друга, мы получаем архитектуру CNN. Как и следовало ожидать, для разных типов проблем существуют разные архитектуры. Например, вариант использования биомедицинских изображений, вероятно, будет решаться с использованием архитектуры U-Net, в то время как обнаружение объектов на изображении может выполняться ResNet.

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

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

Наконец, как показано выше, фильтры на ранней стадии обработки обнаруживают низкоуровневые функции, такие как края, кривые или точки. Чем глубже мы погружаемся в CNN, тем чаще мы сталкиваемся с высокоуровневыми функциями, такими как шины или ноги. Последний слой состоит из FCL, где эти функции используются для окончательной классификации изображений по шкале вероятности.

Конец

В этой части 3 мы представили высокоуровневое объяснение основных строительных блоков, из которых построены современные современные модели CV, и того, как строятся архитектуры путем связывания этих элементов определенным образом. Мы также показали, насколько легко можно построить классификатор изображений с использованием этих строительных блоков.

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