Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Task01 Андрей Петрухин СПбГУ #32

Closed

Conversation

petrukhinandrew
Copy link

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

  1. Почему SIFT менее точно угадывает средний угол отклонения? изменяется ли ситуация если выкрутить параметр ORIENTATION_VOTES_PEAK_RATIO=0.999? почему?

Кажется, это связано с тем, что мы вычисляем градиент по 5 точкам, а не по какой-то окрестности. При повороте мы почти наверное не возьмем те же 5 точек, например. Если устремить параметр к 1, для ключевой точки будет появляться меньше дупликатов - это долно уменьшит число мэтчей, но увеличить их точность, а проблему не решит - мы всё ещё будем вычислять градиенты по потенциально разным точкам

  1. Как надежно замерить во сколько раз распараллеливание через OpenMP ускоряет ваш вариант SIFT? Попробуйте сделать это на вашем компьютере, какое ускорение относительно однопоточной версии оказалось? Сколько у вашего процессора ядер и сколько потоков?

"По-честному" нужно бенчмаркать каждый фрагмент кода, не совсем "по-честному" добавил флаги для включения\выключения дампов и распараллеливания, ускорение примерно вдвое. У моего процессора 8 ядер и по 2 потока на ядро

  1. Правда ли можно строить каждый слой в Gaussian пирамиде из самого первого слоя этой октавы? Или нужно обязательно делать так как предложено в статье - дополняя размытие предыдущего слоя этой октавы? Совпадают ли пирамиды визуально?

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

  1. Какие ожидания от картинок в Gaussian пирамиде можно придумать? Как проверить что работает корректно? С какой другой картинкой предыдущей октавы должна визуально совпадать конкретная картинка конкретной октавы? Как их визуально сравнить, ведь они разного размера?

Для s+1 картинки октавы будем иметь sigma = img_sigma * 2^octave, а это похоже на sigma для первой картинки следующей октавы

  1. Почему в октаве Gaussian пирамиды s+3 картинки а не s+2 например?

Хотим искать экстремумы по s картинкам в DoG октавы, значит в DoG должно быть s+2 картинки, тогда в Gaussian - s+3

  1. Какие ожидания от картинок в DoG пирамиде можно придумать?

Они должны быть почти черными, т.к. разница частот в точке должна примерно совпадать. Так же должны быть видны белые контуры объектов, по размеру близкие к размеру ядра

  1. Почему порог контрастности должен уменьшаться при увеличении числа слоев в октаве?

Потому что гауссианы будут меньше отличаться

  1. Какая строка ответственна за определение сигмы (или что почти то же самое - радиуса) которая задает окрестность по которой определяется ориентация ключевой точки?

int oriRadius = (int) (ORIENTATION_WINDOW_R * (1.0 + k * (layer - 1)));

  1. За какой строки вашего кода дескриптор инвариантен к повороту картинки?

float orientation = atan2(dy, dx) * (180.0 / M_PI) + 90.0 - angle;

buildDescriptor 418

// Создайте PR.
// Дождитесь отработки Github Actions CI, после чего нажмите на зеленую галочку -> Details -> test_sift -> скопируйте весь лог тестирования.
// Откройте PR на редактирование (сверху справа три точки->Edit) и добавьте сюда скопированный лог тестирования внутри тега

 для сохранения форматирования и под спойлером для компактности и удобства:

Github Actions CI

$ ./build/test_sift
Running main() from /home/runner/work/PhotogrammetryTasks2023/PhotogrammetryTasks2023/libs/3rdparty/libgtest/googletest/src/gtest_main.cc
[==========] Running 22 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 22 tests from SIFT
[ RUN      ] SIFT.MovedTheSameImage
[ORB_OCV] Points detected: 500 -> 500 (in 0.021269 sec)
...
[       OK ] SIFT.HerzJesu19RotateM40 (7730 ms)
[----------] 22 tests from SIFT (12918 ms total)
[----------] Global test environment tear-down
[==========] 22 tests from 1 test suite ran. (12918 ms total)
[  PASSED  ] 22 tests.

@PolarNick239
Copy link
Member

7/8 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants