Как мне бинаризировать векторы Фишера?

Я работаю над школьным проектом, и между многими задачами мне нужно бинаризировать Fisher Vectors в соответствии с тем, что написано в этот документ. Мне дали библиотеку vl_feat для использования с Matlab, и я реализовал этот простой учебник, чтобы вернуть вектора с учетом некоторых особенностей.

Все работает нормально, и я успешно обновил функцию vl_fisher, чтобы возвести каждое измерение вектора Фишера в степень значения α ∈ [0, 1], как указано в разделе 4.1. При α = 0 у меня может быть вектор Фишера со значениями {-1,0,1}, который является тернарным включением.

Во второй части раздела 4.1 объясняется, как превратить эту троичную кодировку в эквивалентную двоичную кодировку. Я немного заблудился, в основном из-за того, что я использую библиотеку для возврата векторного представления Фишера. Это представление состоит из вектора двойников и усложняет следование бумажному описанию.

Итак, мой вопрос: как мне бинаризировать векторы рыбака с библиотекой vl_feat в Matlab? Должен ли я просто бинаризировать троичную кодировку? Должен ли я вычислять векторы Фишера другим способом, чтобы сделать их более подходящими для последующей бинаризации?

Спасибо заранее за ваше время!


person G4bri3l    schedule 14.04.2015    source источник
comment
Согласно объяснению в статье, оказывается, они сделали очень простую вещь: каждый элемент является коэффициентом умножения двух переменных со знаком: \delta и w. Чтобы сделать его двоичным, они, кажется, сопоставили положительные значения с единицей, а неположительные значения с 0. Кроме того, поскольку значения являются действительными числами, действительно ли ожидается, что в троичном векторе будет большое количество нулей?   -  person Shervin    schedule 14.04.2015
comment
Я думаю, что я все еще что-то упускаю, поскольку вы заявили, что каждый элемент является коэффициентом умножения двух переменных со знаком. Первый кодируется, как вы сказали, а каждое измерение δ кодируется одним битом на основе его знака. Есть еще пара сложностей, vlFeat, учитывая вектор функций, возвращает представление Фишера в виде массива двойников. Я могу получить троичную кодировку (альфа = 0), но оттуда я не уверен, как действовать дальше. Я не думаю, что просто сопоставить положительные значения троичной кодировки с единицей, а неположительные с 0 — это путь, но опять же я могу ошибаться.   -  person G4bri3l    schedule 15.04.2015


Ответы (1)


Есть 2 возможных решения этой проблемы:

  1. Вы кладете руку на код библиотеки с открытым исходным кодом и заставляете ее возвращать то, что вам нужно.
  2. Вы реализуете свой собственный способ бинаризации векторов Фишера

В итоге я выполнил второй шаг в Matlab вместо того, чтобы взять в руки библиотеку C. Имейте в виду, что эта статья было очень полезно, когда дело доходит до вычисления GMM в домен журнала. Я опубликую свою реализацию с открытым исходным кодом, как только закончу проект.

person G4bri3l    schedule 09.05.2015
comment
Не могли бы вы связать это? :) - person justHelloWorld; 27.06.2016