Skip to main content

Case Study

Read the Signature First: A Precision-Recall Fingerprint for Target-Shape Bugs

A segmentation head that will not improve gives you a tell before it gives you a fix, and the tell is the shape of its precision-recall signature. A recall-high, precision-low fingerprint is not the mark of an under-trained model you tune; it is the mark of a mis-defined target you redefine. This is the transferable diagnostic we now run before touching a single optimiser setting: read the signature, name the problem type, then reach for the matching lever. We use one segmentation episode from our own archive as the worked example, but the method is the point.

Case study

Most plateaus get misdiagnosed the same way. A model stops improving, and the team treats it as an optimisation problem: swap the optimiser, reshape the learning-rate schedule, add regularisation, train longer, throw more data at it. Sometimes that works. Often it burns weeks against a ceiling that no optimiser setting can move, because the ceiling was welded in by how the problem was stated, not by how hard it was trained. This piece is about a cheap test that tells the two cases apart before you spend the weeks. The test is to read the model's precision-recall signature and let its shape name the problem type for you.

We arrived at the test the expensive way, on a raster-log segmentation head that would not push. We have written that episode up in full elsewhere, as the account of a binary framing that plateaued and a switch to a single multiclass target that broke the ceiling. Here we do not re-run that story. We extract the general method it taught us, state it so any practitioner can apply it to their own stalled model, and use our own numbers only as a single worked example of what one signature looks like on the plane.

The signature is a fingerprint, not a score

Precision and recall are usually collapsed into one number, an F1 or an average, and then that number is maximised. Collapsing them throws away the one thing that carries the diagnosis: their relative position. A model with recall near total and precision near random has a different disease from a model with both near the floor, even when the two land at the same F1. The single number hides that. The pair does not.

So the first move is to refuse the collapse. Plot the head on a plane with precision on one axis and recall on the other, and look at which corner it sits in. The corner is the fingerprint. Four corners, four different problems, four different correct responses, and the whole value of the read is that it points you at the right lever before you have touched a wrong one.

  • Both low. The model finds few of the true positives and is wrong about the ones it does call. This is an under-fit fingerprint, and it points at capacity or data: a stronger backbone, cleaner labels, a larger or better-balanced training set.
  • High precision, low recall. The model is right when it commits but commits too rarely. This is a cautious model, and it points at the operating point: a threshold or a class weight, moved to trade some precision for the recall you are missing.
  • Both high. There is nothing to chase. The head is doing its job.
  • High recall, low precision. The model finds nearly everything and is wrong about most of what it calls. This is the corner that gets misread, and it is the subject of the rest of this piece.

Why high-recall, low-precision is not a tuning bug

The recall-high, precision-low corner looks like a knob problem because a knob puts you there. Reweight the loss so a missed positive costs far more than a false alarm, or push a class weight up, and the model rationally over-predicts the positive class: recall climbs to its ceiling, precision falls through the floor. Focal loss and its relatives were built precisely to manage that trade under scarcity [4]. Having arrived in that corner by turning a knob, the instinct is to turn it back or turn it further. Neither works, and the reason it neither works is what makes the signature diagnostic.

When recall is pinned near total and precision is on the floor, the loss has no term that charges the model for a false positive in the way the task needs. That is not a value you can dial in. In a target built as a stack of independent yes-or-no decisions, nothing says a pixel claimed by one class cannot also be claimed by another; each decision competes only against its own background, never against the other classes it is colliding with. There is no shared rule for who owns a pixel, so there is no gradient that separates two things that overlap. You can reweight forever inside that framing and only move where along the recall axis you sit. The precision ceiling stays because the constraint that would raise it was never in the objective. This lineage of dense-prediction work assumes a target shaped as one mutually exclusive assignment per pixel [1] [2], and the fix, when the signature says target-shape, is to adopt that shape rather than to keep tuning the one you have.

That is the whole tell. A missing constraint reads on the plane as a precision ceiling that no weight can lift. A merely under-trained model reads as both metrics low together. The two are different corners, and the corner is legible at a glance.

The worked example, in one datapoint

Our own case is one point in the recall-high, precision-low corner. On the raster-log head, the best binary curve mask sat at recall 0.97 and F1 0.55, which the harmonic-mean identity pins to a precision near 0.38. We had reached that point by pushing a class weight hard to rescue the thin foreground, and every further notch of weight bought recall we already had and cost precision we could not spare. The full account of how we redefined the target, from three independent binary masks to one three-class assignment, and what that reformulation cost to train, is the companion piece; the two-sentence version is that once every pixel belonged to exactly one class the boundary between two curves became something the loss owned, and the head came off the wall. What matters for the method is only where that point landed on the plane, and what its landing told us to do: stop tuning, restate the target.

The exhibit below is the map, not the story. It shows the four regimes and the lever each one names, with our best binary mask dropped in as a single labelled marker so you can see where a target-shape signature falls. The marker is one illustrative point; the quadrant logic is the general claim.

PRECISION-RECALL SIGNATURE · READ IT BEFORE YOU TUNETARGET-SHAPEthe one signature that fools you into tuningThe shape of the signature names the lever: only one regime is fixed by redefining the targetWHAT EACH SIGNATURE MEANSHIGH RECALL / LOW PRECISIONTARGET-SHAPElever: redefine the classesHIGH RECALL / HIGH PRECISIONSOLVEDlever: nothing to chaseLOW RECALL / LOW PRECISIONCAPACITY / DATAlever: stronger model or setLOW RECALL / HIGH PRECISIONTHRESHOLD / WEIGHTINGlever: move the operating pointredefine targetsolvedmore capacitymove threshold0.000.250.500.751.000.000.250.500.751.00precision ->recall ->our case (derived)P 0.38 · R 0.97our datapoint: shownone illustrative point; the quadrant map is the general claimquadrant->verdict map is general (no run numbers). one point: recall 0.97 sourced,precision 0.38 derived from sourced F1 0.55 via P = F1*R / (2R - F1).
A precision-recall signature map, read as a diagnosis rather than a scoreboard. The plane is precision by recall, split into four regimes, and each regime names the lever that actually moves it. Top-left, high recall with low precision, is the orange regime and the one that fools practitioners: it looks like a tuning problem but it is a TARGET-SHAPE problem, fixed by redefining the classes, not by the optimiser. The other three regimes point elsewhere. Bottom-left, both low, is a capacity or data problem. Bottom-right, high precision with low recall, is a threshold or weighting problem, fixed by moving the operating point. Top-right, both high, is solved. The quadrant-to-verdict map is the general claim and carries no engagement numbers. Our own case enters as exactly one illustrative datapoint dropped into the target-shape regime: the best binary curve mask at recall 0.97, sourced, with precision 0.38 derived from the sourced F1 0.55 and that recall through the harmonic-mean identity P = F1*R / (2R - F1). It is a single marker flagged our case, derived, drawn to show where a target-shape signature lands, not to claim the quadrants themselves were measured. Toggle it to separate the one worked example from the transferable map.

Running the test on your own model

The method fits on an index card. When a head plateaus, do not reach for the optimiser first. Read the signature, then match the lever.

Pull precision and recall out separately, per class, and never look only at the averaged number, because the average is exactly where an easy majority class hides a failing minority one. Place each class on the precision-recall plane and read its corner. If both are low, you are under-fit and the levers are capacity and data. If precision is high and recall is low, you are cautious and the lever is the operating point. If both are high, stop. And if recall is high while precision is low, treat it as a target-shape hypothesis, not a tuning task: before you touch the schedule or the regulariser, ask whether the classes are truly mutually exclusive in your target, whether the interesting behaviour lives at the boundaries between classes, and whether the loss has any term that charges the model for getting a boundary wrong. If the answer is that the target lets two classes claim the same thing for free, no optimiser setting will fix it, and the cheap read just saved you the weeks.

The corner does not tell you the fix in full. It tells you the family the fix belongs to, which is enough to stop you spending optimisation effort on a target-shape bug. That redirection, from tuning to restating, is the entire return on reading the signature first.

Limitations

The four-corner reading is a heuristic for pointing at a lever family, not a proof. Real heads land near boundaries or drift between corners across training, and a signature can be ambiguous when precision and recall are both middling rather than clearly pinned. The mapping assumes you are looking at per-class precision and recall on a held-out set that is not leaking, since a contaminated split can manufacture a both-high fingerprint that does not survive deployment. The single datapoint in the exhibit is from one raster-log engagement: the recall of 0.97 is a logged figure for the best binary mask under a heavy class weight, and the precision near 0.38 is derived from that recall and the logged F1 of 0.55 through the harmonic-mean identity, not separately measured, so it should be read as an illustration of where a target-shape signature falls and not as a benchmark. Finally, target-shape is one cause of a recall-high, precision-low signature and the most commonly missed one, but it is not the only one; a badly chosen decision threshold on a well-shaped target can imitate it, which is why the method ends in a question about the target rather than a verdict.

References

  1. Long, J., Shelhamer, E., and Darrell, T. (2015). Fully Convolutional Networks for Semantic Segmentation. CVPR 2015. https://arxiv.org/abs/1411.4038

  2. Ronneberger, O., Fischer, P., and Brox, T. (2015). U-Net: Convolutional Networks for Biomedical Image Segmentation. MICCAI 2015. https://arxiv.org/abs/1505.04597

  3. Milletari, F., Navab, N., and Ahmadi, S. (2016). V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation. 3DV 2016. https://arxiv.org/abs/1606.04797

  4. Lin, T., Goyal, P., Girshick, R., He, K., and Dollar, P. (2017). Focal Loss for Dense Object Detection. ICCV 2017. https://arxiv.org/abs/1708.02002

Go to Top

© 2026 Copyright. Earthscan