Pull to refresh

Comments 70

UFO just landed and posted this here
UFO just landed and posted this here
Да, их подход тоже весьма интересен. Как я понял, его можно отнести как раз к «следящим» алгоритмам. Нашел ли он применение в интерактивных системах, а не только в медицине, не знаете?

У кинектовского подхода конечно возможности гораздо шире. Ему ведь даже не важно, есть движение или нет, для выполнения своей задачи.
Все же, до сих пор, cистема реагирует с некоторой задержкой на действия, впрочем это уже гораздо лучше того, что было всего пару-тройку лет назад :)
Ждем и надеемся…
Я очень внимательно следил за развитием этого проекта. Скачок произошел в тот момент, когда они отказались от распознавания изображения, и купили 3д-камеру (которая выдает глубину каждого пикселя, за счет ИК-сканирования — отличная технология, но заслуги разработчиков майкрософта тут ровно ноль).
Дальше они уткнулись в стандартную проблему понять где руки/ноги/голова у выделенного 3д-камерой силуэта, и решили ее весьма слабенько. Улучшение будет, если они еще какую-нибудь чужую технологию купят — т.к. их собственные разработки не впечатляют абсолютно.
Чтож, можно только сказать спасибо производителю железа, которое закупил майкрософт.
Может конечно производство самого устройства не заслуга майкрософта, но такое быстрое продвижение и популяризация всяко их рук дело. Ведь будь то какая невзрачная маленькая фирма — проект бы вероятно так и затух на начальной стадии.

Будем ждать и надеяться на улучшения
Почему вы считаете, что слабенько я не понимаю? Вы знаете какие-то алгоримы, которые это делают лучше? Если да, то расскажите, пожалуйста.
Потому что очень близкие, практически идентичные вот этому ролику: www.youtube.com/watch?v=_jvW4QlvpbM результаты мы получили мимоходом (за 3-4 недели работы 1 человека), в качестве побочного результата, работая над одной системой для одной крупной компании. Ну и потом я еще много занимался как раз вопросом определения конечности по ряду признаков, кой-чего достиг. Правда, у меня на это было всего 2 месяца, так что не слишком многого, но если уж контур руки выделялся четко (а в случае 3д-камеры это так) — то отклик системы был 30мс.
Значит вы супер-крутые. Странно это, если честно, потому что на MS работало несколько ученых с очень большим бюджетом, крутым оборудованием и гигантскими базами семплов. Не хочу вас оскорбить, но мне верится с трудом, что вы действительно достигли подобных результатов за 3-4 человеконедели. Хотелось бы какой-то пруф, тем более если это побочный результат, то вы можете поделиться им, не нарушая NDA или чего там у вас. Вы бы могли серьезный вклад внести в общее дело.
У меня в профиле сайт, там есть видео.
Конкретно по этому проекту мы связаны по рукам и ногам, так что ничего показать не могу (в том числе и побочный результат — он весьма заинтересовал заказчика, и тоже ушел, даже на видео по этому проекту все скрыто по-максимуму). Но повторить это все в несколько другом варианте — совершенно не проблема, если у нас появится какой-то интерес — это будет сделано очень быстро.
Просто мне странно, что MS спустило столько денег и усилий на это, если эта такая доступная задача. Я думаю, вы могли бы это повторить и продавать, подозреваю ушло бы хорошо.

Я посмотрел видео на вашем сайте. Честно — не очень впечатлило. То что там с маркером в Q3 играете, так это есть тут. Бесплатно и с исходниками.

По поводу линий и кругов, то используя OpenCV это можно кое как сделать за 2 дня: вот линии и вот круги.

Задача же построения скелета по карте глубины на порядок сложнее, и я даже близко не знаю как ее можно решить эффективно.
Маркер был сделан с нуля за 2 недели, включая время портирования на флеш. Там вопрос не в том, чтобы сделать, а в том, чтобы добиться реалтайма на флеше. Тоже ничего уникального, но кому-то было нужно — мы сделали.
Линии и круги по линкам и те что у нас были — несопоставимы по вычислительной сложности. По линкам идет перебор, у нас — анализ границ. И мы уже давно достигли цели в этом направлении — сейчас у нас не линии/круги, а произвольные кривые 2го порядка, теперь решаем вопрос, как из них распознавание приличное сделать.

Насчет скелета и легкости его продажи: найдете нам приличного заказчика — и 15% ваши. Я серьезно.
Кстати, вот и вертолет, точнее квадрокоптер. Очень даже себе автономный и препятствия облетает, работает с Кинектом.
Ну извините, проект с вертолетом мы в свободное время за свой счет делаем. Начиналось все иначе, и есть отличные результаты — но сейчас так, реализовывать результаты в железе банально некому. Уже примерно полгода на него вообще нет времени.
А вот и еще один, из МИТа. И этот похоже даже круче, чем у ребят из Беркли, так как «it does not require a motion capture system or other external sensors», все зрение на Кинекте.
Вживую Kinect не видел, но судя по видео точность распознавания должны быть впечатляющей. Но все равно странно, что они отказались от анализа последовательности кадров и уточнения результатов на основе кинетических даных.
Для внятного анализа последовательности кадров нужно серьезно подумать, и разработать кое-что новое. У них с этим явно проблемы…
А возможно такое, что это у Вас проблемы с воспринятием слова «Microsoft»?
«Сколько раз ни говори слова Халва, во рту слаще не станет». Ресурсы даже огромные не рождают идеи.
Возможно. Но тогда довольно трудно объяснить тот факт, что майкрософт несколько лет стоял на месте с кинектом, пока не купил камеру-дальномер. И после покупки реализовал только тривиальный минимум, и снова застопорился.
Да нет, тут уже многое разработано (они ссылаются на литературу в конце статьи). Видимо посчитали текущую точность достаточной, и максимально упростли обработку для минимизации времени отклика.
Смотрел много роликов с kinect, везде задержки были ощутимые — порядка 200мс (гугл выдает куч статей что 'задержка фактически равна 150мс', но еще больше статей выдает что 'будет составлять 5мс'), здесь в статье вообще указано 2мс (что считаю просто нереально крутой задержкой, на столько что кажется что это брехня).

Резюме — продолжаю ждать когда допилят этот самый важный момент (там кстати еще есть проблемы — например с распознаванием сидящих).
Могу предположить что задержки распознавания действительно малы (не 2мс, конечно, но и не 150-200мс).
Скорее проблема кроется во взаимодействии Kinect с другой системой
Задержка в 200мс не создает проблем для большинства задач. Если не надо особой динамики, то этого хватает.
Вы реально пробовали на чем-то или просто рассуждаете абстрактно? Задержка порядка 100-150 мс уже заметна невооруженным взглядом. Как-то раз я был свидетелем конфликта одной известной певицы с техническим персоналом одного концертного зала. Дело было в том, что пение певицы снималось на камеру и выводилось на большие экраны по бокам сцены. И вот цепочка «камера-преобразователи-передатчики-экраны» была сделана не очень хорошо и давала задержку в 2-3 кадра. От этого возникала рассинхронизация слышимого звука (песни) и артикуляции. Т.е. певица уже какое-то слово допела, а на экране у неё рот все еще открыт. Люди смотрят и думают — «от дура, даже не умеет петь под фанеру, вовремя рот открывая». А 2-3 кадра это как-раз 100-150 мс.
Да, я работаю с Кинектом уже несколько месяцев. Скоро будет первый релиз моего проекта. Я согласен, что она заметна и ощутима. Но для разных задач есть свои допуски. Для вашего случая 100 мс — это критично. А для того чтобы какие-то манипуляции с компьютером руками делать и 500 мс потерпеть можно. Замечу, что Kinect — устройство потребительского уровня и стоит 150$ на ebay, соответственно надо понимать, что и требования к нему могут быть ограниченными.
А расскажите, что с кинектом делаете. Тоже, возможно, скоро буду кинектом заниматься — интересно откуда и в какую сторону рыть.
Я делаю некий фреймворк, с помощью которого можно было бы дешево и просто, не вдаваясь с детали, делать multitouch приложения с Кинектом в качестве устройства ввода. Вообще я могу сказать, что Kinect — это бомба, он обладает рядом уникальных качеств, по-этому меня несколько расстраивает скепсис людей, которые его не щупали даже.
Обязательно напишите статью на Хабре, как доделаете. Будет интересно почитать.
Если интересно, посмотрите здесь: www.youtube.com/watch?v=g5-hSjt2qGQ

От себя могу сказать, что задержки совершенно не ощущаются — что при играх в Xbox, что при обработке графики на ПК.
Хочу добавить, что Microsoft не спешит делиться добром. Они не опубликовали весь алгоритм, а лишь дали общее описание, которое не позволит так просто его самому реализовать. Так же они не публикуют параметры обученных деревьев, думаю мало у кого есть миллионы тестовых изображений и 1000-ядерный кластер, чтобы их прогонять. Библиотеки и API тоже в свободном доступе нет. Так что воспользоваться чудесными результатами пока некому, кроме, наверное, партнеров Microsoft, которые игры пишут под XBox.
«Умному достаточно»©
А «тестовые изображения» они рендерили сами, программно (судя по видео)
«Умному достаточно»© — видимо не достаточно, потому что альтернативных реализаций пока нет, и я не слышал, о том, чтобы кто-то был близок, а я за темой слежу

Вообще самой статье есть целый раздел, который говорит о том, как подготавливались данные. У них есть база из 500 тысяч реальных изображений + данные о mocapе с них. Так же там говорится о том, какие есть проблемы с синтезированными изображениями.
Да тут информации более чем достаточно. В том числе чтобы понять, что ценности в таком варианте у этого подхода — не слишком много. Без структурного распознавания практически невозможно добиться внятных результатов взаимодействия двух человек в кадре, да и с одним в некоторых ситуациях не избежать глюков…
Скоропалительные выводы. Это лучший подход на сегодняшний день, он работает очень точно и очень быстро. С одним человеком глюки минимальные, то есть почти нет.
Лучший на сегодняшний день — не значит хороший :) 100мс задержки — это никак не «быстро».
Скажите, а при работе с кинектом есть возможность получить исходное изображение с камеры глубины, не обработанное никакими ихними алгоритмами?
Вообще в работе утверждается, что на XBox задержка составляет всего 5 мс, не знаю, врут наверное, потому что когда я играл с Kinect и XBox задержка была ощутимой. Понимаете, быстро, это понятие относительное, для моих задач (см. комментарий) это вполне приемлемо, да и для многих других.

По поводу исходного изображения. Вы только его и можете получить, потому что, как я сказал, описанная в статье библиотека не публикуется. Есть альтернативный алгорим от партнеров MS, но он требует, чтобы пользователь вставал в определенную позу предварительно, и вообще он не такая крутой.
>По поводу исходного изображения. Вы только его и можете получить

Ух ты как здорово! Обязательно надо будет заняться, как с текущими проектами закончим…
А что с ним делать-то? Вы умаетесь извлекать из него полезные сведения.
Ну как — если есть 3д-картинка, то максимум за месяц получится вытащить оттуда точное местоположение человека и его головы, почти всегда точное положение рук, и с неплохой точностью положение ног. Правда, что дальше с этим делать — надо будет еще подумать…
Еще раз, мне в это верится с трудом. Мне реально не понятно, если все так просто, почему MS столько с этим возились?
Это просто для нашей команды, а не просто вообще. Немножко разные вещи.
Я что-то серьезно не понимаю. Утверждается, что задачу классификации частей тела по карте глубин без использования калибровочной позы эффективно не была решена никем. Microsoft Research со своим Kinectом были первые, кто это сделал, и это считается большим прорывом, причем они использовали гигантскую базу данных и очень мощные вычислительные системы для ее анализа. Вы сейчас говорите, что это фигня и вы бы сделали это за месяц. Либо вы действительно архикруты, и мне стоит снять шляпу перед такими серьезными исследователями, либо вы несколько заблуждаетесь в собственной крутизне. Пока никаких доказательств вашей (и вашей команды) крутизны предоставлено не были, на сайте видео с решением тривиальных задач, остальное — слова. Ни в коем случае не хочу вас оскорбить, но столь серьезные заявления надо как-то подтверждать.
Я вам совершенно серьезно предложил найти заказчика под такой проект. За процент, мало 15 — берите больше, хоть 50 при достаточной общей сумме. Без проблем согласен на оплату только в случае успешного выделения фигуры, и на срок в 2-3 месяца, в зависимости от деталей (но в случае успеха оплата должна быть немедленной, гарантированной, и существенно большей, чем зарплата за соответствующий период).

Правда за такой срок — не любые позы разумеется, в этом варианте только работа в фас, без поворотов в профиль. Соответственно калибровочная поза — любое положение в фас с естественным положением рук (т.е. хитро сложенные руки, одна за головой другая перед лицом, не распознаются).

Расскажу логику решения: находим в центральной верхней части экрана верхушки всех близких площадок. Если она одна — это голова, больше одной — голова и одна/две руки. Если их три — голова в центре, руки по бокам. Если две — то рука более высокая и тонкая.
Если хотя бы одна из рук не вверху — идем по границе контура, в случае двух вариантов сворачивая всегда на максимальную близость. Когда дошли до поворота обратно — мы нашли всю руку.
Итого, голова и руки выделены так, как если бы использовалась калибровочная поза. Ноги — аналогично, но чуть сложнее, т.к. их надо правильно разделить.

В принципе, все это работает достаточно быстро, чтобы применять в каждом кадре — но, разумеется, рационально использовать трекинг, а этот алгоритм — раз в несколько кадров для контроля.
И — этот подход в целом отлично работает, хотя мы использовали несколько другую логику. У нас была проблема выделить силуэт, т.к. не было камеры глубины — но в случае хорошего силуэта (например, на статичном контрастном фоне) работало без малейших проблем.
Я не знаю, кому это продать можно, поэтому можете мне хоть 99% предлагать. Я вам честно скажу — предложенный вами алгоритм совершенно несерьезный, такой я и сам могу написать. То что делает MS — строит скелет, они выделяют основные суставы — локти, кисти, колени, плечевые суставы. Работают в куче поз, и в фас и в профиль, и еще как. Для нескольких людей на сцене. Ложноположительных срабатываний нет, а у вас ваза на шкафу будет головой. Может кисти вам и удастся поймать таким образом, но это ничто по сравнению с тем, что делает реализация от MS. И вы с такими идеями деятельно других критикуете?
«Я думаю, вы могли бы это повторить и продавать, подозреваю ушло бы хорошо.» — это ваши слова. Теперь вы пишете «Я не знаю, кому это продать можно». Нормально :)

>Я вам честно скажу — предложенный вами алгоритм совершенно несерьезный, такой я и сам могу написать

Так напишите. Будете удивлены результатом, если напишете нормально. Честное слово.

>они выделяют основные суставы — локти, кисти, колени, плечевые суставы

Присмотритесь внимательно — и увидите, как именно они это делают. Мы тоже это делали, так же. Смотрится круто, но стоит взять в руку что-нибудь протяженное — и все станет ясно с «суставами» :) Впрочем, для прикладных задач суставы не важны, так что очевидно что с ними никто лишний раз не морочился.

>Для нескольких людей на сцене. Ложноположительных срабатываний нет

Вы не смотрели ролик, на который я дал ссылку, сказав что «мы умеем так же», или намеренно врете?

>а у вас ваза на шкафу будет головой

Ну как же она будет головой, если с руками не соединена? Я надеялся, что фраза «идем по контуру» достаточно ясно дает понять, что если на контуре мы нифига не находим — то это не человек :)

>И вы с такими идеями деятельно других критикуете?

О, ну тогда я тоже воспользуюсь вашим аргументом — «и вы со своим уровнем вообще имеете наглость свое мнение высказывать?» ))))))
Я смотрел ролик, но ваших-то результатов я не видел. Лишь рассуждения. Еще раз говорю, если бы все так просто было, никто бы с этим не возился и не стал бы говорить, что алгоритм у Кинекта такой прорывной. Я считаю, что для меня эта задача слишком сложна, я некоторые попытки делал, но они оказались очень вялыми, поэтому я оценил работу MS. Впрочем, у меня задача прикладная, и меня устраивает, что скелет за меня строят. Продолжение сей дискуссии мне кажется бесполезным, вы не можете никак подтвердить свои слова, да впрочем это не так и важно. Просто каждый останется при своем.
>Я смотрел ролик,

+

>Для нескольких людей на сцене. Ложноположительных срабатываний нет

= сознательная ложь. И зачем? Вы пытаетесь убедить других, себя, или все же меня?

>Я считаю, что для меня эта задача слишком сложна, я некоторые попытки делал, но они оказались очень вялыми

Ну так реализуйте то, что я написал, это же элементарно, как вы утверждаете! Я вам гарантирую — результат вас приятно удивит. Правда, в процессе вам придется решить несколько вопросов — например, понять, какая пара (или тройка, если с кистью) соединенных прямых линий соответствует довольно бесформенному региону «согнутая рука», куда направлено туловище при том, что оно тоже весьма неправильной формы, и т.п. — но это ведь тривиально, вы справитесь (в нашей команде один человек это сделал за несколько недель — значит, это легко, и у вас получится).
Я не пытаюсь никого обмануть. Я не помню в ролике ложноположительных срабатываний, могу повнимательнее пересмотреть. А главное, я их не заметил и при работе с самим Кинектом. Еще раз говорю, у меня другие задачи, мне нужен готовый скелет, а он есть.
Ну вот. Теперь оказывается, что вы в этом вопросе не только изначально не разбираетесь (что вполне нормально), но даже и не пытаетесь выяснить истину, просто рассуждаете категориями «это выглядит круто»/«это выглядит некруто»… Зато предположений о моем уровне сделали множество :)
Я рабираюсь, но не настолько. Я решал задачи связанные с анализом контуров, только пропроще. Насчет вашего уровня — вы меня сами отправили на ваш сайт, где я ничего интересного не увидел.
>Я решал задачи связанные с анализом контуров, только пропроще

+

>где я ничего интересного не увидел.

= ваш уровень выше, т.к. был бы ниже или равный — было бы интересно. Так реализуйте предложенный мной возмутительно простой алгоритм — и убедитесь, что он дает реальные результаты.
Вы серьезно считаете, что Microsoft Research бы не додумалась бы до такого?
Я серьезно считаю, что в майкрософт ресерч могли выбросить из команды всех людей, которые предложили бы что-то такое, и оставить только тех, кто предлагает что-то сложное и запутанное. Хотя не факт, возможно это было реализовано криво, не показало хорошего результата сразу — и от него отказались как от «конечно же слишком примитивного».
Замечу, что там калибровочная поза не нужна. Вообще. Поэтому они и говорят, что их алгоритм уникальный и это так.
Вообще говоря я наверное слишком плохо думаю о МS. На ролике у них некоторые из глюков скелета абсолютно идентичны тем глюкам, которые были у нас, особенно похожи глюки при двух людях в кадре.

А откуда вы знаете, что поза не нужна? Вы уверены, что если человек не зайдет в кадр, а станет в очень неестетственную позу, и только после этого включат кинект — то он сможет определить это? Я уверен, что нет. Если же человек просто естественно зайдет в кадр — этого и для описанного мной метода хватит, если его чуть подрихтовать.
Да я играл в Xbox с Kinectом. Работает потрясающе.
> воспользоваться чудесными результатами пока некому
Как это некому, конечный результат уже есть. Kinect работает, разрабатывай игры, приложения, лицензируй API и т.д.

Если же под «воспользоваться» вы понимаете сделать конкурирующий продукт, используя эти наработки, то да, не выйдет. Но не потому, что вы перечислили (это преодолимо), а потому, что Microsoft запатентует все вдоль и поперек. А так да, Sony не отказалась бы задешево нагнать упущенное. :)
Пока запатентован только сам Kinect, алгоритм запатентовать невозможно, насколько я понимаю. Так я же написал, что партнеры Microsoft могут воспользоваться, зачем вы только кусок предложения цитируете? Мне же бы хотелось, чтобы API в свободном доступе был, чтобы, например, в исследовательском проекте можно было использовать или в некоммерческом. Они же не на алгоритме зарабатывают, а на продаже самого Kinectе (себестоимость которого что-то около 50$, а продается за 150$ а у нас и за все 250$). Алгоритм придуман, чтобы игры делать крутые можно было бы, что продвигать продажи.
ASUS что-то готовит со своим WAVI Xtion, основанном на том же железе PrimeSense. Возможно их API будет открытым, так как в их нише (десктопы) выгоднее поскорее его распространить и претендовать на стандарт.

Интересно, какие алгоритмы выберут они.
WAVI Xtion это тот же самый Kinect, только в другом корпусе. У PrimeSense есть свой API очень неплохой (но все же не такой крутой, как у MS), я его активно использую и собираюсь написать статейку попозже. (Если это вы минус поставили, объясните пожалуйста за что именно, мне хотелось бы понять)
>У PrimeSense есть свой API очень неплохой
открытый?

> собираюсь написать статейку
да, было бы интересно

(минус поставил не я)
Первый раздел (представление)
это почти также изумительно
хорошо продумано
изумление от быстро измеряющего
неизбежно привлекает способ
но реализованная с изяществом

Второй (исторический обзор существующего)
но их большой проблемой
но на практике они дают сбои
и совсем уж плохо они справляются
спустя довольно длительное время, если вообще удается

Третье (поворот в вопросе)
отчего же Kinect работает намного лучше?

Четвертое (суть)
[: И далее текст с содержанием :]

Пятое (завершение)
значительное достижениено
грамотно примененном
мы вступаем в «золотой век»
Я не понял, к чем это. Поясните, пожалуйста.
Так пишутся популярные статьи на технические темы. :)
Ну так это стандартный формат, чего глумиться-то?
UFO just landed and posted this here
Коллега, устройства по вашей ссылке одеваются на голову и существуют в нескольких разных вариациях.

Фича же Кинекта — получение информации о скелете человека без всяких дополнительных девайсов.
Sign up to leave a comment.

Articles