Annotation quality control
built into every labeling job.

Quality assurance for data labeling in Supervisely checks labels before they reach a model: reviewers accept or reject work in labeling jobs and queues, consensus measures agreement between annotators, and exams, issues and statistics catch errors early.

Reviewers accept or reject every item before it ships.

Labeling jobs and queues have an annotation review step built in. When annotators submit their work, a reviewer goes through it in the labeling tool and accepts or rejects each item with a click or a hotkey.

  1. Annotators submit

    Labelers work through the items of their job in the labeling tool and submit it. The job moves from In progress to On review.

  2. Reviewers decide

    The reviewer accepts or rejects each item, and the Labeling Jobs page counts accepted and rejected items as the review goes.

  3. Rejected work goes back

    Restart a reviewed job, and its rejected items go back for relabeling in a new labeling job, to the same annotator or someone else. In a labeling queue, rejected items go straight back to the person who labeled them.

When the review is done, the Export Items After Review app exports only the accepted items of a job.

Manager

Creates jobs and queues, writes the instructions, assigns annotators and reviewers, and follows the statistics.

Annotator

Sees only the Labeling Jobs page, labels the assigned items and submits them for review.

Reviewer

Accepts or rejects the work and sends it back for relabeling. Can also create jobs and see statistics.

Quality control checks a random sample, object by object.

Send Sample to QC takes random images from an image project and splits them between one or more reviewers. They judge the geometry, class and tags of each object separately, so the annotator knows exactly what to fix.

  1. Pick a sample

    In the Annotate menu of an image project, choose Send Sample to QC, the reviewers and the sample size. The Quality Control task starts on review right away.

  2. Check each object

    A Quality Check panel on every object accepts or rejects its geometry and its class, with a note on what is wrong. Tags are checked the same way, and the main Accept or Reject button settles the rest.

  3. Mark what is missing

    Error Region outlines an area with missing labels and records the missing class, the number of objects and a comment.

An Error Region in a Supervisely Quality Control task marks a missing annotation on an insulator image, with fields for the issue, the missing class, the number of missing objects and a comment

QC Stats of a Quality Control task

Geometric Accuracy
Objects whose geometry was marked correct, out of all reviewed objects.
Class Accuracy
Objects whose class was marked correct, out of all reviewed objects.
Tags Accuracy
Tags marked correct, out of all reviewed tags.
Annotations Recall
Reviewed objects, out of all objects in the task.
Reviewed Annotations
How many objects were reviewed, and how many were not.

Labeling consensus shows how far annotators agree.

Several annotators label the same images independently, and the Labeling Consensus app compares every pair of them. Each pair gets a consensus score, from 0% for completely different annotations to 100% for identical ones.

aannammaxttonyllisa aanna mmax ttony llisa
anna vs lisa Overall score 63.5%
Objects score
71.2%
Geometry score
58.9%
Tags score
60.4%
Example: consensus scores of four annotators who labeled the same images.
  • Objects are matched by an IoU threshold you set, for bounding boxes, masks and polygons; image and object tags are compared too.

  • A click on any score opens the report for that pair: precision, recall and F-measure per class, IoU and pixel accuracy, tag scores and the differences on every image.

  • It works while labeling is still in progress, so disagreements show up early.

  • Images that score below a threshold can be copied to another project, tagged or sent to a new labeling job.

  • The app is open source and written in Python: fork it to add majority voting or your own rules.

Consensus is available on the Pro and Enterprise plans. Compare plans

Guides and exams prepare labelers before they touch real data.

Write the annotation policy once as a labeling guide, then check that each new labeler understands it with an exam on a benchmark whose answers they never see.

Labeling guides

Videos, documents and Markdown posts with your annotation policy and examples of good and bad labels. Attach them to labeling jobs and exams.

Labeling exams

The Labeling exams app copies a perfectly labeled benchmark without its labels and gives each examinee a labeling job, for images or videos. Set the classes and tags to label, the pass mark, the IoU matching threshold and the number of attempts.

Exam reports

Every attempt gets an objects score, a geometry score and a tags score, and every image shows the benchmark, the labeler's output and the difference side by side.

When the annotation policy changes, examine the team again: labelers are notified about new exams, and a manager can start new attempts for them, up to the maximum you set.

Example report of a passed exam in the Labeling exams app.

Issues track every labeling mistake until it is fixed.

Issues work like GitHub issues, built for annotation. Pin a mistake to an object, an image or a region right in the labeling tool, discuss it, and compare each item's labels before and after the fix before you resolve it.

An open issue about inaccurate boxes around bikes in Supervisely: an image's labels before and after the fix, side by side, with Reply and Resolve item
  • Apply an existing issue to another object or image, so a repeated mistake is tracked and fixed in one place.

  • One issue can collect many items; each has its own thread and is resolved on its own.

  • Before and after: the labels as they were when the issue opened, next to the final ones.

  • Assignees, Markdown comments, links to projects, labeling jobs and neural networks, and the history of every change.

  • Notifications in Supervisely and by email about new jobs and new feedback; a self-hosted instance can also send them to your own server.

Labeling Performance shows speed and quality for every person.

One dashboard for the whole team, free on every plan: how much was labeled and reviewed, how fast, and how much of it reviewers accepted.

The Labeling Performance page in Supervisely: status of assets, objects by class, labeled assets per month and team activity

Acceptance rate

The share of assets that reviewers accepted, for the team, a project, a labeling job or one member.

Labeling speed

New objects per hour of active work. Idle time of more than 5 minutes is not counted.

Review time

Active time reviewers spend in total and per asset, to balance their workload.

Members table

Objects and tags created, assets submitted, reviewed, accepted and rejected, and labeling time for each person.

Filter by time period, data type, project and labeling job, see each figure against a longer period, and export the report to PDF or Excel. Every labeling job also has its own Stats page, and activity exports to CSV.

Project statistics find dataset errors before training.

The QA & Stats tab of an image project charts class balance, class co-occurrence, object sizes and where objects sit in the images. Click any cell or row to see the images behind a number and fix them in the labeling tool.

The Class Balance table on a project's QA & Stats tab: for each class, its images and objects, and its average count and area per image
  • Class balance, co-occurrence matrix, per-image and per-dataset tables, object distribution heatmap, class sizes and spatial heatmap.

  • Co-occurrence of image and object tags, and the distribution of categorical tag values.

  • Heatmaps and treemaps download as SVG, PNG or CSV.

  • Selected images can be copied, moved, deleted, tagged or sent to a new labeling job.

Validation schemas keep metadata consistent.

A project can hold a JSON schema for image metadata. Uploads with validation turned on are rejected with a clear error when their metadata does not match, strict mode rejects extra fields too, and images already in the project can be checked for missing and extra fields.

Set up with the Python SDK, on Supervisely 6.12.5 or later.

validate_metadata.py
import supervisely as sly

api = sly.Api.from_env()

# Every image must carry camera and location metadata
schema = {
    "type": "object",
    "required": ["camera", "location"],
}
api.project.set_validation_schema(project_id, schema)

# Uploads whose metadata breaks the schema are rejected
api.image.upload_paths(
    dataset_id, names, paths, metas=metas, validate_meta=True
)

# Images already in the project: missing and extra fields
problems = api.project.validate_entities_schema(project_id)

Frequently asked questions.

How does annotation review work in Supervisely?

Labeling jobs and queues have a review step built in. After annotators submit their work, a reviewer accepts or rejects every item in the labeling tool. Restarting a reviewed job sends its rejected items back for relabeling in a new labeling job, and the Labeling Performance page tracks the acceptance rate. See labeling jobs in the docs.

What is labeling consensus, and how is inter-annotator agreement measured?

Several annotators label the same images independently, and the Labeling Consensus app compares every pair of them. It matches objects by an IoU threshold and gives each pair a consensus score from 0% to 100%, with a detailed report per class and per image. Consensus is available on the Pro and Enterprise plans.

How can I test labelers before they start a project?

Create an exam in the Labeling exams app: pick a perfectly labeled benchmark, the classes and tags to label, a pass mark and the number of attempts. Each labeler labels a copy without the original labels, and every attempt gets a report with objects, geometry and tags scores.

What does Send Sample to QC do?

It creates a Quality Control task from random images of an image project and splits them between the reviewers you choose. Reviewers accept or reject the geometry, class and tags of each object and mark missing labels with Error Region, and the QC Stats of the task report geometric, class and tags accuracy. See labeling quality control in the docs.

Which plans include these quality assurance tools?

Review, labeling jobs and queues, labeling exams, issue tracking and the Labeling Performance page are on every plan, including the free Community edition. Consensus and the full activity log need Pro or Enterprise, and dataset quality assurance is limited on Community. Compare plans.

Can I export only the labels that passed review?

Yes. The Export Items After Review app exports only the accepted images, videos or point clouds of a labeling job, in Supervisely format.