полный код, набор данных и окончательная модель представлены на github.

Введение

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

Предварительная обработка данных

Набор данных был предоставлен в виде изображений PNG. Изображения были преобразованы в оттенки серого, а затем нормализованы до значений от 0 до 1. Набор данных состоял из 1000 изображений, из которых 800 изображений использовались для обучения, а 200 изображений использовались для проверки.

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

Архитектура модели

Модель CNN состояла из трех сверточных слоев с функциями активации ReLU, за которыми следовали слои максимального пула. Сверточные слои отвечали за извлечение особенностей из изображений. Затем выходные данные сверточных слоев сглаживались и пропускались через два плотных слоя с функциями активации ReLU. Последний слой представлял собой плотный слой с функцией активации softmax, которая определяла вероятности классификации для пяти классов диаграмм.

Обучение моделей

Модель была скомпилирована с использованием оптимизатора Адама и разреженной категориальной функции перекрестных энтропийных потерь. Модель обучалась в течение 100 эпох с размером пакета 500. Обратный вызов досрочной остановки использовался для остановки обучения, если потери при проверке не улучшались после 10 последовательных эпох.

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

Оценка модели

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

Прогноз

Обученная модель использовалась для прогнозирования типов диаграмм в тестовом наборе, состоящем из 50 изображений. Изображения были загружены с использованием библиотеки PIL, а прогноз был сделан с использованием метода прогнозирования API Keras. Затем метка прогнозируемого класса была сопоставлена ​​с соответствующим типом диаграммы с помощью переменной type_list.

Заключение

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