Применение алгоритмов ансамблевого обучения к набору данных изображения, которые являются функциями, извлеченными сверточными слоями с реализацией Python

Table of Contents
1. Introduction
2. Layers
2.1. Convolutional Layer
2.2. Pooling Layer
2.3. Dropout Layer
2.4. Flatten Layer
3. Tutorial
3.1. Dense Layer Approach
3.2. Ensemble Learning Approach
4. Results
5. Discussion

1. Введение

Он в основном преобразуется в (n_samples, n_features), и алгоритм применяется после того, как необходимые процессы предварительной обработки данных применяются к набору данных в приложениях традиционного машинного обучения. Во избежание таких ситуаций, как переоснащение или недообучение, количество выборок должно быть большим. Чтобы предотвратить такие ситуации, либо увеличение изображения для набора данных изображения расширяется различными методами, либо применяются такие методы, как извлечение признаков, выбор признаков или уменьшение размерности.

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

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

2. Слои

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

2.1. Сверточный слой

Сверточные слои являются основными строительными блоками сверточных нейронных сетей (CNN). Они принимают значения пикселей в качестве входных данных и выполняют извлечение признаков. Он состоит из фильтров и ядер. Обучение происходит путем взятия подмножества из набора данных, затем его фильтрации и обработки. Эти процессы выполняются с линейным умножением, и характерные особенности, такие как обнаружение краев, извлекаются из изображения. Применение градиентного фильтра, представленного библиотекой cv2 с разными ядрами, показано на рисунке 1.

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

Вход = [5 10 15 20 25 30].

Фильтр = [0 1 0]

Выход рассчитывается следующим образом:

[5 10 15]  . [0 1 0] = 10
[10 15 20] . [0 1 0] = 15
[15 20 25] . [0 1 0] = 20
[20 25 30] . [0 1 0] = 25

Отфильтрованная матрица, то есть на выходе [10 15 20 25]. Этот процесс также можно разделить на двухмерный сверточный слой.

2.2. Уровень объединения

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

2.3. Слой исключения

Проще говоря, он удаляет некоторые из функций, полученных, как показано на рисунке 3, то есть вызывает потерю информации. Если мы обрабатываем RGB-изображение 128x128x3 и считаем, что пиксели являются функциями для наборов данных изображений, у нас будет количество функций примерно 50000. От некоторых из этих функций можно отказаться, применив Dropout. Таким образом также предотвращается переоснащение.

2.4. Свести слой

Слой выравнивания используется в последнем слое первой части модели CNN, которая преобразует форму матрицы из 3x3 в 9x1, как показано на рисунке 4, чтобы подготовить набор данных для классификации по полностью связанным слоям.

3. Учебник

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

Доступ к набору данных можно получить по ссылке.

3.1. Плотный послойный подход

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

  • [1] - Увеличение, изменение размера и масштабирование изображения

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

  • [2] - Модель

Модель CNN состоит из двух основных компонентов. Функции извлекаются с помощью‘model’, который строится последовательно как первый компонент. Поскольку пиксели являются элементами для наборов данных изображений, а форма изображений - 128x128x3, общее количество функций составляет 49152. Форма ввода определяется в первом сверточном слое. В следующих сверточных слоях применяются L1 & L2 regularizations для предотвращения переобучения. Роль регуляризации L1 и L2 состоит в том, чтобы отрегулировать важность весов, чтобы можно было предположить, что параметры регуляризации сверточных слоев являются скоростью обучения слоев. Кроме того, Dropout применяется в различных скорости для предотвращения переобучения, и, наконец, форма модели преобразуется в (n_samples, n_features) с использованием Flatten layer. Краткое изложение модели показано на рисунке 5.

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

Во второй части модели, после того как признаки извлечены, применяются плотные слои для выполнения процесса классификации. Наконец, «cnn_model» создается путем комбинирования ввода (часть, которая является извлеченными функциями) и вывода (часть, которая представляет собой выполненную классификацию).

  • [3] - Оценка модели

Матрица неточностей и отчет о классификации тестового набора данных готовятся для оценки модели.

  • [4] - Эффективность обобщения модели

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

3.2. Подход к ансамблевому обучению

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

  • [1] - Набор поездов, набор тестов и внешний набор тестов предсказываются первой частью ‘model’ модели CNN, и создается производный набор данных.
  • [2] - Функция, содержащая результаты матрицы ошибок, создается для применения всех алгоритмов.
  • [3] - Алгоритмы XGBoost, LGBM, Histogram-Based GB, ExtraTree, AdaBoost, Bagging используются для классификации в их базовых версиях.

4. Результаты

Матрицы неточностей подхода плотного слоя показаны на рисунке 6.

Как видно, 91% успеха достигается в наборе тестовых данных, в то время как точность 13/15 достигается во внешнем наборе тестовых данных, который был случайно сгенерирован из другого источника для производительности обобщения модели.

Результаты подхода к ансамблевому обучению представлены в виде таблицы, показанной на рисунке 7.

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

5. Обсуждение

Поскольку это исследование в основном посвящено разработке модели CNN, оно не фокусируется на методах ансамблевого обучения. Однако видно, что, хотя гиперпараметр не настраивается, некоторые из этих методов, например XGBoost, дают удовлетворительные результаты.

Важно понимать, как это работает, чтобы продвигать приложения сверточной нейронной сети. В этой статье нацелены различные альтернативы и гибкость. Можно улучшить результаты точности, полученные в алгоритмах обучения ансамбля, например, выявить лучшую комбинацию гиперпараметров с помощью GridSearch или расширить набор данных. Влияние модели CNN в Deep Learning на набор данных изображения, бесспорно, хорошее, но этот метод можно даже оценить для различных целей, если изучить его в качестве альтернативы.

Вернуться к руководству нажмите здесь.