A self-driving car, also known as an autonomous vehicle (AV), connected and autonomous vehicle (CAV), driverless car, robot-car, or robotic car, is a vehicle that is capable of sensing its environment and moving safely with little or no human input. Self-driving cars combine a variety of sensors to perceive their surroundings. Advanced control systems interpret sensory information to identify appropriate navigation paths, as well as obstacles and relevant signage. The testing of vehicles with varying degrees of automation can be carried out either physically, in a closed environment or, where permitted, on public roads (typically requiring a license or permit, or adhering to a specific set of operating principles), or in a virtual environment, i.e. using computer simulations.
In the following description, various embodiments will be described. For purposes of explanation, specific configurations and details are set forth in order to provide a thorough understanding of the embodiments. However, it will also be apparent to one skilled in the art that the embodiments may be practiced without the specific details. Furthermore, well-known features may be omitted or simplified in order not to obscure the embodiment being described. In addition, the embodiments disclosed herein are only examples, and the scope of this disclosure is not limited to them. Particular embodiments may include all, some, or none of the components, elements, features, functions, operations, or steps of the embodiments disclosed above. Embodiments according to the invention are in particular disclosed in the attached claims directed to a method, a storage medium, a system and a computer program product, wherein any feature mentioned in one claim category, e.g., method, can be claimed in another claim category, e.g., system, as well. The dependencies or references back in the attached claims are chosen for formal reasons only. However, any subject matter resulting from a deliberate reference back to any previous claims (in particular multiple dependencies) can be claimed as well, so that any combination of claims and the features thereof are disclosed and can be claimed regardless of the dependencies chosen in the attached claims. The subject-matter which can be claimed comprises not only the combinations of features as set out in the attached claims but also any other combination of features in the claims, wherein each feature mentioned in the claims can be combined with any other feature or combination of other features in the claims. Furthermore, any of the embodiments and features described or depicted herein can be claimed in a separate claim and/or in any combination with any embodiment or feature described or depicted herein or with any of the features of the attached claims.
A simulation is an approximate imitation of the operation of a process or system that represents its operation over time. Simulation is used in many contexts, such as simulation of technology for performance tuning or optimizing, safety engineering, testing, training, education, and video games. Often, computer experiments are used to study simulation models. Simulation is also used with scientific modelling of natural systems or human systems to gain insight into their functioning, as in economics. Simulation can be used to show the eventual real effects of alternative conditions and courses of action. Simulation is also used when the real system cannot be engaged, because it may not be accessible, or it may be dangerous or unacceptable to engage, or it is being designed but not yet built, or it may simply not exist. Key issues in simulation include the acquisition of valid sources of information about the relevant selection of key characteristics and behaviors, the use of simplifying approximations and assumptions within the simulation, and fidelity and validity of the simulation outcomes. Procedures and protocols for model verification and validation are an ongoing field of academic study, refinement, research and development in simulations technology or practice, particularly in the work of computer simulation.
Large amount of data representative of the world may be necessary for simulation test of the performance of autonomous vehicles (AV). The simulation test may help determine the solutions in various scenarios an autonomous vehicle may find itself in. As an example and not by way of limitation, these scenarios may include if the autonomous vehicle is near a traffic light or a stop sign, how does it relate to lane boundaries, how do other agents behave in the world around the autonomous vehicle, is there any vehicle cutting in, is there anything in front of the autonomous vehicle, is there anyone stopping in front of the autonomous vehicle, etc. Corresponding to these scenarios, the simulation test may test how the autonomous vehicle performs, e.g., whether it collides with any of the agents in the simulation, whether it drives smoothly, whether its trajectory matches more or less with that of a human-driving vehicle in the simulations, etc. The simulation test may help determine whether the autonomous vehicle performance is good enough to react accurately and efficiently to these aforementioned scenarios. If the autonomous vehicle does well in a simulation test based on such data, we may have high confidence that the autonomous vehicle may carry out the job of self-driving in the real world.
For effective simulation test, the testing data should be representative of the world having extensive coverage of diverse scenarios on the road and also have high accuracy.
As can be seen in the examples in
To be more realistic and to capture more complete data from real world situations, one may rely on a large number of human-driving vehicles equipped with cheaper and less sophisticated sensors (e.g., cameras, GPS sensor, odometry inertial measurement units) compared to sophisticated AV sensors to capture data capturing all the scenarios. However, the accuracy and quality of such data may not measure up to data collected by autonomous vehicles using sophisticated AV sensors because it balances using cheaper sensors to collect a higher volume of data and at a lower cost. As an example and not by way of limitation, the data may contain inaccuracies about the positions, trajectories, and speed of agents, etc. because of the low sensitivity of the sensors. The data may be also incomplete, e.g., missing capturing the agents because the cameras cannot see quite far ahead or don't have 360-degree field of view.
To obtain sufficient testing data that is both accurate and diverse (i.e., capturing all the driving scenarios), the embodiments disclosed herein may use different approaches to generate testing data based on data collected by vehicles equipped with low-sensitivity sensors. The data may be collected by fleet vehicles, rideshare vehicles, other autonomous-driving vehicles, etc. as long as these vehicles are implemented with these low-sensitivity sensors. In one approach, a computing system may generate testing data directly from such data simulating what we have observed in the world. In another approach, the computing system may determine low-level parameters that characterize features of the observed scenes from such data and then build testing data on top of these parameters. In yet another approach, the computing system may determine key trajectory features of a scene in such data, create a smooth trajectory that fits these trajectory features using interpolations, and then generate testing data based on the smooth trajectory. In particular embodiments, a smooth trajectory may satisfy position and velocity boundary conditions at start and end points with high precision. The smooth trajectory may additionally respect collision, velocity, acceleration and jerk constraints. The generated testing data may have extended coverage of real-world scenarios as the embodiments disclosed herein may fabricate data corresponding to new scenarios that haven't been captured in the real world.
In particular embodiments, a computing system may receive parameter data associated with one or more trajectories captured using at least one sensor associated with one or more vehicles. The computing system may then determine, based on the one or more trajectories, a parameter distribution associated with one or more movement parameters for the parameter data. In particular embodiments, the computing system may adjust the parameter distribution for the parameter data associated with the one or more movement parameters up to a respective threshold constraint. The respective threshold constraint may be based on at least one of the parameter data or the one or more movement parameters. The computing system may further generate one or more driving simulations that are based on the adjusted parameter distribution for the parameter data. In particular embodiments, the computing system may evaluate an autonomous-driving system using the one or more driving simulations.
In particular embodiments, the computing system may use different approaches to generate testing data for simulation test. The first approach may be a direct approach based on data collected by vehicles equipped with low-sensitivity sensors simulating what we have observed in the world. Such data may be a very large-scale data collection. When creating the simulation test data using such data, the computing system may generate a plurality of data associated with a driving environment such as location, perception, trajectory, agents around autonomous vehicles, etc. Taking the scenario in
The second approach may be an indirect approach built upon low-level parameters that characterize features of the observed scenes from data collected by vehicles equipped with low-sensitivity sensors.
In particular embodiments, the parameter distribution 410 generated from the data collected by vehicles equipped with low-sensitivity sensors may provide limited and/or restricted information on what could happen in the real world. To diversify the coverage of the real-world scenarios, e.g., what could happen even if no data captured such possibility, the computing system may adjust the parameter distribution 410 by relaxing the parameters associated with it to diversify the observed scenes and create more interesting driving scenarios. The computing system may focus on the deviations that could happen and deviate from what has been observed by relaxing some parameters for generating simulation test data of vehicle-cutting-in-lane scenarios. In particular embodiments, the parameterizations and obstacle space description may be seen as constraints, which may be generated from the data collected by vehicles equipped with low-sensitivity sensors. The computing system may then use those constraints to sample from a larger distribution. In particular embodiments, the computing system may adjust the parameter distribution 410 for the parameter data associated with the one or more movement parameters further based on one or more principles associated with the trajectories 405. In particular embodiments, the principles may comprise one or more of parameters or constraints of the trajectories. As illustrated in
Taking the vehicle-cutting-in-lane scenario in
In particular embodiments, one may observe the real-world scenarios more accurately with the AV-collected data and less accurately with the data collected by vehicles equipped with low-sensitivity sensors. Therefore, the computing system may use the AV-collected data 420 to make the observation of the real world more accurately. To do so, the computing system may create synthesized driving-scenario simulator 425 (a.k.a., simulation template) with identified parameters. The driving-scenario simulator 425 may be considered as an accurate blueprint, i.e., a natural traffic point that is obtained from the AV-collected data 420. In particular embodiments, the computing system may generate a driving-scenario simulator 425 based on a plurality of high-quality data captured using one or more high-quality sensors associated with a plurality of autonomous-driving vehicles, i.e., the AV-collected data 420. The one or more high-quality sensors may have higher accuracy than the at least one sensor. In particular embodiments, generating the one or more driving simulations may be further based on the driving-scenario simulator. As an example and not by way of limitation, the computing system may further generate simulation test data 430 by integrating the adjusted parameter distribution 415 with the driving-scenario simulator 425. As an example and not by way of limitation, the driving-scenario simulator 425 may comprise a vehicle-cutting-in-lane blueprint. Then the computing system may parametrize this blueprint based on the adjusted parameter distribution 415. For instance, the computing system may select an accurate trajectory of an observed vehicle near an autonomous vehicle, which is the blueprint from the AV-collected data 420. The computing system may then parameterize the trajectory based on the adjusted parameter distribution 415, e.g., by making the trajectory cutting in front of the autonomous vehicle. This way, the inaccuracies in the data collected by vehicles equipped with low-sensitivity sensors (e.g., not observing the cutting-in vehicle due to no camera coverage on the side) may be removed by the accurate trajectory. As a result, the generated simulation test data 430 may be more accurate and less noisy thanks to simulation based on the measured parameters. Furthermore, the generated simulation test data 430 may have a better coverage of real-world scenarios thanks to the large amount of data collected by vehicles equipped with low-sensitivity sensors. As illustrated in
In particular embodiments, the third approach may be using key trajectory features of the trajectories 405. The computing system may identify one or more trajectory features associated with each of the one or more trajectories 405 based on the corresponding parameter data 305. The computing system may then create a smooth trajectory that fits the one or more trajectory features for each of the trajectories 405. In particular embodiments, a smooth trajectory fitting trajectory features may indicate the trajectory has the best fit to a series of data points represented by the trajectory features (e.g., based on mathematical functions), possibly subject to constraints. The fitting of these trajectory features may involve either interpolation, where an exact fit to the data is required, or smoothing, in which a “smooth” function is constructed that approximately fits the data. As an example and not by way of limitation, the smooth trajectory may not exceed the bounds of the trajectory features. e.g., if the trajectory feature is 30 degrees angle then the trajectory cannot exceed that. In particular embodiments, the computing system may determine a respective confidence score for each of the one or more trajectory features. The computing system may then rank the one or more trajectory features based on their respective confidence scores. The computing system may further select one or more top-ranked trajectory features. Under this condition, creating the smooth trajectory may be based on the one or more top-ranked trajectory features. In particular embodiments, generating the one or more driving simulations may be further based on the smooth trajectory for each of the trajectories 405.
In particular embodiments, the one or more trajectory features may comprise one or more of a waypoint corresponding to a snapshot of an agent (e.g., vehicle or pedestrian) in time, a distance of the trajectory to the agent, an acceleration associated with the trajectory, a speed associated with the trajectory, a comfort feature associated with the trajectory, or a safety feature associated with the trajectory. In particular embodiments, the waypoint may be specified in absolute coordinates, e.g., (x-axis, y-axis, z-axis, and time). In alternative embodiments, the waypoint may be specified in relative coordinates (e.g., in the middle of the right lane, one second after the light turns red, etc.). In particular embodiments, the computing system may take trajectory features associated with the trajectory 405 and generate one or more interpolations between the one or more trajectory features (e.g., by placing them one every second). After that, simulation test data 435 may be generated by creating a smooth trajectory that fits the trajectory features. In particular embodiments, interpolation may be in-betweening, or filling the data points of a trajectory based on the trajectory features. The interpolations may calculate the in-between trajectory features through use of, e.g., polynomial interpolations. These trajectory features may correspond to measurements that are rather widely separated in space or time, and represent the desired result, but only in very coarse steps. The interpolation process may be then used to insert many new measurements in between these trajectory features to give a “smoother” result.
Perception module 710 is responsible for correlating and fusing the data from the different types of sensors of the sensor module 705 to model the contextual environment of the vehicle. Perception module 710 may use information extracted by multiple independent sensors to provide information that would not be available from any single type of sensors. Combining data from multiple sensor types allows the perception module 710 to leverage the strengths of different sensors and more accurately and precisely perceive the environment. As an example and not by way of limitation, image-based object recognition may not work well in low-light conditions. This may be compensated by sensor data from LiDAR or radar, which are effective sensors for measuring distances to targets in low-light conditions. As another example, image-based object recognition may mistakenly determine that an object depicted in a poster is an actual three-dimensional object in the environment. However, if depth information from a LiDAR is also available, the perception module 710 could use that additional information to determine that the object in the poster is not, in fact, a three-dimensional object.
Perception module 710 may process the available data (e.g., sensor data, data from a high-definition map, etc.) to derive information about the contextual environment. For example, perception module 710 may include one or more agent modelers (e.g., object detectors, object classifiers, or machine-learning models trained to derive information from the sensor data) to detect and/or classify agents present in the environment of the vehicle (e.g., other vehicles, pedestrians, moving objects). Perception module 710 may also determine various characteristics of the agents. For example, perception module 710 may track the velocities, moving directions, accelerations, trajectories, relative distances, or relative positions of these agents. In particular embodiments, the perception module 710 may also leverage information from a high-definition map. The high-definition map may include a precise three-dimensional model of the environment, including buildings, curbs, street signs, traffic lights, and any stationary fixtures in the environment. Using the vehicle's GPS data and/or image-based localization techniques (e.g., simultaneous localization and mapping, or SLAM), the perception module 710 could determine the pose (e.g., position and orientation) of the vehicle or the poses of the vehicle's sensors within the high-definition map. The pose information, in turn, may be used by the perception module 710 to query the high-definition map and determine what objects are expected to be in the environment.
Perception module 710 may use the sensor data from one or more types of sensors and/or information derived therefrom to generate a representation of the contextual environment of the vehicle. As an example and not by way of limitation, the representation of the external environment may include objects such as other vehicles, curbs, debris, objects, and pedestrians. The contextual representation may be limited to a maximum range of the sensor array (e.g., 50, 100, or 200 meters). The representation of the contextual environment may include information about the agents and objects surrounding the vehicle, as well as semantic information about the traffic lanes, traffic rules, traffic signs, time of day, weather, and/or any other suitable information. The contextual environment may be represented in any suitable manner. As an example and not by way of limitation, the contextual representation may be encoded as a vector or matrix of numerical values, with each value in the vector/matrix corresponding to a predetermined category of information. For example, each agent in the environment may be represented by a sequence of values, starting with the agent's coordinate, classification (e.g., vehicle, pedestrian, etc.), orientation, velocity, trajectory, and so on. Alternatively, information about the contextual environment may be represented by a raster image that visually depicts the agent, semantic information, etc. For example, the raster image may be a birds-eye view of the vehicle and its surrounding, up to a predetermined distance. The raster image may include visual information (e.g., bounding boxes, color-coded shapes, etc.) that represent various data of interest (e.g., vehicles, pedestrians, lanes, buildings, etc.).
The representation of the present contextual environment from the perception module 710 may be consumed by a prediction module 715 to generate one or more predictions of the future environment. For example, given a representation of the contextual environment at time t0, the prediction module 715 may output another contextual representation for time t1. For instance, if the t0 contextual environment is represented by a raster image, the output of the prediction module 715 may be another raster image (e.g., a snapshot of the current environment) that depicts where the agents would be at time t1 (e.g., a snapshot of the future). In particular embodiments, prediction module 715 may include a machine-learning model (e.g., a convolutional neural network, a neural network, a decision tree, support vector machines, etc.) that may be trained based on previously recorded contextual and sensor data. For example, one training sample may be generated based on a sequence of actual sensor data captured by a vehicle at times t0 and t1. The captured data at times t0 and t1 may be used to generate, respectively, a first contextual representation (the training data) and a second contextual representation (the associated ground-truth used for training). During training, the machine-learning model may process the first contextual representation using the model's current configuration parameters and output a predicted contextual representation. The predicted contextual representation may then be compared to the known second contextual representation (i.e., the ground-truth at time t1). The comparison may be quantified by a loss value, computed using a loss function. The loss value may be used (e.g., via back-propagation techniques) to update the configuration parameters of the machine-learning model so that the loss would be less if the prediction were to be made again. The machine-learning model may be trained iteratively using a large set of training samples until a convergence or termination condition is met. For example, training may terminate when the loss value is below a predetermined threshold. Once trained, the machine-learning model may be used to generate predictions of future contextual representations based on current contextual representations.
Planning module 720 may determine the navigation routes and particular driving operations (e.g., slowing down, speeding up, stopping, swerving, etc.) of the vehicle based on the predicted contextual representation generated by the prediction module 715. In particular embodiments, planning module 720 may utilize the predicted information encoded within the predicted contextual representation (e.g., predicted location or trajectory of agents, semantic data, etc.) and any other available information (e.g., map data, traffic data, accident reports, weather reports, target destinations, and any other suitable information) to determine one or more goals or navigation instructions for the vehicle. As an example and not by way of limitation, based on the predicted behavior of the agents surrounding the vehicle and the traffic data to a particular destination, planning module 720 may determine a particular navigation path and associated driving operations for the vehicle to avoid possible collisions with one or more agents. In particular embodiments, planning module 720 may generate, based on a given predicted contextual presentation, several different plans (e.g., goals or navigation instructions) for the vehicle. For each plan, the planning module 720 may compute a score that represents the desirability of that plan. For example, if the plan would likely result in the vehicle colliding with an agent at a predicted location for that agent, as determined based on the predicted contextual representation, the score for the plan may be penalized accordingly. Another plan that would cause the vehicle to violate traffic rules or take a lengthy detour to avoid possible collisions may also have a score that is penalized, but the penalty may be less severe than the penalty applied for the previous plan that would result in collision. A third plan that causes the vehicle to simply stop or change lanes to avoid colliding with the agent in the predicted future may receive the highest score. Based on the assigned scores for the plans, the planning module 720 may select the best plan to carry out. While the example above used collision as an example, the disclosure herein contemplates the use of any suitable scoring criteria, such as travel distance or time, fuel economy, changes to the estimated time of arrival at the destination, passenger comfort, proximity to other vehicles, the confidence score associated with the predicted contextual representation, etc.
Based on the plan generated by planning module 720, which may include one or more navigation path or associated driving operations, control module 725 may determine the specific commands to be issued to the actuators of the vehicle. The actuators of the vehicle are components that are responsible for moving and controlling the vehicle. The actuators control driving functions of the vehicle, such as for example, steering, turn signals, deceleration (braking), acceleration, gear shift, etc. As an example and not by way of limitation, control module 725 may transmit commands to a steering actuator to maintain a particular steering angle for a particular amount of time t0 move a vehicle on a particular trajectory to avoid agents predicted to encroach into the area of the vehicle. As another example, control module 725 may transmit commands to an accelerator actuator to have the vehicle safely avoid agents predicted to encroach into the area of the vehicle.
This disclosure contemplates any suitable number of computer systems 800. This disclosure contemplates computer system 800 taking any suitable physical form. As example and not by way of limitation, computer system 800 may be an embedded computer system, a system-on-chip (SOC), a single-board computer system (SBC) (such as, for example, a computer-on-module (COM) or system-on-module (SOM)), a desktop computer system, a laptop or notebook computer system, an interactive kiosk, a mainframe, a mesh of computer systems, a mobile telephone, a personal digital assistant (PDA), a server, a tablet computer system, an augmented/virtual reality device, or a combination of two or more of these. Where appropriate, computer system 800 may include one or more computer systems 800; be unitary or distributed; span multiple locations; span multiple machines; span multiple data centers; or reside in a cloud, which may include one or more cloud components in one or more networks. Where appropriate, one or more computer systems 800 may perform without substantial spatial or temporal limitation one or more steps of one or more methods described or illustrated herein. As an example and not by way of limitation, one or more computer systems 800 may perform in real time or in batch mode one or more steps of one or more methods described or illustrated herein. One or more computer systems 800 may perform at different times or at different locations one or more steps of one or more methods described or illustrated herein, where appropriate.
In particular embodiments, computer system 800 includes a processor 802, memory 804, storage 806, an input/output (I/O) interface 808, a communication interface 810, and a bus 812. Although this disclosure describes and illustrates a particular computer system having a particular number of particular components in a particular arrangement, this disclosure contemplates any suitable computer system having any suitable number of any suitable components in any suitable arrangement.
In particular embodiments, processor 802 includes hardware for executing instructions, such as those making up a computer program. As an example and not by way of limitation, to execute instructions, processor 802 may retrieve (or fetch) the instructions from an internal register, an internal cache, memory 804, or storage 806; decode and execute them; and then write one or more results to an internal register, an internal cache, memory 804, or storage 806. In particular embodiments, processor 802 may include one or more internal caches for data, instructions, or addresses. This disclosure contemplates processor 802 including any suitable number of any suitable internal caches, where appropriate. As an example and not by way of limitation, processor 802 may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in the instruction caches may be copies of instructions in memory 804 or storage 806, and the instruction caches may speed up retrieval of those instructions by processor 802. Data in the data caches may be copies of data in memory 804 or storage 806 that are to be operated on by computer instructions; the results of previous instructions executed by processor 802 that are accessible to subsequent instructions or for writing to memory 804 or storage 806; or any other suitable data. The data caches may speed up read or write operations by processor 802. The TLBs may speed up virtual-address translation for processor 802. In particular embodiments, processor 802 may include one or more internal registers for data, instructions, or addresses. This disclosure contemplates processor 802 including any suitable number of any suitable internal registers, where appropriate. Where appropriate, processor 802 may include one or more arithmetic logic units (ALUs), be a multi-core processor, or include one or more processors 802. Although this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor.
In particular embodiments, memory 804 includes main memory for storing instructions for processor 802 to execute or data for processor 802 to operate on. As an example and not by way of limitation, computer system 800 may load instructions from storage 806 or another source (such as another computer system 800) to memory 804. Processor 802 may then load the instructions from memory 804 to an internal register or internal cache. To execute the instructions, processor 802 may retrieve the instructions from the internal register or internal cache and decode them. During or after execution of the instructions, processor 802 may write one or more results (which may be intermediate or final results) to the internal register or internal cache. Processor 802 may then write one or more of those results to memory 804. In particular embodiments, processor 802 executes only instructions in one or more internal registers or internal caches or in memory 804 (as opposed to storage 806 or elsewhere) and operates only on data in one or more internal registers or internal caches or in memory 804 (as opposed to storage 806 or elsewhere). One or more memory buses (which may each include an address bus and a data bus) may couple processor 802 to memory 804. Bus 812 may include one or more memory buses, as described in further detail below. In particular embodiments, one or more memory management units (MMUs) reside between processor 802 and memory 804 and facilitate accesses to memory 804 requested by processor 802. In particular embodiments, memory 804 includes random access memory (RAM). This RAM may be volatile memory, where appropriate. Where appropriate, this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, where appropriate, this RAM may be single-ported or multi-ported RAM. This disclosure contemplates any suitable RAM. Memory 804 may include one or more memories 804, where appropriate. Although this disclosure describes and illustrates particular memory, this disclosure contemplates any suitable memory.
In particular embodiments, storage 806 includes mass storage for data or instructions. As an example and not by way of limitation, storage 806 may include a hard disk drive (HDD), a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB) drive or a combination of two or more of these. Storage 806 may include removable or non-removable (or fixed) media, where appropriate. Storage 806 may be internal or external to computer system 800, where appropriate. In particular embodiments, storage 806 is non-volatile, solid-state memory. In particular embodiments, storage 806 includes read-only memory (ROM). Where appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM), or flash memory or a combination of two or more of these. This disclosure contemplates mass storage 806 taking any suitable physical form. Storage 806 may include one or more storage control units facilitating communication between processor 802 and storage 806, where appropriate. Where appropriate, storage 806 may include one or more storages 806. Although this disclosure describes and illustrates particular storage, this disclosure contemplates any suitable storage.
In particular embodiments, I/O interface 808 includes hardware, software, or both, providing one or more interfaces for communication between computer system 800 and one or more I/O devices. Computer system 800 may include one or more of these I/O devices, where appropriate. One or more of these I/O devices may enable communication between a person and computer system 800. As an example and not by way of limitation, an I/O device may include a keyboard, keypad, microphone, monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet, touch screen, trackball, video camera, another suitable I/O device or a combination of two or more of these. An I/O device may include one or more sensors. This disclosure contemplates any suitable I/O devices and any suitable I/O interfaces 808 for them. Where appropriate, I/O interface 808 may include one or more device or software drivers enabling processor 802 to drive one or more of these I/O devices. I/O interface 808 may include one or more I/O interfaces 808, where appropriate. Although this disclosure describes and illustrates a particular I/O interface, this disclosure contemplates any suitable I/O interface.
In particular embodiments, communication interface 810 includes hardware, software, or both providing one or more interfaces for communication (such as, for example, packet-based communication) between computer system 800 and one or more other computer systems 800 or one or more networks. As an example and not by way of limitation, communication interface 810 may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or any other wire-based network or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network. This disclosure contemplates any suitable network and any suitable communication interface 810 for it. As an example and not by way of limitation, computer system 800 may communicate with an ad hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or one or more portions of the Internet or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. As an example, computer system 800 may communicate with a wireless PAN (WPAN) (such as, for example, a Bluetooth WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (GSM) network), or any other suitable wireless network or a combination of two or more of these. Computer system 800 may include any suitable communication interface 810 for any of these networks, where appropriate. Communication interface 810 may include one or more communication interfaces 810, where appropriate. Although this disclosure describes and illustrates a particular communication interface, this disclosure contemplates any suitable communication interface.
In particular embodiments, bus 812 includes hardware, software, or both coupling components of computer system 800 to each other. As an example and not by way of limitation, bus 812 may include an Accelerated Graphics Port (AGP) or any other graphics bus, an Enhanced Industry Standard Architecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a serial advanced technology attachment (SATA) bus, a Video Electronics Standards Association local (VLB) bus, or another suitable bus or a combination of two or more of these. Bus 812 may include one or more buses 812, where appropriate. Although this disclosure describes and illustrates a particular bus, this disclosure contemplates any suitable bus or interconnect.
Herein, a computer-readable non-transitory storage medium or media may include one or more semiconductor-based or other types of integrated circuits (ICs) (such, as for example, field-programmable gate arrays (FPGAs) or application-specific ICs (ASICs)), hard disk drives (HDDs), hybrid hard drives (HHDs), optical discs, optical disc drives (ODDs), magneto-optical discs, magneto-optical drives, floppy diskettes, floppy disk drives (FDDs), magnetic tapes, solid-state drives (SSDs), RAM-drives, SECURE DIGITAL cards or drives, any other suitable computer-readable non-transitory storage media, or any suitable combination of two or more of these, where appropriate. A computer-readable non-transitory storage medium may be volatile, non-volatile, or a combination of volatile and non-volatile, where appropriate. Herein, “or” is inclusive and not exclusive, unless expressly indicated otherwise or indicated otherwise by context. Therefore, herein, “A or B” means “A, B, or both,” unless expressly indicated otherwise or indicated otherwise by context. Moreover, “and” is both joint and several, unless expressly indicated otherwise or indicated otherwise by context. Therefore, herein, “A and B” means “A and B, jointly or severally,” unless expressly indicated otherwise or indicated otherwise by context.
The scope of this disclosure encompasses all changes, substitutions, variations, alterations, and modifications to the example embodiments described or illustrated herein that a person having ordinary skill in the art would comprehend. The scope of this disclosure is not limited to the example embodiments described or illustrated herein. Moreover, although this disclosure describes and illustrates respective embodiments herein as including particular components, elements, feature, functions, operations, or steps, any of these embodiments may include any combination or permutation of any of the components, elements, features, functions, operations, or steps described or illustrated anywhere herein that a person having ordinary skill in the art would comprehend. Furthermore, reference in the appended claims to an apparatus or system or a component of an apparatus or system being adapted to, arranged to, capable of, configured to, enabled to, operable to, or operative to perform a particular function encompasses that apparatus, system, component, whether or not it or that particular function is activated, turned on, or unlocked, as long as that apparatus, system, or component is so adapted, arranged, capable, configured, enabled, operable, or operative. Additionally, although this disclosure describes or illustrates particular embodiments as providing particular advantages, particular embodiments may provide none, some, or all of these advantages.
Number | Name | Date | Kind |
---|---|---|---|
9946259 | Keller | Apr 2018 | B2 |
20180136644 | Levinson | May 2018 | A1 |
20200139959 | Akella | May 2020 | A1 |
20210148727 | Narayanan | May 2021 | A1 |
20220332350 | Jha | Oct 2022 | A1 |
Entry |
---|
Kim YH, Shin DK, Ahmed MU, Rhee PK. Hierarchical open-set object detection in unseen data. Symmetry. Oct. 11, 2019;11(10):1271. (Year: 2019). |
Number | Date | Country | |
---|---|---|---|
20220198096 A1 | Jun 2022 | US |