Skip to content

Latest commit

 

History

History
104 lines (69 loc) · 10.8 KB

REPORT_ru.md

File metadata and controls

104 lines (69 loc) · 10.8 KB

Анализ Выполненной Работы

Результаты и Анализ

a. Финальные результаты на тестовой и тренировочной выборке

  • Рeзультаты основного алгоритма :

    Object Detector Model

    • F1 Score: 0.759
    • Recall: 0.961
    • Precision: 0.628

    Detector Metrics file

  • Результаты по Отдельным Видео: Файлы video_3.mp4, video_5.mp4, video_7.mp4

  • Выбор файлов на тест: простое видео с постоянными объектами на площадке (видео 7), простое видео с переменными объектами на площадке (видео 5), видео с переменными объектами в зоне полигона, но также с постоянными объектами на краях полигона (видео 3). Также из тренировки были удалены видео 16 и 17, так как они являются дублирующими видео 3 и 4.

  • Результаты Бейзлайнового Метода:

    Baseline model

    • F1 Score: 0.616
    • Recall: 0.690
    • Precision: 0.557

    Baseline Metrics file

Интерпретация Результатов

  1. Общие Результаты:

    • Высокий Recall (0.961) говорит о том, что алгоритм хорошо находит объекты первого класса. Однако, не очень высокий уровень Precision (0.628) указывает на наличие значительного количества ложных срабатываний (False Positive). F1 Score (0.759), который является балансом между Recall и Precision, также хорош, но не идеален из-за упомянутых компромиссов.
  2. Сравнение с Бейзлайновым Методом:

    • Алгоритм с детектором превосходит бейзлайновый метод по всем метрикам. Это особенно заметно в более высоких значениях Recall и F1 Score.
  3. Оговорки:

    • Несмотря на приемлемый результат на тесте, следует учитывать, что при некоторых условяих алгоритм плохо работает, о которых написано ниже. Если специально стараться подобрать тестовые видео, то можно получить плохие результаты.

i. Используемые Метрики и Причины Выбора

  • Recall: Эта метрика была выбрана, так как она показывает насколько хорошо алгоритм определяет объекты класса 1. Чем ниже полнота, тем больше риск не обнаружить транспортное средство в зоне полигона (выше False Negative), что может привести к аварии.
  • Precision: Необходима для снижения ошибок типа False Positive. Низкая точность приводит к ложным срабатываниям, что может вызвать, например, недовольство у диспетчеров или ненужные проверки.
  • F1 Score: Используется для баланса между Recall и Precision, особенно важно в условиях дисбаланса данных.
  • Accuracy: Не использовалась из-за наличия дисбаланса в данных.

ii. Ограничения Решения

  • Обработка объектов у Границ Полигонов: Модель испытывает трудности с объектами у границ полигона.
  • Особенности аэропортов: Детектор не дообучался на данных, поэтому иногда он пропускает, например, буксировочные машины, которые не встретить в обычной жизни.
  • Онлайн Обработка: Необходимо адаптировать алгоритм для покадровой обработки в режиме онлайн.

iii. Скрипт для запуска подсчета метрик

python object_detection_task/metrics/calculate_metrics.py -v resources/videos/video_test.mp4 -i resources/time_intervals.json -p resources/polygons.json -o resources/metrics_video_test.json

b. Выбор Технологий для Решения

Бейзлайн (Дисперсия Яркости):

Дисперсия Яркости пикселей исследована как бейзлайновый подход. Обрезанные ближе к размерам полигона кадры преобразуются в дисперсии яркости. Далее для каждого видео результаты нормируются к стандартному среднему и выбирается порог, который максимизирует F1 метрику. Данный подход был выбран за свою простоту и быструю реализацию, но он показал эффективность хуже, чем алгоритм с детектором.

Object Detector и перебор порогов на пересечение с полигоном:

С помощью предобученного детектора на каждом кадре находятся объекты. После этого считаются относительные площади пересечения каждого Bounding Box объекта с полигоном. После этого перебором выбираются пороги для относительной площади и величины уверенности детектора в найденном объекте. Выбираются пороги по максимальной F1 метрике. В качестве детектора была выбрана YOLOv5 за простоту и высокую эффективность.

c. Репозиторий Github с кодом на python, который обрабатывает видео

Этот репозиторий: https://github.com/kirill-push/object-detection-task

d. Скрипт на python3, который обрабатывает видеофайл и сохраняет результаты в JSON

Скрипт run_detector.py

Для получения полных инструкций по запуску run_detector.py файла нажмите здесь.

Кратко:

   python object_detection_task/detector/run_detector.py -v path/to/video.mp4 -p path/to/polygon.json -o path/to/save/results.json [-t path/to/thresholds.json]

Скрипт run_detector.sh

Можно выполнить run_detector.sh с пользовательскими путями к видео, полигону и месту сохранения результатов. Файл Polygon должен содержать словарь, такой же, как в исходном файле polygons.json.

   ./run_detector.sh video_path polygon_path output_path

Рекомендации для Улучшения

  1. Улучшение Разметки: Провести подробный анализ ошибок алгоритма, возможно следует переразметить некоторые данные для устранения ошибок (ошибки присутствую).
  2. Увеличение объема тестовой и тренировочной выборок: для большей уверености в результатах (а также для использования более продвинутых решений) следует увеличить выборку.
  3. Интеграция Последовательности Кадров: Использовать информацию о последовательности для повышения точности.
  4. Дообучение Модели: Адаптировать детектор для обнаружения объектов, характерных для аэропортов, провести дообучение детектора. Возможно использование обучение предобученного бекбоуна от детектора с решающей головой, которые на вход будет принимать кадр, а на выходе возвращать вероятность наличия помехи в полигоне.
  5. Комбинирование Детектора с Трекингом: Использование трекинга может улучшить результаты обнаружения.
  6. Применение Сегментации: Для более точного определения пересечения объектов с полигоном.
  7. Тестирование кода: Написать тесты, покрывающие весь код и рассматривающие всевозможные варианты использование модели.

Выводы

Данное решение демонстрирует хорошие результаты на тестовой выборке, но имеет ряд ограничений, связанных с качеством разметки данных, обработкой объектов на границах полигонов, особенности транспорта в аэрпорту и неиспользованием информации о последовательности видеокадров. В дальнейшем следует работать над улучшением модели, а также экспериментировать с использованием более сложных решений.