CN115855022A - 使用深度神经网络执行自主路径导航 - Google Patents
使用深度神经网络执行自主路径导航 Download PDFInfo
- Publication number
- CN115855022A CN115855022A CN202211513550.4A CN202211513550A CN115855022A CN 115855022 A CN115855022 A CN 115855022A CN 202211513550 A CN202211513550 A CN 202211513550A CN 115855022 A CN115855022 A CN 115855022A
- Authority
- CN
- China
- Prior art keywords
- vehicle
- path
- processor
- image data
- data
- 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 45
- 238000000034 method Methods 0.000 claims abstract description 37
- 230000015654 memory Effects 0.000 claims description 95
- 238000012545 processing Methods 0.000 claims description 52
- 238000004891 communication Methods 0.000 claims description 25
- 230000006870 function Effects 0.000 claims description 20
- 239000011159 matrix material Substances 0.000 claims description 15
- 238000012549 training Methods 0.000 claims description 14
- 238000003384 imaging method Methods 0.000 claims description 13
- 238000013135 deep learning Methods 0.000 claims description 12
- 238000013519 translation Methods 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 7
- 230000003068 static effect Effects 0.000 claims description 5
- 230000004807 localization Effects 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 2
- 230000008878 coupling Effects 0.000 claims 2
- 238000010168 coupling process Methods 0.000 claims 2
- 238000005859 coupling reaction Methods 0.000 claims 2
- 230000037361 pathway Effects 0.000 claims 2
- 238000001514 detection method Methods 0.000 description 23
- 238000005192 partition Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 11
- 239000012634 fragment Substances 0.000 description 10
- 230000014616 translation Effects 0.000 description 10
- 239000004065 semiconductor Substances 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 238000005259 measurement Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000033001 locomotion Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000012800 visualization Methods 0.000 description 5
- 241000714197 Avian myeloblastosis-associated virus Species 0.000 description 4
- 101150037717 Mavs gene Proteins 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 241001465754 Metazoa Species 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000007613 environmental effect Effects 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000013526 transfer learning Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241001061260 Emmelichthys struhsakeri Species 0.000 description 1
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 241000228740 Procrustes Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 201000010099 disease Diseases 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 238000009509 drug development Methods 0.000 description 1
- 238000007876 drug discovery Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000008014 freezing Effects 0.000 description 1
- 238000007710 freezing Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000003331 infrared imaging Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000013067 intermediate product Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000329 molecular dynamics simulation Methods 0.000 description 1
- 238000012900 molecular simulation Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B62—LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
- B62D—MOTOR VEHICLES; TRAILERS
- B62D15/00—Steering not otherwise provided for
- B62D15/02—Steering position indicators ; Steering position determination; Steering aids
- B62D15/025—Active steering aids, e.g. helping the driver by actively influencing the steering system after environment evaluation
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/005—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 with correlation of navigation data from several sources, e.g. map or contour matching
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B62—LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
- B62D—MOTOR VEHICLES; TRAILERS
- B62D6/00—Arrangements for automatically controlling steering depending on driving conditions sensed and responded to, e.g. control circuits
- B62D6/001—Arrangements for automatically controlling steering depending on driving conditions sensed and responded to, e.g. control circuits the torque NOT being among the input parameters
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/26—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
- G01C21/34—Route searching; Route guidance
- G01C21/36—Input/output arrangements for on-board computers
- G01C21/3602—Input other than that of destination using image analysis, e.g. detection of road signs, lanes, buildings, real preceding vehicles using a camera
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
- G05D1/0088—Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0212—Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
- G05D1/0221—Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory involving a learning process
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0231—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
- G05D1/0238—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors
- G05D1/024—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors in combination with a laser
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0231—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
- G05D1/0242—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using non-visible light signals, e.g. IR or UV signals
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0231—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
- G05D1/0246—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0255—Control of position or course in two dimensions specially adapted to land vehicles using acoustic signals, e.g. ultra-sonic singals
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0257—Control of position or course in two dimensions specially adapted to land vehicles using a radar
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0268—Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
- G05D1/10—Simultaneous control of position or course in three dimensions
- G05D1/101—Simultaneous control of position or course in three dimensions specially adapted for aircraft
- G05D1/102—Simultaneous control of position or course in three dimensions specially adapted for aircraft specially adapted for vertical take-off of aircraft
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24133—Distances to prototypes
- G06F18/24137—Distances to cluster centroïds
- G06F18/2414—Smoothing the distance, e.g. radial basis function networks [RBFN]
-
- 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
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/56—Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/56—Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
- G06V20/588—Recognition of the road, e.g. of lane markings; Recognition of the vehicle driving pattern in relation to the road
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S17/00—Systems using the reflection or reradiation of electromagnetic waves other than radio waves, e.g. lidar systems
- G01S17/88—Lidar systems specially adapted for specific applications
- G01S17/93—Lidar systems specially adapted for specific applications for anti-collision purposes
- G01S17/931—Lidar systems specially adapted for specific applications for anti-collision purposes of land vehicles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/56—Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
- G06V20/58—Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
Abstract
本申请使用深度神经网络执行自主路径导航。公开了一种使用深度神经网络执行自主路径导航的方法、计算机可读介质和系统。所述方法包括以下步骤:在深度神经网络(DNN)处接收图像数据;利用所述图像数据由所述DNN确定运载工具相对于所述路径的方位和所述运载工具相对于所述路径的横向位置两者;以及利用所述运载工具相对于所述路径的方位和所述运载工具相对于所述路径的横向位置来控制所述运载工具的位置。
Description
分案申请信息
本发明专利申请是申请日为2018年4月4日、申请号为201810301071.3、发明名称为“使用深度神经网络执行自主路径导航”的发明专利申请案的分案申请。
要求优先权
本申请要求于2017年4月7日提交的标题为“使用深度神经网络的低飞行自主无人机追踪导航(Low-Flying Autonomous Drone Trail Navigation using DeepNeuralNetworks)”的美国临时申请No.62/483,155(代理人卷号NVIDP1162+/17KI0048US01)的权益,其全部内容通过引用并入本文。
技术领域
本发明涉及自主运载工具(autonomous vehicle)导航,并且更具体地涉及使用深度神经网络分析图像数据以便产生运载工具导航信息。
背景技术
自主控制是用于在运载工具中实现的理想特征。然而,当前的控制实现方式通常不准确且效率低下,并且没有察觉到运载工具周围的环境。
因此,具有解决这些问题和/或与现有技术相关联的其他问题的需求。
发明内容
公开了一种用于使用深度神经网络执行自主路径导航的方法、计算机可读介质和系统。该方法包括以下步骤:在深度神经网络(DNN)处接收图像数据;利用图像数据由DNN确定运载工具相对于路径的方位(orientation)和运载工具相对于路径的横向位置两者;以及利用运载工具相对于路径的方位和运载工具相对于路径的横向位置控制运载工具的位置。
附图说明
图1示出了根据一个实施例的用于使用深度神经网络执行自主路径导航的方法的流程图;
图2示出了根据一个实施例的并行处理单元。
图3示出了根据一个实施例的图2的并行处理单元内的通用处理集群。
图4示出了根据一个实施例的图2的并行处理单元的存储器分区单元。
图5示出了根据一个实施例的图3的流多处理器。
图6是根据一个实施例的使用图2的PPU实现的处理系统的概念图。
图7示出了示例性系统,其中可以实现各种先前实施例的各种体系架构和/或功能。
图8示出了根据一个实施例的用于使用深度神经网络执行自主路径导航的示例性系统;
图9示出了根据一个实施例的示例性软件体系架构;以及
图10示出了根据一个实施例的实现深度神经网络(DNN)的示例性TrailNet DNN节点。
具体实施方式
图1示出了根据一个实施例的用于使用深度神经网络执行自主路径导航的方法100的流程图。如操作102所示,在深度神经网络(DNN)处接收图像数据。在一个实施例中,图像数据可以包括图片图像(pictorial image)。在另一个实施例中,图像数据可以包括多个图片图像。在又一个实施例中,图像数据可以从视频数据(例如,流化视频等)导出。
另外,在一个实施例中,图像数据可以包括光数据、红外数据、光探测和测距(LIDAR)数据、雷达数据、深度数据、声呐数据等。在另一个实施例中,图像数据可以包括从多个成像设备接收的立体图像数据。在又一个实施例中,可以从一个或更多个成像设备接收图像数据。例如,可以从数字成像相机、雷达设备、LIDAR设备、红外成像设备、声呐成像设备等接收图像数据。
此外,在一个实施例中,可以从一个或更多个成像设备实时接收图像数据。在另一个实施例中,可以利用中间件(例如机器人操作系统(ROS)等)从一个或更多个硬件成像设备接收图像数据。在又一个实施例中,可以在包括一个或更多个成像设备的运载工具处接收图像数据。例如,运载工具可以包括任何受控移动对象,诸如汽车、飞机、水陆两用车(例如船、水上飞机等)、无人机、微型飞行器(MAV)、漫游车等。在另一个示例中,中间件可以在安装在运载工具内的硬件上运行。在又一个示例中,一个或更多个相机可以安装在运载工具内。
此外,在一个实施例中,图像数据可以指示运载工具在路径上的当前位置。例如,一个或更多个成像设备可以安装在运载工具上,使得由一个或更多个成像设备创建的图像数据指示运载工具在路径上的当前位置。在另一个实施例中,DNN可以包括受监督的分类网络。
例如,图像数据可以包括用关联位置正确标记的监督数据。在另一个示例中,DNN可以用具有关联正确标签的图像数据来训练。在另一个实施例中,DNN可以实现损失函数。例如,DNN可以确定图像数据的标签,将该标签与图像数据的关联正确标签进行比较,并且可以计算标签之间的差。在另一个示例中,可以基于标签之间的差使用反向传播来调整DNN。
以这种方式,DNN也许更有可能在后续迭代期间正确地标记图像数据。
以及,如操作104所示,DNN利用图像数据确定运载工具相对于路径的方位和运载工具相对于路径的横向位置两者。在一个实施例中,路径可以包括可以在图像数据内可视地识别的任何路线。在另一个实施例中,路径可以包括轨迹、一个或更多个轨道(例如火车轨道、轮胎压痕等)、一个或更多个电力线路、街道、涵洞(例如下水道涵洞等)、城市峡谷等。
另外,在一个实施例中,运载工具可以包括运载工具运行中间件和一个或更多个成像设备。在另一个实施例中,运载工具当前可以处于运动中(例如沿着路径等)。在又一个实施例中,相对于路径的方位可以包括多种可能性。例如,相对于路径的方位可以包括运载工具相对于路径当前朝左的可能性、运载工具相对于路径当前朝右的可能性以及运载工具相对于路径当前朝直线的可能性。在另一个示例中,多种可能性中的每一种可以用数字表示,导致由DNN输出的三个数字指示相对于路径的方位。
此外,在一个实施例中,相对于路径的横向位置可以包括多种可能性。在另一个实施例中,相对于路径的横向位置可以识别相对于路径中心的多个横向偏移的可能性。例如,相对于路径的横向位置可以包括运载工具相对于路径当前左移的可能性、运载工具相对于路径当前右移的可能性以及运载工具相对于路径居中的可能性。在另一个例子中,多种可能性中的每一种可以用数字表示,导致由DNN输出的三个数字,其指示相对于路径的横向位置。
此外,在一个实施例中,可以在运载工具内实时确定方位和横向位置。在另一个实施例中,可以将图像数据从运载工具发送到远程定位(例如,分布式计算环境),并且可以在远程定位处确定方位和横向位置。
以这种方式,旋转数据和平移数据两者都可以由DNN利用图像数据来确定。
以及,如操作106所示,利用运载工具相对于路径的方位和运载工具相对于路径的横向位置来控制运载工具的位置。在一个实施例中,运载工具相对于路径的方位和运载工具相对于路径的横向位置可以被转换成转向方向(steering direction)。例如,该转换可以由控制器模块执行。在另一个示例中,转向方向可以包括一个或更多个转向信号(例如,转向角等)。
另外,在一个实施例中,转向方向可以被转换成另一协议,以创建经转换的转向方向。例如,转向方向可以从中间件协议(例如,ROS协议等)被转换成运载工具控制协议。在另一个示例中,该转换可以由通信模块执行。
此外,在一个实施例中,经转换的转向方向可以被发送到运载工具系统模块,以控制运载工具的一个或更多个转向机构。例如,运载工具的一个或更多个转向机构可以控制运载工具正在移动的方向。在另一个示例中,经转换的转向方向可以利用通信协议被发送到运载工具系统模块。
此外,在一个实施例中,可以基于经转换的转向方向来调整一个或更多个转向机构。例如,可以通过运载工具系统模块来调整一个或更多个转向机构,以将运载工具横向移动到路径的中心。在另一个示例中,可以调整一个或更多个转向机构以移动运载工具,使得运载工具的方位相对于路径是直的。在另一个实施例中,运载工具位置控制可以在运载工具内实时执行。
以及,在一个实施例中,DNN可以通过利用具有降低的置信度的预测来控制方向稳定性。例如,DNN可实现具有降低的置信度的分类方案,以用于更流畅和稳定的运载工具方向控制。
另外,在一个实施例中,第二DNN可以在该路径内执行对象检测。例如,第二DNN可以被包括在运载工具内并且可以与运载工具内的其他模块通信(例如,经由中间件等)。在另一示例中,第二DNN可以接收图像数据,并且可以输出指示对象(例如,人、动物等)是否在图像数据中的对象数据。在又一示例中,可以将对象数据从第二DNN发送到控制器模块(例如,经由中间件等)。在又一示例中,控制器模块可以确定图像数据中的对象的大小是否是图像数据中的图像的大小的预定百分比。
此外,在一个示例中,响应于确定图像数据中的对象的大小等于或大于图像数据中的图像大小的预定百分比,控制器模块可以发送一个或更多个命令到运载工具系统(例如,以改变运载工具的行驶路线,停止运载工具的运行等)。这可以提供安全机制,其可以当预定大小的物体在路径上时可以停止运载工具。
此外,在一个实施例中,第三DNN可以执行与路径相关联的障碍物检测。例如,第三DNN可以被包括在运载工具内并且可以与运载工具内的其他模块通信(例如,经由中间件等)。在另一个示例中,第三DNN可以接收图像数据,并且可以输出障碍物数据,诸如指示在沿着该路径的各个位置和距离处的一个或更多个障碍物的可能性的一组权重。例如,第三DNN可以实现同时定位和映射(SLAM),以识别运载工具在由图像数据指示的场景内的位置并且提供关于场景内的静态对象的相对位置的信息。
以及,在一个示例中,障碍物数据可以从第三DNN发送到控制器模块(例如,经由中间件等)。在另一个示例中,控制器模块可以利用障碍物数据来调整运载工具的位置。这可以帮助运载工具避开路径旁边的静态障碍物。
以这种方式,可以利用从图像数据的DNN分析导出的转向方向来自主控制运载工具。此外,DNN可以执行运载工具方位(3类)和相对于路径的横向位置(3类以上)的估算,共计6类。此外,可以在具体的DNN训练期间实现损失函数。更进一步,可以在DNN内执行降低置信度的实现方式。此外,对象检测和障碍物检测可以在自主导航期间经由附加的DNN执行。另外,这些特征可以利用机载实时处理来实现。
并行处理体系架构
图2示出了根据一个实施例的并行处理单元(PPU)300。在一个实施例中,PPU 300是在一个或更多个集成电路设备上实现的多线程处理器。PPU 300是设计为并行处理许多线程的延迟隐藏体系架构。线程(即,执行线程)是被配置为由PPU 300执行的指令集的实例。在一个实施例中,PPU 300是图形处理单元(GPU),其被配置为实现用于处理三维(3D)图形数据的图形渲染管线,以便生成二维(2D)图像数据,用于在显示设备(诸如液晶显示器(LCD)设备)上显示。在其他实施例中,PPU 300可以用于执行通用计算。尽管本文为了说明的目的提供了一个示例性并行处理器,但应特别注意,此类处理器仅出于说明性目的而阐述,并且可采用任何处理器来补充和/或替代此类处理器。
一个或更多个PPU 300可以被配置为加速数以千计的高性能计算(HPC)、数据中心和机器学习应用。PPU 300可被配置为加速众多深度学习系统和应用,包括无人运载工具平台、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物发现、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、财务建模、机器人技术、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐等。
如图2所示,PPU 300包括输入/输出(I/O)单元305、前端单元315、调度器单元320、工作分配单元325、集线器330、交叉开关(Xbar)370、一个或更多个通用处理群集(GPC)350以及一个或更多个分区单元380。PPU 300可以经由一个或更多个高速NVLink 310互连连接到主机处理器或其他PPU 300。PPU 300可以经由互连302连接到主机处理器或其他外围设备。PPU 300还可以连接到包括多个存储器设备304的本地存储器。在一个实施例中,本地存储器可以包括多个动态随机存取存储(DRAM)器件。DRAM器件可以被配置为高带宽存储器(HBM)子系统,其中每个器件内堆叠多个DRAM裸晶。
NVLink 310互连使得系统能够扩展并且包括与一个或更多个CPU组合的一个或更多个PPU 300,支持PPU 300和CPU之间的高速缓存一致性以及CPU主控。数据和/或命令可以由NVLink 310通过集线器330传送到/自PPU 300的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电力管理单元等(未明确地示出)。结合图5更详细地描述了NVLink310。
I/O单元305被配置为通过互连302从主机处理器(未示出)发送和接收通信(即,命令、数据等)。I/O单元305可以经由互连302或者通过一个或更多个中间设备(诸如存储器桥)与主机处理器直接通信。在一个实施例中,I/O单元305可以经由互连302与一个或更多个其他处理器(诸如一个或更多个PPU 300)进行通信。在一个实施例中,I/O单元305实现用于通过PCIe总线进行通信的高速外围组件互连(PCIe)接口,并且互连302是PCIe总线。在替代实施例中,I/O单元305可以实现用于与外部设备进行通信的其他类型的公知接口。
I/O单元305解码经由互连302接收到的数据包(packet)。在一个实施例中,数据包表示被配置成使PPU 300执行各种操作的命令。I/O单元305将解码后的命令发送到按照命令可指定的PPU 300的各种其他单元。例如,一些命令可以被发送到前端单元315。其他命令可以被发送到集线器330或PPU 300的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,I/O单元305被配置为在PPU 300的各种逻辑单元之间路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲器中对命令流进行编码,所述缓冲器向PPU 300提供工作负载用于处理。工作负载可包含要由那些指令处理的若干指令和数据。缓冲器是存储器中可由主机处理器和PPU 300两者访问(即,读/写)的区域。例如,主机接口单元310可被配置为访问系统存储器中经由存储器请求连接到互连302的缓冲器,所述存储器请求由I/O单元305通过互连302传送。在一个实施例中,主机处理器将命令流写入缓冲器,然后将指向该命令流起点的指针发送到PPU 300。前端单元315接收指向一个或更多个命令流的指针。前端单元315管理一个或更多个流,从流中读取命令并将命令转发到PPU 300的各个单元。
前端单元315耦合到调度器单元320,调度器单元320将各种GPC 350配置为处理由一个或更多个流定义的任务。调度器单元320被配置为跟踪与由调度器单元320管理的各种任务相关的状态信息。状态可以指示任务被分配给哪个GPC 350,该任务是活动的还是不活动的,与该任务相关联的优先级等等。调度器单元320管理多个任务在一个或更多个GPC350上的执行。
调度器单元320耦合到工作分配单元325,该工作分配单元325被配置为调度任务以在GPC 350上执行。工作分配单元325可以跟踪从调度器单元320接收到的多个调度任务。在一个实施例中,工作分配单元325管理每个GPC 350的挂起任务池和活动任务池。挂起任务池可以包括多个时隙(例如,32个时隙),其包含被指派为由特定GPC 350处理的任务。活动任务池可以包括用于由GPC 350主动处理的任务的多个时隙(例如,4个时隙)。当GPC 350完成任务的执行时,将该任务从GPC 350的活动任务池中被逐出并且来自挂起任务池中的其他任务之一被选择并被调度以在GPC 350上执行。如果GPC 350上的活动任务已经空闲,诸如在等待数据依赖关系被解决的时候,则该活动任务可以从GPC 350中被逐出并返回到挂起任务池,同时挂起任务池中的另一个任务被选中并被调度以在GPC350上执行。
工作分配单元325经由XBar 370与一个或更多个GPC 350通信。XBar370是将PPU300的许多单元耦合到PPU 300的其他单元的互连网络。例如,XBar 370可被配置为将工作分配单元325耦合到特定的GPC 350。虽然未明确示出,但PPU 300的一个或更多个其他单元也可经由集线器330连接到XBar 370。
任务由调度器单元320管理并由工作分配单元325分派给GPC 350。GPC 350被配置为处理任务并生成结果。该结果可以由GPC 350内的其他任务消耗,经由XBar 370路由到不同的GPC 350,或者存储在存储器304中。结果可以经由分区单元380写入存储器304,分区单元380实现了用于向/从存储器304读取和写入数据的存储器接口。结果可以经由NVLink310传送到另一个PPU 304或CPU。在一个实施例中,PPU 300包括数量为U的分区单元380,其等于耦合到PPU 300的分离且不同的存储器设备304的数量。下面将结合图4更详细地描述分区单元380。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱动程序内核,其使得在主机处理器上执行的一个或更多个应用程序能够调度操作用于在PPU 300上执行。在一个实施例中,多个计算应用程序由PPU 300同时执行,并且PPU 300为多个计算应用程序提供隔离、服务质量(QoS)和独立地址空间。应用程序可以生成指令(即,API调用),其使得驱动程序内核生成一个或更多个任务用于由PPU 300执行。驱动程序内核将任务输出到正在由PPU 300处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文中称为线程束(warp)。在一个实施例中,线程束包括32个可以并行执行的相关线程。协作线程可以指包括用于执行任务并且可以通过共享存储器交换数据的指令的多个线程。结合图5更详细地描述了线程和协作线程。
图3示出了根据一个实施例的图2的PPU 300的GPC 350。如图3所示,每个GPC 350包括用于处理任务的多个硬件单元。在一个实施例中,每个GPC 350包括管线管理器410、预光栅操作单元(PROP)415、光栅引擎425、工作分配交叉开关(WDX)480、存储器管理单元(MMU)490以及一个或更多个数据处理集群(DPC)420。将理解的是,图3的GPC 350可以包括代替图3中所示的单元或除图3中所示的单元之外的其他硬件单元。
在一个实施例中,GPC 350的操作由管线管理器410控制。管线管理器410管理用于处理分配给GPC 350的任务的一个或更多个DPC 420的配置。在一个实施例中,管管理器410可以将一个或更多个DPC 420中的至少一个配置为实现图形渲染管线的至少一部分。例如,DPC 420可配置为在可编程流多处理器(SM)440上执行顶点着色器程序。管线管理器410还可配置为将从工作分配单元325接收的数据包路由到GPC 350内的适当逻辑单元。例如,一些数据包可以被路由到PROP415和/或光栅引擎425中的固定功能硬件单元,而其他数据包可以被路由到DPC 420以供图元引擎435或SM 440处理。在一个实施例中,管线管理器410可以将一个或更多个DPC 420中的至少一个配置为实现神经网络模型和/或计算管线。
PROP单元415被配置为将由光栅引擎425和DPC 420生成的数据路由到分区单元380中的结合图4更详细地描述的光栅操作(ROP)单元。PROP单元415还可以被配置为对颜色混合、组织像素数据、执行地址转换等执行优化。
光栅引擎425包括被配置为执行各种光栅操作的多个固定功能硬件单元。在一个实施例中,光栅引擎425包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、精细光栅引擎和瓦片合并(tile coalescing)引擎。设置引擎接收经变换的顶点并生成与由顶点定义的几何图元相关联的平面方程。平面方程被传送到粗光栅引擎以生成图元的覆盖信息(例如,用于瓦片的x、y覆盖掩模)。粗光栅引擎的输出被传送到剔除引擎,其中与未通过z-测试的图元相关联的片段被剔除,并被传送到裁剪引擎,其中位于视锥体之外的片段被裁剪掉。那些经过裁剪和剔除后留下来的片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程生成像素片段的属性。光栅引擎425的输出包括待处理的片段,例如由片段着色器在DPC 420内实现。
包括在GPC 350中的每个DPC 420包括M管道控制器(MPC)430、图元引擎435和一个或更多个SM 440。MPC 430控制DPC 420的操作,将从管线管理器410接收的数据包路由到DPC 420中的适当单元。例如,与顶点相关联的数据包可以被路由到图元引擎435,图元引擎435被配置为从存储器304获取与顶点相关联的顶点属性。相反,与着色器程序相关联的数据包可以被传送到SM 440。
SM 440包括被配置为处理由多个线程表示的任务的可编程流处理器。每个SM 440是多线程的并且被配置为同时执行来自特定线程组的多个线程(例如,32个线程)。在一个实施例中,SM 440实现SIMD(单指令、多数据)体系架构,其中线程组(即,线程束)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,SM 440实现SIMT(单指令、多线程)体系架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。在一个实施例中,维护每个线程束的程序计数器、调用栈和执行状态,当线程束内的线程发散时,使能线程束和线程束内的串行执行之间的并发性。在另一个实施例中,维护每个个体线程的程序计数器、调用栈和执行状态,使能所有线程之间、线程束内以及线程束之间的同样的并发性。当维护每个个体线程的执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。以下将结合图5更详细地描述SM 440。
MMU 490提供GPC 350和分区单元380之间的接口。MMU 490可以提供虚拟地址到物理地址的转换、存储器保护以及存储器请求的仲裁。在一个实施例中,MMU 490提供用于执行从虚拟地址到存储器304中的物理地址的转换的一个或更多个转换后备缓冲器(TLB)。
图4示出了根据一个实施例的图2的PPU 300的存储器分区单元380。如图4所示,存储器分区单元380包括光栅操作(ROP)单元450、二级(L2)高速缓存460和存储器接口470。存储器接口470耦合到存储器304。存储器接口470可以实现用于高速数据传输的32、64、128、1024位数据总线等。在一个实施例中,PPU 300合并了U个存储器接口470,每对分区单元380有一个存储器接口470,其中每对分区单元380连接到对应的存储器设备304。例如,PPU 300可以连接到多达Y个存储器设备304,诸如高带宽存储器堆叠或图形双数据速率版本5的同步动态随机存取存储器(GDDR5 SDRAM)。
在一个实施例中,存储器接口470实现HBM2存储器接口,并且Y等于U的一半。在一个实施例中,HBM2存储器堆叠位于与PPU 300相同的物理封装上,提供与常规GDDR5 SDRAM系统相比显著的功率高和面积节约。在一个实施例中,每个HBM2堆叠包括四个存储器裸晶并且Y等于4,其中HBM2堆叠包括每个裸晶两个128位通道,总共8个通道和1024位的数据总线宽度。
在一个实施例中,存储器304支持单错校正双错检测(SECDED)纠错码(ECC)以保护数据。对于对数据腐烂敏感的计算应用程序,ECC提供了更高的可靠性。在大型集群计算环境中,可靠性尤其重要,其中PPU 300处理非常大的数据集和/或长时间运行应用程序。
在一个实施例中,PPU 300实现多级存储器分层结构。在一个实施例中,存储器分区单元380支持统一存储器以为CPU和PPU 300存储器提供单个统一的虚拟地址空间,使能虚拟存储器系统之间的数据共享。在一个实施例中,由PPU 300访问位于其他处理器上的存储器的频率被跟踪,以确保存储器页面被移动到更频繁地访问页面的PPU 300的物理存储器。在一个实施例中,NVLink 310支持地址转换服务,其允许PPU 300直接访问CPU的页表并且提供由PPU 300对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个PPU 300之间或在PPU 300与CPU之间传输数据。复制引擎可以为未映射到页表的地址生成页面错误。然后,存储器分区单元380可以服务页面错误,将地址映射到页表中,之后复制引擎可以执行传输。在常规系统中,针对多个处理器之间的多个复制引擎操作固定存储器(即,不可分页),其显著减少了可用存储器。由于硬件页面错误,地址可以传递到复制引擎而不用担心存储器页面是否驻留,复制过程是否透明。
来自存储器304或其他系统存储器的数据可以由存储器分区单元380取回并存储在L2高速缓存460中,其位于芯片上并且在各个GPC 350之间共享。如图所示,每个存储器分区单元380包括与对应的存储器设备304相关联的L2高速缓存460的一部分。然后可以在GPC350内的多个单元中实现较低级高速缓存。例如,每个SM 440可以实现一级(L1)高速缓存。L1高速缓存是专用于特定SM 440的专用存储器。来自L2高速缓存460的数据可以被获取并存储在每个L1高速缓存中,以在SM 440的功能单元中进行处理。L2高速缓存460被耦合到存储器接口470和XBar 370。
ROP单元450执行与像素颜色相关的图形光栅操作,诸如颜色压缩、像素混合等。ROP单元450还与光栅引擎425一起实现深度测试,从光栅引擎425的剔除引擎接收与像素片段相关联的采样位置的深度。测试与片段关联的样本位置相对于深度缓冲器中的对应深度的深度。如果片段通过样本位置的深度测试,则ROP单元450更新深度缓冲器并将深度测试的结果发送给光栅引擎425。将理解的是,分区单元380的数量可以不同于GPC350的数量,并且因此每个ROP单元450可以耦合到每个GPC 350。ROP单元450跟踪从不同GPC 350接收到的数据包并且确定由ROP单元450生成的结果通过Xbar 370被路由到哪个GPC 350。
图5示出了根据一个实施例的图3的流多处理器440。如图5所示,SM 440包括指令高速缓存505、一个或更多个调度器单元511、寄存器文件520、一个或更多个处理核心550、一个或更多个特殊功能单元(SFU)552、一个或更多个加载/存储单元(LSU)554、互连网络580、共享存储器/L1高速缓存570。
如上所述,工作分配单元325调度要在PPU 300的GPC 350上执行的任务。任务被分配给GPC 350内的特定DPC 420,并且如果任务与着色器程序相关联,则该任务可以被分配给SM 440。调度器单元511接收来自工作分配单元325的任务并且管理指派给SM 440的一个或更多个线程块的指令调度。调度器单元511调度线程块以执行为并行线程的线程束,其中每个线程块被分配至少一个线程束。在一个实施例中,每个线程束执行32个线程。调度器单元511可以管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期期间将来自多个不同的协作组的指令分派到各个功能单元(即,核心550、SFU 552和LSU554)。
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协作启动API支持线程块之间的同步性,以执行并行算法。常规的编程模型为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏(barrier)(即,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group-wide function interface)的形式使能更高的性能、设计灵活性和软件重用。
协作组使得程序员能够在子块(即,像单个线程一样小)和多块粒度处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。编程模型支持跨软件边界的干净组合,以便库和效用函数可以在本地环境中安全地同步,而无需对收敛进行假设。协作组图元启用合作伙伴并行的新模式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
调度单元515被配置为向一个或更多个功能单元传送指令。在该实施例中,调度器单元511包括两个分派单元515,其使得能够在每个时钟周期期间调度来自相同线程束的两个不同指令。在替代实施例中,每个调度器单元511可以包括单个分派单元515或附加分派单元515。
每个SM 440包括寄存器文件520,其提供用于SM 440的功能单元的一组寄存器。在一个实施例中,寄存器文件520在每个功能单元之间被划分,使得每个功能单元被分配寄存器文件520的专用部分。在另一个实施例中,寄存器文件520在由SM 440执行的不同线程束之间被划分。寄存器文件520为连接到功能单元的数据路径的操作数提供临时存储。
每个SM 440包括L个处理核心550。在一个实施例中,SM 440包括大量(例如128个等)不同的处理核心550。每个核心550可以包括完全管线化的、单精度、双精度和/或混合精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE 754-2008标准。在一个实施例中,核心550包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心(tensorcore)。
张量核心被配置为执行矩阵运算,并且在一个实施例中,一个或更多个张量核心被包括在核心550中。具体地,张量核心被配置为执行深度学习矩阵运算,诸如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核心在4×4矩阵上运算并且执行矩阵乘法和累加运算D=A×B+C,其中A、B、C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,而累加矩阵C和D可以是16位浮点或32位浮点矩阵。张量核心在16位浮点输入数据以及32位浮点累加上运算。16位浮点乘法需要64次运算,产生全精度的积,然后使用32位浮点与4×4×4矩阵乘法的其他中间积相加来累加。在实践中,张量核心用于执行由这些较小的元素建立的更大的二维或更高维的矩阵运算。API(诸如CUDA 9C++API)公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储运算,以便有效地使用来自CUDA-C++程序的张量核心。在CUDA层面,线程束级界面假定16×16尺寸矩阵跨越线程束的全部32个线程。
每个SM 440还包括执行特殊函数(例如,属性评估、倒数平方根等)的M个SFU 552。在一个实施例中,SFU 552可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,SFU 552可以包括被配置为执行纹理贴图滤波操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器304加载纹理贴图(例如,纹理像素的2D阵列)并且对纹理贴图进行采样以产生由SM 440执行的着色器程序中使用的采样纹理值。在一个实施例中,纹理贴图被存储在共享存储器/L1高速缓存470中。纹理单元实现纹理操作,诸如使用mip贴图(即,不同细节层次的纹理贴图)的滤波操作。在一个实施例中,每个SM 340包括两个纹理单元。
每个SM 440还包括N个LSU 554,其实现共享存储器/L1高速缓存570和寄存器文件520之间的加载和存储操作。每个SM 440包括将每个功能单元连接到寄存器文件520以及将LSU 554连接到寄存器文件520、共享存储器/L1高速缓存570的互连网络580。在一个实施例中,互连网络580是交叉开关,其可以配置为将任何功能单元连接到寄存器文件520中的任何寄存器,以及将LSU 554连接到共享存储器/L1高速缓存570中的寄存器文件和存储器位置。
共享存储器/L1高速缓存570是片上存储器阵列,其允许数据存储和SM 440与图元引擎435之间以及SM 440中的线程之间的通信。在一个实施例中,共享存储器/L1高速缓存570包括128KB的存储容量并且在从SM440到分区单元380的路径中。共享存储器/L1高速缓存570可以用于高速缓存读取和写入。共享存储器/L1高速缓存570、L2高速缓存460和存储器304中的一个或更多个是后备存储。
将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供最佳的总体性能。该容量可由程序用作不使用共享存储器的高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。在共享存储器/L1高速缓存570内的集成使共享存储器/L1高速缓存570起到用于流式传输数据的高吞吐量管道的作用,并且同时提供对频繁重用数据的高带宽和低延迟的访问。
当被配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。具体地,图2所示的固定功能图形处理单元被绕过,创建了更简单的编程模型。在通用并行计算配置中,工作分配单元325将线程块直接指派并分配给DPC 420。块中的线程执行相同的程序,使用计算中的唯一线程ID来确保每个线程生成唯一结果,使用SM 440执行程序并执行计算,使用共享存储器/L1高速缓存570以在线程之间通信,以及使用LSU 554通过共享存储器/L1高速缓存570和存储器分区单元380读取和写入全局存储器。当被配置用于通用并行计算时,SM 440还可以写入调度器单元320可用来在DPC 420上启动新工作的命令。
PPU 300可以被包括在台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数码相机、运载工具、头戴式显示器、手持式电子设备等中。在一个实施例中,PPU 300包含在单个半导体衬底上。在另一个实施例中,PPU 300与一个或更多个其他器件(诸如附加PPU 300、存储器204、精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数字-模拟转换器(DAC)等)一起被包括在片上系统(SoC)上。
在一个实施例中,PPU 300可以被包括在图形卡上,其包括一个或更多个存储器设备304。图形卡可以被配置为与台式计算机的主板上的PCIe插槽接口。在又一个实施例中,PPU 300可以是包含在主板的芯片集中的集成图形处理单元(iGPU)或并行处理器。
示例性计算系统
具有多个GPU和CPU的系统被用于各种行业,因为开发者在应用(诸如人工智能计算)中公开和利用更多的并行性。在数据中心、研究机构和超级计算机中部署具有数十至数千个计算节点的高性能GPU加速系统,以解决更大的问题。随着高性能系统内处理设备数量的增加,通信和数据传输机制需要扩展以支持该增加。
图6是根据一个实施例的使用图2的PPU 300实现的处理系统500的概念图。示例性系统565可以被配置为实现图1中所示的方法100。处理系统500包括CPU 530、交换机510和多个PPU 300中的每一个以及各自的存储器304。NVLink 310提供每个PPU 300之间的高速通信链路。交换机510连接在互连302和CPU 530之间。PPU 300、存储器304和NVLink 310可以位于单个半导体平台上以形成并行处理模块525。
在本说明书的上下文中,单个半导体平台可以指在裸晶或芯片上制造的唯一的单一的基于半导体的集成电路。应该注意的是,术语单个半导体平台也可以指具有增加的连接的多芯片模块,其模拟片上操作并通过利用常规总线实现方式进行实质性改进。当然,根据用户的需要,各种电路或器件还可以分开放置或以半导体平台的各种组合来放置。可选地,并行处理模块525可以被实现为电路板衬底,并且PPU 300和/或存储器304中的每一个可以是封装器件。在一个实施例中,CPU 530、交换机510和并行处理模块525位于单个半导体平台上。
在一个实施例中,每个NVLink 310的信令速率是20到25千兆位/秒,并且每个PPU300包括六个NVLink 310接口(如图6所示,每个PPU 300包括五个NVLink 310接口)。每个NVLink 310在每个方向上提供25千兆字节/秒的数据传输速率,其中六条链路提供300千兆字节/秒。当CPU 530还包括一个或更多个NVLink 310接口时,NVLink 310可专门用于如图6所示的PPU到PPU通信,或者PPU到PPU以及PPU到CPU的某种组合。
在一个实施例中,NVLink 310允许从CPU 530对每个PPU 300的存储器304进行直接加载/存储/原子访问。在一个实施例中,NVLink 310支持一致性操作,允许从存储器304读取的数据被存储在CPU 530的高速缓存分层结构中,减少了CPU 530的高速缓存访问延迟。在一个实施例中,NVLink 310包括对地址转换服务(ATS)的支持,允许PPU 300直接访问CPU 530内的页表。一个或更多个NVLink 310还可以被配置为以低功率模式操作。
图7示出了示例性系统565,其中可以实现各种先前实施例的各种体系架构和/或功能。示例性系统565可以被配置为实现图1中所示的方法100。
如图所示,提供系统565,其包括连接到通信总线575的至少一个中央处理单元530。通信总线575可以使用任何合适的协议来实现,诸如PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、超传输或任何其他总线或一个或更多个点对点通信协议。系统565还包括主存储器540。控制逻辑(软件)和数据被存储在主存储器540中,主存储器540可以采取随机存取存储器(RAM)的形式。
系统565还包括输入设备560、并行处理系统525和显示设备545,即常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器等。可以从输入设备560(例如键盘、鼠标、触摸板、麦克风等)接收用户输入。前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统565。可选地,根据用户的需要,各个模块还可以分开放置或以半导体平台的各种组合来放置。
此外,系统565可以出于通信目的通过网络接口535耦合到网络(例如,电信网络、局域网(LAN)、无线网络、广域网(WAN)(诸如因特网)、对等网络、电缆网络等)。
系统565还可以包括辅助存储(未示出)。辅助存储610包括例如硬盘驱动器和/或可移除存储驱动器、代表软盘驱动器、磁带驱动器、光盘驱动器、数字多功能盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存。可移除存储驱动器以众所周知的方式从可移除存储单元读取和/或写入可移除存储单元。
计算机程序或计算机控制逻辑算法可以存储在主存储器540和/或辅助存储中。这些计算机程序在被执行时使得系统565能够执行各种功能。存储器540、存储和/或任何其他存储是计算机可读介质的可能示例。
各种在先附图的体系架构和/或功能可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和/或任何其他所需的系统的上下文中实现。例如,系统565可以采取台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数字相机、运载工具、头戴式显示器、手持式电子设备、移动电话设备、电视机、工作站、游戏控制台、嵌入式系统和/或任何其他类型的逻辑的形式。
虽然以上已经描述了各种实施例,但应该理解,它们仅已经作为示例呈现,而不是限制。因此,优选实施例的广度和范围不应被任何上述示例性实施例限制,而应仅根据以下权利要求及其等同物来限定。
机器学习
在处理器(诸如PPU 300)上开发的深度神经网络(DNN)已经用于各种使用情况:从自驾车到更快药物开发,从在线图像数据库中的自动图像字幕到视频聊天应用中的智能实时语言翻译。深度学习是一种技术,它建模人类大脑的神经学习过程,不断学习,不断变得更聪明,并且随着时间的推移更快地传送更准确的结果。一个孩子最初是由成人教导,以正确识别和分类各种形状,最终能够在没有任何辅导的情况下识别形状。同样,深度学习或神经学习系统需要在物体识别和分类方面进行训练,以便在识别基本物体、遮挡物体等同时还为物体分配情景时变得更加智能和高效。
在最简单的层面上,人类大脑中的神经元查看接收到的各种输入,将重要性级别分配给这些输入中的每一个,并且将输出传递给其他神经元以进行处理。人造神经元或感知器是神经网络的最基本模型。在一个示例中,感知器可以接收一个或更多个输入,其表示感知器正被训练识别和分类的对象的各种特征,并且在定义对象形状时,这些特征中的每一个基于该特征的重要性赋予一定的权重。
深度神经网络(DNN)模型包括许多连接的感知器(例如节点)的多个层,其可以用大量输入数据来训练以快速高精度地解决复杂问题。在一个示例中,DLL模型的第一层将汽车的输入图像分解为各个部分,并查找基本图案(诸如线条和角)。第二层组装线条以寻找更高级别的图案,诸如轮子、挡风玻璃和镜子。下一层识别运载工具类型,最后几层为输入图像生成标签,识别特定汽车品牌的型号。
一旦DNN被训练,DNN就可以被部署并用于在被称为推理的过程中识别和分类对象或模式。推理的示例(DNN从给定输入中提取有用信息的过程)包括识别沉积在ATM机中的支票存款上的手写数字、识别照片中朋友的图像、向超过五千万用户提供电影推荐、识别和分类不同类型的汽车、行人和无人驾驶汽车中的道路危险、或实时翻译人类言语。
在训练期间,数据在前向传播阶段流过DNN,直到产生预测,其指示对应于输入的标签。如果神经网络没有正确标记输入,则分析正确标签和预测标签之间的误差,并且在后向传播阶段期间针对每个特征调整权重,直到DNN正确标记该输入和训练数据集中的其他输入。训练复杂的神经网络需要大量的并行计算性能,包括由PPU 300支持的浮点乘法和加法。与训练相比,推理的计算密集程度更低,是一个延迟敏感过程,其中经训练的神经网络应用于它以前没有见过的新的输入,以进行图像分类、翻译语音以及通常推理新的信息。
神经网络严重依赖于矩阵数学运算,并且复杂的多层网络需要大量的浮点性能和带宽来提高效率和速度。采用数千个处理核心,针对矩阵数学运算进行了优化,并传送数十到数百TFLOPS的性能,PPU 300是能够传送基于深度神经网络的人工智能和机器学习应用所需性能的计算平台。
图8示出了根据一个实施例的用于使用深度神经网络来执行自主路径导航的示例性系统800。如图所示,系统800包括与TrailNet DNN模块804、对象检测DNN模块806和障碍物检测器模块808通信的相机模块802。在一个实施例中,相机模块802可以向TrailNetDNN模块804、对象检测DNN模块806和障碍物检测器模块808提供可视化数据(例如,图像数据、雷达数据、深度数据、激光雷达数据、红外数据、声呐数据等)。在另一个实施例中,相机模块可以管理运载工具内的各种不同类型的一个或更多个相机。
另外,在一个实施例中,TrailNet DNN模块804可以从相机模块802接收可视化数据,并且可以输出运载工具位置信息。例如,TrailNet DNN模块804可输出指示运载工具相对于路径的方位的三个数字,以及由DNN输出的指示运载工具相对于路径的横向位置的三个数字。
此外,在一个实施例中,对象检测DNN模块806可以从相机模块802接收可视化数据,并且可以输出关于人或大型动物是否存在于可视化数据内的指示(例如,利用DNN(诸如YOLO DNN等))。在另一个实施例中,障碍物检测器模块808可以从相机模块802接收可视化数据,并且可以输出指示各种位置和距离处的障碍物的可能性的一组权重(例如,利用同时定位和映射(SLAM)等))。以这种方式,障碍物检测器模块808可以识别场景内的相机的位置,并且可以提供关于场景内的静态对象的相对位置的信息。
此外,系统800包括控制器模块810。在一个实施例中,控制器模块810可以从TrailNet DNN模块804接收运载工具位置信息(例如,表示运载工具的路径方位和横向位置),并且可以利用运载工具位置信息创建转向方向(例如,运载工具的转向角等)。
以及,系统800包括通信模块812。通信模块812可以从控制器模块810接收第一格式(例如,ROS协议等)的转向方向,并且然后可以转换成第二格式(例如,MAV协议等)的消息。通信模块812然后可以利用通信协议816将转换后的第二格式的消息广播到运载工具系统模块814。
另外,在一个实施例中,运载工具系统模块814可以接收转换后的消息,并且可以使用这些消息来控制运载工具的一个或更多个物理组件(例如,为了控制运载工具的移动等)。以这种方式,控制器模块810可以计算转向方向并且将转向方向发送到通信模块812,其可以将该方向转换为不同的格式并将它们发送到运载工具系统模块814以在运载工具上实现。
此外,系统800包括手动输入设备模块818。手动输入设备模块818可以接收来自用户的输入(例如,启动指示符、切断开关选择、手动复位选择等),并且可以将这样的信息发送到控制器模块810。以这种方式,可以将手动用户输入提供给系统800。
此外,相机模块802、TrailNet DNN模块804、对象检测DNN模块806、障碍物检测器模块808、控制器模块、通信模块812和手动输入设备模块818全部在单个处理器820内实现。这些模块之间的通信可以使用预定协议(例如,ROS协议等)来进行。运载工具系统模块814在运载工具的控制硬件822内被实现,控制硬件822与处理器820分离。
使用深度神经网络的低飞行自主MAV轨迹导航以用于环境感知简介
在一个实施例中,在森林中自动跟踪人为轨迹对于机器人系统是一个具有挑战性的问题。这种能力的应用包括搜索与营救、环境绘图、荒野监测和个人录像等。微型飞行器(MAV)为解决这个问题提供了许多优势:它们不受地形难度或可穿越性的限制,它们能够高速运行,并且它们能够通过飞行穿过或越过森林从一条路线快速切换到另一条路线。
为了完全MAV系统跟踪轨迹,其不仅可以检测轨迹以确定其转向命令,以及它还可以感知其周围环境。缺乏这种能力的MAV会有这种危险:与悬垂的树枝发生碰撞,甚至更糟糕的,与使用该轨迹的人或宠物相撞。因此,环境感知是轨迹跟随机器人的一个组成部分,特别是对于低飞行的MAV。
在一个实施例中,提供MAV系统用于自主轨迹跟踪。该系统可以使用深度神经网络(DNN)(在该示例中称为TrailNet)来确定MAV的视线方位和轨迹内的横向偏移。然后计算出的姿势可以用于连续控制,以允许MAV飞过森林轨迹。此外,用于环境感知的视觉模块可以使MAV能够检测和避开轨迹上的人和宠物,以及为了反应性地避开障碍物而估算机器人前方的深度。所有子系统可以使用独立的计算设备机载实时同时运行MAV。机载处理可以用来确保这个关键使命系统的安全。
在一个实施例中,硬件/软件系统可以被实现用于使用可以机载实时运行MAV的DNN的环境感知自主轨迹导航。
在另一个实施例中,可以经由用于更稳定的控制的较不可信的分类方案以及用于估计视线方位(view orientation)和横向偏移两者的附加类别而以改进的准确度和计算效率来实现用于踪迹检测的DNN体系架构。
在又一个实施例中,通过从具有3个类别(仅方位)的网络传送学习,可以用6个类别(用于视线方位和横向偏移)来实现用于重新训练DNN的方法。
系统描述
为了确保用于森林飞行实验的鲁棒和灵活的平台,可以使用便宜的现成组件。一个示例性硬件设置可以包括具有自动驾驶软件的四轴飞行器或无人机、集成计算设备和载板。视觉处理可以使用前置摄像头。所有处理可以在集成计算设备上完成。
MAV可以配备具有声呐和激光雷达的面向下的高帧率光学流量传感器。开发的流量传感器可以通过计算地面上的2D光流提供可靠的度量位置和姿势估算,然后使用地面距离测量和陀螺仪读数来计算运载工具的地面速度。一旦计算出来,该速度可以发送到在飞行控制器硬件上运行的扩展卡尔曼滤波器(EKF),以与其他传感器测量结果(例如,IMU)进行融合,以进行更精确的状态估计。
图9中的图示出了根据一个实施例的示例性软件体系架构900。飞行堆栈可以用作飞行控制器硬件自动驾驶仪922的固件902。飞行固件902可以提供对一系列MAV配置的灵活且鲁棒的控制。它可包括软件在环(SITL)仿真,其可用于控制器测试和调试。机载计算机可以经由预定协议(例如MavLink等)与飞行固件902通信。机器人操作系统(ROS)904可以在机载计算机上运行。如图9所示,体系架构900使用以下ROS节点906-910:用于读取USB照相机输入的照相机驱动器节点906、用于读取用于遥控操作的游戏控制器命令的操纵杆状驱动器节点908(例如,在训练期间和用于应急超控)以及到外部自动驾驶仪模块910的消息传递桥,用于与飞行固件902通信。
在一个实施例中,视觉处理可以由三个节点912-916来执行。TrailNet DNN节点912应用经训练的TrailNet DNN。对象检测节点914运行实时对象检测DNN。障碍物检测器节点916运行视觉测距法算法,其输出可被转换成以摄像机为中心的深度图,以用于障碍物检测和避开。
控制器节点920可以负责计算每个当前TrailNet DNN预测的期望移动命令(航点),检测到的障碍物/对象和遥控操作命令。为了安全起见,遥控操作命令可能优先于DNN预测,所以操作人员可以随时超控MAV,以防止不合需要的移动。计算的航点可以随后被发送到消息桥,到外部自动驾驶仪模块910,其经由通信协议918将其重新发送到飞行固件902。向右转的ENU(东北向上)惯性坐标框架可以用于航点计算,其可以被转换为飞行固件902的右手NED(东北向下)坐标框架。
基于视觉的处理
本部分描述了使用前向相机由三个节点912-916执行的处理。
用DNN估算横向偏移和视线方位
图10示出了根据一个实施例的实现深度神经网络(DNN)1002的示例性TrailNetDNN节点1000,其用于估计MAV相对于轨迹的横向偏移和视线方位。DNN 1002可以包括具有一个或更多个改变的ResNet-18(例如,移除的批标准化、用移动的ReLU(SReLU)代替ReLU、对高效指数线性单元(ELU)是计算有效近似的激活函数、双头全连接输出层等)。
在一个实施例中,TrailNet DNN体系架构可以用于确定MAV相对于轨迹中心的视线方位和横向偏移。网络(标记为s-ResNet-18)可包括ResNet-18体系架构,但没有批标准化,且ReLU由移位的ReLU替代。第一卷积层可以是7×7,而所有其他卷积层可以是3×3。一些层可以使用步幅2降低采样;所有其他的可以使用步幅1。除横向偏移层以外的所有权重可以用IDSIA轨迹数据集进行训练,之后可以冻结这些权重,并且可以用数据集来训练横向偏移层权重。最后的联合优化步骤也可以被执行。
在另一个实施例中,由于数据收集和标记的容易性以及对噪声的敏感度降低,可以用软标签来执行分类而不是回归。在一个实施例中,网络可以输出6个类别而不是3个,以不仅捕获相对于轨迹的3个方位(向左/向中/向右),以及捕获相对于轨迹中心的3个横向偏移(左移/居中/右移)。这些附加的类别可能有助于提供更准确的状态估计和可靠的轨迹跟随。仅采用3个类别,如果MAV靠近轨迹边缘但平行于轨迹飞行,DNN可能不会使它转弯,因为它已经取向成直线。最终,这种疏忽可能会导致它碰到靠近边缘的树枝。因此,由于难以解决需要转弯以校正方位误差的模糊性,并且需要以非直线路径飞行来校正横向偏移误差,所以排除了采用仅3个类别的鲁棒导航。
训练DNN可能需要大量的数据。用于训练6个类别DNN的一个示例性方法应用了转移学习的原理。可以使用轨迹数据集来训练3个类别的DNN,以预测视线方位(左/中/右)。该数据集可包括3台摄像机(瞄准左侧30个,直向和右侧30个)记录的远足片段,具有足够的跨季节和景观多样性,以训练除网络横向偏移层以外的所有区域。
为了训练网络的其余部分,可以收集数据集(例如,使用3相机装备),其中相机安装在棒上(因此相邻相机之间的距离是预定距离)。当摄像机沿着轨迹中间移动时,可以通过同时记录所有摄像机的录像片段收集若干轨迹上的数据。视频可以被裁剪(例如,到60水平FOV等),并且可以用于训练用于预测横向偏移(左/中/右)的网络的第二3类别头,同时冻结所有其他权重。
在一个实施例中,在相机之间设置预定的基线可以使网络能够消除与视线方位的横向偏移。
在训练期间,可以使用数据增强流水线,包括:随机水平翻转(具有适当的标签变化);随机对比度(例如0.2半径)、亮度(例如0.2半径)、饱和度(例如0.4半径)、锐度(例如0.3半径)和随机排列这些变换的抖动;随机缩放抖动(例如,最小值:0.9,最大值:1.2);随机旋转(例如,最大绝对角度:15);和随机裁剪。
在另一个实施例中,可以使用一个或更多个损失函数。例如,在训练期间可以实现以下损失函数:
其中pi和yi分别是平滑的地面真实标签和类别的网络预测,i∈{左,中,右},y是包含所有yi的3元素向量、λ1和λ2是标量权重,并且副交换惩罚(side swap penalty)惩罚总错误(即,交换左边和右边):
另外,在一个实施例中,可以实现控制器以混合可能的DNN预测。这种设计可以简化将DNN预测转化为飞行命令。每次TrailNet DNN发送其预测时,控制器可通过下式计算小的逆时针转向角度α:
它是网络的视线方位(vo)和横向偏移(lo)头的右预测和左预测之间的差的加权和,其中β1和β2是控制转向速度的标量角参数。我们可设置β1=β2=10°。
一旦转向角已知,就可以计算出位于MAV前方一定距离处并且处于相对于MAV机身框架的转向角的新航点。到航点的距离可能会影响运载工具的速度。我们设定方位以面对新的航点方向。航点被转换为惯性坐标系,并被发送(采用到地面固定距离)到消息桥到外部自动驾驶仪模块,以执行自动驾驶飞行计划。
使用DNN进行对象检测
为了安全,可以实现系统碰撞避免。对象检测DNN可以负责检测对象,如果障碍物检测器模块被独立移动,这些对象可以对障碍物检测器模块不可见。对于每个被检测到的对象,网络可以提供边界框图像坐标。当框大小超过图像框架的阈值百分比时,来自等式(3)的控制可能会被越控,导致MAV停止并悬停。
可以用于对象检测的一个示例性DNN基于采用修改的YOLO DNN,其具有允许使用集成计算设备进行有效执行。该网络可以在一个或更多个数据集上重新训练。
使用单目SLAM进行障碍物检测和避开
除了更高级导航任务(诸如轨迹跟随和语义对象检测)之外,自主MAV能够快速检测并避开其路径中的障碍物),即使这些障碍物之前从未见过(并且因此不可用于训练)。这些障碍物可以是静态的,诸如树木或墙壁,或动态的,诸如人、动物或移动的运载工具。出于安全原因,系统可在存在复杂、高度动态环境(如林荫小径)以及面对照明、阴影和姿势变化的情况下保持鲁棒。
一种低级别障碍物检测的方法可以包括基于立体匹配。也可以使用单目技术,包括使用机器学习和深度学习方法的单幅图像深度技术。另一种技术可以使用单目视频流来估计深度。
在一个实施例中,可以使用直接稀疏测距(direct sparse odometry,DSO)方法。例如,DSO可以计算环境的半密集3D图,并且可以在计算上是有效的。DSO方法可以在集成计算设备的ARM体系架构上运行。在这个平台上,DSO可以提供相机姿势估计的更新以及深度图像,并且可以更新其关键帧。
在飞行期间,DSO可以提供相机的全局姿势xdso和逆深度图像Idso的估计。使用校正后的相机内联函数,Idso可以被转化为相机的本地空间中的3D点云。为了将这些点用于导航或障碍物检测,可以将它们放入MAV的参照系中,包括适当的公制比例尺(metric scale)。该相似性变换可以使用由MAV的其他传感器提供的测距信息来确定。
具体地,在任何给定时间,光学流量传感器可以用于生成惯性坐标系中的运载工具的当前姿势(xmav)的估计。当视觉测距系统提供一xdso、Idso对时,它可能与最新的姿势相关联。一旦已经生成了几个这些测量对,Procrustes分析可用于生成MAV的参照系与视觉测距测量系之间的刚性相似性转换。然后可以使用该变换将从Idso中提取的点放入MAV的参照系中,其中可以检测到附近的对象。当MAV的运动产生足够的视差时,该组测量对(xdso与xmav配对)可以被更新。这些对可以保存在循环缓冲区中,所以最终旧的测量结果可能会被丢弃,以支持新的测量结果。该移动窗口具有潜在地随时间改变公制比例尺的效果,但更重要的是,它可以允许系统对测量误差的鲁棒并且避免病态初始化。
结论
使用深度神经网络(DNN)可以实现自主MAV系统,其在冠层下导航森林轨迹。TrailNet DNN可以利用移动的ReLU激活功能来提高准确性和计算效率,并且可以通过转移学习并入3个附加类别,以便能够估计相对于轨迹的横向偏移和视线方位两者。DNN还可能实现损失函数以防止网络中的过度自信。这些改进一起可以产生更平滑和更鲁棒的导航控制。环境感知也可以采用附加的感知模块产生,包括基于DNN的对象检测和经由单目视觉测距的障碍物检测。所有软件可以在MAV内的机载计算设备上实时同时运行。总之,这些改进可以实现非结构化环境中的完全自主、安全的机器人导航。
虽然上文已经描述了各种实施例,但应该理解的是,它们仅作为示例呈现,而不是限制。因此,优选实施例的广度和范围不应被任何上述示例性实施例限制,而应仅根据以下权利要求及其等同物来限定。
Claims (45)
1.一种方法,包括:
至少部分地基于一个或更多个神经网络计算运载工具相对于路径的方位和所述运载工具相对于所述路径的横向位置。
2.如权利要求1所述的方法,进一步包括:
使用所计算的方位和横向位置来确定所述运载工具的定位。
3.如权利要求2所述的方法,进一步包括:
至少部分地基于从控制器模块接收的转向方向,将所述运载工具定位到所确定的定位,其中所述控制器模块将所计算的方位转换为转向方向。
4.如权利要求1所述的方法,进一步包括:
至少部分地基于安装在所述运载工具中的一个或更多个成像设备来接收图像数据;以及
在所述一个或更多个神经网络处,使用所述图像数据计算所述运载工具相对于路径的所述方位和所述运载工具相对于所述路径的横向位置。
5.如权利要求4所述的方法,其中由所述一个或更多个成像设备捕获的所述图像数据包括指示所述运载工具在所述路径上的当前定位的信息。
6.如权利要求1所述的方法,其中所述一个或更多个神经网络使用具有正确标签的图像数据进行训练。
7.如权利要求1所述的方法,进一步包括:
将在所述运载工具处接收到的图像数据发送到远程定位;以及
使用所述一个或更多个神经网络在所述远程定位处,至少部分地基于所述图像数据来确定所述运载工具相对于所述路径的所述方位和所述运载工具相对于所述路径的所述横向位置。
8.如权利要求7所述的方法,其中所述一个或更多个神经网络在所述远程定位处,至少部分地基于所述图像数据进一步确定旋转数据和平移数据两者。
9.一种系统,包括:
一个或更多个处理器,用于训练一个或更多个神经网络来计算运载工具相对于路径的方位和所述运载工具相对于所述路径的横向位置。
10.如权利要求9所述的系统,其中所述一个或更多个处理器进一步用于:
使用接收到的视频数据来训练所述一个或更多个神经网络;以及
其中,所述视频数据包括具有关联位置的标签的监督数据。
11.如权利要求10所述的系统,其中所述一个或更多个处理器进一步用于:
通过实施损失函数来训练所述一个或更多个神经网络,其中所述损失函数通过以下来进行计算:
确定所述视频数据的图像的标签;
将所述标签与所述图像的关联的正确标签进行比较;以及
计算所述标签与所述正确标签之间的差;以及
基于所述标签和所述正确标签之间的差,使用反向传播来调整所述一个或更多个神经网络。
12.如权利要求11所述的系统,其中经训练的一个或更多个神经网络对传入的视频数据应用标签。
13.如权利要求9所述的系统,其中所述一个或更多个神经网络包括受监督的分类网络。
14.一种处理器,包括:
一个或更多个算术逻辑单元ALU,用于至少部分地基于一个或更多个神经网络来计算运载工具相对于路径的方位和所述运载工具相对于所述路径的横向位置。
15.如权利要求14所述的处理器,其中所述一个或更多个ALU进一步用于基于所计算的方位和横向位置将所述运载工具调整到一定位。
16.如权利要求15所述的处理器,其中所述一个或更多个ALU进一步用于:
从安装在所述运载工具上的一个或更多个成像设备接收图像;以及
使用来自所述图像的信息来确定要调整的所述运载工具的定位。
17.如权利要求14所述的处理器,其中所计算的所述运载工具相对于所述路径的所述方位包括所述运载工具相对于所述路径正朝向的方向的多种可能性,以及所计算的所述运载工具相对于所述路径的所述横向位置包括相对于路径中心的多个横向偏移的可能性。
18.如权利要求14所述的处理器,其中所述一个或更多个ALU进一步用于使所述运载工具的控制器模块将所计算的方位和横向位置转换为转向方向,其中所述转向方向由转向信号和/或转向角组成。
19.如权利要求14所述的处理器,其中所述一个或更多个ALU进一步用于使用所述一个或更多个神经网络来接收图像数据并检测对象是否在所述图像数据中。
20.如权利要求19所述的处理器,其中所述一个或更多个ALU进一步用于至少部分地基于检测到的所述对象是否大于或等于预定阈值而使所述运载工具改变行驶路线。
21.如权利要求14所述的处理器,其中所述一个或更多个ALU进一步用于使用所述一个或更多个神经网络来:
接收图像数据;
应用同时定位和映射SLAM以从所述图像数据中识别所述运载工具在场景内的定位;以及
提供所述场景内的静态对象的相对定位的信息。
22.一种片上系统SoC,包括:
精简指令集计算机RISC中央处理器CPU;
存储器接口;
用于支持高速缓存一致性的互连;
输入/输出I/O单元;
通用处理集群;
用于加速深度学习的处理单元;以及
其中,所述处理单元用于使用神经网络来利用图像数据确定运载工具相对于路径的方位,并利用所述图像数据确定所述运载工具相对于所述路径的横向位置。
23.如权利要求22所述的SoC,进一步包括通信地耦合到所述存储器接口的存储器。
24.如权利要求22所述的SoC,进一步包括一个或更多个高速缓存存储器。
25.如权利要求22所述的SoC,其中所述用于加速深度学习的处理单元包括用于执行矩阵运算的一个或更多个核心。
26.如权利要求22所述的SoC,其中所述用于加速深度学习的处理单元包括用于执行卷积运算的一个或更多个核心。
27.如权利要求22所述的SoC,进一步包括用于将所述SoC耦合到网络的网络接口。
28.如权利要求22所述的SoC,进一步包括连接在所述互连和所述CPU之间的交换机。
29.如权利要求22所述的SoC,进一步包括连接到所述CPU的通信总线。
30.如权利要求22所述的SoC,进一步包括用于读取一个或更多个命令并将所述一个或更多个命令转发到所述SoC的一个或更多个其他单元的前端单元。
31.如权利要求22所述的SoC,其中所述图像数据包括用于指示所述运载工具在所述路径上的定位的数据。
32.一种处理器,包括:
精简指令集计算机RISC中央处理器CPU;
存储器接口;
用于支持高速缓存一致性的互连;
输入/输出I/O单元;
通用处理集群;
用于加速深度学习的处理单元;以及
其中,所述处理单元用于使用神经网络来利用图像数据确定运载工具相对于路径的方位,并利用所述图像数据确定所述运载工具相对于所述路径的横向位置。
33.如权利要求32所述的处理器,其中所述图像数据包括用于指示所述运载工具在所述路径上的定位的数据。
34.如权利要求32所述的处理器,其中所述用于加速深度学习的处理单元包括用于执行矩阵运算的一个或更多个核心。
35.如权利要求32所述的处理器,其中所述用于加速深度学习的处理单元包括用于执行卷积运算的一个或更多个核心。
36.如权利要求32所述的处理器,进一步包括通信地耦合到所述存储器接口的存储器。
37.如权利要求32所述的处理器,进一步包括将所述处理器耦合到网络的网络接口。
38.如权利要求32所述的处理器,进一步包括连接在所述互连和所述CPU之间的交换机。
39.如权利要求32所述的处理器,进一步包括连接到所述CPU的通信总线。
40.如权利要求32所述的处理器,进一步包括用于读取一个或更多个命令并将所述一个或更多个命令转发到所述处理器的一个或更多个其他单元的前端单元。
41.如权利要求32所述的处理器,进一步包括用于存储数据的一个或更多个高速缓存存储器。
42.一种运载工具,包括:
权利要求22所述的片上系统SoC。
43.如权利要求42所述的运载工具,其中所述SoC是所述运载工具的组件。
44.一种运载工具,包括:
权利要求32所述的处理器。
45.如权利要求44所述的运载工具,其中所述处理器是所述运载工具的组件。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762483155P | 2017-04-07 | 2017-04-07 | |
US62/483,155 | 2017-04-07 | ||
US15/939,116 | 2018-03-28 | ||
US15/939,116 US10705525B2 (en) | 2017-04-07 | 2018-03-28 | Performing autonomous path navigation using deep neural networks |
CN201810301071.3A CN108801241A (zh) | 2017-04-07 | 2018-04-04 | 使用深度神经网络执行自主路径导航 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810301071.3A Division CN108801241A (zh) | 2017-04-07 | 2018-04-04 | 使用深度神经网络执行自主路径导航 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115855022A true CN115855022A (zh) | 2023-03-28 |
Family
ID=63588163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211513550.4A Pending CN115855022A (zh) | 2017-04-07 | 2018-04-04 | 使用深度神经网络执行自主路径导航 |
Country Status (3)
Country | Link |
---|---|
US (4) | US11281221B2 (zh) |
CN (1) | CN115855022A (zh) |
DE (1) | DE102018108314A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11520344B2 (en) * | 2019-02-11 | 2022-12-06 | 634 Ai Ltd. | Systems and methods for managing multiple autonomous vehicles |
JP7131441B2 (ja) * | 2019-03-08 | 2022-09-06 | マツダ株式会社 | 自動車用演算システム |
US20220237414A1 (en) * | 2021-01-26 | 2022-07-28 | Nvidia Corporation | Confidence generation using a neural network |
CN112965488B (zh) * | 2021-02-05 | 2022-06-03 | 重庆大学 | 基于迁移学习神经网络的婴儿监控移动机器小车 |
CN114440874B (zh) * | 2021-12-31 | 2022-11-01 | 深圳市云鼠科技开发有限公司 | 基于光流和光栅的融合定位方法和装置 |
CN114581741B (zh) * | 2022-05-09 | 2022-07-15 | 广东电网有限责任公司佛山供电局 | 基于图像增强的断路器试验机器人接线定位方法及装置 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4700307A (en) | 1983-07-11 | 1987-10-13 | General Dynamics Corp./Convair Division | Feature navigation system and method |
FR2610428B1 (fr) | 1986-12-09 | 1997-01-03 | Kubota Ltd | Systeme de commande pour vehicule d'exploitation autopropulse, notamment pour la pulverisation de produits chimiques destines a des traitements agricoles |
JPH04252308A (ja) | 1990-10-03 | 1992-09-08 | Aisin Seiki Co Ltd | ニューラル・ネットワークを利用した車両誘導システム |
US5548512A (en) * | 1994-10-04 | 1996-08-20 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Autonomous navigation apparatus with neural network for a mobile vehicle |
JP3647584B2 (ja) * | 1996-12-26 | 2005-05-11 | 富士通株式会社 | 学習型自己定位装置 |
US6351711B1 (en) * | 2000-09-14 | 2002-02-26 | Sirf Technology, Inc. | GPS navigation system using neural networks |
AU2003280653A1 (en) | 2002-10-30 | 2004-05-25 | Mitsubishi Heavy Industries, Ltd. | Method and device for steering vehicle having no contact with track |
AU2006274421B2 (en) | 2005-07-26 | 2011-08-11 | Macdonald, Dettwiler And Associates Inc. | Traffic management system for a passageway environment |
CN101033978B (zh) | 2007-01-30 | 2010-10-13 | 珠海市智汽电子科技有限公司 | 智能汽车辅助导航和自动兼辅助驾驶系统 |
US8428821B2 (en) | 2007-08-15 | 2013-04-23 | Volvo Technology Corporation | Operating method and system for supporting lane keeping of a vehicle |
US20110128372A1 (en) | 2008-12-19 | 2011-06-02 | Malecki Robert S | System and Method for Determining an Orientation and Position of an Object |
US20100209885A1 (en) | 2009-02-18 | 2010-08-19 | Gm Global Technology Operations, Inc. | Vehicle stability enhancement control adaptation to driving skill based on lane change maneuver |
JP2011140077A (ja) * | 2010-01-06 | 2011-07-21 | Honda Motor Co Ltd | 加工システム及び加工方法 |
JP5240402B2 (ja) * | 2011-01-31 | 2013-07-17 | トヨタ自動車株式会社 | 安全制御装置および安全制御方法 |
KR102041093B1 (ko) * | 2011-04-11 | 2019-11-06 | 크라운 이큅먼트 코포레이션 | 조정된 경로 계획기를 사용하는 다수의 자동화 비-홀로노믹 차량들을 효율적으로 스케줄링하는 방법 및 장치 |
US9751529B2 (en) | 2011-06-09 | 2017-09-05 | GM Global Technology Operations LLC | Lane sensing through lane marker identification for lane centering/keeping |
JP6486679B2 (ja) * | 2014-12-25 | 2019-03-20 | 株式会社キーエンス | 画像処理装置、画像処理システム、画像処理方法及びコンピュータプログラム |
KR102623680B1 (ko) | 2015-02-10 | 2024-01-12 | 모빌아이 비젼 테크놀로지스 엘티디. | 자율 주행을 위한 약도 |
US10168159B2 (en) * | 2015-09-24 | 2019-01-01 | Microsoft Technology Licensing, Llc | Magnetometer arrays for inertial navigation, mapping, and drift compensation |
CN108139758A (zh) * | 2015-10-09 | 2018-06-08 | 深圳市大疆创新科技有限公司 | 基于显著性特征的载运工具定位 |
US9731755B1 (en) | 2016-02-16 | 2017-08-15 | GM Global Technology Operations LLC | Preview lateral control for automated driving |
WO2017143588A1 (en) * | 2016-02-26 | 2017-08-31 | SZ DJI Technology Co., Ltd. | Systems and methods for adjusting uav trajectory |
US9946264B2 (en) | 2016-03-22 | 2018-04-17 | Sharp Laboratories Of America, Inc. | Autonomous navigation using visual odometry |
CN106066644A (zh) | 2016-06-17 | 2016-11-02 | 百度在线网络技术(北京)有限公司 | 建立智能车辆控制模型的方法、智能车辆控制方法及装置 |
CN105892471B (zh) | 2016-07-01 | 2019-01-29 | 北京智行者科技有限公司 | 汽车自动驾驶方法和装置 |
US10207820B2 (en) | 2016-07-05 | 2019-02-19 | Toyota Motor Engineering & Manufacturing North America, Inc. | Systems for transporting, deploying, and docking unmanned aerial vehicles mountable on a ground vehicle |
US10248124B2 (en) * | 2016-07-21 | 2019-04-02 | Mobileye Vision Technologies, Inc. | Localizing vehicle navigation using lane measurements |
CN108773373B (zh) | 2016-09-14 | 2020-04-24 | 北京百度网讯科技有限公司 | 用于操作自动驾驶车辆的方法和装置 |
US10452068B2 (en) * | 2016-10-17 | 2019-10-22 | Uber Technologies, Inc. | Neural network system for autonomous vehicle control |
US9989964B2 (en) * | 2016-11-03 | 2018-06-05 | Mitsubishi Electric Research Laboratories, Inc. | System and method for controlling vehicle using neural network |
IL288191B2 (en) * | 2016-12-23 | 2023-10-01 | Mobileye Vision Technologies Ltd | A navigation system with forced commitment constraints |
EP3548846B1 (en) * | 2017-03-01 | 2022-04-13 | Mobileye Vision Technologies Ltd. | Systems and methods for navigating with sensing uncertainty |
US10328934B2 (en) * | 2017-03-20 | 2019-06-25 | GM Global Technology Operations LLC | Temporal data associations for operating autonomous vehicles |
US11067995B2 (en) * | 2017-03-20 | 2021-07-20 | Mobileye Vision Technologies Ltd. | Navigation by augmented path prediction |
EP3566106B1 (en) * | 2017-03-20 | 2024-03-06 | Mobileye Vision Technologies Ltd. | Trajectory selection for an autonomous vehicle |
US10409280B2 (en) | 2017-03-21 | 2019-09-10 | Baidu Usa Llc | Control dominated planning and control system for autonomous driving vehicles |
CN107139917B (zh) | 2017-04-27 | 2019-05-31 | 江苏大学 | 一种基于混杂理论的无人驾驶汽车横向控制系统和方法 |
CN107609633B (zh) | 2017-05-03 | 2020-08-14 | 同济大学 | 车联网复杂网络中基于深度学习的车辆行驶影响因素的位置预测模型构造方法 |
CN107390682B (zh) | 2017-07-04 | 2020-08-07 | 安徽省现代农业装备产业技术研究院有限公司 | 一种农用车辆自动驾驶路径跟随方法及系统 |
CN107436603B (zh) | 2017-07-27 | 2020-06-09 | 安徽省现代农业装备产业技术研究院有限公司 | 一种农用车辆曲线路径自动驾驶方法及系统 |
US10528824B2 (en) | 2017-12-11 | 2020-01-07 | GM Global Technology Operations LLC | Artificial neural network for lane feature classification and localization |
US10661799B2 (en) | 2017-12-27 | 2020-05-26 | Motorola Solutions, Inc. | Device, system and method for autonomous tactical vehicle control |
US20200020117A1 (en) | 2018-07-16 | 2020-01-16 | Ford Global Technologies, Llc | Pose estimation |
-
2018
- 2018-04-04 CN CN202211513550.4A patent/CN115855022A/zh active Pending
- 2018-04-09 DE DE102018108314.9A patent/DE102018108314A1/de active Pending
-
2020
- 2020-07-06 US US16/921,796 patent/US11281221B2/en active Active
-
2022
- 2022-03-11 US US17/692,706 patent/US20220197284A1/en active Pending
- 2022-03-11 US US17/692,730 patent/US20220269271A1/en active Pending
- 2022-06-30 US US17/855,233 patent/US20230013338A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11281221B2 (en) | 2022-03-22 |
DE102018108314A1 (de) | 2018-10-11 |
US20220269271A1 (en) | 2022-08-25 |
US20230013338A1 (en) | 2023-01-19 |
US20220197284A1 (en) | 2022-06-23 |
US20200341469A1 (en) | 2020-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10705525B2 (en) | Performing autonomous path navigation using deep neural networks | |
US10964061B2 (en) | Learning-based camera pose estimation from images of an environment | |
EP3739523A1 (en) | Using decay parameters for inferencing with neural networks | |
US11488418B2 (en) | Three-dimensional (3D) pose estimation from a monocular camera | |
US11833681B2 (en) | Robotic control system | |
US20240042601A1 (en) | Robotic control system | |
US11281221B2 (en) | Performing autonomous path navigation using deep neural networks | |
US11494370B2 (en) | Hardware-controlled updating of a physical operating parameter for in-field fault detection | |
JP2021033997A (ja) | 1つ又は複数のニューラル・ネットワークを使用した視線検出 | |
AU2020369486A1 (en) | Reinforcement learning of tactile grasp policies | |
US20210125036A1 (en) | Determining object orientation from an image with machine learning | |
AU2020387942A1 (en) | Training and inferencing using a neural network to predict orientations of objects in images | |
AU2020379647A1 (en) | Processor and system to identify out-of-distribution input data in neural networks | |
US11170263B2 (en) | Distributed batch normalization using estimates and rollback | |
US20210233273A1 (en) | Determining a 3-d hand pose from a 2-d image using machine learning | |
US20220396289A1 (en) | Neural network path planning | |
CN114970852A (zh) | 使用一个或更多个神经网络来生成神经模拟的帧 | |
US20220222477A1 (en) | Performing non-maximum suppression in parallel | |
CN115243840A (zh) | 用于任务和运动规划的机器学习模型 | |
US20200177798A1 (en) | Machine Learning of Environmental Conditions to Control Positioning of Visual Sensors |
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 |