# Training

Training stands for both inference and training, which extends runtime functionality by also allowing users to configure, add, remove, and train tools through the ViDi DLL.

Pros | Cons
--- | ---
Can retrain | Harder to integrate Parameters are not frozen Version control is exposed to the user

Applications for training deployment are as follows:

- When the operators often need to adapt the tools, and importing and exporting is a difficult hurdle.
- When an integrator wants to use their own ecosystem to train, and not rely on another application.

Programming Language | Methods
--- | ---
.NET | namespace Training
C | vidi_* vidi_training_*

###### Examples

Programming Language | Examples
--- | ---
.NET | Example.Training.Console
Example.Training.GUI
C | Example.Cpp.Training.Blue
Example.Cpp.Training.Red

###### Inference

Your vision application is responsible for the following:

- Reserves a hard drive folder to operate ViDi
- Acquires images
- Transmits the images to the ViDi application
- Interprets the results and acts accordingly
- Provides feedback to the user

The ViDi DLL is responsible for the following:

- Manages the GPU
- Retrieves an image (through memory or hard drive) and returns an XML string

- Loads a workspace from a given folder or archive

  Note: A .NET Wrapper provides UI elements that implement those tasks.

###### Training

Your vision application is responsible for the following:

- Reserves a hard drive folder to operate ViDi
- Exposes all the ViDi tool parameters to retrain the tools
- Handles the workspace versions
- Provides feedback to the user via a database summary

Note: A .NET Wrapper provides UI elements that implements those tasks.