Магістр ДонНТУ Алтинпара Євген Олегович

Алтинпара Євген Олегович
Факультет: Обчислювальної техніки та інформатики
Спеціальність: Програмне забезпечення автоматизованих систем
Тема випускної роботи: Рішення задач великої розмірності на кластері
Керівник: доцент, к.т.н. Ладиженський Юрій Валентинович

Реферат по темі випускної роботи
Вступ:

З розвитком науки стало можливим рішення надскладних обчислювальних задач. Вони вирішуються на суперкомп'ютерах.

Створюються обчислювальні кластери, які дозволяють вирішувати складні завдання набагато швидше, використовуючи переваги паралельної обробки даних. У зв'язку з цим, дослідження в сфері паралельних обчислень сьогодні стають пріоритетним напрямком. Одним з найбільш цікавих напрямів стає обробка великих обсягів відео та зображень на кластері.

Вдалою платформою для досліджень і розробки систем по обробці відео зображень є Microsoft Compute Cluster Server 2003. Вона є лідером серед обчислювальних кластерів під Microsoft Windows і вже зараз досить сильно сумісна, готова до інтеграції з обчислювальними кластерами, заснованими на базі Linux.

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

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

Актуальність теми:

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

Мета проекту - створення нової, інноваційної системи з обробки великих обсягів даних (відео зображень) на кластері Microsoft Compute Cluster Server 2003 з використанням бібліотеки комп'ютерного зору OpenCV. Розробляєма програмна система може служити для обробки різних відеоданих, застосовна до багатьох актуальних завдань по обробці відео (спостереження за рухом автомобілів, спостереження в аеропортах, розважальних центрах, аналіз відеозаписів спортивних матчів та інше).

Передбачувана наукова новизна:

Наукова новизна розроблюваної системи полягає в тому, що в даний момент це перша у світі система, яка використовує обчислювальний кластер Microsoft Compute Cluster Server 2003 для обробки великих обсягів відеоданих за допомогою бібліотеки комп'ютерного зору OpenCV.

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

У сфері розпізнавання відео зображень в даний момент досить мало досліджень. Це пов'язано з їх складністю, а також трудомісткістю в дослідженнях.

Перспективним середовищем для реалізації системи паралельної обробки відеоінформації є Microsoft Compute Cluster Server 2003[1]. Він являє собою інтегровану платформу для підтримки високопродуктивних обчислень на кластерних системах. Microsoft Compute Cluster Server 2003 складається з операційної системи Windows Server 2003 і Microsoft Compute Cluster Pack (CCP) набору інтерфейсів, утиліт і інфраструктури управління. Вбудованим засобом програмування на кластері є Microsoft Message Passing Interface (MPI) - один зі стандартів розробки додатків HPC[2].

Для обробки відео зображень буде використовуватися бібліотека комп'ютерного зору OpenCV, бібліотека з відкритим кодом, більшість алгоритмів ефективні і добре описані.

Така комбінація (Microsoft Compute Cluster Server 2003 і OpenCV) дозволить досягти великих результатів, і отримати симбіоз з 2 добре зарекомендували технологій.

Практична цінність результатів роботи:

Розробляєма програмна середа дозволить швидко і ефективно створювати програми з обробки та аналізу відео зображень великого розміру на обчислювальному кластері Microsoft Compute Cluster Server.

Дослідження по темі:

Розробляэма програмна середа включає подкомпоненти і розроблену структуру для паралельних розрахунків. До складу входять:

  • Для написання коду з використанням технологій паралельного програмування використовується інтерфейс від Microsoft - Message Passing Interface (MPI). 
  • Для обробки відео зображень і маніпуляції відеоданих використовується бібліотека комп'ютерного зору OpenCV. 
  • Середовище для розробки програмного комплексу Microsoft Visual Studio  2008. 
  • Для налагодження додатків використовують MPI використовується вбудований у Microsoft Visual Studio 2008 debugger. 

Для обробки відео зображень в розроблюваної програмному середовищі використовується бібліотека OpenCV[3]. Це бібліотека алгоритмів комп'ютерного зору, обробки зображень та чисельних алгоритмів загального призначення.

Основними операціями для обчислень в розробляємій системі є - базові операції над багатовимірним числовими масивами, базові функції 2D графіки, базові операції над зображеннями (фільтрація, геометричні перетворення, перетворення колірних просторів тощо), аналіз зображень (вибір відмінних ознак, морфологія, пошук контурів , гістограми), аналіз руху, спостереження за об'єктами, виявлення об'єктів. Розробляєма система повинна приймати на вхід великі обсяги відеоданих, обробляти їх паралельно, використовуючи методи бібліотеки OpenCV. Поточна реалізація OpenCV нараховує близько 500 готових методів, з вказаних вище операцій для обчислень реалізовані майже усі. На вхід системи подаються декілька зображень, або дані у вигляді відео файлу.

В залежності від того, як будуть подаватися дані, можна побудувати різну паралельну архітектуру програмної системи. Для даної програмної системи на мал.1 відео данні розбиваються на частини і подаються на кожен Node порційно, розрахунки ведуться паралельно. Кожен елемент Microsoft Windows Computer Cluster Server включає у себе бібліотеку MPI та графічну бібліотеку OpenCV. Для керування обміном даних між вузлами розробляється керуючий вузол, він стежить за кожним вузлом, аналізує, розбиває і передає блоки даних.

У схемі конвеєрного програмного середовища на рис. 2, відео данні передаються між обчислювальними вузлами по мірі необхідності обчислень. Прискорення відбувається за рахунок того, що на всіх обчислювальних вузлах завжди виконуються обчислення. Керуючий вузол стежить за обмеженістю кожного вузла, в разі необхідності даних i-м вузлом - чекає надходження цих даних, відправляє їх i-тому вузлу.

Рисунок 2 - Архітектура програмної системи з паралельним розподілом даних для розрахунків.
Рисунок 1 - Архітектура програмної системи з паралельним розподілом даних для розрахунків.

Рисунок 3 - Архітектура програмної системи з конвеєрної передачею даних
Рисунок 2 - Архітектура програмної системи з конвеєрної передачею даних

За час розробки програмного середовища напрацьована база дозволяє будувати складні системи по обробці відео на кластері Microsoft. Розглянемо більш докладно структуру системі на прикладі програмного коду.

Рисунок 4 - Структура програмної системи.
Рисунок 3 - Структура програмної системи.

Розглянемо систему більш докладно. При старті відбувається ініціалізація інтерфейсу 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 - число вузлів складових кластер).

Керуючий вузол. При роботі всієї системи дуже важливим є рівномірний розподіл навантаження між усіма елементами обчислювального кластеру. Тому спочатку в керуючому блоці відбувається розрахунок розподілу навантаження між вузлами.

Процес розрахунку наргрузкі виглядає наступним чином:

  • Кількість обчислювальних вузлів n 
  • Кількість зображень m 
  • Середнє розподіл m / n 

Приклад:

20 обчислювальних вузлів. 
Кількість зображений 1000 шт. 
Середнє розподіл = 1000/5 = 200 шт.на 1 вузол 
Приклад цього розподілу, ми можемо спостерігати на анімації нижче. 
Рисунок 4 - Схема розподілу навантаження між 5 вузлами (кількість кадрів: 6, повторень: 5, тривалість кадрів: 200мс)
Рисунок 4 - Схема розподілу навантаження між 5 вузлами (кількість кадрів: 6, повторень: 5, тривалість кадрів: 200мс)

Якщо кількість відео зображень не кратне кількості вузлів, то зображення що залишились, розподіляються по 1 штуці між вузлами починаючи з 0 вузла.

Після аналізу навантаження керуючий вузол виконує зчитування необхідної для обробки інформації (відео зображень). Після цього відбувається розсилання даних між виконуючим вузлами. Для цієї операції використовується метод int MPI_Send (void * buf, int count, MPI_Datatype type, int dest, int tag, MPI_Comm comm), де:

  • buf - адреса буфера пам'яті, в якому розташовуються дані відправляється повідомлення; 
  • count - кількість елементів даних в повідомленні; 
  • type - тип елементів даних пересилається повідомлення; 
  • dest - ранг процесу, якому надсилається повідомлення; 
  • tag - значення-тег, що використовується для ідентифікації повідомлення; 
  • 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 Мин
Таблиця 1. Теоретичні результати розрахунків у досліджуваній системі.

Залежність часу розрахунків від кількості обчислювальних вузлів при фільтрації зображень. На графіку ми бачимо лінійний зростання, в реальності графік змінить свою форму. Це пов'язано з тим, що час затрачуваний на передачу даних на кожен вузол, буде різним і при великих обсягах даних, буде коливатися час передачі.


Рисунок 5. Графік залежності часу розрахунку від кількості вузлів на кластері Microsoft Compute Cluster Server 2003.
Рисунок 5. Графік залежності часу розрахунку від кількості вузлів на кластері Microsoft Compute Cluster Server 2003.

Більш точні результати будуть отримані при подальшій розробці та дослідженні системи, розрахунку характеристик експериментальним шляхом.

Висновки:

У системі що розроблюється необхідні мова опису задач, розбиття системи на подзадачі, монітор управління обробкою зображення, оптимізація розподілу навантаження між вузлами.

Завдяки архітектурі, заснованої на MS CCS та графічній бібліотеці OpenCV, що розробляється середа знижує тимчасові витрати на обробку відео даних і має широкі функціональні можливості.

До періоду захисту магістерської роботи ми зможемо отримати теоретичну базу, практичні результати по дослідженню системи, а також функціонує програмний продукт, готовий для запуску на Microsoft Compute Cluster Server 2003.

Список літератури
  1. Microsoft Windows Compute Cluster Server 2003. Руководство рецензента [Публикация Microsoft] – май 2006г. - http://www.microsoft.com
  2. Технологии - MPI: The Message Passing Interface – Parallel.ru
  3. OpenCV библиотека алгоритмов компьютерного зрения - Wikipedia
  4. Seinstra F.J., Koelma D. Accurate Performance Models of Parallel Low Level Image Processing Operations Based on a Simple Abstract Machine /University of Amsterdam - The Netherlands, 2005 (https://eprints.kfupm.edu.sa).
  5. Bradski G.R., Kaehler A. Learning OpenCV - Computer Vision with the OpenCV Library /United States of America Sebastopol, 2008 (http://oreilly.com/), 1-141c.
  6. CS101 «Введение в методы программирования», CS105 «Дискретная математика», CS220 «Архитектура ЭВМ», CS225 «Операционные системы», CS304 «Методы вычислений» (http://www.winhpc.ru/).
  7. Гергель В.П. Теория и практика параллельных вычислений, http://www.intuit.ru/
  8. Nicolescu C., Jonker P. Parallel low-level image processing on a distributed-memory system /Delft University of Technology - The Netherlands, 2000 (www.springerlink.com/).
  9. Nicolescu C., Jonker P. A data and task parallel image processing environment /Delft University of Technology - The Netherlands, 2000 (www.citeseerx.ist.psu.edu/)
  10. Интернет ресурс с технической документацией и поддержкой библиотеки OpenCV http://sourceforge.net/projects/opencvlibrary/