Label Studio is a multi-type data labeling and annotation tool with standardized output format

Overview

GitHub label-studio:build GitHub release

WebsiteDocsTwitterJoin Slack Community

What is Label Studio?

Label Studio is an open source data labeling tool. It lets you label data types like audio, text, images, videos, and time series with a simple and straightforward UI and export to various model formats. It can be used to prepare raw data or improve existing training data to get more accurate ML models.

Gif of Label Studio annotating different types of data

Have a custom dataset? You can customize Label Studio to fit your needs. Read an introductory blog post to learn more.

Try out Label Studio

Install Label Studio locally, or deploy it in a cloud instance. Also you can try Label Studio Teams.

Install locally with Docker

Official Label Studio docker image is here and it can be downloaded with docker pull. Run Label Studio in a Docker container and access it at http://localhost:8080.

docker pull heartexlabs/label-studio:latest
docker run -it -p 8080:8080 -v `pwd`/mydata:/label-studio/data heartexlabs/label-studio:latest

You can find all the generated assets, including SQLite3 database storage label_studio.sqlite3 and uploaded files, in the ./mydata directory.

Override default Docker install

You can override the default launch command by appending the new arguments:

docker run -it -p 8080:8080 -v `pwd`/mydata:/label-studio/data heartexlabs/label-studio:latest label-studio --log-level DEBUG

Build a local image with Docker

If you want to build a local image, run:

docker build -t heartexlabs/label-studio:latest .

Run with Docker Compose

Docker compose script provides production-ready stack consisting of the following components:

  • Label Studio
  • Nginx - proxy web server used to load various static data, including uploaded audio, images, etc.
  • PostgreSQL - production-ready database that replaces less performant SQLite3.

To start using the app from http://localhost run this command:

docker-compose up

Install locally with pip

# Requires >=Python3.6, <3.9
pip install label-studio

# Start the server at http://localhost:8080
label-studio

Install locally with Anaconda

conda create --name label-studio python=3.8
conda activate label-studio
pip install label-studio

Install for local development

You can run the latest Label Studio version locally without installing the package with pip.

# Install all package dependencies
pip install -e .
# Run database migrations
python label_studio/manage.py migrate
# Start the server in development mode at http://localhost:8080
python label_studio/manage.py runserver

Deploy in a cloud instance

You can deploy Label Studio with one click in Heroku, Microsoft Azure, or Google Cloud Platform:

Apply frontend changes

The frontend part of Label Studio app lies in the frontend/ folder and written in React JSX. In case you've made some changes there, the following commands should be run before building / starting the instance:

cd label_studio/frontend/
npm ci
npx webpack
cd ../..
python label_studio/manage.py collectstatic --no-input

Troubleshoot installation

If you see any errors during installation, try to rerun the installation

pip install --ignore-installed label-studio

Install dependencies on Windows

To run Label Studio on Windows, download and install the following wheel packages from Gohlke builds to ensure you're using the correct version of Python:

# Upgrade pip 
pip install -U pip

# If you're running Win64 with Python 3.8, install the packages downloaded from Gohlke:
pip install lxml‑4.5.0‑cp38‑cp38‑win_amd64.whl

# Install label studio
pip install label-studio

What you get from Label Studio

Screenshot of Label Studio data manager grid view with images

  • Multi-user labeling sign up and login, when you create an annotation it's tied to your account.
  • Multiple projects to work on all your datasets in one instance.
  • Streamlined design helps you focus on your task, not how to use the software.
  • Configurable label formats let you customize the visual interface to meet your specific labeling needs.
  • Support for multiple data types including images, audio, text, HTML, time-series, and video.
  • Import from files or from cloud storage in Amazon AWS S3, Google Cloud Storage, or JSON, CSV, TSV, RAR, and ZIP archives.
  • Integration with machine learning models so that you can visualize and compare predictions from different models and perform pre-labeling.
  • Embed it in your data pipeline REST API makes it easy to make it a part of your pipeline

Included templates for labeling data in Label Studio

Label Studio includes a variety of templates to help you label your data, or you can create your own using specifically designed configuration language. The most common templates and use cases for labeling include the following cases:

Set up machine learning models with Label Studio

Connect your favorite machine learning model using the Label Studio Machine Learning SDK. Follow these steps:

  1. Start your own machine learning backend server. See more detailed instructions.
  2. Connect Label Studio to the server on the model page found in project settings.

This lets you:

  • Pre-label your data using model predictions.
  • Do online learning and retrain your model while new annotations are being created.
  • Do active learning by labeling only the most complex examples in your data.

Integrate Label Studio with your existing tools

You can use Label Studio as an independent part of your machine learning workflow or integrate the frontend or backend into your existing tools.

Ecosystem

Project Description
label-studio Server, distributed as a pip package
label-studio-frontend React and JavaScript frontend and can run standalone in a web browser or be embedded into your application.
data-manager React and JavaScript frontend for managing data. Includes the Label Studio Frontend. Relies on the label-studio server or a custom backend with the expected API methods.
label-studio-converter Encode labels in the format of your favorite machine learning library
label-studio-transformers Transformers library connected and configured for use with Label Studio

Roadmap

Want to use The Coolest Feature X but Label Studio doesn't support it? Check out our public roadmap!

Citation

@misc{Label Studio,
  title={{Label Studio}: Data labeling software},
  url={https://github.com/heartexlabs/label-studio},
  note={Open source software available from https://github.com/heartexlabs/label-studio},
  author={
    Maxim Tkachenko and
    Mikhail Malyuk and
    Nikita Shevchenko and
    Andrey Holmanyuk and
    Nikolai Liubimov},
  year={2020-2021},
}

License

This software is licensed under the Apache 2.0 LICENSE © Heartex. 2020-2021

Comments
  • Release 1.0.1

    Release 1.0.1

    Features

    • Local files storage
    • Invite users via link & disable signup without token

    Fixes

    • Nginx issues with docker compose
    • Slow response time with disconnected ML backend https://github.com/heartexlabs/label-studio/issues/632
    opened by niklub 154
  • Release 1.0.0

    Release 1.0.0

    New in 1.0.0

    Label Studio has been rewritten to provide a streamlined UI, scalability, and support for multiple projects.

    • Multi-user labeling. Sign up and log in to Label Studio so that any annotations you create are tied to your account.
    • Multiple projects to allow you to annotate multiple datasets in parallel.
    • Project setup wizard to make it easier to start a new project and import your data.
    • Customize the labeling interface without editing the label config XML directly. Add labels and select the relevant fields in your data for the type of labeling you want to perform.
    • Database storage to allow you to scale your data labeling. Start with a SQLite database or set up PostgreSQL for large volume data labeling projects.
    • Django backend replaces the Flask backend.
    opened by niklub 88
  • Empty html for projects/ page at startup

    Empty html for projects/ page at startup

    When startup up label-studio I am directed to the projects page on the local host. Unfortunately this just brings me to an empty HTML page.

    This is the output to the terminal:

    $ label-studio
    Data base and media directory:  C:\Users\bbarbieri\AppData\Local\label-studio\label-studio
    Start browser at URL: http://localhost:8080
    Performing system checks...
    
    System check identified no issues (0 silenced).
    March 17, 2021 - 09:51:52
    Django version 3.1.4, using settings 'label_studio.core.settings.label_studio'
    Starting development server at http://0.0.0.0:8080/
    Quit the server with CTRL-BREAK.
    [17/Mar/2021 09:51:55] "GET / HTTP/1.1" 302 0
    [17/Mar/2021 09:51:55] "GET /projects/ HTTP/1.1" 200 2270
    [17/Mar/2021 09:51:55] "GET /static/fonts/roboto/roboto.6ffe390dd5ff.css HTTP/1.1" 200 4451
    [17/Mar/2021 09:51:55] "GET /static/css/uikit.e49a7a43adbd.css HTTP/1.1" 200 3892
    [17/Mar/2021 09:51:55] "GET /static/css/main.3b36b24fbb6f.css HTTP/1.1" 200 15457
    [17/Mar/2021 09:51:55] "GET /react-app/main.css?v=1eac65 HTTP/1.1" 200 121279
    [17/Mar/2021 09:51:55] "GET /static/js/jquery.min.220afd743d9e.js HTTP/1.1" 200 88145
    [17/Mar/2021 09:51:55] "GET /static/js/helpers.9a01b074ff58.js HTTP/1.1" 200 13336
    [17/Mar/2021 09:51:55] "GET /react-app/index.js?v=1eac65 HTTP/1.1" 200 5200104
    [17/Mar/2021 09:51:58] "GET /static/fonts/roboto/roboto-v20-latin_cyrillic-regular.9af3b948743a.woff2 HTTP/1.1" 200 22428
    [17/Mar/2021 09:51:59] "GET /react-app/main.css.map HTTP/1.1" 200 133214
    
    problem 
    opened by brianbarbieri 60
  • unable to add an ML backend

    unable to add an ML backend

    Hey there,

    When I try to initialize an ML backend with label-studio-ml init spacy_backend --script /path/to/model.py, I constantly get the error message:

        raise FileExistsError('Model directory already exists. Please remove it or use --force option.')
    FileExistsError: Model directory already exists. Please remove it or use --force option.
    

    and I tried the --force option, it seemed to work but no ML backend was actually added when I go to http://localhost:8080/model

    Does anyone have an idea what could have possibly gone wrong here? Any help would be so appreciated!

    Best, Xu

    opened by JINHXu 34
  • 1.0.1 doc updates incl start scenarios, DB persist & info, invite, and local storage

    1.0.1 doc updates incl start scenarios, DB persist & info, invite, and local storage

    Docs for various start scenarios (still some missing), database persistence with cloud and docker, and a new dedicated page for database storage info since it needed a fresh home.

    opened by smoreface 33
  • sometime show remarked data when labeling.

    sometime show remarked data when labeling.

    Problems

    Hi, I have encountered some problems when i label my data. The label studio tool sometimes show remarked data. For example, If i had labeled the first data. but when i label 500 or more data, the first remarked data show again. I have checked my data that do not duplicated. So I want to check if whether the tool bug? Anyone have any ideas?

    Environment

    • label-studio: 0.8.0
    • text data saved on aws s3.
    • i used sentence label.
    problem 
    opened by MarsSu0618 33
  • Exception in Export to YOLO

    Exception in Export to YOLO

    Describe the bug A clear and concise description of what the bug is.

    To Reproduce Steps to reproduce the behavior:

    1. Go to Project
    2. Click on Export
    3. Select format YOLO
    4. After some seconds have exception:
    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/dist-packages/rest_framework/views.py", line 506, in dispatch
        response = handler(request, *args, **kwargs)
      File "/usr/local/lib/python3.8/dist-packages/django/utils/decorators.py", line 43, in _wrapper
        return bound_method(*args, **kwargs)
      File "/label-studio/label_studio/data_export/api.py", line 181, in get
        export_stream, content_type, filename = DataExport.generate_export_file(
      File "/label-studio/label_studio/data_export/models.py", line 161, in generate_export_file
        converter.convert(input_json, tmp_dir, output_format, is_dir=False)
      File "/usr/local/lib/python3.8/dist-packages/label_studio_converter/converter.py", line 174, in convert
        self.convert_to_yolo(input_data, output_data, output_image_dir=image_dir,
      File "/usr/local/lib/python3.8/dist-packages/label_studio_converter/converter.py", line 597, in convert_to_yolo
        category_name = label['rectanglelabels'][0]
    IndexError: list index out of range
    

    Expected behavior zip file with exported labels downloaded

    Environment (please complete the following information):

    • OS: docker
    • Label Studio Version 1.4
    problem images export 
    opened by zbyte 31
  • Encoding

    Encoding

    Hello there,

    I'm using your project to annotate data with scandinavian letters (æ, ø, å) from a text file, like so: label-studio init poc-front --input-path=data.txt --input-format=text --label-config=config.xml I then start the front, navigate to labeling, and I am greeted with 'Ã¥' instead of 'å'.

    Obviously this is an encoding issue, and I was wondering if you would consider the standard input text format to be utf-8 I suggest the following change:

    from: with io.open(path) as f: to: with io.open(path, encoding="utf8") as f:

    https://github.com/heartexlabs/label-studio/blob/8209b3a286a0443b772e73540aad24bcf27e6712/label_studio/tasks.py#L84

    opened by RasmusEdvardsen 30
  • Docs/1.0.0 updates

    Docs/1.0.0 updates

    Lots of minor fixes

    • Fixing typos
    • Fixing broken links

    Plus some bigger ones:

    • Updating install guidance with more troubleshooting and clarity
    • Updating API doc link to point to hosted OpenAPI reference
    opened by smoreface 29
  • Time Series Improvements - Y axis Min max scaling etc

    Time Series Improvements - Y axis Min max scaling etc

    @hlomzik @deppp Great work guys! A couple of things from me: My electrical time series dataset has BIG outliers, so the tool isn't useful for me yet until the Y axis values are dynamic ( I can't actually see/label the small spikes in my data when the Y axis doesn't adjust to the min,max of the time series window - see first screenshot below). Exporting annotations - It would be super helpful if we could export as csv and it exports the raw data as a csv, with another column for the annotation (either categorical for the class or numerical e.g 0 = no category, 1 = Category A, 2 = Category B - see screenshot below). It would also be good to upload a csv with a pre-populated "annotation" column so we can use assisted annotation. Hope these functions can be incorporated in the near future! Best Regards, Sam. Images are in time_series.md merge/comments

    feature time series 
    opened by davodogster 25
  • There was an issue loading URL from $csv value. Most likely that's because static server has wide-open CORS. Read more on that here.

    There was an issue loading URL from $csv value. Most likely that's because static server has wide-open CORS. Read more on that here.

    Describe the bug Can't open uploaded file from host

    To Reproduce Steps to reproduce the behavior:

    1. I'm starting project label-studio start {project}
    2. After that label studio url is reachable from another hosts
    3. But on another host it can't open files for labeling with this error

    There was an issue loading URL from $csv value. Most likely that's because static server has wide-open CORS. Read more on that here.

    Also check that:

    URL is valid Network is reachable URL: http://localhost:8080/data/upload/23a6a3ba2a65dde741c97818c0f586e2-file_1.csv

    **Environment **

    • OS: WIndows
    • Browser: chrome
    • Version: latest

    My config for project

    `

    <TimeSeriesLabels name="label" toName="ts">
        <Label value="-1" background="red"></Label>
        <Label value="+1" background="green"></Label>
    </TimeSeriesLabels>
    
    <TimeSeries
            name="ts"
            valueType="url"
            timeColumn="tradedate"
            value="$csv"
            sep=","
            timeFormat="%Y-%m-%d"
            timeDisplayFormat="%Y-%m-%d"
            overviewChannels="waprice"
    >
        <Channel
                column="waprice"
                strokeColor="#1f77b4">
        </Channel>
        <Channel
                column="val"
                strokeColor="#ff7f0e">
        </Channel>
    </TimeSeries>
    
    ` problem 
    opened by tibhar940 24
  • Instructions for running test suite are incomplete

    Instructions for running test suite are incomplete

    Describe the bug The requirements for requirements-test.txt do not include required Django packages, and installing them anyways as from requirements.txt leads to incompatibility issues because of an old version of fakeredis being used incompatible with the requirements.txt version of redis. Attempting to forge ahead anyways leads to the following error: pytest-django could not find a Django project (no manage.py file could be found). You must explicitly add your Django project to the Python path to have it picked up. To Reproduce Steps to reproduce the behavior:

    1. Go to https://github.com/heartexlabs/label-studio#run-test-suite
    2. Attempt to reproduce in a new environment

    Expected behavior A clear and followable set of instructions to set up the test suite and be able to run it

    Environment (please complete the following information):

    • OS: ubuntu 20.04
    • Label Studio Version 1.7
    opened by engma-linguistics 0
  • Add a translation function of the masks from the brush tool?

    Add a translation function of the masks from the brush tool?

    Is your feature request related to a problem? Please describe.

    Sometimes the objects smeared by the brush will shift. If you can translate the mask, you can simply correct it.

    image

    Describe the solution you'd like

    At present, my solution is to delete the original mask and repaint it.

    image

    It may be more convenient if you can translate the mask.

    Thanks a lot!

    opened by b-niu 0
  • Using number keys on the keyboard to create a new layer of brush.

    Using number keys on the keyboard to create a new layer of brush.

    Is your feature request related to a problem? Please describe. When you want to mark two independent objects in an image, you must switch the brush tool once, otherwise the two objects will become one object in the same brush layer. It is a little complex to use the mouse to switch brush tools in label studio. You must click other tools once, and then click the brush again. Maybe I didn't master the correct method.

    Describe the solution you'd like In version 1.6, you can directly enter a new brush layer by clicking the 1, 2, 3, 4, 5 and other number keys on the keyboard, which is very easy to use and improves efficiency for me. However, after upgrading to version 1.7.0, clicking the number button will not create a new mask object. It will only change the classification of the current object. I hope that the keyboard number keys can revert to the 1.6.0 behavior.

    Describe alternatives you've considered Maybe we can add a switch to the settings to control the behavior of the keyboard numeric keys.

    Additional context Other users mentioned the opposite issue. It may be better to add a switch. https://github.com/heartexlabs/label-studio/issues/3172

    Thank you very much for considering that.

    opened by b-niu 0
  • Inter-project data-root related side effect

    Inter-project data-root related side effect

    Describe the bug I export data root env variable. I launch LS. I create project in GUI manually. I import images via task file. Images are displayed in UI. Yeay. I create new project with SDK and import local images via SDK. Images are displayed. I delete the first manually created project. I re-run code that creates project and imports images. Images are no longer displayed. Why is your software so broken? Seriously, this data-referencing stuff is incredibly fragile and really badly documented. It produces immense amounts of problems.

    To Reproduce

    LS launcher script:

    def main(args):
        os.environ["LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED"] = "true"
        os.environ["LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT"] = str(args.image_dir)
    
        azure_storage_credentials = load_config(AZURE_STORAGE_CREDENTIALS_FILE)
        os.environ["AZURE_BLOB_ACCOUNT_NAME"] = azure_storage_credentials["account_name"]
        os.environ["AZURE_BLOB_ACCOUNT_KEY"] = azure_storage_credentials["account_key"]
    
        logger.info("Starting label studio...")
        subprocess.run(["label-studio", "start"])
    

    Project initialization script:

    def main(args):
        client = initialize_label_studio()
        project = initialize_project(client)
        import_tasks(project)
    
    
    def initialize_label_studio() -> Client:
        logger.info("Initializing Label Studio backend...")
        client = Client(**load_config(LABEL_STUDIO_CREDENTIALS_FILE))
        check_connection(client)
        return client
    
    
    def initialize_project(client: Client) -> Project:
        logger.info("Initializing Label Studio project...")
        project = client.start_project(
            title="AIT Annotation",
            label_config=LABEL_CONFIG.read_text(),
        )
        return project
    
    
    def import_tasks(project: Project, source: str):
        logger.debug("Importing tasks via config...")
        unseen_tasks = filter_new_tasks(build_task_records(), project.get_tasks())
        logger.debug(f"Found {len(unseen_tasks)} new tasks.")
        if unseen_tasks:
            project.import_tasks(unseen_tasks)
        return project
    
    def filter_new_tasks(new_task_candidates, existing_tasks):
        """Assumes that input images have a unique hash."""
    
        logger.debug(f"Filtering {len(new_task_candidates)} new task candidates...")
    
        def get_image_hash_from_task(task):
            return task["data"]["image"].split("?d=")[1]
    
        existing_image_hashes = set(map(get_image_hash_from_task, existing_tasks))
        unseen_tasks = [task for task in new_task_candidates if get_image_hash_from_task(task) not in existing_image_hashes]
    
        return unseen_tasks
    
    
    def build_task_records(image_dir: Path = None):
        image_dir = image_dir or Path(load_config(CONFIG_FILE)["data_root"])
        image_extensions = [".jpg", ".jpeg", ".png"]
        image_files = lmapcat(lambda ext: image_dir.glob(f"*{ext}"), image_extensions)
        task_records = [build_task_record(image_file) for image_file in tqdm(image_files, desc="Building task records")]
        return task_records
    
    
    def build_task_record(image_path: Path):
        logger.trace(f"Building task record for {image_path}")
        return {
            "data": {
                # See https://labelstud.io/guide/storage.html#Tasks-with-local-storage-file-references
                # The prefix '/data/local-files' is required by label studio, see:
                # https://github.com/heartexlabs/label-studio/issues/774
                "image": str(Path("/data/local-files/") / f"?d={image_path.name}"),
            },
        }
    

    Maybe this code works, maybe it does not. It worked for me until I manually deleted an unrelated project in the GUI!

    Error:

    There was an issue loading URL from $image value
    
    Things to look out for:
    
    URL is valid
    URL scheme matches the service scheme, i.e. https and https
    The static server has wide-open CORS, [more on that here](https://labelstud.io/guide/storage.html#Troubleshoot-CORS-and-access-problems)
    Technical description:
    URL: [/data/local-files/?d=7b3a6559b521f7d27bafde64b6e67a1a.jpeg](http://localhost:8080/data/local-files/?d=7b3a6559b521f7d27bafde64b6e67a1a.jpeg)
    

    LS log says things like this:

    [2023-01-06 18:58:54,360] [django.server::log_message::161] [WARNING] "GET /data/local-files/?d=4a598220c859e731a2d862d31f22c0b4.jpeg HTTP/1.1" 404 0
    [2023-01-06 18:58:54,390] [django.request::log_response::224] [WARNING] Not Found: /data/local-files/
    

    and

    [2023-01-06 19:00:49,047] [django.server::log_message::161] [INFO] "GET /health HTTP/1.1" 200 16
    [2023-01-06 19:00:49,047] [django.server::log_message::161] [INFO] "GET /health HTTP/1.1" 200 16
    [2023-01-06 19:00:49,106] [django.server::log_message::161] [INFO] "POST /api/projects HTTP/1.1" 201 1670
    [2023-01-06 19:00:49,106] [django.server::log_message::161] [INFO] "POST /api/projects HTTP/1.1" 201 1670
    [2023-01-06 19:00:49,180] [django.server::log_message::161] [INFO] "GET /api/tasks?project=122&page=1&page_size=100&query=%7B%22filters%22%3A+null%2C+%22ordering%22%3A+%5B%5D%2C+%22selectedItems%22%3A+%7B%22all%22%3A+true%2C+%22excluded%22%3A+%5B%5D%7D%7D&fields=all HTTP/1.1" 200 66
    [2023-01-06 19:00:49,180] [django.server::log_message::161] [INFO] "GET /api/tasks?project=122&page=1&page_size=100&query=%7B%22filters%22%3A+null%2C+%22ordering%22%3A+%5B%5D%2C+%22selectedItems%22%3A+%7B%22all%22%3A+true%2C+%22excluded%22%3A+%5B%5D%7D%7D&fields=all HTTP/1.1" 200 66
    [2023-01-06 19:00:49,242] [core.utils.common::custom_exception_handler::79] [ERROR] 6c14e323-97ce-4116-afb9-d37370ebf469 Invalid page.
    Traceback (most recent call last):
      File "/home/mbisping/miniconda3/envs/ait-annotation/lib/python3.8/site-packages/rest_framework/pagination.py", line 204, in paginate_queryset
        self.page = paginator.page(page_number)
      File "/home/mbisping/miniconda3/envs/ait-annotation/lib/python3.8/site-packages/django/core/paginator.py", line 76, in page
        number = self.validate_number(number)
      File "/home/mbisping/miniconda3/envs/ait-annotation/lib/python3.8/site-packages/django/core/paginator.py", line 58, in validate_number
        raise EmptyPage(_('That page contains no results'))
    django.core.paginator.EmptyPage: That page contains no results
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/mbisping/miniconda3/envs/ait-annotation/lib/python3.8/site-packages/rest_framework/views.py", line 506, in dispatch
        response = handler(request, *args, **kwargs)
      File "/home/mbisping/miniconda3/envs/ait-annotation/lib/python3.8/site-packages/django/utils/decorators.py", line 43, in _wrapper
        return bound_method(*args, **kwargs)
      File "/home/mbisping/miniconda3/envs/ait-annotation/lib/python3.8/site-packages/label_studio/data_manager/api.py", line 207, in get
        page = self.paginate_queryset(queryset)
      File "/home/mbisping/miniconda3/envs/ait-annotation/lib/python3.8/site-packages/rest_framework/generics.py", line 171, in paginate_queryset
        return self.paginator.paginate_queryset(queryset, self.request, view=self)
      File "/home/mbisping/miniconda3/envs/ait-annotation/lib/python3.8/site-packages/label_studio/data_manager/api.py", line 136, in paginate_queryset
        return super().paginate_queryset(queryset, request, view)
      File "/home/mbisping/miniconda3/envs/ait-annotation/lib/python3.8/site-packages/rest_framework/pagination.py", line 209, in paginate_queryset
        raise NotFound(msg)
    rest_framework.exceptions.NotFound: Invalid page.
    [2023-01-06 19:00:49,245] [django.request::log_response::224] [WARNING] Not Found: /api/tasks/
    [2023-01-06 19:00:49,245] [django.request::log_response::224] [WARNING] Not Found: /api/tasks/
    [2023-01-06 19:00:49,246] [django.server::log_message::161] [WARNING] "GET /api/tasks?project=122&page=2&page_size=100&query=%7B%22filters%22%3A+null%2C+%22ordering%22%3A+%5B%5D%2C+%22selectedItems%22%3A+%7B%22all%22%3A+true%2C+%22excluded%22%3A+%5B%5D%7D%7D&fields=all HTTP/1.1" 404 122
    [2023-01-06 19:00:49,246] [django.server::log_message::161] [WARNING] "GET /api/tasks?project=122&page=2&page_size=100&query=%7B%22filters%22%3A+null%2C+%22ordering%22%3A+%5B%5D%2C+%22selectedItems%22%3A+%7B%22all%22%3A+true%2C+%22excluded%22%3A+%5B%5D%7D%7D&fields=all HTTP/1.1" 404 122
    [2023-01-06 19:00:49,396] [django.server::log_message::161] [INFO] "POST /api/projects/122/import?return_task_ids=1 HTTP/1.1" 201 2549
    [2023-01-06 19:00:49,396] [django.server::log_message::161] [INFO] "POST /api/projects/122/import?return_task_ids=1 HTTP/1.1" 201 2549
    [2023-01-06 19:00:49,490] [django.server::log_message::161] [INFO] "POST /api/storages/export/azure HTTP/1.1" 201 313
    [2023-01-06 19:00:49,490] [django.server::log_message::161] [INFO] "POST /api/storages/export/azure HTTP/1.1" 201 313
    [2023-01-06 19:00:51,745] [django.server::log_message::161] [INFO] "POST /api/ml HTTP/1.1" 201 295
    [2023-01-06 19:00:51,745] [django.server::log_message::161] [INFO] "POST /api/ml HTTP/1.1" 201 295
    

    Expected behavior Deleting a project should not have side effects on other projects.

    Environment (please complete the following information):

    • OS: Linux label-studio 1.7.0 label-studio-converter 0.0.48rc0 label-studio-ml 1.0.8 label-studio-sdk 0.0.16 label-studio-tools 0.0.0.dev11
    opened by mbspng 2
Releases(1.7.0)
  • 1.7.0(Dec 15, 2022)

    Label Studio 1.7 Release Notes

    The Label Studio 1.7 Open Source release now supports larger audio files, millisecond-level controls, and an advanced rendering engine among new features that put Label Studio at the forefront of data labeling for audio files. This release also introduces simplified ways to deploy and manage your Label Studio application using full infrastructure provisioning with Terraform scripts and scalable service management on Kubernetes with Helm Charts deployment.

    Breaking changes

    Starting with this release, the application will run using a non-root docker user with ID 1001.

    If you encounter any permission issues when running the application in a docker container, you can fix them by changing the ownership of the relevant files and directories to 1001.

    docker run -it --user root -v `pwd`/mydata:/label-studio/data heartexlabs/label-studio:1.7.0 chown -R 1001:root /label-studio/data/
    

    New Feature and Enhancement

    Label Studio 1.7.0 includes the following new features and enhancements.

    • Starting with this release, you can install Label Studio to your cloud infrastructure using the Terraform scripts and Helm Charts.
    • The audio labeling platform introduces the enhancements of the audio player with the ability to annotate audio files up to two hours in length, provide fine-grain annotation controls, and implement an efficient rendering engine that displays the audio waveforms while remaining performant, even with large, and multi-hour audio files. You can now play and navigate through an audio waveform by precisely managing the labeled regions. Regions and relations are simple to manage and manipulate on the audio waveform and interface.
    • This release provides the Comments and Notifications feature that defines how annotators, reviewers, and administrators communicate and receive updates on projects and tasks.
    • Add new header GitHub stars by @Travis1282 in https://github.com/heartexlabs/label-studio/pull/3040.
    • Update header CSS, GitHub stars, and command block on search by @Travis1282 in https://github.com/heartexlabs/label-studio/pull/3074.
    • Add swagger docs for AllStorage APIs by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/2815, DEV-2914.
    • Read virtual annotator filters from local storage as a fallback by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3089, DEV-3572.
    • Add mixin to Project to support mechanism to cancel old jobs by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/2547, DEV-2075.
    • Load task with given comment by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3250, DEV-3750.
    • Support updated_by for annotations by @hakan458 in https://github.com/heartexlabs/label-studio/pull/3244, DEV-3259
    • Queue management min backend by @triklozoid in https://github.com/heartexlabs/label-studio/pull/3282, DEV-3756.
    • Support for Updated_by field on annotation level in Update, Accept , and Reject by @hakan458 in https://github.com/heartexlabs/label-studio/pull/3318, DEV-3259.

    Bug Fixes

    Label Studio 1.7.0 includes the following bug fixes.

    • Fixed the video regions without a label in https://github.com/heartexlabs/label-studio/pull/3012, DEV-3510.
    • Fixed an issue where the Data Manager was broken when an annotator was deactivated by @makseq in https://github.com/heartexlabs/label-studio/pull/3022.
    • Added CreateOnlyFieldsMixin and BaseUserSerializer to make email-only writeable on creating by @wesleylima in https://github.com/heartexlabs/label-studio/pull/3027, DEV-3430.
    • Resolved Data Manager conflicts by @bmartel in https://github.com/heartexlabs/label-studio/pull/3049, DEV-3558.
    • Fixed an issue where the video failed to send a request and timed out with a display error message that it was not supported by @bmartel in https://github.com/heartexlabs/label-studio/pull/3031, DEV-3284.
    • Fixed CONLL export tokenization issue with splitting into individual tokens by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/3046, DEV-1923.
    • Removed backend reset for tabs by @makseq in https://github.com/heartexlabs/label-studio/pull/3052, DEV-3555.
    • Fixed auth check for uploaded files by @triklozoid in https://github.com/heartexlabs/label-studio/pull/2942, DEV-2915.
    • Fixed project card showed incorrect counter for finished tasks by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/2398, DEV-2455.
    • Added validation if the stage was ready by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3107, DEV-3607.
    • Projects, displayed on the user's organization page, include other organizations by @makseq in https://github.com/heartexlabs/label-studio/pull/3105, DEV-3465.
    • Fixed updating summary on delete annotations by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/3115, DEV-3303.
    • Fixed making exc_info None when debug_modal_exceptions_false by @wesleylima in https://github.com/heartexlabs/label-studio/pull/3128, DEV-3473.
    • Region navigation failed in scrolling mode by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3126, DEV-3543.
    • ci: Extend GitLeaks config by @nikitabelonogov in https://github.com/heartexlabs/label-studio/pull/3133.
    • Annotations drawn for the audio region should span all channels by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3127, DEV-3564.
    • Removed unsafe HTML from project expert_instruction by @wesleylima in https://github.com/heartexlabs/label-studio/pull/3044, DEV-3478.
    • Added YOLO and VOC export image without bounding box by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/2605, DEV-2792.
    • Timeseries brush to end of timeline error by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3147, DEV-3645.
    • Fixed source storage duplicating tasks when double clicking the Sync button by @guilhermemachado26 in https://github.com/heartexlabs/label-studio/pull/2915, DEV-1904.
    • History state failed with hotkeys after saving unclosed polygons by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3135, DEV-3612.
    • Fixed filename in COCO export by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/3154, DEV-3669.
    • Update button was displayed instead of the Cancel skip button in the label stream when a user navigated to the canceled task by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3148, DEV-2505.
    • Restored missed multipage.png by @niklub in https://github.com/heartexlabs/label-studio/pull/3167.
    • Fixed logs for critical overlap issues by @makseq in https://github.com/heartexlabs/label-studio/pull/3170.
    • Large timeseries datasets failed to display y values by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3118, DEV-2297.
    • Fixed classification type tags render on annotation history change by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3163, DEV-2301.
    • Added the possibility to manually add tag value in settings by @juliosgarbi in https://github.com/heartexlabs/label-studio/pull/3144, DEV-3589.
    • Added session expiration settings and conditions by @wesleylima in https://github.com/heartexlabs/label-studio/pull/3114, DEV-3397.
    • Fixed Eraser brush which was not erasing the stroke by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3162, DEV-3647.
    • Fixed the navigation using task links by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3178, DEV-3673.
    • RegionEditor input for numbers was recasted to the Number as it is a String by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3175, DEV-3636.
    • Used correct feature flags for resuming unfinished polygon by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3166, DEV-3661.
    • Pagination failed to work when a region was selected by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3156, DEV-3651.
    • Reverted the fix to add session expiration settings and conditions" by @wesleylima in https://github.com/heartexlabs/label-studio/pull/3181, DEV-3397.
    • Fixed an empty toname issue in the control tag by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3161, DEV-1598.
    • Fixed undo with Auto Detect tool by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3160, DEV-1284.
    • Fixed memory leaks in Taxonomy and Repeater cases by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3158, DEV-3617.
    • Edit and Delete options were missing for Comments section by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3041, DEV-2993.
    • Fixed navigation using task links was broken by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3180, DEV-3673.
    • Refactored setting of last_login to reduce repetition by @wesleylima in https://github.com/heartexlabs/label-studio/pull/3185, DEV-3397.
    • Fixed value updating for dynamic children by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3197, DEV-3701.
    • Added example output for HyperTextLabels by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3164, DEV-3632.
    • Stopped the cmd key from focusing search input by @huguestennier in https://github.com/heartexlabs/label-studio/pull/3204.
    • Fixed auto-annotations not being revealed by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3202, DEV-3704.
    • Added info text about cloud storage on import dialog by @makseq in https://github.com/heartexlabs/label-studio/pull/3168.
    • Build for react-app by @makseq in https://github.com/heartexlabs/label-studio/pull/3210.
    • Aligned comment icons into the same columns with annotation and drafts in the dropdown selector by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3186, DEV-3487.
    • Checked if the user was logged in before continuing to reset the session due to session age by @wesleylima in https://github.com/heartexlabs/label-studio/pull/3216, DEV-3718.
    • Multiple clicks on the Skip button created multiple skipped annotations by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3215,DEV-3496.
    • Fixed large config validation by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3219,DEV-3720.
    • Changed border color to being visible when the item is selected by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3191, DEV-3467.
    • Postponed queue by @makseq in https://github.com/heartexlabs/label-studio/pull/2987, DEV-3224.
    • Editable Textarea in region list by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3231, DEV-3738.
    • Fixed misspell in next_task debug by @makseq in https://github.com/heartexlabs/label-studio/pull/3240.
    • Correctly serialized JSON fields in CSV output by @hakan458 in https://github.com/heartexlabs/label-studio/pull/3165, DEV-3578.
    • Toggled text range visibility works in Outliner by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3236, DEV-3742.
    • Reassigning the label to a bounding box with a hotkey was not available by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3235, DEV-3672.
    • Video object boundaries by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/2973, DEV-3350.
    • Fixed missing labels on video regions by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3230, DEV-1852.
    • Fixed task data validation for nested fields with repeater by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/3239, DEV-3744.
    • Added retry for bulk stats calculation by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/2888, DEV-3296.
    • Updated Django version for CVEs by @changhsinlee in https://github.com/heartexlabs/label-studio/pull/3238.
    • Retain the task if the URL was from a notification by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3237, DEV-3736.
    • Updated behavior in Label Stream by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3260, DEV-3773.
    • Allowed to persist and use the pending draft to attach added comments by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3254, DEV-3733.
    • Added project field to annotation by @triklozoid in https://github.com/heartexlabs/label-studio/pull/3195, DEV-3668.
    • Fixed pytz dependency conflict with celery requiring a newer version. by @melihozaydin in https://github.com/heartexlabs/label-studio/pull/299
    • Infinite requests when offline by @nicholasrq in https://github.com/heartexlabs/label-studio/pull/3265, DEV-3780.
    • Rollback change DEV-3296 by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/3283, DEV-3822
    • Reverted the support updated_by for annotations by @hakan458 in https://github.com/heartexlabs/label-studio/pull/3289, DEV-3259.
    • *ci: Fix upload release asset by @nikitabelonogov in https://github.com/heartexlabs/label-studio/pull/3291
    • Added control tag name to error by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/3266, DEV-3779.
    • Deleted migration file by @hakan458 in https://github.com/heartexlabs/label-studio/pull/3300, DEV-3259.
    • Fixed CSV export download with non-existing columns by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/3263, DEV-3764.
    • Updated Python example code for unit conversion referenced in documentation by @mastash3ff in https://github.com/heartexlabs/label-studio/pull/3286.
    • *ci: SRE-342: Auto-generate release notes against previous release tag by @nikitabelonogov in https://github.com/heartexlabs/label-studio/pull/3302.
    • Fixed issues in the reviews module by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3225, DEV-3693.
    • Removed MEDIA_URL from uploaded file path by @triklozoid in https://github.com/heartexlabs/label-studio/pull/3307, SRE-330.
    • Memory usage of repeater initialization caused crashes by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3280, DEV-3754.
    • Fixed the misalignment between frame numbers by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3270, DEV-2706.
    • Added information logs for delete job by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/3326, DEV-3866.
    • Manual editing keypoints coordinates caused data corruption by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3305, DEV-3835.
    • Added more logs to rqworker by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/3329, DEV-3866.
    • Fixed RelationsOverlay with 3391 ff on by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3328, DEV-3867.
    • Unselected all items in history instead of just the selected item by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3332, DEV-3745.
    • GCS persistent storage is broken by @farioas in https://github.com/heartexlabs/label-studio/pull/3335, SRE-351.
    • *ci:: Added more cache by @farioas in https://github.com/heartexlabs/label-studio/pull/3345, SRE-344.
    • Fixed polling overflow by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3339, DEV-3874.
    • Added is_labeled filter to skip queue by @makseq in https://github.com/heartexlabs/label-studio/pull/3353
    • *fix:: Bumped label-studio-converter to 0.0.48rc0 by @makseq in https://github.com/heartexlabs/label-studio/pull/3354, DEV-3852.
    • Fixed update_tasks_counters call with DM filters by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/3279, DEV-3814.
    • Fixed paragraph overflow text issue when Outliner was disabled by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3358, DEV-3901.
    • Fixed the token renewal button by @Ben-Epstein in https://github.com/heartexlabs/label-studio/pull/3034.
    • Removed WASD by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3386, DEV-3958.
    • Avoid creation of pg_trgm in Postgres if it's already existing by @makseq in https://github.com/heartexlabs/label-studio/pull/3384, DEV-3839.
    • Pan failed to work in images from history by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3370, DEV-3719.
    • *ci: SRE-345: Add make migrations check by @nikitabelonogov in https://github.com/heartexlabs/label-studio/pull/3418.
    • Improved performance for _rearrange_overlap_cohort by @KonstantinKorotaev in https://github.com/heartexlabs/label-studio/pull/3271, DEV-3798.
    • Moved persistent storage to OS by @makseq in https://github.com/heartexlabs/label-studio/pull/3377, DEV-3911.
    • Fixed follow merge of Audio v3 release by @robot-ci-heartex in https://github.com/heartexlabs/label-studio/pull/3438.

    Thank you to all the contributors for making Label Studio 1.7.0 a success!

    New Contributors

    • @wesleylima made their first contribution in https://github.com/heartexlabs/label-studio/pull/3027
    • @huguestennier made their first contribution in https://github.com/heartexlabs/label-studio/pull/3204
    • @changhsinlee made their first contribution in https://github.com/heartexlabs/label-studio/pull/3238
    • @melihozaydin made their first contribution in https://github.com/heartexlabs/label-studio/pull/2995
    • @mastash3ff made their first contribution in https://github.com/heartexlabs/label-studio/pull/3286
    • @Ben-Epstein made their first contribution in https://github.com/heartexlabs/label-studio/pull/3034
    Source code(tar.gz)
    Source code(zip)
    label_studio-1.7.0-py3-none-any.whl(42.51 MB)
  • 1.6.0(Sep 27, 2022)

    Label Studio 1.6 Release Notes

    The Label Studio 1.6 open source release now supports video object tracking in general availability, making it the most popular open source data labeling platform to support all data types—video, image, text and hypertext, time series, and audio. In addition to the new video player that supports frame-by-frame video object tracking, the latest release also features a new annotation user interface called the Outliner that is more efficient, ergonomic, and flexible.

    New Features

    Label Studio 1.6.0 includes the following new features and enhancements:

    • Video object tracking support and template by @nicholasrq
    • Bounding box annotation UX improvements by @yyassi-heartex in #2437, DEV-2132
    • Per model backend model version selector by @bmartel in #2476, DEV-1682
    • Dynamic Labels templates by @hlomzik in #2527, DEV-2636
    • Experimental feature add data field by @makseq in #2558
    • Create filters for authors in Paragraph Transcription by @bmartel in #2557, DEV-2669
    • Improve project list performance by hydrating counters in a second request by @bmartel in #2579, DEV-2575
    • Implement image enhancements to zoom, pixelate, and center in #2654, DEV-2504
    • Move model_version to ML backend and add get versions by @KonstantinKorotaev in #2023, DEV-1646
    • Add proxy password to interactive annotations context by @KonstantinKorotaev in #2613, DEV-2362
    • Regions list grouped by labels with the persistent and ordered collapse in #2701, DEV-2755
    • Add command for the export project in open source by @guilhermemachado26 in #2824, DEV-3145
    • Add uwsgi and nginx by @farioas in #2868, DEV-3031
    • Add option to sync audio with paragraphs allowing playback of chunk position in #2866, DEV-2461
    • Movable columns in Data Manager in #2882, DEV-2984
    • Introduce default attributes for AudioPlus in #2862, DEV-388
    • Introduce simplified shortcuts in #2897, DEV-3260
    • Add "video" type to the Data Manager columns API by @makseq in #2976, DEV-3372
    • Display supported video formats by @nicholasrq in #2974, DEV-3371
    • Enable video preview in #2981, DEV-3373

    Bug Fixes

    Label Studio 1.6.0 includes the following bug fixes.

    • Fixed paragraph data to load into QuickView by @yyassi-heartex in #2440, DEV-2465
    • User was able to edit Time Series results imported as read-only by @yyassi-heartex in #2444, DEV-2367
    • X-axis zoom threshold by @Travis1282 in #2494, DEV-1714
    • Added guard with an error message for non-incremental, non-sequential datasets in Time Series (#1752) by @bmartel in #2487, DEV-2510
    • Worked on the Next task query optimization by @triklozoid in #2262, DEV-2184
    • Bounding box flickered during region creation by @yyassi-heartex in #2510, DEV-2592
    • Fixed an issue to avoid the display of delete all region buttons when an annotation is read-only @bmartel in #2515, DEV-2309
    • Fixed blind SSRF on add model and import by @triklozoid in #2450, DEV-2235
    • Fixed deselection of ImageView bounding box before creating another by @bmartel in #2475, DEV-1442
    • Unfinished polygon zoom fix by @Travis1282 in #2518, DEV-2313
    • Suppressed removeChild error by @hlomzik in #2521, DEV-2608
    • Fixed data in SERP Ranking in-app template by @hlomzik in #2528, DEV-2604
    • Fixed runtime error when duration is not extracted by @KonstantinKorotaev in #2297, DEV-2095
    • Fixed annotation_id is provided as float value in CSV export by @KonstantinKorotaev in #2244, DEV-2139
    • ProjectModelVersionSelector values were not correctly set @bmartel in #2533, DEV-1682
    • Sync speed between video and audio by @juliosgarbi in #2524, DEV-2207
    • Prop whenChoiceValue worked as expected by @juliosgarbi in #2497, DEV-1833
    • Fixed django migrations warning by @triklozoid in #2543, DEV-2665
    • Replaced inner_id index with multicolumn by @triklozoid in #2542, DEV-2667
    • Fixed issues with rotating bounding box @yyassi-heartex in #2535, DEV-2647
    • Moved calculate_stats_all_orgs to rq_workers, swap migration by @makseq in #2569, DEV-2589
    • Fixed error for actions with ordering by joined field by @KonstantinKorotaev in #2536, DEV-2658
    • Allowed cmd or ctrl to create regions immediately with deselecting on canvas click enabled. by @bmartel in #2553, DEV-2655
    • Supported both regions drawing behaviors with a settings flag by @bmartel in #2574, DEV-2655
    • Allowed unfinished polygons to be saved as a draft by @bmartel in #2549, DEV-2432
    • Displayed source filename for S3 objects by @triklozoid in #2555, DEV-2687
    • Removed lookbehind in Safari Regex by @hlomzik in #2602, DEV-2777
    • Deselected image region bbox on short click by @bmartel in #2600, DEV-2739
    • Changed rotate anchor of bbox by @juliosgarbi in #2591, DEV-2671
    • Removed extra slash for file URL by @aisensiy in #2601
    • Multiple rendered labels in regions by @Travis1282 in #2590, DEV-2763
    • Unable to delete relationships between regions by @yyassi-heartex in #2612, DEV-2806
    • Hide storage filename field for old projects by @triklozoid in #2624, DEV-2687
    • DEV-1179: DateTime tag, fixes for date save and region switch by @Travis1282 in #2537, DEV-117
    • Improved delete point functionality by @Travis1282 in #2545, DEV-2431
    • get_local_path failed to work on local-files by @KonstantinKorotaev in #2642, DEV-2827
    • Quote relative path for local files by @m-nez in #2633
    • Hold to continuous draw image view shapes show immediately in #2651, DEV-2655
    • 3 point bbox tool remains selected but hidden when the user changes label configuration from Rectangle to RectangleLabels in #2673, DEV-2696
    • Outliner updated collapse/expand UI in #2668, DEV-2851
    • Renamed Tasks to Actions in #2699
    • Updated django version by @triklozoid in #2706, DEV-2936
    • Panels can obscure underlying content in #2707, DEV-2926
    • Fixed collapsed texts for TextArea in #2710, DEV-2930
    • Selection box of rectangle region remains broken after hide/ unhide action in #2712, DEV-2922
    • Stored XSS via SVG file by @dvwright in #2273, DEV-2236
    • Duplicated polygon regions in #2738, DEV-2967
    • Locked polygons in #2740, DEV-2977
    • Adding new fields leads to an error in label config validation by @KonstantinKorotaev in #2760, DEV-2939
    • Grouping regions without a label in #2714, DEV-2942
    • Fixed Audio resizing behavior in #2716, DEV-2934
    • Fixed floating panel positioning and constraints in #2718, DEV-2943
    • Fixed hiding NER regions with new outliner in #2708, DEV-2931
    • Better UI for Textarea inputs in the outliner in #2711, DEV-2927
    • Fixed NER region text not displaying in Details in #2715, DEV-2958
    • Changed ML URL validation flag name by @KonstantinKorotaev in #2773, DEV-3058
    • Fixed a visual bug with the Zoom To flyout menu on smaller screen sizes in #2765, DEV-3049
    • Polygon isn't finished when moved in #2674, DEV-2514
    • Annotation region locking should not persist in #2734, DEV-2949
    • Renamed variable to ML_BLOCK_LOCAL_IP by @KonstantinKorotaev in #2774, DEV-3058
    • Fixed history items rendering on the canvas in #2781, DEV-2970
    • Fixed changing label config for repeater tag by @KonstantinKorotaev in #2725, DEV-1462
    • Change the model version selector API response handling and present upgrade error for out-of-date ml backend by @bmartel in #2695, DEV-2905
    • Fixed reset after adding or removing labels by @KonstantinKorotaev in #2787, DEV-3090
    • Fixed paragraphs selection in #2779, DEV-3030
    • Added reset for project summaries in Rename labels by @makseq in #2797
    • Choices selected by default in #2798, DEV-2519
    • Fixed user creating API by @triklozoid in #2801, DEV-3131
    • Repeater performance improvement in #2805, DEV-3077
    • Disabled DTDForbidden for label config validation by @KonstantinKorotaev in #2782, DEV-3089
    • Added new property to turn lazyload off in #2820, DEV-3077
    • Undo keypoints when creating a new polygon in #2733, DEV-2576
    • Removed potential data exposure from logs by @niklub in #2828, DEV-3164
    • Fixed saving text for paragraph regions in #2827, DEV-3101
    • Added validation to avoid users importing local files using URL by @guilhermemachado26 in #2840, DEV-3212
    • Parsed all-time series timestamps to UTC to avoid improper calculations using possible daylight savings time in #2841, DEV-3211
    • Selected region corrupted the history in #2847, DEV-3140
    • Show/ Hide/ Lock / Unlock actions break the Undo functionality for video labels in #2854, DEV-2968
    • Image scaling goes lower than 1 causing small images in #2848, DEV-3061
    • Tasks are not filtered on the filter field change in #2860, DEV-3233
    • Sentry release frontend by @nicholasrq in #2891, DEV-3251
    • Fixed Delete tasks action to work with annotated queryset by @KonstantinKorotaev in #2895, DEV-3313
    • Fixed tabs randomly mixed after label stream by @guilhermemachado26 in #2892, DEV-1947
    • Prevented annotating collapsed phrases in paragraphs in #2869, DEV-2918
    • Misspelled in data export by @makseq in #2929
    • Regions in the 'Grouped by Label' section at the Outliner tab were ordered as they are ordered in labeling schema in #2927, dev-3055
    • User selection of regions grouping section at Outliner tab was not persistent in #2930, DEV-3056
    • Removed unused fields from completed_by by @triklozoid in #2918, DEV-3379
    • Repeater performance improvement in #2916, DEV-3298
    • Added more details for ML backend error by @KonstantinKorotaev in #2912, DEV-3351
    • Allowed video playhead scrubbing in #2937, DEV-3404
    • Moved zoom buttons to video's control panel in #2936, DEV-3405
    • Textarea placement in the config prevents OT in #2952, DEV-3429
    • Added a line between draft and annotation on annotation list in #2951, DEV-3074
    • Changed to 1 item per page changing page by region in #2953, DEV-3428
    • Don't add labels to Textarea result in #2964, DEV-2208
    • Fixed _scan_and_create_links failure for invalid annotation and prediction by @KonstantinKorotaev in #2925, DEV-3342
    • Pin django rest framework requirement by @triklozoid in #2980, DEV-3491
    • Updated google storage dependencies by @makseq in #2932, DEV-3340
    • After awhile, shapes disappeared in #2943, DEV-1943
    • Retained history for AudioNext addRegion so init step of existing regions operates correctly in #2993, DEV-2211
    • Error messages were displayed when the video load timed out in #2983, DEV-3284
    Source code(tar.gz)
    Source code(zip)
  • v1.5.0post0(Jul 13, 2022)

    Label Studio 1.5.0post0 Release Notes

    Bug Fixes

    • Correct region loading for video labelling
    • Don't crash when open quick view with specified task
    • Safari fix
    Source code(tar.gz)
    Source code(zip)
  • v1.5.0(Jun 16, 2022)

    Label Studio 1.5.0 Release Notes

    The latest release of Label Studio is dedicated to more dynamic and custom ways to define, change, and display label sets. Big new features include the ability to show labels dynamically (as opposed to statically), for example for classification or computer vision tasks use images rather than text for the label name and allow annotators to create new labels and evolve the taxonomy as they work through the dataset.

    The Label Studio 1.5.0 release includes the new features and enhancements, breaking changes, and bug fixes.

    Important notes about installation

    This release has long migrations and they can take up to 1-2 hours depending on your task number (relevant for instances with more than 100k tasks). If you want to avoid them, you should run label-studio --skip-long-migrations and then call label-studio calculate_stats_all_orgs. These migrations affect task counters like total annotation number, canceled number, and prediction number.

    New Features and Enhancements

    Label Studio 1.5.0 includes the following new features and enhancements.

    • Introduce dynamic labels as a task input through prediction from the model, or from a database lookup instead of having annotators scroll through an extensive list of choices. Dynamic labeling saves time and increases the consistency of labeling the objects.
    • Enhance the labeling methods by creating label sets with images and hyperlinks. This results in a better visual signal for annotators. You can also customize the view of choices to be displayed by using HTML markup.
    • Allow annotators to add new classes in taxonomy as they work through the dataset, without the need to predefine classes.
    • Add support for default settings functionality to the Label Studio Editor.
    • Include the Last updated by column in Data Manager with information about who made the last modifications for any of the annotations in this task at updated_at time.
    • Easily handle the imported tasks by sorting the task IDs in ascending order of filenames.
    • Add the no more tasks screen at the end of the queue. Now, you can go back to the previous task from the end of the labeling stream.
    • Set default y-scale parameter at label config level for audio UI.
    • Overlay timeline on top of the waveform for full height timestamp tooltip.
    • Add a group of APIs to manage labels in the Label Studio.
    • Create a lead time column in Data Manager with averaged lead time per task.
    • Improve the HyperTextLabels regions to no longer shift on annotation submit/ update/ change annotation/ draft to original toggle/ open close task/ undo redo toggle.
    • Improve the performance for API querying the next task in Label Stream.
    • Augment the performance of loading the project lists.
    • In the Quick View mode, the left-side list of tasks is focused on the current annotating task.
    • Add Undo/Redo functionality for audio.
    • Display the column (settings) icon when Quick View is opened.
    • Add support of OCR