Skip to content

Latest commit

 

History

History
63 lines (48 loc) · 6.47 KB

README_4.md

File metadata and controls

63 lines (48 loc) · 6.47 KB

Практика 4. Слежение за объектами через нахождение соответствий

Цели

Цель данной работы - знакомство с трекингом объектов; реализация трекинга объектов, включающая детектирование объектов на каждом кадре и решение задачи о назначениях. Для решения задачи о назначениях использовать венгерский алгоритм или алгоритм полного перебора.

В репозиторий CV-SUMMER-CAMP была включена готовая реализация венгерского алгоритма от Леонида Бейненсона (добавлена в opencv_contrib). Пошаговое описанеи алгоритма тренига представлено в файле Google Docs.

Структура исходного кода

  • include/tracking_by_matching.hpp - заголовочный файл с объявлением класса, реализующего трекинг;
  • src/tracking_by_matching.cpp - реализация методов класса трекинга (с использованием задачи о назначениях);
  • src/kuhn_munkres.hpp - заголовочный файл с объявлением класса, реализующего решение задачи о назначениях;
  • src/kuhn_munkres.cpp - реализация методов класса для решения задачи о назначениях;
  • samples/practice4.cpp - пример использования разработанных кодов для трекинга.

Задачи

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

  1. Ознакомиться с исходным кодом трекинга.
  2. Скачать модель для детектирования объектов mobilenet-ssd.
  3. Запустить пример practice4, удостовериться в его работоспособности.
  4. Модифицикация кода: добавить возможность детектировать ОПРЕДЕЛЕННОЕ подмножество классов из всех доступных.

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

  1. Разработать собственную реализацию решения задачи о назначениях, используя:
    • алгоритм полного перебора или
    • венгерский алгоритм.
  2. Модификация кода: добавить возможность выбора наилучшего варианта в случае, когда нейросеть относит данный объект к двум (и более) разным классам.

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

  1. Скачать актуальную версию исходных кодов (получить данные с репозитория itlab-vision/CV-SUMMER-CAMP).
  2. Скачать модель для детектирования объектов mobilenet-ssd.
  3. Запустить пример practice4, удостовериться в его работоспособности, разобрать реализацию.
  4. Модифицировать код согласно заданию.
  5. Выполнить дополнительные задачи.

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

  1. в папке <openvino_dir>/deployment_tools/tools/model_downloader/ запустить скрипт downloader.py с параметрами --name mobilenet-ssd --output <destination_folder>

    ```bash
    $ cd "C:\Intel\computer_vision_sdk\deployment_tools\tools\model_downloader"
    $ python downloader.py --name mobilenet-ssd --output <destination_folder>
    ```  
    

    Файл list_topologies.yml, расположенный в папке C:\Intel\computer_vision_sdk\deployment_tools\tools\model_downloader, содержит параметры, необходимые для корректной конвертации кадра для детектора.

  2. Создать копию файла <project_source>/src/practice4.cpp и назвать ее <project_source>/src/practice4_YOUR_NAME.cpp. Далее изменять код только в файле <project_source>/src/practice4_YOUR_NAME.cpp, но не в <project_source>/src/practice4.cpp.

  3. Ознакомиться с исходным кодом трекинга.

  4. Убедиться, что проект успешно собирается и создается новый исполняемый файл <project_build>/bin/practice4_YOUR_NAME.exe.

  5. Запустить проект, указав все необходимые аргументы командной строки. В качестве тестового видеороклика использовать видео catdog.mp4 из папки data.

  6. Повысить наглядность трекинга, изменить размер тип и размер шрифта, каждому классу назначить свой цвет, и т.д.

  7. В файле practice4_YOUR_NAME.cpp в классе DnnObjectDetector изменить функцию detect таким образом, чтобы она могла детектировать только некоторое подмножество классов.

  8. В файле practice4_YOUR_NAME.cpp изменить чтение параметра desired_class_id таким образом, чтобы можно было передавать массивы (например передавать строку, в которой имена классов разделены пробелом, и парсить эту строку).

  9. Решить задачи из списка Дополнительные задачи.