We want to make customization of Supervisely as easy as possible. That's why we separate every complex tool like DTL or Neural networks in form of attachable extensions called plugins.
What is a plugin?¶
Plugin is a set of docker images that can be executed on node using agent from web interface. Usually plugin has just one docker image to perform it's operation, but some (like Neural Network Architecture) can have more that one image (for example, one for training and another one for inference):
The following types of plugins are supported:
- Import: converts images and annotations from custom format to Supervisely
- DTL: defines a set of transformations to input projects
- NN Architecture: implements a neural network with all necessary libraries like Tensorflow
- Agent: custom version of agent to run custom pipelines
- Custom: anything else you may implement to perform certain operations on projects or models, like calculate statistics
Supervisely already comes with a set of plugins available. When you setup a new team, it already has all necessary plugins, for example "Images" plugin to import a bunch of folders as datasets.
Other plugins can be added to your team from Explore page. This usually includes less necessary plugins, like "Kitti" import plugin to parse KITTI Dataset.
You can also add your very own plugins on Cluster page. Please refer SDK section to learn how to create docker images that implements custom functionality. You can also share your plugin to another team using "Clone to" option.
How to run Plugin?¶
There are a few places from where you can run plugin.
When you upload your data, you will see plugin selector as a first field. After agent will have your input data locally, it will run docker image associated with selected plugin, wait till it process your files (for example, convert them) and then saves them as datasets and images.
If you have more than one DTL plugin, you will see "Options" icon next to a "Start" button that will let you to select your custom plugin.
You can run your own custom plugins from Plugins page. Scroll to the bottom and click "Run custom plugin" button. Select your plugin, input projects and models and click "Run". Selected agent will download input projects and models and execute docker image associated with your plugin. Downloaded items will be shared to docker container as a read-only volumes.
Please refer Neural Networks section to learn how to train and apply neural networks.
Plugin can also have a set of pre-defined JSON configurations that shows up when you launch plugin. That configuration will be provided to a docker container as a JSON file.
It is very useful to customize plugin behaviour in such cases like training or inference (to
batch size or number of epochs), but other plugins can also use configuration. For example "Video" import plugin use config to control what frames it should skip.
You can also save your current configuration directly from the DTL / Import / Run plugin page by selecting "New config..." in configuration selector.