Опубликован: 02.09.2013 | Доступ: свободный | Студентов: 429 / 54 | Длительность: 19:27:00

Самостоятельная работа 7: Оптимизация и распараллеливание вычислений в задаче детектирования объектов на изображениях с использованием алгоритма Latent SVM

Аннотация: В работе рассматривается задача детектирования объектов разных классов на изображениях. Приводится содержательная и математическая постановка задачи. Выполнение работы предполагает, что исходным материалом является последовательная реализация алгоритма Latent SVM и тестовое приложение, которое осуществляет поиск объектов некоторого заданного класса на изображении (модель класса объектов и изображение являются параметрами командной строки приложения). Также предоставляется документация, содержащая описание основных структур данных и функций. Одной из базовых операций алгоритма Latent SVM является операция вычисления сверток. Последовательная реализация предусматривает возможность вычисления сверток с использованием прямого алгоритма и с использованием быстрого двумерного преобразования Фурье (БПФ). Поэтому выделяется два направления оптимизации и распараллеливания, связанные с соответствующими реализациями. В процессе выполнения лабораторной работы предлагается определить "горячие" точки программы – функции, в которых программа проводит наибольшее время. На первом этапе необходимо оптимизировать наиболее трудоемкие функции. Затем выполнить их распараллеливание и оценить эффективность разработанных параллельных реализаций. На втором этапе предлагается выполнить распараллеливание оптимизированной последовательной версии на более высоком уровне с точки зрения схемы работы алгоритма.

Введение

Презентацию к лабораторной работе Вы можете скачать здесь.

Дополнительные материалы к лабораторной работе Вы можете скачать здесь.

Учитесь мыслить фотографически, а не в категориях других средств изображения. В таком случае Вы всегда сможете сказать что-то новое.

Эдвард Уэстон

Oдной из классических задач в компьютерном зрении является задача классификации [1], заключающаяся в том, чтобы предсказать наличие или отсутствие объекта некоторого класса (машина, птица, человек и т. п.) на изображении или кадрах видео. Наряду с указанной задачей, выделяется задача детектирования [1, 2], в которой необходимо определить конкретное положение объекта.

Задача детектирования объектов решается человеческим зрением за считанные доли секунды. Для машины же такая задача является сложной. Данный факт объясняется многообразием классов объектов и их представителей, которые могут выглядеть по-разному в зависимости от ракурса. Отметим, что при этом объекты имеют разную степень освещенности в зависимости от расположения источника света, что еще больше усложняет задачу детектирования.

Детектирование объектов в том или ином виде используется в различных системах, связанных с видеоаналитикой. Каждый раз, взяв в руки цифровой фотоаппарат, чтобы запечатлеть своих родственников или друзей, можно видеть "магические" окошечки [4], которые обводят знакомые лица и помогают сделать хороший снимок с точки зрения композиции. Это срабатывает простейший детектор лиц, встроенный в фотоаппарат.

Один из возможных подходов к решению задачи детектирования состоит в использовании алгоритмов машинного обучения для построения модели класса и алгоритмов поиска (вывода) положения объекта на некотором заданном изображении. При этом модель может быть построена на основании информации о контурах и формах объекта [22], а также с использованием данных о внешнем виде частей этого объекта [3] и контекста сцены [23], в которой он расположен. В работе приводится схема алгоритма вывода, предложенного в [3], описывается последовательная реализация данного алгоритма, оценивается производительность разработанной реализации и рассматриваются различные схемы распараллеливания. Также для наиболее эффективной параллельной версии проводится анализ точности детектирования объектов на тестовом множестве изображений PASCAL Visual Object Classes Challenge 2007 (VOC 2007, [21]).

1. Методические указания

1.1. Цели и задачи работы

Для большинства практических приложений процедура поиска объектов на изображении должна выполняться в реальном времени. Поэтому основная цель данной работы состоит в том, чтобы максимально уменьшить среднее время поиска объектов разных классов с использованием метода Latent SVM за счет компиляторной и алгоритмической оптимизации, а также за счет последующего распараллеливания последовательной реализации на системы с общем памятью.

Данная цель предполагает решение следующих задач:

  1. Изучение схемы работы алгоритма Latent SVM.
  2. Изучение структуры модулей и функций программной реализации Latent SVM.
  3. Определение участков кода, на исполнение которых тратится наибольшее время, с помощью инструментов Intel Parallel Studio XE.
  4. Компиляторная и алгоритмическая оптимизация наиболее трудоемких участков исходного кода.
  5. Разработка и реализация различных схем распараллеливания с использованием технологии OpenMP [13] и библиотеки Intel Threading Building Blocks [5, 6, 7, 8, 14].
  6. Анализ масштабируемости разработанных параллельных реализаций.
  7. Оценка качества детектирования объектов при использовании наиболее эффективной параллельной реализации.

1.2. Структура работы

В работе рассматривается задача детектирования объектов разных классов на изображениях. Приводится содержательная и математическая постановка задачи.

Выполнение работы предполагает, что исходным материалом является последовательная реализация алгоритма Latent SVM и тестовое приложение, которое осуществляет поиск объектов некоторого заданного класса на изображении (модель класса объектов и изображение являются параметрами командной строки приложения). Также предоставляется документация, содержащая описание основных структур данных и функций.

Одной из базовых операций алгоритма Latent SVM является операция вычисления сверток. Последовательная реализация предусматривает возможность вычисления сверток с использованием прямого алгоритма и с использованием быстрого двумерного преобразования Фурье (БПФ). Поэтому выделяется два направления оптимизации и распараллеливания, связанные с соответствующими реализациями. В процессе выполнения лабораторной работы предлагается определить "горячие" точки программы – функции, в которых программа проводит наибольшее время. На первом этапе необходимо оптимизировать наиболее трудоемкие функции. Затем выполнить их распараллеливание и оценить эффективность разработанных параллельных реализаций. На втором этапе предлагается выполнить распараллеливание оптимизированной последовательной версии на более высоком уровне с точки зрения схемы работы алгоритма.

1.3. Тестовая инфраструктура

Вычислительные эксперименты проводились с использованием следующей инфраструктуры (табл. 14.1).

Таблица 14.1. Тестовая инфраструктура
Операционная система Microsoft Windows 7
Среда разработки Microsoft Visual Studio 2010
Библиотека TBB Intel® Threading Building Blocks 3.0 for Windows, Update 3 (в составе Intel® Parallel Studio XE 2013)
Профилировщик Intel® Parallel Studio XE 2013
Библиотеки OpenCV Версия 2.4.3
Математический пакет MATLAB R2010a
Visual Object Challenge Development Kit Версия VOCdevkit_08-Jun-2007

1.4. Рекомендации по проведению занятий

Для проведения занятий предлагается следующая последовательность действий:

  1. Рассмотреть содержательную постановку задачи.
  2. Объяснить понятия модели изображения и модели класса объектов. Рассмотреть математическую постановку задачи в соответствии с описанием алгоритма Latent SVM, предложенным в [3].
  3. Рассмотреть основные этапы решения задачи детектирования объектов на изображении с помощью Latent SVM.
  4. Провести обзор предоставляемой последовательной программной реализации: рассмотреть используемые структуры данных и назначение ключевых функций.
  5. Выполнить профилировку последовательного приложения, которое использует БПФ для вычисления сверток, с целью определения "горячих" точек. Для профилировки предлагается использовать инструменты Intel Parallel Studio XE.
  6. Выполнить алгоритмическую оптимизацию последовательного приложения, которое использует БПФ для вычисления сверток. Оценить прирост производительности.
  7. Распараллелить двумерное БПФ с помощью библиотеки Intel Threading Building Blocks (TBB) [5, 6, 7, 8, 14].
  8. Оценить масштабируемость приложения, собранного с использованием параллельной реализации двумерного БПФ.
  9. Выполнить профилировку последовательного приложения, которое использует прямую схему вычисления сверток, с целью определения "горячих" точек.
  10. Применить набор компиляторных оптимизаций к функции прямого вычисления сверток. Оценить прирост производительности после каждого шага оптимизации.
  11. Выполнить распараллеливание функции прямого вычисления сверток с использованием библиотеки TBB [7, 8].
  12. Оценить масштабируемость приложения с использованием параллельной реализации прямого вычисления сверток.
  13. Выполнить распараллеливание реализации на более высоком уровне с точки зрения алгоритма средствами библиотеки TBB.
  14. Оценить масштабируемость разработанной параллельной реализации.
  15. Оценить качество детектирования объектов с помощью итоговой параллельной реализации на базе изображений VOC 2007 [21].

2. Содержательная постановка задачи детектирования объектов

В работе рассматривается задача детектирования объектов разных классов (машина, птица, человек и т. п.) на изображениях или кадрах видео. Требуется выполнить поиск объектов некоторого класса на изображении (сцена может содержать несколько объектов одного класса). Положение объекта определяется прямоугольником, окаймляющим его границы. Необходимо построить на изображении множество окаймляющих прямоугольников для объектов заданного класса.

Андрей Терёхин
Андрей Терёхин

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

Демянчик Иван
Демянчик Иван

В главе 14 мы видим понятие фильтра, но не могу разобраться, чем он является в теории и практике.

" Искомый объект можно описать с помощью фильтра F= \lbrace f_{x',y'},x' \in \lbrace0, ...,w_f \rbrace , y' \in \lbrace 0,...,h_f \rbrace \rbrace "