Docs /Active Learning Active Learning
Projects and Tasks
A project is one annotation job: a task, a set of labels, a pool of cases, and the people assigned to them. Everything an annotator sees comes from the project their case belongs to.
Creating a Project
- Open Active Learning projects in the main navigation
- Projects are grouped by the database they live in; click the + on the header of the database where the project belongs
- Fill the form top to bottom, then Save
The database is chosen by that +, not by a field in the form, and it cannot be changed afterwards: a project lives where its cases live.
Name and Task
The Task dropdown lists everything the platform knows how to train, grouped by family. Tasks that cannot be opened yet are shown greyed out with the reason next to them — they are listed rather than hidden, so that “does not exist” and “exists but not here yet” stay distinguishable.
Two tasks are open today:
| Task | Family | Label you draw | How it is measured |
|---|---|---|---|
| Semantic segmentation | Morphological | A mask, painted per voxel | Dice |
| Box detection | Morphological | An axis-aligned box per object | mAP |
The other four are declared and greyed out. None of them is missing by oversight, and each is waiting on something different — the difference is what tells you whether it is weeks away or a decision away:
| Task | Family | Waiting on |
|---|---|---|
| Case classification | Morphological | Not a technical gap — the networks are there. It opens once the intended-use text is written. Classifying a pattern, or an image’s quality, is inside the intended use; a disease is not (RC-2026-003). |
| Regression to a measured endpoint | Functional | Paired data. The label is a number the hospital already measures (FEV1, FVC, DLCO), so no radiologist time is needed; what is missing is images and numbers matched case by case. |
| Time series | Functional | A network. The curve itself is the input, and the platform hosts no model for it today. |
| Solver surrogate | Functional | A home. The flow solver produces the labels — unlimited, at zero annotation cost — but it runs outside the platform. |
Virtual Spirometry is the question people ask here first, and the answer has two halves. The active-learning version of it — a CT in, an FEV1 or a DLCO out — is the Regression row above, and it is closed: what it waits on is images and measured numbers paired case by case, which no site has assembled yet. What does exist today is cohort recalibration, and it is a different mechanism, not a smaller one: it compares a candidate set of model parameters against the current one on a frozen cohort of real patients, reports the paired difference with its margin, and gates adoption on the verdict. Nobody annotates anything and no model is retrained from labels. It lives in Recalibrating Virtual Spirometry on Your Cohort, the last chapter of this section, and it is visible only to accounts holding the recalibration module.
The three functional tasks share a shape: the label already exists outside the editor, so the bottleneck is never annotation time. That is why they sit in their own group in the dropdown instead of being mixed in with the morphological ones — the two have different economics, and one’s timescale should never be promised for the other.
The task freezes at the first draft. This is stricter than the label set. Changing a label means revisiting an annotation; changing the task changes the shape of the label, and a box cannot be recovered from a mask or the other way round — every annotation would have to be redrawn. Once any case in the project has a draft, the dropdown locks.
Network
When a task allows more than one network, a Network selector appears next to it. Changing it does not affect existing annotations: every network for a given task consumes the same data, which is exactly why adding one is cheap. When a task has only one network the selector is hidden — there is no choice to make.
The default is deliberate and rarely worth changing without a reason: switching it would silently change the meaning of every job that does not name its own network, including jobs that have already run.
Where the Loop Closes
Being able to open a project is not the same as the loop closing — annotate, freeze the set, train, and see the model’s proposal come back in front of the annotator. Both open tasks can be annotated; only one of them completes that circle:
| Task and network | Does the proposal come back? |
|---|---|
| Semantic segmentation + the default network | Yes — but a person turns the crank |
| Semantic segmentation + any other network | No |
| Box detection | No |
Segmentation with the default network (marked default in the Network selector) is the only combination that closes the loop, and since September 2026 every step of it is driven from the application: proposals are queued from the same panel as the trainings and run by the same worker (Training and Proposals). The other four segmentation networks train perfectly well, but their output never returns as a proposal: the step that builds one reads the number of classes from a weights key that only the default network has, and stops on the others.
Box detection you can annotate, and that is where it stops. Three pieces are missing, not one: freezing the set writes a mask per case, which a box project does not have; the training loop has Dice hard-wired, which measures overlap between masks; and box proposals do not exist at all.
The application says this too — an amber note appears under the dropdown, and under the network selector, whenever the loop is open for what you picked. If your aim is the full loop rather than a labelled dataset, segmentation with the default network is the combination to choose.
Label Set
Add at least one label — a project with no labels cannot be opened by an annotator. Each label has an index, a name, a colour and optional rules shown to whoever annotates.
Indices in use cannot be removed or renamed once the project has any annotation work against it. Reordering, adding new indices and editing colours or rules stay open. If an index needs to change meaning, add a new one instead of reusing it.
Cases
Tick the acquisitions to include. The same case can be in several projects at once, and each project keeps its own readings of it: what an annotator paints in one project never touches what they paint in another, and each project has its own drafts, versions and datasets.
When a case you tick is already held by another active project, the form shows also in: followed by the project names. It is there for the choice you are making: if the same cases end up in the training set of one project and the test set of another, the model is tested on what it was trained on, and the numbers look better than they are. Check the list before you build a test set.
Annotation always starts from a project: the annotator opens the case from the project’s queue, and the reading belongs to that project. There is no way to start one from the patient panel.
A manager who opens a case that is not assigned to them sees the CT read-only: enough to look at it, but not to paint on it.
A project lives in one database. The list can show patients from every database you have access to — the Database filter above it narrows the view — but as soon as you tick the first case, rows from the other databases stop being selectable and say why: A project lives in a single database: you already chose …. Untick everything and the choice is open again. The rule is the same one the project itself obeys, applied where the choice is made rather than at the end: a project created with cases from two databases cannot be saved, and before this it was refused only once, with the whole form already filled in.
Annotators
Add each annotator by e-mail, then tick which cases they are assigned to. The optional double read column assigns the same case to two people independently, so their agreement can be measured afterwards.
Managing an Existing Project
The project list offers three actions per row:
- Edit — reopen the form; the task stays locked once work exists
- Metrics — per-annotator progress, timings and inter-reader agreement
- Archive — take the project out of circulation
There is no delete, by design. A project that has produced annotations, dataset versions and models is the anchor of their provenance; removing it would break the chain that the registry exists to hold. Archiving is the way to retire one.
Trained Models
Below the project list, Trained models shows the model versions that have come out of the loop for this site, each with its task, its network and how many proposals carry its signature. Until the first training run completes, the section says so plainly rather than sitting empty.