Список участников Кайнов Олег Ларцов Иван Ханова ...

32
Нижегородский государственный университет им. Н.И. Лобачевского Лаборатория Информационных технологий (ITLab) Разработка параллельной реализации трекинга объектов с использованием библиотеки Intel Array Building Blocks Список участников Кайнов Олег Ларцов Иван Ханова Татьяна Руководитель Кустикова Валентина

Upload: kaethe

Post on 22-Jan-2016

53 views

Category:

Documents


0 download

DESCRIPTION

Разработка параллельной реализации трекинга объектов с использованием библиотеки Intel Array Building Blocks. Список участников Кайнов Олег Ларцов Иван Ханова Татьяна Руководитель Кустикова Валентина. Содержание. Терминология Постановка задачи Схема решения задачи - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

Нижегородский государственный университет им. Н.И. Лобачевского

Лаборатория Информационных технологий (ITLab)

Разработка параллельной реализации трекинга объектов с использованием библиотеки Intel Array Building Blocks

Список участников

Кайнов Олег

Ларцов Иван

Ханова Татьяна

Руководитель

Кустикова Валентина

Page 2: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

2Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Содержание

Терминология Постановка задачи Схема решения задачи Описание последовательной реализации Схема распараллеливания этапов алгоритма Описание параллельной реализации

– Скорость работы при вызове call и обычном вызове Результаты экспериментов

– Сравнение последовательной и параллельной реализации

Page 3: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

3Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Постановка задачи

Цель: Оценить эффективность применения Intel Array Building

Blocks для трекинга объектов.

Задачи: Реализовать схему двумерного сопровождения объектов с

использованием библиотеки OpenCV. Разработать параллельную версию алгоритма,

используя библиотеку Intel Array Building Blocks. Оценить время работы параллельной версии.

Page 4: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

4Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Схема решения задачи

Преобразование кадров видео в оттенки серого

Построение модели фона на основе имеющегося буфера кадров

Для каждого следующего кадра видео:

Вычитание фона из текущего кадра

Бинаризация изображения

Обновление модели фона

Преобразование кадра видео в оттенки серого

Page 5: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

5Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Преобразование кадра в оттенки серого

Переводим трехканальное изображение в одноканальное по формуле c некоторыми коэффициентами.

где - соответсвующие каналы изображения,

- весовые коэффициенты каналов.

Page 6: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

6Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Построение модели фона

На основе массива одноканальных изображений строим первую модель фона.

- первый кадр фона.

- k-й кадр видео.

Page 7: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

7Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Построение бинаризованного изображения

Вычитаем фон из очередного кадра.

Отсекаем пиксели со значением больше порогового.

Page 8: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

8Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Морфология

Избавление бинаризованного изображения от шумов с помощью эрозии.

Page 9: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

9Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Обновление модели фона

Для каждого кадра видео обновляем модель фона по формуле. То есть, сложим текущие кадры фона с весовыми коэффициентами.

Page 10: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

10Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Описание последовательной реализации

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

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

Для создания кадра фона будем использовать модель фона с использованием усреднения.

- i-й пиксель фона.

- i-й пиксель j-ого кадра.

Page 11: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

11Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Описание последовательной реализации

Конвертирование кадра в черно-белый кадрvoid ConvertToGrayscale(IplImage* grayFrame, const

IplImage* image,const double r,const double g,const double b);

Создание кадра фона с использованием усредненияIplImage* BGModelAve(IplImage** src, const int n);

b g r …frame

p …bg

b g r b g r

p p p p p p p p

p p p p p p p p p

p p p p p p p p p

p p p p p p p p p

p p p p p p p p p

Page 12: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

12Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Описание последовательной реализации

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

1. Конвертировать в черно-белый кадр.

2. Найти различия между полученным кадром и текущим кадром фона.

3. К полученному кадру разницы применить сглаживающий фильтр.

4. Проклассифицировать множество пикселей на фоновые и не фоновые – бинаризовать изображение.

5. Отобразить полученный кадр.

6. Обновить кадр фона.

Page 13: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

13Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Описание последовательной реализации

Вычисление разности фона и текущего кадраvoid Diff(const IplImage* bg, const IplImage* frame,

unsigned char* const diff);

Получение бинаризованной маскиvoid ClipPix(IplImage* mask,unsigned char* const diff,

const char t);

…b b b b b b b b bbackground

…f f f f f f f f fframe

…d d d d d d d ddiff

-

=d

tresh

Page 14: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

14Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Описание последовательной реализации

Для уменьшения количества «случайных» белых пикселей – шума – применим метод математической морфологии сужение.

void Erosion(IplImage* src, IplImage* out, bool* mask, int maskWidth, int maskHeigth);

Маска – двумерный массив (матрица) интенсивностей пикселей.Рассмотрим пиксель ..

Шаблон – двумерный булев массив.

Page 15: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

15Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Описание последовательной реализации

?

да нет

Таким образом обрабатываем все пиксели маски.

Page 16: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

16Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Описание последовательной реализации

Основываясь на методе поиска границ Канни рисует границы маски на исходном кадре.

void CannyTrack(IplImage * src, IplImage * mask, const double lowThresh, const double highThresh, unsigned char track_r, unsigned char track_g,

unsigned char track_b); В данном методе используется OpenCV-функцияvoid cvCanny(const CvArr* image, CvArr* edges, double

threshold1, double threshold2, int aperture_size); Данная функция «обводит» сегменты из определенного

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

кадр, отобразив их соответствующим цветом.

Page 17: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

17Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Описание последовательной реализации

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

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

Чтобы получить новый кадр фона, вставим на место самого старого фона текущий и пересчитаем фон.

IplImage* UpdateBGModel(IplImage* grayFrame, IplImage** src, const int n, const unsigned int OldFramePosition, double* const w)

Начало буфера

Page 18: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

18Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Схема распараллеливания алгоритма

Во многих функциях производилось одно и тоже действие над каждым пикселем кадра

Данные функции могут быть хорошо распараллелены, если массив интенсивностей мы представим как тип

dense<u8>

И будем применять к нему метод map(). Изначально имеем IplImage которая имеет поле ImageData, которое является массивом интенсивности.

Используем биндинг:dense<u8> img_arbb;IplImage* img = cvCreateImage(img_size,DEPTH,CHANNELS);bind(img_arbb,(uchar*)img->imageData,img_size);

Page 19: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

19Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Схема распараллеливания алгоритма

Конвертирование в черно-белое изображениеvoid ConvertToGrayscale(IplImage* grayFrame, const

IplImage* image,const double r,const double g,const double b)

Для каждого элемента полученного dense-контейнера можно сделать следующее: умножить на соответствующий коэффициент его и его соседей, а потом сложить. Каждый третий такой пиксель в массиве (так как трехканальное изображение) и будет пикселем черно-белого кадра.

b g r

p

Теку

щи

й

Пра

вый

со

сед

Лев

ый

со

сед

b g r

p

b g r b g r

p p p p p p p p

void Conv(arbb::f32 &a){ a=neighbor(a,1)*r+a*g+neighbor(a,-1)*b;}

Ядро:

Page 20: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

20Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Схема распараллеливания алгоритма

Вычисление разности фона и текущего кадраvoid difference(const dense<i8> &a, const dense<i8> &b,

dense<u8> &c) В данной функции вызывается ядро map():

void diff(i8 a, i8 b, u8 &c)

Получение бинаризованной маскиvoid ClipPix(const dense<i8> &a, dense<i8> &b,

const u8 t) Ядро map():

void Clip(const i8 &a, i8 &b, const u8 t)

Page 21: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

21Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Схема распараллеливания алгоритма

Для обновления фона мы сохраняем предыдущие n кадров фона и текущий кадр в циклическом буфере:dense<u8> mainFramesBuffer_arbb

Он содержит (n+1)·ImgHeight·ImgWidth элементов u8.

Также есть массив коэффициентов:dense<u32> coefficients

В исходной формуле

… … bn f b1 b2 … … …

ImgSize = ImgHeight·ImgWidth

Page 22: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

22Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Схема распараллеливания алгоритма

Рассмотрим реализацию обновления фона

1. Для каждого i-го пикселя фона:

2. Сформировать вектор из i-х пикселей кадров из циклического буфера.

3. Умножить полученный вектор на вектор коэффициентов.

w w w w w w w w w*

=

Page 23: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

23Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Схема распараллеливания алгоритма

3. Теперь нужно просуммировать все координаты ветора, чтобы получить i-й пиксель фона.

4. Так как буфер циклический, циклически подвинуть массив коэффициентов вправо на один элемент.

dense<u8> UpdateBGModel(dense<u8> &mainFramesBuffer, dense<u32> &coefficients, const int width,

const int height, const int n)

=

w w w w w w w w w

Page 24: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

24Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Схема распараллеливания алгоритма

Создание кадра фона с использованием усреднения

dense<i8> Average(const dense<i8> &src, int n, int size)

Данная функция аналогична функции обновления фона, за исключением того, что все коэффициенты равны 1/n

Page 25: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

25Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Обзор ArBB

ArBB предоставляет два типа параллелизма: параллелизм по данным и параллелизм по потокам.

ArBB использует собственный тип для хранения однотипных массивов данных: dense-контейнеры.

Есть две специальных ArBB-функции, обеспечивающие работу со скалярными и векторными ArBB-типами: map и call.

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

Call, по сути, является аналогом обычного вызова функции в С.

Page 26: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

26Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Описание параллельной реализации

При первом вызове функции происходит компиляция кода этой функции в реальном времени с учетом особенностей текущего процессора (SSE, AVX)

Все функции, использующие контейнеры и\или переменные ArBB, должны вызываться с помощью call

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

Функция, вызванная с помощью map для контейнера, выполняется поэлементно для каждого элемента контейнера (Параллелизм по данным)

Page 27: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

27Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Пример реализации ArBB функции

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

void AverageTwoDim (const dense<i8,2> &a, dense<i8> &res){

_if (res.length()==a.num_cols()){

_for (usize i=0, i<a.num_cols(), i++) {

res[i]=add_reduce((dense<i16>)a.col(i))/(i16)a.num_rows();

} _end_for} _end_if

} Для проведения экспериментов использовалась именно эта функция

Page 28: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

28Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Сравнение способов вызова ArBB-функций по времени исполнения

Page 29: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

29Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Выводы.

Исходя из экспериментов, очевидно, нужно использовать вызовы функций, использующих ArBB, с помощью call.

Пример:void difference(const dense<i8> &a, const dense<i8> &b, dense<u8> &c){ map(diff)(a, b, c);}void diff(const i8 &a, const i8 &b, u8 &c){ i32 cf = a - b; c = (u8)cf;} Пример вызова: call(difference)(a,b,c);

Page 30: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

30Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Схема работы параллельной версии

Т.к. вызов функции с использованием map необходимо производить из функции, вызванной с помощью call, то схема вызова функций такая:

Основное приложение – вызов с помощью call – вызов map

Основное приложение

Вызовы map

Вызовы map

Вызовы map

Контейнеры

Page 31: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

31Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Сравнение параллельной и последовательной версий

Page 32: Список  участников Кайнов  Олег Ларцов Иван Ханова  Татьяна Руководитель Кустикова  Валентина

32Н. Новгород, 2011 г. Разработка параллельной реализации схемы двумерного сопровождения объектов с использованием библиотеки Intel Array Building Blocks

Выводы

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

Библиотека Intel Array Building Blocks для решения практических задач на данных момент не приспособлена.