Skip to content
← All case studies
Detection · 12 street photos · 1 class · 10 epochs

Twelve photos, one class, two minutes

We pointed VisionEngine at twelve ordinary street photos, named a single class — "bus" — and ran the loop end to end. The trained model scored 0.995 mAP50 on its held-out split. The number is not the point; the two minutes it took is.

Model v1 · held-out split
0.995
mAP50
mAP50 · model v1
0.995
Precision
≈0.98
Recall
1.0
Wall-clock, end to end
~2 min

The run

Twelve street photos went in. On the first image we drew one box around a bus, which named the class. An open-vocabulary baseline then labelled the rest — no training, running on a serverless A10G GPU, and back in well under a minute.

That is the whole setup. No annotation project, no label schema meeting, no dataset of a thousand images assembled before anyone sees a result.

What actually happened

We reviewed the baseline the way the product asks you to: accept, reject, or fix each suggestion. VisionEngine split the set 80/20, trained for ten epochs, and reported the trained model back against the baseline.

On the held-out split, model v1 reached 0.995 mAP50, precision of about 0.98, and recall of 1.0. The whole interaction — from upload to a measured model — took roughly two minutes of wall-clock time, and every change was written to an audit-ready labelset history.

Why the score is not the story

A 0.995 is the kind of number that should make you suspicious, and you are right to be. Twelve photos of buses is an easy problem.

So read this as a measurement of friction, not of difficulty. The point is how little stands between your images and a model you can actually evaluate — and that the loop hands you the metrics to decide whether the next ten images are worth your time.

On honesty

Twelve photos of buses is a small, easy problem, and a near-perfect score on it proves nothing about harder data — defects, cells, corrosion. We publish it to show how little friction there is between your images and a measured model, not to claim the score transfers. Your own data is the only benchmark that counts.