Практикум по машинному обучению: классификация изображений

Представляем сверточные нейронные сети

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

Для начала CNN получает входную карту признаков: трехмерную матрицу, в которой размер первых двух измерений соответствует длине и ширине изображений в пикселях. Размер третьего измерения равен 3 (соответствует 3 каналам цветного изображения: красному, зеленому и синему). CNN состоит из стека модулей, каждый из которых выполняет три операции.

1. Свертка

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

  • Размер извлекаемых плиток (обычно 3x3 или 5x5 пикселей).
  • Глубина выходной карты объектов , которая соответствует количеству примененных фильтров.

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

Свертка 3x3 поверх карты объектов 4x4 Рисунок 3. Свертка 3x3 глубины 1, выполненная на входной карте объектов 5x5, также глубиной 1. Существует девять возможных местоположений 3x3 для извлечения фрагментов из карты объектов 5x5, поэтому эта свертка создает выходную карту объектов 3x3.

Для каждой пары фильтр-плитка CNN выполняет поэлементное умножение матрицы фильтра и матрицы плитки, а затем суммирует все элементы результирующей матрицы, чтобы получить единственное значение. Каждое из этих результирующих значений для каждой пары фильтр-плитка затем выводится в свернутой матрице признаков (см. рисунки 4a и 4b).

Карта признаков 5x5 и свертка 3x3 Рисунок 4а. Слева : карта входных признаков 5x5 (глубина 1). Справа : свертка 3x3 (глубина 1).

Рисунок 4б. Слева : свертка 3x3 выполняется на карте входных объектов 5x5. Справа : результирующий свернутый элемент. Щелкните значение на выходной карте объектов, чтобы увидеть, как оно было рассчитано.

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

2. РеЛУ

После каждой операции свертки CNN применяет преобразование Rectified Linear Unit (ReLU) к свернутому объекту, чтобы ввести нелинейность в модель. Функция ReLU \(F(x)=max(0,x)\)возвращает x для всех значений x > 0 и возвращает 0 для всех значений x ≤ 0.

3. Объединение

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

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

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

Анимация максимального объединения на карте объектов 4x4 с фильтром 2x2 и шагом 2

Рисунок 5. Слева : максимальное объединение, выполненное на карте объектов 4x4 с фильтром 2x2 и шагом 2. Справа : результат операции максимального объединения. Обратите внимание, что результирующая карта объектов теперь имеет размер 2x2, сохраняя только максимальные значения для каждой плитки.

Полностью связанные слои

В конце сверточной нейронной сети находится один или несколько полностью связанных слоев (когда два слоя «полностью связаны», каждый узел в первом слое связан с каждым узлом во втором слое). Их работа заключается в выполнении классификации на основе признаков, извлеченных свертками. Как правило, последний полносвязный слой содержит функцию активации softmax, которая выводит значение вероятности от 0 до 1 для каждой метки классификации, которую модель пытается предсказать.

На рис. 6 показана сквозная структура сверточной нейронной сети.

Сквозная схема сверточной нейронной сети, показывающая входные данные, два модуля свертки и два полносвязных слоя для классификации

Рисунок 6. Показанная здесь CNN содержит два модуля свертки (свертка + ReLU + объединение) для извлечения признаков и два полносвязных слоя для классификации. Другие CNN могут содержать большее или меньшее количество сверточных модулей и большее или меньшее количество полносвязных слоев. Инженеры часто экспериментируют, чтобы определить конфигурацию, которая дает наилучшие результаты для их модели.