С чего начать исследования по распознаванию видео
Когда-нибудь в середине будущего я хочу начать развивать свою систему домашней автоматизации, чтобы иметь возможности видео. Я начал кое-какие исследования по этому вопросу, я терпелив и быстро учусь, но это очень плотная область и гораздо более математически интенсивная, чем я привык. Я никогда ничего не делал с видео программно, и хотя я читал документы для OpenCV и некоторые действительно интенсивные вещи, такие как исследовательские работы здесь, удручающее количество этого-тарабарщина для меня. Я делаю у меня есть опыт в многовариантном исчислении и линейной алгебре, но это было очень давно. Прямо сейчас я делаю почти все мое программирование на Java, с растущим количеством C#. Я также прохожу курс машинного обучения, который, как мне кажется, поможет в классификации объектов.
Какой здесь уровень земли? Какую математику мне нужно изучать, какие приложения Hello World я должен писать, какие камеры мне нужны? Каков язык выбора для такого рода работы? Что есть и есть на самом деле это невозможно с современным уровнем техники прямо сейчас?
Цели:
Вот некоторые из вещей, которые я надеюсь когда-нибудь сделать с этим:
Для начала я хотел бы большую часть времени хранить короткую "буферную" историю и начинать запись в локальную сеть либо при распознавании определенных функций, либо при возникновении определенных событий другими частями системы.
Я хотел бы эмулировать Dropcam "зоны активности" , где пользователь может определите значимые области в точке обзора фиксированной камеры и укажите пользовательские события, которые будут связаны с движением в этих областях.
Я хотел бы иметь возможность распознавать лица и сравнивать с небольшой базой данных известных обученных примеров, чтобы установить в реальном времени, в сочетании с другими датчиками присутствия, кто находится в комнате.Я хотел бы иметь возможность использовать несколько камер для отслеживания местоположения объектов в реальном времени по предоставленному плану этажа.
Я играл вокруг некоторые с различными микроконтроллерами, и я хотел бы сделать столько предварительной обработки, сколько я могу на камере, прежде чем видео поступает на мой центральный сервер, чтобы распараллелить вещи, насколько я могу.
2 ответа:
Вот мои скромные предложения.
Для фона, это может помочь вам ознакомиться с полем компьютерного зрения в целом (так как то, что вы делаете, относится к его классической области). Полезные математические предпосылки включают обработку сигналов (т. е. теорию преобразования Фурье), которая часто используется для распознавания в робототехнике и для обработки изображений в целом, "математическое Программирование" (выпуклая оптимизация, линейное/целочисленное программирование и т. д...), и некоторые теории вероятностей / стохастические процессы и матричное исчисление (особенно если вы хотите отслеживать с помощью фильтров Калмана или фильтров частиц). Однако знание всего этого фона не нужно, если вы просто планируете использовать такие инструменты, как OpenCV.
Для литературы перейдите в google scholar и введите "отслеживание движения" или "распознавание видео", например.
Честно говоря, для реального времени я не думаю, что C++ имеет большую конкуренцию. Вы уже посмотрели на OpenCV,но посмотрите и на Boost. Matlab также имеет некоторые быстрые и удивительные ящики с инструментами, но очевидно меньшая гибкость. И дорого. Я тоже слышал много хорошего о новейшей mathematica для компьютерного зрения, но у нее есть аналогичные проблемы с matlab.Однако, поскольку вы только начинаете работать в этой области, я предлагаю начать с Python. Комбинация numpy, scipy, scikit-learn потрясающая, и у нее есть привязки opencv. Также проверьте PyStruct для структурированного обучения ,что действительно хорошо для такого рода вещей, и Theano для глубокого обучения. Эти инструменты являются медленный, но почти до смешного простой в использовании; отлично подходит для прототипирования.
Поскольку большинство вещей, которые вы хотели бы сделать, попадают в компьютерное зрение, лучше изучить современные технологии. На данный момент это глубокое обучение(с помощью которого получены результаты sota в распознавании видео активности, обнаружении и отслеживании объектов и др.).
Для углубленного изучения математики вам потребуются линейная алгебра, теория вероятностей и статистика, многомерное исчисление и некоторые методы оптимизации.Вы можете начать читать Эту книгу. Она предполагает наименьший фон.
В программировании достаточно знать python.
Для кураторского списка ресурсов глубокого обучения для компьютерного зрения, проверьтеЭтот веб-сайт . Он также содержит информацию об анализе видео.