CN114841336A - 修补用于自主机器应用的部署的深度神经网络 - Google Patents
修补用于自主机器应用的部署的深度神经网络 Download PDFInfo
- Publication number
- CN114841336A CN114841336A CN202210102357.5A CN202210102357A CN114841336A CN 114841336 A CN114841336 A CN 114841336A CN 202210102357 A CN202210102357 A CN 202210102357A CN 114841336 A CN114841336 A CN 114841336A
- Authority
- CN
- China
- Prior art keywords
- dnn
- pnn
- output
- data
- nodes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 71
- 238000000034 method Methods 0.000 claims description 68
- 238000012545 processing Methods 0.000 claims description 63
- 238000012549 training Methods 0.000 claims description 63
- 238000013135 deep learning Methods 0.000 claims description 13
- 238000004088 simulation Methods 0.000 claims description 7
- 230000008447 perception Effects 0.000 claims description 5
- 239000011159 matrix material Substances 0.000 claims description 4
- 238000013138 pruning Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 abstract description 59
- 230000007246 mechanism Effects 0.000 abstract description 35
- 230000004927 fusion Effects 0.000 abstract description 32
- 239000010410 layer Substances 0.000 description 95
- 230000015654 memory Effects 0.000 description 53
- 238000001514 detection method Methods 0.000 description 34
- 230000008569 process Effects 0.000 description 27
- 238000004891 communication Methods 0.000 description 23
- 238000003860 storage Methods 0.000 description 23
- 238000013527 convolutional neural network Methods 0.000 description 21
- 239000013598 vector Substances 0.000 description 21
- 238000010801 machine learning Methods 0.000 description 17
- 238000004422 calculation algorithm Methods 0.000 description 15
- 238000007726 management method Methods 0.000 description 15
- 238000012360 testing method Methods 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 11
- 230000001133 acceleration Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000000007 visual effect Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 238000013500 data storage Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 238000010200 validation analysis Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000013439 planning Methods 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 230000004913 activation Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 239000002356 single layer Substances 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 3
- 230000001815 facial effect Effects 0.000 description 3
- 239000000446 fuel Substances 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 125000000914 phenoxymethylpenicillanyl group Chemical group CC1(S[C@H]2N([C@H]1C(=O)*)C([C@H]2NC(COC2=CC=CC=C2)=O)=O)C 0.000 description 3
- 229920002451 polyvinyl alcohol Polymers 0.000 description 3
- 235000019422 polyvinyl alcohol Nutrition 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 230000009849 deactivation Effects 0.000 description 2
- 238000002059 diagnostic imaging Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 101100248200 Arabidopsis thaliana RGGB gene Proteins 0.000 description 1
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- 206010034960 Photophobia Diseases 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000007621 cluster analysis Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000002485 combustion reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 208000013469 light sensitivity Diseases 0.000 description 1
- 238000012417 linear regression Methods 0.000 description 1
- 239000007788 liquid Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- PVFZKRMYBKEXBN-UHFFFAOYSA-N piperidine;piperidine-1-carbodithioic acid Chemical compound C1CCNCC1.SC(=S)N1CCCCC1 PVFZKRMYBKEXBN-UHFFFAOYSA-N 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000000513 principal component analysis Methods 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000005067 remediation Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 238000012419 revalidation Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/0088—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B13/00—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
- G05B13/02—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
- G05B13/0265—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric the criterion being a learning criterion
- G05B13/027—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric the criterion being a learning criterion using neural networks only
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- B60W60/00—Drive control systems specially adapted for autonomous road vehicles
- B60W60/001—Planning or execution of driving tasks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- B60W50/00—Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
- B60W2050/0001—Details of the control system
- B60W2050/0002—Automatic control, details of type of controller or control system architecture
- B60W2050/0018—Method for the design of a control system
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- B60W50/00—Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
- B60W2050/0062—Adapting control system settings
- B60W2050/0075—Automatic parameter input, automatic initialising or calibrating means
- B60W2050/0083—Setting, resetting, calibration
- B60W2050/0088—Adaptive recalibration
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- B60W2420/00—Indexing codes relating to the type of sensors based on the principle of their operation
- B60W2420/40—Photo, light or radio wave sensitive means, e.g. infrared sensors
- B60W2420/403—Image sensing, e.g. optical camera
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Automation & Control Theory (AREA)
- Medical Informatics (AREA)
- Business, Economics & Management (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Game Theory and Decision Science (AREA)
- Aviation & Aerospace Engineering (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Mechanical Engineering (AREA)
- Transportation (AREA)
- Human Computer Interaction (AREA)
- Traffic Control Systems (AREA)
- Image Analysis (AREA)
- Control Of Driving Devices And Active Controlling Of Vehicle (AREA)
Abstract
涉及修补用于自主机器应用的部署的深度神经网络。在各个示例中,深度神经网络(DNN)故障模式的快速解决可通过部署被训练成在DNN的故障模式上有效地操作的补丁神经网络(PNN)来实现。PNN可以对与DNN相同或附加的数据进行操作,并且除了使用DNN生成的那些信号之外,还可以生成解决DNN的故障模式的新信号。可采用融合机制来确定对于DNN/PNN组合的给定实例要依赖于哪个输出。因此,DNN的故障模式可以以要求DNN、使用DNN控制的特征和/或作为整体的半自主或自主功能的最小停用或停机时间的及时方式来解决。
Description
背景技术
自主车辆和半自主车辆利用深度神经网络(DNN)来帮助在运行过程中执行各种任务——如但不限于对象检测、分类和/或跟踪、路径规划、控制决策、障碍物躲避和/或其他驾驶相关任务。由于自主驾驶操作和半自主驾驶操作的安全关键性质,这些DNN必须是准确和精确的,但还必须在部署在运行的车辆中之前经历广泛验证和测试。例如,在一些实例中——尤其是在必须满足规章和/或原始设备制造商(OEM)要求的情况下,训练、测试和验证DNN可能花六个月到一年或更多。例如,OEM可要求重新训练的DNN不会导致在DNN的测试期间在例如数千英里内观察到的系统的行为变化。由于车辆的自主功能性中涉及的安全考虑,这一漫长的时间表与消费者的预期周转时间形成直接对比。例如,消费者可能期望在几小时或几天内解决故障模式,以便使用其中的半自主或自主特征来舒适地运行车辆。
常规方法通过使用包括与DNN的故障模式相对应的训练数据实例的附加训练数据来重新训练DNN来解决这个问题。在此重新训练和验证周期期间(例如,六个月到一年或更长时间),DNN可能会在故障模式仍然存在的情况下继续运行,或者可能导致DNN、使用DNN控制的特征和/或作为整体的半自主或自主功能的停用。然而,即使在这些重新训练的DNN投入使用的情况下,重新训练的DNN也可能遭受在训练、测试或验证期间未被发现的新的或另外的故障模式。例如,在重新训练以解决所发现的故障模式期间,例如由于不可预见的对象类型或道路轮廓或姿态类型、某些天气条件的影响等,可能出现在测试、训练和验证期间未实现的新的故障模式。每个新的故障模式然后要求DNN被重新训练,从而产生级联效应,该级联效应可能导致车辆的一个或更多个特征在延长的时间段内不可用——由此产生负面的用户体验和可能导致消费者对产品缺乏信任。因此,这些重新验证方法时间长且成本昂贵,并且对于修补在运行环境中部署的DNN的故障模式通常是不可行的。
发明内容
本公开的实施例涉及用于深度神经网络(DNN)的补丁的训练和部署。公开了允许快速解决在DNN的部署运行期间发现的DNN故障模式的系统和方法。例如,除了每次实现故障模式时重新训练、重新测试和重新验证DNN之外或作为其替代,被训练成在DNN的故障模式上有效运行的一个或更多个补丁神经网络(PNN)可被部署来至少临时地解决故障模式,而无需DNN、使用DNN控制的特征和/或作为整体的半自主或自主功能被停用。因此,当与常规系统相比较时,DNN或系统的其他部分的停机时间可显著减少。此外,在(一个或更多个)PNN的部署期间,DNN的更新版本可在部署在车辆中之前被训练、测试和验证,此时可能不再需要用于解决DNN的故障模式的(一个或更多个)特定PNN。
PNN可以对与DNN相同或另外的数据进行操作,并且除了使用DNN生成的信号之外,还可以生成新的信号。例如,在各实施例中,PNN可被训练成除了计算与DNN类似或相同的输出类型之外,还生成解决DNN的故障模式的输出。可采用融合机制来评估DNN和PNN的输出和/或评估额外的准则以确定对于DNN/PNN组合的给定实例要依赖哪个输出。在训练期间,除了被选择来解决DNN的故障模式的新训练数据以外,还可使用用于训练DNN的原始训练数据的组合来训练PNN的参数(例如,权重和偏差)。DNN的参数可在DNN的训练期间被固定或冻结,以使得DNN的原始性能被维持,同时使得PNN能够除了PNN的新的或经更新的输出之外还重新创建DNN的输出。由于处理输入数据所需的PNN的额外节点和/或层,PNN的引入可能需要额外的计算。因此,PNN可以在训练期间经历修剪以移除整个层和/或层的节点,从而减小PNN对系统的计算和延迟影响。
在一些实施例中,一旦被训练,PNN和/或融合机制就可以通过空中(OTA)被推送至消费者车辆并且以被动或非主动模式执行,其中代码被执行但不被致动或动作。可以评估在这种(例如,被动)模式期间记录的数据以验证PNN和/或融合机制的性能,或指示在哪里需要额外的训练。如此,可以通过利用已经执行所部署的DNN的消费者车队来加快对系统内的PNN功能的训练和验证——由此除了针对PNN的严格测试和验证标准之外,还增加了满足消费者的快速周转时间期望的可能性。
附图说明
下面参考附图详细描述用于训练和部署用于深度神经网络(DNN)的补丁的本系统和方法,其中:
图1A是示出了依照本公开的一些实施例的用于执行部署中的补丁神经网络(PNN)的示例过程的数据流程图;
图1B描绘了依照本公开的一些实施例的用于处理图1A的过程内的输入数据的示例深度神经网络(DNN)和PNN架构;
图1C描绘了依照本公开的一些实施例的用于DNN、PNN或其组合的示例层实现;
图2A-2B描绘了依照本公开的一些实施例的用于组合的PNN和DNN的示例架构;
图3A-3B描绘了依照本公开的一些实施例的具有PNN的选择性激活的DNN和PNN架构的示例;
图4是示出了依照本公开的一些实施例的用于执行部署中的PNN的方法的流程图;
图5A为依照本公开一些实施例的示例自主车辆的图示;
图5B为依照本公开一些实施例的用于图5A的示例自主车辆的相机位置和视场的示例;
图5C为依照本公开一些实施例的用于图5A的示例自主车辆的示例系统架构的框图;
图5D为依照本公开一些实施例的基于云的服务器与图5A的示例自主车辆之间的通信的系统示意图;
图6为适合用于实现本公开一些实施例的示例计算设备的框图;以及
图7为适合用于实现本公开一些实施例的示例数据中心的框图。
具体实施方式
公开了涉及用于深度神经网络(DNN)的补丁的训练和部署的系统和方法。虽然可相对于示例性自主车辆500(或者,在本文中称为“车辆500”或“本车500”,相对于图5A-图5D描述了其示例)来描述本公开,但是这并非旨在限制。例如,本文中描述的系统和方法可由但不限于非自主车辆、半自主车辆(例如,在一个或更多个自适应驾驶员辅助系统(ADAS)中)、有人驾驶和无人驾驶的机器人或机器人平台、仓库车辆、越野车辆、耦接到一个或更多个拖车的车辆、飞行船、船、穿梭机、紧急响应车辆、摩托车、电动或机动自行车、飞机、施工车辆、水下飞行器、无人机和/或其他车辆类型使用。此外,尽管可以关于半自主或自主机器功能来描述本公开,但是这不旨在是限制性的,并且本文所描述的系统和方法可以用于增强现实、虚拟现实、混合现实、机器人、安全和监视、自主或半自主机器应用、医学成像应用、语言处理应用、智能家庭应用、深度学习应用和/或可以使用神经网络或其他类型的机器学习模型的任何其他技术空间。
参照图1A,图1A是示出了依照本公开的一些实施例的用于执行部署中的补丁神经网络(PNN)104B的示例过程的数据流程图。应当理解,本文所述的这种和其他布置仅作为示例进行阐述。除了或代替所示的布置和元件,可使用其他布置和元件(例如,机器、接口、功能、次序、功能分组等),并且可完全省略一些元件。进一步,本文描述的许多元件是可以被实现为分立或分布式组件或与其他组件结合、和以任何合适的组合和位置的功能实体。本文描述为由实体执行的各个功能可由硬件、固件和/或软件执行。例如,各个功能可以通过处理器执行存储在存储器中的指令来实现。在一些实施例中,深度神经网络(DNN)104(例如,包括PNN 104B和/或基础DNN 104A)的训练和/或部署可至少部分地使用如本文中关于图5A-5D的车辆500、图6的示例计算设备600和/或图7的示例数据中心700所描述的类似组件、特征和/或功能来执行。DNN 104在本文中可被称为组合的DNN 104——例如,包括基础DNN 104A和PNN 104B的组合。
过程100可以包括从一个或更多个源(例如,车辆500的传感器、机器人、VR、AR、或混合现实系统、医学成像设备、用于语音处理的设备的麦克风、和/或另一种源类型)生成和/或接收输入数据102。在一些实施例中,作为非限制性示例,输入数据102(可替代地被称为“传感器数据102”)可以从车辆(例如,如在此描述的图5A-5D的车辆500)的一个或更多个传感器接收。传感器数据102可被车辆500使用,并且在过程100内,在一个或更多个基础DNN104A和/或一个或更多个PNN 104B的训练和/或部署期间用于执行任何数量的操作——例如,对象检测、分类和/或跟踪、路径规划、控制操作、交叉口结构检测、道路布局确定、映射和定位等。在训练期间,传感器数据102可使用生成用于训练DNN(诸如DNN 104)的传感器数据的一个或更多个数据收集车辆来生成,和/或可被预生成并被包括在训练数据集中。在训练期间使用的传感器数据102可以另外地或可替代地使用模拟的传感器数据(例如,使用虚拟环境中的虚拟车辆的一个或更多个虚拟传感器生成的传感器数据)和/或增强的传感器数据(例如,分别使用一个或更多个数据收集车辆生成和用虚拟数据修改的传感器数据)来生成。一旦被训练并部署在车辆500中,传感器数据102就可由车辆500的一个或更多个传感器生成并由DNN 104处理以计算各个输出106,如本文中所描述的。
在一些实施例中,诸如在PNN 104B的训练期间,训练传感器数据可包括与用于训练基础DNN 104A的训练数据相比额外的和/或替代的训练数据,以解释PNN 104B被训练来解决的基础DNN 104A的一个或更多个故障模式的原因。例如,终端用户的产品或系统中的基础DNN 104A的故障模式可被识别,并且导致该故障模式的输入数据102可被收集并被用于训练PNN 104B。在一些实施例中,基础DNN 104A和/或PNN 104B的阴影模式可用于识别基础DNN 104A经历故障和/或PNN 104B的输出106被确定为更可靠或准确的输入数据实例。与(一个或更多个)基础DNN 104A的故障模式相对应的这些识别的输入数据实例还可用于指导从一个或更多个数据收集车辆、从消费者车队和/或在模拟环境内收集额外训练输入数据(例如,如果(一个或更多个)基础DNN 104A具有关于电动踏板车的故障模式,则可运行包括电动踏板车的模拟以便生成用于训练(一个或更多个)PNN 104B的合成训练数据实例)。
因此,传感器数据102可以包括但不限于:来自车辆500的任何传感器的传感器数据102,所述传感器包括例如并参见图5A-5C的(一个或更多个)RADAR(雷达)传感器560、(一个或更多个)超声波传感器562、(一个或更多个)LIDAR(激光雷达)传感器564、(一个或更多个)立体相机568、(一个或更多个)宽视角相机570(例如,鱼眼相机)、(一个或更多个)红外相机572、(一个或更多个)环绕相机574(例如,360度相机)、(一个或更多个)远程和/或中程相机578、麦克风596、IMU传感器566、GNSS传感器558、速度传感器544和/或其他传感器类型。作为另一示例,传感器数据102可以包括从虚拟(例如,测试)环境中的虚拟车辆或其他虚拟对象的任何数量的传感器生成的虚拟(例如,模拟或增强的)传感器数据。在这样的示例中,虚拟传感器可以对应于模拟环境中的虚拟车辆或其他虚拟对象(例如,用于测试、训练和/或验证DNN性能),并且虚拟传感器数据可以表示由模拟或虚拟环境内的虚拟传感器所捕获的传感器数据。因此,通过使用虚拟传感器数据,本文描述的(一个或更多个)DNN104可使用模拟环境中的模拟或增强数据来测试、训练和/或验证,这可允许测试真实世界环境之外的更极端的场景,其中这样的测试可能不太安全。
在一些实施例中,传感器数据102可以包括表示(一个或更多个)图像的图像数据、表示视频的图像数据(例如,视频的快照)、和/或表示传感器的传感场的表示的传感器数据(例如,LIDAR传感器的深度图、超声波传感器的值图等)。在传感器数据102包括图像数据的情况下,可以使用任何类型的图像数据格式,诸如例如但不限于诸如联合图像专家组(JPEG)或亮度/色度(YUV)格式的压缩图像、作为源自诸如H.264/高级视频编码(AVC)或H.265/高效率视频编码(HEVC)的压缩视频格式的帧的压缩图像、诸如源自红色清晰蓝(RCCB)、红色清晰(RCCC)或其他类型的成像传感器的原始图像和/或其他格式。此外,在一些示例中,传感器数据102可在过程100内使用而无需任何预处理(例如,以原始或捕获的格式),而在其他示例中,传感器数据102可经历预处理(例如,噪声平衡、去马赛克、缩放、裁剪、增强、白平衡、色调曲线调整等,诸如使用传感器数据预处理器(未示出))。如本文中所使用的,传感器数据102可以参考未处理的传感器数据、预处理的传感器数据、或其组合。
用于训练(一个或更多个)基础DNN 104A和/或(一个或更多个)PNN 104B的输入数据102可以包括原始输入数据(例如,如由一个或更多个图像传感器所捕获的)、下采样的输入数据、上采样的输入数据、经裁剪或感兴趣区域(ROI)输入数据、以其他方式增强的输入数据和/或其组合。(一个或更多个)DNN 104可使用输入数据102以及对应的地面实况数据、使用一个或更多个损失函数来训练,直到(一个或更多个)DNN 104收敛到可接受的或最佳准确度水平。
在(一个或更多个)DNN 104(例如,(一个或更多个)基础DNN 104A和/或(一个或更多个)PNN 104B)在车辆500以外实现的实施例中,输入数据102可以包括DNN可以能够处理的任何类型的数据。例如,输入数据102可以包括音频数据(例如,声谱图)、图像数据、文本数据、位置数据、(例如,来自LiDAR传感器、RADAR传感器等的)传感器数据、和/或能够以适当格式表示(例如,作为输入向量或张量)以供DNN处理的其他数据类型。
输入数据102可以被应用于一个或更多个DNN 104——其可以包括基础(一个或更多个)DNN 104A和(一个或更多个)PNN 104B。例如,基础DNN 104A可包括在部署之后或在运行中具有一个或更多个故障模式的原始或先前训练的DNN。例如,对于对象检测,可能发生故障模式,其中基础DNN 104A被训练以识别易受攻击的道路使用者(VRU)。在这样的示例中,一旦部署,就可以确定基础DNN 104A在面对包括踏板车(例如,电动踏板车)上的人的VRU时不够准确。因此,PNN 104B可以被训练为专用电动踏板车检测器。作为另一示例,诸如关于基于基础DNN 104A的输出修补车辆500难以穿越的特定道路段,PNN 104B可被训练成处置该特定道路段和/或类似于该特定道路段的道路段。因此,当从地图或导航系统接收到现有信号112(例如,指示车辆600处于或正接近道路段)时,PNN 104B的输出可被用于解释基础DNN 104A的不准确性或故障模式的原因。作为进一步的示例,关于对象分类,被训练为车辆分类器的基础DNN 104A可能难以准确地对新车模型(诸如未来出现的卡车)进行分类。在该示例中,PNN 104B可以被训练成准确地对新汽车模型进行分类。
虽然在本文中对于将神经网络用作DNN 104来描述示例,但是这不旨在是限制性的。例如但不限于,此处所描述的(一个或更多个)DNN 104可包括任何类型的机器学习模型,诸如使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯、k最近邻(Knn)、K均值聚类、随机森林、维度减少算法、梯度提升算法、神经网络(例如,自动编码器、卷积、递归、感知器、长/短期存储器(LSTM)、霍普菲尔德、玻尔兹曼、深度信念、解卷积、生成式对抗、液态机器等)的(一个或更多个)机器学习模型和/或其他类型的机器学习模型。PNN 104B可包括与基础DNN 104A相同类型的DNN,或者可包括不同类型的DNN。
基础DNN 104A可在训练数据集上被训练、测试和验证,并且一旦被验证,就被部署以用于车辆500。一旦识别出故障模式,就可训练PNN 104B以通过经历训练来治愈或解释基础DNN 104A的故障模式的原因,该训练在各实施例中使用来自训练数据集的用于训练基础DNN 104A的训练数据中的一些或全部训练数据连同生成或检索的解释基础DNN 104A的故障模式的原因的额外的或替代的训练数据。在PNN 104B的训练期间,基础DNN 104A的参数(例如,权重和偏差)可被固定以使得基础DNN 104A从其先前验证状态不变。此外,PNN 104B的节点的输出与基础DNN 104A的节点的输入之间的连接可被固定或被设置成0,使得基础DNN 104A不处理PNN 104B的层或节点的输出。相反,与基础DNN 104A的节点的输出与PNN104B的节点的输入之间的连接相关联的参数可被训练,使得PNN 104B除了处理PNN 104B的节点或层之外还处理基础DNN 104A的节点或层的输出。
例如,如图1B所示,输入数据102可被应用到基础DNN 104A和PNN 104B两者的层126(例如,输入层126A-1和126B-1),并且基础DNN 104A的层126A的输出可被传递到后续层126A的输入和PNN 104B的后续层126B的输入,而PNN 104B的层126B的输出可仅被传递到PNN 104B的后续层126B的输入。图1B的DNN/PNN组合的放大图示在图2A中示出。在这样的示例中,基础DNN 104A的完整性可被维持,而PNN 104B可仅解决基础DNN 104A的故障模式。在各实施例中,PNN 104B可以预测基础DNN 104A的输出106A中的每一个输出和/或与基础DNN104A的输出相比额外的或替代的输出106B。例如,在基础DNN 104A被训练成计算车辆类和骑自行车者类的置信度值的情况下,PNN 104B可被训练成计算车辆类、骑自行车者类和PNN104B的附加类(诸如电子踏板车类)的置信度值。因此,在融合机制108指示PNN 104B的输出106B要用于给定迭代或时间步长的情况下,输出106B可包括基础DNN 104A的输出和PNN104B的输出。在这样的示例中,PNN 104B的附加的、修改的或替代的输出应当被依赖,但是在融合机制108指示对于给定迭代或时间步长依赖的错误输出的实例中,通过将基础DNN104A的输出的实例包括在PNN 104B的输出106B中,经融合的输出114仍可以是准确的(例如,如果融合机制108为给定的迭代正确地选择了基础DNN 104A,经融合的输出114仍可反映基础DNN 104A的输出106A)。因此,PNN 104B可被训练成作为基础DNN 104A的更好的(故障模式补偿的)版本来执行,该更好的版本由于监管机构和/或OEM的测试和验证要求而可仅针对基础DNN 104A的故障模式来实现,直到经更新的基础DNN 104A经历完整的重新验证过程。
然而,在一些实施例中,PNN 104B可被训练成相对于基础DNN 104A的输出106A计算唯一输出106B。进一步,在诸如本文中关于图2B和3A描述的那些实施例之类的实施例中,可使用基础DNN 104A(例如,其中PNN 104B基于融合机制108的确定而被选择性地关闭或以其他方式停用)或基础DNN 104A和PNN 104B的组合(例如,其中PNN 104B基于融合机制108的确定而被选择性地开启或以其他方式激活)来计算单个输出。
尽管图1B、2A-2B和3A-3B的图示包括与基础DNN 104A的每个层126A相对应的PNN104B的层126B,但是这不旨在是限制性的。例如,基础DNN 104A的每一层126A在PNN 104B中可能不具有对应的层126B。因此,基础DNN 104A的一个或更多个初始层126A可不包括PNN104B的对应层126B,并且PNN层126B可在沿着基础DNN 104A的层126A的序列的某一点处开始。作为非限制性示例,可确定基础DNN 104A的特征提取器层126A(例如,计算特征映射的基础DNN 104A的层126A)不需要PNN 104B的对应层126B准确地用于计算PNN 104B的输出106B。因此,PNN 104B的层126B可不被包括,直到在基础DNN 104A的特征提取器层126A之后。一旦引入PNN层,经组合的基础DNN/PNN网络的每个后续层可包括PNN层126B和基础DNN层126A两者。
参见图1C,图1C示出了基础DNN 104A和PNN 104B的各个层实现。图1C中的每个图示对应于单个层,其可以是输入层、输出层或输入层与输出层之间的层。例如,基础DNN实现方式120示出了接收输入(例如,向量或张量)X(124A)(例如,与到基础DNN 104A的输入层126A的输入数据102相对应的输入或来自基础DNN 104A的前一层126A的输入)并计算输出(例如,向量或张量)Y(128A)的基础DNN 104A的例如具有权重W的单层126A的实现方式。此层126A的权重W(和/或其他参数)可在基础DNN 104A部署在车辆500中之前已经被先前训练。
DNN实现方式122A(例如,组合的基础DNN/PNN实现方式)示出了接收输入X(124A)并计算输出Y(128A)的基础DNN 104A的例如具有权重W的单层126A和接收输入X(124A)和输入X’(124B)并计算输出Y’(128B)的PNN 104B的例如具有权重W’的单层126B的实现方式。因此,可执行两个单独的向量或张量通过矩阵乘法运算。在一些示例中,诸如在PNN 104B的层126B对应于基础DNN 104A的第一或输入层的情况下,X’输入可包括除了作为输入提供给基础DNN 104A之外的另外的输入数据102。例如,基础DNN 104A的输入数据102可包括图像,并且PNN 104B的输入数据102可包括图像和/或另一输入类型,诸如另一图像、来自不同传感器(例如,速度传感器、位置传感器等)的信号和/或另一输入数据类型。在其他示例中,诸如在PNN 104B的层126B对应于除了基础DNN 104A的输入层或第一层之外的层的情况下,X’输入可对应于PNN 104B的前一层126B的Y’输出。例如,一旦引入第一PNN层126B,第一PNN层126B就可输出与基础DNN层126A不同的输出Y’,因此后续PNN层126B可接收Y’输出作为X’输入。因此,除了输入X’之外,PNN层126B还可接收基础DNN层126A接收的输入X。
DNN方式实现122A(例如,组合的基础DNN/PNN实现)包括向现有层126A添加相应的附加层126B。使用与实现方式122A的分立层相似的分立层的PNN 104B可以相对较小,并且可以接收X和X’的输入串联以及输出Y’。在训练过程期间,可以仅训练补丁层126B。
DNN实现方式122B图示了单个组合层126C(例如,具有与在PNN 104B的节点或值的输出和到基础DNN 104A的节点或值的输入之间的连接相对应的权重W、W’和零132)的示例实现方式,其包括考虑基础DNN 104A的层126A和PNN 104B的层126B两者的扩展层。因此,组合层126可以接收表示X和X’的串联输入(例如,向量或张量)124A和124B,并且可以输出表示Y和Y’的串联输出(例如,向量或张量)128A和128B。零132可增加基础DNN 104A的原始层126A的维度以匹配包括X和X’的串联输入的维度,并且可表示用于附加输入X’和原始输出Y之0间的连接的权重。因此,可执行单个向量或张量矩阵乘法运算,但该结果可与使用DNN实现方式122A相同。
在训练过程中,可以仅训练与PNN 104B相对应的权重W’的子集。为了保持原始输出Y不变,附加输入X’和原始输出Y之间的所有连接被移除(例如,那些连接上的权重被设置并保持为零)。
实现方式122A和122B在所产生的DNN功能性方面可以是等效的。此外,因为W’在这两个实现方式中可以是相同的,所以可以实现这两个版本之间的简单转换。例如,第一实现方式122A可用于训练权重W’,并且第二实现方式122B可用于部署(一个或更多个)DNN 104。实现方式122A的优点是用于所有层的X输入可以使用原始基础DNN 104A来预先计算,并且在训练期间可以仅考虑PNN 104B——例如,因为层126B与基础DNN 104A的层126A是分立的。这可增加PNN 104B的训练过程,但是可能需要额外的存储和带宽。此外,因为层是分立的,所以层的优化可能不那么有效,从而导致潜在地比采用实现方式122B时更慢的推理。第二实现方式122B的优点包括与优化工具(例如,NVIDIA的TensorRT优化工具)的兼容性。例如,因为不添加新的或附加的层——例如,仅扩展现有层——模型推理存在较少的优化问题。实现方式122B的缺点是存储零值权重的要求(例如,对模型大小的最小增加)以及包括组合的PNN节点和基础DNN节点的整个DNN需要被用于训练PNN 104B(这可通过使用实现方式122A来训练权重W’并将其转换成实现方式122B来克服)。
在任何示例中,一旦PNN 104B被训练,就可以执行一个或更多个修剪操作以移除PNN 104B的在计算准确输出106B中不需要的层或节点。例如,低级特征提取器层可能不需要被修补,因此对应于基础DNN 104A的低级特征提取器层126A的PNN层126B可被修剪——或其节点可被修剪以减小层126B的大小。因此,在训练期间,可将各种修剪操作之前和之后的输出进行比较以确定PNN 104B的大小和准确度的折衷。
在一些示例中,两个或更多个PNN 104B可以被训练成修补基础DNN 104A。例如,在第一PNN 104B被部署之后,可出现另外的故障模式,并且可针对另外的和/或先前的故障模式来训练另一个或替代的PNN 104B。在一些实施例中,除了用于新故障模式的补丁之外,第二PNN 104B还可包括第一PNN 104B的补丁——以避免PNN 104B的堆叠。例如,第二PNN104B可被训练为修补部署在车辆500中的现有PNN 104B的故障模式以及另一故障模式,使得可移除现有PNN 104B并且新的或更新的PNN 104B可代替现有PNN 104B以解决这两种故障模式。尽管在各实施例中,两个或更多个PNN 104B可被部署以修补单个基础DNN 104A。在一些实施例中,一旦部署了新的或更新的PNN 104B,融合机制108就可能需要更新。例如,可以训练新的或更新的门控(gating)NN 110以考虑新的或更新的PNN 104B。
再次参见图1A,融合机制108可使用输出106(例如,来自基础DNN 104A的输出106A和来自PNN 104B的输出106B)来确定经融合的输出114。例如,融合机制108可使用来自输出106A和106B的值(例如,对应于DNN 104是对象分类DNN的情况下的对象类型的置信度值)、来自一个或更多个门控NN 110的输出和/或现有信号112(例如,对应于地理、天气、光照或其他信息)来确定对于给定迭代要依赖输出106A或106B中的哪一个。融合机制108可以是基于规则的(例如,未学习的)决策机制、学习的决策机制或其组合。融合机制的选择(例如,来自基础DNN 104A和PNN 104B的输出的置信度、现有信号112或门控NN 110)可基于PNN 104B被训练所针对的基础DNN 104A的故障模式类型。在使用门控NN 110的情况下,可以训练门控NN 110以检测故障模式或情形。门控NN 110可访问基础DNN 104A和/或PNN 104B的输入数据102以及在一些实施例中,DNN 104的内部状态(未示出)。例如,门控NN 110可以被训练为分类器,该分类器具有来自新故障模式情形的数据以及原始数据,以在两种数据类型之间进行区分。由于门控NN 110的简单性(例如,仅被训练以检测特定数据类型),门控NN 110可以实施为小网络,该小网络可以快速地在仅少量训练数据上以高性能训练。
例如,在PNN 104B被训练用于基于位置的故障(例如,不能处理特定交叉口、出口斜坡、道路等)的情况下,可以使用现有信号112。例如,GNSS数据可用于指示何时车辆500正在接近PNN 104B被训练进行修补的位置或位于该位置。作为另一示例,车辆检测器可能由于其独特的或不常见的形状而不能检测到新的模型或原型车辆。在这种类型的示例中,融合机制108可使用来自基础DNN 104A和PNN 104B的输出的置信度和/或可使用门控NN 110,门控NN 110分析输入数据102(例如,在各实施例中,与基础DNN 104A和/或PNN 104B相同的输入数据102)并输出指示要使用哪个输出的二进制输出。例如,在PNN 104B对于车辆类型的置信度高、并且基础DNN 104A针对其类别中的每一个类别的置信度低的情况下,可依赖于PNN 104B的输出。作为另一示例,门控NN 110可以被训练为在检测到未来车辆时输出值“1”,从而使得PNN 104B的输出可以被依赖作为用于给定迭代的融合输出114。
因此,不同的故障类型可能需要不同的修补策略——包括PNN 104B的类型以及与其一起使用的融合机制108。PNN 104B相对于自主或半自主驾驶的一些非限制性示例使用情况可包括添加新特征、修补特定道路段、或改善现有特征。例如,为了添加新特征,基础DNN 104A可以在电动踏板车(e-scooter)变得流行之前被部署。电动踏板车驾驶员可被认为是易受攻击的道路使用者(VRU),并且可确定被训练为识别或检测VRU的基础DNN 104A未能将电动踏板车骑手检测为VRU。在该示例中,PNN 104B可被训练作为专用电动踏板车检测器,并且融合机制108可以是与基础DNN 104A的其他VRU检测器(例如,行人、骑自行车者等)的串联。
关于修补特定路段,被部署用于帮助车道保持或路径规划穿过道路和/或交叉口的基础DNN 104A可能在特定路段或道路或交叉口出现故障模式——例如,由于不佳的道路标记、独特交叉口设计等,车辆500在穿过行驶面时可能无法正确地保持车道。在该示例中,PNN 104B可被训练和验证用于在基础DNN 104A挣扎的特定道路路段中进行车道保持。在这样的示例中,融合机制108可以包括GNSS信号、定位到高清晰度(HD)地图(例如,使用来自车辆500的传感器的传感器数据)、和/或训练用于特定路段或交叉路口的专用地标检测器。因此,当接收到指示车辆500处于对应于PNN 104B的道路段的信号时,可以使用PNN 104B的输出106B。
在要改进现有特征(诸如车辆检测器)的情况下,基础DNN 104A在预测特定类型的车辆(例如,新模型或设计)时可能是不准确的。在这样的示例中,训练专用PNN 104B用于新汽车检测可能不起作用,因为新车辆模型的外观可能过于接近类似模型,并且迫使PNN104B进行区分可能是有挑战性的。而且,如在添加新特征的示例中那样简单地串联输出可能不可行,因为如果不完全重新验证基础DNN 104A,则可能无法验证PNN 104B的正误识率(false positive rate)。结果,基础DNN 104A的输出106A和PNN 104B的输出106B两者都可被用来作出决策,因为PNN 104B的正误识率以及置信度输出都不能单独地足以达到所需的安全水平。然而,两个输出106的组合可以达到合适的安全水平——例如,最终输出信号中的正误识可能仅在融合机制108故障并且PNN 104B具有正误识的情况下发生。
参照图2B,示出了图1B和图2A的基础DNN/PNN组合的替代性架构。在这样的示例中,PNN 104B的节点可以被添加到基础DNN 104A的现有节点的输入。PNN 104B因此可能不需要生成其自己的输出,因为PNN 104B可学习针对故障模式校正现有DNN输出。当PNN 104B被关闭时,基础DNN 104A可恰恰如在补丁之前那样表现。然而,因为基础DNN输出106A和PNN输出106B两者都不是在每次迭代时被计算出来的,所以在需要这两个输出的情况下,可能需要推理运行两次来检索这两个输出用于分析——这增加了计算并且增加了延迟。
参见图3A-3B,图3A-3B描绘了具有PNN的选择性激活的DNN和PNN架构的示例。例如,相对于图3A,融合机制108可基于现有信号112和/或门控NN 110确定是否开启或激活PNN 104B的节点。例如,当PNN 104B的节点被关闭或停用时,PNN 104B的节点的每个参数(例如,权重和偏差)的值可被箝制为零。这保证了基础DNN 104A与在添加PNN 104B之前一样精确地操作—位精确。打开DNN 104B的节点或激活它们允许PNN 104B的经训练的参数正常运算。该架构的益处可以是PNN 104B在被激活时可能影响基础DNN 104A在故障模式期间的决定。此外,由于除了新的或替代的输出之外,PNN 104B不需要计算基础DNN 104A的每个输出,因此PNN 104B可以更小。然而,在正误识场景中(例如,其中融合机制108不正确地激活补丁),结果是使用PNN 104B的输出,其不包括基础DNN 104A的原始输出的另一实例。与计算单独的输出106(例如,输出106A和106B)的实施例(例如,在诸如图1B和图3B的那些的实施例中)相比,这可能导致在正误识场景期间的较不准确的结果。尽管被示为单个输出106,但在各实施例(诸如本文中描述的那些实施例)中,基础DNN/PNN组合可包括单独的输出头。
进一步地,在一些实施例中,软通/断开关可以用于PNN 104B。例如,代替打开或关闭PNN 104B,可以应用从无PNN 104B到使用PNN 104B的逐渐过渡。这可以通过将补丁节点的输出与从例如0.0(未应用PNN 104B)到1.0(完全应用PNN 104B)的因子相乘来实现。
作为另一示例,并且关于图3B,PNN 104B可以与基础DNN 104A分开,使得当PNN104B未被激活时基础DNN 104A的信息处理可从其原始状态不变。例如,关于图1B,PNN 104B的添加节点影响基础DNN 104A的信息处理。因此,图3B的架构与图1B的架构相似,但是允许基于融合机制108的确定来选择性地激活PNN 104B。结果,正误识场景仍可包括基础DNN104A的冗余输出,并且负误识(false negative)输出将导致输出类似于修补之前的基础DNN 104A的输出。因此,在PNN 104B被关闭的情况下,可以减少计算。
在一些实施例中,可以使用真实世界测试数据和/或模拟测试数据来测试和验证PNN 104B和融合机制108——例如,在模拟环境中。例如,PNN 104B和/或融合机制108可在重新模拟器、NVIDIA的DriveSIM和/或真实世界中进行测试。在一些实施例中,一旦在消费者车队外部进行测试和验证,就可以通过空中(OTA)将PNN 104和/或融合机制108(例如,门控NN 110)推送至消费者车辆来以被动(非活动)(又名“阴影”)模式执行。被动模式可允许底层代码执行但不允许输出106在其上致动。因此,当消费者车队继续运行时,可在短时间内执行大规模测试。融合机制108决定切换到PNN 104B的发生情况和/或基础DNN 104A和PNN 104B的输出不一致的发生情况可被记录和分析。到PNN 104B的切换可被用来验证融合机制正在正确地工作并且PNN 104B正确地修复了基础DNN 104A的故障模式。不一致记录可被用来验证PNN 104B在正常条件下正确地运行--例如,在PNN 104B可能被错误地选择的情况下,PNN 104B的输出106B仍应当准确地反映基础DNN 104A的输出106A中的那些输出。
除了实现基础DNN 104A之外,为了还实现PNN 104B和融合机制108,PNN 104B和融合机制108的所需计算可被预分配--例如,在基础DNN 104A的初始部署时,可在车辆500中留下足够的缓冲空间未使用以支持PNN 104B和融合机制108。关于PNN 104B,这可意味着可预先确定可用于组合的所有PNN 104B的权重和节点的最大数量。因此,该预分配的量可被考虑到PNN 104B的设计决策中。对于融合机制108的预分配计算,可确定所需的最大CPU、GPU、DPU、加速器和/或其他片上资源的估计。因此,(一个或更多个)PNN 104B和(一个或更多个)融合机制108两者都可以作为“虚设物(dummies)”或预留位(placeholders)被添加到计算图以避免改变调度器,因为改变可能需要额外的验证工作。
在一些实施例中,可以实现补丁版本控制系统以跟踪所部署的PNN 104B、请求PNN104B的人、训练PNN 104B的人和何时、验证PNN 104B的人和何时、部署PNN 104B的人、何时和部署到哪些车辆等。此外,至少部分地与PNN 104B的训练和部署同时和/或之后,经更新的基础DNN 104A可被训练、测试和验证以便例如在下一主要DNN释放期间被推送到车辆500。因此,PNN 104B和融合机制108可在经更新的基础DNN 104A的训练、测试和验证期间(例如,在一些实例中,6个月到一年)充当临时修复。
现在参见图4,在此描述的方法400的每个框包括可以使用硬件、固件和/或软件的任何组合执行的计算过程。例如,各个功能可以通过处理器执行存储在存储器中的指令来实现。方法400还可以体现为存储在计算机存储介质上的计算机可用指令。方法400可由独立应用、服务或托管服务(独立或与其他托管服务组合)或到另一产品的插件提供,仅举几例。此外,通过示例的方式,针对图1A的过程100和图5A-5D的车辆500来描述方法400。然而,该方法400可附加地或替换地由任何一个系统或系统的任何组合来执行,包括但不限于本文中描述的那些系统。
图4是示出了根据本发明的一些实施例的用于执行部署中的PNN 104B的方法400的流程图。在框B402处,方法400包括将第一数据应用于深度神经网络(DNN)和补丁神经网络(PNN)。例如,输入数据102可被应用于基础DNN 104A和PNN 104B。
在框B404处,方法400包括处理第一数据以计算第二数据,所述处理包括:(1)DNN处理DNN的一个或更多个节点的第一输出;以及(2)PNN处理PNN的一个或更多个节点的第二输出以及DNN的一个或更多个节点的一个或更多个第一输出中的至少一个第一输出。例如,基础DNN 104A的层126A的节点可处理基础DNN 104A的层126A的其他节点的输出,并且PNN104B可处理基础DNN 104A的层126A的节点的输出和PNN 104B的层126B的节点的输出两者。最终,基础DNN 104A可以计算输出106A,并且PNN 104B可以计算输出106B。然而,在实施例中,输出可以是取决于PNN 104B的激活或停用的单个组合输出,如本文中至少参照图3A所述的。以此方式,基础DNN 104A可类似于修补之前的行为表现,并且PNN 104B可解决基础DNN 104A的故障场景。
在框B406处,方法400包括至少部分地基于第二数据执行一个或更多个操作。例如,输出106可用于由车辆500执行一个或更多个操作,诸如物体检测、分类和/或跟踪、路径规划、控制决定、障碍物避免等。
结果,PNN 104B可以用快速周转时间来实现以解决基础DNN 104A的故障场景,而无需基础DNN 104A的完全重新验证。这可允许车辆500或其他底层系统在经更新的基础DNN104A被训练和验证以考虑故障模式时继续运行。此外,因为基础DNN 104A的功能在与PNN104B使用时可保持不变,所以安全关键应用(诸如自主或半自主驾驶)中的风险可被最小化,因为经验证的基础DNN 104A仍可在不对应于故障模式的所有实例中被依赖。
示例自主车辆
图5A为依照本公开一些实施例的示例自主车辆500的图示。自主车辆500(可替代地,在本文称为“车辆500”)可以包括但不限于乘用车辆,例如汽车、卡车、公共汽车、第一响应车辆、穿梭车、电动或机动自行车、摩托车、消防车、警车、救护车、船只、建筑车辆、水下航行器、无人机、与拖车相连的车辆和/或(例如无人的和/或容纳一个或更多个乘客的)另一种类型的车辆。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(NHTSA)以及汽车工程师协会(SAE)定义的自动化级别进行描述“Taxonomy andDefinitions for Terms Related to Driving Automation Systems for On-Road MotorVehicles”(2018年6月15日发布的标准No.J3016-201806,2016年9月30日发布的标准No.J3016-201609,以及该标准的先前和未来的版本)。车辆500可能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。例如,取决于实施例,车辆500可能够实现条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。
车辆500可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆500可以包括推进系统550,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进系统类型。推进系统550可以连接到可以包括变速器的车辆500的传动系以便实现车辆500的推进。可以响应于接收到来自油门/加速器552的信号而控制推进系统550。
可以包括方向盘的转向(steering)系统554可以用来在推进系统550操作时(例如在车辆运动时)使车辆500转向(例如沿着希望的路径或路线)。转向系统554可以接收来自转向致动器556的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器系统546可以用来响应于接收到来自制动致动器548和/或制动传感器的信号而操作车辆制动器。
可以包括一个或更多个片上系统(SoC)504(图5C)和/或一个或更多个GPU的一个或更多个控制器536可以向车辆500的一个或更多个部件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器548操作车辆制动器、经由一个或更多个转向致动器556操作转向系统554、经由一个或更多个油门/加速器552操作推进系统550的信号。一个或更多个控制器536可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以允许实现自主驾驶和/或辅助人类驾驶员驾驶车辆500。一个或更多个控制器536可以包括用于自主驾驶功能的第一控制器536、用于功能性安全功能的第二控制器536、用于人工智能功能(例如计算机视觉)的第三控制器536、用于信息娱乐功能的第四控制器536、用于紧急状况下的冗余的第五控制器536和/或其他控制器。在一些示例中,单个控制器536可以处理上述功能中的两个或更多个,两个或更多个控制器536可以处理单个功能,和/或其任意组合。
一个或更多个控制器536可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆500的一个或更多个部件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系统传感器558(例如全球定位系统传感器)、RADAR传感器560、超声传感器562、LIDAR传感器564、惯性测量单元(IMU)传感器566(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风596、立体相机568、广角相机570(例如鱼眼相机)、红外相机572、环绕相机574(例如360度相机)、远程和/或中程相机598、速度传感器544(例如用于测量车辆500的速率)、振动传感器542、转向传感器540、制动传感器(例如作为制动传感器系统546的部分)和/或其他传感器类型。
控制器536中的一个或更多个可以接收来自车辆500的仪表组532的输入(例如由输入数据表示),并且经由人机接口(HMI)显示器534、听觉信号器、扬声器和/或经由车辆500的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图5C的HD地图522)、位置数据(例如,车辆500例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器536所感知的关于对象和对象状态的信息等等。例如,HMI显示器534可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34B,等等)。
车辆500还包括网络接口524,其可以使用一个或更多个无线天线526和/或调制解调器通过一个或更多个网络通信。例如,网络接口524可能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等通信。一个或更多个无线天线526也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之类的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类的一个或更多个低功率广域网(LPWAN)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
图5B为依照本公开一些实施例的用于图5A的示例自主车辆500的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆500上的不同位置。
用于相机的相机类型可以包括但不限于可以适于与车辆500的部件和/或系统一起使用的数字相机。所述相机可以在汽车安全完整性级别(ASIL)B下和/或在另一个ASIL下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、120fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(RCCC)滤色器阵列、红白白蓝(RCCB)滤色器阵列、红蓝绿白(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB和/或RBGC滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助系统(ADAS)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
所述相机中的一个或更多个可以安装在诸如定制设计的(3-D打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-D打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
具有包括车辆500前面的环境的部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器536和/或控制SoC的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于ADAS功能和系统,包括车道偏离警告(“LDW”)、自主巡航控制(“ACC”),和/或诸如交通指示牌识别之类的其他功能。
各种各样的相机可以用于前置配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机570,其可以用来感知从周边进入视场的对象(例如行人、十字路口交通或者自行车)。尽管图5B中图示出仅仅一个广角相机,但是在车辆500上可以存在任意数量的广角相机570。此外,远程相机598(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机598也可以用于对象检测和分类以及基本的对象追踪。
一个或更多个立体相机568也可以包括在前置配置中。立体相机568可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的CAN或以太网接口的多核微处理器和可编程逻辑(FPGA)。这样的单元可以用来生成车辆环境的3-D地图,包括针对图像中的所有点的距离估计。可替代的立体相机568可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机568。
具有包括车辆500的侧面的环境的部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机574(例如如图5B中所示的四个环绕相机574)可以置于车辆500上。环绕相机574可以包括广角相机570、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机574(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
具有包括车辆500的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机598、立体相机568、红外相机572等等)的相机。
图5C为依照本公开一些实施例的用于图5A的示例自主车辆500的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。
图5C中车辆500的部件、特征和系统中的每一个被图示为经由总线502连接。总线502可以包括控制器区域网络(CAN)数据接口(可替代地,本文称为“CAN总线”)。CAN可以是车辆500内部的网络,用来辅助控制车辆500的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。CAN总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如CAN ID)。可以读取CAN总线以找到方向盘角度、地速、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示符。CAN总线可以是ASIL B兼容的。
尽管这里将总线502描述为CAN总线,但是这并不意图是限制性的。例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。此外,尽管用单条线来表示总线502,但是这并不意图是限制性的。例如,可以存在任意数量的总线502,其可以包括一条或更多条CAN总线、一条或更多条FlexRay总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线502可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线502可以用于碰撞避免功能,并且第二总线502可以用于驱动控制。在任何示例中,每条总线502可以与车辆500的任何部件通信,并且两条或更多总线502可以与相同的部件通信。在一些示例中,车辆内的每个SoC 504、每个控制器536和/或每个计算机可以有权访问相同的输入数据(例如来自车辆500的传感器的输入),并且可以连接到诸如CAN总线之类的公共总线。
车辆500可以包括一个或更多个控制器536,例如本文关于图5A所描述的那些控制器。控制器536可以用于各种各样的功能。控制器536可以耦合到车辆500的任何其他不同的部件和系统,并且可以用于车辆500的控制、车辆500的人工智能、用于车辆500的信息娱乐和/或类似物。
车辆500可以包括一个或更多个片上系统(SoC)504。SoC 504可以包括CPU 506、GPU 508、处理器510、高速缓存512、加速器514、数据存储区516和/或未图示出的其他部件和特征。在各种各样的平台和系统中,SoC 504可以用来控制车辆500。例如,一个或更多个SoC 504可以在系统(例如车辆500的系统)中与HD地图522结合,所述HD地图可以经由网络接口524从一个或更多个服务器(例如图5D的一个或更多个服务器578)获得地图刷新和/或更新。
CPU 506可以包括CPU簇或者CPU复合体(可替代地,本文称为“CCPLEX”)。CPU 506可以包括多个核和/或L2高速缓存。例如,在一些实施例中,CPU 506在一致性多处理器配置中可以包括八个核。在一些实施例中,CPU 506可以包括四个双核簇,其中每个簇具有专用的L2高速缓存(例如2MB L2高速缓存)。CPU 506(例如CCPLEX)可以被配置为支持同时簇操作,使得CPU 506的簇的任意组合能够在任何给定时间是活动的。
CPU 506可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟选通以节省动态功率;由于WFI/WFE指令的执行,每个核时钟可以在该核不主动地执行指令时进行选通;每个核可以独立地进行功率选通;当所有核都进行时钟选通或者功率选通时,可以独立地对每个核簇进行时钟选通;和/或当所有核都进行功率选通时,可以独立地对每个核簇进行功率选通。CPU 506可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和CCPLEX确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
GPU 508可以包括集成的GPU(可替代地,本文称为“iGPU”)。GPU 508可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,GPU 508可以使用增强张量指令集。GPU 508可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如具有至少96KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多可以共享L2高速缓存(例如具有512KB存储能力的L2高速缓存)。在一些实施例中,GPU 508可以包括至少八个流式微处理器。GPU 508可以使用计算应用编程接口(API)。此外,GPU508可以使用一个或更多个并行计算平台和/或编程模型(例如NVIDIA的CUDA)。
在汽车和嵌入式使用的情况下,可以对GPU 508进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制造GPU 508。然而,这并不意图是限制性的,并且GPU 508可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个PF32核和32个PF64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个FP32核、8个FP64核、16个INT32核、用于深层学习矩阵算术的两个混合精度NVIDIA张量核、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。
GPU 508可以包括在一些示例中提供大约900GB/s的峰值内存带宽的高带宽内存(HBM)和/或16GB HBM2内存子系统。在一些示例中,除了HBM内存之外或者可替代地,可以使用同步图形随机存取存储器(SGRAM),例如第五代图形双倍数据速率同步随机存取存储器(GDDR5)。
GPU 508可以包括统一内存技术,其包括访问计数器以允许内存页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的内存范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允许GPU 508直接访问CPU 506页表。在这样的示例中,当GPU 508内存管理单元(MMU)经历遗漏时,可以将地址转换请求传输至CPU 506。作为响应,CPU 506可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回GPU508。这样,统一内存技术可以允许单个统一虚拟地址空间用于CPU 506和GPU 508二者的内存,从而简化了GPU 508编程和将应用程序移(port)到GPU 508。
此外,GPU 508可以包括访问计数器,其可以追踪GPU 508访问其他处理器的内存的频率。访问计数器可以帮助确保内存页面移至最频繁地访问这些页面的处理器的物理内存。
SoC 504可以包括任意数量的高速缓存512,包括本文描述的那些高速缓存。例如,高速缓存512可以包括CPU 506和GPU 508二者可用的L3高速缓存(例如,其连接到CPU 506和GPU 508二者)。高速缓存512可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如MEI、MESI、MSI等)追踪行的状态。取决于实施例,L3高速缓存可以包括4MB或者更多,但是也可以使用更小的高速缓存大小。
SoC 504可以包括算术逻辑单元(ALU),其可以被利用于执行关于车辆500的所述各种各样的任务或操作中的任何任务或操作的处理,例如处理DNN。此外,SoC 504可以包括用于执行系统内的数学运算的浮点单元(FPU)或者其他数学协处理器或数字协处理器类型。例如,SoC 104可以包括作为执行单元集成在CPU 506和/或GPU 508内的一个或更多个FPU。
SoC 504可以包括一个或更多个加速器514(例如硬件加速器、软件加速器或者其组合)。例如,SoC 504可以包括硬件加速簇,其可以包括优化的硬件加速器和/或大型片上内存。该大型片上内存(例如4MB SRAM)可以使得硬件加速簇能够加速神经网络和其他计算。硬件加速簇可以用来补充GPU 508,并且卸载GPU 508的一些任务(例如释放GPU 508的更多周期以用于执行其他任务)。作为一个示例,加速器514可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(CNN)等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如用于对象检测)。
加速器514(例如硬件加速簇)可以包括深度学习加速器(DLA)。DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执行图像处理功能(例如用于CNN、RCNN等)且针对执行图像处理功能而优化的加速器。DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。DLA的设计可以比通用GPU提供每毫米更高的性能,并且远远超过CPU的性能。TPU可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后处理器功能。
DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
DLA可以执行GPU 508的任何功能,并且通过使用推理加速器,例如,设计者可以使DLA或GPU 508针对任何功能。例如,设计者可以将CNN的处理和浮点运算聚焦在DLA上,并且将其他功能留给GPU 508和/或其他加速器514。
加速器514(例如硬件加速簇)可以包括可编程视觉加速器(PVA),其在本文中可以可替代地称为计算机视觉加速器。PVA可以被设计和配置为加速用于高级驾驶员辅助系统(ADAS)、自主驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。PVA可以提供性能与灵活性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指令集计算机(RISC)核、直接内存访问(DMA)和/或任意数量的向量处理器。
RISC核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些RISC核中的每一个可以包括任意数量的内存。取决于实施例,RISC核可以使用若干协议中的任何协议。在一些示例中,RISC核可以执行实时操作系统(RTOS)。RISC核可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备实现。例如,RISC核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可以使得PVA的部件能够独立于CPU 506访问系统内存。DMA可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,PVA可以包括PVA核和两个向量处理子系统分区。PVA核可以包括处理器子系统、一个或更多个DMA引擎(例如两个DMA引擎)和/或其他外围设备。向量处理子系统可以作为PVA的主处理引擎而操作,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量内存(例如VMEM)。VPU核可以包括数字信号处理器,诸如例如单指令多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速率。
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件加速簇中,并且任意数量的向量处理器可以包括在这些PVA中的每一个中。此外,PVA可以包括附加的纠错码(ECC)内存,以增强总体系统安全性。
加速器514(例如硬件加速簇)可以包括片上计算机视觉网络和SRAM,以提供用于加速器514的高带宽、低延迟SRAM。在一些示例中,片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少4MB SRAM,其可以由PVA和DLA二者访问。每对内存块可以包括高级外围总线(APB)接口、配置电路系统、控制器和复用器。可以使用任何类型的内存。PVA和DLA可以经由向PVA和DLA提供高速内存访问的主干(backbone)访问内存。主干可以包括(例如使用APB)将PVA和DLA互连到内存的片上计算机视觉网络。
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定PVA和DLA二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 61508标准,但是也可以使用其他标准和协议。
在一些示例中,SoC 504可以包括例如在2018年8月10日提交的美国专利申请No.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化模拟,以用于RADAR信号解释、用于声音传播合成和/或分析、用于SONAR系统模拟、用于一般波传播模拟、用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(TTU)可以用于执行一个或更多个光线追踪相关操作。
加速器514(例如硬件加速器簇)具有广泛的自主驾驶用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自主车辆中的关键处理阶段。PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,PVA在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
例如,依照该技术的一个实施例,PVA用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目相机的输入上执行计算机立体视觉功能。
在一些示例中,PVA可以用来执行密集的光流。根据过程原始RADAR数据(例如使用4D快速傅立叶变换)以提供经处理的RADAR。在其他示例中,PVA用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决定。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)系统中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,与车辆500取向、距离相关的惯性测量单元(IMU)传感器566输出,从神经网络和/或其他传感器(例如LIDAR传感器564或RADAR传感器560)获得的对象的3D位置估计等。
SoC 504可以包括一个或更多个数据存储区516(例如内存)。数据存储区516可以是SoC 504的片上内存,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,为了冗余和安全,数据存储区516可以容量足够大以存储神经网络的多个实例。数据存储区512可以包括L2或L3高速缓存512。对数据存储区516的引用可以包括对与如本文所描述的PVA、DLA和/或其他加速器514关联的内存的引用。
SoC 504可以包括一个或更多个处理器510(例如嵌入式处理器)。处理器510可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是SoC 504启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、SoC 504热和温度传感器管理和/或SoC 504功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且SoC504可以使用环形振荡器检测CPU 506、GPU 508和/或加速器514的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将SoC 504置于较低功率状态和/或将车辆500置于司机安全停车模式(例如使车辆500安全停车)。
处理器510可以还包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频I/O接口。在一些示例中,音频处理引擎是具有带有专用RAM的数字信号处理器的专用处理器核。
处理器510可以还包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的RAM、支持外围设备(例如定时器和中断控制器)、各种I/O控制器外围设备和路由逻辑。
处理器510可以还包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全簇引擎可以包括两个或更多处理器核、紧密耦合的RAM、支持外围设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
处理器510可以还包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。
处理器510可以还包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
处理器510可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机570、环绕相机574和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级SoC的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用并且GPU 508无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在GPU 508上电并且激活,进行3D渲染时,视频图像复合器可以用来减轻GPU 508的负担以提高性能和响应能力。
SoC 504可以还包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。SoC 504可以还包括可以由软件控制并且可以用于接收未提交到特定角色的I/O信号的输入/输出控制器。
SoC 504可以还包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。SoC 504可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的LIDAR传感器564、RADAR传感器560等等)的数据,来自总线502的数据(例如车辆500的速率、方向盘位置等等),来自(通过以太网或CAN总线连接的)GNSS传感器558的数据。SoC 504可以还包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且其可以用来从日常数据管理任务中释放CPU506。
SoC 504可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。SoC 504可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与CPU 506、GPU 508和数据存储516结合时,加速器514可以提供用于3-5级自主车辆的快速高效平台。
因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,这些CPU可以使用诸如C编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,CPU常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多CPU不能实时地执行复杂的对象检测算法,这是车载ADAS应用的要求和实用3-5级自主车辆的要求。
与常规系统形成对比的是,通过提供CPU复合体、GPU复合体和硬件加速簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如GPU 520)上执行的CNN可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA可以还包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在CPU复合体上的路径规划模块的神经网络。
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在GPU 508上同时运行。
在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据识别车辆500的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,SoC 504提供了防范盗窃和/或劫车的安全性。
在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦克风596的数据来检测并且识别应急车辆告警。与使用通用分类器检测告警并且手动地提取特征的常规系统形成对比的是,SoC 504使用CNN以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在DLA上的CNN被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。CNN也可以被训练为识别如GNSS传感器558所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲告警,并且当在美国时,CNN将寻求识别仅仅北美的告警。一旦检测到应急车辆,在超声传感器562的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
车辆可以包括可以经由高速互连(例如PCIe)耦合到SoC 504的CPU 518(例如分立的CPU或dCPU)。CPU 518可以包括例如X86处理器。CPU 518可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS传感器与SoC 504之间潜在地不一致的结果,和/或监控控制器536和/或信息娱乐SoC 530的状态和健康状况。
车辆500可以包括可以经由高速互连(例如NVIDIA的NVLINK)耦合到SoC 504的GPU520(例如分立的GPU或dGPU)。GPU 520可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来至少部分地基于来自车辆500的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
车辆500可以还包括网络接口524,该网络接口可以包括一个或更多个无线天线526(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口524可以用来使能通过因特网与云(例如与服务器578和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆500提供关于接近车辆500的车辆(例如车辆500前面、侧面和/或后面的车辆)的信息。该功能可以是车辆500的协作自适应巡航控制功能的部分。
网络接口524可以包括提供调制和解调功能并且使得控制器536能够通过无线网络通信的SoC。网络接口524可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。
车辆500可以还包括可包括片外(例如SoC 504外)存储装置的数据存储区528。数据存储区528可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
车辆500可以还包括GNSS传感器558。GNSS传感器558(例如GPS、辅助GPS传感器、差分GPS(DGPS)传感器等)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的GNSS传感器558,包括例如且不限于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆500可以还包括RADAR传感器560。RADAR传感器560可以甚至在黑暗和/或恶劣天气条件下也由车辆500用于远程车辆检测。RADAR功能安全级别可以是ASIL B。RADAR传感器560可以使用CAN和/或总线502(例如以传输RADAR传感器560生成的数据)以用于控制以及访问对象追踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的RADAR传感器类型。例如且非限制性地,RADAR传感器560可以适合前面、后面和侧面RADAR使用。在一些示例中,使用脉冲多普勒RADAR传感器。
RADAR传感器560可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以用于自适应巡航控制功能。远程RADAR系统可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。RADAR传感器560可以帮助区分静态对象和运动对象,并且可以由ADAS系统用于紧急制动辅助和前方碰撞警告。远程RADAR传感器可以包括具有多根(例如六根或更多)固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆500的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆500的车道的车辆成为可能。
作为一个示例,中程RADAR系统可以包括高达560m(前面)或80m(后面)的范围以及高达42度(前面)或550度(后面)的视场。短程RADAR系统可以包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠两端时,这样的RADAR传感器系统可以创建持续地监控后方和车辆旁边的视盲点的两个波束。
短程RADAR系统可以在ADAS系统中用于视盲点检测和/或变道辅助。
车辆500可以还包括超声传感器562。可以置于车辆500的前面、后面和/或侧面的超声传感器562可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器562,并且不同的超声传感器562可以用于不同的检测范围(例如2.5m、4m)。超声传感器562可以操作于功能安全级别的ASIL B。
车辆500可以包括LIDAR传感器564。LIDAR传感器564可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。LIDAR传感器564可以为功能安全级别的ASIL B。在一些示例中,车辆500可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个LIDAR传感器564(例如两个、四个、六个等等)。
在一些示例中,LIDAR传感器564可能够对360度视场提供对象列表及其距离。商业上可用的LIDAR传感器564可以具有例如近似500m的广告范围,精度为2cm-3cm,支持500Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器564。在这样的示例中,LIDAR传感器564可以实现为可以嵌入到车辆500的前面、后面、侧面和/或拐角的小设备。在这样的示例中,LIDAR传感器564可以甚至对于低反射率对象提供高达120度水平的和35度竖直的视场,具有200m的范围。前面安装的LIDAR传感器564可以被配置用于45度与135度之间的水平视场。
在一些示例中,也可以使用诸如3D闪光LIDAR之类的LIDAR技术。3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆500的每一侧一个。可用的3D闪光LIDAR系统包括没有风扇以外的运动部件(moving part)的固态3D凝视阵列LIDAR相机(例如非扫描LIDAR设备)。闪光LIDAR设备可以使用每帧5纳秒I类(眼睛安全)激光脉冲,并且可以以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有运动部件的固态设备,LIDAR传感器564可以不太容易受到运动模糊、振动和/或震动的影响。
该车辆可以还包括IMU传感器566。在一些示例中,IMU传感器566可以位于车辆500的后轴的中心。IMU传感器566可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,IMU传感器566可以包括加速度计和陀螺仪,而在九轴应用中,IMU传感器566可以包括加速度计、陀螺仪和磁力计。
在一些实施例中,IMU传感器566可以实现为微型高性能GPS辅助惯性导航系统(GPS/INS),其结合微机电系统(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,IMU传感器566可以使得车辆500能够在无需来自磁传感器的输入的情况下通过直接观察从GPS到IMU传感器566的速度变化并且将其相关来估计方向(heading)。在一些示例中,IMU传感器566和GNSS传感器558可以结合到单个集成单元中。
该车辆可以包括置于车辆500中和/或车辆500周围的麦克风596。除别的以外,麦克风596可以用于应急车辆检测和识别。
该车辆可以还包括任意数量的相机类型,包括立体相机568、广角相机570、红外相机572、环绕相机574、远程和/或中程相机598和/或其他相机类型。这些相机可以用来捕获车辆500整个外围周围的图像数据。使用的相机类型取决于实施例和车辆500的要求,并且相机类型的任意组合可以用来提供车辆500周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(GMSL)和/或千兆以太网。所述相机中的每一个在本文关于图5A和图5B更详细地进行了描述。
车辆500可以还包括振动传感器542。振动传感器542可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器542时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
车辆500可以包括ADAS系统538。在一些示例中,ADAS系统538可以包括SoC。ADAS系统538可以包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、视盲点警告(BSW)、后方穿越交通警告(RCTW)、碰撞警告系统(CWS)、车道居中(LC)和/或其他特征和功能。
ACC系统可以使用RADAR传感器560、LIDAR传感器564和/或相机。ACC系统可以包括纵向ACC和/或横向ACC。纵向ACC监控并控制到紧接在车辆500前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆500改变车道。横向ACC与诸如LCA和CWS之类的其他ADAS应用程序有关。
CACC使用来自其他车辆的信息,该信息可以经由网络接口524和/或无线天线526经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如紧接在车辆500前方且与其处于相同车道的车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC系统可以包括I2V和V2V信息源中的任一个或者二者。给定车辆500前方车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
FCW系统被设计为提醒(alert)驾驶员注意危险,使得驾驶员可以采取纠正措施。FCW系统使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器560,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。FCW系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
AEB系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。AEB系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器560。当AEB系统检测到危险时,它典型地首先提醒驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么AEB系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。AEB系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
LDW系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆500穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活LDW系统。LDW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
LKA系统是LDW系统的变型。如果车辆500开始离开车道,那么LKA系统提供纠正车辆500的转向输入或制动。
BSW系统检测并向驾驶员警告汽车视盲点中的车辆。BSW系统可以提供视觉、听觉和/或触觉警示(alert)以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。BSW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或RADAR传感器560,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
RCTW系统可以在车辆500倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些RCTW系统包括AEB以确保应用车辆制动器以避免撞车。RCTW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器560,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
常规的ADAS系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为ADAS系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆500中,在冲突结果的情况下,车辆500本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器536或第二控制器536)的结果。例如,在一些实施例中,ADAS系统538可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自ADAS系统538的输出可以提供给监督MCU。如果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何协调该冲突以确保安全操作。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督MCU可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督MCU可以在这些计算机之间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行神经网络,所述神经网络被训练并且被配置为至少部分地基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督MCU中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW系统时,监督MCU中的神经网络可以了解FCW系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的LDW系统时,监督MCU中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包括运行在监督MCU上的神经网络的实施例中,监督MCU可以包括适合于利用关联的内存运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括SoC 504的部件和/或作为SoC 504的部件而被包括。
在其他示例中,ADAS系统538可以包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督MCU中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督MCU可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
在一些示例中,ADAS系统538的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS系统538由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
车辆500可以还包括信息娱乐SoC 530(例如车载信息娱乐系统(IVI))。尽管被图示和描述为SoC,但是信息娱乐系统可以不是SoC,并且可以包括两个或更多分立的部件。信息娱乐SoC 530可以包括可以用来向车辆500提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如TV、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如LTE、WiFi等等)和/或信息服务(例如导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐SoC 530可以包括收音机、盘播放器、导航系统、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、WiFi、方向盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器534、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐SoC 530可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自ADAS系统538的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
信息娱乐SoC 530可以包括GPU功能。信息娱乐SoC 530可以通过总线502(例如CAN总线、以太网等)与车辆500的其他设备、系统和/或部件通信。在一些示例中,信息娱乐SoC530可以耦合至监督MCU,使得在主控制器536(例如车辆500的主和/或备用计算机)出现故障的情况下,信息娱乐系统的GPU可以执行一些自驾驶功能。在这样的示例中,信息娱乐SoC530可以如本文所描述的将车辆500置于司机安全停车模式。
车辆500可以还包括仪表组532(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组532可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组532可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(SRS)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐SoC 530和仪表组532之间共享。换言之,仪表组532可以作为信息娱乐SoC 530的部分而被包括,或者反之亦然。
图5D为依照本公开一些实施例的基于云的服务器与图5A的示例自主车辆500之间的通信的系统示意图。系统576可以包括服务器578、网络590以及包括车辆500在内的车辆。服务器578可以包括多个GPU584(A)-584(H)(这里统称为GPU 584)、PCIe交换机582(A)-582(H)(这里统称为PCIe交换机582)和/或CPU 580(A)-580(B)(这里统称为CPU 580)。GPU584、CPU 580和PCIe交换机可以与诸如例如且不限于NVIDIA开发的NVLink接口588之类的高速互连和/或PCIe连接586互连。在一些示例中,GPU 584经由NVLink和/或NVSwitch SoC连接,并且GPU 584和PCIe交换机582经由PCIe互连连接。尽管图示出八个GPU 584、两个CPU580和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器578中的每一个可以包括任意数量的GPU 584、CPU 580和/或PCIe交换机。例如,服务器578中的每一个可以包括八个、十六个、三十二个和/或更多GPU 584。
服务器578可以通过网络590并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器578可以通过网络590并且向车辆传输神经网络592、更新的神经网络592和/或地图信息594,包括关于交通和道路状况的信息。对地图信息594的更新可以包括对于HD地图522的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络592、更新的神经网络592和/或地图信息594可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器578和/或其他服务器)的经验产生。
服务器578可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在模拟中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。训练可以依照任何一个或更多个类别的机器学习技术来进行,包括但不限于诸如以下的类别:有监督训练,半监督训练,无监督训练,自学习,强化学习,联合学习,迁移学习,特征学习(包括主成分和聚类分析),多线性子空间学习,流形学习,表示学习(包括备用字典学习),基于规则的机器学习,异常检测,及其任何变体或组合。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络590传输至车辆),和/或机器学习模型可以由服务器578用来远程地监控车辆。
在一些示例中,服务器578可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器578可以包括由GPU 584供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,服务器578可以包括仅使用CPU供电的数据中心的深度学习基础设施。
服务器578的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆500中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆500的定期更新,例如图像序列和/或车辆500已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆500识别的对象相比较,如果结果不匹配并且该基础设施得出车辆500中的AI发生故障的结论,那么服务器578可以向车辆500传输信号,指示车辆500的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
为了推理,服务器578可以包括GPU 584和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT 3)。GPU供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。
示例计算设备
图6为适合用于实现本公开一些实施例的示例计算设备600的框图。计算设备600可以包括直接或间接耦合下列设备的互连系统602:存储器604,一个或更多个中央处理单元(CPU)606,一个或更多个图形处理单元(GPU)608,通信接口610,输入/输出(I/O)端口612,输入/输出部件614,电源616,一个或更多个呈现部件618(例如显示器),以及一个或更多个逻辑单元620。在至少一个实施例中,计算设备600可以包括一个或更多个虚拟机(VM),和/或其部件中的任何一个可以包括虚拟部件(例如虚拟硬件部件)。对于非限制性示例而言,GPU 608中的一个或更多个可以包括一个或更多个vGPU,CPU 606中的一个或更多个可以包括一个或更多个vCPU,和/或逻辑单元620中的一个或更多个可以包括一个或更多个虚拟逻辑单元。这样,计算设备600可以包括分立部件(例如专用于计算设备600的完整GPU)、虚拟部件(例如专用于计算设备600的GPU的部分)或者其组合。
尽管图6的各个框被示为经由具有线路的互连系统602连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现部件618可以被认为是I/O部件614(例如如果显示器为触摸屏)。作为另一个示例,CPU 606和/或GPU608可以包括内存(例如,存储器604可以表示除了GPU 608、CPU 606和/或其他部件的内存以外的存储设备)。换言之,图6的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图6的计算设备的范围内。
互连系统602可以表示一条或更多条链路或总线,例如地址总线、数据总线、控制总线或者其组合。互连系统602可以包括一种或更多种总线或链路类型,例如行业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围部件互连(PCI)总线、外围部件互连快速(PCIe)总线,和/或另一种类型的总线或链路。在一些实施例中,部件之间存在直接的连接。例如,CPU 606可以直接连接到存储器604。进一步,CPU 606可以直接连接到GPU 608。在部件之间存在直接或者点对点连接的情况下,互连系统602可以包括实行该连接的PCIe链路。在这些示例中,PCI总线不必包括在计算设备600中。
存储器604可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备600访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器604可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或者其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备600访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
计算机存储介质可以在诸如载波之类的调制数据信号或其他传输机制中包含计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包含在计算机可读介质的范围内。
CPU 606可以被配置为执行计算机可读指令中的至少一些以便控制计算设备600的一个或更多个部件执行本文描述的方法和/或过程中的一个或更多个。CPU 606中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。CPU 606可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备600的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备600的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或者使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备600还可以包括一个或更多个CPU 606。
除了CPU 606之外或者可替代地,GPU 608可以被配置为执行计算机可读指令中的至少一些以便控制计算设备600的一个或更多个部件执行本文描述的方法和/或过程中的一个或更多个。GPU 608中的一个或更多个可以是集成式GPU(例如具有CPU 606中的一个或更多个)和/或GPU 608中的一个或更多个可以是分立式GPU。在实施例中,GPU 608中的一个或更多个可以是CPU 606中的一个或更多个的协处理器。GPU 608可以由计算设备600用来渲染图形(例如3D图形)或者执行通用计算。例如,GPU 608可以用于GPU上的通用计算(GPGPU)。GPU 608可以包括能够同时处理数百或数千个软件线程的数百或数千个核。GPU608可以响应于渲染命令(例如经由主机接口接收的来自CPU 606的渲染命令)而生成用于输出图像的像素数据。GPU 608可以包括诸如显示内存之类的用于存储像素数据或者诸如GPGPU数据之类的任何其他适当数据的图形内存。显示内存可以作为存储器604的部分而被包括。GPU 608可以包括(例如经由链路)并行操作的两个或更多GPU。该链路可以直接连接GPU(例如使用NVLINK),或者可以通过交换机连接GPU(例如使用NVSwitch)。当组合在一起时,每个GPU 608可以生成用于输出的不同部分或者用于不同输出的像素数据或GPGPU数据(例如,第一GPU用于第一图像,第二GPU用于第二图像)。每个GPU可以包括它自己的内存,或者可以与其他GPU共享内存。
除了CPU 606和/或GPU 608之外或者可替代地,逻辑单元620可以被配置为执行计算机可读指令中的至少一些以便控制计算设备600的一个或更多个部件执行本文描述的方法和/或过程中的一个或更多个。在实施例中,CPU 606、GPU 608和/或逻辑单元620可以分立地或者联合地执行所述方法、过程和/或其部分的任意组合。逻辑单元620中的一个或更多个可以是CPU 606和/或GPU 608中的一个或更多个的部分和/或集成在其中,和/或逻辑单元620中的一个或更多个可以是分立式部件或者以其他方式在CPU 606和/或GPU 608的外部。在实施例中,逻辑单元620中的一个或更多个可以CPU 6068中的一个或更多个和/或GPU 608中的一个或更多个的协处理器。
逻辑单元620的示例包括一个或更多个处理核和/或其部件,例如张量核(TC)、张量处理单元(TPU)、像素可视核(PVC)、向量处理单元(VPU)、图形处理簇(GPC)、纹理处理簇(TPC)、流式多处理器(SM)、树遍历单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、数据处理单元(DPU)、外围部件互连(PCI)或者外围部件互连快速(PCIe)元件和/或类似物。
通信接口610可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备600能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口610可以包括使能通过若干不同网络中的任何网络进行通信的部件和功能,所述网络例如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网或无限带宽通信)、低功率广域网(例如LoRaWAN、SigFox等等)和/或因特网。
I/O端口612可以使得计算设备600能够逻辑地耦合到包括I/O部件614、呈现部件618和/或其他部件在内的其他设备,其中一些可以内置到(例如集成到)计算设备600中。说明性I/O部件614包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。I/O部件614可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(NUI)。在一些示例中,输入可以传输至适当的网络元件以便进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛追踪以及与计算设备600的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备600可以包括诸如立体相机系统之类的深度相机、红外相机系统、RGB相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备600可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备600用来渲染沉浸式增强现实或者虚拟现实。
电源616可以包括硬接线电源、电池电源或者其组合。电源616可以向计算设备600供电以使得计算设备600的部件能够操作。
呈现部件618可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或者其组合)、扬声器和/或其他呈现部件。呈现部件618可以接收来自其他部件(例如GPU 608、CPU 606等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
示例数据中心
图7示出了可以在本公开的至少一个实施例中使用的示例数据中心700。数据中心700可以包括数据中心基础设施层710、框架层720、软件层730和/或应用层740。
如图7所示,数据中心基础设施层710可以包括资源协调器712、分组的计算资源714和节点计算资源(“节点C.R.”)716(1)-716(N),其中“N”代表任何完整的正整数。在至少一个实施例中,节点C.R.716(1)-716(N)可以包括但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器或图形处理单元(GPU)等),内存设备(例如动态只读内存),存储设备(例如固态硬盘或磁盘驱动器),网络输入/输出(“NW I/O”)设备,网络交换机,虚拟机(“VM”),电源模块和/或冷却模块等。在一些实施例中,节点C.R.716(1)-716(N)中的一个或更多个节点C.R.可以对应于具有一个或更多个上述计算资源的服务器。此外,在一些实施例中,节点C.R.716(1)-716(N)可包括一个或更多个虚拟部件,诸如vGPU、vCPU等,和/或节点C.R.716(1)-716(N)的一个或更多个可对应于虚拟机(VM)。
在至少一个实施例中,分组的计算资源714可以包括容纳在一个或更多个机架内的节点C.R.716的单独分组(未示出),或者容纳在各个地理位置的数据中心内的许多机架(也未示出)。分组的计算资源714内的节点C.R.的单独分组可以包括可以被配置或分配为支持一个或更多个工作负载的分组的计算、网络、内存或存储资源。在至少一个实施例中,可以将包括CPU、GPU和/或其他处理器的几个节点C.R.716分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。一个或更多个机架还可以包括任何数量的电源模块、冷却模块和/或网络交换机,以任意组合。
资源协调器722可以配置或以其他方式控制一个或更多个节点C.R.716(1)-716(N)和/或分组的计算资源714。在至少一个实施例中,资源协调器722可以包括用于数据中心700的软件设计基础结构(“SDI”)管理实体。资源协调器722可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图7所示,框架层720可以包括作业调度器732、配置管理器734、资源管理器736和/或分布式文件系统738。框架层720可以包括支持软件层730的软件732和/或应用程序层740的一个或更多个应用程序742的框架。软件732或应用程序742可以分别包括基于Web的服务软件或应用程序,例如由Amazon Web Services,Google Cloud和Microsoft Azure提供的服务或应用程序。框架层720可以是但不限于一种免费和开放源软件网络应用框架,例如可以利用分布式文件系统738来进行大范围数据处理(例如“大数据”)的Apache SparkTM(以下称为“Spark”)。在至少一个实施例中,作业调度器732可以包括Spark驱动器,以促进对数据中心700的各个层所支持的工作负载进行调度。配置管理器734可以能够配置不同的层,例如软件层730和包括Spark和用于支持大规模数据处理的分布式文件系统738的框架层720。资源管理器736能够管理映射到或分配用于支持分布式文件系统738和作业调度器732的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层710上的分组的计算资源714。资源管理器736可以与资源协调器712协调以管理这些映射的或分配的计算资源。
在至少一个实施例中,包括在软件层730中的软件732可以包括由节点C.R.716(1)-716(N)的至少一部分,分组计算资源714和/或框架层720的分布式文件系统738使用的软件。一种或更多种类型的软件可以包括但不限于Internet网页搜索软件、电子邮件病毒扫描软件、数据库软件和流视频内容软件。
在至少一个实施例中,应用层740中包括的一个或更多个应用程序742可以包括由节点C.R.716(1)-716(N)的至少一部分、分组的计算资源714和/或框架层720的分布式文件系统738使用的一种或更多种类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序,认知计算和机器学习应用程序,包括训练或推理软件,机器学习框架软件(例如PyTorch、TensorFlow、Caffe等)和/或其他与一个或更多个实施例结合使用的机器学习应用程序。
在至少一个实施例中,配置管理器734、资源管理器736和资源协调器712中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自我修改动作。自我修改动作可以减轻数据中心700的数据中心操作员做出可能不好的配置决定并且可以避免数据中心的未充分利用和/或执行差的部分。
数据中心700可以包括工具、服务、软件或其他资源,以依照本文所述的一个或更多个实施例来训练一个或更多个机器学习模型或者使用一个或更多个机器学习模型来预测或推理信息。例如,可以通过使用上文关于数据中心700描述的软件和/或计算资源,依照神经网络架构通过计算权重参数来训练机器学习模型。在至少一个实施例中,通过使用通过诸如但不限于本文所述的一种或更多种训练技术计算出的权重参数,可以使用上面与关于数据中心700所描述的资源,使用对应于一个或更多个神经网络的经训练或部署的机器学习模型来推理或预测信息。
在至少一个实施例中,数据中心700可以使用CPU、专用集成电路(ASIC)、GPU、DPU、FPGA和/或其他硬件(或与其对应的虚拟计算资源)来使用上述资源来执行训练和/或推理。此外,上述的一个或更多个软件和/或硬件资源可以配置成一种服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
示例网络环境
适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(NAS)、其他后端设备、和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图6的一个或更多个计算设备600的一个或更多个实例上实现——例如,每个设备可以包括一个或更多个计算设备600的类似部件、特征和/或功能。此外,在实现后端设备(例如,服务器、NAS等)的情况下,后端设备可被包括作为数据中心700的一部分,数据中心700的示例在本文中关于图7更详细地描述。
网络环境的部件可以经由一个或更多个网络彼此通信,所述网络可以是有线的、无线的或两者。网络可以包括多个网络或多个网络中的一网络。例如,网络可包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络,诸如互联网和/或公共交换电话网(PSTN)和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或者甚至接入点(以及其他部件)之类的部件可以提供无线连接。
兼容网络环境可以包括一个或更多个对等网络环境(在这种情况下,服务器可以不包括在网络环境中)和一个或更多个客户端-服务器网络环境(在这种情况下,一个或更多个服务器可以包括在网络环境中)。在对等网络环境中,本文相对于服务器所描述的功能可在任何数量的客户端设备上实现。
在至少一个实施例中,网络环境可包括一个或更多个基于云的网络环境、分布式计算环境、其组合等。基于云的网络环境可包括框架层、工作调度器、资源管理器和在一个或更多个服务器上实现的分布式文件系统,所述服务器可包括一个或更多个核心网服务器和/或边缘服务器。框架层可包括支持软件层的软件和/或应用层的一个或更多个应用程序的框架。所述软件或应用程序可分别包括基于网络的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于web的服务软件或应用程序(例如,通过经由一个或更多个应用编程接口(API)访问服务软件和/或应用程序)。框架层可以是但不限于自由和开源软件web应用框架的类型,诸如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)。
基于云的网络环境可提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些不同功能中的任何功能可以分布在来自(例如,可以分布在州、地区、国家、全球等上的一个或更多个数据中心的)中央或核心服务器的多个位置上。如果与用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
一个或更多个客户端设备可以包括本文关于图6描述的一个或更多个示例计算设备600的部件、特征和功能中的至少一些部件、特征和功能。作为示例而非限制,客户端设备可被体现为个人计算机(PC),膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(PDA)、MP3播放器、虚拟现实耳机、全球定位系统(GPS)或装置,视频播放器、摄像机、监视设备或系统、车辆、船,飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、电器、消费电子设备、工作站、边缘设备、这些描绘的设备的任何组合,或任何其他合适的设备。
本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、部件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素A、元素B和/或元素C”可以包括仅仅元素A,仅仅元素B,仅仅元素C,元素A和元素B,元素A和元素C,元素B和元素C,或者元素A、B和C。此外,“元素A或元素B中的至少一个”可以包括元素A中的至少一个,元素B中的至少一个,或者元素A中的至少一个和元素B中的至少一个。进一步,“元素A和元素B中的至少一个”可以包括元素A中的至少一个,元素B中的至少一个,或者元素A中的至少一个和元素B中的至少一个。
这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本发明人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元素,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。
Claims (25)
1.一种方法,包括:
将第一数据应用于深度神经网络DNN和补丁神经网络PNN;
处理所述第一数据以计算第二数据,所述处理包括:
使用所述DNN的节点的第一子集并且至少部分地基于所述第一数据来计算第一输出;
使用所述DNN的所述节点的第二子集来处理所述第一输出;
使用所述PNN的节点的第一子集并且至少部分地基于所述第一数据来计算第二输出;
使用所述PNN的所述节点的第二子集来处理所述第一输出和所述第二输出;以及
至少部分地基于所述第二数据来执行一个或更多个操作。
2.根据权利要求1所述的方法,其中所述PNN中的包括所述PNN的所述节点的PNN层与所述DNN中的包括所述DNN的所述节点的DNN层是分立的。
3.根据权利要求1所述的方法,其中较大DNN的一层或更多层包括所述PNN的所述节点和所述DNN的所述节点。
4.根据权利要求1所述的方法,其中所述第二数据表示所述DNN的最终输出和所述PNN的最终输出。
5.根据权利要求4所述的方法,其中所述PNN的最终输出包括由所述DNN的所述最终输出表示的至少一个输出类型以及未由所述DNN的所述最终输出表示的至少一个输出类型。
6.根据权利要求4所述的方法,还包括:
至少部分地基于分析所述DNN的所述最终输出和所述PNN的所述最终输出来确定输出选择,
其中执行所述一个或更多个操作至少部分地基于所述输出选择。
7.根据权利要求6所述的方法,其中确定所述输出选择是使用门控神经网络GNN来执行的,所述门控神经网络GNN输出二进制决定,所述二进制决定指示是使用所述DNN的所述最终输出还是使用所述PNN的所述最终输出作为所述输出选择。
8.根据权利要求6所述的方法,其中:
所述分析包括分析与所述DNN的所述最终输出相关联的第一置信度值和与所述PNN的所述最终输出相关联的第二置信度值;以及
确定所述输出选择包括:至少部分地基于分析所述第一置信度值和所述第二置信度值来选择所述输出选择。
9.根据权利要求4所述的方法,还包括:至少部分地基于一个或更多个接收信号来确定使用所述DNN的所述最终输出或所述PNN的所述最终输出。
10.根据权利要求9所述的方法,其中所述一个或更多个接收信号对应于位置、天气条件、照明条件或一天中的时间。
11.根据权利要求1所述的方法,其中所述方法通过以下中的至少一个执行:
用于自主或半自主机器的控制系统;
用于自主或半自主机器的感知系统;
用于执行模拟操作的系统;
用于执行深度学习操作的系统;
使用边缘设备实现的系统;
使用机器人实现的系统;
结合一个或更多个虚拟机VM的系统;
至少部分地在数据中心中实现的系统;或
至少部分地使用云计算资源实现的系统。
12.根据权利要求1所述的方法,其中所述PNN的所述节点的第一参数被训练,而所述DNN的所述节点的第二参数被固定。
13.根据权利要求1所述的方法,其中与所述第二输出和所述DNN的所述节点中的一个或更多个节点之间的连接相关联的权重被固定为零。
14.一种系统,包括:
片上系统SoC,用于生成用于控制自主车辆的输出,所述SoC包括:
处理器,用于执行神经网络,所述神经网络包括:
第一层,其包括用于处理第一传感器数据以计算第一输出的第一组原始节点和用于处理所述第一数据以计算第二输出的第一组补丁节点;以及
在所述第一层之后的第二层,所述第二层包括用于处理所述第一输出以计算第三输出的第二组原始节点和用于处理所述第一输出和所述第二输出以计算第四输出的第二组补丁节点。
15.根据权利要求14所述的系统,其中所述第一组节点独立于所述第二组节点被训练,并且在所述第二组节点的训练期间,与所述第一组节点相关联的参数是固定的。
16.根据权利要求14所述的系统,其中一个或更多个零被添加到与所述第二组原始节点对应的矩阵,以匹配与所述第二组补丁节点对应的矩阵的维度,所述一个或更多个零对应于所述第一组补丁节点的所述第二输出和所述第二组原始节点的连接之间的权重。
17.根据权利要求14所述的系统,其中:
以所述第一组原始节点作为第一分立层并且以所述第一组补丁节点作为第二分立层来训练所述神经网络;以及
在训练之后,通过将与所述第一组补丁节点相关联的权重和与所述第一组原始节点相关联的权重连接来生成所述第一层。
18.根据权利要求14所述的系统,其中在训练期间,所述神经网络经历修剪操作以去除与所述神经网络的一层或更多层对应的一组或更多组补丁节点。
19.一种处理器,包括:
一个或更多个电路,用于:
将第一数据应用于深度神经网络DNN和补丁神经网络PNN;
处理所述第一数据以计算第二数据,所述处理包括:
使用所述DNN的节点的第一子集并且至少部分地基于所述第一数据来计算第一输出;
使用所述DNN的所述节点的第二子集来处理所述第一输出;
使用所述PNN的节点的第一子集并且至少部分地基于所述第一数据来计算第二输出;
使用所述PNN的所述节点的第二子集来处理所述第一输出和所述第二输出;以及
至少部分地基于所述第二数据来执行一个或更多个操作。
20.根据权利要求19所述的处理器,其中所述PNN的所述节点对应于与所述DNN的一层或更多层分立的所述PNN的一层或更多层。
21.根据权利要求19所述的处理器,其中除了所述DNN的所述节点之外,还包括所述PNN的所述节点用于生成组合层。
22.根据权利要求19所述的处理器,其中所述处理器被包括在以下的至少一个中:
用于自主或半自主机器的控制系统;
用于自主或半自主机器的感知系统;
用于执行模拟操作的系统;
用于执行深度学习操作的系统;
使用边缘设备实现的系统;
使用机器人实现的系统;
结合一个或更多个虚拟机VM的系统;
至少部分地在数据中心中实现的系统;或
至少部分地使用云计算资源实现的系统。
23.根据权利要求19所述的处理器,其中所述PNN的所述节点的第一参数被训练,而所述DNN的所述节点的第二参数被固定。
24.根据权利要求19所述的处理器,其中与所述PNN的所述节点的所述第二输出和所述DNN的所述节点之间的连接相关联的权重被固定为零。
25.根据权利要求19所述的处理器,其中至少部分地通过在阴影模式中执行所述PNN来对所述PNN进行验证。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/164,362 | 2021-02-01 | ||
US17/164,362 US20220244727A1 (en) | 2021-02-01 | 2021-02-01 | Patching deployed deep neural networks for autonomous machine applications |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114841336A true CN114841336A (zh) | 2022-08-02 |
Family
ID=82402832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210102357.5A Pending CN114841336A (zh) | 2021-02-01 | 2022-01-27 | 修补用于自主机器应用的部署的深度神经网络 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220244727A1 (zh) |
JP (1) | JP2022117916A (zh) |
CN (1) | CN114841336A (zh) |
DE (1) | DE102022101775A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230070759A (ko) * | 2021-11-15 | 2023-05-23 | 한국전자통신연구원 | 자원 중심 네트워크의 메모리 주소 할당 방법 및 장치 |
EP4438430A1 (en) * | 2023-03-30 | 2024-10-02 | TomTom International B.V. | Method of controlling vehicle functions, vehicle processing system, vehicle, and machine-readable instruction code |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016201609A (ja) | 2015-04-08 | 2016-12-01 | 日本電気通信システム株式会社 | 加入者端末装置、通信サービス提供システム、通信制御方法、及び、通信制御プログラム |
JP6211030B2 (ja) | 2015-04-14 | 2017-10-11 | 三菱電機株式会社 | 電子制御装置および電子制御装置の製造方法 |
US9691019B1 (en) * | 2017-03-07 | 2017-06-27 | Google Inc. | Depth concatenation using a matrix computation unit |
US10410115B2 (en) * | 2017-04-28 | 2019-09-10 | Intel Corporation | Autonomous machines through cloud, error corrections, and predictions |
US11995539B2 (en) * | 2017-06-09 | 2024-05-28 | Samsung Electronics Co., Ltd. | Electronic apparatus and method for re-learning trained model |
US10997729B2 (en) * | 2018-11-30 | 2021-05-04 | Baidu Usa Llc | Real time object behavior prediction |
US10977501B2 (en) * | 2018-12-21 | 2021-04-13 | Waymo Llc | Object classification using extra-regional context |
US11875551B2 (en) * | 2020-06-09 | 2024-01-16 | Navbirswagen Aktiengesellschaft | Collecting and processing data from vehicles |
-
2021
- 2021-02-01 US US17/164,362 patent/US20220244727A1/en active Pending
- 2021-06-29 JP JP2021107164A patent/JP2022117916A/ja active Pending
-
2022
- 2022-01-26 DE DE102022101775.3A patent/DE102022101775A1/de active Pending
- 2022-01-27 CN CN202210102357.5A patent/CN114841336A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102022101775A1 (de) | 2022-08-04 |
JP2022117916A (ja) | 2022-08-12 |
US20220244727A1 (en) | 2022-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11841458B2 (en) | Domain restriction of neural networks through synthetic data pre-training | |
US11884294B2 (en) | Lane change planning and control in autonomous machine applications | |
CN113139642B (zh) | 在自主驾驶应用中使用神经网络执行故障检测 | |
CN114155272A (zh) | 自主机器应用中的自适应目标跟踪算法 | |
CN114631117A (zh) | 使用机器学习的用于自主机器应用的传感器融合 | |
CN114550736A (zh) | 用于自主驾驶应用的应急响应车辆检测 | |
US20230054759A1 (en) | Object tracking using lidar data for autonomous machine applications | |
CN112989914A (zh) | 具有自适应加权输入的注视确定机器学习系统 | |
US20220135075A1 (en) | Safety decomposition architecture for autonomous machine applications | |
US20230110713A1 (en) | Training configuration-agnostic machine learning models using synthetic data for autonomous machine applications | |
US20220297706A1 (en) | Combining rule-based and learned sensor fusion for autonomous systems and applications | |
US20240265712A1 (en) | Belief propagation for range image mapping in autonomous machine applications | |
WO2022251692A1 (en) | Training perception models using synthetic data for autonomous systems and applications | |
US20230110027A1 (en) | Visibility distance estimation using deep learning in autonomous machine applications | |
US11693470B2 (en) | Voltage monitoring over multiple frequency ranges for autonomous machine applications | |
US11840238B2 (en) | Multi-view geometry-based hazard detection for autonomous systems and applications | |
US20240320986A1 (en) | Assigning obstacles to lanes using neural networks for autonomous machine applications | |
US20220340149A1 (en) | End-to-end evaluation of perception systems for autonomous systems and applications | |
CN114841336A (zh) | 修补用于自主机器应用的部署的深度神经网络 | |
US20230142299A1 (en) | Particle-Based Hazard Detection for Autonomous Machine Applications | |
WO2024015632A1 (en) | Surround scene perception using multiple sensors for autonomous systems and applications | |
US20240104879A1 (en) | Multi-modal sensor calibration for in-cabin monitoring systems and applications | |
CN117581117A (zh) | 自主机器系统和应用中使用LiDAR数据的动态对象检测 | |
CN117725150A (zh) | 使用用于汽车系统和应用的知识库和语言模型的对话系统 | |
US20230391365A1 (en) | Techniques for generating simulations for autonomous machines and applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |