Введение 3
Постановка задачи 5
Обзор литературы 6
Глава 1. Анализ датасета 7
Глава 2. Немного о U-Net 9
Глава 3. Решение задачи сегментации 11
Глава 4. Решение задачи перекраски 21
Выводы 26
Заключение 27
Список использованных источников 28
Приложение 1 29
Приложение 2
В наше время, когда активно развиваются нейронные сети, появляется возможность решать множество задач, точный алгоритм решения которых человеку придумать сложно, он состоял бы из огромного числа пунктов, которые пришлось бы прописывать вручную.
В частности, с помощью нейронных сетей решаются задачи компьютерного зрения, т.е. задачи, подразумевающие программную обработку изображений или видео для выдачи какого-либо результата (например, задачи классификации, кластеризации, сегментации, восстановления от воздействия шума).
В данной работе решалась одна из таких задач, суть которой состояла в следующем: пользователь загружает фотографию своей комнаты в программу, выбирает любой желаемый цвет, после чего программа перекрашивает в этот цвет обои на фотографии.
Такая программа будет полезна тем, кто собирается менять интерьер у себя в комнате: не придется несколько раз ходить в магазин, чтобы подобрать нужный цвет. Для этого достаточно осмотреть измененную комнату в программе и купить то, что нужно, сразу. Также эта программа выгодна и магазину по продаже настенных покрытий, ее наличие является конкурентным преимуществом.
Среди реализованных на данный момент аналогов стоит выделить мобильное приложение для Android, Dulux Visualizer, которое во время перемещения камеры телефона меняет цвет стен в режиме реального времени. Необходимость пользователя указывать стену вручную для работы программы является, одновременно, и недостатком, и достоинством программы. Без указания пользователя программа не может понять, какие оттенки цвета считаются стеной, а если на фотографии слишком много разделенных объектами участков стены, нужно указывать на каждый из них. С другой стороны, в приложении есть возможность перекрасить одну стену комнаты одним цветом, а соседнюю стену - другим.
Также стоит отметить мобильное приложение Paint Tester, оно выполняет похожую задачу, однако не производит сегментацию, оно перекрашивает указанные участки стены по принципу, похожему на принцип действия инструмента «Волшебная палочка», который доступен, например, в приложениях Adobe Photoshop и Paint.NET, из-за чего часть пикселов не закрашивается в нужный цвет.
В главе 1 данной работы описан выбор фотографий из найденного датасета для обучения модели сегментации стен. В главе 2 кратко описана структура нейронных сетей вида U-Net и принцип их работы. В главе 3 подробно описан процесс обучения моделей для решения задачи сегментации, описано их тестирование, действия по повышению качества работы обучения моделей, а также по повышению качества получаемого результата. В главе 4 описан процесс решения задачи перекраски изображения: первоначальное решение, а затем, его модификация.
В данной выпускной квалификационной работе был подобран датасет с разнообразными фотографиями комнат и соответствующими им изображениями-масками, на его основе было проведено формирование обучающего и валидацонного наборов изображений, которые были наиболее подходящими для задачи.
Затем была построена и реализована нейронная сеть для сегментации, путем различных изменений и модификаций архитектуры нейронной сети было получено 6 различных обученных моделей, наиболее эффективная из которых была выбрана в качестве решения первой части поставленной задачи.
После реализации задачи сегментации, первоначально был разработан и программно реализован алгоритм перекраски изображений, а затем, объединен в один скрипт с сегментирующей программой. После выявления недочетов алгоритма программы перекраски, была разработана и программно реализована его модификация, с помощью которой были устранены ошибки предыдущего варианта программы и добавлен некоторый функционал в виде регулировки яркости.
Несмотря на некоторые неточности работы программы на данном этапе (могут быть слегка закрашены части объектов комнаты или небольшие пробелы на стене, а также неточности на границах), пользователь, в целом, получает преставление о том, как будет выглядеть его комната в том или ином цвете.
1. Небольшое исследование свойств простой U-net, классической сверточной сети для
сегментации. [Электронный ресурс]. URL: https://www.pvsm.ru/obrabotka-
izobrazhenij/302465(дата обращения: 24.04.2021).
2. Тропченко А.Ю., Тропченко А.А. Методы вторичной обработки и распознавания изображений. Учебное пособие [Книга]. - Санкт-Петербург: Университет ИТМО, 2015. - 215 с.
3. A. Gulli, S. Pal. Deep Learning with Keras [Книга]. - Birmingham - Mumbai: Packt Publishing, 2017. - 318с.
4. Dropout — метод решения проблемы переобучения в нейронных сетях. [Электронный ресурс]. URL:https://habr.com/ru/company/wunderfund/blog/330814/(дата обращения: 07.03.2021).
5. Landscape - mel chin. [Электронный ресурс]. URL:https://melchin.org/oeuvre/landscape/(дата обращения: 24.04.2021).
6. Matplotlib: Python plotting - Matplotlib 3.4.2 documentation. [Электронный ресурс]. URL: https://matplotlib.org/(дата обращения: 23.04.2021).
7. RMRC Reconstruction Meets Recognition Challenge 2014. [Электронный ресурс]. URL: https://cs.nyu.edu/~silberman/rmrc2014/indoor.php(дата обращения: 15.03.2021).
8. scikit-image: Image processing in Python - scikit-image. [Электронный ресурс]. URL: https://scikit-image.org/(дата обращения: 24.04.2021).
9. S. Pattanayak. Pro Deep Learning with TensorFlow [Книга]. - Berkeley, CA: Apress, 2017. - 398 с.
10. P. Deitel, H. Deitel. Python for Programmers: with Big Data and Artificial Intelligence Case Studies [Книга]. - Pearson Higher Ed USA, 2019. 640с.