Git Product home page Git Product logo

practice3-detection's Introduction

Практика 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. Решить задачи из списка Дополнительные задачи.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.