Soli雷达是由谷歌和英飞凌合作,专门为近距离感知任务研发的一款60GHz毫米波雷达产品,其中谷歌负责开发信号处理和软件部分,而英飞凌科技公司享有芯片硬件技术的知识产权。一代Soli芯片于2016年发布,借助谷歌的开发者计划,谷歌与全球高校和开发者合作推出了一系列创新应用。二代Soli芯片于2018年发布,并被应用在手机Pixel 4的手势识别模块和智慧屏Nest Hub中的睡眠监测功能。本文将深度剖析谷歌Soli雷达近年来在学术和产品化方面的进展, 主要内容如下:
1. Soli雷达芯片
2. 基于Soli雷达的手势识别
3. 谷歌Pixel 4手机中的Soli雷达设计
4. 谷歌Nest Hub睡眠监控中的Soli雷达设计
5. 消费级雷达的发展前景
用于人体感知的消费级雷达主要可以分为两个频段:24GHz和60GHz。24GHz雷达探测距离可达70米,可以同时检测追踪多目标,被用于全屋智能等应用,随着24GHz的UWB频段被废除,其可用频段为24~24.25 GHz,距离分辨率比较低。60 GHz频段包括57~66 GHz,共7GHz可用带宽,虽然探测距离为10米左右,但是距离分辨率很高,被用于近距离的人体感知,例如手势识别,生命体征检测等;由于其芯片尺寸较小,可以直接部署在嵌入式设备中。广义的Soli雷达可以认为是英飞凌推出的一系列60GHz雷达。
初代Soli雷达芯片(英飞凌BGT60TR24[1])于2016年亮相,专门为了近距离的感知任务而设计。雷达采用了60GHz频段,可以实现最高2厘米的距离分辨率。芯片采用了350nm SiGe BiPolar工艺,减少了闪烁噪声(1/f noise)。集成的宽调谐范围VCO(Voltage Controlled Oscillator)实现了−80 dBc/Hz @ 100 kHz的低噪声系数(FN)。该芯片在拐角频率(fc)和噪声系数(FN)的优势实现了高系统信噪比,从而提高了最大感知距离和对多目标的分辨能力。对于近距离手势识别,接收器的线性度比噪声对系统的影响更大,因此Soli为了增加线性度而取消了低噪声放大器(Low Noise Amplifier ,LNA)的使用,实现了小于0.1%的线性误差。
天线设计采取了2发4收的配置:如下图所示,4根接收天线形成了2x2阵列,上下天线之间的距离为一个波长,从而保证了四个接收通道相位对齐,增益为10dBi,半功率波束宽度40°x42°;发射端采用了差分天线,以加强收发天线的隔离度,增益为7dBi,半功率波束宽度为40°x42°。采用了数字波束形成,从而追踪手势在四个象限的运动。芯片采用了eWLB封装技术,为了实现小型化,采用了天线封装技术(Antenna in Package, AiP),天线封装在eWLB的再分配层中。芯片的封装尺寸为12x12 mm,收发器芯片在封装芯片的中心,接收通道与4根接收天线连接,发射通道与两侧的两个发射天线连接。在6个通道全部开启且发射功率设置为最大的情况下,功耗约为900mW。
第二代Soli芯片(英飞凌BGT60TR13[2])在小型化和低功耗方面进行了改进,以便嵌入到手机中。最大的变化是,天线设计由2发4收变为1发3收,接收天线成L形布局,视场角可达150度,芯片封装尺寸由12x12mm缩小到6.5x5.0mm。工艺采用了130nm的BiCMOS技术,峰值功率约为1.8V供电下400 mW。雷达可以配置3种模式,分别为长距模式(最大距离9.6m,1Tx1Rx),短距模式(最大距离96cm),以及低功耗短距模式(最大距离48cm,占空比3.6%,功耗30.25mW)。
英飞凌于2020年独立推出了BGT60LTR11AiP[3] 60GHz雷达芯片,天线采用了单发单收,封装尺寸进一步缩小到3.3x6.7x0.56mm,视场角为80度。该雷达可以在没有外部MCU控制的情况下以自主模式运行,提供目标的运动和方向信息。在该模式下,可以实现以低于5mW的低功耗检测出5米以内的人类目标。这款芯片还支持半自动和SPI模式,可以捕获雷达原始ADC数据,并传输到PC或外部SoC上进行信号处理,实现定制的算法功能。
基于毫米波雷达的手势识别是一个热门的研究方向。调频连续波(FMCW)雷达可以测得目标的距离,方位角和速度。由于小型化的限制,手势识别雷达天线孔径较小,因此角分辨率很低,算法往往不依靠角分辨率,而是靠距离和速度变化带来的信号表征进行分类。由于整个手掌都会被雷达波束照射,手不能当作点目标,而应该建模为许多动态的散射中心。不同散射中心有着不同的距离和速度,雷达接收的回波信号是这些散射中心回波的叠加[4]。与其他传感器不同的是,雷达不需要依赖空间分辨率区分出不同手指的动作,而是可以直接通过整体叠加的运动表征进行手势分类。
对于FMCW雷达来说,通过两次FFT可以得到距离-多普勒(Range-Doppler)图。距离-多普勒图包含了雷达散射中心距离和速度的分布信息。接下来的信号处理可分为两种方式:一种是利用CFAR提取峰值作为散射中心点,然后捕捉散射点的统计信息和动态变化;另一种是直接在叠加的距离-多普勒图上提取特征。对于第一种方案,由于Soli雷达的帧周期(RRF)高达1到10KHz,手势动作相对很缓慢,因此可以认为散射中心在一个周期内的性质是稳定的,通过追踪散射中心并提取速度和空间分布的变化,可以实现手势的追踪和分类。对于第二种方案,为了更方便的找到规律,可以将高维的距离-多普勒图投影到低维空间:通过在速度维上非相参积累可以得到距离像(Range Profile),即散射中心在距离上的能量分布;通过在距离维上非相参积累可以得到多普勒像(Doppler Profile),即散射中心在速度上的能量分布。通过在时间维的积累,我们可以得到时间-距离图(Time Range Map)和时间-多普勒图(Time Doppler Map),时间-多普勒图又称微多普勒谱(Micro Doppler Spectrogram)。如果采用多发多收雷达,还可以提取时间-角度图,从而更好地对不同方向的手势进行分类。
接下来,我们通过论文[5]中几个具体例子来了解不同手势在这三个维度上不同的运动模式特征。
如下图所示,“拉”和“推”的手势在时间-距离图(最左侧)上有着明显的差异:“拉”导致了距离增长,“推”导致了距离减小。
如下图所示,“左扫”和“右扫”的手势在时间-角度图(最右侧)上有着明显的差异:左扫是从正到负,右扫是从负到正。
如下图所示,“揉搓”和“轻点”的手势在时间-多普勒图(中间)上有着明显的差异:由于手指运动引发了速度抖动,导致了在速度维上有不同的信号表征。
根据上述原理,谷歌一共发布过三篇利用Soli雷达进行手势识别的工作,接下来让我们逐篇对他们进行分析。
2016年,谷歌基于第一代Soli开发了一套基于手工特征的手势识别算法[6]。作者先依照雷达信号处理流得到了I/Q信号,距离-多普勒图,距离像,多普勒像以及三维位置等信息,然后从这些信息中提取细粒度的特征。作者总结了三大类特征,包括散射中心的特征,RF信号的特征以及用于数据驱动的原始数据。对于散射中心,作者先利用CFAR检测散射中心,然后根据距离,速度和加速度,对中心点进行追踪,并提取反射率信息。对于RF信号,作者先对距离维度进行了截取,得到手掌大致的位置,然后分别在速度和距离维提取特征:在速度-时间谱上提取了速度中心,速度中心在两个时刻的相对位移,和能量在速度上的分布;在距离维上提取了能量的分布,接收到的总能量,以及能量在两帧的相对变化。对于原始数据,作者先对雷达张量进行了归一化,并在能量中心附近截取ROI作为特征。作者提取了这些特征,并把他们作为输入训练随机森林分类器。在训练过程中,针对不同手势进行了特征筛选。在推理阶段,作者采用了贝叶斯滤波,同时考虑了时序和上下文信息提供的先验,从而得到平稳的预测结果。
数据集方面,作者定义了4种交互手势,包括“虚拟按键(捏)”,“虚拟滑”, “横扫”, “竖扫”。共招募了5名参与者,每位参与者对4种手势各重复100次,手势在距离雷达30cm内的不同位置采集。结果实现了92.1%的手势识别准确率和78.22%的逐帧识别准确率,其中7.9%的帧错误是由于在手势初始或者结尾处被识别为背景造成的。实时性方面,基于随机森林的算法可以实现在树莓派上1480帧每秒和高通骁龙400上2880帧每秒的推理速度。
在谷歌与苏黎世联邦理工大学合作的文章[7]中,作者采用了端到端的CNN-LSTM模型进行手势识别。作者扩展了上一篇文章提出的任务,对11种动态手势进行识别,包括“用大拇指和食指捏”,“用大拇指和小指捏”,“大拇指滑动”,“搓”,“慢扫”,“快扫”,“推”,“拉”,“手掌倾斜”,“画圈”以及“手掌悬浮”。其中,大部分手势可以通过距离-速度特征进行分类,对于在距离-速度维难以区分的近似手势,可以通过时序上的运动特征分类。因此,作者采用了CNN-LSTM网络,网络直接以距离-多普勒图作为输入,先将数据进行背景噪声去除和归一化,并将尺寸压缩到224x224,然后利用8层的CNN进行特征提取;接下来利用LSTM对CNN提取的特征进行时序特征的提取和手势分类,序列长度设置为40帧。数据集包括10个测试人对11种手势每组重复25次,共2750个数据序列。实验结果实现了平均87%的准确率。其中,两类捏的手势由于相似度很高分类结果最差(a:59%,b:68%),但是仅仅限于互相混淆,合并之后对该类可达85%的准确率。算法在i7 CPU的电脑上实现了140Hz的实时监测。该文章的数据集和代码开源在https://github.com/simonwsw/deep-soli
2021年,谷歌在人机交互顶会ACM CHI发布了手势识别网络RadarNet[8],并得到了最佳论文奖。硬件方面,RadarNet采用第二代1发3收的Soli雷达,从文章内容可以推测,该网络就是部署在谷歌Pixel 4手机中的算法。作者简化了任务,目标是更为实用的“扫”手势的方向分类。为此作者把方向解耦为三个任务,包括手势在x轴的方向,手势在y轴的方向,以及任意方向。由于需要预测手势的方向,不仅需要保存运动信息,还需要方位角的相位信息。因此,作者采用复数的距离-多普勒图作为输入,一帧的维度为64 距离单元,16 多普勒单元, 3 接收天线, 2 复数信号。为了减少网络尺寸,作者限制雷达最大感知距离为0.79米,即在第24个距离单元处截断,得到的变换后的输入维度为(24,16,6)。由于作者没有对输入数据进行归一化处理,一方面为了处理距离维度的高动态范围,另一方面也是为了降低计算量,作者先采用了几层1x1卷积核沿着距离维度进行特征提取,然后再将各个特征沿着多普勒维连接在一起,利用3x3卷积提取运动信息。提取到的特征被送入LSTM模型进行分类预测,时间序列长度被设置为12帧。
数据集方面,作者收集了总共包含558,000个正样本以及3,920,000个负样本的大规模数据集。作者从谷歌内部招募了7647名志愿者,每人进行12次不同的手势,并收集了不同场景下的数据,包括实验者站着或坐着,手机放在手中或者桌子上,手机横放竖放等。作者还收集了285小时的负样本,这些负样本包括人与手机的正常交互,用来测试在日常生活中的误检率,以及一些和目标手势很相似的动作,作为对抗样本测试鲁棒性。在训练过程中,作者选取手离雷达最近的一帧作为中心,截取两边共12帧作为输入,并对数据进行了随机的尺度缩放作为数据增强,训练集的正负样本比例为1:6。实验结果表明,在三个方向的分类准确度都超过了99%。在实时性方面,作者通过Tensorflow Lite进行了模型轻量化:模型尺寸仅为0.14MB,在谷歌Pixel 4 XL手机上的推理时间仅为0.147ms。在负样本数据集上的实验表明,在0.8检出率的条件下,模型在一小时内对向左/向右/背景的误检率分别为0.03/0/0.06,可以认为算法满足了现实使用的需求。
在下表中,我们对以上三篇基于Soli雷达进行手势识别的文章做了归纳总结。可以看到,谷歌分别在模型,数据和任务三方面做了一系列改进:模型方面,谷歌的研究人员更加充分利用了数据驱动的方法,从最早的手工特征,到直接从雷达原始数据用CNN提取特征,并用LSTM嵌入时间序列信息;在数据方面,谷歌收集了大规模高质量的数据集,这也是保证其数据驱动算法泛化性的基础;在任务方面,谷歌简化了需要识别的手势信息,降低了任务难度,提升了手势识别准确率,从而满足了日常生活中的使用需求。
自从2016年在谷歌I/O大会上宣布Soli计划以来,经过三年的研发,Soli雷达终于在2019年作为亮点功能在谷歌Pixel 4手机上亮相。手机作为消费者日常使用最为频繁的电子产品,如果基于雷达的手势交互被消费者接纳,无疑Soli雷达将获得巨大的成果;同时,手机对尺寸,美观,能耗,以及用户体验都有着很高的要求。选择手机作为Soli的主要应用场景,困难和机会并存。
为了将Soli整合到Pixel手机中,谷歌的雷达系统团队与产品设计团队进行了紧密的合作。第二代Soli采用了1发3收的天线布局,使得整个雷达系统缩小到5.0x6.5mm,可以嵌入到手机内部。在布置方面,由于射频信号可以穿透玻璃和塑料组成的外壳,所以芯片上方没有开孔,这有利于外形美观,也有利于实现防水等功能。但实际上,外壳对雷达信号有着很大的影响,团队通过优化芯片的位置和芯片上方的堆料,最大程度地提高了雷达信号的传输,减少了周围组件的反射和遮挡。团队还发现,麦克风导致的音频振动对雷达信号影响比较大,对此他们开发了一种滤波算法,以减少音频振动的影响,从而实现在播放音乐的同时进行手势检测。Soli团队还引入了几个创新的硬件电源管理方案,并优化了Soli的计算周期:在一个猝发周期内,雷达一次性发射16个chirp,然后等待下一个猝发周期。通过设计2000 Hz的脉冲重复频率(PRF)和25 Hz的猝发率(burst rate),雷达的发射占空比仅为2%,从而实现5米之内5mW的低功耗检测,满足智能手机的功耗需求。
软件方面,Soli被应用在名为Motion Sense(运动感知)的应用服务中,用户能够在不接触设备的情况下以多种方式与手机互动。Motion Sense提供的交互可以分为三类:第一种类型是感知存在。例如,当用户把手机放在桌子上时,如果Soli检测到用户远离手机,则会关闭显示屏以节省电量。第二种类型是靠近检测,例如当闹钟或铃声响起,当Soli检测到用户伸手去够时,无需真的触碰到,手机便会自动安静下来。当Soli检测到用户伸手拿手机时,会迅速点亮屏幕,并激活面部解锁传感器,从而实现更快的响应。第三种是手势交互,但是Soli只实现了两种情境下的手势,包括用“快速扫”的手势关闭来电或者闹钟,以及用“左右扫”的动作来切换音乐曲目。
一个新功能的使用,离不开软件生态,但遗憾的是,谷歌并没有向开发者公开Soli雷达的安卓API。谷歌仅仅提供了一个名为Soli Sandbox的展示程序,它允许开发者从用户事件中读取识别到的手势结果。这些事件被保存为json格式的数据结构,可以打印到控制台。虽然这些代码片段可用于在JavaScript和HTML5中创建网络应用,但它们不能用于设计安卓应用。对于部分得到官方授权的应用,Motion Sense提供了名为Oslo的服务,用于把手势消息发布给这些应用程序。但得到授权的应用数量很少,包括 Pokemon Wave Hello,以及一些音视频应用,不在白名单中的应用则无法使用该服务。因此,Soli未能成功建立其应用生态。
在发布仅仅十个月后,谷歌就宣布在下一代Pixel 5中不再使用Soli雷达,并且将Pixel 5的定价下调100美元到699美元。
尽管Soli在手机中的应用以失败告终,但谷歌并未完全放弃Soli计划。2021年,谷歌宣布将Soli应用在他的智慧屏Nest Hub中,用于睡眠监控。近年来,睡眠跟踪的功能越来越受欢迎,大多数智能手表和健身手环都提供了这一功能。与可穿戴设备相比,基于Soli的睡眠追踪不需要佩戴传感器,不需要反复充电,在使用方面更加便利。
最初,Soli雷达被用于睡眠跟踪功能[9],即分辨使用者处于清醒还是睡眠状态。该功能可以分为定位和动作检测两步:首先,研究人员设计了自动校准算法,把波束对准用户的睡眠区,从而降低同床的人以及房间内的运动物品,例如摆动的吊扇和窗帘,造成的干扰。第二步是在睡眠区内进行运动模式的检测。雷达频谱可以分辨不同的运动模式,包括大幅度的姿势变化,小幅度的肢体运动,以及休息时呼吸产生的亚厘米级的胸部和躯干位移。研究人员通过端到端的机器学习算法对雷达频谱进行分类,实现了三种状态的预测,包括无人、醒着或者睡着。为了训练和评估该模型,研究人员收集了来自数千人的超过一百万小时的雷达数据,以及对应的睡眠日志。为了验证算法的准确性,研究人员将雷达得到的结果与医疗领域常用的多导睡眠图进行了比较,实验对象包括33名年龄跨度较大的健康睡眠者,实验结果表明基于雷达的睡眠-苏醒估计相当于或在某些情况下甚至优于目前的医疗级睡眠跟踪。
在发布睡眠跟踪功能3个月后,谷歌团队又对该功能进行了升级,实现了对睡眠阶段的监测[10]。睡眠可以分为深度、浅度和快速眼动(REM)三个阶段,大脑特殊的神经回路可以对睡眠周期进行调节,在三种阶段切换。结合阶段信息和对干扰事件的检测,可以更好的了解睡眠状态。医学上对睡眠阶段监测的标准是多导睡眠图,它采用了一系列可穿戴的传感器来监测睡眠期间的一些身体功能,如大脑活动、心跳、呼吸、眼球运动等。这些信号可以由技术专家进行解读,以确定睡眠阶段。为了实现Soli雷达对睡眠阶段的监测,研究人员采用了迁移学习的方法。他们采用了一个多导睡眠图的公开数据集,该数据集使用了胸腔呼吸感应测压(RIP)传感器,通过把传感器佩戴在测试者胸前,测量由呼吸引起的运动。与之类似,雷达也可以通过震动测量呼吸和运动的信号,两个传感器之间的这种相似性使得迁移学习成为可能。因此,开发团队利用了基于迁移学习的小样本学习,先利用源域数据集中RIP传感器提取的频谱图和对应标签进行预训练,然后以雷达频谱图作为输入,在收集的Soli雷达的小数据集进行微调。测试结果表明,微调后的雷达模型与其他消费级睡眠追踪器表现相当。
图18 睡眠阶段检测
除了睡眠状态监控外,Nest Hub还实现了睡眠障碍检测和分析的功能。咳嗽和打鼾是睡眠障碍的两种主要来源,研究人员通过Soli雷达和麦克风的协同,对咳嗽和打鼾实现了精准的监测。首先,雷达的入睡检测功能为语音监控算法提供了触发信息[9]。一旦检测到用户已经入睡,它就会激活语音模型,并借助神经网络模型实现咳嗽和打鼾的监测。一个在实际场景中存在的问题是,在双人同时睡眠的情况,仅仅通过音频很难区分出不同的声音来源。研究人员结合音频监测结果和基于Soli的运动和呼吸信息解决了这一问题[10]。当主要用户打鼾时,音频信号中的鼾声将与Soli雷达传感器检测到的吸气和呼气紧密相关。相反,当在校准的睡眠区外检测到打鼾时,这两个信号将独立变化。因此,当检测到咳嗽或打鼾,但音频和运动特征之间没有足够的相关性时,算法将从用户的咳嗽或打鼾信息中排除这些事件,并将其记为 "其他声音"。
谷歌Soli在手机中的应用以失败告终,由此引发了一个讨论,隔空的手势操作是不是一个伪需求?首先,从产品完成度上看,Pixel中的手势识别功能十分简单。在谷歌早期的论文中,他们试图建立一套完整的基于手势的交互语言,但是在Pixel 4产品中,他们只保留了几个简单的动作,实现了极其有限的交互方式。背后的原因或许是,不同人的手势区别很大,而神经网络算法暂时还无法对复杂的手势实现低误触率的检测。其次,尽管隔空手势识别在一些应用场景确实可以提供一些便利,但是对于用户来说,养成一种新习惯是很困难的,况且谷歌在手机市场上的份额有限,无法把自己的这套交互语言进行大范围推广。第三点,Soli雷达带来的溢价(取消Soli之后的Pixel 5售价下调了100美元)与其带来的便利性没有很好的匹配。因此,谷歌在手机发布之后短短10个月,就砍掉了这个功能。但是,雷达在手机中的使用并未就此划上句号,其他手机厂商也在探索雷达的应用,例如国产手机厂商一加,在其概念机中集成了毫米波雷达,实现了通过手势隔空接听或者挂掉电话,还可以检测呼吸频率。学术界也在尝试,使得算法可以在线的学习用户定制化的手势,实现更丰富的手势识别,例如在英飞凌最新发表的文章[11]中,他们探索了利用元学习实现基于少样本的新手势识别。在未来,毫米波雷达依然有机会作为差异化功能应用于手机旗舰级中。
除了手机之外,健康检测也是一个极富潜力的应用场景。除了谷歌之外,全球智能音箱市场的老大亚马逊也于2021年7月获得了美国联邦通信委员会(FCC)的批准,未来可以生产用于睡眠健康监控的雷达设备。英飞凌也于去年宣布和瑞士数字健康技术公司 Sleepiz合作,推出一套更为专业的居家睡眠监测解决方案,能够通过呼吸频率来判断睡眠过程中是否有伴有呼吸暂停,以及暂停的严重程度。毫无疑问雷达在隐私和无接触方面的特点,使其相较监控摄像头或者智能手表有着明显的优势,但是睡眠监控市场仍在起步中,未来的发展还不明朗。除了睡眠监控外,雷达在生命体征检测方面也有着大量的应用,例如Blumio开发的非接触式血压传感器,以及国内清雷科技实现的非接触式心率变异性(Heart Rate Variability, HRV)检测等。Invoxia更是创造性地把雷达应用在智能狗项圈中,对狗狗的生命体征进行监控。
与汽车雷达的火热相比,毫米波雷达在人体感知市场还方兴未艾。汽车雷达市场的发展往往是自上而下的,需求主要由整车厂提出,而消费者本身与雷达产品距离较远;对于人体感知市场,需求是自下而上的,且对价格敏感,即使产品足够好,也要考虑用户接受度,使用习惯以及性价比的问题。因此,厂家需要详细分析用户的需求,发挥创造力,开发出好用而且易用的产品。雷达走向消费级市场仍然有很长的路要走,很难准确预测什么样的应用场景真正适合雷达。找到合适的应用的过程中,需要大量的尝试,因此降低研发成本变得至关重要。谷歌和英飞凌分别在软件和硬件方面各自进行了一些努力。谷歌起草了通用雷达API标准Ripple[12],通过定义标准化的硬件抽象API和信号处理库,目的把软件和硬件解耦,从而加速雷达产品开发;英飞凌则是在原有24GHz雷达的基础上,把60GHz雷达也加入了其智能传感器XENSIV生态,并提供了开发板和SDK,降低了开发难度,并积极培育全产业链生态系统,与不同类型的合作伙伴携手,开拓更多新的应用场景,共同发掘商机。
本文以谷歌Soli雷达为案例,简要的介绍了毫米波雷达在手势识别和睡眠监控市场的应用。未来,随着硬件厂商,开发者以及研究人员的共同努力,毫米波雷达在消费级市场有望迎来更快的发展。
参考文献: