现今,汽车利用强大的传感器和嵌入式计算机优化驾驶效率、安全和体验。然而利用汽车内置传感器数据进行分析推理的敏感性却没有被很好地认知和理解。不能确定汽车制造商和售后监控组件(如保险软件狗)制作者们是否有尝试侵犯隐私,但我们想问:他们(或者得到他们意外泄露的数据的其他人)有能力侵犯司机们的隐私吗?

这里我们尝试研究利用司机们自然条件下驾驶汽车所产生数据的片段来鉴别不同个人的潜在可能性具体来说,我们让 15 个驾驶员各自(a)开车(一款典型的现代汽车,如 2009 年的流行轿车)在一个孤立的停车场进行一系列驾驶演习,以及(b)沿着规定的约 50 英里的路线穿过西雅图都市区绕一圈,在此同时,我们记录下车内CAN网络上的传感器数据。然后,我们把数据分成训练集和测试集,训练一组分类器,并且用测试数据集评估鉴别准确率(对测试数据集中的每一条数据选择所有分类器中预测值最高的那一个为该条数据的预测结果)。

我们的实验结果显示,至少仅有少量驾驶员参与时,只使用车内传感器确实能够区分不同的司机。具体来说,我们发现使用每个司机开车时所有可用传感器产生数据量的 90% 进行训练,区分 15 个人的准确率可达100%。此外,训练不到8 分钟就可达到较高的鉴别率。在增加训练数据的前提下,仅使用单一一个传感器(如刹车板)就可达到相当高的鉴别准确率。作为扩展,我们也证明了通过收集好几天的数据以实施司机鉴别的可行性。

关键字:安全与隐私,汽车传感器,驾驶员鉴别,机器学习

1 引言

经过纯粹地植根于机械的时期,汽车发展成智能的信息和物理融合的平台。精密而复杂的传感和计算系统支撑此平台的构建,并相互协调以提高安全、效率和人机交互体验。最近,安装了移动通讯设备的汽车已拥有能力去和汽车制造商、第三方组织和道路设施通信。此通信允许(有时被预处理过或二次采样过的)数据双向流动。

一方面,计算、感知、连接技术在汽车市场开启了新的创新水平,旨在提高驾驶体验。另一方面,考虑到这些发展带来潜在的数据拥有与隐私间的利益冲突,消费者和政策制定者们的忧虑不断增加。

在大力追求充分利用互联汽车所产数据流的同时,隐私受到的影响和数据潜在的滥用却较少为人所知。我们当前的工作目标是为政策讨论提供一个实验性的基础,以提出是否必要在数据共享场景下平衡功利与隐私。

为此,借助搜集于典型汽车(2009的轿车)中传感器的数据,我们调查实施隐私不经意地被破坏的潜在可能性。我们当作实验基础的数据在汽车内部的网络上已存在,而且如第2节所述,越来越多的司机们选择共享或发送这些数据给第三方组织(包含保险公司和初创公司)。在期待第三方汽车数据搜集组织大多可信的同时,我们检测从这些传感器数据中提取隐私信息的潜在可能性,以评估滥用这种信任的潜在可能性。

实验

15个司机(7女8男)驾车进行封闭式科目的停靠与迂回前行动作,并驶过大概50英里的开放道路。与此同时,我们记录下车内网络上正在广播着的16个传感器数据流。在开放道路上,我们还按照之前预定的科目(译者注:应该是指进行停靠与迂回前行)进行并记录下产生的数据,并且为了消除不同交通条件下的差异,我们都是在每天的同一时刻开始记录数据。

以这样的开放与封闭道路条件下传感器产生的数据作为数据库,我们研究了利用训练时看不到的查询传感器数据片段鉴别不同司机的潜在可能性(使用一个分类器组,其中数据分成90%的训练集和10%的测试集以交叉验证)。

目标

我们的实验目标是评估分类器预测的准确性,这些训练好的机器分类器要以持续记录时间和传感器数量多样化的数据集作为输入来鉴别司机。在第3节(威胁模型),我们讨论司机鉴定可导致严重隐私受损的情形。注意,我们使用术语“识别(identification)”和“指纹采集(fingerprinting)”(译者注:统一翻译为“鉴别”)并不是用于表示唯一性,而是表示此方法可从一个司机集合中再次识别出同一个司机。

结果

起初,我们期待可以发现司机之间的差异性,毕竟不同人类个体显示出多类不同人类行为;然而,令人吃惊的是竟然有这么高的15人鉴别准确率,且仅使用少量的传感器和数据。我们发现的几个亮点包括:

使用15个传感器和整个数据库的驾驶数据的15个司机的鉴别准确率可达100%。

仅用数据库中所有刹车板数据的15个司机的鉴别准确率可达100%。

使用多个传感器的小数据集(8分钟、15分钟、1小时)的15个司机的鉴别准确率可达100%。

仅使用单一传感器(刹车板)在开放道路下最早15分钟内产生的数据进行训练的15个司机的鉴别准确率可达87%。

启示

我们的研究结果表明,汽车传感器数据具有巨大潜力,能得出重要推论结果(译者注:如使用车内传感器数据鉴别不同司机等敏感信息)。从那些操作数据被记录的司机角度来看,这些推论可能并不希望被看到。尽管我们不希望减少消费者们交互的、个性化的和联网的汽车体验的兴趣,但我们认为我们的工作揭示了使用计算机化的汽车可能形成的隐私威胁。我们的研究特别关注于已存在于汽车市场上的制造商、司机和利益相关参与者,他们能记录汽车行驶时在车内计算机网络上传输的消息(传感器数据)。最后,希望我们的研究工作有助于政策和机制的设计,以平衡出现于现代汽车环境下的功利和隐私矛盾。

2 背景

在被发明后的第一个世纪,汽车都使用非数字技术。直到上世纪80年代早期微处理器的出现和“加利福尼亚市清洁空气法”的采用,电子控制单元(ECU)才被广泛地嵌入汽车结构中。从那时起,电子组件数量急剧增加。典型的现代汽车内拥有数百个嵌入的CPU、传感器,并通过内部复杂的网络连接起来。

最近,第三方也接入了产生数据的车内网络。从硬件上看,实现这样连接性可通过内置的信息通讯单元(2G/GSM, 3G, 4G, and LTE);通过内置于数据采集设备(例如,保险软件狗)内的移动网络;通过司机的智能手机;并且在某些情况下,OBD-II软件狗可与汽车分离并连接上电脑(译者注:而进行数据传输)或被返还给供应商(译者注:由供应商从此设备中提取数据)。

新兴数据市场紧盯着车辆数据,其驱动因素是车辆传感器数据流的金钱可转化性与无处不在的网络互连性。接下来介绍在这种急剧增长的汽车数据共享经济环境下的一些参与者们。

应用于保险业

许多保险公司提供“你开车我付钱”折扣,只要司机能一直“安全”地驾驶就能降低一定百分比的保险金(如Progressive’s Snapshot,State Farm’s In-Drive, Allstate’s Drive Wise等项目)。感兴趣的司机们会把一个软件狗安装在汽车的OBD-II接口上,从而让这个软件狗能在本地分析传感器数据或上传至上游处理。保险公司制定保险金降低率的判定标准并不总是公开的,然而有些公司会公开部分标准,比如Progressive公司声称会把急刹车、深夜驾驶(0点至4点间)、超速驾驶当作不好的行为。

车队监控

商业车队运营商常在车上安装追踪器(内置GPS和通讯模块的OBD-II软件狗连接器),其可提供基于web的远程报表工具,而且一旦司机空闲太久、超速或偏离被称为“地理围栏的预设地理区域,则会发送自定义的触发式警报和提醒。

汽车更智能

像 Automatict 和 Zubie 这样的初创公司(通过使用大概100美元的OBD-II软件狗和蓝牙通信设备) 能把车内网络上的数据传入司机的手机并交给一个手机App处理,这种能力有望把任何汽车变成“智能汽车”。其提供很多功能,如:

记住你在哪停过车;

向想拼车的朋友显示你的抵达时刻;

辅导、追踪、游戏化新手司机的训练(提高你上下班的油耗利用率);

把你的手机切换至免打扰模式;

翻译汽车诊断码等。

一个非常引人注目的特点是,这些技术能让安装了OBD-II的车辆加入司机相关的生态圈,并增强与其它智能设备和应用的交互(比如:在下班时打开家里的取暖设备[通过Nest];记录自己的行驶路线到Google Spreadsheet;当自己在杂货店附近时发短信通知另一半,看其想买什么等)。

作为移动操作系统的汽车

汽车制造商也提供内置的强大信息娱乐和协助系统,这些系统综合分析传感器数据,并使用信息通讯解锁强大功能 (如通用汽车的MyLink, 福特的Sync,奔驰的DriveStyle)。此外,汽车制造商与手机制造商合作,使得能与已存在的手机平台无缝交互。比如,在锁定许多会分散司机精力功能的同时,苹果的CarPlay(预计于2015年在40个汽车品牌上推出)可接管仪表界面,运行一个精简版的iOS,让声控(Siri)管理声音与音频流服务、消息服务、地图服务和其苹果手机的手机功能。

3 威胁模型

我们考虑这样一个威胁模型:其中的坏人可访问已接入车内计算机网络的信息(设备)。因此,此模型中的坏人是车内计算机网络上的被动窃听者。这暗示一些恶意实体可访问那些车,因为我们注意到提供基于汽车OBD-II接口数据分析的第三方公司不断增加(如:Automatic.com, Mojo.io),这样已存在和将存在的系统会上传原始数据到服务器,并在那里任人宰割或被滥用。尽管我们使用术语“adversary(注:敌手,这里译作坏人)”,我们注意到“adversary”并非真的恶意。比如:“adversary”收集存储车内计算机网络上的数据可能只是为了调试或其它(正常)目的,但由于数据泄漏或传票,这些数据后面可能暴露给确实想侵略司机隐私的另一方组织。我们采取这样的观点是因为我们不希望暗示已存在的汽车制造商或售后市场供应商是恶意的,但如同我们在下面讨论的,我们注意到他们是有尝试鉴别司机的动机的。

3.1鉴别

我们选择“driver fingerprinting(注:司机的可鉴别性)”作为隐私(被侵犯)的度量。假如他或她基于收集的车内计算机网络信息鉴别(或识别)了一个司机,我们就说这个坏人损害了这个司机的隐私。但,我们使用的术语“fingerprint(注:采指纹,这里译作鉴别)”和“identify(识别)”与通用英语对这些术语用法是不同的。当然,跟设备或操作系统鉴别一样,对某司机的鉴别是让坏人能从一个(较小)集合的司机人群中重新识别出这个司机的能力。

3.2数据来源

我们的理解是,已存在的组件(如:汽车售后市场的保险软件、如同远程信息处理单元的内置射频设备或像苹果的“CarPlay”的可连接手机的仪表盘。更多请看第2节)能够访问车内计算机网络并为了各种不同目标读取数据。由于车内计算机网络上的任何其它组件都已可以访问网络上的数据,而且已存在的售后市场内嵌组件已正在读取这些数据,我们相信在未来越来越多的组织会获得车内网络数据访问权限的假设是合理的。我们的目标是理解,即使在有限的车内网络数据条件下,坏人是否能够损害司机隐私。为了简单起见,在本章节之后的部分,我们仅假定是一个软件在读取数据,因为其实有很多其它获取车内网络数据的方式,比如通过内嵌或售后市场组件。

3.3场景

我们的目标是了解让潜在坏人访问车内计算机网络数据会对隐私造成的潜在影响。因此,尽管我们主要的工作重心在此问题的技术研究,我们还是举出了几个场景样例,在其中,我们探索出的能力可以用来对付车主或车的另一个司机。

——假设一个闯红灯摄像机捕捉到了一个车在红灯时飞驰而过,还假设司机的脸是模糊的。车主Alice说不是她在开车,她把车借给了Bob。车上装着的售后市场软件连接着车内的计算机网络。警察可通过与车主的保险公司或通过传票获得权限访问软件里存着的数据(或者可能数据已被自动上传至云端)。使用这些数据,警察可以获得明确证据,指明事实是Alice而不是Bob在那个时候驾车闯了红灯。

——假设Alice和Bob一起租了一辆车,但租约上标明Alice是唯一的授权使用者。她在租约上签了名,然后从租用车停车场提了车,开了两小时。他们停车去喝咖啡,然后决定由Bob开车。使用我们在本文中探索出的技术,这车上附加的软件能够(有较高可能性)检测出开车人已不再是Alice了。

——假设Alice有辆车。车上装有一个售后市场保险软件。她的儿子Bob刚取得驾照。Alice并不打算去或在之前并没有去为儿子购买额外的夜间驾车保险,因此Bob只允许在白天开车。但有一天他确实在晚上开了车,保险公司检测到了,于是造成Alice的保险被取消。

——Alice想知道Bob的另一半是不是正在开着Bob的车――这是Alice明令禁止的。为了检测这种情况,Alice安装了一个软件在Bob的车上,然后Alice就能在软件检测到Bob不是司机时立即收到一个文本消息。

——Alice和Bob共有的车内装有附加在车内网络上的软件。当软件检测到开车人是Alice时,后端服务就会向Alice发送特定于其喜好的餐厅广告消息。当Bob在开车时也一样。

尽管是假定的,但这些场景说明就算在很少的司机集合中进行司机鉴别的能力也会引起隐私问题。我们注意到有人可能争论说至少前三个场景显示了车内计算机网络数据的合法应用,其他人则争论所有的5个场景都展示了对隐私的侵犯。

对前三个场景可能的争论暗示很有必要去讨论这个问题。如同我们在本文所做的,对司机鉴别可行性的理解会有助于讨论这些争论。

3.4轶事

有趣的是,我们发现过去的公司已经做过或知道他们能以侵犯隐私的方法使用车上的数据。举例来说,Elon Musk (特斯拉汽车公司CEO)最近使用汽车传感器数据拒绝了纽约时报记者关于其汽车电池容量不足的索赔。类似地,引用福特的销售经理Jim Farley所述:“我们知道任何违法的人。当你正在做的时候我们会知道。我们在你的车上装了GPS,所以当你做时我们会知道。”。这些轶事进一步表明有必要更好去理解计算机化的现在汽车的持续增长对隐私所造成的影响;本文中我就研究此问题。

3.5约束坏人

在调查中,我们有意地限定坏人只是被动地监听车内计算机网络上的通信。我们做出这样的限定是为了保证让坏人处于一个具有挑战性的位置;假如坏人在这种限制的条件都能侵犯隐私,那么其显然可以在得到更多数据或权限的时候侵犯隐私。在一些分析中,我们甚至进一步限制坏人只能访问有关于车内特定组件的数据。我们发现即使这样严格地限制,坏人仍可以较高可能性鉴别出司机们。我们的研究结果显示了防止隐私信息流向已接入车内网络的第三方的固有难度,至少对当前基于标准汽车网络协议设计的汽车来说是难的。

4 实验数据采集

回想一下我们工作的目标:利用车上现有传感器产生的数据进行实验,以测量司机的差异度。为此,我们采集了一辆车的内部通信网络(CAN总线)上的数据,这辆车由15名志愿者驾驶,分别在一个封闭的停车场和一个50英里的开放道路上进行驾驶科目。对于每个司机,我们会在每天的相同时间进行数据采集,以削弱交通条件造成的偏差。为了更进一步规范驾驶环境,我们要求所有司机收听同一个广播电台(快节奏的流行音乐)。

4.1(所用)车辆与传感器选择

我们用于采集数据的汽车是2009年的流行款轿车。具体地说,在驾驶行为采集过程中,我们连着诊断口(ODB-II),记录下由各种各样的制造商所安装的电子控制单元(ECUs)和传感器所广播的数据。如前所述,我们实验车上的可用传感器数据流比我们选中用于记录数据的(传感器数据流)要更多。我们选择传感器数据流的动机集中于对司机控车动作和汽车动态(无需附加外部环境知识)的分析。表1列出了我们记录数据的16个传感器。这些传感器在大多数车上都存在,并在现代汽车环境下提供了测量信息泄漏的基线。此外,我们期待由这些传感器子集所产生的数据是依赖于司机行为的(而不是完全耦合于车内系统行为)。需要注意的是,我们采集数据的设备是被动的,而且我们只监听广播(如:我们并不修改任何传感器)。

4.2司机征募

征募之前,我们首先获得华盛顿大学人类学科的批准(IRB#: 44435 “Methodologies for Driver Behavior Fingerprinting from Sensor Data Collected During Vehicle Operation”)(IRB#: 44435“利用汽车行驶中的传感器数据鉴别司机的方法”)。随后,我们利用公开传单和邮件列表招募受试者,传单上描述了实验的设置,对于预期最大3.5小时(平均时长3小时)的研究时间会提供75美元的补偿费用。在有兴趣的响应者人群中,我们选择作为候选人的条件是:(1)持有合法驾照;(2)持有合法大学身份证(出于保险目的);(3)在过去一个月内驾驶车辆。除了纳入这些标准,我们还尽力选择参与者,以展现男女平等。最终我们这组15个参与者中有8男(平均27.7岁)7女(平均32.5岁)。年龄最小者为24岁,最大者为47岁。

4.3驾驶数据设置

下一步,我们帮助受试者熟悉这辆车,并随后开始两部分的数据搜索过程。在数据搜索过程中,受试者会一直在车上,去记录传感器(使用笔记本),提供说明,协助提问和疑虑,并在事故时提供帮助。每位司机的数据在每天的同一时间收集(熟悉车辆和封闭科目于PST时间的12:30开始,开放道路驾驶于PST时间的下午1点开始),以排除特定交通情况对驾驶风格的影响(如高峰期)。此外,为了支撑结果,若训练数据集来自于封闭科目环节,那么测试数据集就取自开放道路环节(反之亦然),这样可保证(交通)环境影响不支配身份签名。

熟悉车辆

由于我们并未期望志愿者司机们熟悉我们的这辆汽车,在开始驾驶部分的研究之前,我们指导他们每个人经过一个简单的检查和定位过程。在指导下,参与者熟悉了仪表板、控制(如:雨刷、转向灯、危险灯、车喇叭),他们也有机会进行调整(座位、方向盘、后视镜)。我们注意到这些调整项目没哪个(在我们允许的执行器/传感器列表之外,也没有哪个执行器/传感器)是用在我们的数据采集或司机鉴定中的。我们假设这些传感器的使用只是让鉴别容易些,然而我们并没有使用他们,这是因为我们希望专注于有关独立于这个实验汽车内部特定特征的驾驶行为的动作。

驾驶部分1 ―― 停车场演习

封闭科目实验部分有助于收集技术性驾驶行为,避免其他司机和交通状态的干扰。受试者被要求完成3圈(第一圈是练习,第二、三圈记录数据进驾驶数据库),每一圈都包含以下序列的演习:(1)平行停车;(2)迂回前行通过5个圆锥体;(3)3点转弯;(4)迂回后退通过5个圆锥体。在一个停车场中有一个保留下来用于长期工作车辆储存的场地,所有的封闭科目实验在那里完成,在此之前有得到我们舰队大学服务部的许可。

驾驶部分2 ―― 开放环路

最后一部分的研究要求受试者驾车行驶于一个预定的大概50英里(约2小时)的都市内环路。这些科目的设计包含了各种类型的道路,包含高速公路、城市、住宅和工业区驾驶段。

5 分析模型

我们下面描述了从车内网络报文中提取传感器数值的步骤序列:信号预处理;特征提取;并使用一组已训练的成对的分类器(多类别分类)得到测试数据片段的分类结果。

5.1来自CAN的传感器数据

如第2节所述,传感器数据周期性地在汽车的CAN网络上广播。对于表1所述传感器,我们抓取了十六进制的有效载荷,添加时间戳并提取翻译为十进制数据。在某些情况下,要线性变换原始数据,以使每个传感器数值保持在期望取值范围;用于加或乘的转换系数(译注:如某个传感器数值的单位)在制造商的文档里有说明。

表1. 用于数据收集的传感器

分析中使用的传感器列表。请注意,取值范围是基于传感器硬件,可能不反映正常操作期间可达的经验水平

表2. 数据段细节

每个主体驾驶车辆通过3段(停车场,开放驾驶部分1和开放道路部分2)。关于道路的细节类型/演习,旅行时间和每段行程距离列于上。

图1. 数据采集:驾驶回路和停车场位置。开放的道路部分开始和结束点都在华盛顿大学的校区(黄色点;逆时针行驶)。封闭科目(停车场)驾驶涉及的几圈是在一个封闭的停车场里的一个区域;每一圈由一系列的演习组成,其中包括平行的停车,向前和后迂回通过锥体,以及三点转弯。

图2. 在整个开放道路驾驶(不包括停车场)过程中显示的速度数据。注意行驶不同区段时速度的差异;各段用不同颜色框突出显示出来(如:州际=绿色,城市=粉红色)。

5.2信号预处理

一旦十进制数值被处理并被线性转化至期望的范围,我们基于每个传感器固有的采集率,以60Hz的二次插值和必要的提取重新采样每个传感器。数据均匀采样后,我们应用小波去噪去除高频伪影,以平滑每个传感器数据流。该操作涉及多级平稳小波分解及其后续重建,使用Haar小波(又名Daubechies 1),并使用MATLAB iswt命令的默认去噪阈值。

5.2.1 衍生的传感器(数据)

除了可从诊断口中采集的原始传感器值,我们还比较感兴趣的是使用衍生特征(数据)进行测试(鉴别)的可能性。为此,我们计算了向前和横向方向上的加速度(jerk意为急促而猛烈的动作)的导数。Jerk是一个常用于最优控制文献中的特征,我们也预计它可能会捕捉到试图最大平衡化(地行驶)的司机行为。计算前向jerk,我们使用前行速度的二阶导数;横向jerk通过横向加速度导数算得。在这两种情况下,我们应用了一个额外的平滑处理层,以去除非连续采样的高频伪影。

5.3滑动窗口

每个传感器数据预处理后,我们把它分成重叠滑动窗口,从中可提取我们(想要)的特征。滑动窗口长度(采样数)和与前一个连续窗口的重叠百分比是自由变量,我们先设成默认值,后面的在描述结果的小节里会优化。

5.4特征

我们从预处理后的信号中派生出特征是为了捕捉每个传感器数据流的统计和形态上的特点。对于每个传感器和时间段(滑动窗口),我们总共得到48个特征,其中包括:

统计特征:最小值,最大值,平均值,四分位、标准差、相关、峰度、偏度。

描述特征:PAA即分段平均近似(10分段)

频率特征:快速傅立叶变换(前10Hz的功率部分,10-20hz范围的平均功率,20-70hz范围的平均功率和大于70hz部分的平均功率)。更高频压缩和捕捉低频原始数据的重点基于期望致动率(即,司机不太可能以高于10次每秒的速率执行动作)。此外,我们提到采样率为60Hz,从而任何超过30hz的数据都是谐波(Nyquist准则)。

5.5机器学习和多类别分类

从每个滑动窗口计算的特征包括一个单样本向量,用于机器学习分类器集合的训练或测试。下面我们描述分类器集合的成员、训练和测试样品的划分,以及用于多类别分类的算法。

5.5.1 训练与测试(数据的)分割

给定一个数据库的驾驶数据(例如,停车场传感器记录),我们用可用数据的大部分(90%)训练每个分类器,并用剩余(10%)的数据子集测试(用看不见的数据执行查询。注:应是指无标签的数据)。我们用十路交叉验证确保每一个数据库(数据)的子集都被用于测试和培训。我们还确保训练和测试数据集之间没有跨越重叠的滑动窗口(注:应是指一个数据若用于测试就不再用于训练,反之亦然),方式是移除以90%/10%分割方式的边界的样本。在每一个交叉验证分片中,我们使用测试数据计算一个应用于所有(训练或测试)数据的缩放值。缩放是为减少离群样本点的影响,并基于以下公式:

其中ε是一个很小的正数(1e^−6),用以避免被除零。

5.5.2 分类器集合

在我们的分析中,我们使用了以下四个机器学习进行二元分类。

支持向量机:径向基函数核(sigma 1),内点法(二次型规划求解)(libsvm 3.1包)

随机森林:1000个分类树(RandomForest MATLAB 4.5-29包)

朴素贝叶斯:核平滑密度估计,uniform prior (matlab NaiveBayes. fit)

KNN(K近邻):参数:Q = 9,用欧氏距离度量,多数规则决胜(MATLAB knnclassify)

5.6成对比较- Qweighted

由于我们用的都是二元分类器,而且我们需要区分许多可能的司机个体(N>2),所以我们需要能够支持多类别分类。我们使用的多类别分类方法是去训练一组成对的分类器(一个分类器对应一对受试司机)。对多数种类学习算法来说,这种方法已产生更准确的结果,且比one-against-all方式更好,这是因为它(1)需要较少的训练数据,而且(2)使用更少的内存进行训练。

本文由 hanbingxzy 编译

原文作者:Miro Enev*, Alex Takakuwa, Karl Koscher, and Tadayoshi Kohno

来源于:利用汽车内置传感器数据 鉴别汽车驾驶员(上)

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注