最近的一篇推送文章引起了我的注意,大概研究的是这个主题:
“少年看你最近走路弓腰驼背,步履蹒跚是不是没睡好?”
Liu, X., Sun, B., Zhang, Z., Wang, Y., Tang, H., & Zhu,T. (2019). Gait can reveal sleep quality with machine learning models. PloSone, 14(9), e0223012. https://doi.org/10.1371/journal.pone.0223012
扒了一下,类似的研究还有:
“少年看你最近走路弓腰驼背,步履蹒跚是不是自尊水平太低了?”
Sun, B., Zhang, Z., Liu, X., Hu, B., & Zhu, T. (2017).Self-esteem recognition based on gait pattern using Kinect. Gait & posture,58, 428-432.
开下脑洞,这个方法似乎可以玩太多的东西,更高级的玩法还可以和脑电磁共振数据结合。
“少年看你最近走路脚步轻盈,是不是 (填入你想研究的指标)?”
Kinect的skeleton数据可以看成是25个电极点的EEG数据,采样率30Hz,分析和处理的选择有很多。
仔细读了他们的文章,觉得在方法上面需要改进的地方还有很多。比如,降维的时候使用的是皮尔斯相关,选择了和量表相关的特征,这是机器学习里应该避免的特征选择的方法。正确的做法是将特征选择嵌入交叉验证中。此外在解释结果的时候,如果可以分析具体是步态的哪一个维度的特征更好的预测了量表里的指标,能够提高解释性。如果可以加入一些需要动作完成的任务,比如跨过障碍,应该可以进一步提高预测的准确性。正常走相当于resting state, 设置障碍相当于task-related。总的来说,这两篇文章的研究思路值得借鉴,但是数据的处理和可视化亟待提高。
另外一些研究的思路就更贴切生活和运用了,而且都是最近2-3年才出的文章。
Latorre, J., Colomer, C., Alcañiz, M., & Llorens, R.(2019). Gait analysis with the Kinect v2: normative study with healthyindividuals and comprehensive study of its sensitivity, validity, andreliability in individuals with stroke. Journal of neuroengineeringand rehabilitation, 16(1), 97.
Mateo, F., Soria-Olivas, E., Carrasco, J., Bonanad, S.,Querol, F., & Pérez-Alenda, S. (2018). HemoKinect: A Microsoft Kinect V2Based Exergaming Software to Supervise Physical Exercise of Patients withHemophilia. Sensors, 18(8), 2439.
Dehbandi, B., Barachant, A., Smeragliuolo, A. H., Long, J.D., Bumanlag, S. J., He, V., ... & Putrino, D. (2017). Using data from theMicrosoft Kinect 2 to determine postural stability in healthy subjects: Afeasibility trial. PloS one, 12(2), e0170890.
Kotsifaki, A., Whiteley, R., & Hansen, C. (2018). DualKinect v2 system can capture lower limb kinematics reasonably well in aclinical setting: concurrent validity of a dual camera markerless motioncapture system in professional football players. BMJ open sport& exercise medicine, 4(1), e000441.
心血来潮购入Kinectv2, 研究几天后觉得像是看到了另外一个山头,大概是这山望着那山高。简单说下Kinect和普通网络摄像头不同的地方在于它内置了深度摄像头和IR发射器,使用了Time of Flight (TOF)方法,利用物体反射的光线到达深度摄像头的时间不同判断距离。也就是说普通摄像头可以得到xy的数据, 而Kinect这一类深度摄像头(ASUS也有一款深度摄像头)可以得到xyz的数据。此外它还内置了四个麦克风可以探测声源位置。
(图片来源于网络)
(图片来源: http://www.ti.com/lit/wp/sloa190b/sloa190b.pdf)
Kinect 1 vs. Kinect 2
早在多年前就在xbox360上感受过Kinect1,刷新了我对游戏的理解。目前Kinect1入手只需300+。Kinect2大概是5年前发布的,目前价格1k+,现在已经停产,之后微软发布了Azure Kinect和Hololens。
(图片来源:油管)
btw, 微软已经将注意力转移到了他们最新的产品Hololens上(https://www.microsoft.com/en-us/hololens#),功能上自然比kinect2先进有虚拟现实技术和手势识别,但是价格感人(3500刀一台设备)。看了Testv的测评,科技感十足,但是一部分功能使用受到环境的限制(比如只能在室内),只能呵呵。
应用场景
Unity3D
Kinect+Unity3D或者Blender制作3D动画、游戏,是Kinect的一个fancy的运用。看了demo之后会忍不住自己尝试一番。Unity3D 真是一个强大的工具,可以轻松应对2D和3D制作场景,支持C#的编程,像是一个高级版本的Eprime,而且个人版是免费的。
导入Avatar, 然后将kinect control的模块拷贝到它的属性里即可实现简单的控制,Unity3D比想象中的容易上手。
Gait Analysis
“所谓步态,指的是人行走时整个身体运动的特定姿态。步态识别就是根据人行走时的姿态进行身份识别。由于步态识别所提取的特征不仅仅局限于人的双腿,而是考虑人体全身的运动变化。人的行走不是先天固有的,几乎完全形成于后天的学习过程中,与指纹、虹膜、脸像等这些个体特有的生理特征相比,个体间步态的相似性相对较大,但早期的许多生理和心理研究表明,如果身体各部分的运动均被考虑在内,一个人的步态具有唯一性,而且步态特征具有一定的节奏和循环特性,可以通过这些特有特征的提取来做到身份识别。由此可见,步态识别在智能监控、安检系统等领域有着非常广阔的应用前景。另外,步态识别在医学中也有非常重要的应用。研究表明,正常步态具有稳定性、周期性、协调性以及个体差异性,但当人们存在疾病时,步态特征将会有明显的改变。因此,通过对人体步态的分析,能够辅助医生做出快速诊断,给出行之有效的治疗方法。”
来源:北京工业大学某硕士论文引言部分(http://read.pudn.com/downloads79/ebook/301200/%E5%9F%BA%E4%BA%8E%E6%AD%A5%E6%80%81%E7%9A%84%E8%BA%AB%E4%BB%BD%E8%AF%86%E5%88%AB/y7925960005.pdf)
FYI: 步态识别大概在15+年前就在国内兴起了,并且产出了一大堆相关的专利和文章,自行百度步态识别。步态可以准确的反应individual differences, 所以为它可以和量表做相关提供了依据。
For example:
在CCTV1的人工智能节目《机智过人》中,银河水滴CEO黄永祯带领其项目成功战胜《最强大脑》记忆大师,并从10个身高体型相似的人中识别出目标“嫌疑犯”、从21只体型毛色相似的金毛犬及剪影中识别出目标金毛犬,并被图灵奖得主姚期智称赞"机智过人"。
银河水滴成功通过步态识别目标金毛犬
(来源:https://www.iyiou.com/p/74482.html)
Biomechanical analysis
既然能够识别骨架,加入人体骨骼和肌肉,计算muscle force自然也不在话下,就可以做Biomechanical analysis,会有更多的实际运用场景。Kinect是可以采集25个点的骨架数据,并且在demo中展示了心跳和肌肉受力的测量,然而看了微软相关社区的讨论,这些部分似乎并没有开源。
以下图片来源油管:https://www.youtube.com/watch?v=79yH4fCXv88
四个跳大河之舞的人,他们的动作有什么问题,哪块肌肉更容易劳损。
运动员投掷时动作分析
不同品牌汽车进入驾驶位的受力
传统的骨架识别需要多个摄像头和身体的标记,通过图像的重建,可以得到相对准确的骨骼位置信息。有文章(Pavoneet al., 2019)对比了Kinect和传统步态识别系统,结论自然是Kinect 简单实用价格还便宜。
(图片来源: Pavoneet al., 2019)
值得一提的是随着人工智能的发展,一些skeleton detection的机器学习算法(比如https://github.com/sarweshshah/gait_analysis)也展现出了强大的功能,个人认为他们目前主要的问题是针对2d画面的识别无法获取深度的信息,这也是Kinect2还依然存在于科研和开发一线的原因。Kinect似乎对这种side angle的骨架处理和识别不太完美,一种可能的解决方法是使用多个kinect设备,对采集的数据进行重建。
(图片来源:https://github.com/sarweshshah/gait_analysis)
计算机视觉方面的运用
比如
Simultaneous Localization And Mapping (Slam)
最相关的运用估计就是扫地机器人
(图片来自于网络)
3D scan (+3D print)
win10自带的3d scan用了多次都无法重建成功,最后还是用了Kinect SDK里的fusion explorer。模型质量达到可以打印的水准对扫描的要求比较高。
在家手持扫描的龙猫
最后
本来想着学习下Gait数据处理的方法,以防以后拿不到funding时还有机会做实验发文章,没想到扒出了kinect各种好玩的运用场景,不过基本是浅尝辄止,毕竟无论哪个方向都足够做一个独立的project。此文算是给购买kinect的剁手行为有个交代了吧 (此时是不是该考虑入个xbox one和一些体感游戏~~)