Hatena::ブログ(Diary)

明日とロボット このページをアンテナに追加 RSSフィード

2011-07-22

kinectの骨格追跡データで行動を認識する

Kinect関連記事

概要

方法

  • 10秒間、kinectの前で歩く、走る、スキップする、などの行動を行い、0.1秒ごとの骨格の動きを学習させる。
  • それぞれのjoint同士の距離で学習させ、少しだけ汎用性を効かせる。
  • タイマーの使い方
    • タイマーはDispatcherTimerを利用。
DispatcherTimer timer;
timer = new DispatcherTimer(DispatcherPriority.Normal);
timer.Interval = new TimeSpan(0, 0, 0, 0, 100);
timer.Tick += new EventHandler(timer_Tick);
  • このように宣言、初期化し、0.1秒ごとに呼ばれるtimer_Tick関数も作る。
private void timer_Tick(object sender, EventArgs e)
{
    actionTimeRemain -= 1;
    if (actionTimeRemain <= 0)
    {
        timer.Stop();
    }
}

デモ

  • 歩き×2、走り×2、スキップ×2と学習させ、それぞれを正しく認識できるかテストした。

D

Kinect関連記事

a7medo778a7medo778 2011/08/05 23:25 ey m8
u have a project that using your hack will be a great help in it

can you share the source code with us ?

astrobotastrobot 2011/08/06 00:38 Thank you for the comment. However, since I'm working on this as a part of my project, I cannot share the exact code of this. But if you are interested in, I can tell you the basic idea of the implementation. In that case, please let me know your contact information.

CarlosCarlos 2011/08/17 07:05 Hi, I'm really interested in your project, I won't tell you to share it, but I would like to know which is the right way to get something like that, I'm from mexico and I'm working in kinect's apps for educational porpuses. my email is

astrobotastrobot 2011/08/18 05:31 Hi, Carlos. I'm not sure how far you have played with kinect SDK, but the easiest way to start working with the sdk is to try each tutorial at http://channel9.msdn.com/Series/KinectSDKQuickstarts . In order to write program like mine, you may want to learn from http://channel9.msdn.com/Series/KinectSDKQuickstarts/Skeletal-Tracking-Fundamentals . This shows the way to retrieve coordinates of each joint of your body. I used k-nearest neighbor algorithm to make my program learn the name of action. I don't think this is the best way, but quick and very simple way to do that. Basically, I recorded the coordinates of 20 joints every 0.1s for 10 s, and trained the classifier based on the relative distance between each joint. Hope this helps you.

evangelevangel 2011/11/17 17:40 hi, can you tell me what algorithm did you used? im very interested with this cause i'm working with same project. can you share me your source code? or tell me how did you do it. thanks!

astrobotastrobot 2011/11/17 23:44 I used a simple k-NN algorithm. so definitely not the best one. I'm currently working on a different way :)

noobienoobie 2012/11/14 03:08 is it possible by only using the coordinates without accounting relative distance like you do to recognize activity??..
and any idea on how we could have data of our joint position without having effects by the kinect position??
sorry for silly lame question..any idea/help are appreciated

sharedshared 2012/11/14 20:27 Hello,
I am doing this kind of project right now to detect actions like reading,sleeping or eating at workspace for graduation but got stuck and would like to ask 2 questions.I'm kinda newbie in this field so please bare with me..you don't need to answer all of them if you think this is too much.

1st..having mentioned using distance between joints for
20joints,does it mean that,for example starting from head,you count
distance between head and neck,and then for the rest 18joints,then
starting from neck and right shoulder(head don't need to be count
because we already had), then the rest 17joints??So means that you
have 19! =~ 1.216e17 data!?plus you recorded those for every 0.1s
for 10s, means 19! x 100 data??or maybe just choose one of the joints
as reference to count distance??

2nd..I'm thinking of doing this recognition online, so how could i know
when the action has started and ended without waiting for 10s,and without
using DWT or HMM??is it possible??

you don't have to give me straight answers if you don't want to.any ideas or some book or thesis that could be used as reference would are appreciated.sorry for long and noob questions.

astrobotastrobot 2012/12/21 10:26 Sorry guys for the delay. Somehow your comments were filtered as spam.
noobie, there may be a way, but I just do not know many things. For the second point, one way was just as I did; see the coordinate of one joint as a reference point to represent all the other joints in a relative way.

shared, for your first point, as you wrote at the end, I just choose one of the joints as reference. And for the second point, I've read several work that used HMM for that kind of thing, but I do not know many thing other than that. I actually wanted to implement HMM but did not have enough time and quit after all. I'm sorry that I cannot be any help for you. But I hope your project will work well.

korakora 2015/03/09 19:50 Hello !
I am currently studying activity recognization with Kinect and I would like to know a bit more about your project. Please contact me by mail. Thanks !

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元