Back to Case Studies

Supervisely labeling queues: one shared pool, nobody waiting

Annotators take the next image the moment they are free instead of waiting on a batch, and every image's stage stays visible on the canvas.

Related templates

Supervisely labeling queues: one shared pool, nobody waiting

The task

This study takes a team that labels in Supervisely and hands the whole round to a labeling queue driven by one node. We have already shown the same idea built on labeling jobs in the labeling jobs study; here the work is handed out differently, and that is the whole point. The gain is that every annotator and every reviewer stays loaded: they take the next image the moment they are free, and nobody waits on anybody.

Difference between jobs and queues

Jobs hand out work in batches. A batch is assigned to an annotator, who owns it and works through it; the next batch is assembled after that one is submitted.

Queues hand out single images from one shared pool. An annotator takes the next image, submits it, takes the next. Everyone draws from the same pool, so a fast annotator simply takes more images and a slow one takes fewer — the load evens out on its own, and anyone who joins mid-round starts pulling straight away. Reviewers work the same pool the same way.

Both keep the labeling and the review inside Supervisely. What the flow automates is everything around it, and what it adds is a live view of where each image stands.

Images in the round52

Imported once, unlabeled

Waiting in the shared pool31

Free for whoever is next

Batches to cut0

The queue hands out single images

Annotator loadEven

Everyone pulls, instead of waiting on a batch

The example is deliberately frozen mid-round: the pool is still full while work is being pulled out of it.

Where every image stands

An image’s folder is its status. This is the round at the moment the example was published:

StageImages
Waiting for labeling31
Waiting for review2
Rework3
Accepted15

The images that are not in the table are the ones open on somebody’s screen right now. Those two stages — being labeled, being reviewed — are only ever between zero and the number of people working the queue, because a person holds exactly one image at a time. The numbers there shift every few minutes and mean nothing on their own.

Everything else is here, and the pool is the striking part: thirty-one images belong to nobody. Work is not distributed in advance, so there is nothing to plan, rebalance or undo. The queue decides who gets which image at the moment somebody is ready for the next one.

A rejection goes back to its author

Eighteen images have been through review so far: fifteen cleared it, three were sent back.

A rejected image returns to the person who labeled it. Nothing is re-cut and nothing is reassigned — it is simply theirs again, and it comes up as their next piece of work. Everyone else keeps pulling from the pool meanwhile.

Accepted work

Cleared images collect in the Accepted folder on the canvas. Click it in the live example to page through them with their annotations attached. The same images are in Supervisely too, in the project the queue runs in, so a team that wants to keep working with them there can.

The Accepted folder on the canvas — click it to open the images

The Accepted folder on the canvas — click it to open the images

The Accepted folder card on the flow canvas, showing a stack of image previews and a counter reading 15 images
One of them: spanners and wrenches boxed and labeled, reviewed and accepted

One of them: spanners and wrenches boxed and labeled, reviewed and accepted

Tools on a concrete floor with five bounding boxes: three green boxes around ring spanners and two blue boxes around pipe wrenches

Rejected work

Images the reviewer sends back land in the Rework folder, which you can open the same way to see what came back.

The Rework folder on the canvas — the images on their way back to their authors

The Rework folder on the canvas — the images on their way back to their authors

The Rework folder card on the flow canvas, showing a preview of paint buckets and a counter reading 3 images
One of them: three buckets are boxed and the nearest one is not

One of them: three buckets are boxed and the nearest one is not

Four paint buckets on a concrete floor, three of them inside bounding boxes and the largest one in the foreground unboxed

What this example shows

It shows how the work is organised, not how good the annotations are — quality is down to the people labeling and reviewing, and the verdict stays theirs. The point here is that the round runs itself: the pool stays full, people pull from it as fast as they can work, verdicts route themselves, and every stage is visible without asking anyone.

The labeling is fully manual on purpose. If you want the same loop to move faster, a model can pre-label the pool so annotators correct boxes instead of drawing them from scratch — that is a subject for another study.

Summary

A team that already works in Supervisely queues can keep working exactly as it does and let one node run the round: it creates and drives the queue, moves images between stages, and brings the accepted annotations back. On the canvas you watch the work move — what is waiting, what came back, what is done. And because everyone pulls from one shared pool, annotators and reviewers stay evenly loaded from the first image to the last.

Explore the live workflow

Inspect the actual read-only OvalBee flow behind this case study, including its nodes, configuration, and reports, or open it in OvalBee.