С развитием науки стало возможным решение сверхсложных вычислительных задач. Они решаются на суперкомпьютерах.
Создаются вычислительные кластеры, которые позволяют решать сложные задачи намного быстрее, используя преимущества параллельной обработки данных. В связи с этим, исследования в сфере параллельных вычислений сегодня становятся приоритетным направлением. Одной из наиболее интересных направлений становится обработка больших объемов видеоданных и изображений на кластере.
Удачной платформой для исследований и разработки систем по обработке видеоизображений является Microsoft Compute Cluster Server 2003. Она является лидером среди вычислительных кластеров под Microsoft Windows и уже сейчас достаточно сильно совместима, готова к интеграции c вычислительными кластерами с основой на Linux.
Тема обработки видеоизображений в данный момент только начинает исследоваться, исследования в данной сфере есть, но еще очень много конкретных задач по обработке видеоизображений (как оптимально обработать большой объем данных, какой оптимальный алгоритм по распознаванию объектов в системах на базе вычислительных кластеров и прочее).
Для решения этих задач необходимо разрабатывать специальные алгоритмы, организовывать специальные вычислительные сети (кластеры), разрабатывать интерфейсы по обработке и передаче сообщений между узлами кластера. Такие исследования могут внести неоценимый вклад в развитие науки и техники.
В настоящее время эффективность использования обработки больших объемов видеоизображений в хозяйственных и исследовательских целях не вызывает сомнений, а спектр задач, решаемых с применением результатов обработки видеоизображений, непрерывно расширяется.
Цель проекта - создание новой, инновационной системы по обработке больших объемов данных (видеоизображений) на кластере Microsoft Compute Cluster Server 2003 с использованием библиотеки компьютерного зрения OpenCV.
Разрабатываемая программная система может служить для обработки различных видеоданных, применима к множеству актуальных задач по обработке видео (наблюдение за движением автомобилей, слежение в аэропортах, развлекательных центрах, анализ видеозаписей спортивных матчей и прочее).
Научная новизна разрабатываемой системы заключается в том, что в данный момент это первая в мире система которая используется вычислительный кластер Microsoft Compute Cluster Server 2003 для обработки больших объемов видеоданных с помощью библиотеки компьютерного зрения OpenCV.
На основании изученных материалов, поиска материалов в интернет было выявлено, что большая часть параллельных вычислений по обработке видеоизображений разрабатываются с нуля, что не всегда эффективно как по части алгоритмов, так и по времени затрачиваемому на разработку алгоритмов.
В сфере распознавания видеоизображений в данный момент достаточно мало исследований. Это связанно с их сложностью, а также трудоемкостью в исследованиях.
Перспективной средой для реализации системы параллельной обработки видеоинформации является MS Compute Cluster Server[1]. MS CCS 2003 представляет собой интегрированную платформу для поддержки высокопроизводительных вычислений на кластерных системах. MS CCS состоит из операционной системы Windows Server 2003 и Microsoft Compute Cluster Pack (CCP) набора интерфейсов, утилит и инфраструктуры управления. Встроенным средством программирования на MS CCS кластере является MS Message Passing Interface (MPI) — один из стандартов разработки приложений HPC[2].
Для обработки видеоизображений будет использоваться библиотека компьютерного зрения OpenCV, библиотека с открытым кодом, большинство алгоритмов эффективны, и хорошо описаны. Такая комбинация (Microsoft Compute Cluster Server 2003 и OpenCV) позволит добиться больших результатов, и получить симбиоз из 2 хорошо зарекомендовавших технологий.
Разрабатываемая программная среда позволит быстро и эффективно разрабатывать приложения по обработке и анализу видеоизображений большого размера на вычислительном кластере Microsoft Compute Cluster Server.
Программная среда включает подкомпоненты и разработанную структуру для параллельных расчетов. В состав входят:
Для обработки видеоизображений в разрабатываемой программной среде используется библиотека OpenCV[3]. Это библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения.
Основными операциями для вычислений в разрабатываемой системе являются - базовые операции над многомерными числовыми массивами, базовые функции 2D графики, базовые операции над изображениями (фильтрация, геометрические преобразования, преобразование цветовых пространств и др.), анализ изображений (выбор отличительных признаков, морфология, поиск контуров, гистограммы), анализ движения, слежение за объектами, обнаружение объектов. Разрабатываемая система должна принимать на вход большие объемы видеоданных, обрабатывать их параллельно, используя методы библиотеки OpenCV. Текущая реализация OpenCV насчитывает около 500 готовых методов, из указанных выше операций для вычислений реализованы почти все. На вход системы подаются несколько изображений, либо данные в виде видео файла.
В зависимости от того как будут подаваться данные, можно построить различную параллельную архитектуру программной системы. Для данной программной системы на рис.1 видеоданные разбиваются на части и подаются на каждый Node порционно, расчеты ведутся параллельно. Каждый элемент MS Windows Computer Cluster Server включает себя библиотеку MPI и графическую библиотеку OpenCV. Для управления обменом данных между узлами разрабатывается управляющий узел, он следит за каждым узлом, анализирует, разбивает и передает блоки данных.
В схеме конвейерной программной среды на рис. 2, видеоданные передаются между вычислительными узлами по мере необходимости вычислений. Ускорение происходит за счет того, что на всех вычислительных узлах всегда выполняются вычисления. Управляющий узел следит за загруженностью каждого узла, в случае необходимости данных i-м узлом – ждет поступление этих данных, отправляет их i-тому узлу.
За время разработки программной среды наработана база позволяющая строить сложные системы по обработке видеоданных на кластере Microsoft. Рассмотрим более подробно структуру системе на примере программного кода.
Рассмотрим систему более подробно. При старте происходит инициализация интерфейса MPI с помощью функции MPI_Init(&argc,&argv).
Далее необходимо узнать количество вычисляющих узлов (доступных процессоров) на кластере – узнаем с помощью метода MPI_Comm_size(MPI_COMM_WORLD,&iCount) в который первый элемент передается глобальный коммуникатор интерфейса MPI(коммуникатор по умолчанию, содержит информацию о класстере на котором запущен и его элементах), второй параметр - переменная которая на выходе получит количество узлов.
Для определения текущего номера узла используется метод MPI_Comm_rank(MPI_COMM_WORLD,&iRank). Следует помнить, что узлы на кластере нумеруются не по порядку расположения в сети, а в случайном порядке при запуске кластера. Зная номер текущего узла мы можем определить к какому типу относиться он в иерархии нашей системы. При разработке програмного комплекса узел с №0 определяется управляющим узлом, а все узлы с номер большим 0 считаются исполняющими узлами.
Необходимо оговорить 2 момента, структуру управляющего узла и структуру исполняющего узла. В системе есть 1 управляющий узел и n-1 исполяющих узлов (n – число узлов составляющих кластер).
Управляющий узел. При работе всей системы очень важным является равномерное распределение нагрузки между всеми элементами вычислительного кластера. Поэтому вначале в управляющем блоке происходит расчет распределения нагрузки между узлами.
Процесс расчета наргрузки выглядит следующим образом:
Пример:
20 вычислительных узлов.Если количество видеоизображений не кратно количеству узлов, то оставшиеся изображения распределяются по 1 штуке между узлами начиная с 0 узла.
После анализа нагрузки управляюший узел выполняет считывание нужной для обработки информации(видеоизображений).После этого происходит рассылка данных между исполняющими узлами. Для этой операции используется метод int MPI_Send(void *buf, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm), где:
Исполняющий узел. Базируется на выполнении 5 функций. Расчет времени выполнения, прием данных, сохранение данных на локальный жесткий диск, считывание данных и их фильтрация.
В результате проведенных исследований были следующие экспериментальные данные - продолжительность сохранения и фильтрации 1 изображения. Вследствие чего можно рассчитать временные характеристики для вычислительного кластера. Мы получим значения «идеальные», в учет не берется время передачи данных по сети, время на отправку данных, различные задержки при расчетах и при передаче данных. Мы получили величину 0,7секунд - для 1 компьютера, для нескольких - умножаем на количество вычисляющих узлов. Таким образом, получим теоретические данные для разрабатываемой системы.
Фильтрация 1 изображения | 0.7 | сек |
Количество изображений | 10000 | Шт |
Количество процессоров (1.86) | 1 | Шт |
Количество процессоров (1.86) | 10 | Шт |
Количество процессоров (1.86) | 20 | Шт |
Время на фильтрацию для 1 | 116.66 | Мин |
Время на фильтрацию для 10 | 11.66 | Мин |
Время на фильтрацию для 20 | 5.83 | Мин |
Зависимость времени расчетов от количества вычислительных узлов при фильтрации изображений. На графике мы видим линейный рост, в реальности график изменит свою форму. Это связано с тем что время затрачиваемое на передачу данных на каждый узел, будет разным и при больших объемах данных, будет колебаться время передачи.
Более точные результаты будут получены при дальнейшей разработке и исследовании системы, расчета характеристик экспериментальным путем.
В разрабатываемой системе необходимы язык описания задач, разбиение системы на подзадачи, монитор управления обработкой изображения, оптимизация распределения нагрузки между узлами.
Благодаря архитектуре, основанной на MS CCS и графической библиотеке OpenCV, разрабатываемая среда снижает временные затраты на обработку видео данных и имеет широкие функциональные возможности.
К периоду защиты магистерской работы мы сможем получить теоретическую базу, практические результаты по исследованию системы, а также функционирующий программный продукт, готовый для запуска на Microsoft Compute Cluster Server 2003.