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

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


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


    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 классификации (входное изображение может принадлежать к нескольким классам).



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


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


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


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

    Singularis
    39.24
    Company
    Share post

    Comments 0

    Only users with full accounts can post comments. Log in, please.