Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Теория признаков распознавания образов на основе стохастической геометрии и функционального анализа

..pdf
Скачиваний:
5
Добавлен:
12.11.2023
Размер:
12.16 Mб
Скачать

232 Гл. 10. Распознавание сложноструктурированных изображений

(в случае достаточной скорости работы оперативной памяти) ожидае­ мый прирост производительности составит 272% (или время выполне­ ния программы сократиться в 3,6 раза).

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

10.6. Разработка многопоточной системы распознавания образов на основе стохастической

геометрии и функционального анализа для платформы Microsoft.Net

Средства разработки программного обеспечения постоянно совер­ шенствуются. При развитии средств разработки преследуются две главные цели: упростить (ускорить и тем самым удешевить) процесс создания программ и обеспечить эффективное использование совре­ менных аппаратных и программных средств (ресурсы операционной системы).

Использование современных средств программирования является предпочтительным с точки зрения дальнейшего развития программного продукта [27].

Одной из последних концепций программирования от корпорации Microsoft стала разработка программ для платформы .Net Framework («Дотнет Фреймворк»), Особенностью данной платформы является применение компиляции программы во время выполнения, что теоре­ тически делает программу независимой от аппаратной платформы и операционной системы (на сегодняшний день существует возможность запускать приложения .Net в операционной системе Linux, используя свободно распространяемый пакет Mono).

Набор библиотек, входящий в состав .Net Framework является неза­ висимым от языка программирования. После выпуска данной платфор­ мы корпорацией Microsoft были обновлены языки C++ и Visual Basic, а так же выпущен новый язык С#, который создавался специально для работы с .Net Framework. Особенностью данного языка является исключительное соответствие концепции объектно-ориентированного программирования и наиболее полное использование возможностей платформы .Net. Именно по этим причинам язык C # был выбран для разработки новой системы генерации признаков на основе стохастиче­ ской геометрии.

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

Хорошо известна проблема целостности данных. Если несколько потоков используют один объект для хранения данных, то может возникнуть конфликт при их обновлении. Большинство входящих в состав .Net Framework классов являются thread save, т. е. обращение

10.6. Разработка многопоточной системы распознавания образов 233

к их полям и методам из множества потоков не приводит к конфлик­ ту. Для обеспечения синхронизации процессов существуют простые программные конструкции. Данные нововведения в сочетании с общей областью памяти в пределах одного домена приложения обеспечивают значительное упрощение реализации взаимодействия между потоками. Передача ссылочных данных отличается крайне низким «расходом» системных ресурсов.

Изменения коснулись и процедур порождения и удаления потоков. Теперь разработчику предлагаются два способа создания многопоточ­ ных приложений. «Классический» способ создания потока значительно упрощен и подразумевает использование всего лишь одного встро­ енного пространства имен System.Threading. В нем предусмотрены все средства для создания, мониторинга, управления приоритетами и удаления потоков. Решение данных задач связано с вызовом методов классов пространства имен System.Threading.

Как известно, на операции создания и удаления потоков требуется определенное машинное время, связанное с особенностями работы операционной системы. Для ускорения данных операций в .Net преду­ смотрен встроенный пул потоков, который позволяет использовать до 25 пользовательских потоков на один процессор. Применение данной технологии несколько ограничивает возможности по управлению пото­ ками, но значительно сокращает время на их создание и удаление.

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

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

Начнем рассмотрение системы классов с наиболее сложного клас­ са — планировщика, назовем его scheduler. Основные задачи, возло­ женные на данный класс:

1) порождение потоков и управление их работой;

2) распределение данных между потоками и объединение, получен­ ных результатов;

3)получение исходных данных,

4)передача результатов.

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

Рассмотрим подробнее методы и поля данного класса.

Метод begin_work() запускает процесс генерации признаков.

Метод stop_work() прерывает процесс генерации признаков и уничтожает все порожденные потоки.

234Гл. 10. Распознавание сложноструктурированных изображений

Метод set_proc_num() устанавливает количество процессоров в системе и соответственно количество потоков, которые порождает дан­ ный класс для проведения вычислений.

Метод get_next_coord_set() предназначен для передачи следую­ щих данных для построения сканирующих прямых. Если все данные уже обрабатываются, то возвращается null, который является сигналом потоку к завершению работы.

Метод get_cur_t() предназначен для взаимодействия с потоками. Он возвращает текущий функционал Т.

Метод get_nexe_layer() предназначен для передачи в поток следу­ ющего необработанного слоя сканирующих прямых. Если все данные уже обрабатываются, то возвращается null, который является сигналом потоку к завершению работы.

Метод get_next_pq_tree() возвращает множество функционалов, среди которых функционал Р — один и тот же, а функционалы 0 — различны. Данный метод предназначен для взаимодействия с пото­ ками. Если все данные уже обрабатываются, то возвращается null, который является сигналом потоку к завершению работы.

Поле cur_state является наиболее важным для работы данного класса. В нем сохраняются все данные о состоянии работы, ведется учет данных, которые уже обработаны.

Поле db является ссылкой на объект класса db_work, который предназначен для работы с базой данных. В данном случае использу­ ются методы для сохранения результатов вычислений в базе.

• Поле p jist является ссылкой на объект класса patternjist, ко­ торый предназначен для хранения изображений и дополнительной информации о них. В данном классе используются методы получения изображений.

Поле set хранит информацию о настройках системы.

Поле t_list является ссылкой на объект класса tripletjist, кото­ рый предназначен для хранения и обработки триплетных признаков и

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

• Поле trace_layers является ссылкой на объект класса traces, пред­ назначенного для сохранения результатов вычисления Т функционала и будет подробнее рассмотрено ниже.

Как видно из описания, большинство классов, входящих в со­ став планировщика, предназначены для обработки начальных данных. Наибольший интерес представляет класс traces, перечень процедур которого представлен на рис. 10.16 (см. цветную вклейку).

Особенностью данного класса является наличие двух событий: on_layers_finished и on_trace_finished, которые возникают при завер­ шении построения сканирующих прямых и завершении расчета Т функционала соответственно. Методы get_all_layers() и get_trace() предназначены для получения результатов вычисления сканирующих прямых и трейс-матрицы.

Кратко рассмот рим логику работ ы программы. Когда все ис­ ходные данные подготовлены (множество изображений, множество

10.6. Разработка многопоточной системы распознавания образов 235

триплетных признаков и настройки системы) и сохранены в соот­ ветствующих классах, можно запустить планировщик, вызвав метод begin_work(). В соответствии с заданным количеством процессоров, планировщик создает несколько процессов. На первом этапе осуществ­ ляется построение множества сканирующих прямых. Когда все прямые будут построены, потоки уничтожаются, а поле tracejayers генери­ рует событие on_layers_finished. После данного события планировщик создает потоки, вычисляющие Т функционал. После завершения вы­ числений, возникает событие on_trace_finished. На последнем этапе, планировщик передает потокам множество функционалов, заданных для данного Т функционала. Контроль завершенности данной опера­ ции осуществляется по свойству потоков is_alive(), которое, с целью увеличения производительности, проверяется только после окончания передачи всех исходных данных. Сохранение результатов происходит непосредственно в базе данных. По окончании обработки всего дерева функционалов начинается вычисление следующего Т функционала.

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

Представленная выше реализация распределенных вычислений яв­ ляется далеко не единственной возможной. Она рассчитана для ком­ пьютеров с объемом оперативной памяти не менее 1 Гбайт при размере изображения не более чем 800 х 600 пикселей. Если стоит задача снизить требования к ресурсам компьютера, то, разделив процедуру вычисления функционалов на множество подзадач, можно значительно улучшить данный показатель, несколько проиграв в производительно­ сти.

Созданная программа написана на одном из самых современных языков — C # и отличается применением многопоточных вычислений, которое позволило значительно ускорить её выполнение. Применение новейших технологий программирования делает работу программы эф­ фективной на наиболее современных компьютерах, работающих под управлением операционных систем Microsoft Windows ХР и Windows Vista.

Оценка эффективности многопоточных вычислений — задача до­ статочно трудоемкая и неоднозначная. Неоднозначность связана с выбором однопоточного приложения и исходных данных. Требования к разработке современного пользовательского интерфейса вынуждают разработчика выносить операции с длительным временем выполнения в отдельный поток, создавая тем самым дополнительный расход систем­ ных ресурсов для контроля завершенности работы, что не позволяет оценить эффективность реализации данной операции в многопоточном

236 Гл. 10. Распознавание сложноструктурированных изображений

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

ний, количества сканирующих

прямых, количества

Т функционалов

и дерева подчиненных Р и 0

функционалов, что

легко объяснить

увеличением времени выполнения вычислений при том же количестве операций передачи данных между потоками.

Сравнение времени выполнения одно- и многопоточного приложе­ ний проводилось с гистологическими изображениями, при стандартных настройках системы и вычислении 65000 признаков; вычисления про­ водились на двуядерном процессоре Intel CoreDuo. Время выполнения многопоточного приложения было меньше в 1,86 раза.

Результат показывает эффективность применения многопоточных вычислений в приложении [27].

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

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

ГЛАВА 11

ПОИСК БИОМЕТРИЧЕСКОЙ ИНФОРМАЦИИ НА ОСНОВЕ СТОХАСТИЧЕСКОЙ ГЕОМЕТРИИ

ИФУНКЦИОНАЛЬНОГО АНАЛИЗА

11.1.Физиологические основы распознавания лица человека и архитектура поисковой системы

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

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

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

Впоследствии экспериментальные исследования А. Л. Ярбуса по психофизическим аспектам восприятия зрительной информации пока­ зали, что движения глаз сложны и включают нескольких компонент (форм движений): нистагмы; отдельные саккады; инверсионные нис­ тагмы; синусоидальные колебания низкой частоты (0,25-0,8 Гц, М = = 0,45Гц) и большой амплитуды (до 50-60°; М = 39,2°; а = 2,9);

238 Гл. 11. Поиск биометрической информации

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

Формы движений глаз ориентированы вдоль оси инверсии рети­ нального образа, а порядок чередования видов глазодвигательной ак­ тивности выглядит случайным.

Исследования по компьютерному распознаванию человеческих лиц, ассоциированные с физиологическими аспектами распознавания, по­ лучили развитие в работах научных школ Института автоматизации проектирования РАН и НИИ нейрокибернетики им. А. Б. Когана при Ростовском госуниверситете и наиболее полно освещены в публикаци­ ях [6, 7].

Согласно выводам [6] основная функция движения глаз при при­ стальном рассмотрении предмета (или его части) заключается в пере­ мещении оси зрения в зону наилучшего зрения (фовеа). В этой зоне в наибольшей степени сконцентрированы светочувствительные рецеп­ торы (колбочки) и рецептивные поля тонических корковых нейронов, анализирующих форму и т. п.

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

Ниже на рис. 11.1, а приведен «классический лев» А. Л. Ярбуса *, на рис. 1 1 .1,6 приводится запись движения глаза при рассматривании рис. 1 1 .1, а в течение двух минут.

Глаз фиксирует основные детали слабоконтрастного изображения, которые интерпретируются в работах [6, 7, 131] как наиболее ин­ формативные области изображения, они в дальнейшем используются для понимания изображений. Согласно [6], при осмотре человеческого лица, которое является слабоконтрастным изображением, точки фик­ сации взгляда концентрируются в областях глаз, носа, рта и контура лица. Очевидно, что детальная обработка не всего изображения, а пре­ имущественно наиболее информативных областей может значительно снизить вычислительные затраты биометрических систем, а удачное признаковое описание таких областей увеличит эффективность поиска и идентификации. В связи с этим сейчас большое внимание в области1

1 Рисунок выполнен В. А. Ватагиным, впервые опубликован в книге: Ярбус А. Л. Роль движения глаз в процессе зрения. — М .: Наука, 1965. —

166 с.