SDK allows third-party developers to customize and add new features to extend Supervisely functionality.
User have access to all source codes of python backend: agent, neural networks, DTL, import and Supervisely SDK. Cool stuff here is that user can customize almost everything. Also, data scientists should be happy, because all neural networks are unified: the same running pipeline, same input data format, same logging, same metrics reporting, same inference modes and so on ... The time of tinker at difference abandoned and usually broken repositories is over.
Now, users can add custom:
neural networks for training and inference
implement import for custom data format
add new layers to DTL
add custom plugins (coming soon)
How it works?
Here is the high-level overview of entire process:
Import Supervisely SDK to custom sources
Call few methods from SDK
Build everything to docker image and push it to private docker registry
Add to Supervisely by providing path to docker image
How agent processes task
Agent prepares all data for task in special structure. Then agent spanws necessary docker image and stream logs to server. When task is finished, agent uploads results to Supervisely Server.
When task is started in separate docker container, it works only with input directory. And it produces results to another directory. It knows NOTHING about Supervisely Infrastructure. This means that all neural networks, import and DTL can be used without Supervisely. Everything is simplified for only one reason: third-party developer should be happy with easy integration.