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

Знакомство со сверточными нейронными сетями

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

Для начала CNN получает входную карту объектов: трехмерную матрицу, где размер первых двух измерений соответствует длине и ширине изображения в пикселях. Размер третьего измерения равен 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 применяет преобразование выпрямленной линейной единицы (ReLU) к свернутому элементу, чтобы внести нелинейность в модель. Функция ReLU, \(F(x)=max(0,x)\), возвращает x для всех значений x > 0 и возвращает 0 для всех значений x ≤ 0.

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

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

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

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

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

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

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

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

Рисунок 6 иллюстрирует сквозную структуру сверточной нейронной сети.

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

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