Введение 7
1 Существующие подходы классификации объектов
на изображении 10
1.1 Контурный анализ 10
1.2 Гистограмма направленных градиентов 11
1.3 Сверточная нейронная сеть 12
Выводы по главе один 14
2 Реализация алгоритма распознавания объектов на изображении
средствами сверточной нейронной сети 15
Выводы по главе два 24
3 Оптимизация гиперпараметров сверточной нейронной сети 25
3.1 Выбор оптимального размера изображения обучающей выборки 25
3.2 Оптимизация размера подвыборки и количества эпох 26
Выводы по главе три 29
Заключение 30
Библиографический список 31
Приложение А 33
Приложение Б 38
Приложение В 45
Современные технологии проникают во все сферы жизни, меняя при этом способы производства и реализации товаров и услуг. Часть этого прогресса достигнута благодаря машинному обучению. Оно позволяет ускорить рабочий процесс, а также сократить расходы в различных сферах деятельности. Технология компьютерного зрения является частью машинного обучения. С помощью нее осуществляются следующие процессы:
• системы управления процессами (промышленные роботы,
автономные транспортные средства);
• системы видеонаблюдения (распознавание лиц);
• системы организации информации (например, для индексации баз данных изображений);
• системы моделирования объектов или окружающей среды
(анализ медицинских изображений, топографическое моделирование);
• системы взаимодействия (например, устройства ввода для
системы человеко-машинного взаимодействия);
• системы дополненной реальности (системы обучения, игры);
• вычислительная фотография (в мобильных устройствах с камерами).
Технологии компьютерного зрения находят применение в сфере ретейла, например, с помощью них производится распознавание товаров на изображении, с целью последующего учета.
У компьютерного зрения есть ряд преимуществ, окупающие большинство сложностей внедрения и работы:
1) стоимость внедрения и обслуживания технологии меньше, чем сумма, затрачиваемая на сотрудников, осуществляющих ту же работу;
2) высокая скорость получения результата;
3) точность распознавания объектов компьютера выше чем у человека [10].
Так как существует ряд подходов к распознаванию объектов на изображении целью работы - определить, какой из методов распознавания объектов на изображении наиболее эффективен в задаче распознавания товаров на фотографии витрины магазина, реализовать его, добиться точности распознавания приемлемой для бизнес процессов [7], а также оценить полученный результат.
Для этого необходимо решить следующие задачи:
• изучить особенности каждого из возможных алгоритмов решения, определить какой подход решает поставленную задачу с наибольшей точностью распознавания;
• убрать зашумленность данных (удалить изображения на которых объект отсутствует);
• скорректировать данные в обучающей выборке (привести исходные изображения к виду: разрешение 128 на 128 пикселя в градациях серого);
• разработать алгоритм распознавания объектов на изображении (разработать структуру сверточной нейронной сети, произвести ее обучение, оптимизировать гиперпараметры модели сети);
• написать скрипт, предсказывающий, с помощью обученной сети, наличие объекта на изображении.
Объект исследования - алгоритм распознавания объектов на изображении.
Предмет исследования - программа для распознавания товаров на витринах магазинов.
Информационная база исследования.
В качестве информационной базы исследования были использованы:
• статьи следующих авторов, опубликованные в открытых источниках (Интернет): Р. Давлеткалиев [4]; Е. Лабинтсев [8]; А. Шарма [9]; П. Нестеров [16].
• учебные пособия следующих авторов: С.И. Николенко [2]; Л. Рамальо [3]; А. Мюллер [7].
Работа состоит из трёх глав, введения, заключения, 20 источников в библиографическом списке, трех приложений.
Во введении обоснована актуальность выбранного исследования, определены цели и задачи работы, отмечены предмет и объект исследований, приведена информационная база и указано краткое содержание работы, выполняется постановка задачи, производится подготовка и описание входных данных, раскрывается специфика задачи.
В первой главе выполняется обзор доступных методов распознавания объектов на изображении, осуществляется выбор оптимального варианта.
Во второй главе реализуется выбранный алгоритм.
В третьей главе производится оптимизация полученного решения, делается вывод о применимости его на практике.
В заключении подведены итоги дипломной работы, приводится список реализованных задач.
В приложении А представлено техническое задание к выпускной квалификационной работе
В приложении Б представлен исходный код реализации алгоритма распознавания объекта на изображении.
В приложении В представлено руководство пользователя к выпускной квалификационной работе.
По результатам теоретических и практических исследований подходов к распознаванию объектов на изображении можно сделать следующие выводы.
Для задачи распознавания товаров на фотографии витрины магазина наиболее применим алгоритм на основе сверточной нейронной сети, при этом выборка из 100 изображений каждого класса достаточна для обучения.
Для эффективной работы над задачей была использована библиотека Keras, а также написан предобработчик исходных изображений. В качестве схемы сверточной нейронной сети была использована наиболее употребляемая архитектура [2,4,7]. Обучение производилось на персональном компьютере с процессором Intel core i7 и видеокартой Nvidia GT 750M на операционной системе Windows 8, время обучения 16 минут. При подобранных оптимальных параметрах (размер изображения 128 на 128 пикселей, batch_size и epochs 15 и 12 соответственно), была достигнута точность распознавания 87% на отложенной выборке, при этом значение функции потерь (0.65) указывает на высокую обобщающую способность модели.
Данное решение востребовано в области логистики и менеджмента ретейлеров продукции различного характера. Полученная точность делает полученное решение применимым на практике.
1. Keras Documentation // https://keras.io[Электронный ресурс]. - Дата доступа 25.02.2018.
2. Николенко, С.И. Глубокое обучение. Погружение в мир нейронных сетей / С.И. Николенко. - М.: Питер, 2017. - 480 с.
3. Рамальо, Л. Python. К вершинам мастерства / Л. Рамальо. - М.: ДМК-Пресс, 2016. - 768 с.
4. Что такое свёрточная нейронная сеть //
https://habr.com/post/309508[Электронный ресурс]. Дата доступа 25.02.2018.
5. Выделение и описание контуров //
http://wiki.technicalvision.ru/index.php/Выделение_и_описание_контуров [Электронный ресурс]. - Дата доступа 25.02.2018.
6. NumPy Reference // https://docs.scipy.org/doc/numpy-
1.13.0/reference [Электронный ресурс]. - Дата доступа 25.02.2018.
7. Мюллер, А. Введение в машинное обучение с помощью Python / А. Мюллер. - М.: O'Reilly, 2017. - 480 с.
8. Метрики в задачах машинного обучения //
https://habr.com/company/ods/blog/328372[Электронный ресурс]. - Дата доступа 25.02.2018.
9. Convolutional Neural Networks in Python with Keras // https://www.datacamp.com/community/tutorials/convolutional-neural-networks- python[Электронный ресурс]. - Дата доступа 25.02.2018.
10. History of computer vision contests won by deep CNNs on GPU // http://people.idsia.ch/~juergen/computer-vision-contests-won-by-gpu-cnns.html[Электронный ресурс]. - Дата доступа 25.02.2018.
11. Свёрточная нейронная сеть //
https://ru.wikipedia.org/wiki/Свёрточная_нейронная_сеть [Электронный
ресурс]. - Дата доступа 25.02.2018.
12. Ключевые рекомендации по глубокому обучению // http://datareview.info/article/eto-nuzhno-znat-klyuchevyie-rekomendatsii-po- glubokomu-obucheniyu-chast-2 [Электронный ресурс]. - Дата доступа 25.02.2018.
13. Deep Sparse Rectifier Neural Networks //
https: //docs. google. com/viewer?docex= 1 &url=http: //j mlr. org/proceedings/papers/v 15/glorot11a/glorot11a.pdf [Электронный ресурс]. - Дата доступа 25.02.2018.
14. Rectified linear units improve restricted Boltzmann machines // https://docs.google.com/viewer?docex=1&url=http://machinelearning.wustl.edu/ml papers/paper_files/icml2010_NairH10.pdf [Электронный ресурс]. - Дата доступа 25.02.2018.
15. Image Module //
https://pillow. readthedocs. io/en/5.1.x/reference/Image.html?highlight=Image [Электронный ресурс]. - Дата доступа 25.02.2018.
16. Обзор топологий глубоких сверточных нейронных сетей // https://habr.com/company/mailru/blog/311706[Электронный ресурс]. - Дата доступа 25.02.2018.
17. Available loss functions // https://keras.io/losses[Электронный ресурс]. - Дата доступа 25.02.2018.
18. A Walkthrough of Convolutional Neural Network—Hyperparameter Tuning // https://towardsdatascience.com/a-walkthrough-of-convolutional-neural- network-7f474f91d7bd[Электронный ресурс]. - Дата доступа 25.02.2018.
19. Dropout — метод решения проблемы переобучения в нейронных сетях // https://habr.com/company/wunderfund/blog/330814[Электронный ресурс]. - Дата доступа 25.02.2018.
20. How to Grid Search Hyperparameters for Deep Learning Models in Python With Keras // https://machinelearningmastery.com/grid-search- hyperparameters-deep-learning-models-python-keras[Электронный ресурс]. - Дата доступа 25.02.2018.