Patent Description:
As devices become more complex and as more devices operate autonomously (e.g., autonomous vehicles (AVs)), machine learning (ML) models, artificial intelligence (AI) models, etc., are often used to control the operation of these complex and/or autonomous devices. Developing these models may be an expensive and time consuming process. It may be difficult to gather training data and to clean/process the training data. It may also be difficult to obtain training data to be used to train a model. In addition, many of the processes or workflows for developing these models are manual (e.g., manually performed by a data scientist/engineer).

In this regard, <CIT> discloses a solution for generating feature training datasets for use in real-world autonomous driving applications based on virtual environments. The feature training datasets may be associated with training a machine learning model to control real-world autonomous vehicles. An occupancy grid generator is used to generate an occupancy grid indicative of an environment of an autonomous vehicle from an imaging scene that depicts the environment. The occupancy grid is used to control the vehicle as the vehicle moves through the environment.

<CIT> discloses a method for generating training data using simulated environments. The method comprises generating a first simulated environment, which comprises a route for a simulated vehicle, non-deterministically determining a set of locations within the first simulated environment for a set of objects, determining a path for the simulated vehicle based on the route and the set of locations, and generating a set of simulated environments based on the first simulated environment and the set of locations.

The invention is as set out in the appended independent claims. Advantageous refinements are subject matter of the dependent claims.

The described embodiments and the advantages thereof may best be understood by reference to the following description taken in conjunction with the accompanying drawings.

Developing machine learning models (e.g., artificial intelligence models) for autonomous functions is an increasingly time-consuming and difficult task. Users (e.g., data scientists and/or data engineers) may perform various functions, tasks, etc., when developing the machine learning models. The user may also manage the sensor data that is received from various vehicles (e.g., a fleet of vehicles). These tasks are often manually performed, which is time consuming. In addition, these tasks are also prone to error because they are manually done (e.g., users may forget a task or perform a task differently).

Obtaining training data is often a time consuming, manual, and/or difficult task when developing machine learning models. The training data is a set of data which may be used to train, configure, set weights of, etc., a machine learning model. It is often difficult to obtain new or additional training data. Sensor data (e.g., videos, images, CAN data, etc.) can be difficult to obtain and may need to be manually processed/analyzed by a user. However, having a variety of training data may allow machine learning models to be better trained and/or to be more generalized. Thus, it is useful to generate new training data more quickly and/or efficiently.

The examples, implementations, and embodiments described herein may help address these issues when training and/or developing machine learning models. In one embodiment, a data science system provides an end-to-end platform that supports ingesting the data, viewing/browsing the data, visualizing the data, selecting different sets of data, processing and/or augmenting the data, provisioning of computational and storage resources, and testing machine learning models. The data science system supports multiple workflows or processes within a single ecosystem/platform, which allows users to transition between different phases of the development cycle more easily. The data science system also automates various tasks such as generating training data (such as synthetic training data generated using a simulated environment) and determining whether the training data improves the operation of machine learning models. The simulated environment may be used to generate training data that simulates a problem domain (e.g., scenarios, conditions, etc., that may be encountered by a vehicle). Generating training data (e.g., synthetic training data) through simulation and/or simulated environments may generally be less expensive, less dangerous, and may provide more flexibility to control parameters (e.g., environmental parameters such as weather, lighting, vehicle dynamics, material properties, etc.). Adding synthetic training data (which may also be referred to as synthetic training data) to the training process may improve the performance of machine learning models (e.g., perception models) under various conditions. This may help improve the quality of the machine learning models that are developed and/or may decrease the amount of time to develop the machine learning models. Some embodiments may provide a method to tune environmental parameters by quantifiable amounts to optimize a machine learning model's performance (e.g., by generating synthetic training data used to train the machine learning model) under test domain conditions.

Although the present disclosure may refer to machine learning models, the examples, implementations, aspects, and/or embodiments described herein may be used with other types of machine learning or artificial intelligence systems/architectures. Examples of machine learning models may be driver assistance models (e.g., a ML/AI model that may assist a driver of a vehicle with the operation of the vehicle), semi-autonomous vehicle models (e.g., a ML/AI model that may partially automate one or more functions/operations of a vehicle), a perception model such as a ML/AI model that is used to identify or recognize pedestrians, vehicles, etc.), etc..

<FIG> is a block diagram that illustrates an example system architecture <NUM>, in accordance with some embodiments of the present disclosure. The system architecture <NUM> includes a data science system <NUM>, computing resources <NUM>, storage resources <NUM>, and vehicles <NUM>. One or more networks <NUM> may interconnect the vehicles <NUM>, the data science system <NUM>, the computing resources <NUM>, and/or the storage resources <NUM>. A network <NUM> may be a public network (e.g., the internet), a private network (e.g., a local area network (LAN) or wide area network (WAN)), or a combination thereof. In one embodiment, network may include a wired or a wireless infrastructure, which may be provided by one or more wireless communications systems, such as a wireless fidelity (Wi-Fi) hotspot connected with the network <NUM>, a cellular system, and/or a wireless carrier system that can be implemented using various data processing equipment, communication towers (e.g. cell towers), etc. The network <NUM> may carry communications (e.g., data, message, packets, frames, etc.) between the vehicles <NUM>, the data science system <NUM>, the computing resources <NUM>, and/or the storage resources <NUM>.

The vehicles <NUM> may be commercial vehicles, test vehicles, and/or may be autonomous vehicles. In one embodiment, the vehicles <NUM> may be a fleet of vehicles that are used to collect, capture, gather, compile, etc., sensor data and/or other data that may be used to develop, improve, refine, or enhance machine learning models. Machine learning models may be models that may be used to manage and/or control the operation of a vehicle <NUM>. Each of the vehicles <NUM> may include various sensors that may generate data (e.g., sensor data) as the respective vehicle <NUM> operates (e.g., drives, moves around, or is otherwise on). Examples of sensors may include, but are not limited to, tire pressure sensors, steering sensors (e.g., to determine the positions/angles of one or more wheels), a compass, temperature sensors, a global positioning system (GPS) receiver/sensor, a light detection and ranging (LIDAR) device/sensor, an ultrasonic device/sensor, a camera (e.g., a video camera), a radar device/sensor, etc. The sensors of the vehicles <NUM> may generate sensor data such as video data, image data, GPS data, LIDAR data, time series data, etc. Each of the vehicles <NUM> by way of its sensors may generate gigabytes (e.g., tens, hundreds, thousands, etc., of gigabytes) of data per hour of operation.

The computing resources <NUM> may include computing devices, which may include hardware such as processing devices (e.g., processors, central processing units (CPUs), processing cores, graphics processing units (GPUS)), memory (e.g., random access memory (RAM), storage devices (e.g., hard-disk drive (HDD), solid-state drive (SSD), etc.), and other hardware devices (e.g., sound card, video card, etc.). The computing devices may comprise any suitable type of computing device or machine that has a programmable processor including, for example, server computers, desktop computers, rackmount servers, etc. In some examples, the computing devices may include a single machine or may include multiple interconnected machines (e.g., multiple servers configured in a cluster, cloud computing resources, etc.).

The computing resources <NUM> may also include virtual environments. In one embodiment, a virtual environment may be a virtual machine (VM) that may execute on a hypervisor which executes on top of the operating system (OS) for a computing device. The hypervisor may also be referred to as a virtual machine monitor (VMM). A VM may be a software implementation of a machine (e.g., a software implementation of a computing device) that includes its own operating system (referred to as a guest OS) and executes application programs, applications, software. The hypervisor may be a component of an OS for a computing device, may run on top of the OS for a computing device, or may run directly on host hardware without the use of an OS. The hypervisor may manage system resources, including access to hardware devices such as physical processing devices (e.g., processors, CPUs, etc.), physical memory (e.g., RAM), storage device (e.g., HDDs, SSDs), and/or other devices (e.g., sound cards, video cards, etc.). The hypervisor may also emulate the hardware (or other physical resources) which may be used by the VMs to execute software/applications. The hypervisor may present other software (i.e., "guest" software) the abstraction of one or more virtual machines that provide the same or different abstractions to various guest software (e.g., guest operating system, guest applications). A VM may execute guest software that uses an underlying emulation of the physical resources (e.g., virtual processors and guest memory).

In another embodiment, a virtual environment may be a container that may execute on a container engine which executes on top of the OS for a computing device, as discussed in more detail below. A container may be an isolated set of resources allocated to executing an application, software, and/or process independent from other applications, software, and/or processes. The host OS (e.g., an OS of the computing device) may use namespaces to isolate the resources of the containers from each other. A container may also be a virtualized object similar to virtual machines. However, a container may not implement separate guest OS (like a VM). The container may share the kernel, libraries, and binaries of the host OS with other containers that are executing on the computing device. The container engine may allow different containers to share the host OS (e.g., the OS kernel, binaries, libraries, etc.) of a computing device. The container engine may also facilitate interactions between the container and the resources of the computing device. The container engine may also be used to create, remove, and manage containers.

The storage resources <NUM> may include various different types of storage devices, such as hard disk drives, solid state drives, hybrid drives, storage area networks, storage arrays, etc. The storage resources <NUM> may also include cloud storage resources or platforms which allow for dynamic scaling of storage space.

Although the computing resources <NUM> and the storage resources <NUM> are illustrated separate from the data science system <NUM>, one or more of the computing resources <NUM> and the storage resources <NUM> may be part of the data science system <NUM> in other embodiments. For example, the data science system <NUM> may include both the computing resources <NUM> and the storage resources <NUM>.

In one embodiment, the data science system <NUM> may be an application and data-source agnostic system. For example, the data science system <NUM> may be able to work with a multitude of different applications, services, etc., and may be able to ingest data from various different sources of data (e.g., ingest multiple types/formats of data from multiple types and/or brands of sensors). The data science system <NUM> may provide a cloud-based infrastructure (e.g., computing resources <NUM> and/or storage resources <NUM>) that may be tailored/customized for the development of machine learning models (e.g., neural networks, statistical models, rule-based models, etc.). The data science system <NUM> may support the various workflows, processes, operations, actions, tasks, etc., in the development cycle for machine learning models. The development cycle for a machine learning model may be referred to as a loop, a development loop, a big loop, a development process, etc. The development cycle may include the ingestion of data from the vehicles <NUM>. The data may be selected, processed, cleaned, analyzed, annotated, visualized (e.g., viewed). Computational resources <NUM> and storage resources <NUM> may be allocated to develop machine learning models using the data and/or to store modifications to the data. The machine learning models may be deployed in the vehicles for testing and additional data may be collected. Other models (e.g., driver assistance models, semi-autonomous vehicle models, perception models, etc.), may also be deployed in the vehicles for testing. The additional data may be ingested by the data science system <NUM> and may be used to develop further machine learning models or update/improve existing machine learning models, restarting the development cycle.

In one embodiment, data (e.g., sensor data such as CAN data, images, videos, GPS data, LIDAR data, speed, acceleration, etc.) may be received, collected, ingested, etc., from vehicles <NUM> (e.g., a fleet of vehicles). The data may be processed, cleaned, formatted, scrubbed, massaged, for further feature labelling, annotation, extraction, manipulation, and/or processing. Users (e.g., data scientists and/or data engineers) may use the data science system <NUM> to explore the data (e.g., using a data explorer or data visualizer to search for certain types of data, metadata, annotations, etc.) and to create, test, update, and/or modify various machine learning models.

In one embodiment, the data science system <NUM> may enable end-to-end development and/or testing of AV models and/or other AV functions. The data science system <NUM> may streamline, simplify, and/or automate (e.g., fully automate or at least partially automate) various tasks related to the development and/or testing of machine learning models. For example, the data science system <NUM> may streamline and/or automate the generation of training data, and training machine learning models using the generated training data. The data science system <NUM> may allow for a faster and/or more efficient development cycle.

In one embodiment, the data science system <NUM> may manage the allocation and/or use of computing resources <NUM> (e.g., computing clusters, server computers, VMs, containers, etc.). The computing resources <NUM> may be used for data transformation, feature extraction, development, generating training data, and testing of machine learning models, etc. The computing resources <NUM> may use various cloud service platforms (e.g., cloud computing resources). The data science system <NUM> may also manage the allocation and/or use of storage resources <NUM>. The storage resources <NUM> may store training data, machine learning models, and/or any other data used during the development and/or testing of machine learning models.

In one embodiment, a training data module <NUM> may generate training data that is used to train various machine learning models (e.g., autonomous vehicle models, perception models, object detection models, neural networks, etc.). For example, the training data module <NUM> may use a simulation engine to generate simulated environments, as discussed in more detail below. Candidate training data may be obtained based on the simulated environments. The training data module <NUM> may determine whether the candidate training data improves the performance of a machine learning model (e.g., improves the performance by a threshold amount). If the candidate training data does improve the performance of the machine learning model, the training data module <NUM> may add the candidate training data to a set or library of training data (which may be used to train other/future machine learning models). The candidate training data may also be referred to as synthetic data or synthetic training data. Synthetic data (or synthetic training data) may be data (e.g., images, videos, etc.) that are generated based on a simulated environment (e.g., generated using a simulation engine).

In one embodiment, the training data module <NUM> may be able to generate tens, hundreds, thousands, millions, etc., of simulated environments. Various environmental parameters such as the size, texture, color, shape, etc., of the objects, buildings, etc., in the simulated environments may be changed (e.g., non-deterministically or randomly changed) between the different simulated environments. The lighting (e.g., lighting, glare, sources of light, shadows, etc.) and/or weather conditions may also be changed in different simulated environments. The terrain (e.g., desert, road, forest, mountains, etc.) may also be changed in different simulated environments. The road type (e.g., asphalt, dirt, concrete, paved stones, etc.) may also be changed in different simulated environments. The road color and/or texture may also be changed in different simulated environments. In addition, the amount of light reflection on a road may also be changed in different simulated environments. This may allow the training data module <NUM> to generate a multitude of images (e.g., training data and/or candidate training data) with varying objects, environments, lighting, terrain, textures, etc. The large number of variations in training data (e.g., the large number of varying objects, textures, environments, etc.) may be difficult to obtain in real world scenarios. In one embodiment, an environmental parameter may be any parameter, setting, configurations, etc., that may change the way a simulated environment looks, is presented, is displayed, etc..

The training data that may be generated by the training data module <NUM> may allow the machine learning model to generalize better in different scenarios, conditions, situations, circumstances, and/or environments. Because the training data module <NUM> may randomly vary objects, routes, textures, terrain, weather/light conditions, etc., this may expose the machine learning model to more variations in training data which may help prevent overfitting. In addition, because of the multiple variations in the training data (e.g., the images), the training data may include various corner cases or unlikely scenarios, conditions, situations, circumstances, and/or environments, which may also be useful when training the machine learning model. Furthermore, the training data generated by the training data module <NUM> may be generated automatically, which may reduce the time and effort for creating/obtaining training data.

In one embodiment, the vehicle <NUM> may determine whether the output of a machine learning model deviates from a reference output (e.g., a reference action, etc.). If the machine learning model deviates from the reference, the vehicle <NUM> may transmit data (e.g., sensor data and/or other information) to the data science system <NUM> (e.g., to the training data module <NUM>), indicating that a scenario, condition, situation, etc., occurred in which the machine learning model deviated from the reference. The vehicle <NUM> may also include a recording system that may detect when corner cases, scenarios, conditions, etc., have occurred and may record sensor data (e.g., video, images, etc.) when the corner cases, scenarios, conditions, etc. occur. The training data module <NUM> may generate training data (e.g., synthetic training data) based on the scenario, condition, situation, etc., that occurred (e.g., based on sensor data and/or other information that may represent the scenario, condition, situation, etc.).

In some embodiments, machine learning models may be trained using the variety of training data generated by the training data module <NUM>. The training data may include varied weather conditions, lighting conditions, objects, textures, etc. The use of varied training data may help prevent the overfitting of the machine learning models (e.g., perception models) to known, realistic objects and allow the machine learning models to generalize to broader scenarios. Also generation of the training data and scenarios may be more cost efficient when compared to using realistic or hi-fidelity simulation models of realistic scenarios. This technique may allow a larger amount of training data to be generated more quickly and/or automatically.

<FIG> is a block diagram that illustrates an example training data module <NUM>, in accordance with one or more embodiments of the present disclosure. The training data module <NUM> includes a data generation module <NUM>, a simulation engine <NUM> a segmentation module <NUM>, environmental parameters <NUM>, a training module <NUM>, a machine learning model <NUM>, and a parameter module <NUM>. Some or all of the modules, components, systems, engines, etc., illustrated in <FIG> may be implemented in software, hardware, firmware, or a combination thereof. Although the simulation engine <NUM> is illustrated as part of the training data module <NUM>, the simulation engine <NUM> may be separate from the training data module <NUM> in other embodiments.

In one embodiment, the training data module <NUM> may be part of a data science system (e.g., data science system <NUM> illustrated in <FIG>). As discussed above, the data science system may allow users to generate training data and to develop (e.g., code), refine, modify, train, and/or machine learning models (e.g., perception models, driver assistance models, AV models, neural networks, object detection, segmentation, etc.). For example, the data science system may include computing devices, virtual machines, integrated development environments (IDEs), libraries, applications, etc., that allow users (e.g., engineers, coders, data scientists, etc.) to create, code, develop, generate, train, etc., various perception models (e.g., to create neural networks). In other embodiments, the training data module <NUM> may be separate from a data science system. For example, the training data module <NUM> may be a separate set of computing devices and/or computing resources that are used to generate training data and/or test perception models.

The training data module <NUM> may allow users to generate training data and train machine learning models using training or test data. For example, the training data module <NUM> may allow users to execute machine learning model <NUM> (e.g., a perception model, a neural network, etc.) using training data, candidate training data, test data, etc. The training data may be automatically generated by the training data module <NUM>. The training data module <NUM> may also generate a wide variety of training data based on various environmental parameters (as discussed above). This allows the machine learning model to generalize better in different scenarios, conditions, situations, circumstances, and/or environments.

In one embodiment, the simulation engine <NUM> may include hardware, software, firmware, or a combination thereof that allows users to create simulated environments. The simulation engine <NUM> may also be referred to as a game engine. A simulated environment may be a virtual construct, similar to a video game, computer game, etc. The simulated environment may enforce various rules, such as the laws of physics. The simulated environment may allow simulated objects to move and/or interact with each other in the simulated environment. A simulated environment may also be referred to as a virtual environment.

In one embodiment, the data generation module <NUM> may generate a set of candidate training data based on a simulated environment (generated or created by the simulation engine <NUM>) and a set of environmental parameters <NUM> for the simulated environment. For example, the data generation module <NUM> may obtain images of the simulated environment using different weather, lighting conditions, etc., that are indicated/specified by the environmental parameters <NUM>.

In one embodiment, the training module <NUM> may train the machine learning model <NUM> based on the set of candidate training data generated by the data generation module <NUM>. For example, the training module <NUM> may provide the candidate training data to the machine learning model <NUM> as an input, to set/configure weights or other parameters of the machine learning model <NUM>.

In one embodiment, the segmentation module <NUM> may obtain a set of segmentations based on the machine learning model <NUM> and a set of test data (e.g., data that may be used to test the machine learning model <NUM> after it has been trained using the set of candidate training data). For example, a set of data (e.g., a set of images) separate from the training data and/or candidate training data may be provided to the machine learning model <NUM>. The set of test data may be associated with a set of reference outputs, references results, reference segmentations, etc. For example, the set of reference segmentations may be expected segmentations for a set of images. The set of segmentations may indicate features of the simulated environment identified by the machine learning model <NUM>. For example, a segmentation may indicate pedestrians detected by the machine learning model <NUM>. In another example, a segmentation may indicate vehicles detected by the machine learning model <NUM>. In a further example, a segmentation may indicate lane markings detected by the machine learning model <NUM>. The segmentation module <NUM> may determine the set of segmentations based on outputs generated by the machine learning model <NUM>. For example, the segmentation module <NUM> may analyze coordinates, bounding boxes, identifiers (e.g., alphanumeric values), etc., generated by the machine learning model <NUM> to determine the segmentations.

In one embodiment, the segmentation module <NUM> may determine whether a mean intersection-over-union (MIOU) of the set of segmentations has increased by more than a threshold change (e.g., may determine whether the performance of the machine learning model <NUM> has improved). For example, the segmentation module <NUM> may determine whether the MIOU of the set of segmentations has increased over a previous MIOU (of a previous set of segmentations). The segmentation module <NUM> may compare the segmentations generated by the machine learning model <NUM> using the test data with a set of reference segmentations for the test data to determine the MIOU. If the MIOU of the set of segmentations has increased over the previous MIOU, the segmentation module <NUM> may determine the amount of increase/change (e.g., the difference between the MIOU and the previous MIOU). An MIOU may be an evaluation metric for image segmentation (e.g., for dividing an image into different portions which correspond to types of objects, textures, etc., in an image). The MIOU may be determined by first determining (e.g., computing) an intersection of union (IOU) for each segment (e.g., each type of segment, each semantic class) and the determining the average over all of the segments.

In one embodiment, the segmentation module <NUM> may cause a next set of candidate training data to be generated when the MIOU has increased by more than the threshold amount. For example, the segmentation module <NUM> may cause or send a message to the data generation module <NUM> to generate a next set of candidate training data. The data generation module <NUM> may generate the next set of candidate training data based on a next (e.g., a new) simulated environment (generated by the simulation engine <NUM> based on a next/new set of environmental parameters).

In one embodiment, the training module <NUM> may train or retrain the machine learning model <NUM> based on the next, additional, new, etc., sets of candidate training data. For example, each time the data generation module <NUM> generates a set of candidate training data, the training module <NUM> may retrain the machine learning model <NUM> using the set of candidate training data (generated by the data generation module <NUM>).

In one embodiment, the segmentation module <NUM> may determine whether the MIOU is more than a threshold MIOU when the MIOU has not increased by the threshold change. For example, the segmentation module <NUM> may determine that the MIOU has not increased or has not increased by a threshold amount. If the MIOU has not increased by the threshold change, the segmentation module <NUM> may determine whether the MIOU is greater than a threshold MIOU (e.g., whether the MIOU is greater than a minimum/threshold MIOU value, a desired MIOU increment value, etc.).

In one embodiment, the segmentation module <NUM> may cause the candidate training data to be added (e.g., included) to a set, library, etc., of training data if the MIOU is greater than the threshold MIOU. For example, the segmentation module <NUM> may add the candidate data or may instruct another module (e.g., the data generation module <NUM>) to add the candidate data. The set, library, etc., of training data may be used to train a final version of the machine learning model <NUM> and/or other machine learning models. If the MIOU is not greater than the threshold MIOU, the segmentation module <NUM> may not add the candidate training data to the set, library, etc., of training data. For example, the segmentation module <NUM> may discard the candidate training data. The segmentation module <NUM> may also cause one or more of the environmental parameters <NUM> to be modified, updated, etc. For example, if the set of candidate data was generated using a new value for an environmental parameter <NUM>, data generation module <NUM> may discard the new value for the environmental parameter and revert/reset to a previous value (e.g., a previous value from a previous iteration). The new value may be discarded if the MIOU did not improve by a threshold amount and/or decreased from the previous MIOU value (e.g., the previous MIOU value from a previous iteration). In another example, if the set of candidate data was generated using a new value for an environmental parameter <NUM>, data generation module <NUM> may change the step/increment size for the environmental parameter <NUM>. For example, if the new value was changed by a step/increment size (e.g., by steps/increments of <NUM>), the data generation module <NUM> may revert to a previous value and increase the previous value by a smaller step/increment size (e.g., by steps/increments of <NUM>).

In one embodiment, the data generation module <NUM> may generate a set of images based on a set of simulated environments (e.g., one or more simulated environments). For example, the data generation module <NUM> may use the simulation engine <NUM> to drive, move, etc., a simulated vehicle (e.g., a virtual vehicle or other virtual/simulated object) through each simulated environment of the set of simulated environments. The simulated vehicle may drive/move along a path. As the simulated vehicle drives/moves along the path, the simulation engine <NUM> may provide a view of the simulated environment from the perspective of the simulated vehicle. This may be similar to a first person view of an environment or location within a game, a video game, a computer game, etc. The data generation module <NUM> may capture, store, save, etc., the views of the simulated environment as the simulated vehicle drives/moves along the path. The data generation module <NUM> may store the views of the simulated environments as images, pictures, a digital video, etc. The data generation module <NUM> may capture, record, etc., the views/images at different rates. For example, the data generation module <NUM> may capture, record, etc., thirty views/images per second, sixty views/images per second, or some other appropriate number of views/images per second. The images/views may be stored and used as training data for training various perception models (e.g. machine learning models, perception models, end-to-end neural networks, etc.).

As discussed above, the views of the simulated environment may be from the perspective of the simulated vehicle. In one embodiment, the views of the simulated environment may correspond to the location of a sensor within a vehicle that corresponds to or is associated with the simulated vehicle. For example, the simulated vehicle may represent a particular make and/or model of a real/physical vehicle. The real/physical vehicle may have a camera (e.g., a sensor) located at a particular location on the real/physical vehicle (e.g., located above the rear view mirror, located on a trunk, located on a front grill, etc.). The perspective of the views may correspond to the location of the camera. For example, the perspective of the views may be the same as the perspective of the views (e.g., images) that would be generated by the camera of real/physical vehicle if the real/physical vehicle had traveled along the path. This allows the machine learning model <NUM> (e.g., a neural network) to be configured, adapted, customized, etc., for different makes and/or models of vehicles which may have sensors (e.g., cameras) at different locations. In one embodiment, the view of the simulated environment may be adjusted, calibrated, etc., based on the location of a sensor (e.g., a camera) on a real/physical vehicle. For example, the position and/or orientation of the view may be calibrated/adjusted such that the perspective of the view matches the perspective of the views (e.g., images) that would be generated by the camera of the real/physical vehicle if the real/physical vehicle had traveled along the path. The view may also be calibrated/adjusted based on characteristics, properties, parameters, of the camera of the real/physical vehicle. For example, parameters such as focal length, frame rate, exposure times, resolution, etc., may also be calibrated/adjusted.

In one embodiment, the environmental parameters <NUM> may indicate one or more of locations, shapes, orientations, colors, textures, sizes, etc., for objects within a simulated (e.g., virtual) environment. For example, the environmental parameters <NUM> may indicate that one or more objects should have a certain height, size, shape, etc. The locations, shapes, orientations, colors, textures, sizes, etc., for objects may be selected non-deterministically (e.g., randomly). The simulation engine <NUM> may generate a simulated environment that includes the objects with the heights, sizes, shapes, textures, etc., indicated by the environmental parameters <NUM>. The data generation module <NUM> may generate the candidate training data (e.g., images) based on the simulated environment (e.g., by obtaining images of the virtual environment, as discussed above). In some embodiments, the objects within a simulated environment (e.g., pedestrians, buildings, vehicles, etc.) may not be realistic and/or may not have standard shapes or outlines. For, example, the edge of a building may be jagged or wavelike.

In one embodiment, the environmental parameters <NUM> may indicate a weather condition within a simulated (e.g., virtual) environment. For example, the environmental parameters <NUM> may indicate that the weather within the simulated environment should include, rain, sleet, snow, clouds, wind, etc. The weather condition may be selected non-deterministically (e.g., randomly). The simulation engine <NUM> may generate a simulated environment that includes the weather condition indicated by the environmental parameters <NUM>. The data generation module <NUM> may generate the candidate training data based on the simulated environment, as discussed above.

In one embodiment, the environmental parameters <NUM> may indicate one or more lighting conditions within a simulated (e.g., virtual) environment. For example, the environmental parameters <NUM> may indicate the locations of light sources, the colors of the light sources, the intensities (e.g., brightness) of the light sources, the intensities (e.g., darkness) of shadows, etc. The one or more lighting conditions may be selected non-deterministically (e.g., randomly). The simulation engine <NUM> may generate a simulated environment that includes the one or more lighting conditions indicated by the environmental parameters <NUM>. The data generation module <NUM> may generate the candidate training data based on the simulated environment, as discussed above.

In one embodiment, the environmental parameters <NUM> may indicate one or more colors within a simulated (e.g., virtual) environment. For example, the environmental parameters <NUM> may indicate the colors of objects, vehicles, pedestrians, traffic control devices (e.g., signs, lane markings, traffic cones, etc.). The one or more colors may be selected non-deterministically (e.g., randomly). The simulation engine <NUM> may generate a simulated environment that includes the colors indicated by the environmental parameters <NUM>. The data generation module <NUM> may generate the candidate training data based on the simulated environment, as discussed above.

In one embodiment, the environmental parameters <NUM> may include a range of values for each of the environmental parameters <NUM>. For example, if an environmental parameter <NUM> is an intensity (e.g., brightness) of a light, another environmental parameter <NUM> (or additional data for the environmental parameter <NUM>) may indicate the range of intensity values. In another example, if an environmental parameter <NUM> is a color of an object, another environmental parameter <NUM> (or additional data for the environmental parameter <NUM>) may indicate all of the possible colors for the object. In a further example, if an environmental parameter <NUM> is a size of an object, another environmental parameter <NUM> (or additional data for the environmental parameter <NUM>) may indicate all of the possible sizes for the object.

In one embodiment, the environmental parameters <NUM> may include increments of change for the values of the environmental parameters <NUM>. For example, if an environmental parameter <NUM> is an intensity (e.g., brightness) of a light ranging from <NUM> (e.g., complete darkness) to <NUM> (e.g., very bright), another environmental parameter <NUM> (or additional data for the environmental parameter <NUM>) may indicate the shadow intensity of light can be changed in increments of <NUM>, <NUM>, etc..

In some embodiments, the increments of change (e.g., step sizes) for the values of the environmental parameters <NUM> may be modified as candidate training data is generated and evaluated. For example, during one or more previous iterations of process for generating training data (e.g., process <NUM> illustrated in <FIG>), the intensity of light may have been changed (e.g., increased or decreased) in increments of <NUM>. The increment may be changed to <NUM> for later iterations.

In one embodiment, the parameter module <NUM> may select a set (e.g., one or more) of environmental parameters <NUM> to change, update, modify, etc., when new candidate training data (e.g., a next set of candidate training data) is generated by the data generation module <NUM> (using the simulation engine <NUM>). The parameter module <NUM> may select the set of environmental parameters <NUM> to change based on one or more MIOUs (e.g., a current MIOU and a previous MIOU). For example, if the previous MIOU did not increase or did not increase by a threshold amount, the parameter module <NUM> may select new environmental parameters <NUM> that were not modified in a previous iteration. In another example, if the MIOU did not increase by the threshold amount, the parameter module <NUM> may change a currently selected set of environmental parameters <NUM> by a different amount. For example, the parameter module <NUM> may change the increments, step size, etc., for changing an environmental parameter (e.g., may increase or decrease the increment/step size used to change the environmental parameter. In another example, rather than increasing a value of an environmental parameter <NUM>, the parameter module <NUM> may decrease the value.

<FIG> is a block diagram that illustrates an example process <NUM> for generating training data (e.g., synthetic data or synthetic training data), in accordance with one or more embodiments of the present disclosure. The process <NUM> may be referred to as a cycle, loop, etc. The process <NUM> may be performed by the various modules, engines, components, and/or systems of the training data module <NUM> (illustrated in <FIG> and <FIG>). The process <NUM> includes three stages (e.g., phases, parts, portions, etc.), stage <NUM>, stage <NUM>, and stage <NUM>. The process <NUM> may proceed from stage <NUM>, to stage <NUM>, to stage <NUM>, and back to stage <NUM>. Each iteration of the process <NUM> may generate a set of candidate training data (e.g., training data that will be evaluated, tested, etc., to determine if the training data should be added to a library of training data). The process <NUM> may iterate through the stages <NUM> through <NUM> until one or more conditions are satisfied (e.g., a number of iterations has been reached, a threshold MIOU is reached, etc.).

In stage <NUM>, the parameter module <NUM> may select, identify, determine, etc., one or more environmental parameters <NUM> to modify, change, update, etc. The parameter module <NUM> may select the one or more environmental parameters <NUM> (to modify/change) based on a previous MIOU value for a previous set of candidate training data. For example, if the previous MIOU did not increase or did not increase by a threshold amount, the parameter module <NUM> may select new environmental parameters <NUM> that were not modified in a previous iteration of the process <NUM>.

In one embodiment, the parameter module <NUM> may change the increment or step size that is used to modify an environmental parameter <NUM>. For example, if previous iterations of the process <NUM> changed an environmental parameter by <NUM> (e.g., increased/decreased the environmental parameter in steps of <NUM>), the process <NUM> may change the increment to <NUM> (e.g., may increase/decrease the environmental parameter in steps of <NUM>).

Also in stage <NUM>, the data generation module <NUM> may generate the set of candidate training data based on the environmental parameters <NUM> (e.g., which may have been modified by the parameter module <NUM>) and the simulation engine <NUM>. For example, the simulation engine <NUM> may generate a simulated environment based on the environmental parameters <NUM> (e.g., may generate a simulated environment with objects, roads, buildings, lighting conditions, weather conditions, etc., based on the environmental parameters <NUM>). The data generation module <NUM> may obtain images, videos, etc., of the simulated environment (e.g., from the point of view of a simulated vehicle driving within the simulated environment) to generate the set of candidate training data.

At stage <NUM>, the training module <NUM> may train the untrained machine learning model <NUM> based on the set of candidate training data generated at stage <NUM>. For example, the training module <NUM> may provide the set of candidate training data to the machine learning model <NUM> as an input. The machine learning model <NUM> may process the training data, the weights of the machine learning model <NUM> may be updated, set, configured, etc., during the training process to generate a trained machine learning model <NUM>.

Also at stage <NUM>, a set of test data <NUM> may be provided to the machine learning model <NUM> after the machine learning model <NUM> has been trained using the candidate training data. For example, a set of test images may be provided to the machine learning model <NUM>. The set of test data <NUM> may be used to test, evaluate, assess, etc., the performance of the machine learning model <NUM>. For example, the test data <NUM> may be provided to the machine learning model <NUM> as an input. The machine learning model <NUM> may generate a set of segmentations based on or using the test data <NUM>. For example, the machine learning model <NUM> may identify, classify, etc., different types of objects (e.g., pedestrians, vehicles, trees, buildings, bushes, etc.), traffic control devices (e.g., signs, lane markings, dividers, traffic cones, etc.), etc., that are depicted in the set of test images.

At stage <NUM>, the segmentation module <NUM> may analyze the segmentations generated by the machine learning model <NUM> at stage <NUM> (using the test data <NUM>), to determine one or more MIOUs. For example, the segmentation module <NUM> may analyze a first segmentation for a first image of the test data <NUM> (generated by the machine learning model <NUM>) and may compare the first segmentation with a first reference segmentation for the first image. The segmentation module <NUM> may calculate, determine, generate, etc., the MIOU for the first image based on the first segmentation and the first reference segmentation. The segmentation module <NUM> may also determine additional MIOUs for other images. In another example, the segmentation module may generate one MIOU for a whole set of test data (e.g., may generate one MIOU value for multiple images) based on a set of reference segmentations for the whole set of test data (e.g., based on multiple segmentations, one segmentation for each of the multiple images).

In one embodiment, an MIOU determined by the segmentation module <NUM> may determine the MIOU based on a subset of the different segmentations that are available. For example, there may be ten types of segmentations for a set of test data (e.g., one for pedestrians, one for vehicles, one for roads, etc.). The segmentation module <NUM> may use a subset of those ten types of segmentations to determine an MIOU. For example, the segmentation module <NUM> may use only segmentations for pedestrians and may use the IOU for that segmentation as the MIOU. In another example, the segmentation module <NUM> may use segmentations for pedestrians and vehicles, and may determine an MIOU based on the IOUs for those two segmentations.

Also at stage <NUM>, the segmentation module <NUM> may determine whether to iterate back to stage <NUM> (e.g., may determine whether the process <NUM> should continue, should perform another iteration, loop, cycle, etc.). The segmentation module <NUM> may use various conditions, parameters, criteria, etc., to determine whether the process <NUM> should continue. For example, the segmentation module <NUM> may determine whether the number of times the process <NUM> has repeated has reached a threshold number of times (e.g., <NUM> times, <NUM> times, <NUM> times, etc.). If the process <NUM> has been repeated the threshold number of times, the segmentation module <NUM> may stop the process <NUM>.

In one embodiment, the segmentation module <NUM> may determine whether to iterate back to stage <NUM> based on one or more MIOU values. For example, the segmentation module <NUM> may determine whether the MIOU value has increased by more than a threshold amount over a previous MIOU value. If the MIOU value has not increased by the threshold amount, the segmentation module <NUM> may determine if the MIOU value is over a threshold MIOU. If the MIOU value is over the threshold MIOU, the segmentation module <NUM> may add the candidate training data to a library or a set of training data and end the process <NUM>.

In another embodiment, the segmentation module <NUM> may determine whether to iterate back to stage <NUM> based on whether the MIOU of a current iteration has reached a threshold MIOU. For example, if the MIOU is greater than or equal to a threshold MIOU, the process <NUM> may end. If the MIOU is less than the threshold MIOU, the process <NUM> may continue (e.g., iterate back to stage <NUM>).

<FIG> is a diagram that illustrates example segmentations of an image <NUM>, in accordance with one or more embodiments of the present disclosure. The segmentations of image <NUM> (e.g., the shaded/hatched portions of image <NUM>) may be segmentations that are determined, generated, calculated, etc., by a machine learning model (e.g., image <NUM> may be test data provided to a machine learning model). The image <NUM> may depict a view of a portion of a simulated environment that was captured, obtained, etc., while a simulated vehicle (or other simulated object) was moving along a path in the simulated environment.

As discussed above, a simulated environment may include various objects (e.g., simulated objects, virtual objects, etc.) that are in various locations in the simulated environment. The objects may be non-deterministically generated, as discussed above. For example, the sizes, shapes, orientations, textures, etc., of the objects may be randomly selected. The weather conditions and/or lighting conditions (e.g., sources of light, locations of light sources and/or light, shadows, locations of shadows, darkness of shadows, glare, reflections, etc.) may also be non-deterministically selected or determined.

The segmentations of different objects, types of areas, locations, etc., in the image <NUM> are represented by the different portions of the image <NUM>. For example, segmentation <NUM> may be for the sky/skyline, segmentation <NUM> may be for a grassy area, segmentation <NUM> may be for a road, segmentation <NUM> may be for a building, and segmentation <NUM> may be for a pillar (e.g., a concrete pillar). The segmentations that are shaded (e.g., segmentations <NUM> through <NUM>) may be segmentations that were detected, identified, classified, etc., correctly by a machine learning model (e.g., machine learning model <NUM> illustrated in <FIG>). As illustrated in <FIG>, the segmentations <NUM> and <NUM> were not correctly classified, identified, etc., by the machine learning model.

As discussed above, the segmentations <NUM>-<NUM> may be generated by a machine learning model based on test data. The segmentations <NUM>-<NUM> may be compared with reference segmentations that may be generated by a simulation engine (e.g., the segmentations illustrated in <FIG>). The segmentations <NUM>-<NUM> may be compared with the reference segmentations illustrated in <FIG> to determine an MIOU, an intersection of union, etc..

<FIG> is a diagram that illustrates example segmentations of an image <NUM>, in accordance with one or more embodiments of the present disclosure. The segmentations of image <NUM> (e.g., the shaded/hatched portions of image <NUM>) may be reference segmentations that may be used to determine an MIOU based on the segmentations of image <NUM> illustrated in <FIG>. For example, the segmentations of image <NUM> may be compared with the segmentations of images <NUM> illustrated in <FIG>, to determine an MIOU value. The image <NUM> may depict a view of a portion of a simulated environment that was captured, obtained, etc., while a simulated vehicle (or other simulated object) was moving along a path in the simulated environment.

As discussed above, a simulated environment may include various objects that are in various locations in the simulated environment. The objects may be non-deterministically generated, as discussed above. The weather conditions and/or lighting conditions may also be non-deterministically selected or determined. The segmentations of different objects, types of areas, locations, etc., in the image <NUM> are represented by the different portions of the image <NUM>. For example, segmentation <NUM> may be for the sky/skyline, segmentation <NUM> may be for a grassy area, segmentation <NUM> may be for a road, segmentation <NUM> may be for a building, and segmentation <NUM> may be for a pillar (e.g., a concrete pillar).

<FIG> is a flow diagram of a process <NUM> for generating training data (e.g., synthetic data or synthetic training data), in accordance with one or more embodiments of the present disclosure. Process <NUM> may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a processor, a processing device, a central processing unit (CPU), a system-on-chip (SoC), etc.), software (e.g., instructions running/executing on a processing device), firmware (e.g., microcode), or a combination thereof. In some embodiments, the process <NUM> may be performed by a computing device (e.g., a server computer, a desktop computer, etc.), a data science system (e.g., data science system <NUM> illustrated in <FIG>), a training data module (e.g., training data module <NUM> illustrated in <FIG>), and/or various components, modules, engines, systems, etc., of a training data module (as illustrated in <FIG>).

The process <NUM> begins at block <NUM> where the process <NUM> generates a set of candidate training data. For example, the process <NUM> may use a simulation engine to generate a simulated environment based on a set of environmental parameters. The process <NUM> may also obtain images, videos, etc., of the simulated environment to generate the set of candidate training data. At block <NUM>, the process <NUM> may train a machine learning model (e.g., a neural network). For example, the set of candidate training data may be provided to the machine learning model as an input. The process <NUM> may obtain a set of segmentations at block <NUM>. For example, the process <NUM> may provide test data (e.g., a set of test video, images, etc.) to the machine learning model (that was trained using the set of candidate training data). The machine learning model may generate the segmentations (or data that is used to obtain the segmentations) based on the training data.

At block <NUM>, the process <NUM> may determine whether the MIOU has increased and/or has increased by a threshold amount/change. For example, the process <NUM> may compare the segmentations of test data with a set of reference segmentations for the test data. If the MIOU has increased by more than a threshold amount/change, the process <NUM> may generate a next set of training data at block <NUM>. For example, one or more environmental parameters may be modified based on previous values of the environmental parameters (e.g., may be increased or decreased by <NUM>, <NUM>, <NUM>, etc.). A next simulated environment may be generated based on the one or more modified environmental parameters. The process <NUM> may generate a next set of candidate training data based on the next simulated environment. The process <NUM> may then proceed to block <NUM>, where the machine learning model may be trained using the next set of candidate training data.

If the MIOU has not increased by more than a threshold amount/change, the process <NUM> may determine whether an increment or step size for an environmental parameter should be changed at block <NUM>. For example, if the same environmental parameter has been changed (e.g., increased or decreased) less than a threshold number of times, the process <NUM> may determine that the increment or step size for the environmental parameter should be decreased (e.g., from <NUM> to <NUM>). In another example, if the same environmental parameter has been changed more than threshold number of times, the process <NUM> may determine that the increment or step size for the environmental parameter should not be changed. In other embodiments, various factors, criteria, parameters, etc., may be used to determine whether the increment should be changed. For example, a user or a configuration setting may indicate that a threshold level of precision should be used for environmental parameters (e.g., the level of precision should be to the nears tenth, hundredth, etc.). In another example, the amount of change in the MIOU (as compared to a previous MIOU) may be used to determine whether the increment (for an environmental parameter) should be changed.

If the process <NUM> determines that the increment or step size for the environmental parameter should be changed/modified, the process <NUM> may proceed to block <NUM> where the increment for the environmental parameter is changed (e.g., the increment or step size may be increased or decreased) at block <NUM>. For example, environmental parameters (e.g., environmental parameters <NUM>) may be updated to reflect the new increment or step size. If the process <NUM> determines that the increment or step size for the environmental parameter should not be changed/modified, the process <NUM> may proceed to block <NUM>, where the process <NUM> may determine whether a new environmental parameter should be selected. For example, process <NUM> may iterate through a list, group, set, etc., of environmental parameters one by one. The process <NUM> may determine if there are any environmental parameters that have not been previously selected and may selected one of the environmental parameters (that were not previously selected).

If a new environmental parameter should be selected (e.g., there is at least one environmental parameter that was not previously selected), the process <NUM> may select the new environmental parameter at block <NUM> and the new environmental parameter may be modified to generate the next set of candidate training data at block <NUM>. If a new environmental parameter should not be selected (e.g., all environmental parameters were previously selected), the process <NUM> may proceed to block <NUM>, where the process <NUM> determines whether the set of candidate training data should be added to a set, library, etc., of training data (which may be used to train other machine learning models). For example, the process <NUM> may determine whether the MIOU is greater than a threshold MIOU (e.g., a desired MIOU, a minimum MIOU, etc.) or may determine if MIOU is converging to a particular value at block <NUM>. If the MIOU is greater than the threshold MIOU (or is converging to the particular value), the process <NUM> may add <NUM> the candidate training data to a set, library, etc., of training data (which may be used to train machine learning models). In some embodiments, the block <NUM> may be optional and the candidate training data may be added <NUM> to a set of training data after block <NUM>.

<FIG> is a block diagram that illustrates an example vehicle <NUM>, in accordance with one or more embodiments of the present disclosure. In one embodiment, the vehicle <NUM> may be an autonomous vehicle (e.g., a self-driving vehicle). For example, the vehicle <NUM> may be a vehicle (e.g., car, truck, van, mini-van, semi-truck, taxi, drone, etc.) that may be capable of operating autonomously without intervention from and/or interaction with a user (e.g., an operator of the vehicle <NUM>, a driver of the vehicle <NUM>, etc.). In another embodiment, the vehicle <NUM> may also be a vehicle with autonomous capabilities. A vehicle <NUM> with autonomous capabilities may be a vehicle that may be capable of performing some operations, actions, functions, etc., autonomously. For example, vehicle <NUM> may have adaptive cruise control capabilities and/or lane assist/keep capabilities. A vehicle <NUM> with autonomous capabilities may be referred to as a semi-autonomous vehicle. The vehicle <NUM> may include various systems that allow the vehicle <NUM> to operate autonomously and/or semi-autonomously. For example, vehicle <NUM> includes a sensor system <NUM>, a control system <NUM>, and a machine learning model <NUM>.

The sensor system <NUM> may include one or more sensors (e.g., detectors, sensing elements, sensor devices, etc.). The one or more sensors may provide information about the operation of the vehicle <NUM>, information about the condition of the vehicle <NUM>, information about occupants/users of the vehicle <NUM>, and/or information about the environment (e.g., a geographical area) where the vehicle <NUM> is located. The one or more sensors may be coupled to various types of communication interfaces (e.g., wired interfaces, wireless interfaces, etc.) to provide sensor data to other systems of the vehicle <NUM>. For example, a sensor may be coupled to a storage device (e.g., a memory, a cache, a buffer, a disk drive, flash memory, etc.) and/or a computing device (e.g., a processor, an ASIC, an FPGA, etc.) via a control area network (CAN) bus. In another example, a sensor may be coupled to a storage drive and/or a computing device via Bluetooth, Wi-Fi, etc. Examples of sensors may include a camera, a radar sensor, a LIDAR sensor, etc..

The control system <NUM> may include hardware, software, firmware, or a combination thereof that may control the functions, operations, actions, etc., of the vehicle <NUM>. For example, the control system <NUM> may be able to control a braking system and/or an engine to control the speed and/or acceleration of the vehicle <NUM>. In another example, the control system <NUM> may be able to control a steering system to turn the vehicle <NUM> left or right. In a further example, the control system <NUM> may be able to control the headlights or an all-wheel drive (AWD) system of the vehicle <NUM> based on weather/driving conditions (e.g., if the environment has snow/rain, if it is night time in the environment, etc.). The control system <NUM> may use sensor data and/or outputs generated by machine learning models of one or more of a path planning system, a prediction system, and a perception system to control the vehicle <NUM>.

The control system <NUM> may use outputs generated by the machine learning model <NUM> to control the vehicle <NUM>. For example, the machine learning model <NUM> may generate one or more steering commands. The steering commands may indicate the direction that a vehicle <NUM> should be turned (e.g., left, right, etc.) and may indicate the angle of the turn. The control system <NUM> may actuate one or more mechanisms/systems (e.g., a steering system, a steering wheel, etc.) to turn the vehicle <NUM> (e.g., to control the vehicle <NUM>) based on the steering commands. For example, the control system <NUM> may turn the steering wheel by a certain number of degrees to steer the vehicle <NUM>.

<FIG> is a block diagram of an example computing device <NUM> that may perform one or more of the operations described herein, in accordance with some embodiments. The computing device <NUM> may be connected to other computing devices in a LAN, an intranet, an extranet, and/or the Internet. The computing device <NUM> may operate in the capacity of a server machine in a client-server network environment or in the capacity of a client in a peer-to-peer network environment.

The computing device <NUM> may be provided by a personal computer (PC), a set-top box (STB), a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single computing device <NUM> is illustrated, the term "computing device" shall also be taken to include any collection of computing devices that individually or jointly execute a set (or multiple sets) of instructions to perform the methods discussed herein.

The example computing device <NUM> may include a processing device (e.g., a general purpose processor, a programmable logic device (PLD), etc.) <NUM>, a main memory <NUM> (e.g., synchronous dynamic random access memory (DRAM), read-only memory (ROM)), a static memory <NUM> (e.g., flash memory), and a data storage device <NUM>, which may communicate with each other via a bus <NUM>.

The processing device <NUM> may be provided by one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. In an illustrative example, processing device <NUM> may comprise 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 processors implementing a combination of instruction sets. The processing device <NUM> may also comprise one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), a network processor, or the like. The processing device <NUM> may be configured to execute the operations described herein, in accordance with one or more aspects of the present disclosure, for performing the operations and steps discussed herein.

The computing device <NUM> may further include a network interface device <NUM> which may communicate with a network <NUM>. The computing device <NUM> also may include a video display unit <NUM> (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device <NUM> (e.g., a keyboard), a cursor control device <NUM> (e.g., a mouse) and an acoustic signal generation device <NUM> (e.g., a speaker). In one embodiment, video display unit <NUM>, alphanumeric input device <NUM>, and cursor control device <NUM> may be combined into a single component or device (e.g., an LCD touch screen).

The data storage device <NUM> may include a computer-readable storage medium <NUM> on which may be stored one or more sets of instructions, e.g., instructions for carrying out the operations described herein, in accordance with one or more aspects of the present disclosure. Instructions implementing the different systems described herein (e.g., the training data module <NUM> illustrated in <FIG>) may also reside, completely or at least partially, within the main memory <NUM> and/or within the processing device <NUM> during execution thereof by the computing device <NUM>, the main memory <NUM> and the processing device <NUM> also constituting computer-readable media. The instructions may further be transmitted or received over the network <NUM> via the network interface device <NUM>.

While computer-readable storage medium <NUM> is shown in an illustrative example to be a single medium, the term "computer-readable storage medium" should be taken to include a single medium or multiple media (e.g., a centralized or distributed database and/or associated caches and servers) that store the one or more sets of instructions. The term "computer-readable storage medium" shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform the methods described herein. The term "computer-readable storage medium" shall accordingly be taken to include, but not be limited to, solid-state memories, optical media and magnetic media.

Unless specifically stated otherwise, terms such as "generating," "determining," "training," "driving," "obtaining," "tagging," or the like, refer to actions and processes performed or implemented by computing devices that manipulates and transforms data represented as physical (electronic) quantities within the computing device's registers and memories into other data similarly represented as physical quantities within the computing device memories or registers or other such information storage, transmission or display devices. Also, the terms "first," "second," "third," "fourth," etc., as used herein are meant as labels to distinguish among different elements and may not necessarily have an ordinal meaning according to their numerical designation.

Examples described herein also relate to an apparatus for performing the operations described herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computing device selectively programmed by a computer program stored in the computing device. Such a computer program may be stored in a computer-readable non-transitory storage medium.

The methods and illustrative examples described herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used in accordance with the teachings described herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear as set forth in the description above.

The above description is intended to be illustrative, and not restrictive. Although the present disclosure has been described with references to specific illustrative examples, it will be recognized that the present disclosure is not limited to the examples described. The scope of the disclosure should be determined with reference to the following claims, along with the full scope of equivalents to which the claims are entitled.

It will be further understood that the terms "comprises", "comprising", "includes", and/or "including", when used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. Therefore, the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting.

Although the method operations were described in a specific order, it should be understood that other operations may be performed in between described operations, described operations may be adjusted so that they occur at slightly different times or the described operations may be distributed in a system which allows the occurrence of the processing operations at various intervals associated with the processing.

Various units, circuits, or other components may be described or claimed as "configured to" or "configurable to" perform a task or tasks. In such contexts, the phrase "configured to" or "configurable to" is used to connote structure by indicating that the units/circuits/components include structure (e.g., circuitry) that performs the task or tasks during operation. As such, the unit/circuit/component can be said to be configured to perform the task, or configurable to perform the task, even when the specified unit/circuit/component is not currently operational (e.g., is not on). The units/circuits/components used with the "configured to" or "configurable to" language include hardware, for example, circuits, memory storing program instructions executable to implement the operation, etc. Additionally, "configured to" or "configurable to" can include generic structure (e.g., generic circuitry) that is manipulated by software and/or firmware (e.g., an FPGA or a general-purpose processor executing software) to operate in manner that is capable of performing the task(s) at issue. "Configured to" may also include adapting a manufacturing process (e.g., a semiconductor fabrication facility) to fabricate devices (e.g., integrated circuits) that are adapted to implement or perform one or more tasks. "Configurable to" is expressly intended not to apply to blank media, an unprogrammed processor or unprogrammed generic computer, or an unprogrammed programmable logic device, programmable gate array, or other unprogrammed device, unless accompanied by programmed media that confers the ability to the unprogrammed device to be configured to perform the disclosed function(s).

Claim 1:
A method for controlling operation of a vehicle (<NUM>), comprising:
generating (<NUM>) a set of candidate training data based on a simulated environment and a first set of environmental parameters (<NUM>) for the simulated environment;
training (<NUM>) a machine learning model (<NUM>) based on the set of candidate training data;
obtaining (<NUM>) a set of segmentations based on the machine learning model (<NUM>) and a set of test data, wherein the set of segmentations indicate features of the simulated environment identified by the machine learning model (<NUM>);
determining (<NUM>) whether a mean intersection-over-union, MIOU, of the set of segmentations has increased by more than a threshold amount, wherein a value of the MIOU is obtained by comparing the segmentations generated by the machine learning model (<NUM>), trained with the candidate training data and applied to the test data, with a set of reference segmentations for the test data;
in response to determining that the MIOU has increased by more than the threshold amount, generating (<NUM>) a next set of candidate training data based on a next simulated environment and a next set of environmental parameters (<NUM>) for the simulated environment;
adding (<NUM>) the candidate training data to a library of training data sets for training a final version of the machine learning model (<NUM>) when the MIOU is greater than a threshold MIOU or is converging to a particular value; and
controlling operation of the vehicle (<NUM>) based on the trained machine learning model (<NUM>).