Вчера мы рассказали о том, что объявляем конкурс на создание демонстрационного приложения на основе OpenCV для слежения за несколькими объектами, где в качестве приза будет поездка вместе с нашей командой на Шри-Ланку, а также предложение о работе в нашей компании.
Очень здорово, что конкурс был воспринят позитивно и нам активно стали писать всеми различными способами, чтобы уточнить те или иные вопросы. Многие из них были достаточно однотипными, поэтому нам бы хотелось ответить на них в виде отдельного небольшого топика.
1. Для детектирования и слежения за объектами очень важно знать что они из себя представляют. Какие предполагаются объекты слежения?
Ivideon это прежде всего система видеонаблюдения. Поэтому в большинстве случаев в роли объектов будут люди, автомобили, возможно животные. В процессе слежения объект может измениться достаточно сильно (с точки зрения преобразований). Но от кадра к кадру эти изменения будут такими, что можно будет идентифицировать объект. Все объекты являются частью реального мира и мы предполагаем, что они не могут внезапно исчезать или телепортироваться. Безусловно ошибки слежения будут. Главное, чтобы их было немного. Для конкурса полагаем, что камера установлена статично и не меняет своего положения во время работы.
2. Где можно получить сэмплы видео, которые будут использоваться для детектирования? Необходимо предварительно настроить классификаторы.
Мы намеренно не выкладываем видео последовательности, потому что для них можно будет разработать устойчивую работу алгоритма, который перестанет правильно работать, стоит только немного повернуть камеру. Очень не хотелось бы такого результата.
У нас один из самых требовательных пользователей — массовый. Например, некоторые устанавливают наше ПО на Pentium 3 и пишут отрицательный отзыв в GooglePlay, что оно у нас не работает и видео идет рывками, искренне не понимая, что для кодирования видео требуются более современные процессоры. Хотя оно и правильно. Пользователь не обязан об этом знать. Это наша недоработка, что мы ему об этом не говорим во время установки. К чему я это пишу? Просто мы сами не можем знать за чем захочет следить и что захочет считать пользователь. Вполне возможно, что завтра кто-нибудь сделает на базе Ivideon трансляцию тараканьих бегов с автоматическим определением победителя.
3. Можно ли использовать алгоритм Tracking-Learning-Detection (aka Predator)?
Безусловно можно. Но только саму идею, которая, к слову, новой не является. Так как, во-первых, он изначально создавался для слежения за одним объектом и не является законченным решением. А во-вторых, его исходные тексты распространяются под лицензией GPL, которой, к сожалению, мы пока не можем воспользоваться. В будущем, после выхода на заданные показатели мы обязательно сделаем существенную часть наших исходных текстов открытыми. А пока работающий код является одним из наших конкурентных преимуществ, которое мы не хотим сейчас терять.
4. Почему только C/C++? Можно сделать гораздо лучше, например, на C#
На данный момент все основные приложения у нас написаны на C++. Один и тот же код используется не только в Windows, но и в Linux и Mac OS X. Поэтому не хочется разводить зоопарк технологий, а также думать о том, как запускать C# на Mac и Linux. Надеемся на понимание.
5. Если я соберу готовый пример из OpenCV, можно ли мне его отправить на конкурс?
Безусловно, отправить можно. Но для нас очень важно, чтобы человек понимал, как этот пример работает. Компьютерное зрение достаточно обширная область знаний, которая за долгие годы накопила приличный математический аппарат, а также практическую реализацию тех или иных алгоритмов. Нужно иметь представление о них, понимать как они работают и когда их нужно использовать, а когда нет. Представлять их сложность и сколько они будут занимать вычислительных ресурсов. Без хорошего практического опыта вместе с профильным образованием это сложно сделать.
6. На конкурс представлено 3 задачи. Их нужно делать по отдельности.
Мне кажется, что это неправильно с точки зрения затрачиваемых ресурсов. Потому что при решении последовательно мы получаем полную информацию об объектах на первом этапе (слежение), которую можно использовать при подсчете пересечений на следующем этапе и детектировании появления/исчезновения.
7. Можно ли делать без OpenCV?
Если будут решаться те же задачи, то можно и без OpenCV. Просто в OpenCV реализованы основные примитивы для анализа изображений и можно сконцентрироваться на решении, а не создании собственных примитивов. На самом деле по большей части основные наработки из приведенных задач доступны в качестве примеров к самой библиотеке в том или ином виде.
8. К сожалению, я не являюсь специалистом по компьютерному зрению. Но у меня есть компетенции в других вопросах. Можно ли мне участвовать в конкурсе?
Задачи для конкурса уже сформированы. Но если вы действительно можете помочь нам в расширении возможностей нашего продукта, то мы с удовольствием выслушаем ваши предложения! Если они нам понравятся, то можно будет обсудить варианты вашего вознаграждения за реализацию этих предложений!
9. У меня нет аккаунта на Хабре. Как можно с вами связаться?
Приносим извинения, что не учли это. Все вопросы можно отправлять по адресу contest(собака)ivideon.ru. Постараемся ответить как можно оперативней. Кроме того, если у вас есть желание, вы можете рассказать о предлагаемом вами решении в нашем блоге, для этого просто пришлите нам текст. Если в целом он нам понравится, мы его опубликуем и по возможности дадим вам инвайт!