Введение 5
2. Постановка задачи 7
3. Обзор 8
3.1. Предметная область 8
3.1.1. Нейронные сети 8
3.1.2. Перцептрон 8
3.1.3. Сверточные нейронные сети 9
3.1.4. Решение задач компьютерного зрения с помощью
сверточных нейронных сетей 10
3.1.5. Порождающие состязательные нейронные сети . . 10
3.1.6. Обучение нейронной сети 11
3.1.7. Трансферное обучение 12
3.2. Существующие решения 12
4. Алгоритм отбора и разметки фотографий 14
4.1. Распознавание лиц и их ключевых точек 14
4.1.1. Выбор библиотеки для поиска лиц на фотографиях 14
4.1.2. Выбор библиотеки для детекции ключевых точек
лица 15
4.1.3. Синтез алгоритма распознавания лиц и их ключевых точек 16
4.1.4. Уточнение положения области закрытых глаз нейросетевыми методами 17
4.2. Классификация лиц с открытыми и закрытыми глазами 20
5. Алгоритм исправления дефекта закрытых глаз 22
5.1. Основной алгоритм вставки открытых глаз в фотографию с закрытыми глазами 22
5.2. Использование GAN для улучшения полученных результатов 24
5.3. Результаты 27
6. Веб приложение ’’Amazing eye-opener” 30
6.1. Возможные варианты приложения 30
6.2. Финальный вариант приложения 31
Список литературы 34
В современном мире, полном различных гаджетов и технических
новинок, люди постоянно делают фотографии. По версии [31] в социальной сети Instagram в 2016 году выкладывалось около 95 миллионов
фотографий каждый день.
Тем не менее, не всегда фотографии получаются удачно и многие из
них требуют дополнительной обработки. Например, распространенной
является ситуация, когда лицо человека на фотографии получилось
хорошо, за исключением одного дефекта — глаза у фотографируемого
оказались закрыты. Такое может произойти по различным причинам,
например, если фотографируются сразу много людей, в таких случаях
очень сложно подловить момент, чтобы глаза были открыты у каждого.
С другой стороны, очень обидно, вернувшись из далекого путешествия,
обнаружить, что на фотографии в важном для Вас месте получились
закрытые глаза, а поскольку путешествие закончилось, переснять снимок уже не получится.
Чаще всего неудачные, но важные фотографии обрабатываются с
помощью специальных приложений – фоторедакторов, например, Adobe
Photoshop, Photoscape, Movavi Photo Editor. Обработка фотографий с
помощью этих средств может занимать большое количество времени, а
также бывает слишком сложна для неподготовленного пользователя.
Сейчас появляется все больше и больше автоматизированных способов обработки изображений, существуют приложения для придания
изображению особой текстуры – стилизации, например [1], или для автоматического раскрашивания черно-белых изображений, например [2].
Существует также отдельный класс редакторов для исправления фотографий лиц людей, такие как [7] и [18], они помогают автоматически
редактировать целый набор различных дефектов, например, эффект
красных глаз, лишние блики, морщины и проблемы на коже лица. Тем
не менее, в сети интернет нет доступного средства для исправления
закрытых глаз на фотографиях.
Поэтому возникла идея помочь людям с обработкой таких фото-
5графий и создать приложение, способное автоматически исправлять
дефект закрытых глаз. Это приложение сможет дополнить ряд уже
существующих редакторов фотографий лиц людей, поможет как профессиональным фотографам, так и обычным людям.
Из возможных вариантов приложения была выбрана реализация в
виде веб-приложения. Был создан базовый сервер на Python с использованием веб-фреймворка Django, а также frontend на javascript.
Полученное приложение позволяет пользователю осуществить базовый сценарий работы, который включает в себя следующие действия.
• Пользователь может зарегистрироваться и авторизоваться (рис.
16), при этом все данные пользователя будут сохраняться в базе
данных SQLite.
• Авторизованный пользователь имеет возможность загружать свои
удачные фотографии с открытыми глазами в галерею фотографий.
• Авторизованный пользователь имеет возможность загрузить свою
неудачную фотографию на странице ”Fix my photo” (рис. 17).
• После загрузки своей неудачной фотографии пользователь имеет
возможность нажать кнопку ”Find my face”, что приведет к обработке загруженной фотографии алгоритмами описанными выше,
а полученный результат будет предоставлен пользователю.
• После получения первого результата у пользователя появляется
возможность отредактировать текущий результат, изменив размер и/или положение наложенных глаз (рис. 18).
• Отредактировав текущий результат, пользователь может нажать
кнопку ”Readjust”, что приведет, повторному применению описанного выше алгоритма вставки с учетом внесенных пользователем
правок. Финальный результат будет отображен на экране пользователя (рис. 19).
• Также авторизованный пользователь имеет возможность получить
доступ ко всем предыдущим полученным результатам в галерее
результатов
[1] Ai painter // https://www.instapainting.com/ai-painter.
[2] Algorithmia - colorize photos // https://demos.algorithmia.com/ colorize-photos/.
[3] Chollet, F. Xception: Deep learning with depthwise separable convolutions // https://arxiv.org/abs/1610.02357. ”— 2016.
[4] Ciresan Dan Ueli Meier, J. M. L. M. G. J. S. Flexible, high performance convolutional neural networks for image classification // https://dl. acm.org/citation.cfm?id=2283603. ”— 2011.
[5] Deep learning face attributes in the wild / Ziwei Liu, Ping Luo, Xiaogang Wang, Xiaoou Tang // Proceedings of International Conference on Computer Vision (ICCV). ”— 2015.
[6] Florian Schroff Dmitry Kalenichenko, J. P. Facenet: A unified embedding for face recognition and clustering // https://arxiv.org/ abs/1503.03832.”— 2015.
[7] Fotor - photo reshaping // https://www.fotor.com/features/ reshape.html.
[8] F.Song X.Tan, X. Eyes closeness detection from still images with multi¬scale histograms of principal oriented gradients // http://parnec. nuaa.edu.cn/xtan/data/ClosedEyeDatabases.html. ”— 2014.
[9] Gang Pan Lin Sun, Z. W. S. L. Zju eyeblink database // http://www. cs.zju.edu.cn/~gpan/database/db_blink.html.
[10] Hao Dong Paarth Neekhara, C. W. Y. G. Unsupervised image-to-image translation with generative adversarial networks // https://arxiv. org/abs/1701.02676. ”— 2017.
[11] Ian J. Goodfellow Jean Pouget-Abadie, M. M. B. X. D. W.-F. S. O. A. C. Y. B. Generative adversarial networks. ”— 2014.
[12] Imagenet large scale visual recognition competition (ilsvrc) // http: //www.image-net.org/challenges/LSVRC/.
[13] Jean-Charles Bazin Dang-Quang Pham, I. K. Automatic closed eye correction // http://ieeexplore.ieee.org/document/5414163/. ”— 2009.
[14] Joint face detection and alignment using multitask cascaded convolutional networks / K. Zhang, Z. Zhang, Z. Li, Y. Qiao // IEEE Signal Processing Letters. ”— 2016. ”— Oct. ”— Vol. 23, no. 10. ”— P. 1499-1503.
[15] Jun-Yan Zhu Taesung Park, P. I. A. A. E. Unpaired image-to-image translation using cycle-consistent adversarial networks // https:// arxiv.org/abs/1703.10593. ”— 2017.
[16] Kaipeng Zhang Zhanpeng Zhang, Z. L. Y. Q. Joint face detection and alignment using multi-task cascaded convolutional networks // https: //arxiv.org/abs/1604.02878.”— 2016.
[17] Ki Wan Kim Hyung Gil Hong, G. P. N. A study of deep cnn¬based classification of open and closed eyes using a visible light camera sensor // https://www.ncbi.nlm.nih.gov/pmc/articles/ PMC5539645/pdf/sensors-17-01534.pdf.”— 2017.
[18] Makeup.pho.to // http://makeup.pho.to/ru/.
[19] rio-hist library // https://github.com/mapbox/rio-hist.
[20] Rosenblatt, F. The perceptron: A probabilistic model for information storage and organization in the brain / F. Rosenblatt // Psychological Review. ”— 1958. ”— P. 65-386.
[21] Rpi isl eye database // https://www.ecse.rpi.edu/homepages/ cvrl/database/ISL_IR_Eye_Database.htm.
[22] Semantic image inpainting with deep generative models / Raymond A. Yeh*, Chen Chen*, Teck Yian Lim et al. // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. ”— 2017. ”— * equal contribution.
[23] Sinno Jialin Pan, Q. Y. A survey on transfer learning // https:// ieeexplore.ieee.org/abstract/document/5288526/. ”— 2010.
[24] Talking faces // http://www-prima.inrialpes.fr/FGnet/data/ 01-TalkingFace/talking_face.html.
[25] Tero Karras Timo Aila, S. L. J. L. Progressive growing of gans for improved quality, stability, and variation / Samuli Laine Jaakko Lehtinen Tero Karras, Timo Aila // arXiv preprint arXiv:1710.10196. ”— 2017.
[26] Trained dlib face landmarks detector // http://dlib.net/files/ shape_predictor_68_face_landmarks.dat.bz2.
[27] Trained opencv eye detector // https://github.com/opencv/ opencv/blob/master/data/haarcascades/haarcascade_eye.xml.
[28] Trained opencv face detector // https://github.com/opencv/ opencv/blob/master/data/haarcascades/haarcascade_ frontalface_default.xml.
[29] Very deep convolutional networks for large-scale visual recognition // http://www.robots.ox.ac.uk/~vgg/research/very_deep/.
[30] Vgg face descriptor // http://www.robots.ox.ac.uk/~vgg/ software/vgg_face/.
[31] WOOLLASTON, V. Instagram now has half a billion users // http://www.wired.co.uk/article/ instagram-doubles-to-half-billion-users. ”— 2016.
[32] Y. LeCun B. Boser, J. S. D. D. H. R. E. H.-W. H. L. D. J. Backpropagation applied to handwritten zip code recognition // http: //ieeexplore.ieee.org/document/6795724/. ”— 1989. ”— http: //ieeexplore.ieee.org/document/6795724/.
[33] Yiyu Hong, J. K. A 2d-view depth image- and cnn-based 3d model identification method // http://www.mdpi.eom/2076-3417/7/10/ 988. ”— 2017.
[34] Zhang, H. Image de-raining using a conditional generative adversarial network / He Zhang, Vishwanath Sindagi, Vishal M Patel // arXiv preprint arXiv:1701.05957. ”- 2017.
[35] Zhaojie Liu, H. A. Automatic eye state recognition and closed- eye photo correction // http://ieeexplore.ieee.org/doeument/ 4761186/. ”— 2008.
[36] Zili Yi Hao Zhang, P. T. M. G. Dualgan: Unsupervised dual learning for image-to-image translation // https://arxiv.org/abs/1704.02510. ”— 2017.
[37] Николенко С. Кадурин А., IZI. IZI. Глубокое обучение / Архангель¬ская Е. Николенко С., Кадурин А. ”— ООО Издательство «Питер», 2018.