Глубокое обучение для определения стиля и жанра картин

Привет, Хабр!

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

  1. поиск картины в базе данных по фотографии, сделанной мобильным телефоном;
  2. определение стиля и жанра картины, которой нет в базе данных.

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

Поможем Даше разобраться в современном искусстве?

Определение стиля картин

Из почти 250 000 картин в базе БД Артхив менее 20% присвоен жанр, стиль или техника, зачастую классы, выставленные в базе данных, не соответствуют истинным значениям, много классов, содержащих слишком мало изображений. Кажется, есть даже классы, содержащие единицы изображений. Видимо, некоторые авторы считают необходимым создание названия для своего собственного стиля.
В общей сложности в базе было выделено около 75 стилей, однако для нашей работы заказчиком были выбраны 27 обязательных стилей (к которым впоследствии был добавлен еще один), которые система обязательно должна распознавать.
По ним распределение наполнения оказалось весьма неравномерным.

Стиль кол-во Стиль кол-во
Реализм 19594 Примитивизм 1234
Импрессионизм 15864 Ар-деко 1092
Романтизм 8963 Северное Возрождение 921
Барокко 7726 Кубизм 902
Модерн 4882 Академизм 707
Сюрреализм 4793 Готика 608
Возрождение 4709 Модернизм 539
Экспрессионизм 4329 Соцреализм 481
Символизм 4321 Поп-арт 475
Постимпрессионизм 3951 Пуантилизм 275
Абстракционизм 3664 Фовизм 217
Укие-э 3136 Авангард 174
Классицизм 1730 Гиперреализм 13
Рококо 1600 Фентези 8
Итого 96908
Все стили

Стиль кол-во Стиль кол-во Стиль кол-во
Реализм 19594 Поп-арт 475 Декоративизм 66
Импрессионизм 15864 Бидермейер 471 Минимализм 66
Романтизм 8963 Фантастический реализм 386 Сентиментализм 66
Барокко 7726 Абстрактный экспрессионизм 358 Клуазонизм 60
Модерн 4882 Наби 339 Метафизическая живопись 56
Сюрреализм 4793 Пуантилизм 275 Маккьяйоли 52
Возрождение 4709 Супрематизм 273 Орфизм 51
Экспрессионизм 4329 Прерафаэлиты 252 Дадаизм 50
Символизм 4321 Магический реализм 248 Неоимпрессионизм 49
Постимпрессионизм 3951 Раннее Возрождение 232 Люминизм 41
Абстракционизм 3664 Неоэкспрессионизм 230 Проторенессанс 39
Золотой век Голландии 3292 Фовизм 217 Плентанизм 37
Укие-э 3136 Постмодернизм 192 Тенебризм 35
Классицизм 1730 Авангард 174 Абстрактный импрессионизм 34
Рококо 1600 Современное искусство 149 Концептуализм 29
Примитивизм 1234 Прецизионизм 138 Японизм 24
Ар-деко 1092 Кубофутуризм 108 Постмодерн 24
Северное Возрождение 921 Конструктивизм 104 Лучизм 24
Кубизм 902 Тонализм 103 Византийский 20
Академизм 707 Орфизм 94 Романтический реализм 19
Готика 608 Риджионализм 93 Гиперреализм 13
Неоклассицизм 601 Аналитический реализм 89 Веризм 11
Маньеризм 544 Натурализм 73 Неопримитивизм 10
Модернизм 539 Неомодернизм 70 Фентези 8
Соцреализм 481 Футуризм 67 Метареализм 7
Итого 106284

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

Transfer learning

Рассмотрим сеть inception v3.

Общая архитектура с промежуточными выходами

В ее архитектуре (да и в любой другой глубокой сети) можно условно выделить две основные составляющие – Feature Extractor и Predictor.
Feature Extractor отображает входное цветное изображения в многомерное пространство признаков (многоканальную карту признаков). Карта признаков сохраняет пространственную информацию – то есть это трехмерный тензор с размерами по ширине, высоте и количеству каналов признаков, здесь еще не применен окончательный пулинг, который полностью устранит информацию о взаимном расположении признаков на исходном изображении. Feature Extractor сети Inception v3 получает на вход изображение размером 299

$\times$

299

$\times$

3, а на выходе формирует карту признаков размером 17

$\times$

17

$\times$

2048. Размер входа можно варьировать, что приведет к изменениям размеров карты признаков и может быть полезно для уменьшения вычислительных затрат при работе с сетью.
Predictor — это сеть, формирующая выходные данные на основе карты признаков, сформированной Feature Extractor-ом. Как правило, для задачи классификации Predictor представляет собой полносвязанный слой нейронов, количество выходов которого совпадает с количеством классов задачи.
Классический transfer learning предполагает, что мы берем обученную сеть, отделяем от нее Feature Extractor и дополняем его новым предиктором с нужным нам числом классов. Полученная сеть обучается с небольшой скоростью с частично или полностью замороженными весами слоев Feature Extractor-а.

Применим transfer learning для классификации стилей. Возьмем сеть Inception-v3 обученную на наборе данных imagenet и заменим в ней выходной слой нейронов, классифицирующий входные изображения в число выбранных стилей. Полученную сеть мы обучали на изображениях разных стилей, заморозив обучение всех слоев, кроме последнего.

Для анализа данных мы отображали распределение валидационного набора по классам.

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

Кроме того попробуем отобразить распределение по стилям на двухмерное пространство с помощью TSNE.

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

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

В стиле соцреализма присутствовали абстрактные изображения, например, произведения Лисицкого. По всей видимости, они попали туда благодаря работе Лисицкого над советским плакатом, который к соцреализму имеет весьма косвенное отношение.

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

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

Дело в том, что эта сеть была обучена классифицировать объекты, определять, что именно изображено, при этом отбрасывая несущественную для задачи информацию о том, как оно изображено. Например, с точки зрения сети на всех изображениях в начале статьи, в общем-то, изображен человек.

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

Общая архитектура с промежуточными выходами

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



Реализм, Импрессионизм
Камиль Каро, Агарь и ангел
Барокко
Рембрандт Харменс ван Рейн, Агарь и ангел

С другой стороны, красиво повисли отдельным облаком картины в стиле Укие-э — разновидность гравюры, получившая распространение в японии с XVII века. Хоть первоначально их и не было в нашем обязательном списке, мы их туда добавили.

Рисовые поля Асакуса и фестиваль Ториномачи

После работы с данными удалось добиться лучшего распределения по классам.

Разбираемся с жанрами

Из общего числа жанров были выбраны 13 (выделены жирным)

Жанр кол-во
Аллегорическая сцена 2500
Портрет 2308
Пейзаж 2213
Фэнтези 2191
Литературная сцена 2096
Городской пейзаж 2048
Ню 1981
Натюрморт 1932
Жанровая сцена 1736
Анимализм 1587
Религиозная сцена 1417
Мифологическая сцена 1368
Марина 1210
Архитектура 958
Интерьер 635
Историческая сцена 534
Батальная сцена 201
Цакли 180
Ведута 124
Урбанистический пейзаж 16
Итого 27235

В основном сокращение числа жанров достигнуто сокращением жанров различных сцен — «религиозная»,»мифологическая», «аллегорическая», «литературная» и объединением их под общим названием «жанровая сцена». Мы пришли к выводу, что разделение этих жанров вряд ли может быть выполнено с достаточной точностью без значительного культурологического анализа.
Например, для аллегорической сцены по определению предполагается наличие скрытого смысла в изображении, использование переносного значения у изображаемых предметов. Есть своя сложность и с «религиозной сценой»: весьма вероятно, что сеть, обученная выдавать такой класс, будет называть им в том числе и карикатурные изображения (например, пародирующие «Тайную вечерю» да Винчи), а это может кого-то и оскорбить.

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

Жанры, результат 1

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

Иерархия жанров

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

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

Для того чтобы перенести иерархию жанров на сеть, мы отказались от one-hot представления и выставили единицу для изображений не только в одном жанре, но и в его родителе, если таковой имеется, а так же заменили целевую функцию процесса обучения и функцию активации выходного слоя. Таким образом задача стала Multilabel классификации (входное изображение может принадлежать к нескольким классам).

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

Вместо заключения

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

К сожалению, классификация стилей и техник не была доведена до конца — поддержка в сервисе не реализована.

FavoriteLoadingДобавить в избранное
Posted in Без рубрики

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *