Введение 3
Постановка задачи 7
Глава 1. Обзор литературы 8
1.1. Поиск объектов на изображении 8
1.2. Предложение окон-кандидатов 9
1.3. Взаимодействие с мобильными устройствами и web API 10
Глава 2. План реализации системы 12
2.1. Система детектирования предметов одежды 13
2.1.1. Поиск объектов 14
2.1.2. Классификация окон-кандидатов 16
2.1.3. Пост-обработка результатов 17
2.2. Программное обеспечение детектора 18
2.2.1. Ядро (KIRA) 19
2.2.2. Балансировщик 25
2.2.3. Конфигурация nginx 27
2.2.4. Доработка фреймворка Caffe 28
Глава 3. Обучение сетей и тестирование системы 29
3.1. Обучение MultiBox и Fast R-CNN 29
3.2. Тестирование детектора 29
3.3. Тестирование быстродействия и устойчивости системы 30
Выводы 33
Заключение 35
Список литературы 36
Приложение 1 40
Приложение 2 42
Приложение 3 43
Приложение 4 44
Теория обработки цифровых изображений — один из основных разделов в информатике. В рамках него разработаны алгоритмы сжатия графических данных, их анализа, машинного зрения. Человек давно пытается научить компьютер понимать, что находится на изображении. То что для нас кажется задачей вполне тривиальной, разработанным алгоритмам все еще не под силу. Хотя уже имеются примеры создания методов, составляющих вербальное описания сцен [1]. Однако для начала нужно решить более простые проблемы, а именно, необходимо научиться находить ключевые объекты реального мира на изображении и понимать, что это за объекты. Первая задача также называется задачей детектирования. Определение конкретного класса предмета на изображении называется задачей классификации.
К решению задач детектирования и классификации применяются различные подходы: статистические, специально разработанные теории ключевых точек, генетические алгоритмы. Другим методом является машинное обучение, зачастую использующее в работе дополнительно один из предыдущих. Тем не менее есть примечательный независимый инструмент — нейронные сети.
В контексте машинного обучения нейронные сети являются наиболее перспективным методом для детектирования и классификации объектов на изображении. Нейронные сети построены по принципу моделирования взаимодействия биологических нейронов в коре головного мозга живых организмов. Некоторые модели кроме общих представлений о работе мозга используют и более специфические знания о, например, устройстве зрительной коры, и реализуются они в свёрточных нейронных сетях [2].
Для оценки качества алгоритмов детектирования и классификации собраны базы данных, содержащие изображения и вспомогательную информацию об объектах на них. Самая большая — ImageNet включает в себя более 14 миллионов изображений и 20 тысяч классов объектов [3]. Каждый год на ней проводится соревнование ImageNet Large Scale Visual Recognition Challenge (ILSVRC), в котором выявляются лучшие алгоритмы в решении задачи детектирования и классификации. И если еще 6 лет назад большая часть алгоритмов была построена на идее ключевых точек и их дескрипторов [4], то сейчас участники соревнования активно развивают нейросетевые модели, показывающие существенный прирост по всем метрикам качества [5].
Однако несмотря на возросшую за последние несколько лет популярность нейронных сетей и значительный прогресс в оптимизации их быстродействия и качества работы, их применение в реальных задачах все еще ограничено. Это связано как с тем, что работа алгоритмов требует существенных вычислительных ресурсов, так и с тем, что обучение сети — их главное отличие от классических алгоритмов, не программируется и не задается фиксированным образом, это вносит элемент случайности в решение поставленных задач. Обучаясь на тренировочных данных, сеть, исключительно за счет своего внутреннего устройства, выделяет общие и частные признаки объектов, которые на стадии тестирования используются для поиска и классификации объектов на тестовом изображении. Сложность заключается именно в поиске оптимального внутреннего устройства, процесс этот не алгоритмизируем и требует существенного опыта и, возможно, даже удачи. Часть представленной работы будет посвящена поиску архитектурных изменений для двух сетей и описанию достигнутых результатов.
Другой модной тенденцией последнего времени стали онлайн- магазины. Конкуренция заставляет их предлагать новый функционал, повышающий удобство выбора и покупки товаров. Так, один магазин одежды и аксессуаров обратился в компанию, где проводилось представленное исследование, с просьбой разработать систему, позволяющую пользователю искать похожие предметы по фотографиям, сделанным камерой смартфона или загруженным из интернета. Руководство магазина справедливо полагало, что подобная возможность сможет привлечь больше покупателей. Описывали же будущую систему следующим образом: это должно быть мобильное приложение, в которое пользователь может загружать фотографии (или делать прямо в нем) интересующих его предметов одежды, получая в ответ список наиболее похожих товаров из ассортимента магазина с ценами и прочей вспомогательной информацией.
При детальном рассмотрении задачу можно разделить на подзадачи:
• разработка мобильного приложения;
• разработка системы поиска и классификации объектов на фотографии;
• разработка поиска похожих объектов;
• создание сервиса для взаимодействия с мобильным приложением.
Настоящая работа будет посвящена второму и четвертому пунктам, поэтому подробнее опишем связанные с ними требования, поступившие от заказчика. Были выставлены ограничения не только на качество системы, но и на время работы. Основной целевой аудиторией станут пользователи мобильных устройств, которых легко потерять большим временем ожидания результатов. На качество детектирования и классификации объектов условия даны в двух метриках: полноты (recall) и точности (precision). Первая характеризует количество правильно найденных объектов относительно общего количества интересующих нас объектов на изображении. Точность же показывает, сколько объектов правильно детектировалось среди всего множества найденных предметов.
Эталонными стали следующие значениями:
• Recall > 80%;
• Precision > 80%;
• Время работы < 1 cек.
Другое требование, выдвинутое заказчиком и не относящееся напрямую к взаимодействию с пользователем, — расширяемость построенной системы. Под расширяемостью подразумевается возможность быстрой адаптации к изменяющемуся ассортименту магазину. Дополнительно решено реализовать возможность простой смены алгоритмов на случай, если появится необходимость задействовать в приложении более современные и оптимизированные их версии.
В рамках проведенной работы были выполнены все поставленные цели:
• удалось достигнуть требуемого качества детектирования предметов одежды;
• система справляется с нагрузкой и остается стабильной в пиковые часы;
• реализованная гибкость позволяет добавлять новые методы обработки изображений и новые классы в систему распознавания с минимальными затратами времени;
• скорость обработки запросов находится на уровне в три раза меньшем верхней границы.
Разработано уникальное программное обеспечение, успешно применяемое в коммерческих приложениях уже на протяжении года. За это время получена награда в конкурсе стартапов Burda International Startup Competition [39], где система оценивалась международным жюри.
Успех разработки еще раз показывает перспективность исследований в сфере нейронных сетей и оправданность их применения в реальных задачах компьютерного зрения.