-
Notifications
You must be signed in to change notification settings - Fork 4
/
readme.txt
40 lines (26 loc) · 3.83 KB
/
readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
0) Описание каталога:
inc - папка с заголовочными файлами проекта;
src - папка с исходными кодами проекта;
utils - вспомогательные функции;
main.cpp - основной файл проекта;
СMakeLists.txt - конфигурационный файл проекта для CMake;
install.sh - скрипт для загрузки, сборки, компиляции библиотеки OpenCV и для сборки, компиляции проекта;
algorithm_description.pdf - описание реализованного алгоритма.
1) Компиляция.
Для компиляции Вам понадобится следующая конфигурация:
- Ubuntu 64 (рекомендуемая версия 9.10)
- Git
- CMake
- gcc, g++
Для компиляции кода запустите в командной строке скрипт:
sh install.sh
После его завершения в папке build появится исполняемый файл imat.
2) Формат запуска:
./imat <индекс начальной серии> <индекс конечной серии> <путь к папке с панорамами> [путь к папке с кэшем]
Пример: ./imat 1 6000 /shared/yandex/results
Выход: ./tosend.txt
3) Общее время работы на Core i7 3.2Ghz (4cores + HT) с использованием 8 потоков составляет ~10 ч. При этом стратегия, основанная на гистограммах, требует только несколько минут вычислений и даёт основной вклад в результат (рейтинг более 96% на первой базе изображений).
4) Cross-check стратегия использует несколько методов, вызывающих функцию rand() для генерации случайных чисел (вычисление гомографии по схеме RANSAC, FLANN-based матчер). Так как мы используем распараллеливание на несколько потоков, при котором каждая серия независимо обрабатывается своим потоком, мы получаем неопределенность в использовании случайных чисел. Таким образом, результат работы приложения недетерминирован в случае использования нескольких потоков и может немного варьироваться от запуска к запуску.
5) Есть возможость сохранять часть промежуточных данных (матрицы дистанций между гистограммами; соответствия, найденные с помощью FLANN; матрицы с количеством инлаеров для Cross-Check стратегии) в кеш, и подгружать их из кеша.
Для этого требутся в коде сменить значение констант (*_flann_inliers_cache и др. в interfaces.hpp) и указать путь к кеш-папке.
При необходимости, мы можем предоставить 12 Гб кеша с данными, на которых мы получили наш финальный результат. Это позволит ускорить вычисления (расчет с использованием кеша занимает несколько минут), к тому же использование этого кеша исключает случайную компоненту.