Metadata-Version: 2.1
Name: supervisely
Version: 6.73.437
Summary: Supervisely Python SDK.
Home-page: https://github.com/supervisely/supervisely
Author: Supervisely
Author-email: support@supervisely.com
Maintainer: Max Kolomeychenko
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cachetools<=5.5.0,>=4.2.3
Requires-Dist: numpy<2.0.0,>=1.19
Requires-Dist: opencv-python<5.0.0.0,>=4.6.0.66
Requires-Dist: PTable<1.0.0,>=0.9.2
Requires-Dist: pillow<=10.2.0,>=5.4.1
Requires-Dist: protobuf<=3.20.3,>=3.19.5
Requires-Dist: python-json-logger<3.0.0,>=0.1.11
Requires-Dist: requests<3.0.0,>=2.27.1
Requires-Dist: requests-toolbelt>=0.9.1
Requires-Dist: Shapely<=2.0.2,>=1.7.1
Requires-Dist: bidict<1.0.0,>=0.21.2
Requires-Dist: varname<1.0.0,>=0.8.1
Requires-Dist: python-dotenv<=1.0.1,>=0.19.2
Requires-Dist: pynrrd<1.0.0,>=0.4.2
Requires-Dist: SimpleITK<=2.4.1.0,>=2.1.1.2
Requires-Dist: pydicom<3.0.0,>=2.3.0
Requires-Dist: stringcase<2.0.0,>=1.2.0
Requires-Dist: python-magic<1.0.0,>=0.4.25
Requires-Dist: trimesh<=4.5.0,>=3.11.2
Requires-Dist: uvicorn[standard]<1.0.0,>=0.18.2
Requires-Dist: pydantic<=2.11.3,>=1.7.4
Requires-Dist: anyio<=4.2.0,>=3.7.1
Requires-Dist: fastapi<=0.109.0,>=0.79.0
Requires-Dist: websockets<=13.1,>=10.3
Requires-Dist: jinja2<4.0.0,>=3.0.3
Requires-Dist: psutil<6.0.0,>=5.9.0
Requires-Dist: jsonpatch<2.0,>=1.32
Requires-Dist: MarkupSafe<3.0.0,>=2.1.1
Requires-Dist: arel<1.0.0,>=0.2.0
Requires-Dist: tqdm<5.0.0,>=4.62.3
Requires-Dist: pandas<=2.1.4,>=1.1.3
Requires-Dist: async_asgi_testclient
Requires-Dist: PyYAML>=5.4.0
Requires-Dist: distinctipy
Requires-Dist: beautifulsoup4
Requires-Dist: numerize
Requires-Dist: ffmpeg-python==0.2.0
Requires-Dist: python-multipart<=0.0.12,>=0.0.5
Requires-Dist: GitPython
Requires-Dist: giturlparse
Requires-Dist: rich
Requires-Dist: click
Requires-Dist: imutils==0.5.4
Requires-Dist: urllib3<=2.2.3,>=1.26.15
Requires-Dist: cacheout==0.14.1
Requires-Dist: jsonschema<=4.23.0,>=2.6.0
Requires-Dist: pyjwt<3.0.0,>=2.1.0
Requires-Dist: zstd
Requires-Dist: aiofiles
Requires-Dist: httpx[http2]==0.27.2
Requires-Dist: debugpy
Provides-Extra: extras
Requires-Dist: docker<6.0.0,>=5.0.3; extra == "extras"
Requires-Dist: imagecorruptions<2.0.0,>=1.1.2; extra == "extras"
Requires-Dist: scikit-image<1.0.0,>=0.17.1; extra == "extras"
Requires-Dist: matplotlib<4.0.0,>=3.3.2; extra == "extras"
Requires-Dist: pascal-voc-writer<1.0.0,>=0.1.4; extra == "extras"
Requires-Dist: scipy<2.0.0,>=1.8.0; extra == "extras"
Requires-Dist: pandas<1.4.0,>=1.1.3; extra == "extras"
Requires-Dist: ruamel.yaml==0.17.21; extra == "extras"
Provides-Extra: apps
Requires-Dist: uvicorn[standard]<1.0.0,>=0.18.2; extra == "apps"
Requires-Dist: fastapi<1.0.0,>=0.79.0; extra == "apps"
Requires-Dist: websockets<=13.1,>=10.3; extra == "apps"
Requires-Dist: jinja2<4.0.0,>=3.0.3; extra == "apps"
Requires-Dist: psutil<6.0.0,>=5.9.0; extra == "apps"
Requires-Dist: jsonpatch<2.0,>=1.32; extra == "apps"
Requires-Dist: MarkupSafe<3.0.0,>=2.1.1; extra == "apps"
Requires-Dist: arel<1.0.0,>=0.2.0; extra == "apps"
Requires-Dist: tqdm<5.0.0,>=4.62.3; extra == "apps"
Requires-Dist: pandas<1.4.0,>=1.1.3; extra == "apps"
Provides-Extra: docs
Requires-Dist: sphinx==4.4.0; extra == "docs"
Requires-Dist: jinja2==3.0.3; extra == "docs"
Requires-Dist: sphinx-immaterial==0.4.0; extra == "docs"
Requires-Dist: sphinx-copybutton==0.4.0; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints==1.15.3; extra == "docs"
Requires-Dist: sphinxcontrib-details-directive==0.1.0; extra == "docs"
Requires-Dist: myst-parser==0.18.0; extra == "docs"
Provides-Extra: sdk-no-usages
Requires-Dist: grpcio<2.0.0,>=1.53.2; extra == "sdk-no-usages"
Requires-Dist: plotly<6.0.0,>=4.11.0; extra == "sdk-no-usages"
Requires-Dist: psutil<6.0.0,>=5.4.5; extra == "sdk-no-usages"
Provides-Extra: tracking
Requires-Dist: yacs; extra == "tracking"
Requires-Dist: matplotlib<4.0.0,>=3.3.2; extra == "tracking"
Requires-Dist: scipy<2.0.0,>=1.8.0; extra == "tracking"
Requires-Dist: lap; extra == "tracking"
Requires-Dist: cython_bbox; extra == "tracking"
Requires-Dist: termcolor; extra == "tracking"
Requires-Dist: scikit-learn; extra == "tracking"
Requires-Dist: faiss-gpu; extra == "tracking"
Requires-Dist: tabulate; extra == "tracking"
Requires-Dist: tensorboard; extra == "tracking"
Requires-Dist: decord; extra == "tracking"
Requires-Dist: gdown; extra == "tracking"
Requires-Dist: torch; extra == "tracking"
Provides-Extra: model-benchmark
Requires-Dist: pycocotools; extra == "model-benchmark"
Requires-Dist: scikit-learn; extra == "model-benchmark"
Requires-Dist: plotly==5.22.0; extra == "model-benchmark"
Requires-Dist: torch; extra == "model-benchmark"
Requires-Dist: torchvision; extra == "model-benchmark"
Provides-Extra: training
Requires-Dist: pycocotools; extra == "training"
Requires-Dist: scikit-learn; extra == "training"
Requires-Dist: plotly==5.22.0; extra == "training"
Requires-Dist: torch; extra == "training"
Requires-Dist: torchvision; extra == "training"
Requires-Dist: tensorboardX; extra == "training"
Requires-Dist: markdown; extra == "training"
Requires-Dist: pymdown-extensions; extra == "training"
Requires-Dist: tbparse; extra == "training"
Requires-Dist: kaleido==0.2.1; extra == "training"
Provides-Extra: plugins
Requires-Dist: jsonschema<3.0.0,>=2.6.0; extra == "plugins"
Provides-Extra: sdk-nn-plugins
Requires-Dist: flask-restful<1.0.0,>=0.3.7; extra == "sdk-nn-plugins"
Requires-Dist: Werkzeug<3.0.0,>=1.0.1; extra == "sdk-nn-plugins"
Provides-Extra: aug
Requires-Dist: imgaug<1.0.0,>=0.4.0; extra == "aug"
Requires-Dist: imagecorruptions<2.0.0,>=1.1.2; extra == "aug"

<h1 align="center">
  <a href="https://supervisely.com"><img alt="Supervisely" title="Supervisely" src="https://i.imgur.com/B276eMS.png"></a>
</h1>

<h3 align="center">
<a href="https://supervisely.com">Computer Vision Platform</a>, 
<a href="https://ecosystem.supervisely.com/">Open Ecosystem of Apps</a>,
<a href="https://developer.supervisely.com/">SDK for Python</a>
</h3>

<p align="center">
  <a href="https://pypi.org/project/supervisely" target="_blank">
    <img src="https://static.pepy.tech/personalized-badge/supervisely?period=total&units=international_system&left_color=grey&right_color=blue&left_text=pip%20installs" alt="Package version">
  </a>
  <a href="https://hub.docker.com/r/supervisely/agent/tags" target="_blank">
    <img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/supervisely/agent?label=docker%20pulls%20-%20supervisely%2Fagent">
  </a>
  <br/>
  <a href="https://pypi.org/project/supervisely" target="_blank">
    <img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/supervisely?color=4ec528">
  </a>
  <a href="https://supervisely.com/slack" target="_blank"> <img src="https://img.shields.io/badge/slack-chat-green.svg?logo=slack&color=4ec528" alt="Slack">
  </a>
  <a href="https://pypi.org/project/supervisely" target="_blank"> 
    <img src="https://img.shields.io/pypi/v/supervisely?color=4ec528&label=pypi%20package" alt="Package version"> 
  </a>
  <a href="https://developer.supervisely.com" target="_blank">
    <img src="https://readthedocs.org/projects/supervisely/badge/?version=stable&color=4ec528">
  </a>
</p>

---

**Website**: [https://supervisely.com](https://supervisely.com/)

**Supervisely Ecosystem**: [https://ecosystem.supervisely.com](https://ecosystem.supervisely.com/)

**Dev Documentation**: [https://developer.supervisely.com](https://developer.supervisely.com/)

**Source Code of SDK for Python**: [https://github.com/supervisely/supervisely](https://github.com/supervisely/supervisely)

**Supervisely Ecosystem on GitHub**: [https://github.com/supervisely-ecosystem](https://github.com/supervisely-ecosystem)

**Complete video course on YouTube**: [What is Supervisely?](https://supervisely.com/what-is-supervisely/#0)
---

## Table of contents

- [**Complete video course on YouTube**: What is Supervisely?](#complete-video-course-on-youtube-what-is-supervisely)
- [Table of contents](#table-of-contents)
- [Introduction](#introduction)
  - [Supervisely Platform 🔥](#supervisely-platform-)
  - [Supervisely Ecosystem 🎉](#supervisely-ecosystem-)
- [Development 🧑‍💻](#development-)
  - [What developers can do](#what-developers-can-do)
    - [Level 1. HTTP REST API](#level-1-http-rest-api)
    - [Level 2. Python scripts for automation and integration](#level-2-python-scripts-for-automation-and-integration)
    - [Level 3. Headless apps (without UI)](#level-3-headless-apps-without-ui)
    - [Level 4. Apps with interactive UIs](#level-4-apps-with-interactive-uis)
    - [Level 5. Apps with UI integrated into labeling tools](#level-5-apps-with-ui-integrated-into-labeling-tools)
  - [Principles 🧭](#principles-)
- [Main features 💎](#main-features-)
  - [Start in a minute](#start-in-a-minute)
  - [Magically simple API](#magically-simple-api)
  - [Customization is everywhere](#customization-is-everywhere)
  - [Interactive GUI is a game-changer](#interactive-gui-is-a-game-changer)
  - [Develop fast with ready UI widgets](#develop-fast-with-ready-ui-widgets)
  - [Convenient debugging](#convenient-debugging)
  - [Apps can be both private and public](#apps-can-be-both-private-and-public)
  - [Single-click deployment](#single-click-deployment)
  - [Reliable versioning - releases and branches](#reliable-versioning---releases-and-branches)
  - [Supports both Github and Gitlab](#supports-both-github-and-gitlab)
  - [App is just a web server, use any technology you love](#app-is-just-a-web-server-use-any-technology-you-love)
  - [Built-in cloud development environment (coming soon)](#built-in-cloud-development-environment-coming-soon)
  - [Trusted by Fortune 500. Used by 65 000 researchers, developers, and companies worldwide](#trusted-by-fortune-500-used-by-65-000-researchers-developers-and-companies-worldwide)
- [Community 🌎](#community-)
    - [Have an idea or ask for help?](#have-an-idea-or-ask-for-help)
- [Contribution 👏](#contribution-)
- [Partnership 🤝](#partnership-)
- [Cite this Project](#cite-this-project)



## Introduction

Every company wants to be sure that its current and future AI tasks are solvable.

The main issue with most solutions on the market is that they build as products. It's a black box developing by some company you don't really have an impact on. As soon as your requirements go beyond basic features offered and you want to customize your experience, add something that is not in line with the software owner development plans or won't benefit other customers, you're out of luck.

That is why **Supervisely is building a platform** instead of a product.

### [Supervisely Platform 🔥](https://supervisely.com/)

<a href="https://supervisely.com/">
  <img src="https://user-images.githubusercontent.com/73014155/178843741-996aff24-7ceb-4e3e-88fe-1c19ccd9a757.png" style="max-width:100%;"
  alt="Supervisely Platform">
</a>

You can think of [Supervisely](https://supervisely.com/) as an Operating System available via Web Browser to help you solve Computer Vision tasks. The idea is to unify all the relevant tools within a single [Ecosystem](https://ecosystem.supervisely.com/) of apps, tools, UI widgets and services that may be needed to make the AI development process as smooth and fast as possible.

More concretely, Supervisely includes the following functionality:

* Data labeling for images, videos, 3D point cloud and volumetric medical images (dicom)
* Data visualization and quality control
* State-Of-The-Art Deep Learning models for segmentation, detection, classification and other tasks
* Interactive tools for model performance analysis
* Specialized Deep Learning models to speed up data labeling (aka AI-assisted labeling)
* Synthetic data generation tools
* Instruments to make it easier to collaborate for data scientists, data labelers, domain experts and software engineers

### [Supervisely Ecosystem](https://ecosystem.supervisely.com/) 🎉


<a href="https://ecosystem.supervisely.com/">
  <img src="https://user-images.githubusercontent.com/73014155/178843764-a92b7ad4-0cce-40ce-b849-17b49c1e1ad3.png" style="max-width:100%;"
  alt="Supervisely Platform">
</a>

The simplicity of creating Supervisely Apps has already led to the development of [hundreds of applications](https://ecosystem.supervisely.com/), ready to be run within a single click in a web browser and get the job done.

Label your data, perform quality assurance, inspect every aspect of your data, collaborate easily, train and apply state-of-the-art neural networks, integrate custom models, automate routine tasks and more — like in a real AppStore, there should be an app for everything.

## [Development](https://developer.supervisely.com/) 🧑‍💻

Supervisely provides the foundation for integration, customization, development and running computer vision applications to address your custom tasks - just like in OS, like Windows or MacOS.

### What developers can do

There are different levels of integration, customization, and automation:

1. [HTTP REST API](#level-1-http-rest-api)
2. [Python scripts for automation and integration](#level-2-python-scripts-for-automation-and-integration)
3. [Headless apps (without UI)](#level-3-headless-apps-without-ui)
4. [Apps with interactive UIs](#level-4-apps-with-interactive-uis)
5. [Apps with UIs integrated into labeling tools](#level-5-apps-with-ui-integrated-into-labeling-tools)

#### Level 1. HTTP REST API

Supervisely has a rich [HTTP REST API](https://api.docs.supervisely.com/) that covers basically every action, you can do manually. You can use **any programming language** and **any development environment** to extend and customize your Supervisely experience.

ℹ️ For Python developers, we recommend using our [Python SDK](https://supervisely.readthedocs.io/en/latest/sdk\_packages.html) because it wraps up all API methods and can save you a lot of time with built-in error handling, network re-connection, response validation, request pagination, and so on.

<details>

<summary>cURL example</summary>

There's no easier way to kick the tires than through [cURL](http://curl.haxx.se/). If you are using an alternative client, note that you are required to send a valid header in your request.

Example:

```bash
curl -H "x-api-key: <your-token-here>" https://app.supervisely.com/public/api/v3/projects.list
```

As you can see, URL starts with `https://app.supervisely.com`. It is for Community Edition. For Enterprise Edition you have to use your custom server address.

</details>

#### Level 2. Python scripts for automation and integration

[Supervisely SDK for Python](https://supervisely.readthedocs.io/en/latest/sdk\_packages.html) is specially designed to speed up development, reduce boilerplate, and lets you do anything in a few lines of Python code with Supervisely Annotatation JSON format, communicate with the platform, import and export data, manage members, upload predictions from your models, etc.

<details>

<summary>Python SDK example</summary>

Look how it is simple to communicate with the platform from your python script.

```python
import supervisely as sly

# authenticate with your personal API token
api = sly.Api.from_env()

# create project and dataset
project = api.project.create(workspace_id=123, name="demo project")
dataset = api.dataset.create(project.id, "dataset-01")

# upload data
image_info = api.image.upload_path(dataset.id, "img.png", "/Users/max/img.png")
api.annotation.upload_path(image_info.id, "/Users/max/ann.json")

# download data
img = api.image.download_np(image_info.id)
ann = api.annotation.download_json(image_info.id)
```

</details>

#### Level 3. Headless apps (without UI)

Create python apps to automate routine and repetitive tasks, share them within your organization,  and provide an easy way to use them for end-users without coding background.  Headless apps are just python scripts that can be run from a context menu.

![run app from context menu](https://user-images.githubusercontent.com/73014155/178843779-2af6fff3-ce28-4278-a57f-f6577615b849.png)

It is simple and suitable for the most basic tasks and use-cases, for example:

* import and export in custom format ([example1](https://ecosystem.supervisely.com/apps/import-images-groups), [example2](https://ecosystem.supervisely.com/apps/export-as-masks), [example3](https://ecosystem.supervisely.com/apps/export-to-pascal-voc), [example4](https://ecosystem.supervisely.com/apps/render-video-labels-to-mp4))
* assets transformation ([example1](https://ecosystem.supervisely.com/apps/rasterize-objects-on-images), [example2](https://ecosystem.supervisely.com/apps/resize-images), [example3](https://ecosystem.supervisely.com/apps/change-video-framerate), [example4](https://ecosystem.supervisely.com/apps/convert\_ptc\_to\_ptc\_episodes))
* users management ([example1](https://ecosystem.supervisely.com/apps/invite-users-to-team-from-csv), [example2](https://ecosystem.supervisely.com/apps/create-users-from-csv), [example3](https://ecosystem.supervisely.com/apps/export-activity-as-csv))
* deploy special models for AI-assisted labeling ([example1](https://ecosystem.supervisely.com/apps/supervisely-ecosystem%2Fritm-interactive-segmentation%2Fsupervisely), [example2](https://ecosystem.supervisely.com/apps/supervisely-ecosystem%2Ftrans-t%2Fsupervisely%2Fserve), [example3](https://ecosystem.supervisely.com/apps/volume-interpolation))

#### Level 4. Apps with interactive UIs

Interactive interfaces and visualizations are the keys to building and improving AI solutions: from custom data labeling to model training. Such apps open up opportunities to customize Supervisely platform to any type of task in Computer Vision, implement data and models workflows that fit your organization's needs, and even build vertical solutions for specific industries on top of it.

<a href="https://ecosystem.supervisely.com/apps/dev-smart-tool-batched">
  <img src="https://user-images.githubusercontent.com/73014155/178845451-8350a6d7-f318-4f5b-a9ee-4b871016e2e4.gif" style="max-width:100%;"
  alt="[This interface is completely based on python in combination with easy-to-use Supervisely UI widgets (Batched SmartTool app for AI assisted object segmentations)">
</a>

Here are several examples:

* custom labeling interfaces with AI assistance for [images](https://ecosystem.supervisely.com/apps/dev-smart-tool-batched) and [videos](https://ecosystem.supervisely.com/apps/batched-smart-tool-for-videos)
* [interactive model performance analysis](https://ecosystem.supervisely.com/apps/semantic-segmentation-metrics-dashboard)
* [interactive NN training dashboard](https://ecosystem.supervisely.com/apps/supervisely-ecosystem%2Fmmsegmentation%2Ftrain)
* [data exploration](https://ecosystem.supervisely.com/apps/action-recognition-stats) and [visualization](https://ecosystem.supervisely.com/apps/objects-thumbnails-preview-by-class) apps
* [vertical solution](https://ecosystem.supervisely.com/collections/supervisely-ecosystem%2Fgl-metric-learning%2Fsupervisely%2Fretail-collection) for labeling products on shelves in retail
* inference interfaces [in labeling tools](https://ecosystem.supervisely.com/apps/supervisely-ecosystem%2Fnn-image-labeling%2Fannotation-tool); for [images](https://ecosystem.supervisely.com/apps/supervisely-ecosystem%2Fnn-image-labeling%2Fproject-dataset), [videos](https://ecosystem.supervisely.com/apps/apply-nn-to-videos-project) and [point clouds](https://ecosystem.supervisely.com/apps/apply-det3d-to-project-dataset); for [model ensembles](https://ecosystem.supervisely.com/apps/apply-det-and-cls-models-to-project)

#### Level 5. Apps with UI integrated into labeling tools

There is no single labeling tool that fits all tasks. Labeling tool has to be designed and customized for a specific task to make the job done in an efficient manner. Supervisely apps can be smoothly integrated into labeling tools to deliver amazing user experience (including multi tenancy) and annotation performance.

<a href="https://ecosystem.supervisely.com/apps/supervisely-ecosystem%252Fgl-metric-learning%252Fsupervisely%252Flabeling-tool">
  <img src="https://user-images.githubusercontent.com/12828725/179206991-1c76f61d-b88a-4a2b-9116-d87fb1ed9d0e.png" style="max-width:100%;"
  alt="[AI assisted retail labeling app is integrated into labeling tool and can communicate with it via web sockets)">
</a>

Here are several examples:

* apps designed for custom labeling workflows ([example1](https://ecosystem.supervisely.com/apps/visual-tagging), [example2](https://ecosystem.supervisely.com/apps/review-labels-side-by-side))
* NN inference is integrated for labeling automation and model predictions analysis ([example](https://ecosystem.supervisely.com/apps/supervisely-ecosystem%2Fnn-image-labeling%2Fannotation-tool))
* industry-specific labeling tool: annotation of thousands of product types on shelves with AI assistance ([retail collection](https://ecosystem.supervisely.com/collections/supervisely-ecosystem%2Fgl-metric-learning%2Fsupervisely%2Fretail-collection), [labeling app](https://ecosystem.supervisely.com/apps/ai-assisted-classification))

### Principles 🧭

Development for Supervisely builds upon these five principles:

* All in **pure Python** and build on top of your favourites libraries (opencv, requests, fastapi, pytorch, imgaug, etc ...) - easy for python developers and data scientists to build and share apps with teammates and the ML community.
* No front‑end experience is required -  build **powerful** and **interactive** web-based GUI apps using the comprehensive library of ready-to-use UI widgets and components.
* **Easy to learn, fast to code,** and **ready for production**.  SDK provides a simple and intuitive API by having complexity "under the hood". Every action can be done just in a few lines of code. You focus on your task, Supervisely will handle everything else - interfaces, databases, permissions, security, cloud or self-hosted deployment, networking, data storage, and many more. Supervisely has solid testing, documentation, and support.
* Everything is **customizable** - from labeling interfaces to neural networks. The platform has to be customized and extended to perfectly fit your tasks and requirements, not vice versa. Hundreds of examples cover every scenario and can be found in our [ecosystem of apps](https://ecosystem.supervisely.com/).
* Apps can be both **open-sourced or private**. All apps made by Supervisely team are [open-sourced](https://github.com/supervisely-ecosystem). Use them as examples, just fork and modify the way you want. At the same time, customers and community users can still develop private apps to protect their intellectual property.

## Main features 💎

- [**Complete video course on YouTube**: What is Supervisely?](#complete-video-course-on-youtube-what-is-supervisely)
- [Table of contents](#table-of-contents)
- [Introduction](#introduction)
  - [Supervisely Platform 🔥](#supervisely-platform-)
  - [Supervisely Ecosystem 🎉](#supervisely-ecosystem-)
- [Development 🧑‍💻](#development-)
  - [What developers can do](#what-developers-can-do)
    - [Level 1. HTTP REST API](#level-1-http-rest-api)
    - [Level 2. Python scripts for automation and integration](#level-2-python-scripts-for-automation-and-integration)
    - [Level 3. Headless apps (without UI)](#level-3-headless-apps-without-ui)
    - [Level 4. Apps with interactive UIs](#level-4-apps-with-interactive-uis)
    - [Level 5. Apps with UI integrated into labeling tools](#level-5-apps-with-ui-integrated-into-labeling-tools)
  - [Principles 🧭](#principles-)
- [Main features 💎](#main-features-)
  - [Start in a minute](#start-in-a-minute)
  - [Magically simple API](#magically-simple-api)
  - [Customization is everywhere](#customization-is-everywhere)
  - [Interactive GUI is a game-changer](#interactive-gui-is-a-game-changer)
  - [Develop fast with ready UI widgets](#develop-fast-with-ready-ui-widgets)
  - [Convenient debugging](#convenient-debugging)
  - [Apps can be both private and public](#apps-can-be-both-private-and-public)
  - [Single-click deployment](#single-click-deployment)
  - [Reliable versioning - releases and branches](#reliable-versioning---releases-and-branches)
  - [Supports both Github and Gitlab](#supports-both-github-and-gitlab)
  - [App is just a web server, use any technology you love](#app-is-just-a-web-server-use-any-technology-you-love)
  - [Built-in cloud development environment (coming soon)](#built-in-cloud-development-environment-coming-soon)
  - [Trusted by Fortune 500. Used by 65 000 researchers, developers, and companies worldwide](#trusted-by-fortune-500-used-by-65-000-researchers-developers-and-companies-worldwide)
- [Community 🌎](#community-)
    - [Have an idea or ask for help?](#have-an-idea-or-ask-for-help)
- [Contribution 👏](#contribution-)
- [Partnership 🤝](#partnership-)
- [Cite this Project](#cite-this-project)

### Start in a minute

Supervisely's open-source SDK and app framework are straightforward to get started with. It’s just a matter of:

```
pip install supervisely
```

### Magically simple API

[Supervisely SDK for Python](https://supervisely.readthedocs.io/en/latest/sdk\_packages.html) is simple, intuitive, and can save you hours. Reduce boilerplate and build custom integrations in a few lines of code. It has never been so easy to communicate with the platform from python.

```python
# authenticate with your personal API token
api = sly.Api.from_env()

# create project and dataset
project = api.project.create(workspace_id=123, name="demo project")
dataset = api.dataset.create(project.id, "dataset-01")

# upload data
image_info = api.image.upload_path(dataset.id, "img.png", "/Users/max/img.png")
api.annotation.upload_path(image_info.id, "/Users/max/ann.json")

# download data
img = api.image.download_np(image_info.id)
ann = api.annotation.download_json(image_info.id)
```

### Customization is everywhere

Customization is the only way to cover all tasks in Computer Vision. Supervisely allows to customizing everything from labeling interfaces and context menus to training dashboards and inference interfaces. Check out our [Ecosystem of apps](https://ecosystem.supervisely.com/) to find inspiration and examples for your next ML tool.

### Interactive GUI is a game-changer

The majority of Python programs are "command line" based. While highly experienced programmers don't have problems with it, other tech people and end-users do.  This creates a digital divide, a "GUI Gap".  App with graphic user interface (GUI) becomes more approachable and easy to use to a wider audience. And finally, some tasks are impossible to solve without a GUI at all.

Imagine, how it will be great if all ML tools and repositories have an interactive GUI with the RUN button ▶️. It will take minutes to start working with a top Deep Learning framework instead of spending weeks running it on your data.  

🎯 Our ambitious goal is to make it possible.


<a href="https://ecosystem.supervisely.com/apps/semantic-segmentation-metrics-dashboard">
  <img src="https://user-images.githubusercontent.com/73014155/178846370-ae86dd3c-e08d-4df2-871b-d342bf7ba370.gif" style="max-width:100%;"
  alt="Semantic segmentation metrics app">
</a>


### Develop fast with ready UI widgets

Hundreds of interactive UI widgets and components are ready for you. Just add to your program and populate with the data. Python devs don't need to have any front‑end experience, in our developer portal you will find needed guides, examples, and tutorials. We support the following UI widgets:

1. [Widgets made by Supervisely](https://developer.supervisely.com/app-development/widgets) specifically for computer vision tasks, like rendering galleries of images with annotations, playing videos forward and backward with labels, interactive confusion matrices, tables, charts, ...
2. [Element widgets](https://element.eleme.io/1.4/#/en-US/component/button) - Vue 2.0 based component library
3. [Plotly](https://plotly.com/python/) Graphing Library for Python
4. [Develop your own custom widgets](https://developer.supervisely.com/app-development/advanced/how-to-make-your-own-widget)

Supervisely team makes most of its apps publically available on [GitHub](https://github.com/supervisely-ecosystem). Use them as examples for your future apps: fork, modify, and copy-paste code snippets.

### Convenient debugging

Supervisely is made by data scientists for data scientists. We trying to lower barriers and make a friendly development environment. Especially we care about debugging as one of the most crucial steps.

Even in complex scenarios, like developing a GUI app integrated into a labeling tool, we keep it simple - use breakpoints in your favorite IDE to catch callbacks, step through the program and see live updates without page reload. As simple as that! Supervisely handles everything else -  WebSockets, authentication, Redis, RabitMQ, Postgres, ...

Watch the video below, how we debug [the app](https://ecosystem.supervisely.com/apps/supervisely-ecosystem%2Fnn-image-labeling%2Fannotation-tool) that applies NN right inside the labeling interface.

<a href="https://youtu.be/fOnyL8YHOBM">
    <img src="https://user-images.githubusercontent.com/12828725/179207006-bcdd0922-21c1-4958-86e7-d532fbf7c974.png" style="max-width:100%;">
</a>

### Apps can be both private and public

All apps made by Supervisely team are [open-source](https://github.com/supervisely-ecosystem). Use them as examples: find on [GitHub](https://github.com/supervisely-ecosystem), fork and modify them the way you want. At the same time, customers and community users can still develop private apps to protect their intellectual property.

<a href="https://youtu.be/Kyuc-lZu_tg">
    <img src="https://user-images.githubusercontent.com/12828725/179207014-55659b39-0f58-42db-96e3-8063f1e6ad5d.png" style="max-width:100%;">
</a>

### Single-click deployment

Supervisely app is a git repository. Just provide the link to your git repo, Supervisely will handle everything else. Now you can press `Run` button in front of your app and start it on any computer with [Supervisely Agent](https://youtu.be/aDqQiYycqyk).

### Reliable versioning - releases and branches

Users run your app on the latest stable release, and you can develop and test new features in parallel - just use git releases and branches. Supervisely automatically pull updates from git, even if the new version of an app has a bug, don't worry - users can select and run the previous version in a click.


<a href="https://youtu.be/ngoHfM98R8k">
    <img src="https://user-images.githubusercontent.com/12828725/179207015-d5f839a6-907b-4469-9f86-950ee348024e.png" style="max-width:100%;">
</a>

### Supports both Github and Gitlab

Since Supervisely app is just a git repository, we support public and private repos from the most popular hosting platforms in the world - GitHub and GitLab.

### App is just a web server, use any technology you love 

Supervisely SDK for Python provides the simplest way for python developers and data scientists to build interactive GUI apps of any complexity. Python is a recommended language for developing Supervisely apps, but not the only one. You can use any language or any technology you love, any web server can be deployed on top of the platform.

For example, even [Visual Studio Code for web](https://github.com/coder/code-server) can be run as an app (see video below). 

### Built-in cloud development environment (coming soon)

In addition to the common way of development in your favorite IDE on your local computer or laptop, cloud development support will be integrated into Supervisely and **released soon** to speed up development, standardize dev environments, and lower barriers for beginners. 

How will it work? Just connect your computer to your Supervisely instance and run IDE app ([JupyterLab](https://jupyter.org/) and [Visual Studio Code for web](https://github.com/coder/code-server)) to start coding in a minute. We will provide a large number of template apps that cover the most popular use cases.


<a href="https://youtu.be/ptHJsdolHHk">
    <img src="https://user-images.githubusercontent.com/73014155/178956713-0de05a39-3ecc-41b2-a46e-54d3a23d4e64.png" style="max-width:100%;">
</a>

### Trusted by Fortune 500. Used by 65 000 researchers, developers, and companies worldwide

![](https://user-images.githubusercontent.com/106374579/204510683-4aaa1e11-e934-4268-8365-f140028508d0.png)

Supervisely helps companies and researchers all over the world to build their computer vision solutions in various industries from self-driving and agriculture to medicine. Join our [Community Edition](https://app.supervisely.com/) or request [Enterprise Edition](https://supervisely.com/enterprise) for your organization.

## Community 🌎

Join our constantly growing [Supervisely community](https://app.supervisely.com/) with more than 65k+ users.

#### Have an idea or ask for help?

If you have any questions, ideas or feedback please:

1. [Suggest a feature or idea](https://ideas.supervisely.com/), or [give a technical feedback ](https://github.com/supervisely/supervisely/issues)
2. [Join our slack](https://supervisely.com/slack)
3. [Contact us](https://supervisely.com/contact-us)

Your feedback 👍 helps us a lot and we appreciate it

## Contribution 👏

Want to help us bring Computer Vision R\&D to the next level? We encourage you to participate and speed up R\&D for thousands of researchers by

* building and expanding Supervisely Ecosystem with us
* integrating to Supervisley and sharing your ML tools and research with the entire ML community

## Partnership 🤝

We are happy to expand and increase the value of Supervisely Ecosystem with additional technological partners, researchers, developers, and value-added resellers.

Feel free to [contact us](https://supervisely.com/contact-us) if you have

* ML service or product
* unique domain expertise
* vertical solution
* valuable repositories and tools that solve the task
* custom NN models and data

Let's discuss the ways of working together, particularly if we have joint interests, technologies and  customers.

## Cite this Project

If you use this project in a research, please cite it using the following BibTeX:

```
@misc{ supervisely,
    title = { Supervisely Computer Vision platform },
    type = { Computer Vision Tools },
    author = { Supervisely },
    howpublished = { \url{ https://supervisely.com } },
    url = { https://supervisely.com },
    journal = { Supervisely Ecosystem },
    publisher = { Supervisely },
    year = { 2023 },
    month = { jul },
    note = { visited on 2023-07-20 },
}
```
