v1.4.1

HumanSignal/label-studiov1.4.1Feb 12, 2022by makseq

AI Summary

Label Studio v1.4.1 introduces auto-created webhooks for ML backends that send events when annotations are created or updated, along with deprecating the `completions` parameter in the `fit()` method and adding a timeout to the `/train` API endpoint. The release also includes numerous improvements to labeling interfaces, export formats, and SDK functionality, while dropping Python 3.6 support due to the Pillow 9.0.0 upgrade.

Key Highlights

  • Auto-created webhooks for ML backends send events on annotation updates
  • Deprecated `completions` parameter in ML backend `fit()` method (will be removed in next release)
  • Added experimental features toggle via `EXPERIMENTAL_FEATURES` environment variable
  • Active learning now defaults to most recent model version for predictions
  • Fixed relations breaking labeling interface when added as predictions

Breaking Changes

  • The `completions` parameter of the `fit()` method is deprecated and will be removed in the next release
  • Removed support for Python 3.6 (due to Pillow 9.0.0 requirement)

New Features

  • Auto-created webhooks when adding an ML backend to Label Studio
  • Option to reveal pre-annotations interactively
  • Ability to enable experimental functionality with `EXPERIMENTAL_FEATURES` environment variable
  • Ability to specify `lead_time` to imported annotations
  • View `created_at` time for annotations and `updated_at` time for tasks in data manager
  • ELECTRA model example for ML backend
  • Brush predictions example for SDK
  • Active learning defaults to most recent model version for predictions
  • Ability to uncheck selected checkbox in Choices tag
  • `overviewWidth` parameter for TimeSeries tag
  • Vertical zoom control
  • Resolver parameter for Text tag to retrieve data from remote URL
  • Tooltips to zoom controls in audio labeling

Full Release Notes

## Notable changes

Starting in this version, when you add an ML backend, a webhook is created to send an event to your ML backend each time an annotation is updated or created. Alongside this change, the following has also changed:
- The `completions` parameter of the `fit()` method is deprecated and will be removed in the next release. 
- "Start model training after any annotations are submitted or updated" is now unchecked by default.
- Requests to the `/train` API endpoint now include a timeout.

See [train a model with your ML backend](https://labelstud.io/guide/ml_create.html#Train-a-model-with-your-ML-backend) for more details about this change.


## Changes from contributors
- Add a GitHub action to warn about stale issues and PRs to improve team responses. Thanks @twsl for your contribution in https://github.com/heartexlabs/label-studio/pull/1754.
- Fix an issue where the `Relation` tag was ignored by the `parse_config` function in the ML backend SDK. Thanks to @tomfat for your first contribution in https://github.com/heartexlabs/label-studio/pull/1811!
- @YuMS corrected the example syntax for the task import API in https://github.com/heartexlabs/label-studio/pull/1831. Thanks for your first contribution!
- @AaronDeRybelHowest added a Flair ML backend example in https://github.com/heartexlabs/label-studio-ml-backend/pull/68. Thanks so much for your contribution!!
- @FireBlossom fixed an issue with the PyTorch ML backend in this PR: https://github.com/heartexlabs/label-studio-ml-backend/pull/80. Thanks for contributing!
- Improved performance of the `encode_rle` function used to export brush masks thanks to contributions from @csaroff in https://github.com/heartexlabs/label-studio-converter/pull/52. 
- @changrq fixed an issue with YOLO coordinates deviating when a rectangle is rotated in https://github.com/heartexlabs/label-studio-converter/pull/73. We appreciate your contribution! 
- @raulbocanegra added a required project key to the payload of storage exports and imports in the SDK in https://github.com/heartexlabs/label-studio-sdk/pull/14. Thanks for contributing! 
- @denck007 fixed an issue where the `get_users()` function in the SDK didn't work for open source users because of a dependency on organization membership, which is an Enterprise-only functionality. Thanks for your contribution in https://github.com/heartexlabs/label-studio-sdk/pull/23!
- @fabiolab extended the SDK to allow extra headers for HTTP requests. Thanks for your contributions in https://github.com/heartexlabs/label-studio-sdk/pull/30.
- @laynr added the ability to sync storage to the SDK in https://github.com/heartexlabs/label-studio-sdk/pull/20. Thanks for your consistent contributions! 
- @Fkawala added the ability to use email and password credentials to log into the SDK, rather than using a token. Thanks for your contribution in https://github.com/heartexlabs/label-studio-sdk/pull/29. 
- @kaustuk added the ability to set a cursor color and width for the Audio tag. Thanks for your contributions in https://github.com/heartexlabs/label-studio-frontend/pull/347 and requesting this feature in #1682.

## Features
- Add auto-created webhooks when you add an ML backend to Label Studio. See [more in the documentation](https://labelstud.io/guide/ml_create.html).
- Add the option to reveal pre-annotations interactively
- Add the ability to enable experimental functionality with the `EXPERIMENTAL_FEATURES` environment variable.
- Add the ability to specify a `lead_time` to imported annotations.
- Add the ability to view `created_at` time for annotations and `updated_at` time for tasks on the data manager.
- Added an ELECTRA model example for the ML backend in https://github.com/heartexlabs/label-studio-ml-backend/pull/76. 
- Added a brush predictions example for the SDK. 
- When performing active learning with Label Studio, the model version selected to display predictions on tasks defaults to the most recent model version. 

### Labeling and tag updates
- Add the ability to uncheck a selected checkbox when using the Choices tag.
- Add the `overviewWidth` parameter to the TimeSeries tag to set a default overview width in percents, requested by @TueLindhart in issue #1330. 
- More fully support the Repeater tag.
- Add a vertical zoom control.
- Add a resolver parameter to the Text tag to retrieve data from a remote URL in [PR #396](https://github.com/heartexlabs/label-studio-frontend/pull/396).
- Add tooltips to zoom controls in audio labeling.


## Notable bug fixes
- Fixed a bug where relations break the labeling interface when added as predictions, or when viewing annotations with relations. 
- Fixed issues with permissions when setting up local file storage connections. 
- Fixed issues with building and installing Label Studio taking a long time due to resolving various google dependencies.
- Fixed an issue where the `selected=true` option for the Choices tag wasn't being used. Thanks to @DougTrajano for reporting in issue #1848. 
- Fixed issue #1757 reported by @uriel-tannen that prevented saving a labeling configuration without existing labels. 
- Improved the functionality of the CONLL converter to be more robust as suggested by @tomasohara in [issue #61](https://github.com/heartexlabs/label-studio-converter/issues/61), and also updated to handle empty labels and complicated configurations.
- Fixed an issue with Docker builds on MacOS reported by @simonlsk in issue #1859.
- Fixed an issue where the `--version` flag doesn't print the version reported by @magicaltoast in issue #1880.
- Fix an issue where shortcuts did not work when editing TextArea results.

### Other bug fixes

- Fixed a bug with undo where it deselected a region instead of removing it for brush masks.
- Fixed bugs where unclosed tags and other errors when defining labeling configurations could cause Label Studio to break.
- Fixed an issue where bounding boxes failed to rotate.
- Fixed an issue where VOC export failed when trying to export using the snapshot functionality. 
- Removed a dependency on the ground truth field for determining when labeling is complete.
- Fix performance issues when retrieving project storage.
- Fix crosshair functionality when zooming and rotating images.
- Improve appearance of tabs on the data manager when there are a large number.
- Fixed the ability to go back to a previously-skipped task and submit an annotation.
- Fix the ability to use custom service account credentials for GCE.
- Fixed timeouts occurring with the ML API and added environment variables to configure the timeout limits in #1978. 
- Fixed an issue with the mmdetection ML backend example.
- Improved YOLO export to have sorted classes. 
- Improved handling of empty labels in YOLO, COCO, and VOC export formats. 
- Fix an issue rendering certain data types in the "view all" annotations page.


## Changes to requirements and dependencies

- Bump Pillow from 8.3.2 to 9.0.0 in the ML backend.
- Bump nltk from 3.5 to 3.6.6 in the ML backend.
- Bump django from 3.1.13 to 3.1.14 in Label Studio.

## Docs changes

- Added the ability to search Label Studio website by typing on any page, and to quickly copy code samples using a copy button.
- Updated all [Templates documentation](https://labelstud.io/templates) to match the product templates and include more details about use cases and functionality. 
- Updated API documentation:
	- To be more clear about IDs 
	- To remove deprecated information from pre-1.0.0 versions of Label Studio.
	- To improve export API specs
- Fixed issues with Docker Compose documentation.
- Add details about importing URLs and links using the valueType parameter in tags, and also improved details and troubleshooting when handling HTML labeling. See [import data](https://labelstud.io/guide/tasks.html).
- Add spaCy export information, improved export format JSON details, and to the [export docs](https://labelstud.io/guide/export.html).
- Add [dedicated data management documentation](https://labelstud.io/guide/manage_data.html).
- Add details to [troubleshoot pre-annotations](https://labelstud.io/predictions.html)
- Updated the [tags documentation](https://labelstud.io/tags) to be the latest version.
- Removed support for Python 3.6 as a result of supporting Pillow 9.0.0.