Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Реферат






ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К ВЫПУСКНОЙ КВАЛИФИКАЦИОННОЙ РАБОТЕ

на тему:

 

Программный комплекс мониторинга движения глаз человека-оператора.

Руководитель. доцент кафедры Вычислительной техники, к.т.н

(должность, звание руководителя)

.. Беспалов Д.А..

(подпись руководителя) (Фамилия И.О.)

Консультант по ТЭО. ассистент кафедры инженерной экономики ИУЭЭСС

(должность, звание консультанта)

.. Сташ С.В..

(подпись консультанта) (Фамилия И.О.)

 

Студент. КТбо-4-5. Близнюк Д.В..

(группа) (подпись студента) (Фамилия И.О.)

 

«_____» ____________________ 2015г.

 

г. Таганрог, 2015 г.

Ведомость

 

ТЗ


 

УДК 681.3.069

Близнюк Даниил Вадимович

группа КТбо4-5

Инженерно-технологическая академия

г.Таганрог 2015.

 

 

АННОТАЦИЯ

 

В ходе квалификационной работы был разработан программный комплекс, способный в реальном времени производить анализ каждого кадра из видеопотока, осуществлять поиск лица и глаз, выделяя искомые объекты геометрическими фигурами, рисовать целеуказатель, с изменением его положения на картинке в зависимости от направления взгляда человека, разработать интерфейс программы.

Разработанная программа реализует весь необходимый спектр основных функций для получения доступа к камере, приема кадра из видеопотока, выполняя поиск лица и глаз человека. Выполняется пересчет геометрической модели целеуказателя и изменение его положения в зависимости от взгляда человека оператора.

В квалификационной работе было просчитано экономическое обоснование проекта, целесообразность внедрения проекта и доказана безопасность человеко-машинного взаимодействия.


UDK 681.3.069

Bliznyuk Daniil V.

group KTbo4-5

Engineering and Technological Academy

Taganrog 2015.

 

SUMMARY

 

During qualifying work it was developed software system capable of real-time to analyze each frame of video, search for eyes and face, highlighting the desired objects with geometric shapes, drawing pointer, and changing its position in the image, depending on the direction of operator.

The developed program implements all the necessary range of basic functions for access to the camera, receiving a frame from the video by searching for the face and the human eye. Recalculate geometric model designator and change its position depending on the perspective of human operator.

In qualifying work was calculated economic feasibility of the project, the feasibility of the project and proven safe human-machine interaction.


РЕФЕРАТ

Дипломная работа содержит 89 страниц, 9 рисунков, 8 таблиц, 9 источников и 2 приложения.

Ключевые слова: ДЕТЕКТИРОВАНИЕ, ОБРАРУЖЕНИЕ ОБЪЕКТОВ, РАСПОЗНАВАНИЕ ЛИЦ, АГОРИТМ ВИОЛА – ДЖОНСА, OPENCV, С++,

Объектом разработки является программа для обнаружения лиц и глаз в видеопотоке, осуществлять пересчет геометрической модели целеуказателя, изменение координат целеуказателя в соответствие с положением глаз человека-оператора.

Целью данной работы является создание программного комплекса, который будет получать видеопоток от web-камеры, определять лицо и глаза человека на основе алгоритма Виола-Джонса, в процессе работы будет произведен процесс обучения каскадов Хаара, производиться пересчет геометрической модели целеуказателя и изменения его координат в соответствие с положением глаз человека оператора, разработан интерфейс.

В качестве среды программирования был выбран Microsoft Visual Studio 2013. В качестве языка программирования был выбран C++.

В квалификационной работе было просчитано экономическое обоснование проекта, целесообразность внедрения проекта и доказана безопасность человеко-машинного взаимодействия.


 


СОДЕРЖАНИЕ

ВВЕДЕНИЕ. 10

1 АНАЛИЗ ТЕХНИЧЕСКОГО ЗАДАНИЯ.. 13

2 ОПИСАНИЕ МЕТОДА VIOLA-JONES. 14

2.1 Принцип сканирующего окна. 15

2.2 Интегральное представление изображений. 16

2.3 Признаки Хаара. 19

2.4 Обучение классификатора в методе Виолы-Джонса. 23

2.5 Бустинг. 24

2.6 Каскадная модель сильных классификаторов. 28

3 СИНТЕЗ АЛГОРИТМОВ РАБОТЫ.. 32

3.1 Алгоритм программы.. 33

3.2 Описание алгоритма программы.. 34

3.4 Описание алгоритма работы подпрограммы обнаружения и отображения 36

4 РАЗРАБОТКА ПРОГРАММНОГО РЕШЕНИЯ.. 38

4.1 Выбор среды для разработки. 38

4.2 Разработка интерфейса программы.. 38

4.3 Библиотека OpenCV.. 40

4.4 Описание модулей OpenCV.. 41

4.5 Подключение Библиотеки OpenCV.. 43

5 КЛАССЫ И ФУНКЦИИ, ИСПОЛЬЗУЕМЫЕ В РАБОТЕ. 44

5.1 Матрицы и типы изображений. 44

5.2 Класс CvCapture. 44

5.3 Класс CascadeClassifier 47

6 ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ. 49

6.1 Обоснование актуальности и целесообразности разработки. 49

6.2 Обоснование выбора аналога и критериев для сравнения. 50

6.3 Расчет технико-экономических показателей разработки.. 51

6.4 Расчет единовременных затрат на этапе разработки.. 52

6.5 Расчет технико-экономической эффективности разработки.. 56

6.6 Заключение. 58

7 БЕЗОПАСНОСТЬ ЧЕЛОВЕКО-МАШИННОГО ВЗАИМОДЕЙСТВИЯ.. 59

7.1 Особенности функционального назначения объекта.. 59

7.2 Оценка эргономичности пользовательского интерфейса.. 59

7.3 Оценка напряжённости процесса эксплуатации объекта.. 65

7.4 Разработка мер профилактики и повышения безопасности человеческо-машинного взаимодействия.. 67

ЗАКЛЮЧЕНИЕ. 70

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.. 71

ПРИЛОЖЕНИЕ А.. 72

ПРИЛОЖЕНИЕ Б. 82

 


ВВЕДЕНИЕ

 

Компьютерное зрение - это теория и технология создания машин, которые могут видеть, как мы с вами. С развитием вычислительной техники стало возможным решение задач реального времени, которые ранее считались невыполнимыми на персональных компьютерах. Область применения компьютерного зрения довольна широкая: Баркоды (qr-коды), дефектоскопия (совокупность методов и средств неразрушающего контроля материалов и изделий для обнаружения в них различных дефектов), медицина, безопасность, распознавание номеров, дополненная реальность.

Робототехника является традиционной областью применения машинного зрения. Повышение производительности мобильных процессоров позволяет ставить новые задачи для систем компьютерного зрения в бытовых роботах. Роботы, предназначенные для персонального использования, могут потребоваться для задач распознавания людей и их эмоций по лицам, распознавание жестов, предметов обстановки, включая столовые приборы и посуду, одежду, домашних животных и т. д., задач навигации в зависимости от типа задачи, решаемой роботом.

Помимо бытовых роботов, методы компьютерного зрения нашли широкое применение в системах помощи водителю. Работы по детектированию разметки, препятствий на дороге, распознаванию знаков и т. д. Одним из показательных примеров являются методы стереозрения, используемые для обнаружения препятствий на дороге.

Еще более массовыми по сравнению с бытовой робототехникой и системами помощи водителю являются задачи компьютерного зрения для персональных мобильных устройств, таких как смартфоны, планшеты и т.д. [1] Широкий класс таких приложений: для персональных мобильных устройств связан с задачами дополненной реальности, которые могут быть весьма разнообразными. Игровые приложения, требующие согласованного


отображения виртуальных объектов поверх изображения реальной сцены при перемещении камеры, а также различные развлекательные приложения в целом, туристические приложения (распознавание достопримечательностей с выводом информации о них), а также многие другие приложения, связанные с информационным поиском и распознаванием объектов: распознавание надписей на иностранных языках с отображением их перевода, распознавание визитных карточек с автоматическим занесением информации в телефонную книгу, а также распознавание лиц с извлечением информации из телефонной книги, распознавание постеров фильмов (с заменой изображения постера на трейлер фильма) и т. д.

Многие задачи дополненной реальности тесно связаны с информационным поиском. Задачи поиска изображений по содержанию также разнообразны: сопоставление изображений при поиске изображений уникальных объектов, например архитектурных сооружений, скульптур, картин и т. д., обнаружение и распознавание на изображениях объектов классов разной степени общности: автомобилей, животных, мебели, лиц людей и т. д., а также их подклассов, категоризация сцен (город, лес, горы, побережье и т. д.). для поиска товаров по их изображениям в интернет-магазинах, для извлечения изображений в геоинформационных системах (система сбора, хранения, анализа и графической визуализации пространственных данных и связанной с ними информации о необходимых объектах), для систем биометрической идентификации (система распознавания людей по одной или более физических или поведенческих черт), для специализированного поиска изображений в социальных сетях (например, поиска лиц людей, привлекательных для пользователя) и т. д., вплоть до поиска изображений в Интернете.

Распознавание объектов стольких классов сейчас немыслимо без привлечения методов машинного обучения в область компьютерного зрения. Одно из крайне популярных направлений здесь — сети глубокого обучения, предназначенные для автоматического построения многоуровневых систем признаков, по которым происходит дальнейшее распознавание. Востребованность этого направления видна по фактам приобретения различных стартапов такими корпорациями, как Google и Facebook. Так, корпорацией Google в 2013 г. была куплена фирма DNNresearch, а в начале 2014 г. — стартап DeepMind.

.

1 АНАЛИЗ ТЕХНИЧЕСКОГО ЗАДАНИЯ

 

В соответствии с техническим заданием необходимо разработать программный комплекс, способный в реальном времени производить анализ каждого кадра видеопотока, обнаруживать одно или несколько лиц, глаза человека, выделяя их геометрическими фигурами, осуществлять пересчет геометрической модели целеуказателя и изменение координат целуказателя в соответствие с положением глаз человека-оператора. Так же был разработан интерфейс для программы. Для реализации данного программного комплекса была выбрана библиотека с открытым исходным кодом OpenCV (от англ. Open Source Computer Vision Library), а как метод распознавания был выбран метод Виолы-Джонса.

OpenCV – библиотека компьютерного зрения с открытым исходным кодом. Библиотека написана на C и C++, работает под Linux, Windows и Mac OS X. Происходит активная разработка интерфейсов для Python, Ruby, MATLAB и других языков.

Эта библиотека очень популярна за счёт своей открытости и возможности бесплатно использовать как в учебных, так и коммерческих целях.

2 ОПИСАНИЕ МЕТОДА VIOLA-JONES

 

Хорошим примером задачи реального времени, которая находит применение во многих областях, является обнаружение какого-либо объекта на изображении. Таким объектом зачастую является лицо человека. На данный момент существует огромное разнообразие подходов для обнаружения лиц. Метод, предложенный Виолой и Джонсом в 2001 году, стал настоящим прорывом в этой области. Этот метод приобрел большую популярность благодаря высокой точности и серьезной теоретической основе.

Основные принципы, на которых основан метод, таковы [2]:

− используются изображения в интегральном представлении, что позволяет вычислять быстро необходимые объекты;

− используются признаки Хаара, с помощью которых происходит поиск нужного объекта (в данном контексте, лица и его черт);

− используется бустинг (от англ. Boost – улучшение, усиление) для выбора наиболее подходящих признаков для искомого объекта на данной части изображения;

− все признаки поступают на вход классификатора, который даёт результат «верно» либо «ложь»;

− используются каскады признаков для быстрого отбрасывания окон, где не найдено лицо.

Обучение классификаторов идет очень медленно, но результаты поиска лица очень быстры, именно поэтому был выбран данный метод распознавания лиц в видеопотоке. Виола-Джонс является одним из лучших по соотношению показателей эффективность распознавания/скорость работы. Также этот детектор обладает крайне низкой вероятностью ложного обнаружения лица. Алгоритм даже хорошо работает и распознает черты лица под небольшим углом, примерно до 30 градусов. При угле наклона больше 30 градусов процент обнаружений резко падает. Рассмотрим подробно принципы, на которых основан алгоритм Виолы-Джонса. Данный метод в общем виде ищет лица и черты лица по общему принципу сканирующего окна.

 

2.1 Принцип сканирующего окна

 

В общем виде, задача обнаружения лица и черт лица человека на цифровом изображении выглядит именно так: имеется изображение, на котором есть искомые объекты. Оно представлено двумерной матрицей пикселей размером w*h, в которой каждый пиксель имеет значение:

− от 0 до 255, если это черно-белое изображение;

− от 0 до 2553, если это цветное изображение (компоненты R, G, B).

в результате своей работы, алгоритм должен определить лица и их черты и пометить их – поиск осуществляется в активной области изображения прямоугольными признаками, с помощью которых и описывается найденное лицо и его черты:

 

rectanglei = {x, y, w, h, a}, (2.1)

 

где x, y – координаты центра i - го прямоугольника;

w – ширина;

h – высота;

a – угол наклона прямоугольника к вертикальной оси изображения.

Иными словами, применительно к рисункам и фотографиям используется подход на основе сканирующего окна (scanning window): сканируется изображение окном поиска (так называемое, окно сканирования), а затем применяется классификатор к каждому положению. Система обучения и выбора наиболее значимых признаков полностью автоматизирована и не требует вмешательства человека, поэтому данный подход работает быстро.

Задача поиска и нахождения лиц на изображении с помощью данного принципа часто бывает очередным шагом на пути к распознаванию характерных черт, к примеру, верификации человека по распознанному лицу или распознавания мимики лица.

 

2.2 Интегральное представление изображений

 

Для того, чтобы производить какие-либо действия с данными, используется интегральное представление изображений в методе Виолы-Джонса. Одной из полезнейших особенностей интегрального представления является возможность очень быстро вычислить сумму пикселей произвольного прямоугольника (или любой другой фигуры, которую можно аппроксимировать несколькими прямоугольниками).

Интегральное представление изображения – это матрица, совпадающая по размерам с исходным изображением. В каждом элементе ее хранится сумма интенсивностей всех пикселей, находящихся левее и выше данного элемента. Элементы матрицы рассчитываются по формуле (2.2):

 

(2.2)

 

где I(i, j) — яркость пикселя исходного изображения.

Каждый элемент матрицы L(x, y) представляет собой сумму пикселей в прямоугольнике от (0, 0) до (x, y), т.е. значение каждого пикселя (x, y) равно сумме значений всех пикселей левее и выше данного пикселя (x, y). Расчет матрицы занимает линейное время, пропорциональное числу пикселей в изображении, поэтому интегральное изображение просчитывается за один проход.

Расчет матрицы возможен по формуле (2.3):

 

L(x, y) = I(x, y) – L(x-1, y-1) + L(x, y-1) + L(x-1, y) (2.3)

 

По такой интегральной матрице можно очень быстро вычислить сумму пикселей произвольного прямоугольника (см. рисунок 1), произвольной площади. Пусть в прямоугольнике ABCD есть интересующий нас объект D:

 

Рисунок 1 – Прямоугольная область изображения

 

Из рисунка 1 понятно, что сумму внутри прямоугольника можно выразить через суммы и разности смежных прямоугольников по формуле (2.4):

 

S(ABCD) = L(A) + L(С) — L(B) — L(D) (2.4)

 

Примерный просчет показан на рисунке 2:

 

Рисунок 2 – Примерный просчет пикселей произвольного прямоугольника

 

Признак — отображение f: X => Df, где Df — множество допустимых значений признака. Если заданы признаки f1, …, fn, то вектор признаков x = (f1(x), …, fn(x)), называется признаковым описанием объекта x∈ X. Признаковые описания допустимо отождествлять с самими объектами. При этом множество X = Df1* …* Dfn называют признаковым пространством.

Признаки делятся на следующие типы в зависимости от множества Df:

− бинарный признак, Df = {0, 1};

− номинальный признак: Df — конечное множество;

− порядковый признак: Df — конечное упорядоченное множество;

− количественный признак: Df — множество действительных чисел.

Естественно, бывают прикладные задачи с разнотипными признаками, для их решения подходят далеко не все методы.


 

2.3 Признаки Хаара

 

Признаки Хаара - признаки цифрового изображения, используемые в распознавании образов. Признаки Хаара использовались в первом детекторе лиц, работающем в реальном времени.

Исторически сложилось так, что алгоритмы, работающие только с интенсивностью изображения (например, значение RGB в каждом пикселе), имеют большую вычислительную сложность.. Признак Хаара состоит из смежных прямоугольных областей. Они позиционируются на изображении, далее суммируются интенсивности пикселей в областях, после чего вычисляется разность между суммами. Эта разность и будет значением определенного признака, определенного размера, определенным образом спозиционированного на изображении.

Для примера рассмотрим базу данных с человеческими лицами. Общим для всех изображений является то, что область в районе глаз темнее, чем область в районе щек. Следовательно, общим признаком Хаара для лиц является 2 смежных прямоугольных региона, лежащих на глазах и щеках.

На этапе обнаружения в методе Виолы-Джонса окно установленного размера движется по изображению, и для каждой области изображения, над которой проходит окно, рассчитывается признак Хаара. Наличие или отсутствие предмета в окне определяется разницей между значением признака и обучаемым порогом. Поскольку признаки Хаара мало подходят для обучения или классификации (качество немного выше чем у случайной нормально распределенной величины), для описания объекта с достаточной точностью необходимо большее число признаков. Поэтому в методе Виолы-Джонса признаки Хаара организованы в каскадный классификатор.

Ключевой особенностью признаков Хаара является наибольшая, по сравнению с остальными признаками, скорость. При использовании интегрального представления изображения, признаки Хаара могут вычисляться за постоянное время (примерно 60 процессорных инструкций на признак из двух областей).

В стандартном методе Виолы – Джонса используются прямоугольные признаки, изображенные на рисунке 3, они называются примитивами Хаара.

Рисунок 3 – Признаки Хаара.

 

В расширенном методе Виолы – Джонса, использующемся в библиотеке OpenCV используются дополнительные признаки, показанные на рисунке 4:

 

Рисунок 4 – Дополнительные признаки Хаара

 

Вычисляемым значением такого признака будет:

 

F = X-Y, (2.5)

 

где X – сумма значений яркостей точек закрываемых светлой частью признака,

Y – сумма значений яркостей точек закрываемых темной частью признака.

Для их вычисления используется понятие интегрального изображения, рассмотренное выше. Признаки Хаара дают точечное значение перепада яркости по оси X и Y соответственно.

Алгоритм сканирования окна с признаками выглядит так:

1. есть исследуемое изображение, выбрано окно сканирования, выбраны используемые признаки;

2. далее окно сканирования начинает последовательно двигаться по изображению с шагом в 1 ячейку окна (допустим, размер самого окна есть 24*24 ячейки);

3. при сканировании изображения в каждом окне вычисляется приблизительно 200 000 вариантов расположения признаков, за счет изменения масштаба признаков и их положения в окне сканирования;

4. сканирование производится последовательно для различных масштабов;

5. масштабируется не само изображение, а сканирующее окно (изменяется размер ячейки);

6. все найденные признаки попадают к классификатору, который «выносит вердикт».

В процессе поиска вычислять все признаки на маломощных настольных ПК просто нереально. Следовательно, классификатор должен реагировать только на определенное, нужное подмножество всех признаков. Совершенно логично, что надо обучить классификатор нахождению лиц по данному определенному подмножеству. Это можно сделать, обучая вычислительную машину автоматически.

Обучение машины — это процесс получения модулем новых знаний.

Данный процесс входит в концепцию и технологию под названием Data mining (извлечение информации и интеллектуальный анализ данных), куда входят помимо Машинного обучения такие дисциплины, как Теория баз данных, Искусственный интеллект, Алгоритмизация, Распознавание образов и прочие. Машинное обучение в методе Виолы-Джонса решает такую задачу как классификация.


 

2.4 Обучение классификатора в методе Виолы-Джонса

 

В контексте алгоритма, имеется множество объектов (изображений), разделённых некоторым образом на классы. Задано конечное множество изображений, для которых известно, к какому классу они относятся (к примеру, это может быть класс «фронтальное положение носа»). Это множество называется обучающей выборкой. Классовая принадлежность остальных объектов не известна. Требуется построить алгоритм, способный классифицировать произвольный объект из исходного множества.

Классифицировать объект — значит, указать номер (или наименование класса), к которому относится данный объект.

Классификация объекта — номер или наименование класса, выдаваемые алгоритмом классификации в результате его применения к данному конкретному объекту.

Классификатор (classifier) — в задачах классификации это аппроксимирующая функция, выносящая решение, к какому именно классу данный объект принадлежит.

Обучающая выборка – конечное число данных. В машинном обучении задача классификации относится к разделу обучения с учителем, когда классы поделены. Распознавание образов по сути своей и есть классификация изображений и сигналов. В случае алгоритма Виолы-Джонса для идентификации и распознавания лица классификация является двухклассовой.

Постановка классификации выглядит следующим образом:

есть X – множество, в котором хранится описание объектов, Y – конечное множество номеров, принадлежащих классам;

между ними есть зависимость – отображение Y*: X => Y. Обучающая выборка представлена Xm = {(x1, y1), …, (xm, ym)};

конструируется функция f от вектора признаков X, которая выдает ответ для любого возможного наблюдения X и способна классифицировать объект x∈ X. Данное простое правило должно хорошо работать и на новых данных.

2.5 Бустинг

 

Для решения проблемы данного, столь сложного обучения существует технология бустинга.

Бустинг — комплекс методов, способствующих повышению точности аналитических моделей. Эффективная модель, допускающая мало ошибок классификации, называется «сильной». «Слабая» же, напротив, не позволяет надежно разделять классы или давать точные предсказания, делает в работе большое количество ошибок. Поэтому бустинг (от англ. boosting – повышение, усиление, улучшение) означает дословно «усиление» «слабых» моделей – это процедура последовательного построения композиции алгоритмов машинного обучения, когда каждый следующий алгоритм стремится компенсировать недостатки композиции всех предыдущих алгоритмов. Идея бустинга была предложена Робертом Шапиром (Schapire) в конце 90-х годов. Идея состояла в том, что имея множество плохих (незначительно отличающихся от случайных) алгоритмов обучения, получить один хороший. В основе такой идеи лежит построение цепочки (ансамбля) классификаторов, который называется каскадом, каждый из которых (кроме первого) обучается на ошибках предыдущего. Например, одни из первых алгоритмов бустинга Boost1 использовал каскад из 3-х моделей, первая из которых обучалась на всем наборе данных, вторая – на выборке примеров, в половине из которых первая дала правильные ответы, а третья – на примерах, где «ответы» первых двух разошлись. Таким образом, имеет место последовательная обработка примеров каскадом классификаторов, причем так, что задача для каждого последующего становится труднее. Результат определяется путем простого голосования: пример относится к тому классу, который выдан большинством моделей каскада.

Бустинг представляет собой жадный алгоритм построения композиции алгоритмов (greedy algorithm) — это алгоритм, который на каждом шагу делает локально наилучший выбор в надежде, что итоговое решение будет оптимальным. Бустинг над решающими деревьями считается одним из наиболее эффективных методов с точки зрения качества классификации. Во многих экспериментах наблюдалось практически неограниченное уменьшение частоты ошибок на независимой тестовой выборке по мере наращивания композиции. Более того, качество на тестовой выборке часто продолжало улучшаться даже после достижения безошибочного распознавания всей обучающей выборки. Это перевернуло существовавшие долгое время представления о том, что для повышения обобщающей способности необходимо ограничивать сложность алгоритмов. На примере бустинга стало понятно, что хорошим качеством могут обладать сколь угодно сложные композиции, если их правильно настраивать.

Математически бустинг объясняется так:

Наряду с множествами X и Y вводится вспомогательное множество R, называемое пространством оценок. Рассматриваются алгоритмы, имеющие вид суперпозиции:

 

(2.6)

где функция b: X → R называется алгоритмическим оператором;

функция C: R → Y –решающим правилом.

Многие алгоритмы классификации имеют именно такую структуру: сначала вычисляются оценки принадлежности объекта классам, затем решающее правило переводит эти оценки в номер класса. Значение оценки, как правило, характеризует степень уверенности классификации. Алгоритмическая композиция – алгоритмa: X → Y вида:

 

a(x) = C(F(b1(x),..., bT(x)), x ∈ X, (2.7)

где составленный из алгоритмических операторов bt: X→ R, t=1,..., T, корректирующей операции F: RT→ R и решающего правила C: R→ Y.

Базовыми алгоритмами обозначаются функции at(x) = C(bt(x)), а при фиксированном решающем правиле C — и сами операторы bt(x). Суперпозиции вида F(b1,..., bT) являются отображениями из X в R, то есть, опять же, алгоритмическими операторами.

В задачах классификации на два непересекающихся класса в качестве пространства оценок обычно используется множество действительных чисел. Решающие правила могут иметь настраиваемые параметры. Так, в алгоритме Виолы-Джонса используется пороговое решающее правило, где, как правило, сначала строится оператор при нулевом значении, а затем подбирается значение оптимальное. Процесс последовательного обучения базовых алгоритмов применяется, пожалуй, чаще всего при построении композиций.

Критерии останова могут использоваться различные, в зависимости от специфики задачи, возможно также совместное применение нескольких критериев:

- построено заданное количество алгоритмов T;

- достигнута заданная точность на обучающей выборке;

- достигнуто точность контрольной выборке не удается улучшить на протяжении последних нескольких шагов при определенном параметре алгоритма.

Развитием данного подхода явилась разработка более совершенного семейства алгоритмов бустинга AdaBoost (adaptive boosting – адаптированное улучшение), предложенная Йоавом Фройндом (Freund) и Робертом Шапиром (Schapire) в 1999 году, который может использовать произвольное число классификаторов и производить обучение на одном наборе примеров, поочередно применяя их на различных шагах.

Рассматривается задача классификации на два класса, Y = {− 1, +1}. К примеру, базовые алгоритмы также возвращают только два ответа − 1 и +1, и решающее правило фиксировано: C(b) = sign(b). Искомая алгоритмическая композиция имеет вид:

 

(2.8)

 

Функционал качества композиции Qt определяется как число ошибок, допускаемых ею на обучающей выборке:

 

(2.9)

 

где Wl= (w1, …, wl) – вектор весов объектов.

Для решения задачи AdaBoosting’а нужна экспоненциальная аппроксимация пороговой функции потерь [z< 0], причем экспонента Ez = e-z.

Плюсы AdaBoost:

- хорошая обобщающая способность. В реальных задачах практически всегда строятся композиции, превосходящие по качеству базовые алгоритмы. Обобщающая способность может улучшаться по мере увеличения числа базовых алгоритмов;

- простота реализации;

- собственные накладные расходы бустинга невелики. Время построения композиции практически полностью определяется временем обучения базовых алгоритмов;

- возможность идентифицировать объекты, являющиеся шумовыми выбросами. Это наиболее «трудные» объекты xi, для которых в процессе наращивания композиции веса wi принимают наибольшие значения.

Минусы AdaBoost:

- Бывает переобучение при наличии значительного уровня шума в данных. Экспоненциальная функция потерь слишком сильно увеличивает веса «наиболее трудных» объектов, на которых ошибаются многие базовые алгоритмы. Однако именно эти объекты чаще всего оказываются шумовыми выбросами. В результате AdaBoost начинает настраиваться на шум, что ведёт к переобучению. Проблема решается путём удаления выбросов или применения менее «агрессивных» функций потерь. В частности, применяется алгоритм GentleBoost;

- AdaBoost требует достаточно длинных обучающих выборок. Другие методы линейной коррекции, в частности, бэггинг, способны строить алгоритмы сопоставимого качества по меньшим выборкам данных;

- Бывает построение неоптимального набора базовых алгоритмов. Для улучшения композиции можно периодически возвращаться к ранее построенным алгоритмам и обучать их заново.

- Бустинг может приводить к построению громоздких композиций, состоящих из сотен алгоритмов. Такие композиции исключают возможность содержательной интерпретации, требуют больших объёмов памяти для хранения базовых алгоритмов и существенных временных затрат на вычисление классификаций.

- В наши дни подход усиления простых классификаторов является популярным и, вероятно, наиболее эффективным методом классификации за счёт высокой скорости и эффективности работы и относительной простоты реализации.

 

2.6 Каскадная модель сильных классификаторов

 

Объединение сильных классификаторов в каскадную модель. При объединении слабых анизотропных классификаторов в один большой сильный классификатор детектирующая способность повышается, но при этом повышается и время принятия решения. В некоторых случаях время, помимо качества распознавания, является ключевым фактором. Для этого случая предлагается построить каскадную модель из небольших сильных классификаторов, позволяющую повысить скорость детектирования, не ухудшая качество.

Каскадная модель сильных классификаторов – это дерево принятия решений, где каждый узел дерева построен таким образом, чтобы детектировать почти все интересующие образы и отклонять некоторую часть регионов, не являющуюся образами. Помимо этого, узлы дерева размещены таким образом, что чем ближе узел находится к корню дерева, тем из меньшего количества анизотропных гауссовых примитивов он состоит и тем самым требует меньшего времени на принятие решения. Данный вид каскадной модели хорошо подходит для обработки изображений, на которых общее количество детектируемых образов мало. В этом случае метод может быстрее принять решение о том, что данный регион не содержит образ, и перейти к следующему. Пример каскадной модели показан на рисунке 5:

Сложность обучения таких каскадов равна О(xyz), где применяется x этапов, y примеров и z признаков.

Далее, каскад применяется к изображению:

− работа с «простыми» классификаторами – при этом отбрасывается часть «отрицательных» окон;

− положительное значение первого классификатора запускает второй, более приспособленный и так далее;

− отрицательное значение классификатора на любом этапе приводит к немедленному переходу к следующему сканирующему окну, старое окно отбрасывается;

− цепочка классификаторов становится более сложной, поэтому ошибок становится намного меньше.

 

Рисунок 5 – Каскад модели сильных классификаторов

 

Для тренировки такого каскада потребуются следующие действия:

задаются значения уровня ошибок для каждого этапа (предварительно их надо количественно просмотреть при применении к изображению из обучающего набора) – они называются detection и false positive rates – надо чтобы уровень detection был высок, а уровень false positive rates низок;

добавляются признаки до тех пор, пока параметры вычисляемого этапа не достигнут поставленного уровня, тут возможны такие вспомогательные этапы, как:

1. тестирование дополнительного маленького тренировочного набора;

порог AdaBoost умышленно понижается с целью найти больше объектов, но в связи с этим возможно большее число неточных определений объектов;

2. Если false positive rates остается высоким, то добавляется следующий этап или слой;

ложные обнаружения в текущем этапе используются как отрицательные уже на следующем слое или этапе.

В этой главе были рассмотрены принципы метода Виола-Джонса.


 

3 СИНТЕЗ АЛГОРИТМОВ РАБОТЫ

 

Целью данной работы является создание программного комплекса, способного в реальном времени производить анализ каждого кадра видеопотока, производить поиск лица и глаз, выделяя искомые объекты геометрическими фигурами, рисовать целеуказатель, с изменением его положения на картинке в зависимости от направления взгляда человека.

Далее приведен основной алгоритм работы программного комплекса:

− получение видеопотока от web-камеры

− получить картинку (изображение) с камеры

− предварительная подготовка данных, то есть преобразование изображения в серых тонах и выравнивание гистограмм (яркости)

− поиск лиц и глаз на полученном изображении

− выделение лиц и глаз геометрическими фигурами

− рисование целеуказателя, с изменением его координат в зависимости от направления взгляда человека.


 

3.1 Алгоритм программы

Рисунок 6 – Функциональная блок-схема алгоритма программы

3.2 Описание алгоритма программы

 

1. При открытии главного окна программы, выводится картинка в область для рисования и вычисляется центр этой области. Полученные координаты являются начальной позицией курсора.

2. Чтобы получить доступ к камере, используем функцию cvCreateCameraCapture, если камеры не обнаружено, то выходим из программы. Это демонстрирует фрагмент кода:

 

//-- 2. Read the video stream

capture = cvCreateCameraCapture(0);

if (capture == NULL) // если камера не обнаружена, то выйти

{

printf(" (!)Don't open camera -- Exit");

return -1;

 

3. Далее необходимо из полученного видеопотока, прочитать кадр и мы это реализуем с помощью функции cvQueryFrame(). Это демострирует фрагмент кода:

 

frame = cvQueryFrame(capture); // Читаем кадр из файла.

//-- 3. Apply the classifier to the frame

if (! frame.empty()) // если удалось получить кадр из видеопотока

 

4. Вызываем подпрограмму обнаружения и отображения, которая и ищет на изображении искомые объекты, выделяет их и выводит картинку. Алгоритм и листинг этой программы описан в подразделе 2.3, 2.4

5. Далее нам необходимо считывание с клавиатуры, чтобы остановить работу программы, когда нам понадобится. Это происходит так: программа ждет 33 миллисекунды, и если кнопка ESC, то продолжаем цикл, но если была нажата клавиша ESC, прекращаем работу цикла. 33 миллисекунды дает задержку для просмотра 30 кадров в секунду. Это показывает фрагмент кода:

char c = cvWaitKey(30);

if (c == 27) { break; } // ESC для выхода.

 

6. Если же программа завершается, то нам надо очистить память выделенную под Capture. Это делается помощью функции cvReleaseCapture.


 

3.3
Алгоритм работы подпрограммы обнаружения и отображения

Рисунок 7 – Функциональная блок-схема алгоритма подпрограммы обнаружения и отображения

3.4 Описание алгоритма работы подпрограммы обнаружения и отображения

 

1. В инициализации переменных создаем вектор, который описывает область с обнаруженными объектами, и создаем переменную, которая будет хранить черно-белый кадр

2. Дальше будет этап предобработки, а именно конвертация цветного изображения в черно-белое и выравнивание гистограмм. Для этого используем этот фрагмент кода:

 

cvtColor(frame, frame_gray, CV_BGR2GRAY)

equalizeHist(frame_gray, frame_gray);

 

3. Подпрограмма Detect faces, которая осуществляет поиск лиц на черно-белом изображении frame_gray и сохранением их в вектор faces. Работа самого поиска осуществляется с помощью функции detectMultiScale(), в параметрах которой мы указываем: где искать лицо, куда его сохранять, задаем параметры точности поиска и задаем минимальный размер размер подобласти, с которой начинается поиск объекта. Фрагмент кода демонстрирует работу функции detectMultiScale():

 

face_cascade.detectMultiScale(

frame_gray, // где ищем

faces, // куда сохраняем

1.1, // scale-параметр

6, // минимальное кол-во соседей,

0 | CV_HAAR_SCALE_IMAGE,

Size(64, 64));

 

4. Когда лицо будет обнаружено, мы находим центр лица и рисуем овал.

5. Поиск глаз работает по такому же принципу, что поиск лица, отличие лишь в том, что поиск лица ведется на всем изображении, а поиск глаз ведется из вектора faces, который уже содержит найденное лицо.

6. Если глаз был найден, то мы присваиваем предыдущему центру глаз текущий и сохраняем координаты глаза в текущий центр глаз.

7. Далее необходимо выделить глаз геометрической фигурой - кругом. Для этого необходимо: найти центр глаз i-го глаза, обнаруженного на i-том лице, далее найдем радиус круга и нарисуем сам круг. Листинг этого фрагмента:

 

for (int j = 0; j < eyes.size(); ++j)

{

// Находим центр глаз

cv:: Point center(faces[0].x + eyes[j].x + eyes[j].width*0.5, faces[0].y + eyes[j].y + eyes[j].height*0.5);

currСntrEye.X += center.x; currСntrEye.Y += center.y;

// Находим радиус круга

int radius = cvRound((eyes[j].width + eyes[j].height)*0.25);

// Рисуем круг

circle(frame, center, radius, cv:: Scalar(255, 0, 0), 4, 8, 0);

}

 

8. Если количество глаз неравно нулю, то центр глаз делим на количество найденных глаз, так как глаза два, а прицел один, нам нужно найти центр глаз двух глаз (центральное зрение).

9. Далее обновляем область рисования с помощью функции Refresh().

10. Для вывода кадра на экран используем функцию imshow ()


 

4 РАЗРАБОТКА ПРОГРАММНОГО РЕШЕНИЯ

 

4.1 Выбор среды для разработки

 

Для распознавания объектов (лиц, глаз) в видеопотоке в реальном времени, я выбрал один из наиболее распространенных и универсальных языков - C++. C++ является объектно-ориентированным языком с огромными возможностями программирования, с использованием библиотеки OpenCV. В качестве среды разработки была выбрана Visual Studio 13.

 

4.2 Разработка интерфейса программы

 

Перед разработкой интерфейса передо мной стоял вопрос с помощью чего его разрабатывать: Windows API –набор базовых функций интерфейсов для программирования приложений операционных систем семейств Microsoft Windows или Windows Forms - интерфейс программирования приложений(API), отвечающий за графический интерфейс пользователя и являющийся частью Microsoft.NET Framework. Windows Forms имеет собственную модель программирования, которая более совершеннее, чем модели, основанные на Win32 API или MFC, и они выполняются в управляемой среде.NET Common Language Runtime (CLR). Для создания простого интерфейса Windows Forms идеальный вариант, так как очень удобен и для работы с ним не нужно обладать какими-либо специальными навыками, в отличие от Windows API.

Приступаем к описанию интерфейса.На форме:

groupBox ’а,

− 12 label ’ов,

− 2 кнопки: «Старт», «Выход»,

ToolStripMenu - Главное меню.

pictureBox - область для вывода статической картинки

− Две линии, образующие целеуказатель

Большую часть интерфейса занимает pictureBox, который нам нужен для выведения статической картинки. Выбор пал на pictureBox, потому дает возможность рисовать в нем, что необходимо для рисования целеуказателя.

Статическая картинка появляется при загрузке интерфейса (формы). Сразу же находится центр картинки и по центру рисуется целеуказатель.

1. Первый groupBox содержит десять label ’ов для выведения контрольной информации:

– ширину и высоту окна, на которое выводится изображение;

– информацию о количестве обнаруженных лиц и глаз;

– количество кадров в секунду;

– Смещение зрачка по оси X по оси Y.

2. Второй groupBox содержит меню управления: кнопки «Старт» и «Выход».

3. Кнопка «Старт» запускает саму программу, которая ищет камеру и получает к ней доступ, после чего начинает поиск искомых объектов и выделения их, а затем выводит изображение в окно, которое появляется после нажатия кнопки «Старт». Пример появляющегося окна показан на рисунке 8:

 

Рисунок 8 - Обнаружение лица в видеопотоке.

4. Кнопка «Выход» прекращает работу программы и выключает интерфейс.

5. Главное меню содержит вкладку «Файл» и «Помощь». Вкладка «Файл» содержит вкладку «Выход», которая так как и кнопка «Выход» прекращает работу программы и закрывает интерфейс.

Пример внешнего вида интерфейса показан на рисунке 9:

 

Рисунок 9 - Интерфейс программы

 

4.3 Библиотека OpenCV

OpenCV – библиотека компьютерного зрения с открытым исходным кодом. Библиотека написана на C и C++, работает под Linux, Windows и Mac OS X. Происходит активная разработка интерфейсов для Python, Ruby, MATLAB и других языков.

OpenCV направлена на выполнение задач реального времени. Она написана на оптимизированном C и может работать с многоядерными процессорами. Одной из целей OpenCV является предоставление простой в использовании библиотеки машинного зрения, которая помогает создавать достаточно сложные приложения в короткие сроки. OpenCV содержит в себе более 500 функций которые охватывают много областей, включая контроль качества на производстве, системы безопасности, обработку изображений в медицине, пользовательские интерфейсы, стереоскопическое зрение и роботостроение. Поскольку компьютерное зрение и обучение машин идут “рука об руку”, OpenCV также включает в себя библиотеку общего назначения MLL (Machine Learning Library, Библиотека Обучения Машин). Эта под-библиотека решает задачи статистического распознавания образов и кластеризации. MLL очень полезна для решения сложных задач, связанных с компьютерным зрением, но является достаточно общей, для того чтобы решать большинство задач обучения машин [3].

Эта библиотека очень популярна за счёт своей открытости и возможности бесплатно использовать как в учебных, так и коммерческих целях.

Фактически, OpenCV – это набор типов данных, функций и классов для обработки изображений алгоритмами компьютерного зрения.

 

4.4 Описание модулей OpenCV

 

Библиотека OpenCV состоит из нескольких модулей:

Модуль CXCORE – ядро, содержит:

- базовые структуры;

- матричную алгебру;

- алгоритмы работы с памятью;

- алгоритмы преобразования типов;

- алгоритмы для обработки ошибок;

- функции для записи/чтения XML файлов;

- функции для работы с 2D графиками.

CV – модуль обработки изображений, работа с компьютерным зрением, содержит:

- функции для работы с изображениями (преобразование, фильтрация и т.д.);

- функции для анализа изображений (поиск контуров, гистограммы и т.д.);

- алгоритмы анализа движений, слежение за объектами;

- алгоритмы распознания объектов (лиц, предметов);

- алгоритмы для калибровки камер.

В модуль ML входит машинное оубчение:

- функции для классификации и анализа данных.

HighGUI – модуль для создания пользовательского интерфейса, отвечает за:

- создание окон;

- вывод изображений;

- захват видео из файлов и камер;

- чтение/запись изображений.

CVCAM – захват видео с цифровых камер.

CVAUX – устаревшие функции:

- пространственное зрение;

- нахождение и описание черт лица;

- поиск стерео соответствий;

- описание текстур.


4.5 Подключение Библиотеки OpenCV

 

Для подключения библиотеки необходимо в главном меня открыть вкладку «Проект», в которой будет содержаться вкладка «Свойства: Project_name»

В появившемся окне выбираем вкладку «Свойства конфигурации», далее «Каталоги VC++», затем ищем следующие вкладки: «Каталоги включения», «Каталоги библиотек», «Каталоги исходного кода»;

В «Каталоги включения» необходимо прописать:

'C: \Programs\OpenCV\build\include\';

В «Каталоги библиотек» необходимо прописать:

'C: \Programs\OpenCV\build\x86\vc10\lib\';

Дальнейшее выполнять не обязательно:

В «Каталоги исходного кода» необходимо прописать:

'C: \Program Files\OpenCV\modules\core\src',

'C: \Program Files\OpenCV\modules\highgui\src',

'C: \Program Files\OpenCV\modules\ml\src'.

Далее необходимо прописать дополнительные зависимости. Для этого заходим в «Свойства конфигурации», далее «Компоновщик», потом «Ввод», затем «Дополнительные зависимости»:

'opencv_core242.lib'

'opencv_highgui242.lib'

'opencv_ml242.lib'

'opencv_video242.lib'

'opencv_imgproc242.lib'.


 

5 КЛАССЫ И ФУНКЦИИ, ИСПОЛЬЗУЕМЫЕ В РАБОТЕ.

 

5.1 Матрицы и типы изображений

 

IplImage - это базовая структура, которую используют для кодирования изображений. Для работы с векторами в ОpenCV необходимо знать:

1. В ОpenCV не существует конструкции вектора. При возникновении необходимости вектора можно создать матрицу в одну строку или один столбец.

2. Матрица в ОpenCV немного отличается от обычной матрицы, а именно в том, что элементы матрицы могут быть не только целыми числами.

В разрабатываемой программе использовалась структура Mat, которая является производной от CvMat, и считается более современной и универсальной. В общем виде Mat – это универсальный класс для матриц действительных или комплексных чисел размерности n или многоканальных изображений, которая в дальнейшем вытеснит класс CvMat.

Структура Mat хранит получаемое изображение с камеры.

 

5.2 Класс CvCapture

 

CvCapture - структура содержит необходимую информацию для чтения кадров, приходящих из камеры или видео-файла. В зависимости от источника мы можем вызвать одну из следующих функций для её инициализации:

cvCreateFileCapture

cvCreateCameraCapture

Функция СvCreateFileCapture() создаёт и инициализирует структуру CvCapture для чтения из видео-файла. Данная функция принимает всего один аргумент – это имя видео файла. Ниже приведен пример вызова функции:

 

CvCapture* cvCreateFileCapture(const char* filename);

СvCreateCameraCapture() создаёт и инициализирует структуру CvCapture для чтения видео-потока с камеры, которая в качестве параметра принимает не название файла, а идентификатор камеры. Идентификатор показывает HighGUI, где искать камеру. Идентификатор - это тип, имеющийся у вас камеры. Значения, которые может принять идентификатор, описаны ниже:

CV_CAP_ANY;

CV_CAP_MIL;

CV_CAP_VFW;

CV_CAP_V4L;

CV_CAP_V4L2;

CV_CAP_FIREWIRE;

CV_CAP_IEEE1394;

CV_CAP_DC1394;

CV_CAP_CMU1394;

В большинстве случаев идентификатор не является обязательным, когда у вас только одна камера, для этого достаточно использовать константу CV_CAP_ANY. Также в функцию можно передать значение -1, тогда OpenCV выведет окно, позволяющее выбрать нужную камеру. Ниже приведен пример вызова функции:

CvCapture* cvCreateCameraCapture(int index);

 

С помощью cvGetCaptureProperty() можно задать свойства CvCapture. Значения идентификатора, которые может принимать cvGetCaptureProperty(), описаны в таблице 5.1:

Таблица 5.1 - Параметры cvGetCaptureProperty().

Константа Значение
CV_CAP_PROP_POS_MSEC Позиция в миллисекундах фильма с начала файла.

 

Продолжение таблицы 5.1

CV_CAP_PROP_POS_FRAME Позиция в фреймах (только для видео-файла).
CV_CAP_PROP_POS_AVI_RATIO Относительное положение в файле (0 – начало, 1 – конец).
CV_CAP_PROP_FRAME_WIDTH Ширина фреймов в видео-потоке (только для камеры).
CV_CAP_PROP_FRAME_HEIGHT Высота фреймов в видео-потоке (только для камеры).
CV_CAP_PROP_FPS Фреймовый показатель – частота кадров (только для камеры).
CV_CAP_PROP_FOURCC 4-х символьный код кодека (только для камеры).
CV_CAP_PROP_FRAME_COUNT Количество кадров в файле

 

cvQueryFrame осуществляет захват фрейма, декомпрессию и возвращает картинку. Эта функция является комбинацией функций cvGrabFrame и cvRetrieveFrame за один вызов. Функция cvGrabFrame() принимает указатель на CvCapture, и возвращает 1, если захват был успешен, и 0, если нет. cvGrabFrame() копирует изображение во внутренний буфер, недоступный для пользователя. Функция cvGrabFrame() получает необработанный кадр, чтобы как можно быстрее получить кадр.

После вызова cvGrabFrame(), можно сразу же вызывать cvRetrieveFrame(). Эта функция выполнит все необходимые преобразования и вернёт IplImage* на другой внутренний буфер, если же после будет вызвана функция cvGrabFrame(), то этот буфер будет перезаписан, поэтому если необходимо делать какие-то махинации над изображением, то его необходимо скопировать.

Освободить память CvCapture неё с помощью cvReleaseCapture(). Как и многие другие функции OpenCV для освобождения памяти, cvReleaseCapture() принимает указатель на указатель на CvCapture.

 

5.3 Класс CascadeClassifier

 

Класс, реализующий алгоритм Виолы – Джонса на основе каскада Хаара. Обучение проходит путем разделение на два типа образцов: отрицательные и положительные. Отрицательные образцы соответствуют необъектным изображениям. Положительные образцы соответствуют изображению с обнаруженными объектами.

Класс CascadeClassifier специализирован под обнаружение объектов.

Параметры CascadeClassifier:

filename - имя файла, из которого загружается классификатор.

CascadeClassifier:: empty проверяет: загружен ли классификатор.

CascadeClassifier:: load - загрузка классификатора из файла.

Параметры load:

filename - имя файла, из которого загружается классификатор. Файл может содержать старый классификатор Хаара, обученный приложением haartraining или новый каскад классификаторов, обученный приложением traincascade.

CascadeClassifier:: read - читает классификатор из хранилища файлов узла. Файл может содержать только новый каскадный классификатор (обучение приложений traincascade).

CascadeClassifier:: detectMultiScale - обнаруживает объекты различных размеров в исходном изображении. Обнаруженные объекты возвращаются, как список прямоугольников.

Параметры detectMultiScale:

cascade классификатор каскада Хаара. Каскад могжет быть загружен из XML- файла, используя функцию Load(). Когда каскад станет не нужен, отпустите его с помощью cvReleaseHaarClassifierCascade(& cascade)

image - Матрица типа CV_8U, содержащая изображение, на котором обнаружены объекты.

Objects - Вектор прямоугольников, где каждый прямоугольник содержит обнаруженный объект.

scaleFactor - параметр, определяющий на сколько уровней уменьшился размер изображения.

minNeighbors - параметр, определяющий сколько кандидатов. Каждый кандидат должен иметь прямоугольник, чтобы сохранить его.

MinSize – минимальная граница возможного размера объекта. Объекты меньше игнорируются.

MaxSize - максимально возможный размер объекта. Объекты больше игнорируются.


 

6 ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ

 

6.1 Обоснование актуальности и целесообразности разработки

 

Данная работа посвящена разработке программы, распознает лица и глаза, передвигая целеуказатель в зависимости от взгляда человека-оператора.

Данная программа выполняет:

– доступ к камере;

– обрабатывать изображение;

– осуществлять поиск лица и выделение его;

– осуществлять поиск глаз и выделение их;

– выводить на картинку, которая находит в интерфейсе программы, целеуказатель и менять его направление в зависимости от взгляда человека-оператора.

Программа имеет довольно незамысловатый интерфейс, с которым справиться ребенок. Интерфейс содержит всего две кнопки: «Старт» для получения видеопотока с камеры и выведения кадров, с уже найденными искомыми объектами и кнопка «Выход», которая прервет все операции и выйдет из программы. Из описанного выше становится ясно, что овладеть данной программой сможет каждый, кто пожелает. Пользователю необходимо иметь камеру, подключенную к компьютеру, а поиск и доступ к ней программа организует сама.

Программа не требует сверхмощного, высокопроизводительного компьютера и ищет объекты на удалении более 2 метров, но при этом ее результаты точны и количество погрешностей минимально. Оптимальное расстояние от камеры до человека 30 сантиметров.

В наши дни распознавание образов стало очень популярно. Например: пользователь в качестве пароля может использовать свое лицо, поставив программу, которая при успешном распознавании лица, автоматически войдет в систему. Эти продукты стремительно набирают темп.

Разработка необходима и актуальна, так как существующие программные продукты неточны в своих результатах либо предъявляют неслабые требования к вашему персональному компьютеру. Данный продукт предлагает оптимальные требования вашему персональному компьютеру, давая прекрасное качество распознавания, совмещая простоту и эргономичность.

 

6.2 Обоснование выбора аналога и критериев для сравнения

 

В качестве аналога был выбран нашумевший сервис How-Old.net от всемирно известной компании Microsoft. Данный сервис распознает пол и возраст по фотографии. Чтобы узнать результат, пользователь должен либо загрузить имеющуюся фотографию или сделать новый снимок, а сервис за несколько секунд определит ваш пол и возраст. Однако, результаты удивляют. Сервис дает очень большую погрешность, иногда доводя до смеха, чем и стала знаменита.

Разрабатываемая программа и аналог схожи своим предназначением - распознаванием лица. Область применения, целевые функции и целевая аудитория обоих объектов одинаковы. Исходя из этого, можно сделать выводы, что выбранный аналог наиболее подходящий для сравнения.

На основании функциональных характеристик аналога и разработки были сформулированы следующие критерии для их сравнения:

− Качество распознавания.

− Способность распознавать лица в видеопотоке.

− Эргономичный и удобный интерфейс.

− Надежность.

− Скорость обработки данных.


 

6.3 Расчет технико-экономических показателей разработки

 

Выполним расчет технико-экономических показателей разработки по выбранным критериям. Расчеты будут представлены в таблице 6.2. Форма вычисления интегрального технического показателя выбирается аддитивная, так как выбранные критерии не имеют нулевых численных значений, как для разработки, так и для аналога.

Формула расчета интегрального технического показателя:

 

, (6.10)

 

где – весовой коэффициент i-го параметра;

– значение i-го параметра.

Рассчитаем численное значение весовых коэффициентов каждого параметра. Для этого применим метод экспертных оценок с позиций важности и значимости этих параметров для потребителя. Рассчитанные значения весовых коэффициентов указаны в таблице 6.2. Каждый показатель оценивается по 10-бальной шкале. Затем нормированием n полученных получим весовые коэффициенты :

 

, (6.11)

 

при этом

 

Таблица 6.2 – Бальная оценка новой разработки и аналога

Параметры Оценка важности параметра Весовой коэффициент важности Число баллов Значимость
новая аналог новая аналог
Качество распознавания   0, 3     2, 7 1, 8
Эффективность   0, 2     1, 6 1, 4
Эргономичный интерфейс   0, 1     0, 9 0, 9
Надежность   0, 2     1, 6  
Скорость обработки данных   0, 2     1, 8 1, 4
Итого:         8, 6 6, 5

 

Расчет интегрального показателя качества K:

Как видно интегральный показатель качества свидетельствует о том, что разрабатываемый продукт превосходит свой аналог более чем в 1, 3 раза.

Новая программа обладает преимуществами по таким параметрам, как:

- Качество распознавания

- Надежность

- Скорость обработки данных

6.4 Расчет единовременных затрат на этапе разработки.

 

Для выполнения расчета затрат на этапе проектирования определим продолжительность каждой работы. Продолжительность работ определяется по экспертным оценкам






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.