小编引言
提到 AI 产品开发,大家第一时间想到的可能是高深的 AI 算法训练和复杂的工程部署和实现,来自不同厂家的芯片、系统框架、AI 算法之间,常常存在一定的兼容性或效率等问题,导致 AI 产品开发周期长,算法效果不理想,功能调试困难等。在 AI 智能化时代,如何降低 AI 产品的开发门槛,快速让产品落地,有一个好的 “工具“ 的越来越重要。
使用地平线的 AI 芯片 + 「天工开物」开发平台,可以大大简化 AI 产品的开发流程,提高效率。在实现个性化需求的同时,做到「AI 开发,不必从0开始」本期分享中,我们请到了地平线 Hackathon 大赛中的一支获奖团队,他们在很短的时间内,做出了一款 AI 体感游戏机,在体验上,甚至可以媲美微软的 Kinect,风靡一时。
HorizonBox 案例介绍
游戏,一直是人们基于现有技术,对未来技术,以及对未来生活的想象。这其中,现有技术便是所有想象的支点。所以,游戏一直在随着技术的变革产生着变化。除了技术的变革以外,游戏也承载了和人越来越有关的内容,比如勇气,乐观,爱情等等。从世界上第一款用示波器做的电子游戏 "Tennis for two" 开始,人们对游戏的制作一直是希望拟人化,以及和现实生活有关的,比如1986年诞生的街头争霸,1996年诞生的古墓丽影是冒险的象征,1997年诞生的仙剑奇侠传凄美的爱情令人感动。往后画面越来越清晰,越来越逼真。
所以可以看到,游戏虽然是虚拟的,但是却一直在向着真实去发展。因此,为了让大家低成本体验真实的游戏感受,我们尝试使用地平线的 AI 开发板+ 行为识别算法+辅助人体关键点检测算法做出了一款体感游戏机,将 AI 人工智能视觉算法与传统游戏相结合,可以实现近似 Kinect 的游戏效果,让玩家在玩游戏的同时,还能够锻炼身体!
Horizon Box 支持跑,跳,攻击等动作,可以使用这些动作和游戏进行有效结合,增加真实游戏的体验,让你如临其境。
技术简介
本方案采用基于序列的行为识别模型与人体关键点检测相结合进行行为识别从而与游戏端产生交互,本方案流程框图如下:
从上图中可看出,HorizonBox的诞生历经从采集数据开始:
1.采集数据
采集与游戏交互会使用的“跳”、“跑”、“攻击”、“站立”等动作,将采集到的视频数据抽帧成图片,人工将图片标记为相应的动作。接着是模型训练。
2.模型训练
要提到的步骤是要将模型 OP 适配,X2 对大部分 OP 都可以无缝支持,但不排除有个别需要特殊处理,这也不得不提到地平线天工开物工具链,同时,采用工具链中的定点化工具将模型参数定点化,到此,模型便可以扔到板子上等待起舞了。
3.模型部署
因为本方案中用到了人体框检测(Fasterrcnn)、行为特征提取、时序融合三个模型,将多个模型部署在CP端需基于地平线提供的Xroc开发框架,该框架的作用是提供模型串接的接口,进行模型运行调度等。在本方案模型部署阶段通过调用Xroc API将模型进行一些简单处理后送入BPU(Brain Processing Unit, X2深度学习加速器)进行模型运算加速,单个模型运行结束后进行后处理再次送入BPU运行下一个模型。(关于地平线 AI 开发流程、开发工具使用方式,可以参考:
4.一致性验证
如果不出意外CP端模型运行结果是与GPU预测(mxnet or TensorFlow)结果是一致的,但是意外无处不在,大概率是出在模型部署阶段的前后处理,在此也不要为debug感到无助,我们采用天工开物工具链提供的model\_verifier工具定位,并且采用runtime接口将BPU黑盒打开,一步步一个一个模型进行比对将一致性对上。
一致性通过后,模型的问题就该告一段落了,但开发并没有结束。
5.帧率对齐
游戏对于时序和延迟要求较高,如果模型计算力大到超出了BPU负载,那帧率便会影响到精确度,精确度低到怀疑自己,所以提高模型性能、降低采集数据的帧率两端就像跷跷板的两端一样互相倾斜,达到平衡适配。注:本方案由于时间有限只能在此平衡处理,如果时间充裕,可调优模型或者优化开发来提高帧率,降低延迟。
本方案到此,可识别出人体行为动作,包括“跑”、“跳”、“攻击”、“站立”这些常用的游戏交互动作,并且精确度较高。
6.游戏对接
通过websocket, 将识别出的动作传输到等待接收指令的游戏端。整个开发解决方案就至此结束了。
怎么样?是否你也想试一试,体验或者自己开发一个这样的产品呢?
项目开放代码和部署过程,详见 HorizonBox - AI 体感游戏机 | 开放代码和部署过程