Skip to content

Commit

Permalink
Release/0.4.0 rc1 (#159)
Browse files Browse the repository at this point in the history
* package, cmdtool, prompter

* io package util, move package to label_studio dir, sync versions

* add colon mark on prompt

* Initial work on fixing initialization flow (#158)

* Feature/image segmentation (#129)

* RLE

* Brush init

* Example brush init

* Brush interface

* RLE

* RLE decode

* Example update

* Image segmentation big update

* Remove excess package

* modifications, creating tools concept

* updates

* forgot to add the tool

Co-authored-by: Nik Shevchenko <shevchenko.nik@icloud.com>

* bugfix & speedup json import (#155)

* add created by only if there is a user instance

* moving regions into its own folder
simplifying things
bringing the zoom back

* get image deserialization back

* style fixes

* fixing incorrect load order

* removing unused log statements

* building the release

* add from prediction fix
image updates

* new Pairwise, Style tag and bugfixes

* small fixes for prediction name

* remove floodfill for now

* skip task shall pass studio instance

* fixing polygons

* if there is a polygon in process of creation and label is selected again

* put in class names with ls- prefixes

* keypoints fix

* keypoints

* keypoints

* fixing small bugs

* remove zoom tool for now

* don't display empty toolbar

* use udpated serialized version

* use initial json instead of serialized one. Serialization might not be
valid because some objects are not yet loaded (images / audios)

* renaming the folders and some files

* Task import (#162)

* add run on google cloud button

* add heroku & azure buttons

* Import tasks.

* add azure config

* Add heroku deploy manifest

* try run script on heroku deploy

* fix dockerignore

* add missed run demo script

* add port variable

* fix port envvar

* add heroku app.json manifest file

* Working.

* fix service log, revert config.json

* adapted to release-0.4.0

* Label Config UI added.

* rebuild ls, serve static, remove useless folders

* Something working.

* Some.

* delete old build

* Config in progress.

* Render preview.

* render LS

* Working config.

* Fix.

* fix dependencies,defaults,add export

* Fix with Pairwise.

* fix pairwise config

* copy fixes for the menu, pairwise fix, using json instead of ujson
when ujson is not available

* no prompt

* copy changes

* Try fix.

* More fix try.

* Image brush (segmentation) removed as under construction.

Co-authored-by: Michael Malyuk <mikhail.maluyk@gmail.com>

* Restructure label studio package dir (#164)

* get rid of frontend sources/pull out label_studio dir

* remove scripts

* Release fixes 1. (#165)

* fixing the "no completions" bug

* add init/start subcommands (#166)

* don't show side column, show start command

* small style changes

* Config validation on data (#167)

* add config validation on derived data schemas

* fixed and tested

* fixed empty project error

* fix empty completions

* again

* Refactor labelstud.io docs (#160)

* refactor labelstud.io docs

* config & docker pages

* update MANIFEST & setup

* packaging templates & config option in init (#168)

* packaging templates & config option in init

* rename config to template

* add --init option on start

* update manifest

* Release fixes 2 (#169)

* Some.

* Pretty and fixes.

* config updates

* parse input args only on start

* border

* upgrade version

* fix flat starts

* upgrade version

* runs for dummies

* Update README.md

* update find_node for windows compatibility

* upgrade version

* handling 5xx on validating config

* upd version

Co-authored-by: Nik Shevchenko <shevchenko.nik@icloud.com>
Co-authored-by: niklub <lubimov.nicolas@gmail.com>
Co-authored-by: Max <makseq@gmail.com>
  • Loading branch information
4 people committed Jan 10, 2020
1 parent 912325f commit 85bbd29
Show file tree
Hide file tree
Showing 375 changed files with 185,577 additions and 42,984 deletions.
2 changes: 1 addition & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ node_modules
npm-debug.log
Dockerfile
.dockerignore
build
# build
.github
.vscode
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ root = true
# Unix-style newlines with a newline ending every file
[*]
indent_style = space
indent_size = 2
indent_size = 4
end_of_line = lf
insert_final_newline = true
charset = utf-8
Expand Down
12 changes: 0 additions & 12 deletions .eslintrc.json

This file was deleted.

44 changes: 0 additions & 44 deletions .npmignore

This file was deleted.

2 changes: 0 additions & 2 deletions .prettierignore

This file was deleted.

8 changes: 0 additions & 8 deletions .prettierrc

This file was deleted.

8 changes: 6 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ WORKDIR /app
COPY backend/requirements.txt /app/backend/
RUN pip install -r backend/requirements.txt


ENV PORT="8200"

COPY . /app
EXPOSE 8200
EXPOSE ${PORT}
WORKDIR /app/backend
ENTRYPOINT ["python", "server.py"]
RUN pip install -e .
CMD ["/app/scripts/run-demo.sh", "image_bbox"]
6 changes: 6 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
include label_studio/examples/*/*.xml
recursive-include label_studio/static *
include label_studio/templates/*.html
include label_studio/utils/schema/*.json
include label_studio/logger.json
include label_studio/config.json
172 changes: 94 additions & 78 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,125 +1,141 @@
<div align="center">
<a href="https://labelstud.io/" title="Label Studio by Heartex Labs"><img src="https://github.com/heartexlabs/label-studio/blob/master/images/heartex_icon_opossum_green@2x.png?raw=true" title="Label Studio by Heartex Labs" height="140" width="140"></a>
<br/>
<h1><a href="https://labelstud.io">Label Studio</a></h1>
<p>Label Studio is an open-source, configurable data annotation tool.</p>
<p>Its purpose is to help you label different types of data using a simple interface with a standardized output format. It's mobile-friendly and fast.</p>
</div>
# Label Studio &middot; ![GitHub](https://img.shields.io/github/license/heartexlabs/label-studio?logo=heartex) [![Build Status](https://travis-ci.com/heartexlabs/label-studio.svg?branch=master)](https://travis-ci.com/heartexlabs/label-studio) [![codecov](https://codecov.io/gh/heartexlabs/label-studio/branch/master/graph/badge.svg)](https://codecov.io/gh/heartexlabs/label-studio) ![GitHub release](https://img.shields.io/github/v/release/heartexlabs/label-studio?include_prereleases) &middot; :sunny:

[Website](https://labelstud.io/)[Docs](https://labelstud.io/docs)[Twitter](https://twitter.com/heartexlabs)[Join Slack Community <img src="https://go.heartex.net/docs/images/slack-mini.png" width="18px"/>](https://docs.google.com/forms/d/e/1FAIpQLSdLHZx5EeT1J350JPwnY2xLanfmvplJi6VZk65C2R4XSsRBHg/viewform?usp=sf_link)
[Website](https://labelstud.io/)[Docs](https://labelstud.io/guide)[Twitter](https://twitter.com/heartexlabs)[Join Slack Community <img src="https://go.heartex.net/docs/images/slack-mini.png" width="18px"/>](https://docs.google.com/forms/d/e/1FAIpQLSdLHZx5EeT1J350JPwnY2xLanfmvplJi6VZk65C2R4XSsRBHg/viewform?usp=sf_link)

![GitHub](https://img.shields.io/github/license/heartexlabs/label-studio?logo=heartex) [![Build Status](https://travis-ci.com/heartexlabs/label-studio.svg?branch=master)](https://travis-ci.com/heartexlabs/label-studio) [![codecov](https://codecov.io/gh/heartexlabs/label-studio/branch/master/graph/badge.svg)](https://codecov.io/gh/heartexlabs/label-studio) ![GitHub release](https://img.shields.io/github/v/release/heartexlabs/label-studio?include_prereleases) [![Gitter](https://badges.gitter.im/label-studio/community.svg)](https://gitter.im/label-studio/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
<br/>

![Label Studio](https://raw.githubusercontent.com/heartexlabs/label-studio/master/images/label-studio-examples.gif)

## Features ✨

**Simple**: Crafted with minimal UI design. A simple design is the best design.

**Configurable**: Using high-level jsx tags config, you can fully customize the interface for your data.

**Embeddable**: It's an NPM package too. You can include it into your projects.
**Label Studio is a swiss army knife of data labeling and annotation tools :v:**

Its purpose is to help you label different types of data using a simple interface with a standardized output format. You're dealing with the custom dataset and thinking about creating your tool? Don't - using Label Studio, you can save time and create a custom tool and interface in minutes.

## Quick Labeling Guides

- [Classify text for sentiment](https://labelstud.io/templates/sentiment_analysis.html)
- [Named entities recognition](https://labelstud.io/templates/named_entity.html)
- [Transcribe audio](https://labelstud.io/templates/transcribe_audio.html)
- [Classify audio](https://labelstud.io/templates/audio_classification.html)
- [Conversational modeling & chatbots](https://labelstud.io/templates/dialogue_analysis.html)
- [Image object detection](https://labelstud.io/templates/image_bbox.html)
- [Audio regions](https://labelstud.io/templates/audio_regions.html)
- [Image KeyPoints](https://labelstud.io/templates/image_keypoints.html)
- [Image Polygons](https://labelstud.io/templates/image_polygons.html)
- [HTML Documents](https://labelstud.io/templates/html_document.html)<sup>New</sup>

Coming Soon:
![Label Studio](https://raw.githubusercontent.com/heartexlabs/label-studio/master/images/label-studio-examples.gif)

- Time series
- Video
<br/>

## Usage
## Summary

### Frontend package
<img align="right" height="180" src="https://github.com/heartexlabs/label-studio/blob/master/images/heartex_icon_opossum_green@2x.png?raw=true" />

```sh
npm install label-studio
```
- [Quick Start](#quick-start)
- [One Click Deploy](#one-click-deploy)
- [Features :star2:](#features-star2)
- [Use Cases](#use-cases)
- [Machine Learning Integration](#machine-learning-integration)
- [For Teams and Enterprises :office:](#label-studio-for-teams-startups-and-enterprises-office)
- [Ecosystem](#ecosystem)
- [License](#license)

Check [documentation](https://labelstud.io/guide/frontend.html) about frontend integration.
## Quick Start

### Backend and frontend
```bash
# Requires >=Python3.6
pip install label-studio

Check [documentation](https://labelstud.io/guide/backend.html) about backend + frontend integration.
# Initialize the project in labeling_project path
label-studio init labeling_project

### Docker
```sh
docker run -p 8200:8200 -t -i heartexlabs/label-studio -c config.json -l ../examples/chatbot_analysis/config.xml -i ../examples/chatbot_analysis/tasks.json -o output
# Start the server
label-studio start labeling_project
```

### Machine learning integration
## One Click Deploy

[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)
[![Deploy to Azure](https://azurecomcdn.azureedge.net/mediahandler/acomblog/media/Default/blog/deploybutton.png)](https://azuredeploy.net/)
[![Run on Google Cloud](https://deploy.cloud.run/button.svg)](https://deploy.cloud.run)

## Features :star2:

- **Simple**: Crafted with minimal UI design. A simple design is the best design.
- **Configurable**: Using high-level jsx tags config, you can fully customize the visual interface for your data. It feels like building a custom labeling tool for your specific needs. And it's fast to do.
- **Collaborative Annotations**: Label the same task by two or more people and compare the results.
- **Multiple Data Types**: Label _Images_, _Audios_, _Texts_, _HTMLs_, _Pairwise_ types with different labeling scenarios that you define yourself.
- **Import Formats**: JSON, CSV, TSV, RAR and ZIP archives
- **Mobile-Friendly**: Works on devices of different sizes.
- **Embeddable**: It's an [NPM package](https://github.com/heartexlabs/label-studio-frontend) too. You can include it in your projects.
- **Machine Learning**: Integration support for machine learning. Visualize and compare predictions from different models. Use the best ones for pre-labeling.
- **Stylable**: Configure the visual appearance to match your company brand, distribute the labeling tasks as a part of your product.

## Use Cases

The list of supported use cases for data annotation. Please contribute your own configs and feel free to extend the base types to support more scenarios. Note that it's not an extensive list and has only major scenarios.

| Task | Description |
|-|-|
| **Image** | |
| Classification | Put images into categories |
| Object Detection | Detect objects in an image using a bounding box or polygons |
| Semantic Segmentation | Detect for each pixel the object category it belongs to |
| Pose Estimation | Mark positions of a person’s joints |
| **Text** | |
| Classification | Put texts into categories |
| Summarization | Create a summary that represents the most relevant information within the original content |
| HTML Tagging | Annotate things like resumes, research, legal papers and excel sheet converted to HTML |
| **Audio** | |
| Classification | Put audios into categories |
| Speaker Diarisation | partitioning an input audio stream into homogeneous segments according to the speaker identity |
| Emotion Recognition | Tag and identifying emotion from the audio |
| Transcription | Write down verbal communication in text |
| **Comparison** | |
| Pairwise | Comparing entities in pairs to judge which of each entity is preferred |
| Ranking | Sort items in the list according to some property |

## Machine Learning Integration

You can easily connect your favorite machine learning framework with Label Studio by using [Heartex SDK](https://github.com/heartexlabs/pyheartex).

That gives you the opportunities to:
- use model predictions as prelabeling
- simultaneously update (retrain) your model while new annotations are coming
- perform labeling in active learning mode
- instantly create running production-ready prediction service
That gives you the opportunities to use:
- **Pre-labeling**: Use model predictions for pre-labeling
- **Online Learning**: Simultaneously update (retrain) your model while new annotations are coming
- **Active Learning**: Perform labeling in active learning mode
- **Prediction Service**: Instantly create running production-ready prediction service

There is a quick example tutorial how to do that with simple image classification:
There is a quick example tutorial on how to do that with simple image classification:

0. Create a new project
```bash
label-studio init --template=image_classification imgcls
```
1. Clone pyheartex, and start serving:
```bash
git clone https://github.com/heartexlabs/pyheartex.git
cd pyheartex/examples/docker
docker-compose up -d
```
2. Specify running server in your label config:
2. Specify running server url in `imgcls/config.json`:
```json
"ml_backend": {
"url": "http://localhost:9090",
"model_name": "my_super_model"
}
```
3. Launch Label Studio with [image classification config](examples/image_classification/config.xml):
3. Launch Label Studio server:
```bash
python server.py -l ../examples/image_classification/config.xml
label-studio start imgcls
```

Once you're satisfied with prelabeling results, you can imediately send prediction requests via REST API:
Once you're satisfied with pre-labeling results, you can immediately send prediction requests via REST API:
```bash
curl -X POST -H 'Content-Type: application/json' -d '{"image_url": "https://go.heartex.net/static/samples/kittens.jpg"}' http://localhost:8200/predict
```

Feel free to play around any other models & frameworks apart from image classifiers! (see instructions [here](https://github.com/heartexlabs/pyheartex#advanced-usage))

## Changelog

Detailed changes for each release are documented in the [release notes](https://github.com/heartexlabs/label-studio/releases).

## Stay In Touch

- [Slack](https://docs.google.com/forms/d/e/1FAIpQLSdLHZx5EeT1J350JPwnY2xLanfmvplJi6VZk65C2R4XSsRBHg/viewform?usp=sf_link)
- [Twitter](https://twitter.com/heartexlabs)
- [Email](mailto:hi@heartex.net)
## Label Studio for Teams, Startups, and Enterprises :office:

## Contributing

Please make sure to read the

- [Contributing Guideline](/CONTRIBUTING.md)
- [Code Of Conduct](/CODE_OF_CONDUCT.md)
Label Studio for Teams is our enterprise edition (cloud & on-prem), that includes a data manager, high-quality baseline models, active learning, collaborators support, and more. Please visit the [website](https://www.heartex.ai/) to learn more.

## Label Studio for Teams, Startups, and Enterprises
## Ecosystem

Label Studio for Teams is our enterprise edition (cloud & on-prem), that includes a data manager, high-quality baseline models, active learning, collaborators support, and more. Please visit the [website](https://www.heartex.ai/) to learn more.
| Project | Description |
|-|-|
| label-studio | Server part, distributed as a pip package |
| [label-studio-frontend](https://github.com/heartexlabs/label-studio-frontend) | Frontend part, written in JavaScript and React, can be embedded into your application |
| [converter](https://github.com/heartexlabs/converter) | Encode labels into the format of your favorite machine learning library |
| [label-studio-transformers](https://github.com/heartexlabs/label-studio-transformers) | Transformers library connected and configured for use with label studio |

## License

This software is licensed under the [Apache 2.0 LICENSE](/LICENSE) © [Heartex](https://www.heartex.net/).
This software is licensed under the [Apache 2.0 LICENSE](/LICENSE) © [Heartex](https://www.heartex.ai/). 2020

<div align="center">
<a href="https://labelstud.io/"><img src="https://github.com/heartexlabs/label-studio/blob/master/images/opossum_looking.png?raw=true" title="Hey everyone!" height="140" width="140"></a>
<h3>Happy Labeling!</h3>
</div>
<img src="https://github.com/heartexlabs/label-studio/blob/master/images/opossum_looking.png?raw=true" title="Hey everyone!" height="140" width="140" />
10 changes: 10 additions & 0 deletions app.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"name": "Label Studio",
"description": "Multi-type data labeling, annotation and exploration tool",
"keywords": ["data annotation", "data labeling"],
"website": "https://labelstud.io",
"repository": "https://github.com/heartexlabs/label-studio",
"logo": "https://labelstud.io/images/opossum/heartex_icon_opossum_green.svg",
"success_url": "/",
"stack": "container"
}
Loading

0 comments on commit 85bbd29

Please sign in to comment.