Введение 3
1 Системы технического зрения 6
1.1 Системы технического зрения 6
1.2 Программное обеспечение для разработки СТЗ 7
1.2.1 Среда программирования МЛТЬЛБ и расширение Computer
Vision Toolbox 8
1.3 Принципы работы нейронных сетей 9
1.3.1 Персептроны 13
1.3.2 Структура сверточной нейронной сети 16
1.3.3 Задача классификации 21
2 Программирование алгоритмов обнаружения объектов заданной формы .. 24
2.1 Пример обнаружения круговых объектов на изображении с помощью
imfindcircles 24
2.2 Пример обнаружения круговых объектов на изображении с помощью
оператора Кэнни 28
2.3 Пример обнаружения объекта по особым точкам 32
2.4 Анализ алгоритмов распознавания изображений заданной формы 37
2.5 Создание классификатора изображений с помощью нейронной сети
ResNet-18 38
2.5.1 Обучение нейронной сети на основе ResNet 39
2.5.2. Создание классификатора и проверка сети 46
2.6 Задача сегментации изображений 47
2.6.1 Параметры обучения 52
2.6.2 Обучение сети ResNet-18 для сегментации изображений 54
Заключение 57
Список использованных источников и литературы 58
Техническое зрение в современной робототехнике остается одним из важнейших компонентов, так как подобно человеческому глазу 70% информации об окружающей среде воспринимается зрительной системой. В настоящее время техническое зрение стремятся внедрять во все сферы деятельности человека. Смартфоны способны распознавать лицо своего владельца, автомобили оснащаются СТЗ (Системы технического зрения), которые в случае опасной ситуации на дороге способны автоматически ее распознать и постараться избежать. Беспилотные летательные аппараты оснащены системами технического зрения. В некоторых регионах КНР (Китайская Народная Республика) вводят систему оплаты при помощи лица. Так, например, в метрополитене китайского Чжэнчжоу (Хэнань) официально запустили систему оплаты проезда с помощью распознавания лиц. Однако за один только 2018 год жертвами преступлений, связанных с мошенничеством в области идентификации личности, стали 14,4 миллионов человек по всему миру. Тут становится понятным, что современные СТЗ несовершенны и нуждаются в постоянном улучшении, необходимы более чувствительные оптические датчики, обладающее большей точностью, а главное - усовершенствованные алгоритмы распознавания и обработки информации.
Выделяют несколько основных задач компьютерного зрения: распознавание - определение содержания какого-либо характерного объекта или особенности, идентификация - распознавание индивидуального объекта, принадлежащего какому-то классу, обнаружение - проверка изображения на присутствие какого-либо конкретного условия. Так же выделяются такие задачи, как распознавание текста, оценка движения, восстановление сцены или изображения.
Одним из способов решения таких задач является использование классификаторов, обученных с помощью нейронных сетей.
Нейронная сеть - это математическая модель, построенная по принципу взаимодействия нервных клеток живого организма. При стандартном подходе к программированию мы сообщаем компьютеру, что делать, разбиваем большие задачи на множество малых, точно определяем задачи, которые компьютеру будет легко исполнить. В случае с нейронной сетью мы, наоборот, не говорим компьютеру, как решать задачу. Он сам обучается этому на основе «наблюдений» за данными, «придумывая» собственное решение поставленной задачи.
Искусственные нейронные сети стали предметом исследований очень давно, но наиболее активное развитие в области нейронных сетей началось в 2006 году, когда группы исследователей под руководством Джеффри Хинтона (Geoffrey Hinton) в университете Торонто и Йошуа Бенджи (Yoshua Bengio) в университете Монреаля научились обучать глубокие нейронные сети. Это перевернуло весь мир машинного обучения и на сегодняшний день техники глубокого обучения, глубоких нейросетей достигли потрясающих результатов во многих важных задачах, связанных с компьютерным зрением, распознаванием речи и обработки естественного языка. В крупных масштабах их развёртывают такие компании, как Google, Microsoft и Facebook.
Так же нейронные сети используются в алгоритмах сегментации изображений.
В компьютерном зрении, сегментация - это процесс разделения цифрового изображения на несколько сегментов (множество пикселей). Цель сегментации заключается в упрощении и/или изменении представления изображения, чтобы его было проще и легче анализировать. Сегментация изображений обычно используется для того, чтобы выделить объекты и границы (линии, кривые, и т. д.) на изображениях. Более точно, сегментация изображений - это процесс присвоения таких меток каждому пикселю изображения, что пиксели с одинаковыми метками имеют общие визуальные характеристики. Результатом сегментации изображения является множество сегментов, которые вместе покрывают всё изображение, или множество контуров, выделенных из изображения. Все пиксели в сегменте похожи по некоторой характеристике или вычисленному свойству, например, по цвету, яркости или текстуре. Соседние сегменты значительно отличаются по этой характеристике.
Целью работы является создание алгоритма сегментации объектов заданной формы изображении.
В ходе работы решаются следующие задачи:
1. Изучение теории устройства и построения нейронных сетей;
2. Изучение и программирование алгоритмов компьютерного зрения, применяющихся для классификации предметов заданной формы на изображениях;
3. Изучение принципов работы свёрточной нейронной сети и построение классификатора изображений на её основе;
4. Тестирование классификаторов изображений и анализ полученных результатов;
5. Переобучение нейронной сети и создание алгоритма сегментации на ее основе.
Задачи, поставленные в работе, решаются методом математического моделирования алгоритмов автоматической классификации и сегментации с привлечением переобученных нейронных сетей в среде разработки Matlab, а также с использованием алгоритмов автоматической детерминации объектов с помощью расширения Computer Vision Toolbox.
В первой главе рассматриваются системы технического зрения, среда разработки Matlab, принцип работы нейронных сетей, их архитектура, структура сверточной нейронной сети и задача классификации объектов.
Во второй главе рассматриваются алгоритмы автоматического детектирования объектов, а также процесс переобучения нейронной сети и создание классификатора инструментов и алгоритма автоматической сегментации объектов заданной формы на производственном конвейере.
В заключении представлены основные результаты сделанной работы
В работе были рассмотрены системы технического зрения, алгоритмы автоматического детектирования объектов заданной формы, изучены фундаментальные принципы построения нейронных сетей и их функционирования. Изучена среда Matlab, приложение Deep Network Designer, которая позволяет создавать и редактировать нейронные сети. Рассмотрена и отредактирована нейронная сеть ResNet-18, на основе которой был создан классификатор на 4 класса объектов с точностью распознавания 93.1%. Изучены возможности приложения Image Labeler, которое позволяет создавать пиксельные метки классов объектов на изображении. В нем была создана обучающая база данных, которая использовались для обучения той же сети ResNet-18, с точностью определения 88, 02%. На основе всех этих данных был построен алгоритм автоматической сегментации объектов семи классов на изображении.
Результаты данной работы показали, что на результат обучения нейронных сетей оказывает большое влияние качество входных данных - разрешение входных изображений, освещенность, ракурс, с которого были сделаны снимки. Также немаловажным является тот факт, что чем больше объектов объединены в один класс, тем это сильнее влияет на качество результата обучения сети.
Подобный алгоритм очень актуален и его можно применять в системах автоматического управления автомобилями, на сортировочных этапах производства, на сортировочном мусорном конвейере и т. д.