ПЕРЕЧЕНЬ ИСПОЛЬЗУЕМЫХ СОКРАЩЕНИЙ: 4
ВВЕДЕНИЕ 5
1. ИССЛЕДОВАТЕЛЬСКИЙ РАЗДЕЛ 8
1.1. Актуальность выбранной темы 8
1.2. Исследование предметной области 8
1.3. Цель и задачи разработки 11
1.4. Математическая модель геометрических искажений номера 12
1.4.1. Аффинные и перспективные геометрические преобразования 12
1.4.2. Перспективные геометрические искажения номерных знаков 17
1.5. Обзор существующих программных решений 20
1.5.1. Графический редактор Adobe Photoshop 21
1.5.2. Графический редактор Gimp 22
1.5.3. Платформа для создания приложений Unity 23
1.6. Требования к составу выполняемых функций ПМ ГИНЗА 26
1.7. Организация входных и выходных данных ПМ ГИНЗА 26
1.8. Алгоритм и структура данных ПМ ГИНЗА 27
1.9. Перспективы развития 29
Выводы 30
2. КОНСТРУКТОРСКИЙ РАЗДЕЛ 31
2.1. Выбор инструментальных средств разработки 31
2.1.1. Выбор языка программирования 31
2.1.3. Описание используемых библиотечных средств 35
2.1.4. Выбор среды разработки 36
2.1.5. Выбор системы контроля версий 41
2.2. Требования к составу и параметрами технических средств 47
2.3. Требования к надежности ПМ ГИНЗА 49
2.4. Требования к информационной и программной совместимости 49
2.5. Программная реализация 49
2.5.1. Объектно-ориентированный подход 49
2.5.2. Единый стиль написания кода 51
2.5.3. Описание классов ПМ ГИНЗА 52
2.6. Описание графического интерфейса 55
2.7. Результаты использования ПМ ГИНЗА для обучения нейронной сети 60
Выводы 63
3. ТЕХНОЛОГИЧЕСКИЙ РАЗДЕЛ 64
3.1. Отладка ПМ ГИНЗА 64
3.1.1. Использование отладчика Microsoft Visual Studio для отладки ПМ ГИНЗА 65
3.1.2. Отладка ошибок использования памяти ПМ ГИНЗА с помощью Dr. Memory ... 68
3.1.3. Отладка ПМ ГИНЗА с помощью системы рецензирования кода Review Board . 68
3.1.4. Логирование 70
3.1.5. Результаты отладки ПМ ГИНЗА 70
3.2. Тестирование ПМ ГИНЗА 71
3.2.1. Модульное, интеграционное и системное тестирование ПМ ГИНЗА 71
3.2.2. Тестирование методами «белого ящика» и «чёрного ящика» 75
3.2.3. Тестирования пользовательского интерфейса ПМ ГИНЗА 77
3.2.4. Использование инструмента непрерывной интеграции Jenkins 78
3.2.5. Тестирование производительности ПМ ГИНЗА 79
3.2.6. Результаты тестирования ПМ ГИНЗА 81
Выводы 82
Заключение 83
СПИСОК ЛИТЕРАТУРЫ 85
ПРИЛОЖЕНИЯ
В современном мире невозможно представить контроль за постоянно увеличивающимся автомобильным потоком без технологии распознавания регистрационных знаков автомобилей. Идентификация автомобилей по их номерному знаку является важным аспектом обеспечения безопасности дорожного движения.
Одним из подходов к распознаванию изображений символов автомобильного номера является использование сверточных нейронных сетей [3]. Методика распознавания номера состоит из пяти этапов - поиск номерной пластины на фотографии, выделение на полученном снимке символов номера, разбиение номера на символы, распознавание каждого из этих символов, и оценка надежности распознавания каждого символа [4]. Алгоритмы распознавания номерных знаков автомобилей должны быть устойчивыми к искажениям изображений номерных пластин, связанным со скоростью движения автомобилей и положением камеры относительно номерного знака.
До настоящего времени в компании АО «ЭЛВИС-НеоТек» для обучения рассматриваемой нейронной сети использовались фотографии, полученные с помощью реальных съёмок. Эти фотографии отбирались и обрабатывались вручную, в частности, на каждом снимке должно было находиться только одно изображение номерного знака. Кроме того, имя каждого файла должно было содержать номер, который изображен на фотографии. Такой процесс приводил к большим затратам времени на создание обучающей выборки.
Одной из проблем распознавания автомобильных номеров является разнообразие их видов, которые отличаются начертанием символов и размерами номерных пластин. Для обучения нейронной сети требуется качественная и большая выборка изображений автомобильных номеров. Но иногда сложно получить достаточное количество примеров изображений номерных знаков определённого вида с помощью реальных съёмок [6]. В связи с этим в данной работе было решено протестировать подход с машинным обучением на изображениях номерных знаков, которые сгенерированы программно, а не получены с помощью натуральных съемок.
Актуальность задачи заключается в необходимости быстрой и эффективной адаптации систем распознавания к любым региональным стандартам номеров.
Целью данной работы является повышение скорости формирования обучающей выборки и качества обучения нейронной сети.
Для выполнения данной работы были поставлены следующие задачи:
- исследование предметной области;
- сравнительный анализ существующих программных решений;
- выбор инструментальных средств и среды разработки;
- разработка схемы данных ПМ ГИНЗА;
- разработка алгоритма работы ПМ ГИНЗА;
- разработка пользовательского интерфейса ПМ ГИНЗА;
- программная реализация ПМ ГИНЗА;
- отладка и тестирование ПМ ГИНЗА;
- разработка руководства оператора.
Практическая значимость данной работы отражается в том, что ПМ ГИНЗА внедрён на предприятии АО «ЭЛВИС-НеоТек» в системах «Перекрёсток» [8] и «Паркинг Контроль» [9]. Использование ПМ ГИНЗА позволило значительно повысить скорость формирования обучающих выборок. Переобучение нейронной сети, входящей в состав системы «Перекрёсток», на сгенерированной ПМ ГИНЗА выборке, улучшило результаты распознавания израильских номеров с 82.7% до 94.63%, при этом процент ошибочно распознанных номеров уменьшился с 2.1% до 0.99%, а доля нераспознанных номеров сократилась с 14.1% до 5.38%.
Пояснительная записка содержит введение, три раздела: исследовательский, конструкторский и технологический, заключение, список использованной литературы и пять приложений.
В исследовательском разделе описывается актуальность выбранной темы, исследование предметной области, анализ существующих программных продуктов, проанализированы функциональные требования к ПМ ГИНЗА, структура входных и выходных данных, приводятся схемы данных и алгоритмов.
В конструкторской части проводится анализ возможных конструкторских решений, которые могут быть использованы для реализации ПМ ГИНЗА, проводится анализ и выбор языков программирования и интегрированных сред разработки, описан анализ и выбор системы контроля версий, определены требования к надёжности, составу и параметрам технических средств, определены требования к программной совместимости, приведен обзор пользовательского интерфейса.
В технологическом разделе содержатся сведения о методике создания данного программного модуля, приводится подробное описание используемых технологий, шаблоны проектирования, сведения о методах и результатах отладки и тестирования разрабатываемого программного модуля.
Объем пояснительной записки составляет 89 листов.
Результаты работы апробированы на 9-ой Всероссийской научно-практической конференции «Актуальные проблемы информатизации в науке, образовании и экономике»- 2016, и на 24-ой Всероссийской межвузовской научно-технической конференции студентов и аспирантов «Микроэлектроника и информатика»-2017. Содержание и выводы работы представлены в статье, принятой для публикации изданием «Известия высших учебных заведений. Электроника», включенным в список журналов рекомендованных ВАК Министерства образования и науки РФ. Основные положения работы докладывались на Всероссийском конкурсе проектов и разработок в области IT-технологий «IT-прорыв» сезона 2016-2017. Апробация практической части ВКР подтверждается внедрением результатов ВКР в деятельность предприятия АО «ЭЛВИС-НеоТек».
Данная работа была посвящена разработке программного модуля генерации изображений номерных знаков автомобилей, назначение которого заключается в формировании синтетических обучающих выборок для нейронных сетей, распознающих регистрационные автомобильные знаки.
В ходе разработки ПМ ГИНЗА были выполнены следующие задачи:
- исследована предметная область;
- проведён сравнительный анализ существующих программных решений;
- выбраны инструментальные средства и среда разработки;
- разработана схема данных ПМ ГИНЗА;
- разработан алгоритм работы ПМ ГИНЗА;
- разработан пользовательский интерфейс ПМ ГИНЗА;
- выполнена программная реализация ПМ ГИНЗА;
- проведена отладка и тестирование ПМ ГИНЗА;
- разработано руководство оператора.
Применение ПМ ГИНЗА позволило не только значительно ускорить создание обучающей выборки, но и повысить качество распознавания редко используемых стандартов номеров.
ПМ ГИНЗА внедрён на предприятии АО «ЭЛВИС-НеоТек» в многоцелевую автоматическую систему фотовидеофиксации нарушений правил дорожного движения «Перекрёсток». Применение ПМ ГИНЗА для обучения нейронной сети системы «Перекрёсток» повысило процент распознавания узких израильских номеров на 27% до значения 94.21%. Точность работы классификатора при обработке видеопотока, поступающего с камер, установленных в Израиле, стала составлять более чем 93% верно распознанных кадров, вместо 82.7%. При этом, доля неверно распознаваемых фотографий автомобильных номеров уменьшилась с 55%, а процент не распознанных кадров сократился на 70%.
Результаты работы апробированы на 9-ой Всероссийской научно-практической конференции «Актуальные проблемы информатизации в науке, образовании и экономике»- 2016, и 24-ой Всероссийской межвузовской научно-технической конференции студентов и аспирантов «Микроэлектроника и информатика»-2017. Содержание и выводы работы представлены в статье, принятой для публикации изданием «Известия высших учебных заведений. Электроника», включенным в список журналов рекомендованных ВАК Министерства образования и науки РФ. Основные положения работы докладывались на Всероссийском конкурсе проектов и разработок в области IT-технологий «IT-прорыв» сезона 2016-2017. Апробация практической части ВКР подтверждается внедрением результатов ВКР в деятельность предприятия АО «ЭЛВИС-НеоТек».
1. Л.Г. Гагарина, Р.А. Касимов, Д.Г. Коваленко, Е.Л. Федотова, ЧжоЗо Е, Б.В. Черников. Методические указания по подготовке выпускной квалификационной работы по направлению подготовки бакалавров 09.03.04 «Программная инженерия» / Под ред. Б.В. Черникова. - М.: МИЭТ, 2016.
2. Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д. Технология разработки программного обеспечения: учебное пособие / под ред. Л.Г. Гагариной. - М.: ИД «ФОРУМ»: ИНФРА-М., 2008.
3. LeCun Y. et al. Comparison of learning algorithms for handwritten digit recognition //International conference on artificial neural networks. - 1995. - Т. 60. - С. 53-60.
4. Number Plate Recognition Using an Improved Segmentation. - URL: https://www.ijirset.com/upload/2014/may/44_Number.pdf (дата обращения: 22.05.2017).
5. Movellan J. Tutorial on Gabor Filters. 2008. URL: http://mplab.ucsd.edu/tutorials/gabor.pdf (дата обращения: 10.05.2017).
6. Jain, V. and Seung, S. H. (2008). Natural image denoising with convolutional networks. In NIPS’2008.
7. Deep neural networks performance optimization in image recognition. - URL: http://repo.ssau.ru/bitstream/Informacionnye-tehnologii-i-nanotehnologii/Deep-neural- networks-performance-optimization-in-image-recognition-63757/1/paper%20122_649- 654.pdf (дата обращения: 22.05.2017).
8. Многоцелевая автоматическая система фотовидеофиксации нарушений правил дорожного движения «Перекрёсток». - URL: http://old.elvees.ru/index.php?id=106 (дата обращения: 16.05.2017).
9. Автоматическая система фотовидеоконтроля платной парковки «Паркинг Контроль». - URL: http://old.elvees.ru/index.php?id=107 (дата обращения: 16.05.2017).
10. Narayanan Vivek, Arora Ishan, Bhatia Arjun. Fast and accurate sentiment classification using an enhanced Naive Bayes model // Intelligent Data Engineering and Automated Learning-IDEAL 2013. - Springer, 2013. - 204 с.
11. Abbasi Ahmed, Chen Hsinchun, Salem Arab. Sentiment analysis in multiple languages: Feature selection for opinion classification in Web forums // ACM Transactions on Information Systems (TOIS). - 2008. -Vol. 26, no. 3. - Р. 12.
12. Понарин Я. П. Аффинная и проективная геометрия. - М.: МЦНМО, 2009.
13. Сиденко Л.А. Компьютерная графика и геометрическое моделирование: Учебное пособие. - СПб.: Питер, 2009. - 224 с.
14. Клейн Ф. Элементарная математика с точки зрения высшей. - М.: Наука, 1987.
15. Шлее М. Qt 5.3. Профессиональное программирование на C++ [Текст] / М. Шлее - СПб: БХВ-Петербург, -2012 -912 с.
16. Документация Adobe Photoshop [Электронный ресурс]. URL:
http://www.adobe.com/ru/products/photoshop.html (дата обращения 02.03.2017).
17. Документация GIMP - GNU Image Manipulation Program [Электронный ресурс]. URL: https://www.gimp.org (дата обращения 02.03.2017).
18. Документация Unity- Game Engine [Электронный ресурс]. URL: https://unity3d.com/ru (дата обращения 04.05.2017).
19. Колдаев В.Д. Основы алгоритмизации и программирования: учебное пособие. / Под ред. Л.Г. Гагариной. - М.: ИД «ФОРУМ»: ИНФРА-М, 2012. - 416 с.
20. C++ reference [Электронный ресурс]. URL: http://en.cppreference.com/wApp (дата обращения: 04.03.2017).
21. Брайан Керниган, Деннис Ритчи. Язык программирования C. - Москва: Вильямс,
2006. - 304 с.
22. Документация Java [Электронный ресурс]. URL: https://docs.oracle.com/javase/8/ (дата обращения 04.03.2017).
23. C# Reference [Электронный ресурс]. URL: https://msdn.microsoft.com/en-
us/library/618ayhy6.aspx (дата обращения 04.04.2016).
24. Документация Python [Электронный ресурс]. URL: https://www.python.org/doc/ (дата обращения 15.04.2017).
25. Boost Library Documentation [Электронный ресурс] / Boost C++ Library Web Site URL: http://www.boost.org/doc/libs/ (дата обращения: 10.05.2017).
26. OpenCV Documentation [Электронный ресурс]. URL: http://opencv.org/ (дата обращения: 28.04.2017).
27. Документация Microsoft Visual Studio [Электронный ресурс]. URL: https://msdn.microsoft.com/en-us/library/60k1461a.aspx (дата обращения: 03.03.2017).
28. Официальный сайт JetBrains CLion [Электронный ресурс]. URL: https://www.jetbrains.com/clion/(дата обращения 03.03.2017).
29. Официальный сайт Qt Creator [Электронный ресурс]. URL: https://www.qt.io/ide/ (дата обращения 07.04.2017)
30. Официальный сайт NetBeans [Электронный ресурс]. URL: https://netbeans.org (дата обращения: 07.04.2017).
31. Официальный сайт Eclipse CDT [Электронный ресурс]. URL: https://eclipse.org/cdt/ (дата обращения: 15.04.2017).
32. Новое поколение систем контроля версий [Электронный ресурс] - Доступ к ст.: http://www.techinfo.net.ru/docs/Version_Control_Systems.html.
33. Jim Blandy. Version Control with CVS. [Электронная книга]. URL: http://citforum.ru/programming/digest/cvsintrorus.shtml.
34. Available CVS Alternatives [Электронный ресурс] - Доступ к ст.: http://better- scm.berlios.de/aegis/.
35. Бен Коллинз-Сассман, Брайан У. Фитцпатрик, К. Майкл Пилато. Управление версиями в Subversion [Электронная книга]. URL: http://kharchuk.ru/svn.html
36. Чакон С. Штрауб Б. "Git для профессионального программиста". - Питер, 2016 - 496с.
37. Bryan O'Sullivan. Mercurial: The Definitive Guide. — O'Reilly Media, Inc., 2009. — 288 с.
38. TortoiseSVN the coolest interface to (Sub) version control [Электронный ресурс]. URL: https://tortoisesvn.net/status.html.
39. Вигерс К., Разработка требований к программному обеспечению [Текст] / Вингерс К. - Пер. с англ. - М.: «Русская Редакция», 2004. - 576 с.
40. Бадд Т. Объектно-ориентированное программирование [Электронный ресурс]. URL: http://kit.znu.edu.ua/iLec/9sem/OOP/lit/Badd_T_- _obektno_orienntirovannoe_programmirovanie.pdf (дата обращения 15.04.2017).
41. STL Documentation [Электронный ресурс]. URL: https://www.sgi.com/tech/stl/(дата обращения: 28.04.2017).
42. Мартин Р. Чистый код. Создание, анализ и рефакторинг. Библиотека программиста. - СПб.: Питер, 2014. - 464 с.
43. Google C++ Style Guide [Электронный ресурс]. - режим доступа: https://google.github.io/styleguide/cppguide.html. Дата обращения: 09.05.2017.
44. Stroustrup B. The C++ Programming Language [Текст] / B. Stroustrup Addison-Wesley - 4th Edition -2013 - 1346 c.
45. Meyers S. Effective Modern C++. 42 Specific Ways to Improve Your Use of C++11 and C++14 [Текст] / S. Meyers O'Reilly Media; 1 edition -2014 -336 с.
46. Bryan O'Sullivan. Mercurial: The Definitive Guide. - O'Reilly Media, Inc., 2009. - 288 с.
47. Плаксин М. А. Тестирование и отладка программ для профессионалов будущих и настоящих [Текст] / М.А. Плаксин - М.: Бином. Лаборатория знаний, 2007.
48. Отладка в Visual Studio [Электронный ресурс] / MSDN - Сеть разработчиков Microsoft
URL: https://msdn.microsoft.com/ru-ru/library/sc65sadd.aspx (дата обращения:
14.05.2016).
49. Dr. Memory Documentation [Электронный ресурс]. URL: http://www.drmemory.org/ (дата обращения: 28.04.2017).
50. Jesse Russell. Administrative Review Board. — 2013 [Электронный ресурс]. URL: http:// literaturi.ru/books/administrative-review-board_27176939.html.
51. Алексей Пахунов Рецензирование кода (code review) (рус.). — 2007. [Электронный ресурс]. URL: https://blog.not-a-kernel-guy.com/2007/02/21/151/.
52. Карпов Андрей. Построение систем автоматического протоколирования Си/Си++ кода - 2012.
53. Майерс Г., Искусство тестирования программ [Текст]/ Г. Майерс, Т. Баджетт, К. Сандлер -3-еиздание - М.: «Диалектика», 2012. - 272 с.
54. Модульное тестирование кода. [Электронный ресурс]. - Режим доступа: https://msdn.microsoft.com/ru-ru/library/dd264975.aspx
55. Бейзер Б. Тестирование черного ящика. Технологии функционального тестирования программного обеспечения и систем [Текст] / Б. Бейзер - Питер, 2004. - 320 с.
56. С. Канер, Д. Фолк, Е. К. Нгуен, Тестирование программного обеспечения, 2006 .
57. Jenkins 1.396 released, The first release of Jenkins is posted, Kohsuke Kawaguch», 2012.
58. Windows Performance Analyzer Documentation [Электронный ресурс]. URL:
https://msdn.microsoft. com/en-us/library/windows/hardware/hh448170.aspx (дата
обращения: 10.05.2017).
59. Beginners Guide to Performance Profiling Tools [Электронный ресурс]. URL: https://msdn.microsoft.com/ en-us /library/ms182372.aspx (дата обращения: 10.05.2017).
60. ГОСТ 19.101-77 ЕСПД. Виды программ и программных документов.
61. ГОСТ 19.201-78 ЕСПД. Техническое задание. Требования к содержанию и оформлению [Текст].
62. ГОСТ 19.504-79 ЕСПД. Руководство программиста. Требования к содержанию и оформлению [Текст].
63. ГОСТ 19.701-90 Схемы алгоритмов, программ, данных и систем http://www.pntd.ru/19.701.htm.