Структура системы распознавания образов реального времени / Прикладные вопросы распознавания образов / Recog.ru - Распознавание образов для программистов


Структура системы распознавания образов реального времени

Выбор структуры обусловлен классом системы распознавания образов (СРО) реального времени (РВ). Если предполагается строить гибкую систему РВ без обратной связи, то достаточно использовать один программный процесс и один поток, в котором в цикле будут формироваться данные (например, с видеокамеры) и передаваться на процедуру распознавания. Однако такой подход не исключает ситуации, когда программа зависнет или аварийно завершится, что неприемлемо в полностью автоматизированных системах.
В работе [1] была предложена структурная схема программной СРО РВ. Система должна состоять из отдельных модулей, каждый из которых может быть оформлен в виде процессов, потоков или библиотечных функций.
Программные системы РВ реализуются на соответствующих операционных системах, например, QNX Neutrino, Windows CE, или на обычных операционных системах (Windows, Linux) с расширениями РВ. Особенностью подобных операционных систем является поддержка вытеснения потоков, что позволяет полностью вытеснять потоки с меньшим приоритетом при поступлении более важных потоков. Наиболее высшим приоритетом должен обладать модуль контроля, поскольку он обладает правом принудительно завершать работу модулей распознавания. В качестве примера построения структуры была разработана программная имитационная модель, работающая на обычной версии Windows XP. Поскольку наиболее подвержены ошибкам и зависаниям модули распознавания, то они реализовывались в виде отдельных процессов, а модули управления, контроля и сбора и обработки данных – в виде отдельных потоков главного процесса модели (для удобства обмена данными внутри одного адресного пространства). Для взаимодействия потоков и процессов использовались мьютексы, являющиеся наиболее простым и эффективным механизмом синхронизации.
На рисунке 1 представлена структура алгоритма инициализации модели. Главный поток процесса модели последовательно создаёт потоки управления и генерации данных, предварительно создав и установив в 1 значения мьютексов Mutex_Management и Mutex_Data. Инициализация модуля управления включает в себя создание окна с помощью средств Win32 API, а в цикле обработки сообщений ожидаются события WM_COPYDATA от процессов распознавания. После инициализации модуль управления создаёт поток контроля, в котором выполняется создание мьютексов Mutex_Recog_Run для блокировки процессов распознавания, а затем поток контроля ожидает перехода Mutex_Management в состояние 0. Инициализация модуля генерации данных включает в себя выделение области памяти (Win32 функция CreateFileMapping) и ожидание перехода в состояние 0 Mutex_Data.

Рис. 1. Структура алгоритма инициализации модели

Далее в основном потоке модели происходит создание процессов распознавания, каждому из которых присваивается собственный номер. Затем основной поток модели переходит в режим командного интерпретатора, который поддерживает следующие команды:
• recog – создание или закрытие процессов распознавания, что позволяет изменить количество процессов распознавания;
• time – установка периода передачи данных для распознавания;
• size – установка размера передаваемых данных;
• run – запуск модели;
• display – во время работы модели позволяет посмотреть информацию о действиях;
• exit – выход из модели с принудительным завершением всех процессов.
В момент старта модели мьютексы Mutex_Management и Mutex_Data обнуляются, и поток генерации данных начинает формировать данные в выделенной памяти через заданный момент времени, предварительно установив в 1 мьютексы Mutex_Recog_D и Mutex_Control. Поток модуля контроля обнуляет один из мьютексов Mutex_Recog_Run, разблокировав тем самым требуемый процесс распознавания. Дальнейшее функционирование модели отражено схематично на рисунке 2.

Рис. 5. Схема функционирования модели после запуска

В течении времени ожидания потока контроля процесс распознавания должен успеть осуществить процедуру распознавания по данным из общей памяти и доставить сообщение WM_COPYDATA потоку управления, который устанавливает глобальную переменную модели recognize в 1. После этого процесс распознавания «засыпает», ожидая разблокирования мьютекса Mutex_Control_D потоком генерации данных. Поток контроля по истечении времени ожидания проверяет глобальную переменную recognize. Если переменная равна 1, то он переводит её в 0 и разблокирует поток генерации данных. Если же переменная равна 0, то поток контроля должен принудительно завершить процесс распознавания (TerminateProcess), инициировать процедуру перезапуска процесса в дополнительном потоке, и разблокировать другой готовый процесс распознавания. Поскольку другой процесс распознавания был запущен ранее и был заблокирован на мьютексе, то переход модели на этот процесс не займет какого-либо существенного времени. Когда снова запускается поток генерации данных, то осуществляется установка мьютексов Mutex_Recog_D и Mutex_Control, что блокирует поток контроля и процесс распознавания, и сбрасывает не нужный более мьютекс Mutex_Control_D. Далее цикл повторяется.
Если не учитывать поток контроля, то цикл работы модели следующий:
• поток данных;
• процесс распознавания;
• поток управления.
Функции потока контроля скрыты и необходимы для реализации требований к проектированию СРО РВ. Исходный код модели реализован на языке C и с версией 1.0 выложен под лицензией BSD на http://vidikon.com/page.php?Lang=ru&PG=_sci0008.
Разработанная модель является наиболее простой, решения по передаче данных между процессами являются примерами, и в реальной СРО могут быть другими. Модуль управления может не просто фиксировать результат распознавания, а выбирать оптимальный режим распознавания [1], меняя режимы модулей контроля, сбора и обработки данных и распознавания.
Главным достоинством разработанного подхода к проектированию СРО РВ является надежность функционирования, выраженная в устойчивости к ошибкам и исполнении заданий точно в срок. Недостаток – более низкая производительность. Достоинства и недостатки проиллюстрированы на рисунке 3.

Рис. 3. Временные диаграммы процесса распознавания образов в РВ: а) обычная система (1); СРО РВ с малым (2) и большим (3) интервалами распознавания; б) обычная система с ошибками задержки времени распознавания (1) и зависанием (2), СРО РВ с теми же ошибками (3)

На рисунке 3а показано, что при стабильном успешном распознавании (диаграмма 1) обычная система работает лучше СРО РВ с точки зрения достоверности (диаграмма 2) или производительности при увеличении интервала распознавания (диаграмма 3). В данном случае преимущество СРО РВ в том, что она предсказуема и может работать синхронно с АСУ. На рисунке 3б показано, что при возникновении ошибок СРО РВ ведёт себя намного лучше: при значительном превышении времени распознавания (диаграмма 1) результат распознавания уже не важен; при неисправимой ошибке или зависании (диаграмма 2) обычная система нуждается во внешнем вмешательстве для продолжения работы. В обоих случаях СРО РВ ведёт себя одинаково, как показано на диаграмме 3 – процесс распознавания принудительно завершается, переключаясь на другой процесс без потери времени.
В обмен на некоторые затраты процессорного времени и усилия в синхронизации процессов и потоков система приобретает предсказуемость, фиксированное время распознавания и безболезненную обработку неисправимых ошибок распознавания.

Литература:
1. Кручинин А.Ю. Особенности разработки программных систем распознавания образов реального времени // Автоматизация в промышленности. – 2011. – №7. – С. 53-56.

При ссылке на материал указывайте:
Кручинин А.Ю. Структура системы распознавания образов реального времени: http://recog.ru/blog/applied/32.html. — 2011.
  • 0
  • 13 ноября 2011, 11:50
  • vidikon

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.