Для установки окружения используется 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.
- Track Fragmentation: Метрика прерывания пути.
- Track Purity: Относительная метрика стабильности пути.
- Track Length: Абсолютная метрика стабильности пути.
- Mismatch error: Метрика относительной ошибки присваивания индекса.
Для удобства, мы продублируем их здесь тоже:
| 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 |
| 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 |
pip install -r requirements.txt
Или настройте запуск файла fastapi_server.py как приведено на скриншоте ниже
![]()
или командой в терминале
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: с какой вероятностью объект на фрейме может быть не найдет детектором