Технічні науки / 11. Робототехніка

 

К.т.н. Войтко В.В., Романюк C.О., Шилан О.О., Морфіянець О.О.

Вінницький національний технічний університет,Україна

Метод виділення контурів зображень засобами GPU

 

Вступ

Сьогодні поширені технології паралельного програмування завдань, не пов’язаних з виконанням графічного 3D конвеєра, які орієнтовані на вирішення завдань засобами графічних процесорів. Така технологія відома як General Purpose сomputing on Graphic Processing Units (GPGPU), далі GPU [1]. Вона передбачає обчислення загального призначення на графічних процесорах. Технологію паралельного програмування відносять до потокових обчислень [2].

Технологія Compute Unified Device Architecture (CUDA) є уніфікованою архітектурою обчислювальних пристроїв. Вона є частковою реалізацією технології GPGPU, розробленої компанією nVidia для своїх GPU. Технологія CUDA активно розвивається та пропонує програмування для GPU, використовуючи інструменти високого рівня [1-2].

Метою роботи є оптимізація процесу виділення контурів зображень шляхом розробки методу обробки зображень засобами GPU за технологією CUDA. Основним завданням є обчислювальний експеримент з обробки зображень на GPU.

Постановка задачі дослідження

У галузі обробки зображень відомо багато обчислювальноємних методів, виконання яких на CPU потребує значних часових затрат [3]. Відомим обмеженням використання GPGPU є повільна робота з числами подвійної точності [4]. Однак, при виділенні контурів зображень (рис. 1), це, зазвичай, не є істотним обмеженням. Більшість завдань обробки зображень при цьому добре розгалужуються.

Розглянемо задачу пошуку фрагмента зображення, що стосується як завдань навігації [4,5], так і задач технічного зору [3]. У нашому випадку, процес виділення контурів зображень з метою подальшої ідентифікації емоцій людини за мімікою передбачає аналіз досліджуваного фрагмента зображення та порівняння його з еталоном у базі даних. Багато функцій обробки зображень на GPU реалізовано в графічних API DirectX і OpenGL та використовують фіксовані алгоритми. У процесі аналізу вхідного бінарного зображення пошук здійснюється для двох параметрів зсуву на площині та вирішує задачу прямим перебором гіпотез.

При обробці ділянки обличчя використовують обведення крайніх точок (рис. 1). Процес аналізу забезпечує фіксування руху м’язів за умови використання вхідного відео-файлу. Завантаження вхідних даних характеризується можливістю опрацювання як графічного зображення, так і динамічних змін у зображеннях з відео-файлу.

Функціоналом якості процедури зіставлення вбачаємо кількість позитивних результатів операції на парах елементів зображень, отриманих відповідно до гіпотези [3]. Таке формулювання завдання покликане привести до простої реалізації, яка все ж потребує тривалого часу обчислень навіть на невеликих вхідних даних. Використання технології GPU спрямоване на оптимізацію часових затрат у процесі ідентифікації зображень за контурами.

 

                  

Рис. 1 – Виділення контурів зображень у процесі розпізнавання емоції

 

Аналіз перспектив використання технології GPU

Потокові обчислення (Stream Computing) – це парадигма паралельного програмування, що дозволяє обробляти дані у вигляді потоку, елементи якого можна обробляти незалежно, а значить, паралельно [4].  

Велика увага до GPU як обчислювача загального призначення викликана, зокрема, новизною, проте є й більш вагомі фактори популярності, а саме: стрімкий розвиток GPU порівняно з центральними процесорами (CPU), висока продуктивність роботи GPU та доступність, обумовлена наявністю широкого спектру продуктів за невисокими цінами і безкоштовними інструментами розробки.

Програмувати для GPU за технологією CUDA можна як у середовищі ОС Windows, так і в середовищі ОС Linux. Для початку роботи з CUDA необхідне відповідне апаратне забезпечення, яким може бути відеоприскорювач nVidia, виконаний на GPU G80 чи пізнішої версії. Для роботи потрібний C++ компілятор, cl (Windows) або gcc (Linux). Необхідні також засоби розробки, які доступні у вигляді CUDA Toolkit. Їх можна безкоштовно взяти з сайту nVidia [2].

Для програміста CUDA є розширенням мови C при роботі з потоками графічного процесора. GPU працює з цілими та дробовими числами. Типами даних для GPU постають цілі числа завдовжки до 32 біт і числа з плаваючою крапкою половинної, одинарної і подвійної точності [1]. Доступним є виклик операцій лінійної алгебри з бібліотеки, включеної в CUDA Toolkit. Реалізований механізм взаємодії CUDA з Direct 3D і OpenGL.

GPU бере участь в обчисленнях як співпроцесор CPU. Код для GPU відокремлює та компілює спеціальний компілятор (nvcc) [1]. Основний C/C++ код, який буде виконуватися на CPU, обробляє звичайний C/C++ компілятор.

Щоб запрограмувати задачу для її вирішення засобами GPU у загальному випадку достатньо виконати алгоритм:

·            написати спеціальну функцію-ядро для  виконання на GPU;

·            скомпілювати написану функцію за допомогою компілятора nvcc;

·            написати код передачі та зберігання оброблених даних у відеопам'яті;

·            здійснити виклик функції–ядра із зазначенням конфігурації обчислень, що забезпечить виконання паралельного алгоритму в процесі вирішення завдання;

·            по завершенню процесу обчислень забрати результат з відеопам'яті

Зауважимо, що доступною для використання є велика бібліотека прикладів CUDA Software Developer's Kit, яка дозволяє вивчати працюючі рішення та запозичувати код. Також передбачена можливість здійснювати налагодження GPU коду – режим емуляції пристрою (device emulation mode) [1].

 

Розв’язок задачі ідентифікації зображень за допомогою CUDA в процесі обчислювального експерименту 

Відмінною особливістю вирішення завдання є перевірка гіпотез на GPU за паралельним алгоритмом.

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

Для ідентифікації контурних зображень створюємо функцію-ядро, що перевіряє одну гіпотезу в одному потоці GPU. За специфікацією CUDA (рис. 2), максимальний паралелізм забезпечується дворівневою конфігурацією потоків [1].

 

Рис. 2 – Специфікація CUDA

 

Системно гіпотези об’єднуємо в блоки по 256 (16 × 16 гіпотез). Область невизначеності покривається такими блоками. За рекомендаціями [3] еталонні зображення мають високу якість, що забезпечується розмірами 500 × 500 дискретів. База фрагментів досліджуваних зображень характеризується зниженням вимог до якісних показників, що дозволяє використання розмірів 100 × 100 дискретів. Об’єкти бази еталонів та фрагментів зображень повинні читатися з файлів і заноситися у відеопам’ять.

З метою оптимізації ресурсів відеопам’яті зображення зберігаються там у вигляді напівтонових восьмибітових текстур, використовуючи мінімальний за розміром формат подання даних. Матриця функціональних значень (МФЗ) опрацьовується у відеопам’яті. Краща гіпотеза обирається на CPU переглядом МФЗ, а відповідь і витрачений час фіксуються і виводяться на екран. Потоки при зверненні та обробці зображень базуються на текстурних вибірках. Такий підхід забезпечує високу продуктивність роботи алгоритму ідентифікації зображень, оскільки текстурна вибірка виконується швидко і є природною для GPU операцією за рахунок використання апаратних блоків та текстурного кешу [3,5].

За допомогою кривої Безьє (рис. 3) інтелектуальна система розпізнавання емоцій малює криві для виділення контурів бінарного зображення, для характерного аналізу та виведення кінцевого результату.

Розроблена програма впроваджує переваги паралельної обробки зображень, використовує клас TestCuda, який маскує використання роботи GPU, а також здатний працювати і без GPU та робить режим використання CUDA непомітним для користувача. Програмно реалізовані операції складання зображень, множення зображення на константу, порогова обробка, лінійна фільтрація і криві Безьє для виділення контурів зображення. Крім того програма має простий і зручний у користуванні інтерфейс.

                                                                                  

Рисунок 3 – Кубічна крива Безьє

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

 

Висновки

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

Розроблена інтелектуальна система розпізнавання емоцій впроваджує переваги паралельної обробки зображень, ефективно використовує класи CUDA, програмно реалізує операції порівняння, складання, обробки зображень, множення зображення на константу, використовує порогову обробку, лінійну фільтрацію і криві Безьє для виділення контурів зображення.

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

 

Література

1. Офіційний сайт компанії nVidia. Ресурс доступу: www.nvidia.com, 2014.

2. NVIDIA CUDA Compute Unified Device Architecture. Programming Guide. Ресурс доступу : www.nvidia.com, 2014.

3. Тарханов А.Е. Обработка изображений средствами GPU по технологи CUDA. / А.Е. Тарханов, Д.В.Корнев Ресурс доступу: http://kungurka-old.imm.uran.ru/inf/sbornik09/kung09p413.pdf

4. Р. Гонсалес Цифровая обработка изображений / Р. Гонсалес, Р. Вудс Москва: Техносфера, 2005. 687 с.

5. Паттерсон Д. Архитектура компьютера и проектирование компьютерных систем. М.: Питер, 2012. – 865 с.