Машинное обучение для классификации изображений игральных карт по масти и номеру

В этой статье я обучаю модель с помощью TensorFlow определять масть и количество игральных карт по их изображению. Я создаю набор данных, фотографируя каждую карту, затем выполняю предварительную обработку и увеличение данных с помощью функций поворота, масштабирования, увеличения яркости и сдвига. Окончательный набор данных состоит из 39000 изображений в оттенках серого размером 180x180. Затем я обучаю сверточную нейронную сеть для классификации изображений карточек.

Набор данных

Чтобы создать предварительный набор данных, я просто делаю по одному снимку каждой карты в колоде из 52 карт, например:

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

Код

Приступим к просмотру кода (полный код проекта см. В моем github: https://github.com/awrd2019/Playing-Cards-Computer-Vision).

Сначала я импортирую все соответствующие библиотеки.

Ниже я смотрю на один образец изображения из набора данных.

В следующей ячейке я экспериментирую с различными функциями увеличения данных, встроенными в TensorFlow. Не стесняйтесь изменять значения и / или добавлять дополнительные функции увеличения. Дополнительные сведения см. На странице API TensorFlow.Keras ImageDataGenerator (https://www.tensorflow.org/api_docs/python/tf/keras/preprocessing/image/ImageDataGenerator).

Теперь, когда я достаточно поэкспериментировал с ImageDataGenerator и решил использовать комбинацию функций преобразования для увеличения набора данных, я создаю новый набор данных из 39000 изображений. Для каждой из 52 карточек я создаю 750 преобразованных изображений этой карточки, чтобы добавить их в новый набор данных. Наконец, я перетасовываю новый набор данных перед его сохранением.

Затем я загружаю набор данных и разбиваю его на набор для поезда и тестирования.

Сейчас я строю и обучаю сверточную модель. Под ячейкой находится сводка модели.

Во время обучения точность обучения и проверки достигла 99,9%. Давайте подробнее рассмотрим потери и точность во время тренировочного процесса с помощью следующих графиков.

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

Заключение

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

Большое спасибо за чтение! Надеюсь, вам понравилась статья, и буду приветствовать любые комментарии и предложения.