forked from PhotogrammetryCourse/PhotogrammetryTasks2024
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
fc35f25
commit 683efdd
Showing
1 changed file
with
60 additions
and
60 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,60 +1,60 @@ | ||
В этом репозитории предложены задания курса по Фотограмметрии для студентов МКН/ИТМО/ВШЭ. | ||
|
||
[Остальные задания](https://github.com/PhotogrammetryCourse/PhotogrammetryTasks2024/). | ||
|
||
# Задание 2. Сопоставление ключевых точек и подсчет гомографии | ||
|
||
[![Build Status](https://github.com/PhotogrammetryCourse/PhotogrammetryTasks2024/actions/workflows/cmake.yml/badge.svg?branch=task02&event=push)](https://github.com/PhotogrammetryCourse/PhotogrammetryTasks2024/actions/workflows/cmake.yml) | ||
|
||
0. Скачать себе ветку task02 и смерджить в нее свою реализацию SIFT | ||
1. Выполнить задания ниже (при тестировании Github Actions CI использует GCC 11, поэтому если вы используете фичи свежее чем C++17 - есть риск что не скомпилируется, в таком случае поправьте пожалуйста) | ||
2. Отправить **Pull-request** с названием```Task02 <Имя> <Фамилия> <Аффиляция>```: | ||
|
||
- Скопируйте в описание [шаблон](https://raw.githubusercontent.com/PhotogrammetryCourse/PhotogrammetryTasks2024/task02/.github/pull_request_template.md) | ||
- Обязательно отправляйте PR из вашей ветки **task02** (вашего форка) в ветку **task02** (основного репозитория) | ||
- Перечислите свои мысли по вопросам поднятым в коде и просто появившиеся в процессе выполнения задания (выписывайте их с самого начала в отдельный текстовый файл, в шаблоне предложены некоторые вопросы) | ||
- Создайте PR | ||
- Затем дождавшись отработку Travis CI (около 15 минут) - скопируйте в описание PR вывод исполнения вашей программы **на CI** (через редактирование описания PR) | ||
|
||
**Мягкий дедлайн**: лекция 26 февраля. | ||
|
||
**Жесткий дедлайн**: вечер 4 марта. | ||
|
||
Задание 2.0. | ||
========= | ||
|
||
Ознакомьтесь со структурой проекта: | ||
|
||
1. ```src/phg/matching/```, ```src/phg/sfm/``` - основная часть где вы будете реализовывать алгоритм | ||
|
||
2. ```tests/test_matching.cpp``` - тесты которые будут прогонять ваш алгоритм на каких-то относительно простых манипуляциях с маленькими картинками, если вам хочется добавить другие сценарии тестирования (возможно с другими метриками) - здорово! | ||
|
||
3. ```data/src``` - исходные данные используемые при тестировании (к ним используются относительные пути, поэтому нужно выставить Working directory = путь к проекту) | ||
|
||
4. ```data/debug/test_matching``` - сюда тесты сохранят картинки с визуализацией результата | ||
|
||
5. ```data/debug/test_matching``` - сюда вам предлагается сохранять любые промежуточные картинки-визуализации, это очень полезно для отладки, оценки качества, уверенности и в целом один из немногих способов качественно "заглянуть в черную коробку" | ||
|
||
Задание 2.1. | ||
========= | ||
|
||
1. Убедитесь что у вас все компилируется и тесты проходят. | ||
|
||
2. Ознакомьтесь с тем как проводится тестирование - ```tests/test_matching.cpp```: | ||
|
||
3. Обратите внимание что там в качестве метода фильтрации метчей, полученных поиском ближайших соседей, используется [GMS matcher](https://github.com/JiawangBian/GMS-Feature-Matcher). Это метод, идейно похожий на Cluster filtering, который вам предстоит реализовать, но построен немного иначе и не ищет явно в каждой точке ближайших соседей. Потенциально он может лучше работать в случае, когда очень много шумных матчей - тогда даже если хорошие сопоставления расположены плотно, между ними втискиваются шумные матчи и уменьшают размер пересечения множеств ближайших соседей. Вы можете попробовать проверить, так ли это, реализовав свой Cluster filtering, включив ENABLE_MY_MATCHING и найдя тест, в котором переменная good_clusters обращается в ноль. (тест при этом может проходить, так как для оценки гомографии включены одновременно и Ratio-test и Cluster filtering, за это отвечает переменная good_ratio_and_clusters) | ||
|
||
4. Посмотрите на картинки, которые сохранились в папку ```data/debug/test_matching```. В частности, интересно посмотреть, насколько большая разница между шумными матчами, полученными методом поиска ближайших соседей и прошедшими фильтрацию. В вашем задании нужно будет добиться сопоставимого качества с помощью Ratio-test и Cluster filtering. | ||
|
||
|
||
Задание 2.2. | ||
========= | ||
|
||
1. Включите тестирование вашего матчинга - см. **ENABLE_MY_MATCHING** в ```test/test_matching.cpp``` | ||
2. Реализуйте пропущенные участки алгоритма, проверьте, что все тесты проходят | ||
3. Включите тестирование вашего SIFT - см. **ENABLE_MY_DESCRIPTOR** в ```test/test_matching.cpp``` | ||
4. Проверьте, что тесты продолжают проходить. Если это не так, постарайтесь понять в чем причина с помощью отладочного вывода (просмотра дебаговых картинок, сравнения количества найденных сопоставлений на разных шагах матчинга с разными дескрипторами и тд.). Если заставить работать не получилось, коммитьте решение с выключенным **ENABLE_MY_DESCRIPTOR** чтобы проходили тесты. Баллы в этом случае не снимаются, но у вас может остаться неприятное чувство неполноценности проекта как самостоятельной единицы. | ||
|
||
- Если все хорошо, за выполненное задание дается **8 баллов** | ||
- **1 доп. балл** можно получить, если при оценке матрицы гомографии реализовать метод **A contrario RANSAC**, не требующий на вход порога (см. homography.cpp:166) | ||
- **1 доп. балл** можно получить, если реализовать Brute-force матчер на GPU. Для включения его в тестах см. **ENABLE_GPU_BRUTEFORCE_MATCHER** в ```test/test_matching.cpp``` | ||
В этом репозитории предложены задания курса по Фотограмметрии для студентов МКН/ИТМО/ВШЭ. | ||
|
||
[Остальные задания](https://github.com/PhotogrammetryCourse/PhotogrammetryTasks2024/). | ||
|
||
# Задание 2. Сопоставление ключевых точек и подсчет гомографии | ||
|
||
[![Build Status](https://github.com/PhotogrammetryCourse/PhotogrammetryTasks2024/actions/workflows/cmake.yml/badge.svg?branch=task02&event=push)](https://github.com/PhotogrammetryCourse/PhotogrammetryTasks2024/actions/workflows/cmake.yml) | ||
|
||
0. Скачать себе ветку task02 и смерджить в нее свою реализацию SIFT | ||
1. Выполнить задания ниже (при тестировании Github Actions CI использует GCC 11, поэтому если вы используете фичи свежее чем C++17 - есть риск что не скомпилируется, в таком случае поправьте пожалуйста) | ||
2. Отправить **Pull-request** с названием```Task02 <Имя> <Фамилия> <Аффиляция>```: | ||
|
||
- Скопируйте в описание [шаблон](https://raw.githubusercontent.com/PhotogrammetryCourse/PhotogrammetryTasks2024/task02/.github/pull_request_template.md) | ||
- Обязательно отправляйте PR из вашей ветки **task02** (вашего форка) в ветку **task02** (основного репозитория) | ||
- Перечислите свои мысли по вопросам поднятым в коде и просто появившиеся в процессе выполнения задания (выписывайте их с самого начала в отдельный текстовый файл, в шаблоне предложены некоторые вопросы) | ||
- Создайте PR | ||
- Затем дождавшись отработку Travis CI (около 15 минут) - скопируйте в описание PR вывод исполнения вашей программы **на CI** (через редактирование описания PR) | ||
|
||
**Мягкий дедлайн**: лекция 26 февраля. | ||
|
||
**Жесткий дедлайн**: вечер 4 марта. | ||
|
||
Задание 2.0. | ||
========= | ||
|
||
Ознакомьтесь со структурой проекта: | ||
|
||
1. ```src/phg/matching/```, ```src/phg/sfm/``` - основная часть где вы будете реализовывать алгоритм | ||
|
||
2. ```tests/test_matching.cpp``` - тесты которые будут прогонять ваш алгоритм на каких-то относительно простых манипуляциях с маленькими картинками, если вам хочется добавить другие сценарии тестирования (возможно с другими метриками) - здорово! | ||
|
||
3. ```data/src``` - исходные данные используемые при тестировании (к ним используются относительные пути, поэтому нужно выставить Working directory = путь к проекту) | ||
|
||
4. ```data/debug/test_matching``` - сюда тесты сохранят картинки с визуализацией результата | ||
|
||
5. ```data/debug/test_matching``` - сюда вам предлагается сохранять любые промежуточные картинки-визуализации, это очень полезно для отладки, оценки качества, уверенности и в целом один из немногих способов качественно "заглянуть в черную коробку" | ||
|
||
Задание 2.1. | ||
========= | ||
|
||
1. Убедитесь что у вас все компилируется и тесты проходят. | ||
|
||
2. Ознакомьтесь с тем как проводится тестирование - ```tests/test_matching.cpp```: | ||
|
||
3. Обратите внимание что там в качестве метода фильтрации метчей, полученных поиском ближайших соседей, используется [GMS matcher](https://github.com/JiawangBian/GMS-Feature-Matcher). Это метод, идейно похожий на Cluster filtering, который вам предстоит реализовать, но построен немного иначе и не ищет явно в каждой точке ближайших соседей. Потенциально он может лучше работать в случае, когда очень много шумных матчей - тогда даже если хорошие сопоставления расположены плотно, между ними втискиваются шумные матчи и уменьшают размер пересечения множеств ближайших соседей. Вы можете попробовать проверить, так ли это, реализовав свой Cluster filtering, включив ENABLE_MY_MATCHING и найдя тест, в котором переменная good_clusters обращается в ноль. (тест при этом может проходить, так как для оценки гомографии включены одновременно и Ratio-test и Cluster filtering, за это отвечает переменная good_ratio_and_clusters) | ||
|
||
4. Посмотрите на картинки, которые сохранились в папку ```data/debug/test_matching```. В частности, интересно посмотреть, насколько большая разница между шумными матчами, полученными методом поиска ближайших соседей и прошедшими фильтрацию. В вашем задании нужно будет добиться сопоставимого качества с помощью Ratio-test и Cluster filtering. | ||
|
||
|
||
Задание 2.2. | ||
========= | ||
|
||
1. Включите тестирование вашего матчинга - см. **ENABLE_MY_MATCHING** в ```test/test_matching.cpp``` | ||
2. Реализуйте пропущенные участки алгоритма, проверьте, что все тесты проходят | ||
3. Включите тестирование вашего SIFT - см. **ENABLE_MY_DESCRIPTOR** в ```test/test_matching.cpp``` | ||
4. Проверьте, что тесты продолжают проходить. Если это не так, постарайтесь понять в чем причина с помощью отладочного вывода (просмотра дебаговых картинок, сравнения количества найденных сопоставлений на разных шагах матчинга с разными дескрипторами и тд.). Если заставить работать не получилось, коммитьте решение с выключенным **ENABLE_MY_DESCRIPTOR** чтобы проходили тесты. Баллы в этом случае не снимаются, но у вас может остаться неприятное чувство неполноценности проекта как самостоятельной единицы. | ||
|
||
- Если все хорошо, за выполненное задание дается **8 баллов** | ||
- **1 доп. балл** можно получить, если при оценке матрицы гомографии реализовать метод **A contrario RANSAC**, не требующий на вход порога (см. homography.cpp:166) | ||
- **1 доп. балл** можно получить, если реализовать Brute-force матчер на GPU. Для включения его в тестах см. **ENABLE_GPU_BRUTEFORCE_MATCHER** в ```test/test_matching.cpp``` |