Skip to content
 
 

Repository files navigation

Object Tracking Home assignment

Отчет

Установка и Воспроизводимость

Для установки окружения используется poetry:

poetry shell
poetry install

Для запуска web сервера используется следующая команда

poetry run uvicorn fastapi_server:app --reload --port 8001

Для эвалюации трекеров и сохранения репортов с метриками используется следующая команда

poetry run evaluation.py

Редактирование кода

Перед началом выполнения заданий мы отредактровали и улучшили уже существовавший код:

  • Улучшена воспроизводимость кода, используя менеджер окружения poetry
  • Исправлена стилистика кода, с использованием ruff
  • Добавлены endpoint'ы fastapi, чтобы можно было смотреть на веб-страницу с отображением результатов работы алгоритмов
  • Отредактирован модуль create_track.py -- была добавлена возможность динамически создавать различные траектории без ручного переноса в .py файлы, как это было раньше
  • Трекеры были вынесены в отдельный модуль, что облегчило восприятение серверной части

Трекеры и Метрики

Были реализованы soft и strong трекеры, а также реализованы метрики эвалюации данных трекеров. Хоть визуально строить метрики для отдельных тракеторий и получать метрики используя web приложение в fastapi_server мы реализовали модуль evaluate.py, в котором считали метрики для различных входных параметров траекторий и для различных трекеров. Далее метрики для каждого запуска, а также визуализация статистических данных автоматически сохранялись в .md файлы: Soft metrics и Strong metrics.

  1. Track Fragmentation: Метрика прерывания пути.
  2. Track Purity: Относительная метрика стабильности пути.
  3. Track Length: Абсолютная метрика стабильности пути.
  4. Mismatch error: Метрика относительной ошибки присваивания индекса.

Для удобства, мы продублируем их здесь тоже:

Soft Tracker

tracks_amount random_range bb_skip_percent Mismatch ratio Track fragmentation Track purity Average track length
0 5 0 0 1 0 1 41.2
1 5 0 0.05 1 0 1 41.4
2 5 0 0.25 0.78 5.6 0.542 25.4
3 5 0 0.5 0.761 4.2 0.722 17.6
4 5 10 0 0.897 3.6 0.795 35
5 5 10 0.05 0.856 5.2 0.69 36
6 5 10 0.25 0.814 4.2 0.718 22.6
7 5 10 0.5 0.719 5.4 0.583 19.2
8 10 0 0 0.957 1.6 0.887 36.8
9 10 0 0.05 0.919 2.7 0.833 33.3
10 10 0 0.25 0.786 5.2 0.673 24.3
11 10 0 0.5 0.615 7.7 0.558 20
12 10 10 0 0.888 4.2 0.784 37.4
13 10 10 0.05 0.906 3.5 0.811 37.3
14 10 10 0.25 0.702 9 0.585 30.2
15 10 10 0.5 0.577 7.1 0.538 16.8
16 20 0 0 0.904 3.55 0.734 37.1
17 20 0 0.05 0.849 5.3 0.584 35.05
18 20 0 0.25 0.697 7.55 0.504 24.9
19 20 0 0.5 0.548 8.05 0.384 17.8
20 20 10 0 0.823 6.1 0.566 34.55
21 20 10 0.05 0.824 6.4 0.577 36.4
22 20 10 0.25 0.673 8.4 0.459 25.7
23 20 10 0.5 0.597 7.3 0.389 18.1

Boxplot Boxplot Boxplot

Strong Tracker

tracks_amount random_range bb_skip_percent Mismatch ratio Track fragmentation Track purity Average track length
0 5 0 0 0.816 5.8 0.628 31.6
1 5 0 0.05 0.852 3.4 0.707 23
2 5 10 0 0.703 9.8 0.422 33
3 5 10 0.05 0.893 3.6 0.682 33.6
4 10 0 0 0.796 5.8 0.583 28.5
5 10 0 0.05 0.785 5.3 0.491 24.6
6 10 10 0 0.795 5.8 0.464 28.3
7 10 10 0.05 0.773 6.3 0.508 27.7

Boxplot Boxplot Boxplot

Установка зависимостей

pip install -r requirements.txt

Запуск сервера

Или настройте запуск файла fastapi_server.py как приведено на скриншоте ниже fastapi.png

или командой в терминале

python3 -m uvicorn fastapi_server:app --reload --port 8001 

Постановка задачи

Реализуйте методы tracker_soft и tracker_strong в скрипте fastapi_server.py, придумайте, обоснуйте и реализуйте метод для оценки качества разработанных трекеров. Сравните результаты tracker_soft и tracker_strong для 5, 10, 20 объектов и различных значений random_range и bb_skip_percent (информацию о генерации данных читай в пункте "Тестирование"). Напишите отчёт. В отчете необходимо в свободном стиле привести описание методов tracker_soft, tracker_strong, метода оценки качества трекеров, привести сравнительную таблицу реализованных трекеров, сделать вывод.
Бонусом можете выписать найденные баги в текущем проекте.

Тестирование

Для тестирования можно воспользоваться скриптом create_track.py. Скрипт генерирует информацию об объектах и их треках. Скопируйте вывод в новый скрипт track_n.py и скорректируйте импорт в fastapi_server.py

from track_n import track_data, country_balls_amount

Что стоит менять в скрипте create_track.py:
tracks_amount: количество объектов
random_range: на сколько пикселей рамка объектов может ложно смещаться (эмуляция не идеальной детекции)
bb_skip_percent: с какой вероятностью объект на фрейме может быть не найдет детектором

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages