Skip to content

Saldern/practice4-tracking

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Практика 4. Детектирование особых точек и трекинг

Цели

Цель данной работы - получить общее представление о фундаментальных объектах компьютерного зрения - особых точках. Рассмотреть одно из возможных применений - трекинг объектов.

Общая структура проекта

Данный репозиторий содержит:

  • include -- директория с заголовочным файлом, содержащим интерфейс трекера
  • samples -- директория с исходным кодом приложения, которое запускает трекинг на видео. Имя алгоритма и путь к видео передаются параметрами командной строки. Кроме того, может быть указан файл с описанием ground-truth траектории, в этом случае приложение также выдаст метрики precision и recall для запускаемого трекера.
  • dataset -- директория с примерами видео. Для каждого видео имеется одноименный файл с расширением .txt, в котором указана ground-truth траектория.
  • .gitignore -- список файлов, находящихся в директории проекта, но игнорируемые git'ом.
  • .travis.yml -- конфигурационный файл для системы автоматического тестирования Travis-CI.
  • CMakeLists.txt -- общий файл для сборки проекта с помощью CMake.
  • README.md -- настоящий файл.

Задачи

Основные задачи:

  1. Реализовать алгоритм трекинга Median Flow
  2. Собрать качественные метрики на имеющемся наборе видео, дать им оценку

Дополнительные задачи:

  1. Улучшить качественные оценки трекинга при помощи реализации вспомогательных процедур:
    • использование различных способов фильтрации точек (фиксированный порог, среднее и т.п.)
    • оценка масштаба
    • использование различных особых точек (Harris corners, goodFeaturesToTrack, SIFT/SURF/ORB features и т.п.)
    • детектировать срыв трекинга

Общая последовательность действий

  1. Сделать форк upstream-репозитория, затем клонировать origin к себе на локальную машину.
  2. Собрать проект с помощью CMake и MS VS. В результате успешной сборки в build-каталоге в директории bin долен появить исполняемый файл tracking_sample.exe
  3. Запустить tracking_sample.exe для получения справки и разобраться с параметрами его запуска.
  4. Добавить новую реализацию интерфейса Tracker.
  5. Реализовать примитивную версию алгоритма Median Flow
  6. Запустить реализованный трекер на различных видео из каталога dataset, проанализировать его качество
  7. Реализовать полную версию алгоритма, проанализировать качество
  8. Попытаться ещё улучшить качество (см. Дополнительные задачи)

Детальная инструкция по выполнению работы

  1. Сделать форк upstream-репозитория, затем клонировать origin к себе на локальную машину. Для инструкций можно обратиться к разделу [Общие инструкции по работе с Git][git-intro] в [практической работе 1][practice1].
  2. Собрать проект с помощью CMake и MS VS (см. раздел [Сборка проекта с помощью CMake и MS VS][cmake-msvs] в [практической работе 1][practice1]). В результате успешной сборки в build-каталоге в директории bin долен появить исполняемый файл tracking_sample.exe
  3. Запустить tracking_sample.exe для получения справки и разобраться с параметрами его запуска.
    1. Приложение можно запускать без параметров - тогда оно просто выдает справку.
    2. Можно также передать 2 параметра, например tracking_sample.exe dummy ../../dataset/car.mp4. Тогда откроется окно, в котором нужно будет мышью выбрать объект для трекинга. После чего будет показан результат трекинга с использованием указанного алгоритма (в данном случае - dummy)
    3. Можно передать 3 параметра, например, tracking_sample.exe dummy ../../dataset/car.mp4 ../../dataset/car.txt. Тогда, кроме результатов указанного трекера, будет показан также ground-truth. А по завершении видео, будут выведены качественные оценки алгоритма.
  4. Добавить новую реализацию интерфейса Tracker.
    1. Добавить новый файл с расширением .cpp в директорию samples (например, tracker_median_flow.cpp).
    2. Перезапустить CMake, чтобы он "подхватил" созданный файл.
    3. Реализовать в созданном файле интерфейс Tracker, аналогично реализации в файле tracker_dummy.cpp. Тела методов могут быть пока тривиальными.
    4. Добавить свою реализацию в функцию-фабрику createTracker в файле trackers_factory.cpp.
  5. Реализовать примитивную версию алгоритма Median Flow. Метод track в созданной реализации должен содержать:
    1. Выбор точек в прямоугольнике
    2. Вычисление для них optical flow (и фильтрация "плохих" точек)
    3. Выбор медианных смещений по X и по Y
  6. Запустить реализованный трекер на различных видео из каталога dataset, проанализировать его качество. Насколько полученные оценки близки к 1? В каких случаях алгоритм срабатывает плохо?
  7. Реализовать полную версию алгоритма, проанализировать качество. Шаги "полного" алгоритма следующие:
    1. Выбрать точки в прямоугольнике
    2. Вычислить для них optical flow (и отбросить "плохие")
    3. Вычислить обратный optical flow (и отбросить плохие по forward-backward правилу)
    4. Взять медианные смещения по X и по Y
    5. Оценить масштаб Фильтрация по forward-backward правилу осуществляется следующим образом:
    6. Вычислить optical flow в обратном направлении
    7. Отфильтровать точки - если положение оригинальной точки и её образа, вычисленного с помощью forward-backward flow "сильно" отличаются, её нужно отбросить Фильтрация "плохих" точек осуществляется следующим образом:
    8. Найти медианную ошибку
    9. Назначить "плохими" все точки с большей ошибкой Оценка масштаба осуществляется следующим образом:
    10. Для всех пар точек нужно определить отношение расстояния между ними на предыдущем и следующем кадре
    11. Выбрать медианное отношение
  8. Попытаться ещё улучшить качество (см. Дополнительные задачи)

About

Practice, Day 4 -- Object Tracking

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • CMake 76.2%
  • C++ 23.8%