Using relative distances to represent vanishing points

The neural network detects and represents the relative distance of vanishing points in the image, which solves the problem of low sensor calibration accuracy in autonomous driving vehicles, and improves the accuracy and computing efficiency of motion planning.

CN112232104BActive Publication Date: 2024-12-10BAIDU USA LLC
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
CN201911266186.4
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-06-28
Filing Date
2019-12-11
Publication Date
2024-12-10
Estimated Expiration
2039-12-11

AI Technical Summary

Technical Problem

In autonomous vehicles, it is difficult to accurately determine and point out vanishing points in the image, affecting the accuracy of sensor calibration, and thus affecting the accuracy of motion planning and control.

Method used

A neural network is used to detect vanishing points in an image and represent them as relative distances to the center of the image, based on which the sensors of the autonomous vehicle are calibrated.

Benefits of technology

Improve the accuracy of sensor calibration and the accuracy of autonomous vehicle motion planning, reducing the complexity and computing time of neural network processing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN112232104B_ABST
    Figure CN112232104B_ABST
Patent Text Reader

Abstract

In some implementations, a method is provided. The method includes obtaining an image depicting an environment of an autonomous vehicle (ADV). The method also includes determining a vanishing point within the image using a neural network. The vanishing point is represented by the neural network as a relative distance from a center of the image. The method also includes calibrating one or more sensors of the autonomous vehicle based on the vanishing point.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present disclosure generally relate to operating an autonomous vehicle and more particularly to representing vanishing points using relative distances. Background Art

[0002] A vehicle operating in an automated driving mode (e.g., without human control) can relieve occupants, particularly the driver, from some driving-related responsibilities. When operating in an automated driving mode, the vehicle can navigate to various locations using onboard sensors, allowing the vehicle to travel with minimal human interaction or in some cases without any passengers.

[0003] Motion planning and control are key operations in autonomous driving. A path describes the geometry of the motion of an autonomous vehicle. Various factors influence the desirability of any given path, including those related to passenger comfort and safety. Summary of the invention

[0004] One aspect of the present disclosure provides a method, comprising: obtaining an image depicting an environment in which an autonomous vehicle is located; determining a vanishing point within the image using a neural network, wherein the vanishing point is represented by the neural network as a relative distance from a center of the image; and calibrating one or more sensors of the autonomous vehicle based on the vanishing point.

[0005] Another aspect of the present disclosure provides a non-transitory machine-readable medium storing instructions, which, when executed by a processor, causes the processor to perform operations, the operations including: obtaining an image depicting an environment in which an autonomous vehicle is located; determining a vanishing point within the image using a neural network, wherein the vanishing point is represented by the neural network as a relative distance from a center of the image; and calibrating one or more sensors of the autonomous vehicle based on the vanishing point.

[0006] Yet another aspect of the present disclosure provides a data processing system, comprising: a processor; and a memory, connected to the processor to store instructions, which, when executed by the processor, cause the processor to perform operations, the operations comprising: obtaining an image depicting an environment in which an autonomous driving vehicle is located; determining a vanishing point within the image using a neural network, wherein the vanishing point is represented by the neural network as a relative distance from a center of the image; and calibrating one or more sensors of the autonomous driving vehicle based on the vanishing point. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] Embodiments of the present disclosure are illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.

[0008] Figure 1 is a block diagram illustrating a networked system according to one embodiment.

[0009] Figure 2 is a block diagram illustrating an example of an autonomous driving vehicle according to one embodiment.

[0010] FIG. 3A to FIG. 3B is a block diagram illustrating an example of a perception and planning system for use with an autonomous vehicle, according to one embodiment.

[0011] Figure 4 is a block diagram illustrating an example of a decision making and planning process according to one embodiment.

[0012] Figure 5 is a diagram illustrating an exemplary neural network according to one embodiment.

[0013] Fig. 6A is a diagram showing an exemplary image according to one embodiment.

[0014] Figure 6B is a diagram showing an exemplary image according to one embodiment.

[0015] Figure 7 is a flow chart illustrating an exemplary process for determining vanishing points in an image.

[0016] Figure 8 is a diagram showing an exemplary image according to one embodiment.

[0017] Fig. 9 is a flow chart illustrating an exemplary process for detecting vanishing points in an image according to one embodiment.

[0018] Fig.10 is a block diagram illustrating an exemplary neural network system according to one embodiment.

[0019] Fig.11 is a flow chart illustrating an exemplary process for detecting vanishing points in an image according to one embodiment.

[0020] Fig.12 is a block diagram illustrating an example of a data processing system that may be used with one embodiment of the present disclosure. DETAILED DESCRIPTION

[0021] Various embodiments and aspects of the present disclosure will be described with reference to the details discussed below, and the accompanying drawings will illustrate multiple embodiments. The following description and the accompanying drawings are illustrative of the present disclosure and should not be construed as limiting the present disclosure. Many specific details are described to provide a comprehensive understanding of various embodiments of the present disclosure. However, in some cases, well-known or conventional details are not described to provide a concise discussion of embodiments of the present disclosure.

[0022] References in this specification to "one embodiment" or "an embodiment" mean that a particular feature, structure, or characteristic described in conjunction with the embodiment can be included in at least one embodiment of the present disclosure. The appearances of the phrase "in one embodiment" in various places in this specification are not necessarily all referring to the same embodiment.

[0023] Some embodiments relate to a method, apparatus, and system for generating training data and / or training a neural network for an autonomous vehicle (ADV). A neural network may be used to detect vanishing points in an image. The vanishing points may be used to determine whether a sensor (e.g., a camera) of the ADV should be recalibrated. The vanishing points in the training data should be accurate so that the neural network can generate more accurate results. However, it may be difficult for a user to determine and / or precisely indicate the location of the vanishing points in the training images. Therefore, it may be useful to more precisely and / or more accurately indicate the vanishing points in the images.

[0024] Some embodiments also involve training a neural network. For example, a neural network can be trained to figure out where a vanishing point is within an image. A neural network can typically represent the location of a vanishing point as an XY coordinate. However, if XY coordinates are used, this may increase the problem and / or solution space that the neural network may handle when determining the vanishing point. Therefore, it may be useful and / or more efficient to reduce the problem and / or solution space that the neural network may handle.

[0025] Some embodiments also relate to training neural networks and / or operating neural networks. Neural networks can operate independently of each other. For example, a first neural network can operate on input data, and a second neural network can also operate on the same input data or separate input data. However, when both neural networks operate on the same input data, feature maps from the first neural network can be used in the second neural network. Therefore, it may be useful to allow feature maps generated by the first neural network to be used in the second neural network.

[0026] Figure 1 is a block diagram showing a network configuration of an autonomous driving vehicle according to one embodiment of the present disclosure. Figure 1, the network configuration 100 includes an autonomous vehicle 101 that can be communicatively connected to one or more servers 103 to 104 via a network 102. Although one autonomous vehicle is shown, multiple autonomous vehicles can be connected to each other and / or to servers 103 to 104 via the network 102. The network 102 can be any type of network, for example, a wired or wireless local area network (LAN), a wide area network (WAN) such as the Internet, a cellular network, a satellite network, or a combination thereof. Servers 103 to 104 can be any type of server or server cluster, such as a web or cloud server, an application server, a back-end server, or a combination thereof. Servers 103 to 104 can be data analysis servers, content servers, traffic information servers, maps and points of interest (MPOI) servers, or location servers, etc.

[0027] An autonomous vehicle refers to a vehicle that can be configured to be in an autonomous driving mode, in which the vehicle navigates through an environment with little or no input from the driver. Such an autonomous vehicle may include a sensor system having one or more sensors configured to detect information related to the environment in which the vehicle operates. The vehicle and its associated controller use the detected information to navigate through the environment. The autonomous vehicle 101 can operate in a manual mode, in a fully autonomous driving mode, or in a partially autonomous driving mode. Hereinafter, the terms "autonomous vehicle" and "autonomous driving vehicle" (ADV) may be used interchangeably.

[0028] In one embodiment, the autonomous vehicle 101 includes, but is not limited to, a perception and planning system 110, a vehicle control system 111, a wireless communication system 112, a user interface system 113, an infotainment system, and a sensor system 115. The autonomous vehicle 101 may also include certain common components included in an ordinary vehicle, such as an engine, wheels, a steering wheel, a transmission, etc., which may be controlled by the vehicle control system 111 and / or the perception and planning system 110 using a variety of communication signals and / or commands, such as acceleration signals or commands, deceleration signals or commands, steering signals or commands, braking signals or commands, etc.

[0029] Components 110 to 115 may be communicatively coupled to each other via an interconnect, a bus, a network, or a combination thereof. For example, components 110 to 115 may be communicatively coupled to each other via a controller area network (CAN) bus. The CAN bus is a vehicle bus standard designed to allow microcontrollers and devices to communicate with each other in applications without a host. It was originally a message-based protocol designed for multiplexed electrical wiring within an automobile, but is also used in many other environments.

[0030] Reference now Figure 2 In one embodiment, the sensor system 115 includes, but is not limited to, one or more cameras 211, a global positioning system (GPS) unit 212, an inertial measurement unit (IMU) 213, a radar unit 214, and a light detection and ranging (LIDAR) unit 215. The GPS system 212 may include a transceiver operable to provide information about the location of the autonomous vehicle. The IMU unit 213 may sense the position and orientation changes of the autonomous vehicle based on inertial acceleration. The radar unit 214 may represent a system that uses radio signals to sense objects within the local environment of the autonomous vehicle. In some embodiments, in addition to sensing objects, the radar unit 214 may additionally sense the speed and / or heading of the object. The LIDAR unit 215 may use lasers to sense objects in the environment of the autonomous vehicle. The LIDAR unit 215 may include, among other system components, one or more laser sources, a laser scanner, and one or more detectors. The camera 211 may include one or more devices for capturing images of the environment surrounding the autonomous vehicle. The camera 211 may be a still camera and / or a video camera. The camera may be mechanically movable, for example, by mounting the camera on a rotating and / or tilting platform.

[0031] The sensor system 115 may also include other sensors, such as: a sonar sensor, an infrared sensor, a steering sensor, a throttle sensor, a brake sensor, and an audio sensor (e.g., a microphone). The audio sensor may be configured to collect sound from the environment surrounding the autonomous vehicle. The steering sensor may be configured to sense the steering angle of the steering wheel, the wheels of the vehicle, or a combination thereof. The throttle sensor and the brake sensor sense the throttle position and the brake position of the vehicle, respectively. In some cases, the throttle sensor and the brake sensor may be integrated into an integrated throttle / brake sensor.

[0032] In one embodiment, the vehicle control system 111 includes, but is not limited to, a steering unit 201, a throttle unit 202 (also referred to as an acceleration unit), and a brake unit 203. The steering unit 201 is used to adjust the direction or forward direction of the vehicle. The throttle unit 202 is used to control the speed of the motor or engine, which in turn controls the speed and acceleration of the vehicle. The brake unit 203 decelerates the vehicle by providing friction to decelerate the wheels or tires of the vehicle. It should be noted that, as Figure 2 The components shown may be implemented in hardware, software or a combination thereof.

[0033] Back to Figure 1, the wireless communication system 112 allows communication between the autonomous driving vehicle 101 and external systems such as devices, sensors, other vehicles, etc. For example, the wireless communication system 112 can communicate directly with one or more devices wirelessly, or communicate wirelessly via a communication network, such as communicating with servers 103 to 104 through the network 102. The wireless communication system 112 can use any cellular communication network or wireless local area network (WLAN), for example, using WiFi, to communicate with another component or system. The wireless communication system 112 can communicate directly with a device (e.g., a passenger's mobile device, a display device, a speaker in the vehicle 101) using, for example, an infrared link, Bluetooth, etc. The user interface system 113 can be part of a peripheral device implemented in the vehicle 101, including, for example, a keyboard, a touch screen display device, a microphone, and a speaker.

[0034] Some or all of the functions of the autonomous vehicle 101 may be controlled or managed by the perception and planning system 110, particularly when operating in an autonomous mode. The perception and planning system 110 includes the necessary hardware (e.g., processor, memory, storage device) and software (e.g., operating system, planning and routing program) to receive information from the sensor system 115, the control system 111, the wireless communication system 112, and / or the user interface system 113, process the received information, plan a route or path from a starting point to a destination point, and then drive the vehicle 101 based on the planning and control information. Alternatively, the perception and planning system 110 may be integrated with the vehicle control system 111.

[0035] For example, a user as a passenger may specify a starting location and a destination of a trip, for example, via a user interface. The perception and planning system 110 obtains trip-related data. For example, the perception and planning system 110 may obtain location and route information from an MPOI server, which may be part of the servers 103 to 104. The location server provides location services, and the MPOI server provides map services and POIs of certain locations. Alternatively, such location and MPOI information may be locally cached in a permanent storage device of the perception and planning system 110.

[0036] As the autonomous vehicle 101 moves along the route, the perception and planning system 110 may also obtain real-time traffic information from a traffic information system or server (TIS). It should be noted that the servers 103 to 104 may be operated by a third-party entity. Alternatively, the functionality of the servers 103 to 104 may be integrated with the perception and planning system 110. Based on real-time traffic information, MPOI information, and location information, as well as real-time local environmental data (e.g., obstacles, objects, nearby vehicles) detected or sensed by the sensor system 115, the perception and planning system 110 may plan a path or route and drive the vehicle 101 according to the planned route, for example, via the control system 111, to safely and efficiently reach a designated destination.

[0037] The server 103 may be a data analysis system for performing data analysis services for various clients. In one embodiment, the data analysis system 103 includes a data collector 121 and a machine learning engine 122. The data collector 121 collects driving statistics 123 from a variety of vehicles (autonomous driving vehicles or conventional vehicles driven by human drivers). The driving statistics 123 include information representing the driving commands (e.g., throttle commands, brake commands, and steering commands) issued and the responses (e.g., speed, acceleration, deceleration, direction) of the vehicle captured by the sensors of the vehicle at different points in time. The driving statistics 123 may also include information describing the driving environment at different points in time, such as, for example, routes (including starting locations and destination locations), MPOI, road conditions, weather conditions, etc.

[0038] Based on the driving statistics 123, the machine learning engine 122 generates or trains rule sets, algorithms, and / or predictive models 124 for various purposes. In one embodiment, the algorithm 124 may include a path algorithm that receives inputs, constraints, and a cost function and generates a path for the ADV taking into account the comfort associated with the path and the preference of the path to stay close to the centerline of the lane and away from obstacles with a buffer zone. The cost function for the path planning may also be generated as part of the algorithm 124. The algorithm 124 may then be uploaded to the ADV for use in real time during autonomous driving.

[0039] Figure 3A and Figure 3B is a block diagram illustrating an example of a perception and planning system for use with an autonomous vehicle according to one embodiment. System 300 may be implemented as Figure 1 A portion of an autonomous vehicle 101 includes, but is not limited to, a perception and planning system 110, a control system 111, and a sensor system 115. FIG. 3A to FIG. 3BThe perception and planning system 110 includes but is not limited to a positioning module 301 , a perception module 302 , a prediction module 303 , a decision module 304 , a planning module 305 , a control module 306 , a route making module 307 , a static obstacle mapper 308 and a path planner 309 .

[0040] Some or all of the modules 301 to 309 may be implemented in software, hardware, or a combination thereof. For example, these modules may be installed in permanent storage 352, loaded into memory 351, and executed by one or more processors (not shown). It should be noted that some or all of these modules may be communicatively coupled to Figure 2 Some or all modules of the vehicle control system 111 of the present invention may be integrated with them. Some of the modules 301 to 309 may be integrated together into an integrated module.

[0041] The positioning module 301 determines the current location of the autonomous vehicle 300 (e.g., using the GPS unit 212) and manages any data related to the user's trip or route. The positioning module 301 (also referred to as the map and route module) manages any data related to the user's trip or route. The user can log in, for example, via a user interface and specify the starting location and destination of the trip. The positioning module 301 communicates with other components of the autonomous vehicle 300, such as map and route information 311, to obtain trip-related data. For example, the positioning module 301 can obtain location and route information from a location server and a map and POI (MPOI) server. The location server provides location services, and the MPOI server provides map services and POIs at certain locations, which can be cached as part of the map and route information 311. As the autonomous vehicle 300 moves along the route, the positioning module 301 can also obtain real-time traffic information from a traffic information system or server.

[0042] Based on the sensor data provided by the sensor system 115 and the positioning information obtained by the positioning module 301, the perception module 302 determines the perception of the surrounding environment. The perception information can represent what an average driver would perceive around the vehicle that the driver is driving. The perception can include, for example, lane configuration in the form of objects, traffic light signals, the relative position of another vehicle, pedestrians, buildings, crosswalks or other traffic-related signs (e.g., stop signs, yield signs), etc. The lane configuration includes information describing one or more lanes, such as, for example, the shape of the lane (e.g., straight or curved), the width of the lane, the number of lanes in the road, one-way lanes or two-way lanes, merging lanes or diverging lanes, exit lanes, etc.

[0043] The perception module 302 may include a computer vision system or the functionality of a computer vision system to process and analyze images captured by one or more cameras to identify objects and / or features in the autonomous vehicle environment. The objects may include traffic signals, road boundaries, other vehicles, pedestrians, and / or obstacles, etc. The computer vision system may use object recognition algorithms, video tracking, and other computer vision techniques. In some embodiments, the computer vision system may map the environment, track objects, and estimate the speed of objects, etc. The perception module 302 may also detect objects based on other sensor data provided by other sensors such as radar and / or LIDAR.

[0044] For each object, the prediction module 303 predicts what the object will behave in this situation. The prediction is performed based on the perception data of the perceived driving environment at that point in time, according to a set of map / route information 311 and traffic rules 312. For example, if the object is a vehicle in the opposite direction and the current driving environment includes an intersection, the prediction module 303 will predict whether the vehicle will likely move straight ahead or make a turn. If the perception data indicates that there is no traffic light at the intersection, the prediction module 303 may predict that the vehicle may need to come to a complete stop before entering the intersection. If the perception data indicates that the vehicle is currently in a left-turn-only lane or a right-turn-only lane, the prediction module 303 may predict that the vehicle will be more likely to turn left or right, respectively.

[0045] For each object, the decision module 304 makes a decision about how to handle the object. For example, for a particular object (e.g., another vehicle in a crossing path) and metadata describing the object (e.g., speed, direction, turn angle), the decision module 304 decides how to encounter the object (e.g., pass, yield, stop, pass). The decision module 304 may make such decisions based on a set of rules, such as traffic rules or driving rules 312, which may be stored in the persistent storage device 352.

[0046] The route making module 307 is configured to provide one or more routes or paths from the starting point to the destination point. For a given trip from the starting location to the destination location (e.g., received from a user), the route making module 307 obtains route and map information 311 and determines all possible routes or paths from the starting location to the destination location. The route making module 307 can generate a reference line for each of the routes from the starting location to the destination location determined by it in the form of a topographic map. The reference line refers to an ideal route or path without any interference from other things such as other vehicles, obstacles, or traffic conditions. That is, if there are no other vehicles, pedestrians, or obstacles on the road, the ADV should follow the reference line accurately or closely. The topographic map is then provided to the decision module 304 and / or the planning module 305. Based on other data provided by other modules (such as traffic conditions from the positioning module 301, the driving environment perceived by the perception module 302, and traffic conditions predicted by the prediction module 303), the decision module 304 and / or the planning module 305 examine all possible routes to select and modify one of the optimal routes. The actual path or route used to control the ADV may be close to or different from the reference line provided by the route planning module 307, depending on the particular driving environment at that point in time.

[0047] Based on the decision for each of the perceived objects, the planning module 305 uses the reference lines provided by the route making module 307 as a basis to plan a path or route for the autonomous vehicle and driving parameters (e.g., distance, speed, and / or turning angle). That is, for a given object, the decision module 304 decides what to do with the object, and the planning module 305 determines how to do it. For example, for a given object, the decision module 304 may decide to overtake the object, and the planning module 305 may determine whether to overtake on the left or right side of the object. Planning and control data are generated by the planning module 305 and include information describing how the vehicle 300 will move in the next movement cycle (e.g., the next route / path segment). For example, the planning and control data may indicate that the vehicle 300 moves at a speed of 30 miles per hour (mph) for 10 meters and then changes to the right lane at a speed of 25 mph.

[0048] As part of the planning process, the path planner 309 may generate a plurality of planned ADV states based on a cost function 313 , which may be stored in the persistent storage 352 .

[0049] Based on the planning and control data, the control module 306 controls and drives the autonomous vehicle according to the route or path defined by the planning and control data by sending appropriate commands or signals to the vehicle control system 111. The planning and control data includes sufficient information to drive the vehicle from a first point on the route or path to a second point using appropriate vehicle settings or driving parameters (e.g., throttle, brake, and steering commands) at different points in time along the route or path.

[0050] In one embodiment, the planning phase is performed in multiple planning cycles (also referred to as driving cycles) (such as, for example, in each 100 millisecond (ms) time interval). For each of the planning cycles or driving cycles, one or more control commands will be issued based on the planning data and the control data. That is, for each 100ms, the planning module 305 plans the next route segment or path segment, for example, including the target location and the time required for the ADV to reach the target location. Alternatively, the planning module 305 can also specify a specific speed, direction and / or steering angle, etc. In one embodiment, the planning module 305 plans the route segment or path segment for the next predetermined time period (such as 5 seconds). For each planning cycle, the planning module 305 plans the target location of the current cycle (e.g., the next 5 seconds) based on the target location planned in the previous cycle. Then, the control module 306 generates one or more control commands (e.g., throttle command, brake command, steering control command) based on the planning data and control data of the current cycle.

[0051] It should be noted that the decision module 304 and the planning module 305 can be integrated into an integrated module. The decision module 304 / planning module 305 can include a navigation system or the functionality of a navigation system to determine a driving path for an autonomous vehicle. For example, the navigation system can determine a series of speeds and directions of travel that are used to affect the movement of the autonomous vehicle along the following path: the path substantially avoids perceived obstacles while the autonomous vehicle moves along a roadway-based path to a final destination. The destination can be set based on user input via the user interface system 113. The navigation system can dynamically update the driving path while the autonomous vehicle is running. The navigation system can combine data from a GPS system and one or more maps to determine a driving path for the autonomous vehicle.

[0052] In one embodiment, the path is planned in the SL coordinate system. The SL coordinate system can be defined relative to a reference line (road / lane centerline). The longitudinal distance or s distance represents the distance in the tangent direction of the reference line. Correspondingly, the lateral distance or l distance represents the distance perpendicular to the s direction. The longitudinal dimension in the SL space represents the longitudinal distance of a specific object from the current position of a vehicle that may be traveling along the reference line. The lateral dimension in the SL space represents the shortest distance between the object and the reference line at a specific time or position represented by the longitudinal dimension. Such a graph in the SL space is called an SL graph. In one embodiment, the lateral distance can be simply defined as the distance from the reference line. Therefore, in addition to the representation in the Cartesian coordinate system (XY plane), the vehicle position (posture) can also be represented in the SL coordinate system as an ordered pair relative to the reference line (longitudinal posture / position "s posture", lateral posture / position "l posture") or simply (s, l).

[0053] In some embodiments, one or more components of the perception and planning system 110 may include and / or may use one or more neural networks. For example, the planning module 305 may include and / or may use one or more neural networks to perform various tasks, functions, operations, actions, etc. In another example, the prediction module 303 may include and / or may use one or more neural networks to perform various tasks, functions, operations, actions, etc. In one embodiment, one or more neural networks that may be included in one or more components of the perception system and / or may be used by one or more components of the perception system may detect lanes (e.g., road lanes) in images captured and / or generated by sensors of the ADV. For example, the neural network used by the perception module 302 may determine a line indicator that may indicate a road lane in an image. In another example, a neural network may be used to determine a vanishing point in an image. A sensor system (e.g., Figure 2 The sensor system 115 shown in FIG. 1 can use the vanishing points to calibrate one or more sensors (eg, cameras) of the ADV.

[0054] like Figure 3A As shown in , system 300 includes an artificial intelligence (AI) accelerator 360. AI accelerator 360 can be a processing device that can be designed, customized and / or configured for artificial intelligence applications. For example, an AI accelerator can be used to accelerate the operation of an artificial neural network, perform machine vision and / or machine learning operations, etc. Examples of AI accelerators may include a graphics processing unit (GPU), an application-specific integrated circuit, a field programmable gate array, etc.

[0055] Figure 44 is a block diagram illustrating an example of a decision and planning process 400 according to one embodiment. The decision and planning process 400 includes positioning / sensing data 401, a path decision process 403, a speed decision process 405, a path planning process 407, a speed planning process 409, an aggregator 411, and a trajectory calculator 413.

[0056] The path decision process 403 and the speed decision process 405 can be composed of Figure 3B The decision module 304 shown in FIG. Figure 3B , the decision module 304 can use dynamic programming to generate a rough path configuration (profile) as the initial constraints of the path planning process 407 / speed planning process 409. The decision module 304 can use a path state machine that provides previous planning results and important information (such as whether the ADV is cruising or changing lanes and traffic rules). Based on the state, traffic rules, reference lines provided by the route making module 307, and obstacles perceived by the ADV, the path decision process 403 can decide how to deal with the perceived obstacles (i.e., ignore, overtake, give way, stop, pass) as part of the rough path configuration.

[0057] For example, in one embodiment, a rough path configuration is generated by a cost function, the cost function being composed of costs based on the curvature of the path and the distance from a reference line and / or a reference point to obstacles. Points on the reference line are selected and moved to the left or right side of the reference line as candidate moves representing path candidates. Each candidate movement has an associated cost. Dynamic programming for optimal cost can be used sequentially to solve the associated costs of candidate movements of one or more points on the reference line one point at a time. Dynamic programming (or dynamic optimization) can be a mathematical optimization method that decomposes the problem to be solved into a series of value functions, so that each of these value functions is solved only once and its solution is stored. The next time the same value function appears, it is simply necessary to find the previously calculated solution without recalculating its solution, thereby saving computation time.

[0058] The speed decision process 405 may use the speed state machine, speed traffic rules, and one or more station timing diagrams. The speed decision process 405 may use dynamic programming to generate a rough speed profile as an initial constraint for the path planning process 407 / speed planning process 409. Based on the state of the speed state machine, the speed traffic rules, the rough path configuration generated by the path decision process 403, and the perceived obstacles, the speed decision process 405 may generate a rough speed configuration to control when to accelerate and / or decelerate the ADV.

[0059] The path planning process 407 can use a rough path configuration (e.g., a site lateral map) as an initial constraint to recalculate the optimal reference line using quadratic programming. Quadratic programming involves minimizing or maximizing an objective function (e.g., a quadratic function with multiple variables) based on boundary, linear equality, and / or inequality constraints. One difference between dynamic programming and quadratic programming is that quadratic programming can optimize all candidate motions of all points on the reference line at once. The path planning process 407 can apply a smoothing algorithm (e.g., B-splines or regression) to the output site lateral map. The reference line can be recalculated using the path cost using a path cost function to optimize the total cost of the candidate motions of the reference point, for example, using quadratic programming (QP) optimization.

[0060] The speed planning process 409 may use a rough speed configuration (e.g., a stop time diagram) and one or more ST diagrams to determine one or more speeds of the ADV. In some embodiments, the ST diagram may include an ST trajectory. As discussed in more detail below, the ST trajectory may indicate the distance traveled by the ADV at different points in time along the path. Thus, the ST trajectory (of the ST diagram) may be used to indicate or determine the speed of the vehicle at different points in time. The ST diagram may also include or indicate one or more stopping conditions. For example, the ST diagram may also indicate the distance and time at which the ADV should stop to avoid an obstacle, such as a pedestrian, a sidewalk, a road divider (e.g., a central divider), another vehicle, etc. Although it may be in the ST diagram, the ST diagram may be used to indicate the distance and time at which the ADV should stop to avoid an obstacle, such as a pedestrian, a sidewalk, a road divider (e.g., a central divider), another vehicle, etc. Figure 4 , but other types of graphs (e.g., SL graphs, graphs using Cartesian coordinate systems, etc.) may be used in other embodiments. The speed planning process 409 may also use one or more constraints to determine one or more speeds of the ADV. A constraint may be one or more conditions that should be satisfied when the speed planning process 409 determines a set of speeds. For example, a constraint may be a condition imposed on the QP optimization problem that a candidate solution should satisfy. As discussed in more detail below, a speed constraint function may be used to represent one or more constraints.

[0061] Aggregator 411 performs the function of aggregating path and speed planning results. For example, in one embodiment, aggregator 411 may combine a two-dimensional ST map and an SL map into a three-dimensional SLT map. In another embodiment, aggregator 411 may interpolate (or fill in additional points) based on 2 consecutive points on an SL reference line or ST curve. In another embodiment, aggregator 411 may convert a reference point from (S, L) coordinates to (x, y) coordinates. Trajectory calculator 413 may calculate a final trajectory to control ADV. For example, based on the SLT map provided by aggregator 411, trajectory calculator 413 calculates a list of (x, y, T) points, which indicates the time when the ADC passes through a specific (x, y) coordinate.

[0062] Therefore, refer again Figure 4 , the path decision process 403 and the speed decision process 405 will generate a rough path configuration and a rough speed configuration taking into account obstacles and / or traffic conditions. Given all path and speed decisions related to obstacles, the path planning process 407 and the speed planning process 409 will use QP planning to optimize the rough path configuration and speed configuration taking into account obstacles to generate an optimal trajectory with minimum path cost and / or speed cost.

[0063] Figure 5 is a diagram illustrating an exemplary neural network 500 according to one or more embodiments of the present disclosure. Neural network 500 may be used to model relationships between (e.g., complex) inputs and outputs, or to find models in data where dependencies between inputs and outputs may be difficult to easily determine. Neural network 500 may also be a computational model that may be used to determine features in input data through various computations. For example, neural network 500 may determine features (e.g., quantity, shape, pattern, etc.) in input data (e.g., audio data, image data, video data, etc.) according to a structure that defines a series of computations to be performed.

[0064] The neural network 500 may be a CNN. The CNN may be a feedforward neural network. A feedforward neural network may be a neural network in which the connections between nodes do not form a loop. For example, signals, messages, data, information, etc. flow from left to right, from the input layer 510 of the neural network 500 (e.g., from the input node) through the hidden layer 529 to the output layer 530 (e.g., to the output node). Signals, messages, data, information, etc. do not propagate backward through the neural network (e.g., do not propagate from right to left). CNN may be used for image analysis. The weights of the connections may take the form of convolution filters that can be applied to different pixels of an image. Although the present disclosure may relate to image analysis for CNN, in other embodiments, CNN may be used for other types of data and inputs.

[0065] The neural network 500 includes an input layer 510, a hidden layer 529, and an output layer 530. Each of the input layer 510, the hidden layer 529, and the output layer 530 includes one or more nodes 505. Each of the input layer 510, the hidden layer 529, and the output layer 530 may have a different number of nodes 505. The neural network 500 may be a deep neural network or a deep CNN. If the hidden layer 529 includes multiple levels (e.g., multiple columns of nodes 505, multiple sub-layers of nodes 505), the neural network may be deep. Figure 5 As shown in , neural network 500 includes two levels (or sub-layers) of nodes 505 (eg, two columns of nodes 505).

[0066] As shown by the arrows / lines between the nodes 505, each node 505 in one layer is connected to a node 505 in the next level (e.g., the next sub-layer) or a node 505 in another layer. For example, the nodes 505 in the input layer are each connected to at least one node 505 in the hidden layer 529. The neural network 500 can be a fully connected neural network. For example, each node 505 in each layer or level is connected to each node in the subsequent layer or level, where there are subsequent layers or levels (e.g., the node 505 in the output layer 530 is not connected to other subsequent nodes).

[0067] Each connection can be associated with a weight or weight value (e.g., can have a weight). A weight or weight value can define a coefficient applied to a calculation. For example, a weight or weight value can be a scaling factor between two or more nodes 505. Each node 505 can represent the sum of its inputs, and a weight or weight value associated with a connection can represent a coefficient or scaling factor multiplied by the output of the node 505 in the connection. The weights between nodes 505 can be determined, calculated, generated, assigned, learned, etc. during the training process of a neural network. For example, back propagation can be used to set weights so that the neural network 500 produces a desired output value given a corresponding value in the training data of a given label. Therefore, the weights of the hidden layer can be considered as the encoding of a meaningful model in the data. The weights of the connections between nodes 505 can be modified by additional training.

[0068] Although a neural network 500 having a particular number of nodes 505, layers, and connections is depicted, various neural network architectures / configurations may be used in other embodiments. For example, different fully connected neural networks and partially connected neural networks (e.g., not all nodes in adjacent layers are connected) may be used.

[0069] like Figure 5 As shown in FIG, the neural network 500 includes a convolutional layer 521, a pooling layer 522, and a fully connected layer 523. Figure 5 , but in other embodiments, the neural network 500 may include additional convolutional layers and pooling layers. For example, the neural network 500 may include a first convolutional layer, the first convolutional layer may be connected to a first pooling layer, the first pooling layer may be connected to a second convolutional layer, the second convolutional layer may be connected to a second pooling layer, and the second pooling layer may be connected to a fully connected layer 523. In addition, based on the application using the neural network 500, the fully connected layer 523 may be optional.

[0070] Although the present disclosure may relate to convolutional neural networks (CNNs), other types of neural networks may be used in other embodiments. For example, recurrent neural networks (RNNs) may be used in other embodiments.

[0071] Fig. 6A 600 is a diagram showing an exemplary image 600 according to one embodiment. Image 600 may depict an environment in which a vehicle, such as an autonomous vehicle and a non-autonomous vehicle, may be located and / or traveling. For example, image 600 may depict a road, highway, etc. that an autonomous vehicle may travel through and / or may be located. Image 600 may also depict potential environments in which an autonomous vehicle may be located and / or traveling. Image 600 may also depict an environment in which an autonomous vehicle has previously traveled through or was previously located.

[0072] As described above, a neural network can be used to analyze an image and identify features in the image. For example, a neural network can be used to determine and / or identify vanishing points, lines or lane indicators, etc. The neural network can be trained prior to deployment and / or use of the neural network. For example, training data (e.g., training images) can be used to train the neural network. The training data can include previously identified (e.g., previously identified by a user or computing device) features of interest.

[0073] In one embodiment, a computing device (e.g., a server computer, a laptop computer, a desktop computer, a tablet computer, such as Fig.12 , etc.) can obtain image 600 (which can depict an environment in which the vehicle may have been located or has traveled). For example, the computing device can retrieve or read image 600 from a data storage (e.g., memory, hard drive, flash drive, etc.). Image 600 may have been previously generated and / or captured by one or more sensors on the vehicle. For example, image 600 may have been previously generated and / or captured by a camera on the vehicle (e.g., a video camera, a digital camera, a camera sensor, etc.).

[0074] In one embodiment, the image includes a line indicator 610 (in Fig. 6A Line indicator 610 may represent a lane, lane line, curb, boundary, lane divider / divider, lane marking, etc., located in the environment (depicted in image 600). For example, line indicator 610 may be a lane marking / line on a road or street. Line indicator 610 may include curves and / or straight lines. For example, line indicator 610 may be a curve, a straight line, and / or a line including curved portions and straight portions. Although in Fig. 6A Four line indicators 610 are shown in FIG. 6 , but any number of line indicators may be included in other implementations.

[0075] In one embodiment, line indicator 610 may be based on user input provided by a user. For example, a user may view or examine image 600 and may point out, draw, place, or position line indicator 610 in image 600. Line indicator 610 may be added to image 600 so that line indicator 610 becomes part of image 600. For example, a user may edit an original image captured or generated by a camera to add line indicator 610 to image 600. Line indicator 610 may also be included in metadata associated with image 600.

[0076] In another embodiment, line indicator 610 may be generated by a computing device. The computing device may analyze the image and may indicate, draw, place, or locate line indicator 610 in image 600. For example, a neural network may be used to analyze image 600 and add line indicator 610 to image 600. Line indicator 610 may be part of image 600 and / or may be included in metadata associated with image 600.

[0077] In one embodiment, image 600 may be included in training data for a neural network. For example, image 600 may be included in training data for a neural network used to determine vanishing points in an image. The actual vanishing point of image 600 may have been predetermined. This allows a computing device to determine whether a vanishing point determined by the neural network (e.g., a detected vanishing point or a determined vanishing point) is accurate (e.g., is the same as the actual vanishing point or is within a threshold distance of the actual vanishing point).

[0078] In one embodiment, the computing device may determine (e.g., generate, estimate, obtain, calculate, etc.) line segments 620 based on the line indicators 610. For example, the computing device may analyze the line indicators 610 and may determine one line segment 620 for each line indicator 610. The line segment 620 may be the longest straight line portion of the corresponding line indicator 610. The line segment 620 may also be the longest straight line that may fit or match a portion of the corresponding line indicator.

[0079] In one embodiment, the line segment 620 may also be the longest straight line within the upper boundary / upper height and the lower boundary / lower height of the image 600. The line segment 620 may also be the longest straight line that is closer to and / or closest to the lower boundary / lower height of the image 600. For example, the computing device may analyze the portion of the line indicator 610 between heights Y1 and Y8 and determine whether the straight line can fit the portion of the line indicator 610 (between Y1 and Y8). If the straight line can fit to the portion of the line indicator between Y1 and Y8, the computing device may use the straight line to determine the vanishing point, which will be discussed in more detail below. If the straight line cannot fit to the portion of the line indicator 610 (between Y1 and Y8), the computing device may analyze other portions of the line indicator 610 until the computing device can identify or determine the longest straight line that can fit to the portion of the line indicator 610 and is closer to / closest to the bottom or lower boundary / lower height of the image. For example, the computing device may successively analyze the portion between Y2 and Y8 of line indicator 610, the portion between Y3 and Y8 of line indicator 610, the portion between Y4 and Y8 of line indicator 610, the portion between Y5 and Y8 of line indicator 610, the portion between Y6 and Y8 of line indicator 610, and the portion between Y7 and Y8 of line indicator 610. The computing device may stop at the first portion (starting from portion Y1-Y8 until portion Y7-Y8) to which a straight line can be fitted.

[0080] In one embodiment, the computing device may determine whether a line segment 620 (e.g., a straight line) can be fitted to a portion of the line indicator 610 based on a threshold number of points in the line segment 620 and a threshold distance from the corresponding line indicator 610. For example, the computing device may divide the line indicator 610 into points and / or segments (e.g., a point may be between two segments). The computing device may determine a straight line between two points on the line indicator 610. The first point may be located at a height Y8 of the line indicator 610. The second point may be located at a current height being analyzed (e.g., one of the heights Y1 to Y7). The computing device may determine whether a threshold number of points on the straight line are not within a threshold distance of the line indicator 610. For example, the computing device may determine whether there are less than three, five, or some other suitable number of such points on the straight line that are greater than a threshold distance (e.g., greater than five pixels, 10 pixels, or some other suitable distance) from the line indicator 610. If there are less than a threshold number of points on the line that are not within a threshold distance of line indicator 610 , the computing device may determine that a line may be fit to that portion of line indicator 610 .

[0081] Figure 6B600 according to one embodiment. The image 600 may depict an environment in which a vehicle, such as an autonomous vehicle and a non-autonomous vehicle, may be located and / or traveling. The image 600 may have been previously generated and / or captured by one or more sensors on the vehicle. The image includes a line indicator 610 (in Figure 6B 600). Line indicator 610 may represent lanes, lane lines, curbs, boundaries, lane dividers / dividers, lane markings, etc., located in the environment (depicted in image 600). As described above, line indicator 610 may be based on user input provided by a user. As described above, line indicator 610 may also be generated by a computing device (e.g., automatically generated). Line indicator 610 may be included as part of image 600 and / or may be included in metadata associated with image 600.

[0082] As described above, a neural network can be used to analyze an image and identify features in the image. The neural network can be trained prior to deployment and / or use of the neural network. For example, training data (e.g., training images) can be used to train the neural network. The training data can include previously identified (e.g., previously identified by a user or computing device) features of interest.

[0083] As described above, the computing device may determine (e.g., generate, estimate, obtain, calculate, etc.) line segment 620 based on line indicator 610. Line segment 620 may also be the longest straight line within the upper boundary / upper height and the lower boundary / lower height of image 600. Line segment 620 may also be the longest straight line that is closer to and / or closest to the lower boundary / lower height of image 600.

[0084] In one embodiment, the computing device may determine the vanishing point 630 in the image 600 based on the line segments 620. The computing device may determine the vanishing point in the image 600 by determining the line 640 based on the line segments 620. Each line 640 may be associated with or may correspond to a corresponding line segment 620. The computing device may determine (e.g., calculate, generate, identify, etc.) the line 640 by extending each line segment 620 toward the top or upper portion of the image 600. For example, the computing device may determine the line 640 starting from a point in the corresponding line segment 620 (e.g., a point between the first end and the second end of the line segment 620) and extending toward the top of the image, the line 640 being parallel to the line segment 620.

[0085] In one embodiment, the computing device may determine the vanishing point 630 by determining the location where at least two lines 640 intersect in the image 600. For example, all lines 640 may intersect at a point or location in the image 600. If all lines 640 intersect at a single point or location in the image 600, the point or location of intersection (of all lines 640) may be the vanishing point. In another example, the lines 640 may not all intersect at a single point or location in the image. Figure 6B , lines 640 do not all intersect at a single point or location in image 600. When lines 640 do not all intersect at a single point or location in image 600, the computing device may use various techniques, methods, algorithms, etc. to determine vanishing point 630. For example, the computing device may determine (e.g., identify, calculate, etc.) the point or location in image 600 that is closest to all lines 640. In another example, the computing device may determine the point or location where the most lines 640 intersect (e.g., the location where four out of five lines intersect).

[0086] In one embodiment, the computing device may update image 600 or metadata associated with image 600 to indicate the location of vanishing point 630 within image 600. For example, the computing device may edit the image to add an indicator (e.g., an X-shape or a cross, a dot, a small square, a small diamond, etc.) to image 600 to indicate the location of vanishing point 630 within image 600. In another example, the computing device may generate and / or edit metadata associated with image 600 to indicate the location of vanishing point 630. For example, the computing device may add a horizontal position (or an X coordinate) and a vertical position (or a Y coordinate) to the metadata to indicate vanishing point 630. In another example, the computing device may add a relative horizontal position (or a relative X coordinate) and a relative vertical position (or a relative Y coordinate) to the metadata to indicate vanishing point 630.

[0087] As described above, image 600 may be included in training data that may be used to train a neural network to identify vanishing points in an image. For example, image 600 may be provided to a neural network, and the neural network may determine and / or detect vanishing points. The location / position of the vanishing point determined by the neural network may be compared to the location / position of vanishing point 630. The computing device may compare the difference between the actual vanishing point of the image and the vanishing point determined by the neural network. The computing device may adjust weights in the neural network based on the difference between the actual vanishing point of the image and the vanishing point determined by the neural network.

[0088] can be repeated on all images that may be present in the training data of the neural network Fig. 6A and 6BThe methods, operations, functions, actions, etc. described in the foregoing description may be described in detail. For example, the computing device may obtain multiple images (e.g., hundreds of images, thousands of images, or some other suitable number of images) depicting additional environments in which the ADV may be located and / or traveling. Each image may include additional line indicators representing lanes in the additional environment. As described above, the computing device may determine additional line segments for the additional line indicators. The computing device may also determine a vanishing point of the image based on the additional line segments.

[0089] As described above, it may be difficult for a user to point out vanishing points in an image used as training data for a neural network. For example, a user may not be able to accurately click or point out a vanishing point in an image. Additionally, it may be difficult for a user to determine the location of a vanishing point in an image. Because the image is used to train a neural network (e.g., used as training data), it may be important and / or useful to point out the exact vanishing point in the image so that the neural network can be trained to accurately determine the vanishing point. More accurate training data may enable the neural network to generate more accurate results (e.g., more accurate vanishing points). Because it may be difficult for a user to accurately identify and / or point out a vanishing point within an image, determining a vanishing point based on a lane indicator may enable a computing device to more accurately, quickly, and / or efficiently determine a vanishing point.

[0090] Figure 7 700 is a flow chart illustrating an exemplary process 700 for determining vanishing points in an image. Process 700 may be performed by processing logic that may include software, hardware, or a combination thereof. Process 700 may be performed by processing logic that may include hardware (e.g., circuits, dedicated logic, programmable logic, processors, processing devices, central processing units (CPUs), system-on-chips (SoCs), etc.), software (e.g., instructions run / executed on a processing device), firmware (e.g., microcode), or a combination thereof. In some embodiments, the processing logic may be performed by a processing device, an AI accelerator, a computing device, an ADV, a planning module (e.g., Figure 3B The planning module 305 shown in FIG. 7 is used to execute process 700.

[0091] At box 705, process 700 obtains an image that may depict an environment in which the ADV may be located. As described above, the image may be part of training data for a neural network. The image includes a plurality of line indicators representing one or more lanes in the environment. At box 710, process 700 determines a plurality of line segments based on the plurality of line indicators. For example, as described above, process 700 may identify, for each line indicator, the longest straight line that is closer to / closest to the bottom of the image. At box 715, process 700 may determine a vanishing point based on the plurality of line segments. For example, at box 716, process 700 may determine a plurality of lines (e.g., Figure 6BAt block 717, process 700 may determine a vanishing point based on the plurality of lines (e.g., Figure 6B At block 720, process 700 may update the image and / or metadata associated with the image to indicate the location of the vanishing point.

[0092] Figure 8 is a diagram showing an exemplary image 800 according to one embodiment. Image 800 may depict an environment in which an ADV may be located and / or traveling. In one embodiment, image 800 may be training data that may be used to train a neural network. In another embodiment, image 800 may be an image generated and / or captured by one or more sensors of the ADV. Image 800 may be processed and / or analyzed by a neural network (e.g., neural network 500). For example, image 800 may be used to train a neural network. In another example, image 800 may be analyzed by a neural network that the ADV may use while the ADV is operating (e.g., while the ADV is traveling or passing through an environment).

[0093] In one embodiment, the ADV may acquire an image 800. For example, one or more cameras of the ADV may capture and / or generate the image 800. The image 800 may be provided to a neural network, which may be used to determine a vanishing point in the image. For example, the image 800 may be provided as an input to the neural network. Various formats may be used to represent the vanishing point 820. For example, using an XY coordinate (e.g., Cartesian coordinate) system, the vanishing point may be represented as an XY coordinate. In one embodiment, as Figure 8 As shown in , the neural network can represent the vanishing point as a relative distance to the center 810 of the image 800. The relative distance can include a relative lateral distance D_X to the center 810 and a relative longitudinal distance D_Y to the center 810.

[0094] In one embodiment, the autonomous vehicle may calibrate one or more sensors of the autonomous vehicle based on the vanishing point 820. For example, Figure 2 The sensor system 115 shown in FIG. 1 may calibrate one or more cameras 211 based on the vanishing point 820. A sensor such as a camera may not be calibrated due to the operation of the ADV. For example, driving on rough terrain may result in an inability to calibrate the camera because the orientation of the camera (e.g., the roll, pitch, and yaw of the camera) may change during the operation of the ADV. In addition, the orientation of the camera relative to the ADV may also change as the ADV turns, moves up / uphill, moves down / downhill, etc. Therefore, when this occurs, it may be useful to recalibrate the camera (e.g., sensor) to allow the camera to better capture sensor data (e.g., images, image data) for the ADV.

[0095] In one embodiment, the ADV may determine whether one or more sensors should be calibrated based on the vanishing point 820. For example, if the camera (e.g., sensor) is correctly calibrated, the vanishing point 820 detected by the neural network may be located at the center 810 of the image 800 or within a threshold distance of the center 810 of the image 800. The ADV may determine how far the vanishing point 820 is from the center 810 of the image 800. For example, the ADV may determine the relative lateral distance (e.g., D_X) and the relative longitudinal distance (e.g., D_Y) of the vanishing point 820 from the center 810 of the image 800 (e.g., how far the vanishing point 820 is from the center 810 of the image 800 in the lateral direction or along the X axis and how far the vanishing point 820 is from the center 810 of the image 800 in the longitudinal direction or along the Y axis). If the vanishing point 820 is within the threshold distance of the center 810 of the image 800, the ADV may avoid calibrating the camera (e.g., may not calibrate the camera). For example, because the vanishing point 820 is within the threshold distance of the center 810 of the image 800, the camera may not need to be calibrated. If the vanishing point 820 is not within a threshold distance of the center 810 of the image 800, the ADV may calibrate the camera.

[0096] In one embodiment, the neural network may be trained to represent the vanishing point 820 as a relative distance from the center 810 of the image 800 (e.g., representing the vanishing point 820 as coordinates (D_X, D_Y)). As described above, the neural network may be trained using training data (e.g., training images). The neural network may process and / or analyze the training data and may generate a vanishing point represented as a relative distance from the center of the training image. The location / position of the vanishing point determined by the neural network may be compared to the actual location / position of the vanishing point in the training image. If the location / position of the vanishing point determined by the neural network is not within a threshold relative distance of the location / position of the actual vanishing point, the weights in the neural network may be adjusted. The neural network may be based on the training data. Fig. 6A , Figure 6B and Figure 7 The neural network may continuously reprocess / reanalyze the training image, determine whether the vanishing point determined by the neural network is within a threshold relative distance of the location / position of the actual vanishing point, and re-adjust one or more weights until the vanishing point determined by the neural network is within the threshold relative distance of the location / position of the actual vanishing point in the training image. Because the relative distance to the center of the image is used to determine whether the neural network is trained, the neural network may be configured to represent vanishing points in the image using the relative distance to the center of the image.

[0097] In one embodiment, using relative distances to the center of the image (e.g., D_X and D_Y) can reduce the problem and / or solution space that the neural network can process. For example, if the vanishing point is represented using XY coordinates, the number of possible locations where the vanishing point can be located can span the entire length and width of the image 800 (e.g., the length and width in pixels). However, if the vanishing point is represented using relative distances to the center of the image, the problem space for the neural network to process can be reduced (e.g., it can be reduced by half). Additionally, using relative distances to the center of the image can cause the neural network to focus more attention on locations around the center of the image. This can reduce the amount of time the neural network spends processing / analyzing the image.

[0098] Fig. 9 900 is a flow chart illustrating an exemplary process 900 for detecting vanishing points in an image, according to one embodiment. Process 900 may be performed by processing logic that may include software, hardware, or a combination thereof. Process 900 may be performed by processing logic that may include hardware (e.g., circuits, dedicated logic, programmable logic, processors, processing devices, central processing units (CPUs), system-on-chips (SoCs), etc.), software (e.g., instructions run / executed on a processing device), firmware (e.g., microcode), or a combination thereof. In some embodiments, the processing logic may be performed by a processing device, an AI accelerator, a computing device, an ADV, a planning module (e.g., Figure 3B The planning module 305 shown in FIG. 1 ) and the like execute process 900.

[0099] At block 905, process 900 may optionally train a neural network. For example, at block 906, process 900 may obtain training images (e.g., training data). At block 907, process 900 may detect vanishing points in the training images. As described above, the relative distance to the center of the image may be used (e.g., using Figure 8 At block 908, process 900 may determine the difference between the detected vanishing point and the actual vanishing point of the training image. For example, process 900 may determine the lateral distance and / or longitudinal distance between the detected vanishing point and the actual vanishing point. Fig. 6A , Figure 6B and Figure 7As discussed in , the actual vanishing point may be predetermined by the neural network based on line indicators in the image. At block 909, process 900 may update, adjust, modify, etc., the weights of the neural network. At block 910, process 900 may determine whether a maximum number of iterations has been reached. The maximum number of iterations may be the number of times the neural network is trained using one or more training images (e.g., the maximum number of times the neural network should process one or more training images). For example, the maximum number of iterations may represent the total number of times the neural network should repeat the process of determining vanishing points in the image and updating the neural network weights (based on the difference between the detected vanishing points and the actual vanishing points). Examples of the maximum number of iterations may include 100, 5000, or some other appropriate number. If the maximum number of iterations has not been reached, process 900 may proceed to block 906. If the maximum number of iterations has been reached, process 900 may finalize (e.g., set) the weights of the neural network at block 911.

[0100] At box 915, process 900 may use a neural network to determine a vanishing point of an image. For example, process 900 may receive an image generated and / or captured by a camera (e.g., a sensor) to a neural network, and the neural network may determine a vanishing point of the image. The vanishing point may be represented using a relative distance to the center of the image (e.g., D_X and D_Y as described above). At box 920, process 900 may determine whether to calibrate one or more sensors of the ADV. For example, process 900 may determine whether the vanishing point is within a threshold distance from the center of the image. If one or more sensors should be calibrated, then at box 925, process 900 may calibrate the one or more sensors. If one or more sensors should not be calibrated, then at box 930, process 900 may not calibrate the sensor.

[0101] Fig.10 is a block diagram illustrating an exemplary neural network system 1000 according to one embodiment. In one embodiment, the ADV may use the neural network system 1000 to determine lanes in an image depicting the environment in which the ADV is currently traveling and / or in (e.g., detect, identify, calculate line indicators representing lane lines). The ADV may also use the neural network system 1000 to determine vanishing points in an image depicting the environment in which the ADV is currently traveling and / or in. Fig.10 As shown in , neural network system 1000 includes neural network 1010 and neural network 1020. As described above, neural networks 1010 and 1020 can be executed and run on a processing device such as a graphics processing unit (GPU) and / or other types of artificial intelligence accelerators.

[0102] In one embodiment, neural network 1010 may detect lanes that may be located in image 1005 (image 1005 depicts the environment in which the ADV is currently traveling and / or located). Neural network 1010 may analyze and / or process image 1005 and may output one or more lane line indicators 1015. For example, as described above in Fig. 6A As discussed in , neural network 1010 may generate one or more line indicators 1015. Neural network 1010 may include convolutional layer 1011 and convolutional layer 1012. As described above, neural network 1010 may include other layers, such as an input layer, an output layer, a pooling layer, additional convolutional layers, etc.

[0103] In one embodiment, the neural network 1010 may be a convolutional neural network (CNN) based on an encoder-decoder. For example, the convolutional layer 1011 may be referred to as an encoder, and the convolutional layer 1012 may be referred to as a decoder. The convolutional layer 1011 may perform downsampling functions and / or operations on input data such as the image 1005. The convolutional layer 1011 may be used to identify features in the image 1005. For example, the convolutional layer 1011 may generate a feature map using one or more convolutional filters. The convolutional layer 1012 may perform upsampling functions and / or operations on the feature map generated by the convolutional layer 1011. For example, the convolutional layer 1012 may use the feature map to reconstruct an input having a feature of interest such as a line indicator (indicating lane lines on a road, street, etc.).

[0104] In one embodiment, neural network 1020 may determine a vanishing point in image 1005 (which depicts the environment in which the ADV is currently traveling and / or located). For example, neural network 1020 may determine vanishing point 1025 of image 1005. As described above, the vanishing point may be represented using a relative distance (e.g., D_X, D_Y) from the center of image 1005. Neural network 1020 may be a convolutional neural network (CNN). Neural network 1020 may include convolutional layer 1021 and fully connected layer 1023. As described above, neural network 1020 may include other layers, such as an input layer, an output layer, a pooling layer, additional convolutional layers, and the like.

[0105] like Fig.10As shown in , neural network 1020 is communicatively and / or operatively coupled to neural network 1010. For example, an input of convolutional layer 1021 of neural network 1020 is coupled to an output of convolutional layer 1011 of neural network 1010. In one embodiment, neural network 1020 may not use image 1005 as input. Neural network 1020 may use a feature map generated by convolutional layer 1011 to determine vanishing point 1025. For example, convolutional layer 1021 may use a feature map generated by convolutional layer 1011 to determine vanishing point 1025. As described above, line indicators may be used to determine vanishing points of an image. Therefore, the feature map generated by convolutional layer 1011 (which may be a multi-dimensional (e.g., 2D or 3D) vector, tensor, etc.) may include data and / or information that may represent a line indicator, which may be used to determine vanishing point 1025. Convolutional layer 1021 may also generate a feature map corresponding to a sub-portion or local portion of image 1005. The fully connected layer 1023 can obtain feature maps from the convolutional layer 1021 to transform and / or combine local feature maps to determine a global summary of the local feature maps. The global summary can allow the neural network 1020 to identify vanishing points within the entire image 1005 rather than within a local portion of the image 1005.

[0106] In one embodiment, neural network system 1000 may obtain image 1005 (which may depict an environment in which an ADV is currently located or traveling). For example, neural network system 1000 may receive image 1005 from a camera of the ADV, or may read image 1005 from a data storage (e.g., memory). Neural network system 1000 may determine one or more line indicators (which may represent one or more lanes in the environment) based on image 1005 using neural network 1010. As described above, for example, neural network 1010 may process and / or analyze image 1005. Neural network system 1000 may also determine vanishing points within image 1005 using neural network 1020. For example, neural network 1020 may be coupled to neural network 1010 and may determine vanishing point 1025 using a feature map generated by neural network 1010 (e.g., generated by convolutional layer 1011). Neural network system 1000 may determine one or more line indicators 1015 and vanishing point 1025 simultaneously. For example, neural network 1010 may perform an operation of determining one or more line indicators 1015 at the same time as neural network 1020 performs an operation of determining vanishing point 1025 .

[0107] In one embodiment, ADV (e.g., Figure 21005 ) can determine whether one or more sensors should be calibrated based on the vanishing point 1025. For example, if the camera (sensor) is properly calibrated, the vanishing point 1025 detected by the neural network can be located at the center of the image 1005 or within a threshold distance from the center of the image 1005. If the vanishing point 1025 is within a threshold distance from the center of the image 1005, the ADV can avoid calibrating the camera (e.g., the camera may not be calibrated). For example, because the vanishing point 1025 is within a threshold distance from the center of the image 1005, the camera may not need to be calibrated. If the vanishing point 1025 is not within a threshold distance from the center of the image 1005, the ADV may calibrate the camera.

[0108] In one embodiment, ADV (e.g., Figure 3A and 3B The perception and planning system 110 (shown in FIG. 10 , the planning module 305 ) can determine a path for the ADV through the environment based on the line indicator 1015 . For example, the ADV can identify a path along a lane indicated by the line indicator 1015 . The ADV can control the ADV based on the path. For example, the perception and planning system 110 (shown in FIG. 10 ) can determine a path for the ADV through the environment based on the line indicator 1015 . For example, the ADV can identify a path along a lane indicated by the line indicator 1015 . The ADV can control the ADV based on the path. Figure 3A ) can cause the ADV to travel along the path.

[0109] As described above, neural networks may be trained before they are deployed and / or used. For example, neural networks 1010 and neural networks 1020 may be trained using training data (e.g., training images) before ADV uses them. Neural network system 1000 may allow for more flexible and / or different training strategies when training neural networks 1010 and neural networks 1020. In one embodiment, neural network 1010 may be trained separately from neural network 1020. Neural network 1010 and neural network 1020 may be trained at different points in time (e.g., neural network 1010 may be trained first, and neural network 1020 may then be trained). In another example, neural network 1010 and neural network 1020 may be trained using different training data. For example, a first set of training images may be used to train neural network 1010, and a second set of training images may be used to train neural network 1020. In another embodiment, neural network 1010 and neural network 1020 may be trained simultaneously. For example, neural network 1010 and neural network 1020 may be trained in overlapping time periods (e.g., neural network 1010 may be trained while neural network 1020 is being trained). In another example, neural network 1010 and neural network 1020 may be trained using the same training data. For example, neural network 1010 and neural network 1020 may be trained using the same set of training images. By allowing different training strategies to be used, neural network system 1000 allows a user to use a training strategy that provides better accuracy and / or better inferences. For example, ADV may be able to determine whether training neural network 1010 and neural network 1020 separately will allow neural networks 1010 and 1020 to generate more accurate results than training neural networks 1010 and 1020 simultaneously.

[0110] Additionally, neural network system 1000 may allow existing neural networks to be used in conjunction with newer neural networks. For example, neural network 1010 may be a pre-existing neural network that ADV uses to detect line indicators. Because second neural network 1020 may also use the same line indicators to detect vanishing points, second neural network 1020 may be coupled and / or integrated with first neural network 1010. This allows second neural network 1020 to work with existing neural network 1010.

[0111] Fig.111 is a flow chart illustrating an exemplary method for detecting vanishing points. Process 1100 may be performed by processing logic that may include software, hardware, or a combination thereof. Process 1100 may be performed by processing logic that may include hardware (e.g., circuits, dedicated logic, programmable logic, processors, processing devices, central processing units (CPUs), system-on-chips (SoCs), etc.), software (e.g., instructions run / executed on a processing device), firmware (e.g., microcode), or a combination thereof. In some embodiments, the processing logic may be performed by a processing device, an AI accelerator, a computing device, an ADV, a planning module (e.g., Figure 3B The planning module 305 shown in FIG. 11 ) and the like execute process 1100.

[0112] At block 1105, process 1100 may optionally train the first neural network and the second neural network. As described above, the first neural network and the second neural network may be trained separately or simultaneously. Also as described above, the first neural network may be used to determine (e.g., detect, identify, generate, calculate, etc.) a line indicator that may indicate a lane line in the image. The second neural network may be used to determine a vanishing point in the image. Fig.10 As shown in , the first neural network can be connected to the second neural network. At box 1110, an image can be obtained. For example, the image can be generated and / or captured by a camera (e.g., a sensor) of the ADV. Process 1100 can receive the image from the camera, or can read the image from a data storage (e.g., a memory, a hard drive, a flash drive, etc.). At box 1115, process 1100 can use the first neural network to determine one or more lane line indicators of the image. Process 1100 can also use the second neural network to simultaneously determine the vanishing point of the image. For example, both the first neural network and the second neural network can run simultaneously (e.g., there is at least some overlap between the time when the first neural network determines the line indicator and the time when the second neural network is used). As described above, the second neural network can use the feature map generated by the first neural network. The vanishing point can be represented using a relative distance to the center of the image (e.g., D_X and D_Y as described above). At box 1130, process 1100 can determine whether to calibrate one or more sensors of the ADV. For example, process 1100 can determine whether the vanishing point is within a threshold distance from the center of the image. If one or more sensors should be calibrated, then at box 1140, process 1100 can calibrate the one or more sensors. If one or more sensors should not be calibrated, then at block 1135 , process 1100 can refrain from calibrating the sensors.

[0113] It should be noted that some or all of the components as shown and described herein can be implemented in software, hardware, or a combination thereof. For example, such components can be implemented as software installed and stored in a permanent storage device, which can be loaded in a memory by a processor (not shown) and executed in the memory to implement the process or operation described throughout the present application. Alternatively, such components can be implemented as executable code programmed or embedded in dedicated hardware (such as an integrated circuit (e.g., an application-specific integrated circuit or ASIC), a digital signal processor (DSP), or a field programmable gate array (FPGA)), which can be accessed via a corresponding driver and / or operating system from an application. In addition, such components can be implemented as specific hardware logic in a processor or processor core as part of an instruction set that can be accessed by a software component through one or more specific instructions.

[0114] Fig.12 is a block diagram illustrating an example of a data processing system that can be used with one embodiment of the present disclosure. For example, system 1500 can represent any data processing system described above that performs any of the above processes or methods, such as Figure 1 The perception and planning system 110 or any one of the servers 103-104 and Figure 3A Path optimizer 309. System 1500 may include many different components. These components may be implemented as integrated circuits (ICs), portions of integrated circuits, discrete electronic devices, or other modules suitable for circuit boards (such as motherboards or plug-in cards of computer systems) or as components otherwise incorporated into the chassis of computer systems.

[0115] It should also be noted that system 1500 is intended to illustrate a high-level view of many components of a computer system. However, it should be understood that additional components may be provided in some embodiments, and in addition, different arrangements of the components shown may be provided in other embodiments. System 1500 may represent a desktop computer, a laptop computer, a tablet computer, a server, a mobile phone, a media player, a personal digital assistant (PDA), a smart watch, a personal communicator, a gaming device, a network router or hub, a wireless access point (AP) or a repeater, a set-top box, or a combination thereof. In addition, although only a single machine or system is shown, the term "machine" or "system" should also be understood to include any set of machines or systems that individually or collectively execute one (or more) instruction sets to execute any one or more methods discussed herein.

[0116] In one embodiment, system 1500 includes a processor 1501, a memory 1503, and devices 1505 to 1508 connected by a bus or interconnect 1510. Processor 1501 may represent a single processor or multiple processors including a single processor core or multiple processor cores. Processor 1501 may represent one or more general-purpose processors, such as a microprocessor, a central processing unit (CPU), etc. More specifically, processor 1501 may be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets, or a processor implementing a combination of instruction sets. Processor 1501 may also be one or more special-purpose processors, such as an application-specific integrated circuit (ASIC), a cellular or baseband processor, a field programmable gate array (FPGA), a digital signal processor (DSP), a network processor, a graphics processor, a communication processor, an encryption processor, a coprocessor, an embedded processor, or any other type of logic capable of processing instructions.

[0117] Processor 1501 (which may be a low-power multi-core processor socket, such as an ultra-low voltage processor) may serve as a main processing unit and central hub for communicating with various components of the system. Such a processor may be implemented as a system on a chip (SoC). Processor 1501 is configured to execute instructions for performing the operations and steps discussed herein. System 1500 may also include a graphics interface that communicates with an optional graphics subsystem 1504, which may include a display controller, a graphics processor, and / or a display device.

[0118] The processor 1501 may communicate with the memory 1503, which in one embodiment may be implemented via a plurality of memory devices to provide a certain amount of system storage. The memory 1503 may include one or more volatile storage (or memory) devices, such as random access memory (RAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), static RAM (SRAM), or other types of storage devices. The memory 1503 may store information including sequences of instructions to be executed by the processor 1501 or any other device. For example, executable code and / or data of various operating systems, device drivers, firmware (e.g., input-output basic system or BIOS), and / or applications may be loaded into the memory 1503 and executed by the processor 1501. The operating system may be any type of operating system, such as the Robot Operating System (ROS), a Company Operating system from Apple From Company LINUX, UNIX, or other real-time or embedded operating systems.

[0119] System 1500 may also include IO devices, such as devices 1505 to 1508, including a network interface device 1505, an optional input device 1506, and other optional IO devices 1507. The network interface device 1505 may include a wireless transceiver and / or a network interface card (NIC). The wireless transceiver may be a WiFi transceiver, an infrared transceiver, a Bluetooth transceiver, a WiMax transceiver, a wireless cellular phone transceiver, a satellite transceiver (e.g., a global positioning system (GPS) transceiver) or other radio frequency (RF) transceivers or combinations thereof. The NIC may be an Ethernet card.

[0120] Input device 1506 may include a mouse, a touchpad, a touch-sensitive screen (which may be integrated with display device 1504), a pointer device (such as a stylus), and / or a keyboard (e.g., a physical keyboard or a virtual keyboard displayed as part of a touch-sensitive screen). For example, input device 1506 may include a touch screen controller coupled to a touch screen. The touch screen and touch screen controller may, for example, use any of a variety of touch-sensitive technologies (including, but not limited to, capacitive, resistive, infrared, and surface acoustic wave technologies), as well as other proximity sensor arrays or other elements for determining one or more points of contact with the touch screen to detect contact and movement or discontinuity thereof.

[0121] IO devices 1507 may include audio devices. The audio devices may include speakers and / or microphones to facilitate voice-enabled functions such as voice recognition, voice replication, digital recording, and / or telephone functions. Other IO devices 1507 may also include universal serial bus (USB) ports, parallel ports, serial ports, printers, network interfaces, bus bridges (e.g., PCI-PCI bridges), sensors (e.g., such as accelerometer motion sensors, gyroscopes, magnetometers, light sensors, compasses, proximity sensors, etc.), or combinations thereof. Device 1507 may also include an imaging processing subsystem (e.g., a camera), which may include an optical sensor such as a charge-coupled device (CCD) or a complementary metal oxide semiconductor (CMOS) optical sensor for facilitating camera functions (e.g., recording photos and video clips). Certain sensors may be connected to interconnect 1510 via a sensor hub (not shown), while other devices such as a keyboard or thermal sensor may be controlled by an embedded controller (not shown) according to the specific configuration or design of system 1500.

[0122] In order to provide permanent storage of information such as data, applications, one or more operating systems, etc., a mass storage device (not shown) may also be connected to the processor 1501. In various embodiments, in order to achieve a thinner and lighter system design and improve system responsiveness, such a mass storage device may be implemented via a solid-state device (SSD). However, in other embodiments, the mass storage device may be implemented primarily using a hard disk drive (HDD), wherein a smaller amount of SSD storage devices act as SSD caches to achieve non-volatile storage of context states and other such information during power-off events, thereby enabling fast power-on when system activities are restarted. In addition, a flash memory device may be connected to the processor 1501, for example, via a serial peripheral interface (SPI). Such a flash memory device may provide non-volatile storage of system software, including the BIOS and other firmware of the system.

[0123] The storage device 1508 may include a computer-accessible storage medium 1509 (also referred to as a machine-readable storage medium or a computer-readable medium) on which is stored one or more instruction sets or software (e.g., modules, units, and / or logic 1528) embodying any one or more of the methods or functions described herein. The processing module / unit / logic 1528 may represent any of the above-mentioned components, such as the planning module 305, the control module 306, and the path optimizer 309. The processing module / unit / logic 1528 may also reside completely or at least partially in the memory 1503 and / or in the processor 1501 during its execution by the data processing system 1500, the memory 1503, and the processor 1501, which also constitute a machine-accessible storage medium. The processing module / unit / logic 1528 may also be transmitted or received via the network interface device 1505 via the network.

[0124] Computer-readable storage medium 1509 may also be used to permanently store some of the software functions described above. Although computer-readable storage medium 1509 is shown as a single medium in an exemplary embodiment, the term "computer-readable storage medium" should be considered to include a single medium or multiple media (e.g., a centralized or distributed database and / or associated caches and servers) storing the one or more instruction sets. The term "computer-readable storage medium" should also be considered to include any medium capable of storing or encoding an instruction set that is used to be executed by a machine and causes the machine to perform any one or more methods of the present disclosure. Therefore, the term "computer-readable storage medium" should be considered to include, but is not limited to, solid-state memory and optical and magnetic media, or any other non-temporary machine-readable medium.

[0125] The processing modules / units / logic 1528, components, and other features described herein may be implemented as discrete hardware components or integrated into the functionality of hardware components (such as ASICS, FPGAs, DSPs, or similar devices). In addition, the processing modules / units / logic 1528 may be implemented as firmware or functional circuits within a hardware device. In addition, the processing modules / units / logic 1528 may be implemented in any combination of hardware devices and software components.

[0126] It should be noted that although system 1500 is shown as having various components of a data processing system, it is not intended to represent any particular architecture or manner of interconnecting the components; as such details are not germane to the embodiments of the present disclosure. It should also be appreciated that network computers, handheld computers, mobile phones, servers, and / or other data processing systems having fewer or possibly more components may also be used with embodiments of the present disclosure.

[0127] Some portions of the foregoing detailed description have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is generally considered herein to be a self-consistent sequence of operations leading to a desired result. These operations are those requiring physical manipulation of physical quantities.

[0128] It should be borne in mind, however, that all of these and similar terms are intended to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless otherwise expressly indicated in the above discussion, it should be understood that throughout the specification, discussions utilizing terms such as those set forth in the appended claims refer to the actions and processes of a computer system or similar electronic computing device that manipulates data represented as physical (electronic) quantities within the computer system's registers and memories and transforms the data into other data similarly represented as physical quantities within the computer system's memories or registers or other such information storage, transmission, or display devices.

[0129] Embodiments of the present disclosure also relate to devices for performing the operations herein. Such a computer program is stored in a non-transitory computer-readable medium. A machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer). For example, a machine-readable (e.g., computer-readable) medium includes a machine (e.g., computer) readable storage medium (e.g., a read-only memory ("ROM"), a random access memory ("RAM"), a magnetic disk storage medium, an optical storage medium, a flash memory device).

[0130] The processes or methods depicted in the foregoing figures may be performed by processing logic including hardware (e.g., circuits, dedicated logic, etc.), software (e.g., embodied on a non-transitory computer-readable medium), or a combination of both. Although the processes or methods are described above in terms of some sequential operations, it should be understood that some of the operations may be performed in a different order. In addition, some operations may be performed in parallel rather than sequentially.

[0131] The embodiments of the present disclosure are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages ​​may be used to implement the teachings of the embodiments of the present disclosure as described herein.

[0132] In the above description, embodiments of the present invention have been described with reference to specific exemplary embodiments of the present disclosure. It will be apparent that various modifications may be made to the present disclosure without departing from the broader spirit and scope of the present invention as set forth in the appended claims. Therefore, the present description and the accompanying drawings should be understood in an illustrative sense rather than a restrictive sense.

Claims

1. A method comprising: Obtaining an image depicting the environment in which the autonomous vehicle is located; Determining a vanishing point in the image using a neural network based on the longest line segments corresponding to a plurality of line indicators, wherein the vanishing point is represented by the neural network as a relative distance from a center of the image, the line segment being the longest straight line portion of the line indicator within an upper boundary and a lower boundary of the image, or the line segment being the longest straight line portion of the line indicator closest to a lower boundary of the image, and the line segment being fitted to the line indicator based on a threshold number of points and a threshold distance; as well as One or more sensors of the autonomous vehicle are calibrated based on the vanishing point.

2. The method according to claim 1, wherein: The relative distance from the center of the image includes a relative lateral distance from the center of the image and a relative longitudinal distance from the center of the image.

3. The method according to claim 1, further comprising: The neural network is trained to represent the vanishing point as a relative distance from a center of the image.

4. The method according to claim 3, wherein: Training the neural network to represent the vanishing point as a relative distance from a center of the image comprises: obtaining a training image depicting an environment in which the autonomous vehicle may be located; determining a second vanishing point of the training image, wherein the second vanishing point is represented by a first relative distance; determining a difference between the second vanishing point of the training image and an actual vanishing point; Based on the difference between the second vanishing point of the training image and an actual vanishing point, a weight of the neural network is adjusted.

5. The method according to claim 1, further comprising: A determination is made based on the vanishing point whether the one or more sensors should be calibrated.

6. The method according to claim 5, wherein: The one or more sensors are calibrated in response to determining that the one or more sensors should be calibrated.

7. The method according to claim 5, further comprising: Calibrating the one or more sensors is avoided in response to determining that the one or more sensors should not be calibrated.

8. The method according to claim 1, wherein: The images are received from one or more cameras of the autonomous vehicle.

9. A non-transitory machine-readable medium storing instructions, which when executed by a processor causes the processor to perform operations comprising: Obtaining an image depicting the environment in which the autonomous vehicle is located; Determining a vanishing point in the image using a neural network based on the longest line segments corresponding to a plurality of line indicators, wherein the vanishing point is represented by the neural network as a relative distance from a center of the image, the line segment being the longest straight line portion of the line indicator within an upper boundary and a lower boundary of the image, or the line segment being the longest straight line portion of the line indicator closest to a lower boundary of the image, and the line segment being fitted to the line indicator based on a threshold number of points and a threshold distance; as well as One or more sensors of the autonomous vehicle are calibrated based on the vanishing point.

10. The non-transitory machine-readable medium of claim 9, wherein: The relative distance from the center of the image includes a relative lateral distance from the center of the image and a relative longitudinal distance from the center of the image.

11. The non-transitory machine-readable medium of claim 9, the operations further comprising: The neural network is trained to represent the vanishing point as a relative distance from a center of the image.

12. The non-transitory machine-readable medium of claim 11, wherein: Training the neural network to represent the vanishing point as a relative distance from a center of the image comprises: obtaining a training image depicting an environment in which the autonomous vehicle may be located; determining a second vanishing point of the training image, wherein the second vanishing point is represented by a first relative distance; determining a difference between the second vanishing point of the training image and an actual vanishing point; Based on the difference between the second vanishing point of the training image and an actual vanishing point, a weight of the neural network is adjusted.

13. The non-transitory machine-readable medium of claim 9, wherein: The operations also include: A determination is made based on the vanishing point whether the one or more sensors should be calibrated.

14. The non-transitory machine-readable medium of claim 13, wherein: The one or more sensors are calibrated in response to determining that the one or more sensors should be calibrated.

15. The non-transitory machine-readable medium of claim 13, wherein: The operations also include: Calibrating the one or more sensors is avoided in response to determining that the one or more sensors should not be calibrated.

16. The non-transitory machine-readable medium of claim 9, wherein: The images are received from one or more cameras of the autonomous vehicle.

17. A data processing system comprising: processor; as well as a memory coupled to the processor to store instructions that, when executed by the processor, cause the processor to perform operations comprising: Obtaining an image depicting the environment in which the autonomous vehicle is located; Determining a vanishing point in the image using a neural network based on the longest line segments corresponding to a plurality of line indicators, wherein the vanishing point is represented by the neural network as a relative distance from a center of the image, the line segment being the longest straight line portion of the line indicator within an upper boundary and a lower boundary of the image, or the line segment being the longest straight line portion of the line indicator closest to a lower boundary of the image, and the line segment being fitted to the line indicator based on a threshold number of points and a threshold distance; and One or more sensors of the autonomous vehicle are calibrated based on the vanishing point.

18. The data processing system according to claim 17, wherein: The relative distance from the center of the image includes a relative lateral distance from the center of the image and a relative longitudinal distance from the center of the image.

19. The data processing system according to claim 17, wherein: The operations also include: The neural network is trained to represent the vanishing point as a relative distance from a center of the image.

20. The data processing system according to claim 19, wherein: Training the neural network to represent the vanishing point as a relative distance from a center of the image comprises: obtaining a training image depicting an environment in which the autonomous vehicle may be located; determining a second vanishing point of the training image, wherein the second vanishing point is represented by a first relative distance; determining a difference between the second vanishing point of the training image and an actual vanishing point; Based on the difference between the second vanishing point of the training image and an actual vanishing point, a weight of the neural network is adjusted.

Citation Information

Patent Citations

  • Vehicle-to-vehicle distance calculation apparatus and method

    CN104021541A

  • Method Of Detecting An Overtaking Vehicle, Related Processing System, Overtaking Vehicle Detection System And Vehicle

    CN107845104A

  • High resolution 3D point clouds generation based on CNN and CRF models

    CN109215067A

  • Method and system for dynamically calibrating vehicular cameras

    US20150049193A1

  • Method, apparatus, and system for vanishing point / horizon estimation using lane models

    US20190034740A1