浏览代码

intro to domain randomization

made some changes around the explanation of domain randomization and added a reference to the paper that first used it. Other very minor changes in the text
/usim-randomization
GitHub 4 年前
当前提交
a48281da
共有 1 个文件被更改,包括 5 次插入5 次删除
  1. 10
      com.unity.perception/Documentation~/Randomization/Index.md

10
com.unity.perception/Documentation~/Randomization/Index.md


# Overview
The perception package's randomization toolset enables domain randomization (DR) during synthetic training data generation.
The randomization toolest within the perception package simplifies the process of randomizing aspects of the generated dataset.
Domain Randomization (DR) is a technique involving the creation of a variety of simulated environments with randomized properties to train a model over a wider domain of environment conditions. The hypothesis behind DR is that models trained on randomized data sets are more likely to adapt to real-world enviroments than their non-randomized counterparts. It is expected that the larger domain of environment conditions generated through DR will encompase more characteristics of actual enviroments than non-randomization data sets.
Domain Randomization is a technique used in the genration of synthetic datasets. It adds variance to the examples used to train an ML model by randomizing several aspects of the content. The intuition is that a model trained on such data is more robust to the inevitable variance encountered in the real world where the model will be tested. The term was first coined by OpenAI when they trained a robot for a pick and place task [using only synthetic data](http://arxiv.org/abs/1703.06907).
**How can a Unity project be randomized using the Perception Randomization toolset?**

## Samplers
Samplers deterministically generate random float values from bounded probability distributions. They are considered bounded since each random sampler generates float values within a range defined by a minumum and maximum value. The values generated from samplers are often used to randomize the sub components of parameters.
Samplers generate random float values by sampling from probability distributions. They are considered bounded since each random sampler generates float values within a range defined by a minumum and maximum value. The values generated from samplers are often used to randomize the sub components of parameters.
![Example Parameters](./Images/ColorParameter.png)

2. Customizing the application of random parameters in your project
3. Defining constants that can be configured externally from a built Unity player
The fundamental principle of DR is to simulate environments under a variety of randomized conditions. To this end, scenarios have a concept of iterations. Each iteration of a scenario is intended to encapsulate one complete run of a simulated environment under uniquely randomized conditions. Scenarios determine how to setup a new iteration, what conditions determine the end of an iteration, how to clean up a completed iteration, and finally how many iterations to perform. Each of these behaviors can be customed for a new scenario by deriving the perception package's scenario class.
The fundamental principle of domain randomization is to simulate environments under a variety of randomized conditions. Each **iteration** of a scenario is intended to encapsulate one complete run of a simulated environment under uniquely randomized conditions. Scenarios determine how to setup a new iteration, what conditions determine the end of an iteration, how to clean up a completed iteration, and finally how many iterations to perform. Each of these behaviors can be customized for a new scenario by deriving from the Scenario class in the perception package.
It was mentioned before in the parameter section of this doc that you can configure parameters to affect simulation properties directly from the parameter configuration. While useful, this feature is constrained to a particular set of use cases. Instead, a user can reference existing parameters in their scenario to implement more intricate randomizations. For example, a user can reference a `SpawnCount` parameter and a `ObjectPosition` parameter to randomize the positions of a dynamic number of objects during the setup step of a scenario.
It is possible to configure parameters to affect simulation properties directly from the parameter configuration. While useful, this feature is constrained to a particular set of use cases. Instead, a user can reference existing parameters in their scenario to implement more intricate randomizations. For example, a user can reference a `SpawnCount` parameter and a `ObjectPosition` parameter to randomize the positions of a dynamic number of objects during the setup step of a scenario.
![Example Parameters](./Images/TestScenario.png)

正在加载...
取消
保存