[0001] 本公开涉及机器学习系统及技术。更具体地,本公开涉及训练数据生成技术。
BACKGROUND(背景技术)
[0002] 用于自动驾驶等应用的深度学习系统通过训练机器学习模型开发而成。通常,深度学习系统的性能至少部分受限于训练模型所使用的训练集质量。在许多情况下,大量资源投入到训练数据的收集、整理和标注中。创建训练集所需的工作量可能非常大,且通常较为繁琐。此外,对于机器学习模型需要改进的特定用例,收集数据往往较为困难。
[0003] Alain Guillaume 等人:《Understanding intermediate layers using linear classifier probes》,2016 年 10 月 14 日,第 1-9 页,涉及神经网络模型。
[0004] Mariusz Bojarski 等人:《End to End Learning for Self-Driving Cars》,康奈尔大学图书馆,201 Olin Library Cornell University Ithaca, NY 14853,2016 年 4 月 25 日,涉及自动驾驶汽车。
SUMMARY OF THE INVENTION(发明内容)
[0005] 本发明由独立权利要求限定。优选实施例在从属权利要求中限定。
BRIEF DESCRIPTION OF THE DRAWINGS(附图说明)
[0006] 以下附图及相关描述用于说明本公开的实施例,不限制权利要求的范围。图 1A 是示出汽车在道路上行驶并检测道路上轮胎的示意图。图 1B 是示出训练数据生成系统一个实施例的框图。图 2 是示出将触发分类器应用于机器学习模型中间结果的方法一个实施例的流程图。图 3 是示出利用机器学习模型中间结果创建触发分类器的方法一个实施例的流程图。图 4 是示出利用触发分类器识别潜在训练数据并传输传感器数据的方法一个实施例的流程图。图 5 是示出从触发分类器识别的用例对应数据中部署训练数据的方法一个实施例的流程图。图 6 是示出在车辆上执行分类器选择并传输传感器数据的方法一个实施例的流程图。图 7 是示出用于识别潜在训练数据的深度学习系统一个实施例的框图。
图 2
图 3
图 4
图 5
图 6
图 7
DETAILED DESCRIPTION(具体实施方式)
Introduction(引言)
[0007] 本说明书描述的创新至少解决了以下技术问题。有效的机器学习技术依赖于训练数据集,这些数据集用于为底层机器学习模型提供信息。例如,神经网络可能需要使用数千、数万、数百万甚至更多的示例进行训练。在训练过程中,这些示例可用于调整神经网络的参数(例如权重、偏置等)。此外,这些示例还可用于调整神经网络的超参数(例如层数)。因此,获取训练数据是此类机器学习技术应用的一个约束条件。
[0008] 随着机器学习模型(如更深层的神经网络)变得更加复杂,对大型训练数据集的需求也相应增加。与较浅的神经网络相比,这些更深层的神经网络可能需要更多的训练示例,以确保其具有较高的泛化能力。例如,虽然神经网络在训练数据上可能被训练得具有很高的准确性,但它可能无法很好地泛化到未来未见过的示例。在该示例中,神经网络可能受益于训练数据中包含的额外示例。
[0009] 应当理解,获取训练数据可能面临巨大的技术障碍。例如,某些机器学习模型可用于对图像中包含的特征或对象进行分类。在该示例中,机器学习模型可能学习区分第一对象(例如汽车)和第二对象(例如停车标志)。这些机器学习模型的有效性可能受到特征或对象示例数量的限制。例如,某实体可能希望机器学习模型识别街道上行驶的自行车。又如,该实体可能希望机器学习模型识别汽车后部携带的自行车。如果缺乏这些示例的足够训练样本,机器学习模型的识别准确性可能不足以投入使用。通常,实体可能需要花费大量精力让人员对图像进行标注,以包含特定特征或对象。例如,人员可能需要手动查看图像,然后为图像的部分区域分配对应于特定特征或对象的标签。
[0010] 一个实施例提供了一种通过快速生成训练数据来解决该问题的系统和方法。在一个实施例中,训练数据可包括任何期望的可学习特征的示例。对于计算机视觉,可快速生成包含图像中任何期望对象或特征示例的训练数据。这些对象或特征可能代表通常难以识别的 “边缘场景”。例如,可生成包含实体所需复杂场景图像的训练数据。在该示例中,实体可能希望获取描绘车辆前后携带自行车的图像(例如,公共汽车前架上携带的自行车)。
[0011] 上述实体可利用大量(例如数千、数百万)在世界各地不同道路或其他可导航区域行驶的车辆。这些车辆可包括或能够访问传感器(例如摄像头)。当这些车辆行驶时,它们可捕获传感器信息。例如,传感器信息可在车辆的正常运行过程中捕获。车辆可将传感器信息用于某些自动驾驶功能,例如车道导航。然而,在一个实施例中,该系统包括使车辆能够收集实体所需的图像特征或对象示例的电路和软件,以用作机器学习系统的训练数据。
[0012] 例如,可将分类器(例如小型或浅层神经网络、支持向量机等)上传到至少一部分车辆。车辆可在正常运行过程中获取传感器信息(例如图像、视频),并且分类器可配置为识别传感器信息中表示的特定特征或对象。在提供给车辆之前,这些分类器可被训练为对包含特定图像特征或对象的图像进行分类。例如,可使用特定图像特征或对象的有限数量示例(例如 100 个、1000 个等)来训练这些分类器。如下文所述,分类器随后可利用车辆上运行的机器学习模型的中间层信息对传感器数据进行分类。示例性机器学习模型可包括卷积网络。该示例性机器学习模型可至少部分用于上述自动驾驶功能。因此,分类器可利用现有的示例性机器学习模型。
[0013] 可将多个此类分类器上传到车辆内的计算机系统,使得分类器可用于识别与分类器相关联的特定图像特征或对象。然后,分类器指定为包含特定特征或对象的捕获图像可传输到中央服务器系统,并用作神经网络系统的训练数据。由于分类器可利用车辆在典型运行中已经执行的现有机器学习模型,因此分类器在处理需求方面可能是高效的。此外,可能有大量车辆在不同环境中行驶,这增加了获取某些特征难以找到的 “边缘场景” 示例的可能性。通过这种方式,实体可快速获取代表其感兴趣的特定图像特征或对象的传感器信息(例如图像)。
[0014] 在本说明书中,待学习的对象或特征可代表可在传感器数据中捕获的任何现实世界对象、场景、特征等。示例性对象或特征可包括道路上的轮胎、隧道出口、自行车、树枝伸入道路的树木、车辆以特定方式定向或执行特定动作或操作的场景等。此外,本文提及为特定用例或目的识别训练数据。示例性用例或目的可包括识别一个或多个对象、特征等。此外,虽然本说明书描述了车辆获取传感器信息(例如图像),但应当理解,本文描述的特征可具有广泛的适用性。例如,可将分类器提供给用户设备(例如智能手机),并用于识别特定图像特征或对象。又如,分类器可用于飞机、无人驾驶飞行器、无人驾驶车辆等。
Generation of Training Data(训练数据生成)
[0015] 公开了一种用于识别与特定用例相关的额外训练数据的神经网络训练技术。通过识别和收集额外的训练数据,特别是难以正确分析的用例的数据,可重新训练深度学习系统以提高其性能。例如,可识别困难用例,并基于该用例收集数据。然后,可使用新收集的数据训练新的机器学习模型,该模型的性能优于旧模型。利用现有机器学习模型和触发分类器来识别相关训练数据。然后将相关训练数据传输回进行处理,以创建新的训练数据。在一些实施例中,创建代表目标用例的初始数据集,并用于创建触发分类器。
[0016] 例如,用于自动驾驶的深度学习系统可能难以分析和识别隧道出口。创建包含隧道出口的正例和反例的训练数据集。使用现有机器学习模型某一层的中间输出来在初始训练数据集上训练触发分类器。在一些实施例中,该层是中间层。例如,将训练集中的数据输入到现有机器学习模型中,并将该模型倒数第二层的输出用作训练触发分类器的输入。在一些实施例中,触发分类器是从部署的深度学习应用离线训练的支持向量机。训练完成后,可将触发分类器安装或部署为与车辆自动驾驶系统中已在使用的深度学习系统一起运行。例如,可通过无线网络将触发分类器下载并安装到车辆中,从而部署触发分类器。将触发分类器应用于部署的深度学习系统同一层的中间输出,以确定分类器分数。在一些实施例中,触发分类器的输入是应用于自动驾驶车辆捕获的传感器数据(例如车辆上摄像头捕获的图像数据)的卷积神经网络(CNN)某一层的中间输出。
[0017] 在一些实施例中,使用单个支持向量机、小型神经网络或其他合适的分类器实现的触发分类器可应用于整个捕获图像和 / 或图像的特定位置。例如,触发分类器可应用于图像的每个位置或位置子集。触发分类器可用于在空间上有效扫描神经网络的特征,以识别购物车、动物等小部件。应用后,触发分类器确定分类器分数,并根据该分数识别传感器数据并将其保留为潜在有用的训练数据。例如,触发分类器基于摄像头的传感器数据代表隧道出口的可能性对其进行评分。得分高且可能代表隧道出口的传感器数据被保留并标记为用作训练数据。在一些实施例中,将诸如过滤器之类的触发属性应用于触发分类器,以确定继续确定分类器分数必须满足的条件、分类器分数超过阈值的情况和 / 或保留传感器数据所需的条件。例如,在一些实施例中,每隔一定时间(例如每 30 分钟不超过一次)对传感器数据进行评分和收集。分类器分数必须超过阈值才能收集和保留传感器数据。如果传感器数据满足配置的阈值,则保留该传感器数据并用作潜在的新训练数据。在一个实施例中,传感器数据被无线上传到管理训练数据系统的服务器。
[0018] 在一些实施例中,与传感器数据一起收集和保留额外的元数据,例如位置、道路类型、车辆型号、车辆是左舵还是右舵、一天中的时间、分类器分数、自上次传输传感器数据以来的时间长度和 / 或车辆控制参数 / 运行条件(例如速度、加速度、转向、制动、转向角等)。在各种实施例中,数据和元数据被传输到计算机数据服务器,在那里用于创建新的训练数据集,以改进深度学习系统在特定用例中的应用。例如,与识别的隧道出口相关联的保留传感器数据由触发分类器识别,并用于创建用于识别隧道出口的额外训练数据。
[0019] 在一些实施例中,上传后,对传感器数据进行审查和标注,以创建新的训练数据集,该数据集用于改进车辆的自动驾驶特征。例如,数据可被标注为隧道出口的正例,并可用于补充包含更多用例的原始训练数据集。使用新整理的数据集训练新的机器学习模型,以改进自动驾驶车辆神经网络,然后将其作为自动驾驶车辆系统的更新部署到车辆上。新部署的机器学习模型具有改进的检测触发分类器目标特定用例(例如隧道出口)的能力。例如,改进的模型在识别隧道出口方面将具有更高的准确性和性能。其他示例性用例包括为识别特定对象(例如购物车、动物等)、道路条件、天气、驾驶模式、危险等而训练的触发分类器。
[0020] 在各种实施例中,可在不更新车辆核心软件(例如用于自动驾驶的深度学习系统的组件)的情况下,开发触发分类器并将其部署到车队。可更频繁地将链接到车辆现有神经网络软件并与其相关联的新的和更新的触发分类器推送到车辆,且对车辆核心功能(例如驾驶、安全系统和导航等)几乎没有影响。例如,可训练触发分类器以识别鹅卵石路,将其部署到车队,并在几分钟内开始收集鹅卵石路的图像和相关数据。使用所公开的技术,为特定用例收集相关训练数据的速度大大提高,且对车辆的持续运行或驾驶员或乘客几乎没有影响。新的触发分类器可在无需漫长且繁琐的安装过程的情况下部署。该过程可远程且动态地执行,例如使用空中下载(OTA)更新,而无需将车辆送至服务地点。更新后,触发分类器可开始扫描捕获的图像,查找任何满足触发条件的图像,然后将满足这些条件的图像作为未来的训练数据对象上传。
[0021] 在一些实施例中,传感器数据由不同的设备发送和接收。例如,配备有自动驾驶技术(包括用于收集与其周围环境相关信息的传感器)的车辆从其传感器接收传感器数据。在一些实施例中,车辆配备有诸如摄像头、超声波传感器、雷达传感器、激光雷达(LiDAR)和 / 或其他合适的传感器,以捕获与自动驾驶相关的数据。在一些实施例中,将神经网络应用于传感器数据。例如,将卷积神经网络(CNN)应用于接收的传感器数据(例如车辆前方道路的图像)。CNN 可用于识别捕获的传感器数据中的对象,并且应用神经网络的结果用于控制车辆。例如,识别车道线,并用于将车辆保持在识别的车道线之间。
[0022] 将触发分类器应用于神经网络的中间输出,以确定传感器数据的分类器分数。将某一层的中间输出输入到触发分类器,该触发分类器确定传感器数据的分类器分数。在一些实施例中,神经网络包括多个中间层,并且可配置从中接收触发分类器输入的特定中间输出(以及对应的层)。例如,可将触发分类器配置为接收倒数第二层、倒数第三层、倒数第四层等的输出。在一些实施例中,中间输出是来自神经网络任何中间层的输出。在一些实施例中,中间输出可以是神经网络第一层的输出。至少部分基于分类器分数,确定是否通过计算机网络传输传感器数据的至少一部分。基于分类器分数是否超过保留传感器数据并传输数据以供进一步使用所需的阈值来做出确定。在一些实施例中,基于分类器分数和是否满足额外的触发分类器条件来做出确定。所需条件的示例可用于基于车辆的位置、车辆行驶的时间量、车辆的类型、自动驾驶特征是否最近被断开等过滤捕获的传感器数据。满足所需条件和分数阈值的传感器数据通过计算机网络(例如 WiFi 或蜂窝网络)传输到计算机服务器进行进一步处理。在一些实施例中,处理数据以创建新的或额外的训练数据集。在各种实施例中,训练数据包括训练数据集和验证数据集。
Example Block Diagrams(示例性框图)
[0023] 图 1A 是示出车辆沿道路行驶并从其周围环境收集训练数据的示意图。在示例性框图中,车辆 102 在道路上行驶。车辆 102 包括传感器(例如摄像头、雷达等),使得传感器捕获关于车辆 102 周围的传感器范围 104 的信息。图 1A 中示出了示例性传感器 107。例如,车辆 102 可获取其周围环境的图像。然后可分析这些获取的图像以试图理解周围环境。例如,可分析图像以对图像中表示的对象进行分类。在该示例中,可分析图像以识别其他车辆、道路标记、树木或其他植被、道路上的障碍物、行人、标志等。如下文更详细描述的,车辆 102 可利用机器学习技术来分析传感器信息。例如,可使用一个或多个卷积神经网络对示例性传感器范围 104 中包含的对象进行分类。下文结合图 1B 和图 7 包含了车辆 102 可使用的深度学习系统 700 的示例性描述。
[0024] 虽然上述机器学习技术可用于分析传感器信息,但应当理解,车辆 102 可能难以准确理解或分类某些现实世界对象或场景。例如,图 1A 中示出了位于车辆 102 行驶道路上的轮胎 106。能够识别该轮胎 106 可增强车辆 102 的安全性和性能。例如,如果轮胎 106 在车辆 102 的行驶路径中,车辆 102 可执行自动驾驶技术以绕过轮胎 106。此外,即使轮胎不在车辆 102 的行驶路径中,识别轮胎 102 仍可能影响车辆 102 的自动驾驶。例如,其他车辆可能突然转向车辆 102 的车道以避开轮胎 106。在该示例中,能够识别轮胎 106 因此可告知车辆 102 未来的预测运动(例如,当另一车辆接近轮胎 106 时提前减速)。
[0025] 因此,车辆 102 准确识别传感器范围 104 中包含的轮胎 106 可能是有益的。然而,如上文所述,能够识别轮胎 106 可能需要大量的训练数据。训练数据可包括各种道路上所有配置的大量轮胎的图像。通过包含不同道路上不同轮胎的图像,可增强训练数据。此外,通过包含不同驾驶环境中不同道路上不同轮胎的图像,可增强训练数据。例如,获取不同道路上部分被雪覆盖的轮胎的图像可能是有利的。又如,获取尘土飞扬的道路上瘪胎的图像可能是有利的。获取此类图像可能面临巨大的技术挑战。
[0026] 如下文所述,可训练一个或多个分类器以识别轮胎。例如,可使用有限的训练示例集来训练分类器。然后可通过空中下载(OTA)更新将这些分类器提供给车辆 102。例如,车辆 102 可通过无线方式(例如通过 WiFi、通过 LTE 网络等蜂窝信号等)接收 OTA 更新。然后分类器可分析车辆 102 获取的传感器信息。如果分类器检测到传感器信息(例如图像)中描绘了轮胎,则车辆 102 可将传感器信息传输到外部系统进行处理。该外部系统可聚合此类接收的传感器信息以创建轮胎的训练数据集。如下文所述,这些训练数据集随后可用于训练车辆 102 上执行的复杂机器学习模型(例如卷积神经网络)。通过这种方式,可增强机器学习模型,从而增强车辆 102 执行自动驾驶任务的能力。
[0027] 图 1B 是示出训练数据生成的框图。在该图示中,车辆 102 正在接收传感器数据 108。传感器数据 108 可包括一个或多个描绘图 1 中所示轮胎 106 的图像或视频。该传感器数据 108 可提供给车辆 102 中包含的一个或多个处理器的深度学习系统 700。图 1B 中示出了深度学习系统 700 的各方面的示例。
[0028] 如图所示,深度学习系统 700 可使用示例性机器学习技术(例如卷积神经网络)来分析接收的传感器数据 108。如图 2 所述,可对传感器数据 108 进行预处理(例如归一化、通过过滤器等)。应当理解,卷积神经网络可包括多个卷积层。这些卷积层可应用卷积过滤器,从而创建输出体积。在一些实施例中,可使用一个或多个全连接层作为最终层,以对传感器数据 108 中包含的特征或对象进行分类。例如,可使用一个或多个 softmax 层或独立的逻辑分类器来对特征或对象进行分类。通过这种方式,深度学习系统 700 可识别车辆 102 周围的传感器范围 104 中包含的现实世界对象、场景等。基于识别这些现实世界对象、场景等,车辆 102 可执行自动驾驶任务。因此,车辆 102 可在其典型运行中实现卷积神经网络。
[0029] 深度学习系统 700 包括一个或多个分类器。例如,图 1B 中示出了分类器 A-N 110A-110N。这些分类器 110A-110N 可能已通过车辆 102 的 OTA 更新接收(例如提供给车辆的定期更新)。在接收分类器 110A-110N 之前,实体可能已训练它们以识别传感器数据中表示的相应特征或对象。例如,分类器 A 110A 可能已被训练为识别雪景。又如,分类器 N 110N 可能已被训练为识别轮胎、道路上的自行车等。实体可能已使用有限的训练数据训练分类器 110A-110N。例如,分类器 N 110N 可能已使用 100 个、500 个、1000 个道路上的轮胎或特定类型道路上的特定类型轮胎的示例进行训练。
[0030] 如图所示,分类器 110A-110N 可使用从示例性机器学习模型(例如卷积神经网络)的中间层获取的信息。例如,特征 112 可从卷积神经网络的中间层获取。由于卷积神经网络可被训练为对传感器数据中的特征或对象进行分类或以其他方式识别,因此分类器可利用这种现有能力。例如,卷积神经网络可学习应用卷积过滤器以学习指示现实世界对象的特征。然后,卷积神经网络可将特征分类为对应于现实世界对象的特定类别或类。
[0031] 因此,在训练分类器 110A-110N 时,可使用从卷积神经网络的中间层获取的信息来训练它们。例如,可使用描绘轮胎的有限训练数据集来训练分类器 110N。在该示例中,可将图像提供给示例性卷积神经网络。在卷积神经网络的特定中间层,可将特征 112 提供给分类器 110N。然后可训练分类器 110N 为描绘轮胎的图像分配高分类器分数。可选地,可训练分类器 110N 为未描绘轮胎的图像分配低分类器分数。通过这种方式,分类器 110N 可利用卷积神经网络,如上文所述,该卷积神经网络可用于车辆 102 的典型运行。
[0032] 如图 1B 所示,分类器 110A-110N 正在从卷积神经网络的中间层接收特征 112。可选地,分类器 110A-110N 可使用来自不同中间层的特征。例如,分类器 N 110N 可使用来自第一层(例如第 4 层、第 5 层等)的特征,而分类器 A 110N 可使用来自第二层(例如第 6 层、第 7 层等)的特征。在训练期间,可为每个分类器识别从中接收特征的特定层。例如,可基于相应训练分类器相对于验证数据集的准确性来识别特定层。
[0033] 关于图 1A 中所示的轮胎 106,分类器 110A-110N 中的一个可能已被训练为识别轮胎。例如,分类器 N 110N 可能已被训练为识别轮胎。在该示例中,分类器 N 110N 可向传感器数据 108 分配分类器分数。在图示示例中,分类器 N 110N 分配了大于阈值(例如 0.5、0.7 等)的分类器分数。因此,车辆 102 可将传感器数据 108 传输到外部系统(例如训练数据生成系统 120)。例如,车辆可通过网络(例如互联网)经由 WiFi、蜂窝服务等传输传感器数据 108。
[0034] 因此,外部系统 120 可从大量车辆接收传感器数据 108。例如,外部系统 120 可从在其正常运行过程中可能碰巧经过轮胎附近的车辆接收描绘轮胎的图像。有利的是,这些轮胎可以是不同类型的、可能是瘪的或处于损坏状态的、可能在不同道路条件下的、可能是部分遮挡的等。例如,分类器 110A-110N 可使用导致大量传感器数据 108 传输到外部系统 120 的分类器分数。例如,传输到系统 120 的一部分图像可能不包含轮胎。在一些实施例中,实体因此可快速审查并丢弃某些图像。剩余的图像可聚合为大型训练数据集,并用于更新车辆上执行的机器学习模型。例如,可训练卷积神经网络以识别轮胎。可选地,可向聚合训练数据集中包含的图像分配边界框或其他标签信息。[0035] 在一些实施例中,车辆 102 可能具有比其当前正在执行的更多数量的分类器。例如,车辆 102 可能具有 50 个、75 个、100 个分类器。然而,在车辆 102 运行期间,车辆 102 可执行 20 个、30 个、40 个或更多分类器。例如,车辆 102 可仅对其存储的所有分类器的子集确定相应的分类器分数。可选地,每个分类器可执行特定时间段,然后被替换为另一个分类器。
[0036] 此外,车辆 102 可根据一个或多个触发条件执行特定分类器。例如,车辆 102 可接收标识已知具有某些现实世界对象、特征或呈现某些场景的位置或大致位置的信息。例如,车辆 102 可访问标识特定区域存在隧道出口的地图信息。在该示例中,车辆 102 可确保在其接近隧道时执行与识别隧道出口相关联的分类器。
[0037] 又如,外部系统 120 可可选地与接收的传感器数据一起接收位置信息。因此,外部系统 120 可识别阈值数量的车辆已基于针对特定现实世界区域的相同分类器传输了传感器数据。例如,外部系统 120 可识别特定入口匝道上存在道路障碍物。又如,外部系统 120 可识别特定入口匝道上存在某种类型的道路障碍物。然后,系统 120 可向一部分车辆传输信息,以在它们接近特定现实世界区域时执行相同的分类器。通过这种方式,系统 120 可确保能够基于该相同传感器获取更多数量的训练数据。
[0038] 此外,即使上述分类器未分配大于阈值的分类器分数,系统 120 仍可指示车辆传输传感器数据。例如,系统 120 可从接近现实世界位置的阈值数量的车辆接收传感器数据。在该示例中,系统 120 可指示位于该现实世界位置阈值距离内的任何车辆传输传感器数据(例如图像),即使它们的分类器未生成大于阈值的分类器分数。由于分类器可能是在具有有限数量示例(例如上文所述的 100 个、1000 个)的训练集上训练的,根据特定车辆相对于对象的角度,该特定车辆的分类器可能无法识别该对象。然而,该传感器数据可能对生成该对象的稳健训练集有用。例如,该对象在特定车辆获取的图像中可能是部分可见的,因此在大型训练集中可能有助于识别该对象。通过这种方式,外部系统 120 可覆盖分类器,并使特定车辆传输传感器数据。
[0039] 在外部系统 120 接收位置信息或任何标识信息的所有情况下,应当理解,该信息可被匿名化。此外,此类技术可能需要用户明确同意(例如选择加入)。
Example Flow Diagrams(示例性流程图)
[0040] 图 2 是示出将触发分类器应用于机器学习模型中间结果的方法一个实施例的流程图。在一些实施例中,图 2 的方法用于收集和保留由传感器捕获的、用于自动驾驶机器学习模型且满足特定用例的传感器数据。例如,特定用例可与识别某些特征、对象、场景等相关联。在一些实施例中,图 2 的方法在具备自动驾驶功能的车辆上实现,无论自动驾驶控制是否启用。例如,可在自动驾驶断开后的瞬间或车辆由人类驾驶员驾驶时收集传感器数据。在一些实施例中,图 2 描述的技术可应用于自动驾驶背景之外的其他深度学习系统,以改进训练数据集,特别是针对难以分析的用例。在各种实施例中,触发分类器已使用机器学习某一层的中间输出和为该用例设计的训练数据进行训练。
[0041] 在一些实施例中,可一起使用多个触发条件和 / 或多个分类器来识别多个用例的传感器数据。例如,一个触发条件可用于识别隧道,另一个用于识别检修孔,另一个用于识别道路分叉等。在一些实施例中,用于确定分类器分数和 / 或应用所需条件的触发分类器的功能组件在不同触发条件之间共享。在一些实施例中,每个触发条件通过加权向量、可选偏置和一个或多个用于与分类器分数比较的阈值指标来指定。在一些实施例中,为特定触发条件指定额外的所需条件,例如一天中的时间、车辆位置、道路类型等。例如,触发条件可要求仅在黎明和黄昏捕获隧道的传感器数据。又如,为了减少重复数据,触发条件可要求每 30 分钟最多捕获一次传感器数据,且仅在车辆行驶至少 20 分钟后。在各种实施例中,触发阈值和所需条件是为触发分类器指定的属性。
[0042] 在 201 处,接收传感器数据。例如,配备有传感器的车辆捕获传感器数据,并将该传感器数据提供给车辆上运行的神经网络。在一些实施例中,传感器数据可以是视觉数据、超声波数据、激光雷达数据或其他合适的传感器数据。例如,从高动态范围前视摄像头捕获图像。又如,从侧视超声波传感器捕获超声波数据。在一些实施例中,车辆安装有多个用于捕获数据的传感器。例如,在一些实施例中,车辆安装有八个环视摄像头,提供车辆周围 360 度视野,范围可达 250 米。在一些实施例中,摄像头传感器包括广角前视摄像头、窄角前视摄像头、后视摄像头、前视侧摄像头和 / 或后视侧摄像头。在一些实施例中,使用超声波和 / 或雷达传感器捕获周围细节。例如,车辆可安装十二个超声波传感器以检测坚硬和柔软对象。在一些实施例中,使用前视雷达捕获周围环境的数据。在各种实施例中,尽管有大雨、大雾、灰尘和其他车辆,雷达传感器仍能够捕获周围细节。各种传感器用于捕获车辆周围的环境,并且捕获的图像被提供用于深度学习分析。
[0043] 在 203 处,对传感器数据进行预处理。在一些实施例中,可对传感器数据执行一个或多个预处理过程。例如,可对数据进行预处理以去除噪声、校正对齐问题和 / 或模糊等。在一些实施例中,可对数据执行一个或多个不同的过滤过程。例如,可对数据执行高通滤波和低通滤波,以分离传感器数据的不同组件。在各种实施例中,203 处执行的预处理步骤是可选的和 / 或可并入神经网络中。
[0044] 在 205 处,启动传感器数据的深度学习分析。在一些实施例中,对可选地在 203 处预处理的传感器数据执行深度学习分析。在各种实施例中,使用诸如卷积神经网络(CNN)之类的神经网络执行深度学习分析。在各种实施例中,机器学习模型离线训练并安装到车辆上,用于对传感器数据执行推理。例如,模型可被训练为识别车道线、障碍物、行人、行驶中的车辆、停放的车辆、可行驶空间等(如适当)。在各种实施例中,神经网络包括多个层,包括一个或多个中间层。
[0045] 在 207 处,识别潜在训练数据。例如,从使用深度学习分析的传感器数据中识别可用于训练机器学习模型的传感器数据。在一些实施例中,识别的训练数据是与特定用例相关联的数据。例如,可能的用例可涉及识别:弯曲道路、入口匝道、出口匝道、隧道入口、隧道出口、道路上的障碍物、道路分叉、车道线或标记、可行驶空间、道路标志、标志内容(例如文字、数字、符号等)和 / 或自动驾驶适当的其他特征。在各种实施例中,通过使用用于深度学习分析的神经网络某一层的中间输出和触发分类器来识别传感器数据中描绘的用例。触发分类器使用神经网络中间层的输出来确定分类器分数。超过阈值并通过与触发条件一起指定的所需条件的分类器分数被识别为潜在训练数据。在各种实施例中,阈值用于识别用例的正例。例如,更高的分类分数指示传感器数据更可能代表该用例。在一些实施例中,分类器分数是介于 - 1 和 + 1 之间的数字。更接近 + 1 的分数更可能代表目标用例。在各种实施例中,通过额外过滤器(例如一天中的时间、车辆类型、位置等)指定的条件用于识别目标用例的传感器数据。
[0046] 在 209 处,传输识别的传感器数据。例如,将 207 处识别的传感器数据传输到计算机服务器进行额外处理。在一些实施例中,额外处理包括使用识别的传感器数据创建训练集。在各种实施例中,传感器数据通过无线方式(例如经由 WiFi 或蜂窝连接)从车辆传输到数据中心。在一些实施例中,与传感器数据一起传输元数据。例如,元数据可包括分类器分数、一天中的时间、时间戳、位置、车辆类型、车辆控制和 / 或运行参数(例如速度、加速度、制动、自动驾驶是否启用、转向角等)。额外的元数据包括自上次传输传感器数据以来的时间、车辆类型、天气条件、道路条件等。
[0047] 在 211 处,执行数据的后处理。在一些实施例中,利用不同的后处理技术来增强质量和 / 或减少表示数据所需的数据量。在一些实施例中,将深度学习分析的输出与应用于其他传感器的深度学习结果合并。在一些实施例中,后处理用于平滑对不同传感器数据执行的分析。处理后的数据可用于控制车辆。与数据相关的额外信息也可在 211 处处理。例如,诸如自动驾驶系统的配置(包括启用的自动驾驶特征)之类的信息可与深度学习分析相结合。其他信息可包括车辆运行和 / 或控制参数和 / 或环境数据(例如地图、地形和 / 或 GPS 数据)。在一些实施例中,后处理可包括合并对来自其他传感器的数据执行的深度学习分析的结果,以创建车辆周围环境的统一表示。在一些实施例中,211 处的后处理步骤是可选步骤。
[0048] 在 213 处,将深度学习分析的结果提供给车辆控制。例如,车辆控制模块使用这些结果来控制车辆进行自动驾驶。在一些实施例中,车辆控制可调节车辆的速度和 / 或转向。在各种实施例中,车辆控制可被禁用,但 205 处的深度学习分析的中间结果用于 207 处识别训练数据和 209 处传输识别的传感器数据。通过这种方式,即使车辆不受自动驾驶系统控制,也可利用深度学习分析来识别和保留合适的训练数据。在各种实施例中,当自动驾驶系统激活时,识别并保留传感器数据。
[0049] 图 3 是示出利用机器学习模型中间结果创建触发分类器的方法一个实施例的流程图。在一些实施例中,图 3 的方法用于训练触发分类器,以识别和保留特定用例的相关传感器数据。例如,深度学习系统在其常规使用过程中处理的传感器数据包括可用作训练数据的子集。可利用用于自动驾驶的深度学习系统的中间结果,训练触发分类器以识别诸如隧道入口、隧道出口、道路分叉、弯曲道路、入口匝道等用例以及自动驾驶有用的其他适当特征。通过将深度学习系统的中间结果与触发分类器结合使用,极大地提高了识别和收集的效率。在各种实施例中,将训练的触发分类器与触发属性一起安装在部署的深度学习系统上,以收集和保留相关用例的潜在训练数据。在一些实施例中,触发分类器是支持向量机,尽管也可使用其他合适的分类器。例如,在一些实施例中,触发分类器是神经网络,并且可包括一个或多个中间层。在一些实施例中,部署的深度学习系统利用图 2 的方法。
[0050] 在 301 处,准备训练数据。例如,准备特定用例的正例和反例作为训练数据。例如,收集并标注隧道出口的正例和反例。整理和标注的数据集用于创建训练集。在一些实施例中,标注包括标记数据,并且可由人类整理者执行。在一些实施例中,数据的格式与部署的深度学习应用上使用的机器学习模型兼容。在各种实施例中,训练数据包括用于测试训练模型准确性的验证数据。
[0051] 在 303 处,将深度学习分析应用于训练数据。例如,使用现有机器学习模型启动深度学习过程。在一些实施例中,深度学习模型是诸如具有多个层的卷积神经网络(CNN)之类的神经网络。在一些实施例中,CNN 可包括三个或更多中间层。深度学习分析的示例包括用于自动驾驶的神经网络。在各种实施例中,通过将 301 处准备的训练数据输入到神经网络以产生中间层结果,启动深度学习分析。
[0052] 在 305 处,训练触发分类器。在一些实施例中,触发分类器是支持向量机或小型神经网络。在各种实施例中,触发分类器的输入是深度学习系统机器学习模型的第一层或中间层的输出。用于输入的特定层可以是可配置的。例如,倒数第二层、倒数第三层、倒数第四层等的输出,直到第一层,可用作训练触发分类器的输入。在各种实施例中,训练数据的标注结果与原始数据(例如图像数据)一起用于训练触发分类器。通过使用正例和反例,训练触发分类器以识别输入(例如来自传感器数据的输入)与特定用例(例如隧道出口)匹配的可能性。在一些实施例中,使用 301 处创建的验证数据集来验证训练的触发分类器的结果。在一些实施例中,使用与车辆上部署的神经网络匹配的离线神经网络来训练触发分类器。
[0053] 在一些实施例中,神经网络输出的输出是识别输入数据(例如原始图像)特征的特征向量。特征可包括原始数据中的车辆数量、标志数量、车道数量等。层的中间输出(例如在最终层之前处理的层)包括原始输入数据的语义信息。在一些实施例中,层的中间输出可以向量形式表示,并且该向量比最终层的向量输出具有更多元素。例如,神经网络的最终输出可以是 32 元素向量,而倒数第二层的输出可以是 64 元素向量。在各种实施例中,神经网络的第一层和中间层的输出(例如 64 元素向量)比神经网络的最终层的输出(例如 32 元素向量)包含更多与原始输入数据相关联的语义信息,因此用于训练触发分类器。在一些实施例中,可动态选择用于训练触发分类器的特定层。例如,可基于特定中间层相对于另一层(例如更接近最终层的层)的准确性改进来选择该特定中间层(例如较早的层)。在一些实施例中,基于层的利用效率来选择特定层。例如,如果使用该层的结果满足准确性要求,则可选择具有较小输出向量的层。
[0054] 在一些实施例中,来自不同中间层的输入用于训练多个触发分类器,并将不同训练的分类器相互比较。使用准确性和性能之间的平衡来确定使用多个分类器中的哪一个。例如,较早中间层的输出对于一些用例是必要的,而较晚中间层的输出对于其他用例是足够的。可通过比较多个训练的触发分类器来确定最佳中间层的输出。在各种实施例中,作为触发分类器训练过程的一部分,动态选择从神经网络的哪一层接收中间结果。[0055] 在一些实施例中,训练的分类器可通过向量和偏置因子来指定。例如,训练的分类器可以是通过偏置因子偏移的权重向量,以确定分类器分数。在一些实施例中,向量的元素数量与所使用的中间层的输出的元素数量以及用于训练分类器的输入的元素数量相同。例如,如果用于训练分类器的中间层的输出是 1024 个元素,则用于训练触发分类器的输入数据是 1024 个元素,并且所得的触发分类器可表示为 1024 权重向量和偏置。在一些实施例中,偏置是可选的,并且可由权重向量的元素考虑在内。
[0056] 在 307 处,确定 305 处训练的分类器的触发属性。例如,确定与训练的触发分类器确定的分类器分数进行比较的阈值。例如,超过阈值的分类器分数指示与该分数相关联的原始输入可能是目标用例的正例。例如,训练用于识别隧道出口的触发分类器确定分类器分数。使用 0.5 的阈值,0.7 的分类器分数指示数据可能代表隧道出口。在一些实施例中,-1.0 的分数是反例,1.0 的分数是正例。分类器分数介于 - 1.0 和 1.0 之间,以指示原始输入是目标用例的正例或反例的可能性。[0057] 在一些实施例中,触发属性包括诸如触发过滤器之类的所需条件。触发过滤器是用于将传感器数据的保留限制到所描述条件的过滤器。例如,可基于与数据相关联的位置触发传感器数据的保留。其他示例包括自上次触发和正向识别以来的时间长度、自驾驶开始以来的时间长度、一天中的时间、位置、道路类型等。在各种实施例中,可指定一个或多个触发属性,以限制触发分类器用于收集和保留传感器数据的条件。
[0058] 在 309 处,部署触发分类器和触发属性。例如,将用于触发分类器保留传感器数据的触发分类器和属性与深度学习系统一起安装。例如,可将触发分类器和属性打包为小型二进制文件,无线传输到车辆。在一些实施例中,使用诸如 WiFi 或蜂窝网络连接之类的无线技术,将打包的触发分类器和属性作为空中下载更新传输。车辆接收后,将触发分类器和属性安装为自动驾驶系统的一部分。在一些实施例中,仅安装触发分类器。在一些实施例中,将触发分类器和用于自动驾驶的深度学习模型一起安装。在各种实施例中,自动驾驶系统的机器学习模型与用于训练触发分类器的模型匹配。
[0059] 图 4 是示出利用触发分类器识别潜在训练数据的方法一个实施例的流程图。在一些实施例中,触发分类器与深度学习系统一起运行。例如,使用与训练触发分类器所使用的模型匹配的机器学习模型的深度学习系统与触发分类器一起用作自动驾驶系统的一部分。触发分类器分析至少部分由深度学习系统分析的传感器数据,以识别传感器数据是否满足值得保留传感器数据的特定用例。然后将传感器数据传输到计算机服务器,并可用于创建用于改进的机器学习模型的训练数据,该模型在识别特定用例方面具有改进的性能。用例的示例包括识别入口匝道、隧道出口、道路上的障碍物、道路分叉、特定类型的车辆等。在一些实施例中,触发参数用于配置触发分类器识别相关结果的条件。在一些实施例中,使用一个或多个触发分类器和参数来识别一个或多个不同的用例。在一些实施例中,图 4 的方法在图 2 的 205、207、209、211 和 / 或 213 处执行。在一些实施例中,图 4 的方法中使用的触发分类器使用图 3 的方法训练。
[0060] 在 401 处,启动深度学习分析。例如,利用车辆上安装的传感器捕获的传感器数据,启动自动驾驶系统的深度学习分析。在一些实施例中,启动的深度学习分析包括对传感器数据的预处理。在各种实施例中,深度学习分析利用具有多个层(包括一个或多个中间层)的训练机器学习模型。在一些实施例中,第一层和任何中间层的输出被视为中间输出。在各种实施例中,中间输出是机器学习模型的某一层的输出,而不是最终输出(例如模型的最终层的输出)。
[0060] 在 401 处,启动深度学习分析。例如,利用车辆上安装的传感器捕获的传感器数据,启动自动驾驶系统的深度学习分析。在一些实施例中,启动的深度学习分析包括对传感器数据的预处理。在各种实施例中,深度学习分析利用具有多个层(包括一个或多个中间层)的训练机器学习模型。在一些实施例中,第一层和任何中间层的输出被视为中间输出。在各种实施例中,中间输出是机器学习模型的某一层的输出,而不是最终输出(例如模型的最终层的输出)。
[0061] 在 403 处,完成深度学习分析的一个层的推理。例如,神经网络包括多个层,包括中间层,随后是最终层。每个层的输出(例如中间结果)被作为输入馈送到下一层。在一些实施例中,第一层和每个中间层的输出被视为中间结果。在各种实施例中,确定单个层的输出的结果是可用作下一层输入的向量。在一些实施例中,神经网络第一层的输入是诸如图像数据之类的传感器数据。在一些实施例中,神经网络是卷积神经网络。
[0062] 在 405 处,确定 403 处执行的层分析的输出是否是神经网络的最终层的结果。如果输出不是最终层的结果(例如输出是中间结果),则处理继续到 409。如果输出是神经网络的最终层的结果,则使用机器学习模型执行的推理完成,并且处理继续到 407。在一些实施例中,405 处提供给 407 的输出是特征向量。
[0063] 在 407 处,将对传感器数据执行的深度学习分析的结果提供给车辆控制。在一些实施例中,对结果进行后处理。例如,可合并来自一个或多个不同传感器的输入的一个或多个不同神经网络的结果。在一些实施例中,使用车辆控制模块来实现车辆控制,以控制车辆的运行。例如,车辆控制能够修改车辆的速度、转向、加速度、制动等以进行自动驾驶。在一些实施例中,车辆控制可启用或禁用转向灯、刹车灯、前灯和 / 或操作车辆的其他控制 / 信号,包括网络控制(例如通过 WiFi 或蜂窝网络等无线网络发送网络消息)。在各种实施例中,车辆控制可能未启用以主动控制车辆,例如当自动驾驶特征被禁用时。例如,执行 401 和 403 处的深度学习分析,以提供作为触发分类器输入的结果,从而即使在自动驾驶系统未主动控制车辆时也能识别潜在训练数据。
[0064] 在 409 处,确定神经网络的层和触发条件是否适合应用触发分类器。例如,触发属性指示应用触发分类器所需的条件。条件的示例包括自上次捕获以来的时间长度是否超过最小时间量、驾驶的最小时间长度是否已过去、一天中的时间是否在特定范围内等。一天中不同时间的示例可包括黎明、黄昏、白天、夜间等。额外的条件要求可基于位置、天气、道路条件、道路类型、车辆类型、自动驾驶特征的断开、转向角(例如超过转向角阈值)、加速度变化、制动的激活或其他适当特征。不同天气条件的示例可包括雪、冰雹、冻雨、雨、大雨、阴天、晴天、多云、大雾等。触发属性可指定不同的条件。在一些实施例中,不同的用例可利用不同的触发属性和神经网络的不同层的中间结果。例如,一些用例使用神经网络的较后层的中间结果可能更高效并产生高质量结果。其他用例可能需要较早的中间结果,以识别满足该用例的有用传感器数据示例。在一些情况下,用于指定应用触发分类器条件的触发属性可使用多个条件检查和 / 或逻辑运算符(例如 AND 和 OR 运算符)嵌套。
[0065] 在 411 处,确定触发分类器分数。通过将触发分类器应用于神经网络的中间结果来确定触发分类器分数。在一些实施例中,触发分类器的应用利用加权向量和可选偏置来确定与传感器数据相关联的分类器分数。在一些实施例中,触发分类器是支持向量机或神经网络。在一些实施例中,通过在定制的人工智能(AI)处理器上运行分类器来提高触发分类器的性能。例如,AI 处理器可在很少的周期内对两个向量执行点积运算和 / 或在有限的浪费周期内执行多个点积运算。在一些实施例中,确定的分类器分数是浮点数,表示传感器数据是目标用例的正例(或反例)的可能性。例如,特定范围(例如介于 - 1 和 + 1 之间)可用于表示传感器数据是目标用例的反例或正例的可能性。
[0066] 在 413 处,确定分类器分数是否超过阈值以及是否满足所需的触发条件。将分类器分数与阈值进行比较。如果分类器分数超过阈值,则处理继续到 415。如果分类器分数未超过阈值,则处理继续到 403。在一些实施例中,在确定分类器分数后可应用额外的触发所需条件。例如,可将确定的分类器分数与特定时间窗口内先前确定的分类器分数进行比较。又如,可将确定的分类器分数与来自相同位置的先前确定的分数进行比较。又如,传感器数据可能需要同时满足时间条件和位置条件。例如,仅保留过去 10 分钟内来自相同位置的最高分数的传感器数据作为潜在数据。在各种实施例中,条件可包括用作过滤器的触发属性,以传输或不传输传感器数据。在一些实施例中,413 处的条件是可选的,仅将分类器分数与阈值进行比较。[0067] 在一些实施例中,正例和反例都有单独的阈值。例如,可利用 + 0.5 和 - 0.5 的阈值来识别正例和反例传感器数据作为潜在训练数据。介于 + 0.5 和 1.0 之间的分类器分数用于识别正例,介于 - 1.0 和 - 0.5 之间的分类器分数用于识别反例。在一些实施例中,仅保留正例用于传输。
[0068] 在 415 处,传输识别的传感器数据。例如,将识别的传感器数据传输到计算机服务器(例如训练数据生成系统 120),在那里可用于创建训练数据。在各种实施例中,训练数据包括训练数据集和验证数据集。在一些实施例中,传输的传感器数据包括元数据。元数据的示例可包括数据的时间、时间戳、道路条件、天气条件、位置、车辆类型、车辆是左舵还是右舵车辆、分类器分数、用例、神经网络的标识符、触发分类器的标识符、与自动驾驶系统相关联的固件版本或与传感器数据和 / 或车辆相关联的其他适当元数据。在一些实施例中,一天中的时间可指示时间段,例如黄昏、黎明、夜晚、白天、满月、日食等。例如,可传输神经网络和 / 或触发分类器的标识符,以识别用于训练触发分类器并用于确定分类器分数的特定训练机器学习模型。在一些实施例中,在传输之前先压缩传感器数据和 / 或元数据。在一些实施例中,批量发送传感器数据以更高效地传输传感器数据。例如,对多个传感器数据图像执行压缩,并一起传输一系列传感器数据。
[0069] 图 5 是示出从触发分类器识别的用例对应数据中创建训练数据的方法一个实施例的流程图。例如,处理接收的传感器数据以创建用于训练机器学习模型的训练数据。在一些实施例中,传感器数据对应于通过利用触发分类器的自动驾驶系统捕获的驾驶数据。在一些实施例中,通过使用图 3 的方法训练的触发分类器,使用图 4 的方法接收传感器数据。在一些实施例中,传感器数据对应于基于特定用例捕获的传感器数据,例如识别道路分叉、入口匝道、出口匝道、隧道入口等。在一些实施例中,接收的传感器数据仅对应于用例的正例。在一些实施例中,传感器数据包括正例和反例。在各种实施例中,传感器数据包括元数据,例如分类器分数、位置、一天中的时间或其他适当的元数据。
[0070] 在 501 处,接收满足触发条件的传感器数据。例如,接收对应于特定目标用例且可用作潜在训练数据的传感器数据。在各种实施例中,传感器数据是机器学习模型用作输入的格式。例如,传感器数据可以是原始或处理的图像数据。在一些实施例中,数据是从超声波传感器、雷达、激光雷达传感器或其他适当技术捕获的数据。在各种实施例中,如结合图 2-4 所述,使用触发分类器和触发属性来指定触发条件。
[0071] 在 503 处,将传感器数据转换为训练数据。例如,501 处接收的传感器数据包括被识别为潜在有用训练数据的数据。在一些实施例中,接收的传感器数据被压缩以提高从远程车辆传输数据的效率,并且首先被解压缩。在一些实施例中,审查数据以确定传感器数据是否准确代表目标用例。例如,审查用于识别隧道出口示例的目标用例,以确定原始传感器数据是否确实是隧道出口的数据。在一些实施例中,使用高精度机器学习模型来确认传感器数据是否代表目标用例。在一些实施例中,人类审查并确认传感器数据是否代表目标用例。在一些实施例中,对训练有用的数据进行标注。例如,可将数据标记为正例或反例。在一些实施例中,对目标对象的数据进行标注并可进行标记。例如,可根据目标用例对标线、标志、交通灯等进行标注。在各种实施例中,标注可用于训练和 / 或验证训练的机器学习模型。
[0072] 在 505 处,将 503 处转换的训练数据准备为训练和验证数据集。在各种实施例中,将 503 处转换的传感器数据准备为用于训练的数据集和用于验证机器学习模型的验证数据集。在一些实施例中,将 503 处的训练数据合并到现有训练数据集中。例如,将适用于大多数用例的现有训练数据集与新转换的训练数据合并,以改进特定用例的覆盖范围。新转换的训练数据有助于提高模型在识别特定用例方面的准确性。在一些实施例中,丢弃和 / 或替换现有训练数据的某些部分为新的训练数据。
[0073] 在 507 处,训练机器学习模型。例如,使用 505 处准备的数据训练机器学习模型。在一些实施例中,模型是诸如卷积神经网络(CNN)之类的神经网络。在各种实施例中,模型包括多个中间层。在一些实施例中,神经网络可包括多个层,包括多个卷积层和池化层。在一些实施例中,使用从接收的传感器数据创建的验证数据集来验证训练模型。
[0074] 在 509 处,部署训练的机器学习模型。例如,将训练的机器学习模型作为自动驾驶学习系统的更新安装到车辆上。例如,可使用空中下载更新来安装新模型。在一些实施例中,更新是使用诸如 WiFi 或蜂窝网络之类的无线网络传输的固件更新。在一些实施例中,新模型用于训练新的触发分类器。在各种实施例中,基于旧模型的现有触发分类器到期,并且基于新训练的模型部署新的触发分类器。在一些实施例中,在车辆维修时安装新的机器学习模型。
[0075] 图 6 是示出在车辆上执行分类器选择的方法一个实施例的流程图。该方法可可选地由车辆(例如一个或多个处理器的车辆)实现。例如,车辆可存储多个分类器。在该示例中,车辆可执行分类器的子集以节省处理资源。例如,车辆可仅对该子集确定分类器分数。如图 1B 所述,车辆可定期更新该子集(例如在阈值时间量后选择新的分类器)。在一些实施例中,车辆可从外部系统(例如系统 120)接收指示其执行一个或多个特定分类器的信息。
[0076] 在框 601 处,车辆执行分类器。如上所述,车辆可获取传感器数据并基于传感器数据确定分类器分数。
[0077] 在框 603 处,车辆接收选择新分类器的触发条件。车辆可至少通过全球导航卫星系统(GNSS)接收器监控其位置。在一些实施例中,车辆可访问地图信息。地图信息可识别获取训练数据可能有利的某些特征或用例。例如,地图信息可识别隧道出口。又如,地图信息可识别部分遮挡或隐藏的支路。又如,地图信息可识别特定样式或形式的自行车道(例如凸起或偏移的自行车道)的位置。车辆可确定其何时接近(例如在阈值距离内)特定特征或用例。然后,车辆可获取识别与特定特征或用例相关联的新分类器的信息。然后,车辆可执行该新分类器,以确定接收的传感器数据的分类器分数。
[0078] 此外,车辆可向外部系统传输位置信息。然后,外部系统可向车辆传输关于其要执行的一个或多个新分类器的信息。例如,外部系统可传输与每个分类器相关联的唯一标识符。如图 1B 所述,外部系统可从至少特定数量的车辆(例如 1 辆、3 辆、10 辆、20 辆)上执行的相同分类器接收信息。这些车辆可能彼此在阈值距离(例如半径)内,使得外部系统确定其位置附近存在特征或用例。因此,如果车辆在该位置的阈值距离内,外部系统可指示车辆执行相同的分类器。通过这种方式,外部系统可获取与该分类器相关联的传感器数据。
[0079] 在框 605 处,车辆执行新分类器。如本文所述,新分类器可从机器学习模型(例如卷积神经网络)的中间层获取信息。在框 607 处,车辆然后确定分类器分数。在框 609 处,车辆然后基于超过阈值的分类器分数传输传感器数据(例如图像)。如上所述,传感器数据可与元数据一起传输。
[0080] 图 7 是示出用于识别潜在训练数据的深度学习系统一个实施例的框图。例如,该框图包括与用于自动驾驶的触发分类器连接的深度学习系统的不同组件,其中为自动驾驶捕获的传感器数据的子集被识别为潜在训练数据。在一些实施例中,深度学习系统可被动分析传感器数据,并且深度学习系统某一层的中间输出用作触发分类器的输入。在一些实施例中,深度学习系统主动分析并控制车辆的运行,同时识别和保留用于创建额外训练数据的潜在有用传感器数据。在一些实施例中,自动驾驶系统用于车辆的自动驾驶或驾驶员辅助操作。在各种实施例中,图 2-6 的方法利用深度学习系统和 / 或诸如本文所述的系统的组件。
[0081] 在所示示例中,深度学习系统 700 是深度学习网络,包括传感器 701、图像预处理器 703、深度学习网络 705、人工智能(AI)处理器 707、车辆控制模块 709、网络接口 711 和触发分类器模块 713。在各种实施例中,不同的组件通信连接。例如,来自传感器 701 的传感器数据被馈送到图像预处理器 703。图像预处理器 703 的处理后的传感器数据被馈送到在 AI 处理器 707 上运行的深度学习网络 705。在 AI 处理器 707 上运行的深度学习网络 705 的输出被馈送到车辆控制模块 709。在 AI 处理器 707 上运行的深度学习网络 705 的中间结果被馈送到触发分类器模块 713。触发分类器模块 713 触发保留用于传输的传感器数据经由网络接口 711 发送。在一些实施例中,触发分类器模块 713 在 AI 处理器 707 上运行。在各种实施例中,基于车辆的自主运行和 / 或触发分类器模块 713 的结果,网络接口 711 用于与远程服务器通信、打电话、发送和 / 或接收文本消息、传输触发分类器模块 713 识别的传感器数据等。在一些实施例中,深度学习系统 700 可包括适当的额外或更少组件。例如,在一些实施例中,图像预处理器 703 是可选组件。又如,在一些实施例中,在将深度学习网络 705 的输出提供给车辆控制模块 709 之前,使用后处理组件(未示出)对其执行后处理。
[0082] 在一些实施例中,传感器 701 包括一个或多个传感器。在各种实施例中,传感器 701 可安装在车辆上、车辆的不同位置和 / 或朝向一个或多个不同方向。例如,传感器 701 可安装在车辆的前部、侧面、后部和 / 或车顶等,朝向正前方、正后方、侧面等方向。在一些实施例中,传感器 701 可以是诸如高动态范围摄像头之类的图像传感器。在一些实施例中,传感器 701 包括非视觉传感器。在一些实施例中,传感器 701 包括雷达、激光雷达和 / 或超声波传感器等。在一些实施例中,传感器 701 未与车辆控制模块 709 一起安装在车辆上。例如,传感器 701 可安装在相邻车辆上和 / 或固定在道路或环境中,并作为用于捕获传感器数据的深度学习系统的一部分。
[0083] 在一些实施例中,图像预处理器 703 用于预处理传感器 701 的传感器数据。例如,图像预处理器 703 可用于预处理传感器数据、将传感器数据分割成一个或多个组件和 / 或对一个或多个组件执行后处理。在一些实施例中,图像预处理器 703 是图形处理单元(GPU)、中央处理单元(CPU)、图像信号处理器或专用图像处理器。在各种实施例中,图像预处理器 703 是用于处理高动态范围数据的色调映射处理器。在一些实施例中,图像预处理器 703 实现为人工智能(AI)处理器 707 的一部分。例如,图像预处理器 703 可以是 AI 处理器 707 的组件。
[0084] 在一些实施例中,深度学习网络 705 是用于实现自动驾驶车辆控制的深度学习网络。例如,深度学习网络 705 可以是诸如卷积神经网络(CNN)之类的人工神经网络,其使用传感器数据训练,并且其输出提供给车辆控制模块 709。在一些实施例中,深度学习网络 705 的神经网络的副本用于创建触发分类器模块 713 的触发分类器。
[0085] 在一些实施例中,人工智能(AI)处理器 707 是用于运行深度学习网络 705 和 / 或触发分类器模块 713 的硬件处理器。在一些实施例中,AI 处理器 707 是用于对传感器数据执行使用卷积神经网络(CNN)的推理的专用 AI 处理器。在一些实施例中,AI 处理器 707 针对传感器数据的位深度进行优化。在一些实施例中,AI 处理器 707 针对深度学习操作(例如包括卷积、点积、向量和 / 或矩阵运算等的神经网络操作)进行优化。在一些实施例中,AI 处理器 707 使用图形处理单元(GPU)实现。在各种实施例中,AI 处理器 707 耦合到存储器,该存储器配置为向 AI 处理器提供指令,当执行这些指令时,使 AI 处理器对接收的输入传感器数据执行深度学习分析,并确定用于至少部分自主操作车辆的机器学习结果。在一些实施例中,AI 处理器 707 配置为将深度学习网络 705 的一个或多个层的中间结果输出到触发分类器模块 713,以确定分类器分数。
[0086] 在一些实施例中,车辆控制模块 709 用于处理人工智能(AI)处理器 707 的输出,并将该输出转换为车辆控制操作。在一些实施例中,车辆控制模块 709 用于控制车辆进行自动驾驶。在一些实施例中,车辆控制模块 709 可调整车辆的速度和 / 或转向。例如,车辆控制模块 709 可用于通过制动、转向、变道、加速和并入另一车道等来控制车辆。在一些实施例中,车辆控制模块 709 用于控制车辆照明,例如刹车灯、转向灯、前灯等。在一些实施例中,车辆控制模块 709 用于控制车辆音频条件,例如车辆的音响系统、播放音频警报、启用麦克风、启用喇叭等。在一些实施例中,车辆控制模块 709 用于控制通知系统,包括警告系统,以告知驾驶员和 / 或乘客驾驶事件,例如潜在碰撞或预期目的地的接近。在一些实施例中,车辆控制模块 709 用于调整车辆的传感器(例如传感器 701)。例如,车辆控制模块 709 可用于改变一个或多个传感器的参数,例如修改方向、改变输出分辨率和 / 或格式类型、增加或减少捕获率、调整捕获的动态范围、调整摄像头的焦距、启用和 / 或禁用传感器等。在一些实施例中,车辆控制模块 709 可用于改变图像预处理器 703 的参数,例如修改过滤器的频率范围、调整特征和 / 或边缘检测参数、调整通道和位深度等。在各种实施例中,车辆控制模块 709 用于实现车辆的自动驾驶和 / 或驾驶员辅助控制。
[0087]在一些实施例中,网络接口 711 是用于发送和 / 或接收包括语音数据在内的数据的通信接口。在各种实施例中,网络接口 711 包括蜂窝网络或无线网络接口,用于与远程服务器建立连接、拨打语音电话、发送和 / 或接收短信、传输传感器数据、接收自动驾驶系统的更新(包括触发分类器及相关属性等)。例如,网络接口 711 可用于接收传感器 701、图像预处理器 703、深度学习网络 705、人工智能处理器 707、车辆控制模块 709 和 / 或触发分类器模块 713 的指令和 / 或运行参数更新。举例来说,可通过网络接口 711 对深度学习网络 705 的机器学习模型进行更新;再如,可通过网络接口 711 更新传感器 701 的固件和 / 或图像预处理器 703 的运行参数(如图像处理参数)。
[0088]在一些实施例中,网络接口 711 用于传输触发分类器模块 713 识别的传感器数据。例如,与触发分类器识别的特定用例对应的、且满足相关触发属性条件的传感器数据,会通过网络接口 711 传输至计算机服务器(如远程计算机服务器)。在一些实施例中,可通过网络接口 711 更新触发分类器及相关属性,更新后的触发分类器和属性会安装到触发分类器模块 713 中,用于识别和保留与特定用例对应的传感器数据。
[0089]在一些实施例中,若发生事故或近乎事故的情况,网络接口 711 可用于与应急服务建立紧急联系。例如,发生碰撞时,网络接口 711 可用于联系应急服务寻求帮助,并向应急服务提供车辆位置和碰撞详情。在各种实施例中,网络接口 711 还可用于实现自动驾驶功能,例如访问日历信息以获取和 / 或更新目的地位置和 / 或预计到达时间。
[0090]在一些实施例中,触发分类器模块 713 用于识别和保留与特定用例对应的传感器数据。例如,触发分类器模块 713 会对传感器 701 中一个或多个传感器捕获的数据进行评分,生成分类器分数。将该分类器分数与阈值进行比较,若满足条件,相关传感器数据会被保留,并通过网络接口 711 传输至远程计算机服务器。在一些实施例中,触发分类器模块 713 会利用触发属性,判断是否满足计算分类器分数和 / 或保留符合分数阈值的传感器数据的相关条件。在一些实施例中,触发分类器模块为支持向量机,其输入为深度学习网络 705 的中间输出,该输出可表征传感器 701 的传感器数据。在一些实施例中,触发分类器模块 713 可配置为接收深度学习网络 705 一个或多个层的中间结果,具体接收哪一层的输出取决于触发分类器和 / 或触发属性(例如,部分用例可能需要早期中间结果,而其他用例可能需要后期中间结果)。在一些实施例中,可利用人工智能处理器 707 执行触发分类器模块 713 的处理操作。在各种实施例中,触发分类器模块 713 识别的传感器数据可用于创建新的训练数据集,以识别特定用例。
[0091]所描述实施例的各个方面、实施方式或特征可单独使用,也可任意组合使用。所描述实施例的各个方面可通过软件、硬件或软硬件结合的方式实现。这些实施例还可体现为存储在计算机可读介质上的计算机可读代码,用于控制制造操作,或体现为存储在计算机可读介质上的计算机可读代码,用于控制生产线。计算机可读介质指任何能够存储数据且后续可被计算机系统读取的数据源,包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、光盘(CD-ROM)、硬盘驱动器(HDD)、数字通用光盘(DVD)、磁带和光学数据存储设备。计算机可读介质也可分布在网络连接的计算机系统上,使得计算机可读代码以分布式方式存储和执行。
[0092]还应当理解,本文描述和 / 或附图所示的每个流程、方法和算法,均可通过代码模块实现完全自动化或部分自动化,这些代码模块由一个或多个物理计算系统、硬件计算机处理器、专用电路和 / 或配置为执行特定计算机指令的电子硬件执行。例如,计算系统可包括编程有特定计算机指令的通用计算机(如服务器),或专用计算机、专用电路等。代码模块可被编译并链接为可执行程序,安装在动态链接库中,或采用解释型编程语言编写。在一些实施例中,特定操作和方法可由特定功能对应的电路执行。
[0093]此外,本公开某些实施例的功能在数学、计算或技术层面具有足够复杂性,可能需要专用硬件或一个或多个物理计算设备(利用适当的专用可执行指令)来实现该功能 —— 例如,由于涉及的计算量或复杂度较大,或需要在商业上合理的时间内提供近实时结果。举例来说,一段视频可能包含多个帧,每个帧包含数百万像素,此时需要专门编程的计算机硬件来处理这些视频数据,以在商业上合理的时间内完成所需的图像处理任务或应用。
[0094]代码模块或任何类型的数据可存储在任何类型的非暂时性计算机可读介质上,包括物理计算机存储设备(如硬盘驱动器、固态硬盘、随机存取存储器、只读存储器、光盘、易失性或非易失性存储设备,以及上述设备的组合等)。在一些实施例中,非暂时性计算机可读介质可属于本地处理和数据模块、远程处理模块和远程数据存储库中的一个或多个。这些方法和模块(或数据)也可作为生成的数据流(例如,作为载波的一部分或其他模拟或数字传播信号),通过多种计算机可读传输介质(包括无线介质和有线 / 电缆介质)传输,并可采用多种形式(例如,作为单个或多路复用模拟信号的一部分,或作为多个离散数字数据包或帧)。所公开流程或流程步骤的结果可持久或非持久地存储在任何类型的非暂时性有形计算机存储设备中,或通过计算机可读传输介质进行传输。
[0095]本文描述和 / 或附图所示的流程图中的任何流程、块、状态、步骤或功能,均应理解为可能代表包含一个或多个用于实现特定功能(如逻辑运算或算术运算)或流程步骤的可执行指令的代码模块、代码段或代码部分。这些流程、块、状态、步骤或功能可根据本文提供的示例性示例进行组合、重新排列、添加、删除、修改或进行其他变更。在一些实施例中,部分或全部功能可由额外的或不同的计算系统或代码模块执行。
Claims(权利要求)
一种通过车辆中包含的处理器系统实现的方法,所述方法包括:接收(201)来自所述车辆中多个传感器的传感器数据,所述传感器数据包括图像;将神经网络应用(203)于所述传感器数据;将多个触发分类器中的一个触发分类器应用于所述神经网络的中间结果,以确定所述传感器数据的分类器分数,所述分类器分数指示所述传感器数据描绘与所述触发分类器对应的用例的一个或多个感兴趣特征的可能性,所述一个或多个感兴趣特征包括一个或多个对象;其中,所述触发分类器通过远离所述车辆的远程系统(120)训练,训练基于向所述神经网络输入包含初始图像的训练数据集,所述初始图像描绘所述一个或多个感兴趣特征;所述触发分类器配置为识别描绘所述一个或多个感兴趣特征的图像;且所述车辆配置为将所述多个触发分类器应用于所述中间结果;响应于确定所述分类器分数超过阈值,通过计算机网络将所述传感器数据的至少一部分传输至所述远程系统(120);从所述远程系统(120)接收更新后的神经网络,所述更新后的神经网络由所述远程系统至少基于传输的所述传感器数据部分训练而成;利用所述更新后的神经网络控制所述车辆。
根据权利要求 1 所述的方法,其特征在于,所述中间结果是所述神经网络的中间层的输出(尤其是所述神经网络倒数第二层的输出),或所述触发分类器指定接收所述中间结果的所述神经网络的特定层。
根据权利要求 1 所述的方法,其特征在于,所述神经网络是卷积神经网络。
根据权利要求 1 所述的方法,其特征在于,所述触发分类器利用输入向量训练,所述输入向量是所述神经网络某一层的输出(尤其是所述神经网络的动态选择层的输出)。
根据权利要求 4 所述的方法,其特征在于,还包括:通过无线方式从所述远程系统(120)接收所述触发分类器。
根据权利要求 1 所述的方法,其特征在于,所述触发分类器基于识别出的所述神经网络的改进需求生成。
根据权利要求 1 所述的方法,其特征在于,所述感兴趣特征包括以下中的一个或多个:隧道入口、隧道出口、道路分叉、道路障碍物、车道线或可行驶空间。
根据权利要求 1 所述的方法,其特征在于,确定应用所述触发分类器基于一个或多个所需条件的满足情况。
根据权利要求 8 所述的方法,其特征在于,所述一个或多个所需条件指示以下中的一个或多个:驾驶时长、自动驾驶功能是否最近被断开、车辆类型、转向角阈值或为所述触发分类器指定的特定道路类型。
根据权利要求 8 所述的方法,其特征在于,若所述车辆的位置与从所述远程系统(120)接收的位置之间的距离在阈值范围内,所述处理器系统应用所述触发分类器。
根据权利要求 1 所述的方法,其特征在于,还包括:传输所述传感器数据的至少一部分以及识别以下一个或多个的元数据:分类器分数、位置、时间戳、道路类型、自上次传输传感器数据以来的时长或车辆类型;或传输所述传感器数据的至少一部分以及识别以下一个或多个的车辆运行条件:车辆速度、车辆加速度、车辆制动状态或车辆转向角。
根据权利要求 1 所述的方法,其特征在于,还包括:通过所述计算机网络接收由权重向量表示的所述触发分类器;其中,所述触发分类器可由所述权重向量和偏置表示。
一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,当所述计算机指令由处理器系统执行时,使所述处理器系统执行根据前述权利要求中任一项所述的方法。
一种系统(700),其特征在于,包括:车辆上的多个传感器(701);人工智能处理器(707);车辆控制模块(709);图像信号处理器(703),配置为:接收利用所述传感器捕获的图像;处理所述捕获的图像;将处理后的图像提供给神经网络;与所述人工智能处理器耦合的存储器,所述存储器配置为向所述人工智能处理器(707)提供指令,当所述指令由所述人工智能处理器(707)执行时,使所述人工智能处理器(707):接收所述处理后的图像;利用所述神经网络对所述处理后的图像执行推理;将所述神经网络的中间结果提供给多个触发分类器中的一个触发分类器,所述触发分类器用于确定与所述捕获的图像对应的分类器分数,所述分类器分数指示所述捕获的图像描绘与所述触发分类器对应的用例的一个或多个感兴趣特征的可能性,所述一个或多个感兴趣特征包括一个或多个对象;其中,所述触发分类器通过远离所述车辆的远程系统(120)训练,训练基于向所述神经网络输入包含初始图像的训练数据集,所述初始图像描绘所述一个或多个感兴趣特征;所述触发分类器配置为识别描绘所述一个或多个感兴趣特征的图像;且所述车辆配置为将所述多个触发分类器应用于所述中间结果;响应于确定所述分类器分数超过阈值,通过计算机网络将所述捕获的图像的至少一部分传输至所述远程系统(120);从所述远程系统(120)接收更新后的神经网络,所述更新后的神经网络由所述远程系统至少基于传输的所述传感器数据部分训练而成;利用所述更新后的神经网络控制所述车辆。
193
