Skip to content

itseez-academy/itseez-ss-2015-practice3-detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Практика 3. Детекция шаблонов

Цели

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

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

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

  • images -- директория, где находятся данные для обучения детектора: изображения логотипов Itseez, ННГУ, OpenCV, а также набор изображений, не содержащих данные логотипы (негативы).
  • videos -- директория с тестовыми видео: logos.mp4 содержит логотипы ННГУ и OpenCV, anthem.avi -- лица людей.
  • scripts -- директория с Python-скриптом, являющимся оберткой над С++-приложениями из состава OpenCV, и позволяющим создать обучающую выборку и настроить детектор на поиск определенных объектов.
  • apps -- директория с С++-приложением, осуществляющим детектирование на изображениях и видео, которое требуется реализовать.
  • .gitignore -- список файлов, находящихся в директории проекта, но игнорируемые git'ом.
  • .travis.yml -- конфигурационный файл для системы автоматического тестирования Travis-CI.
  • CMakeLists.txt -- общий файл для сборки проекта с помощью CMake.
  • README.md -- информация о проекте, которую вы сейчас читаете.

Задачи

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

  1. С помощью предоставленных скриптов обучить детекторы логотипов ННГУ и OpenCV.
  2. Реализовать приложение, осуществляющее детектирование объектов определенного класса на одиночном изображении.
  3. Добавить возможность детектирования на видео.
  4. Добавить возможность детектирования объектов нескольких классов на одном изображении/видео одновременно.
  5. Применить полученные самостоятельно детекторы и стандартные детекторы из состава OpenCV к тестовым видео. Визуально сравнить качество различных детекторов для одних и тех же объектов.

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

  1. Разработать и реализовать простой метод удаления случайных срабатываний. Т.е. если в определенной области кадра видео в определенный момент времени имеется срабатывание детектора и при этом на соседних кадрах близкого срабатывания не наблюдается, то данное срабатывание можно подавить как недостаточно надежное.

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

  1. Сделать форк upstream-репозитория, затем клонировать origin к себе на локальную машину. Для инструкций можно обратиться к разделу Общие инструкции по работе с Git в практической работе 1.
  2. Собрать проект с помощью CMake и MS VS (см. раздел Сборка проекта с помощью CMake и MS VS в практической работе 1). В результате успешной сборки в build-каталоге в директории bin долен появить исполняемый файл detector.exe, а также Python-скрипты deps.py и train_cascade_detector.py
  3. Запустив скрипт <project_build>/bin/train_cascade_detector.py, обучить детекторы для логотипов ННГУ и OpenCV (см. директорию <project_source>/images/positives). Справку по использованию скрипта можно получить указав при его запуске ключ --help.
  4. Создать новую ветку для разработки собственного приложения (см. раздел Общие инструкции по работе с Git в практической работе 1).
  5. Создать копию файла /apps/detector.cpp и назвать ее <project_source>/apps/detector_YOUR_NAME.cpp. Далее изменять код только в файле <project_source>/apps/detector_YOUR_NAME.cpp, но не в <project_source>/apps/detector.cpp.
  6. Убедиться, что проект успешно собирается и создается новый исполняемый файл <project_build>/bin/detector_YOUR_NAME.exe.
  7. Прислать Pull Request с внесенными изменениями. Пометить в конце названия (NOT READY). По мере готовности решений основных задач Pull Request можно будет переименовать.
  8. В файле <project_source>/apps/detector_YOUR_NAME.cpp реализовать детектирование на статичном изображении. Путь к файлу с изображением передается в программу с помощью ключа --image. Детектор загружается из файла, заданного посредством ключа --detector. Полный список принимаемых параметров можно посмотреть запустив исполняемый файл с ключом --help. См. документацию к классу cv::CascadeClassifier (методы load и detectMultiScale).
  9. Реализовать поддержку детектирования на видео из файла (ключ --video) или с камеры (--camera). См. документацию к классу cv::VideoCapture для работы с видео.
  10. Добавить возможность детектирования объектов нескольких классов одновременно. Т.е., чтобы к одному и тому же изображению применялись несколько различных детекторов и результат работы каждого отображался определенным цветом.
  11. Изменяя параметры обучения детекторов (тип используемых признаковых описаний) визуально сравнить их влияние на качество детектирования на тестовых видео (из директории videos). Также применить готовые детекторы лиц из библиотеки OpenCV (директории <opencv_source>/data/haarcascades и <opencv_source>/data/lbpcascades).
  12. Решить задачи из списка Дополнительные задачи.

About

Practice, Day 3 -- Object Detection

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published