Visual Gesture Builder姿态动作识别教程

k0        Kinect提供了许多SDK和一些很有用的开发工具,其中就有使用Kinect进行姿态识别的开发工具Visual Gesture Builder。

        Visual Gesture Builder被用于构建姿态识别解决方案,生成的模型可用于检测特定动作或姿态。生成的姿态识别模型,可以在C++、C#中被SDK调用,以帮助我们在任意Kinect开发环境下,使用生成的姿态检测模型检测姿态。

        这篇博客为Visual Gesture Builder使用教程,以检测举手动作为例,详细介绍该开发工具流程。本教程只进行到生成模型并preview,后面在C++和C#中加载模型进行识别的部分并不在本教程范围内,特此说明。

1.首先使用Kinect录制两段视频

        我们以挥动左手和挥动右手为例,录制两段视频,其中一段视频中有挥动左手的动作,另一段视频中有挥动右手的动作。

2.在VSB(Visual Gesture Builder)中新建项目k2

        打开Visual Geture Builder,首先新建解决方案。然后右键解决方案新建工程,我们这里选择使用向导设置工程。

3.配置工程向导

        程序打开设置向导如下图,我们点击Next。

k3

        首先,设置姿势名称,就是你要识别的姿态,你不需要在名称中加入Left和Right,后面程序会提供更多选择,总之,输入一个名字就可以了。

k4

        然后,选择是否需要下半身的信息。这个选项的意思是,Kinect可以捕捉人全身的骨骼结点信息,如果你的动作与下半身无关,那么你只需要上半身的结点信息就可以了。由于我要演示的例子是挥手,自然和下半身没有任何关系,所以我选择No。
k5

      下面这个对话框的意思和上面一样,就是选择哪些结点有效,之前我们选择了上本身,显泽给出的是更加细致的选择,比如我选择上半身全部结点有效,你也可以选择只检测左半身、右半身等,这里注意对话框中True、False文字提示哦。

k7

        接下来设置手势识别,Kinect可以识别三种手势,打开、关闭、半开三种状态。我不需要识别手势,所以我选择了No。

k6

        下面这个对话框是说,你是否需要检测动作进行中的状态。说直接点,就是最终这个问题是被归为一个回归问题还是一个分类问题。

        如果选No,则最后输出的是一个Bool值,只判断当前手是否举起,而不会输出举起到什么程度,它使用AdaboostTrigger算法。

k9-2

        如果选择Yes,则使用RFR(随机森林回归),最终输出的是一个和动作状态有关的连续值。

k9-1

        这里就要选择,你是否需要区分左右,当然,我选择Yes。

k8

        由于我们区分了左右手,所以,程序会兴建左、右,两个工程,我们点击确认,程序就帮我们建好了两个工程,如果我们不需要其中某个,可以直接点击X删除该工程。然后点击Save保存,这样就可以看到这两个工程了。

k10

3.加载视频并标注动作

        这里,我们可以看到两对工程,后缀为a的微Analysis,没有a后缀的为训练工程,我们现在只用管训练工程。

k11

        我们右键训练工程,电机Add Clip,添加我们第一步事先使用Kinect Studio录制好的视频片断,共有两段,一段是挥动左手的,另一段是挥动右手的。

k12

        现在,我们开始对数据进行标注。我们拖动下方的进度条,可以对我们拍摄的视频金预览,我们按住Shift键进行拖动,可以选择其中一个片断,然后我们在右侧的Tag窗口可以对我们选择的帧进行标注,我们将举起右手的视频片断的值Value设置为True。

k13

        同样,对于第二段视频,我们将举起右手的片断标注为True。

k15

4.修改训练参数

        点击训练工程,然后在右侧属性设置中可以修改Adaboost训练参数,如果你对该算法了解,可以进行修改,如果不了解可以选择不修改。如果你的训练效果不理效果,可以选择增加若分类器的个数,同时可针对性的修改其它参数。

k15-1

        然后我们右键解决方案,电机Build,程序就会生成一个训练好的.vgb文件。

k16

5.预览效果

       在VGB文件生成后,我们可以右键选择Live Preview,打开Kinect实时的看我们的结果。左侧是拍摄的图像,右侧是输出信号。可以看到当我们举起左右或者举起右手时,对应的窗格中都会有响应输出。

k18

k17

        当我们反复测试,训练好一个模型后,我们要在其它程序中使用,直接通过Kinect的SDK调用训练生成的VGB文件就可以了,这部分我们下一节再介绍。

        See You Next Chapter!

发表评论