下一个爆款AI应用?视频交互新方式—AR隔空书写的应用探索和实践 - 阿里技术
节日祝福
什么是AR隔空书写?如上图所示,我们通过手势识别算法识别出手指关键点的轨迹,同时判断用户的手处于落笔/抬笔的状态,然后根据这些信息把用户写的内容渲染在视频内,就实现了AR隔空书写的效果。
01 背景
快速增长的视频交互需求
随着近几年直播、短视频、视频会议等视频应用的快速发展,人们对视频交互的需求也越来越多。手势是人类交互的一个重要方式,我们在抖音、快手等app中也可以看到许多基于手势来触发的特效,前段时间TikTok推出的pinch to zoom特效也大受用户欢迎。
虚拟空间的兴起,让手势成为了打破真实世界和虚拟世界间墙壁的重要武器。Meta在手势上也有着非常深厚的积累,不但在VR设备上支持手势识别,还在研发触觉手套。下图是其VR设备Oculus Quest2的手势控制:
来源:youtube
现有的手势交互应用的不足
除了Oculus这样的专用设备,目前市面上手势在PC和和移动端上的视频应用大部分的交互逻辑十分简单,基本可以归纳为某一个手势触发单个预置的特效,这种简单的交互并不能充分发挥出人类灵活手掌的潜力。另外目前端上手势识别的效果也欠佳,在短视频平台上可以看到不少翻车的视频。
我们的现状:通过手势识别实现单键鼠标的功能
AR隔空书写在办公、生活、娱乐场景都可以发挥很大的价值,比较直接的应用场景有虚拟白板、AR视频特效。我们基于自研的手势关键点跟踪引擎实现了一套AR隔空书写方案,本质上我们通过手势识别实现了一个单键鼠标的功能。我们用鼠标可以实现的操作,理论上都可以用AR隔空书写的底层算法来实现。算法可以在PC和高/中/低端手机上实时运行,目前可以实现比较稳定的隔空书写画图的效果。除了隔空书写外,还可以支持各种不同的交互场景。本文将与大家分享我们探索的AR隔空书写的一些应用场景、实现方法和可达到效果。
02 AR白板的实践
音视频会议和协同办公这两个赛道正处于飞速发展阶段,对于异地办公的人员来说,远程沟通和协作的一大痛点是使用实体白板进行画图写字来协助沟通非常困难。虽然市面上有虚拟白板的产品,但是这些产品还是依赖于鼠标等设备来进行来输入,这使得写字和画图的体验和真实的白板有非常大的差距,远远无法代替真实的白板。
如何基于AR隔空书写来实现一个相对完善的虚拟白板?
最直接的想法是,直接把写字的内容渲染在屏幕上,例如上图是近期一个比较火的开源项目[1]所实现的隔空书写的效果。但是这样简单的实现有一个明显的问题:因为摄像头的视场角(FOV)有限,同时字也无法写的很小,我们可以写的内容非常有限。我们使用白板的时候经常要画个架构图/流程图,写几个公式,这样是明显写不下的。另一种方案是先写一部分,然后把字缩小,再写另一部分。这个方案看似可行,但是前后写字缩小后,排版会比较困难,也没有办法保证其前后所写内容的连续性。
如何更自由地控制写字的大小和位置?
我们认为更合适的方案如下图所示,把AR隔空书写的窗口悬浮在虚拟白板上,这个AR隔空书写窗口可以自由的放大缩小和平移,这样用户就可以在自由的控制写字的大小和位置,并且书写内容的排版也比较好控制。对于摄像头捕捉的每一帧图像,我们会对边缘进行裁减,然后再悬浮在白板上。
用户可以放大或缩小这个ROI窗口,来实现对书写内容的大小和精细度的控制。
用户还可以通过移动AR隔空书写窗口来控制写字的位置。
AR窗口的控制
当手(虚拟笔尖)移到AR窗口的边缘附近的时候,AR窗口就自动朝对应的方向移动(参考DOTA、LOL、魔兽争霸等游戏移动窗口的方式)。下图是向左上角移动窗口的操作,这样的操作方式更加符合人的书写习惯,移动窗口也十分方便。
课堂白板写公式demo
小结:
通过以上的设计,这个虚拟白板就拥有以下优势
- 通过缩放AR窗口,写字大小可以自由控制;
- 通过自由平移AR窗口,我们可以在白板内任意位置写字,排版容易;
- 可以通过把手移动到AR窗口边缘来拖动窗口,操作简便;
- 用户可以一直保持在最舒适的位置写字,身体不需移动。
我们把AR隔空书写能力集成在了最近发布的钉钉的音视频会议硬件产品F2上,希望可以解决远程会议中使用白板的痛点。在近期的钉钉发布会上,钉钉总裁不穷介绍F2的时候,现场演示了这个功能。
03 视频特效的实践
AR隔空书写还可以和粒子特效结合(粒子特效可以自由替换成雪花、火焰、水滴、花瓣、烟雾等等),就能做出非常炫酷的特效,这种特效滤镜可以给用户非常大的发挥空间,可以使用的场景也很多。除了休闲娱乐还可以制作节日祝福,制作表情包,表白等等。
要实现上图中的效果,需要两步:
- 录制一个普通的隔空书写视频,同时保存每一帧图像的书写轨迹的坐标;
- 根据步骤1中保存下来的书写轨迹,在视频中逐帧在书写的位置上发射粒子并渲染到图像上。
关于粒子特效如何实现,感兴趣的同学可以阅读[2]。
是否可以实时生成粒子特效?
生成粒子特效的耗时取决于每一帧需要渲染的粒子个数,发射的粒子数量越多耗时越长。如果控制发射粒子的速度,限制隔空书写内容的数量,在移动端也可以做到实时,即使离线处理耗时也不会很长。
04 实现方法
AR隔空书写的计算流程如下图所示。主要依赖两个神经网络:手部检测网络和AR隔空书写网络。手部网络主要检测图像中手掌的位置,AR隔空书写网络识别经过裁剪后的手部图像,输出4个信息:
- 手掌关键点坐标;
- 左右手信息;
- 拇指和食指是否捏起;
- 图像中是否包含手掌。
手掌关键点坐标会经过时域滤波处理,减少点位的抖动,后处理模块会根据手掌关键点坐标、左右手信息、拇指捏起的信息和历史数据来综合判断出当前用户是在落笔还是抬笔的状态,当前是否是一个笔画的最后一帧,并输出笔尖的坐标,然后这些笔画信息会被渲染在输入图像上。
为了提升算法的性能、减少平均耗时,手部目标检测网络只会每隔一段时间被拉起一次,在其他帧中都是通过目标跟踪模块来估算下一帧手掌的位置来裁减送入隔空书写网络的图像。另外由于手掌检测网络是一个比较轻量的网络,会有一些误检。目标跟踪模块有时也会跟踪不到手的位置,AR隔空书写网络会输出图像中包含手掌的置信度。如果置信度比较低,我们就舍弃这个输出结果,这样可以保证输出的最终结果中没有误检。
05 关于性能
AR隔空书写的手势追踪算法基于超轻量的模型实现,可以在windows/android/ios/mac/linux平台实时运行。
- 模型大小2.9mb,整体包大小~3.9mb,无第三方依赖(不依赖OpenCV、MNN、TFLite等库)
- 在Iphone 8 上平均每帧耗时~8ms
- 支持CPU和GPU运行
06 结语
手势交互是虚拟世界和现实世界沟通的重要手段,未来有着不可限量的发展空间。我们基于手势关键点跟踪实现了用手直接代替鼠标进行复杂操作的能力,从而实现了AR隔空书写。AR白板可以解决音视频会议中使用白板进行交流困难的问题,AR隔空书写的视频特效在生活中也有很多的应用场景。除此之外,我们相信AR隔空书写的手势追踪能力还可以用在互动游戏、智能办公等很多其他场景。
AR隔空书写能力未来即将上线阿里云视频云的美颜特效SDK Queen [3],旨在帮助交互更美更有趣,支持画面美化、人像美颜、抠像制作、贴纸美妆、动作识别、智趣交互、抠像处理等多种个性化定制服务,适用于直播、拍摄、会议、电商等多种业务场景。
想体验Demo或者进一步交流的读者,欢迎点击文末阅读原文加入。
参考阅读
[1] https://github.com/handtracking-io/yoha
[2] https://www.cppstories.com/2014/03/three-particle-effects/