Вдохновение

Перед тем, как погрузиться в третий проект Metis Bootcamp, я хочу поделиться некоторыми впечатлениями по этому поводу.

«Искусство - это не то, что вы видите, а то, что вы заставляете видеть других». ~ Эдгар Дега

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

Хорошо, поехали. Я приобрел 3060 изображений в четырех жанрах - 1200 картин импрессионизма, 600 картин символизма, 580 картин барокко и 680 картин северного возрождения - из Лучших произведений искусства всех времен Икаро на Kaggle (ссылка: https: // www. .kaggle.com / ikarus777 / best-artworks-of-all-time) . В качестве тестовых данных я разделил 200 изображений импрессионизма и по 100 картин каждого из трех других жанров.

Размер обучения для классификации изображений считается микроуровнем; тем не менее, давайте посмотрим, как это окажется.

Предварительная обработка изображений

Чтобы обучиться традиционным моделям классификации, таким как SVM и Random Forest, мне нужно предварительно обработать изображения для извлечения функций, которые помогут этим моделям. С другой стороны, сверточная нейронная сеть требует меньше предварительной обработки.

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

Что касается CNN, здесь все гораздо проще, так как нейронная сеть возьмет на себя всю тяжелую работу. Я использую генератор данных изображения в Keras, который может вращать, разрезать, масштабировать и выполнять другие операции для создания большего количества обучающих данных.

Сравнение моделей

На этом этапе моя цель - сравнить различные модели с их лучшими параметрами на основе оценки f1 на тестовых данных. Оценка F1 - это мера точности теста, основанная на гармоническом среднем значении точности и запоминания. Для получения более подробной информации посетите страницу Википедии: https://en.wikipedia.org/wiki/F1_score.

Благодаря GridsearchCV в scikit-learn я могу найти лучшие параметры для каждой традиционной модели классификации с помощью всего пяти строк кода для каждой модели.

Получив результат традиционных моделей классификации, я провожу пробный запуск модели CNN с нуля для двух жанров. Модель дает приличный результат теста f1 0,85 только для 400 обучающих и проверочных изображений в каждом классе. Учитывая, что мои данные для обучения довольно малы, я прибегаю к переносу обучения с использованием модели InceptionResNetV2 на imagenet. InceptionResNetV2 - относительно большая модель с 779 базовыми уровнями. Начальное обучение базовой модели дает ок. Оценка 0,66 f1 с небольшой проблемой переобучения. Когда я настраиваю модель, замораживая различное количество базовых слоев, модель достигает прибл. 0,83 балла f1 на проверочном наборе, но демонстрирует тенденцию к переобучению. После тонкой настройки модели я получил оценку 0,82 f1 на тестовом наборе.

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

В целом модель CNN превосходит все традиционные модели классификации.

Веб-демонстрация

Используя flask, мне удалось создать сайт, на котором вы можете загружать произведения искусства. Веб-сайт использует наиболее эффективную модель CNN для классификации произведений искусства по этим четырем жанрам. Он также рекомендует пользователям изучить другие произведения искусства в том же стиле. Ниже видео-демонстрация.

Заключение

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