Автоматизированное формирование обучающей выборки для определения идентичных объектов на изображениях
Асланов А.Б., МГТУ им. Н.Э. Баумана [email protected] Лукашевич Н.В., МГУ им. М.В. Ломоносова, МГТУ им. Н.Э. Баумана
Аннотация
В данной статье рассматривается задача поиска идентичных животных на изображениях, что может быть полезно, например, при поиске питомца в сети Интернет в случае его пропажи. В настоящей работе при помощи глубоких нейронных сетей решается подзадача создания обучающей выборки с изображениями идентичных животных.
1 Введение
В настоящее время методы классифика-ции и распознавания изображений исполь-зуются повсеместно ([6], [7]). Всё чаще именно визуальное содержание, а не тек-стовое описание -становится более прио-ритетным для пользователя, а значит, акту-альным становится вопрос и о поиске не-обходимой информации по изображению. Наряду с поиском объекта на изображении ставится вопрос, идентичен ли рассматри-ваемый объект на паре изображений. В данной статье этот вопрос рассматривается в контексте поиска по изображениям домашних животных. Например, чтобы в случае потери питомца пользователь мог загрузить фотографию животного в систе-му, а она в ответ выдала наиболее похожие агрегированные с социальных сетей фото-графии найденных животных в искомом радиусе за последнее время.
Для поиска по изображениям зачастую применяются статистические методы: к примеру, на настоящий момент наиболее хорошие результаты показывают глубокие нейронные сети, однако для работы они требуют большую обучающую выборку. В данной статье рассматривается задача со-здания такой выборки, представляющей собой подмножества, как минимум, двух изображений каждого уникального живот-ного.
Для создания обучающей выборки ис-поль-зуется следующий алгоритм: сначала необходимо найти аккаунты пользователей социальных сетей, в которых, среди про-чих, присутствуют фотографии одних и тех же животных, выгрузить все изображения с этих аккаунтов, а затем отфильтровать лишние изображения, то есть удалить те, где искомые животные на фотографии от-сутствуют, применив тем самым алгоритм бинарной классификации.
Для задач классификации сейчас часто пользуются предобученными моделями нейронных сетей, то есть такими, весовые коэффициенты которых априорно известны ([8], [9]). Это позволяет не тратить время и вычислительные ресурсы на обучение, так как выборка для создания предобученных моделей, как правило, представляет собой сотни тысяч изображений, а потому не приходится сомневаться в сходимости мо-дели. К примеру, набор данных (датасет) ImageNet1, который использовался для обучения представленных в статье моде-лей, содержит 1281167 изображений, раз-деленных на 21841 категорию. При помо-щи обучения по предобученным на подоб-ных датасетах весовым коэффициентам можно с достаточной точностью ответить на вопрос, есть ли требуемое животное на изображении, и принять верное решение о необходимости последующей фильтрации данного изображения.
2 Постановка задачи
Требуется найти множество изображений Т, среди которых необходимо извлечь пары (либо тройки, четверки, ...) изображений с идентичным на них требуемым объектом (в рамках данной задачи - одним и тем же животным). На выходе ожидаем выборку Т', в которой будут содержаться лишь изображения идентичных животных для каждой пары
1 http ://www. image-net. org/
(тройки, четверки, ...) изображений. Метрикой качества верной классификации множества изображений будем считать f-меру.
Будем полагать, что животное находится на изображении, если оно занимает любую позу, в которой ее может распознать человек (эксперт). Также будем считать, что нейронная сеть распознала животное, если вероятность категории вошла в пятерку наибольших.
3 Обзор подходов к распознаванию изображений
Один из наиболее эффективных способов обнаружения и распознавания изображений сегодня - искусственные нейронные сети, в частности сверточные нейронные сети (convolutional neural networks (CNN)), суть которых заключается в извлечении в качестве признаков локальных либо глобальных шаблонов, которыми характеризуется объект (рис. 1).
Рис. 1. Формирование признаков в нейронной сети посредством извлечения шаблонов
Такие шаблоны возможно извлечь при помощи операции свертки - вычислении новых значений пикселей (матрицы) изображения посредством применения к исходной картинке фильтра, меняющего определенным образом значения исходной матрицы, с применением метода скользящего окна.
Еще одна особенность CNN - в наличии операции субдискретизации, необходимой для уменьшения размерности карт признаков взятием - чаще всего, но не всегда - максимального значения среди некоторого конечного задаваемого количества нейронов (max pooling).
Общая архитектура сверточной нейронной сети представляет собой последовательность сверточных и субдискретизирующих слоев; на
выходе находятся один или несколько полносвязных слоев, вырождающих карту признаков в вектор весов, по аналогии с традиционной нейронной сетью.
На момент написания статьи разобраны и сравниваются между собой результаты для следующих архитектур сверточных нейронных сетей:
• ResNet50;
• VGG16;
• VGG19;
• Inception;
• Xception.
На вход нейронная сеть для каждой из архитектур принимает изображение фиксированной размерности, на выходе - в зависимости от вероятностей для результатов классификации - выдает бинарный ответ - либо объект есть на изображении (в таком случае файл переименовывается по маске
<имя_файла>_1), либо объекта нет (соответствующее переименование на <имя_файла>_0).
Рассмотрим архитектуры вышеперечисленных нейронных сетей подробнее.
VGGNet. В VGGNet (Symonyan, Zisserman, 2014, [1]) объединили 16-19 сверточных слоев в последовательности сверток размерностями 3x3. Шаг прохождения матрицей свертки (stride) равен 1, дополнение нулями (padding) также равно 1. В этой архитектуре используются фильтры малой размерности, поскольку они, как было доказано, имеют те же рецептивные поля, что и матрицы фильтров 5x5 или 7x7. В архитектуре VGG16 в сумме 16 сверточных и полносвязных слоев, в VGG19 - соответственно 19 слоев. Эти две архитектуры очень схожи, разница лишь в дополнительных трех сверточных слоях у VGG19. Также в них отказались от использования слоя с локальной нормализацией (local response normalization layer), так как при разработке было выяснено, что он не оказывает значительного влияния на результаты. На практике VGG19 показывает результаты чуть лучше, чем VGG16, однако вследствие меньших вычислительных затрат последний используется на практике немного чаще.
ResNet. В ResNet (He et al., 2015, [10]) используется идея остаточных соединений (residual connections). Вследствие того что глубокие нейронные сети тяжелее оптимизировать, нежели более мелкие - падает точность распознавания. Было показано, что уменьша-
ется точность и на обучающей, и на проверочной (валидационной) выборках объектов, поэтому предполагается, что проблема не в переобучении.
Авторы метода предлагают зафиксировать наиболее высокую точность распознавания на текущем сверточном слое и ввести далее пропускающие соединения (shortcut connections), которые позволят нетронутым слоям выродиться в тождественное преобразование и никак не повлиять на дальнейшее изменение качества (рис. 2).
Рис. 2. Пример пропускающего соединения в ResNet
Часто данную архитектуру рассматривают в виде ансамбля остаточных слоев.
Inception v1. Авторами Inception (Szegedy et al., 2015, [2]) предполагалось, что после прохождения каждого из слоев сеть «выбирает», какого размера будет свертка у следующего слоя. Размер свертки при этом влияет на генерируемую карту признаков: к примеру, фильтры 5x5 или 7x7 извлекают глобальные признаки, а фильтры меньших размерностей - более локальные; фильтр 1x1 вычисляет корреляцию между каналами изображения; субдискретизация понижает размерность изображения без значительных потерь информации. В качестве компромисса в выборе авторы использовали все вышеизложенные варианты параллельно, а потом объединили результаты в один. Помимо этого, в архитектуру добавили сверточный блок 1x1 (Inception, рис. 3) для сокращения количества свойств и повышения скорости получения результатов распознавания перед подачей в последующие слои.
В данной сети также используется слой average pooling (рис. 4) - это вариация max pooling с отличием в том, что вместо максимального значения захвата фильтра используется среднее арифметическое.
Рис. 3. Модуль Inception
Рис. 4. Пример слоя average pooling
Inception v2/v3. Во второй и третьей версиях архитектур авторы (Szegedy et al., 2015, [3], [4]) перенимают идею о сокращении размерности матрицы фильтра до 3x3 и соответствующем пропорциональном увеличении количества слоев по аналогии с методом VGG, а позже - раскладывают фильтры NxN парой фильтров 1xN и Nx1. Помимо этого, была введена пакетная нормализация (batch normalization), с помощью которой удается улучшить производительность и выдаваемые результаты посредством предварительной обработки данных перед подачей в слой сети. Предобработка заключается в нормализации данных до распределения с центром в нуле и единичной дисперсией, что сокращает количество вычислений, так как для последующих слоев в таком случае нет необходимости хранить в памяти смещения входных данных (covariance shift).
В архитектуре стал применяться оптимизатор RMSprop (Root Mean Square propagation), способный обновлять параметры сети с оглядкой на то, насколько частотный фиксируется признак. Это достигается за счет уменьшения наиболее частотных элементов усредненным по истории квадратом градиента.
Xception (Francois Chollet, 2016, [5]). Полное название архитектуры - extreme inception - ее идея в полном разделении канальных и пространственных признаков и замене модулей Inception отдельными свертками по глубине (depthwise separable convolution). В результате на выходе - гораздо меньшее количество весов, нежели у традиционного сверточ-ного слоя, практически без потерь качества
распознавания (при сравнении результатов, например, с ResNet50).
4 Cбор данных
Для сбора данных используется парсинг, то есть автоматический метод сбора информации. Более конкретно, применяется извлечение фотографий по следующей схеме:
1. Нахождение аккаунтов в Instagram, агрегирующих изображения искомого животного (например, кота), где на каждый пост приведено текстовое описание с ссылкой на профиль пользователя, выложившего в Instagram данное изображение. Профиль пользователя, указанный в этом посте, ожидаемо будет содержать искомые фотографии идентичных животных. (рис. 5) Из него сохраняются первые 100 изображений.
Рис. 5. Каждый пост аккаунта-агрегатора содержит ссылку на профиль пользователя с искомыми идентичными изображениями.
Подобным методом при помощи аккаунта-агрегатора в рамках данной задачи было извлечено 6573 аккаунта и 506174 фотографии из них.
2. Всем извлеченным изображениям каждого из найденных аккаунтов присваиваются метки при помощи предобученных глубоких нейронных сетей (0 - если животное отсутствует на изображении и 1, если присутствует). В дальнейшем неподходящие изображения фильтруются.
5 Применение моделей и тестирование данных
Для отображения множества T ^ T' требуется отфильтровать не содержащие объект изображения (в данном конкретном случае -изображения, не содержащие искомого объекта (животного)). Выбор архитектуры нейронной сети складывается посредством ре-
зультатов фильтрации различными вариантами на подвыборке изображений, для которой возможно вручную человеком (экспертом) разметить наличие объекта (животного). В качестве такой подвыборки были выбраны:
• 1000 случайных изображений из различных аккаунтов Instagram;
• 118 отобранных изображений, представляющих собой особо сложные случаи, на которых животное имеет место быть, но при этом не имеет четких очертаний, либо возникает неоднозначность его присутствия (рис. 6).
Рис. 6. Пример сложного изображения
Такие изображения могут содержать:
• маскировку;
• сложный ракурс;
• слияние с фоном;
• размытие (нечеткость);
• съемку крупных планом;
• наличие на изображении нескольких искомых объектов (животных);
• наличие графических эффектов
и так далее.
На рис. 7 показан пример классификации котов. Верным считалось отнесение изображения к одному из следующих классов (по классификации ImageNet):
• Tabby, Tabby cat;
• Persian cat;
• Siamese cat, Siamese;
• Egyptian cat.
ResNet = 1 Inception =1 Xception = 1 VGG16 = 0 VGG19 = 1
Рис. 7. Пример классификации изображения при использовании различных архитектур сверточных нейронных сетей
Табл. 1 и табл. 2 содержат оценки качества бинарной классификации (либо изображение отнесено к предлагаемому классу, либо нет). По полученным результатам можно сделать вывод, что фильтрацию изображений следует проводить, ориентируясь на глубокую нейронную сеть с архитектурой ХсерЬоп.
Табл. 1. Оценка качества архитектур глубоких нейронных сетей при фильтрации случай-
По результатам фильтрации с использованием ХсерЬоп (программно была задействована библиотека Keras2) было удалено 430829 изображений из 506174, что составляет 85,114% от исходного количества в выборке.
Тем не менее, в число отфильтрованных попали по ошибке и явно полезные для выборки изображения (рис. 8).
Рис. 8. Пример некорректной фильтрации при
поиске котов с применением архитектуры ХсерЬоп (изображение было отфильтровано)
Название архитектуры Точность Полнота у-мера
VGG16 VGG19 ResNet50 1псерЬоп v3 Xception 1 0,571 0,726 0,956 0,578 0,720 1 0,532 0,694 1 0,776 0,873 1 0,840 0,913
Табл. 2. Оценка качества архитектур глубоких нейронных сетей при фильтрации сложных изображений (118 штук)
Название архитектуры Точность Полнота у-мера
VGG16 VGG19 ResNet50 1псерЬоп v3 Xception 1 0,398 0,569 1 0,432 0,603 1 0,449 0,619 1 0,533 0,695 1 0,567 0,723
К примерам же удачной фильтрации можно отнести изображения с животными не искомого класса - например, птицами при поиске собак (рис. 9), а также фильтрацию изображений с имитацией искомого животного (рис. 10).
Рис. 9. Пример корректной фильтрации при поиске собак с применением архитектуры ХсерЬоп (изображение было отфильтровано)
Рис. 10. Пример корректной фильтрации при
поиске собак с применением архитектуры ХсерЬоп (изображение было отфильтровано)
Следует отметить, что некоторые пользователи к моменту парсинга удалили фотографии искомого животного со своих аккаунтов либо заблокировали доступ к просмотру своих профилей Instagram. Суммарно количество владельцев таких аккаунтов составляет 20,281%.
По результатам фильтрации получено 2550 непустых аккаунтов Instagram со средним количеством изображений в них равным 43.
2 https://keras.io
6 Заключение
В данной статье были проанализированы современные архитектуры сверточных нейронных сетей и проведен сбор выборки идентичных объектов (животных) на изображениях посредством применения парсинга. Для достаточно корректной фильтрации лишних изображений и получения выборки с идентичными животными были сравнены между собой несколько архитектур сверточных нейронных сетей. В результате наилучшей для решения данной задачи среди предложенных оказалась архитектура Xception, которая и была применена для фильтрации. Она показала лучшие результаты не только при бинарной классификации, но и в сложных случаях, то есть при классификации изображений, традиционно считающихся сложными для распознавания компьютером. В результате было получено 2550 аккаунтов с искомыми животными со средним количеством изображений в них равным 43.
Следующим этапом предполагается внедрение алгоритма вычисления схожести подаваемого на вход случайного и содержащегося в выборке изображений.
Список литературы
[1] Karen Simonyan, Andrew Zisserman. 2014. Very deep convolutional networks. Theory of Parsing, Translation and Compiling, volume 1. Prentice-Hall, Englewood Cliffs, NJ.
[2] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Du-mitru Erhan, Vincent Vanhoucke, Andrew Rabino-vich 2015. Going deeper with convolutions. The
IEEE Conference on Computer Vision and Pattern Recognition, pp. 1-9.
[3] Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jon Shlens, Zbigniew Wojna. 2016. Rethinking the Inception Architecture for Computer Vision.
The IEEE Conference on Computer Vision and Pattern Recognition, pp. 2818-2826.
[4] Sergey Ioffe, Christian Szegedy. 2015. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In Proceedings of The 32nd International Conference on Machine Learning, pp 448-456.
[5] Chollet, F. and others: Keras. https://github.com/fchollet/keras
[6] M.M. Postnikov, B.V. Dobrov. 2017. News Stories Representation Using Event Photos. XIX International Conference on Data Analytics and Management in Data Intensive Domains, pp 359-366.
[7] Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton. 2012. Classification with Deep Convolutional Neural Networks. Advances in Neural Information Processing Systems, pp 1097-1105.
[8] Boris Knyazev, Roman Shvetsov, Natalia Efremova, Artem Kuharenko. 2017. Convolutional neural networks pretrained on large face recognition datasets for emotion classification from video. URL: arXiv:1606.00540.
[9] Pankaj Malhotra, Vishnu TV, Lovekesh Vig, Jian Sun. 2017. TimeNet: pretrained deep recurrent neural network for time series classification. European Symposium on Artificial Neural Networks, Computational Intelligence. pp 607-612.
[10] Kaiming He, Xiangyu Zhang, Shaoqing Ren, Vig, Puneet Agarwal, Gautam Shroff. 2015. Deep Reidual Learning for Image Recognition. URL: arXiv:1512.03385.