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

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

12. Приложения

12.1. Приложение А. Обобщенный метод преобразования расстояний для решения задачи оптимизации

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

В некоторых случаях полезно иметь карту свойств, которая определяет вес (стоимость) свойства для пикселя, а не отсутствие или наличие этого свойства в каждом пикселе. Как следствие, преобразование расстояний должно зависеть от расстояния между пикселями и веса свойства.

Пусть G – регулярная решетка, а f:G \rightarrow \mathbb{R} - функция, заданная на этой решетке и определяющая вес свойства. Определим преобразование расстояний следующим образом:

D_f(p)=min_{q \in G} (d(p,q)+f(q))

где d(p,q) – расстояние между точками p и q (расстояние, в частности, может выражаться евклидовой метрикой). Таким образом, данное преобразование для каждой точки p определяет ближайшую точку q , в которой функция f принимает достаточно маленькое значение (очевидно, что оно не обязательно является минимальным).

В большинстве алгоритмов преобразования расстояний функция весов f вводится как индикаторная функция P \subseteq G:

1(q)=\begin{cases}
0,q \in P\\
\infty,q \notin P
\end{cases}

Как следствие, минимизация проводится не на всей сетке, а некотором выделенном подмножестве P \subseteq G.

12.1.2. Решение задачи в случае евклидова расстояния на одномерной сетке

Предположим, что построена одномерная сетка G=\lbrace 0,...,n-1 \rbrace,f:G \rightarrow \mathbb{R} - произвольная функция, заданная на этой сетке. Тогда задача преобразования расстояний имеет вид:

D_f(p)=min_{q \in G}((p-q)^2+f(q))

Необходимо отметить, что минимизируемая функция F(p)=(p-q)^2+f(q) представляет собой параболу с вершиной в точке (q,f(q)) при всех значениях q, ветви которой направлены вверх. Поэтому при всех значениях q \in G получаем совокупность таких парабол. Как следствие, преобразование расстояний – это высота нижней огибающей указанного множества парабол.


Рис. 14.3.

Алгоритм вычисления преобразования состоит из двух этапов:

1. Построение нижней огибающей для парабол, соответствующих каждой точке регулярной сетки.

Замечания к алгоритму:

  • Любые две параболы из построенной совокупности пересекаются ровно в одной точке. Пусть q_1 и q_2 – пара точек, принадлежащих сетке (q_i \in G) . Рассмотрим точку пересечения s парабол, абсциссы вершин которых совпадают с указанными точками: (s-q_1)^2+f(q_1)=(s-q_2)^2+f(q_2) s(2q_2-2q_1)=(q^2_2+f(q_2))-(q^2_1+f(q_1))\,\,\,p s=\frac {(q^2_2+f(q_2))-(q^2_1+f(q_1))} {2(q_2-q_1)} Если q_1;lt;q_2 , то точка q_1 лежит левее точки пересечения.
  • На каждой итерации алгоритма рассматривается очередная парабола и строится огибающая для расширенного множества парабол.

Обозначения:

k – количество парабол, которые включены в состав огибающей на текущем шаге алгоритма.

v[k]– значение абсциссы вершины k-ой параболы,

[z[k],z[k+1]] – отрезок, в котором ая парабола лежит ниже k-1-ой и некоторой текущей параболы.

Описание алгоритма:

Для каждой параболы с абсциссой вершины q из множества, заданного на сетке, выполняется следующая последовательность действий:

  • Определяется абсцисса s точки пересечения текущей параболы и k-ой параболы, которая была последней включена во множество, образующее огибающую.
  • Если точка пересечения оказалась меньше (или равна) левой границы z[k], то последняя парабола не принадлежит огибающей и ее необходимо исключить из множества.

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

    Рис. 14.5.

2. Определение значений D_f(p) в каждом положении p, принадлежащем сетке:

  • Определение номера отрезка, которому принадлежит точка p.
  • Вычисление значения преобразования: D_f(p)=(p-v[i])^2+f(v[i])

Рис. 14.6.
12.1.3. Решение задачи в случае евклидова расстояния на двумерной сетке

Предположим, что построена двумерная сетка G=\lbrace 0,...,n-1 \rbrace \times \lbrace 0,...,m-1 \rbrace,f:G \rightarrow \mathbb{R} – произвольная функция, заданная на этой сетке. Тогда преобразование расстояний имеет вид:

D_f(x,y)=min_{(x',y') \in G} ((x-x')^2+(y-y')^2+f(x',y'))

Данная задача приводится к более простой, т.к. первое слагаемое(x-x')^2 минимизируемой функции не зависит от y':

D_f(x,y)=min_{x'} ((x-x')^2+D_{f|x'}(y))

где D_{f|x'}(y)=min_{y'} ((y-y')^2+f(x',y')) – задача преобразования расстояний на одномерной сетке при каждом фиксированном x'. Таким образом, необходимо решить n задач на одномерной сетке.

В случае произвольного вектора d_i=(d^1_i,d^2_i,d^3_i,d^4_i) получаем квадратичную функцию:

d_i\phi_d(x'-x,y'-y)=d^1_i(x'-x)+d^2_i(y'-y)+d^3_i(x'-x)^2+d^4_i(y'-y)^2

Решение такой задачи отличается от рассмотренной только способом вычисления вершины параболы и точки пересечения пары парабол.

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

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

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

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

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