Blog
hedwigaihedwigaihedwigai

Writing

Defect localization in industrial images: four frontier models and a trained localizer

Factories photograph what they make (a weld, a casting, a panel, a part on a line) to catch defects. Frontier models, the largest general AI models from the big labs, can describe these pictures well. The harder job is localization: marking where in the image the defect is, by drawing a box around it. That box is what a machine further down the line crops, measures, or moves a tool to. When no model can do it, the looking falls to a person.

We gave four frontier models that can read images the same 57 pictures. Each was asked for a verdict about the defect and for a box. We compared the verdicts with a rule that never looks: one that gives the same answer every time without opening the image. We compared the boxes with a trained localizer, a small model trained only to draw these boxes.

Both beat all four models. The rule that never looks got 96.5% of verdicts right; the best model got 86.0%. 64% of the trained localizer's boxes landed close enough to use, against at most 24% for any of the four. On industrial images, pointing at a defect is a job for a model trained to point, and it is not a prompt away.

The short version

One measure first. IoU (intersection over union) is how much the drawn box overlaps the true one: 0 means no overlap, 1 means exact. A box at 0.3 or more is loose but usable, enough to crop around. A box at 0.5 or more is tight enough that most teams would act on it directly.

Out of a hundred requests, the best of these four returns 14 boxes loose enough to crop around — and no model returns more than 7 tight enough to put a tool on. They are not the same model. The rest are silences and misses, and the misses do not announce themselves.

The verdict column is not the good news it looks like. The best model answers 86.0% correctly. That is below the 96.5% you get by answering the same way every time without looking. Looking at the image is currently costing accuracy rather than adding it.

A model trained for the one job is in a different league. 64% of its boxes reach 0.3 overlap, against a best of 24%. Its average overlap is 0.421, against 0.109. The general models are not weak models; every one of them publishes a serious score somewhere. They are the wrong tool for pointing.

What comes back from a hundred requests

The first table anyone should read. Some models skip the hard images and draw no box. A model like that looks excellent if you only score the boxes it chose to draw. Counting per hundred requests, every skipped image counts against it, which is what it costs you.

modelanswer parsedbox returnedusable box ≥0.3tight box ≥0.5nothing returned
Qwen3-VL-30B-A3B-Instruct100.0968.76.84
MiMo-V2.595.6824.10.018
Ling-3.0-flash-VL100.0688.95.532
DeepSeek-V4-Flash-Vision-Exp89.56014.31.840

Every figure is per 100 requests. 0.3 overlap means the box and the true box share about a third of their area — enough to crop around, to hand to a person, or to cue a second model. 0.5 is the loosest thing most teams will act on directly. Neither threshold is generous.

The full results

The run exactly as it printed, with the two comparisons that are not frontier models: the rule that never looks (“constant baseline”) and the trained localizer. Everything in the table above is arithmetic on these columns.

modelnverdictPFboxesmeanIoUmedIoU≥0.3≥0.5
Qwen/Qwen3-VL-30B-A3B-Instruct5786.0%0550.0850.0009%7%
XiaomiMiMo/MiMo-V2.54584.4%2370.0320.0005%0%
inclusionAI/Ling-3.0-flash-VL5782.5%0390.0830.00013%8%
deepseek-ai/DeepSeek-V4-Flash-Vision-Exp5761.4%6340.1090.00024%3%
constant baseline
the same answer every time, with no image read at all
5796.5%——————
trained localiser
a small model trained for this one job
————0.421—64%—

n is how many images the model was scored on. PF (parse failures) is answers that could not be read as an answer at all. boxes is how many of the n images the model returned a box for. meanIoU and medIoU are the average and the middle overlap; ≥0.3 and ≥0.5 are the share of boxes at or above that overlap. The overlap columns count only boxes drawn, not every image, which flatters a model that declined to guess.

Where each model wins

Two of the four take all five dimensions between them, and the way they split is the finding. Qwen3-VL-30B-A3B-Instruct answers on nearly every image, is never unreadable and has the best verdict — and returns 8.7 usable boxes per hundred requests. DeepSeek-V4-Flash-Vision-Exp has the boxes most likely to land, and answers least often, refuses most often and gets the verdict wrong most often. Which of those you can live with is an engineering question about your own system, not a ranking.

DimensionBestWorstWhat it decides
Answer can be parsedQwen3-VL-30B-A3B-Instruct
100.0%
DeepSeek-V4-Flash-Vision-Exp
89.5%
An unreadable answer is not a wrong answer — it is a request that has to be retried or dropped. Two of the four never produced one; one produced six.
Returns a box at allQwen3-VL-30B-A3B-Instruct
96%
DeepSeek-V4-Flash-Vision-Exp
60%
Silence is the cheapest failure and the easiest to miss in a demo: the item is simply never handled, and nothing in the log says it was hard.
Verdict correctQwen3-VL-30B-A3B-Instruct
86.0%
DeepSeek-V4-Flash-Vision-Exp
61.4%
Read against 96.5% for answering the same way every time without opening the image. Every model is below it.
Of the boxes drawn, share at ≥0.3DeepSeek-V4-Flash-Vision-Exp
24%
MiMo-V2.5
5%
The flattering measure, and the one most often quoted: it ignores every request the model walked away from.
Usable boxes per 100 requestsDeepSeek-V4-Flash-Vision-Exp
14.3
MiMo-V2.5
4.1
The same measure with the silences counted. This is the number to put into a business case.

What the numbers mean

Answering the same way every time beats every model. The rule that never looks scores 96.5% on the verdict without reading the image. The best of the four reaches 86.0%, and the worst 61.4%. A model that looks and then answers is doing worse than a rule that does not look, which means the verdict on this data carries almost no information and the models are finding some of it and losing more.

The median box misses entirely. Every one of the four has a median overlap (IoU) of 0.000. Not low overlap — for more than half the boxes, no overlap at all. The means survive only because a small number of boxes land: the best mean is 0.109, against 0.421 for the trained localizer.

A model trained for the job is a different order of thing. 64% of the localizer's boxes clear 0.3 overlap. The best frontier model manages 24%, and that same model has the worst verdict of the four and 6 unreadable answers. Nothing here is close.

Declining to answer is not scored as a miss. Only Qwen3-VL-30B-A3B-Instruct returned a box for nearly every item (55 of 57); the others answered on 34 to 39. The overlap columns are computed over boxes drawn, so a model that stays quiet on the hard ones reads better there than it would on the whole set — which is the whole reason the first table exists.

What each failure costs

These are four different failures with four different owners, and they are not degrees of one another. A system that handles the first three can still be ruined by the fourth: a confident box in the wrong place is the only one that makes a machine act.

FailureWhat it looks likeMeasured hereCan it be absorbed?
Answer cannot be parsedThe request errors. The item waits for a retry or falls to a person.6 of 57 on DeepSeek-V4-Flash-Vision-Exp; none at all on two of the fourEasily — it is loud, it is logged, and a retry costs a second call.
No box returnedNothing happens. The item is skipped and the throughput quietly drops.40% of requests on DeepSeek-V4-Flash-Vision-Exp, 4% on Qwen3-VL-30B-A3B-InstructYes, if somebody is counting. It shows up as work not done rather than work done wrong.
Box returned, box missesThe arm moves to the wrong place, or the crop sent on for inspection is of nothing.Median overlap 0.000 on all four — more than half of every model's boxes miss entirelyThis is the expensive one. Nothing downstream can tell it from a hit.
Verdict right, box wrongThe system says there is something and cannot say where. A person re-does the looking.86.0% verdicts against 8.7 usable boxes per 100 on Qwen3-VL-30B-A3B-InstructOnly where a human was going to look anyway. Then the model saved nothing.

What this means for a machine that acts on the box

Sometimes the box is not a picture for a person to look at. It is a position that a robot arm or other machine moves to. That raises the bar. A missing box means work not done. A wrong box means the machine moves to the wrong place. And there is no reader in between to notice that the answer looks odd.

The jobWhat it needsReady?Why
Describing a scene to a personLanguage about an imageyesThis is what the published benchmarks measure and what these models are genuinely good at. Nothing here contradicts it.
Routing an item to the right human queueA verdict, no coordinatesnoNot on this data. Every model scores below the 96.5% you get by answering the same way every time, so the routing would be worse than a rule that costs nothing to run.
Cueing a second-stage detectorA rough box, roughly rightwith careA general model returns something usable on a small minority of requests, and the rest have to be caught by whatever sits downstream rather than trusted.
Driving an actuator from the boxA tight box, nearly alwaysnoTight boxes are in the low single digits per hundred requests, and the median box does not touch the object at all.
Measuring, counting or gating on positionA tight box, every timenoThe same numbers, with no human in the loop to catch the miss. A model trained for the one job is the only thing in this measurement that is close.

What follows from that table is not “wait for better models”. It is to stop asking one model to do both halves. A general model is the best thing available for reading a scene, deciding what kind of thing is in front of it and writing down what happened; it is, on this evidence, the worst available way to say where something is. The pointing is a job for a model trained to point — 64% of its boxes land against a best of 24%, and that gap is not a prompt away.

That has a cost consequence worth stating plainly. A trained localizer has to be built per job, and it does that one job — which reads as the expensive option next to a single general model serving everything. The tables above are what the cheap option actually delivers: at best 14 usable boxes per hundred requests, with the rest distributed across silence and confident error. The comparison is not general-versus-trained on price. It is trained-versus-nothing on whether the system works at all.

These are not weak models

Each publishes a serious result. One line and a source each — the four report different benchmarks, and lining them up would invent a comparability nobody has established.

ModelPublished resultSource
Qwen3-VL-30B-A3B-InstructMMMU 74.2
an independent reproduction attempt landed at 70.19
study
Ling-3.0-flash-VLArtificial Analysis Intelligence Index v4.1.1 — 42
four points above the non-VL Ling-3.0-flash
study
DeepSeek-V4-Flash-Vision-ExpZeroBench 35.0 Pass@5
reported above Opus 4.8 at 34.0 on the same measure
study
MiMo-V2.5Claw-Eval 62.3 on the general subset
the widely quoted MiMo figures are for MiMo-V2.5-Pro, a different variant
study

What is missing from that column is the point. None of those benchmarks measures putting a box on an object. A model can answer questions about an image at 74 on MMMU and still have a median overlap of zero when asked where the thing is, because answering about an image and pointing at part of one are different abilities — and only the first is routinely published. A procurement decision made on the published numbers is a decision made on the half of the problem that was measured.

What this means if you are buying

Use a general model for the language and a trained one for the coordinates. They are two different jobs and this measurement separates them cleanly. Reading a scene, deciding what kind of thing is in front of it, writing down what happened — a frontier model is the best thing available. Saying where — on this evidence, the worst.

The specialised model is not the expensive option. It is the one that works. A trained localizer has to be built per job and does only that job, which reads as costly next to one general model serving everything. Then you price what the general model actually returns: 14 usable boxes per hundred requests at best, 7 tight enough to act on, and the rest split between saying nothing and being confidently wrong. A pilot that cannot clear the second number does not become a line that runs.

Price the misses, not the requests. The silences are cheap — something downstream notices nothing arrived. The wrong boxes are not: they arrive looking exactly like the right ones, and whatever they cost is paid by the process, not by the model. That is the number to put against the cost of training for the job.

Then check it on your own images. The method above is written down so you can run it on your parts, with your defects, and get a number that is about your line. If it is useful, we will run it with you.

What can still go wrong

  • 57 images is a small set, and it is ours. It says what these models did on this data, not what they would do on yours. The gap is large enough to act on; the exact figures are not precise enough to rank the four against each other.
  • Not every model was scored on every image. An answer that was refused or could not be read adds no row, so one model was scored on 45 images and the rest on 57.
  • No prompt engineering was tried beyond asking plainly.
  • The trained localizer does this one job. It cannot do the rest of what any of the four frontier models can.
  • These are four models at one moment. Published scores move every few months, which is why the method is published and not only the verdict.

More head-to-head evals

SubQ against jev on biotech diligence memos: finding the sentences a column is aboutTwo decision models judge every sentence of ten biotech diligence memos for five columns, scored against sentences a person marked.
MeasureSubQjev
Mechanism of action, found at section length57%51%
Primary endpoint, found at section length83%90%
Read the comparison
Leads with a reason to write: hedwigai ask, Apollo and treg on one brief40 leads each, every one checked: the right person, an inbox that accepts, and a dated reason to write.
MeasureaskApollotreg
Usable leads13 of 407 of 406 of 28
Cost per usable lead$0.037$0.27$0.23
Read the comparison
Self-hosted decisions for ask: Perplexity's open Decider in place of jev on 92 company questionsThe decisions inside hedwigai ask made by Perplexity's open Decider on two NVIDIA RTX 3090s, against jev.
Measureask with jevask with Decider
Questions right, of 928989
Wrong answers12
Read the comparison
Clinical decisions: jev and ask on System One, PubMedQA, SciFact and a 370-decision setEdgeEvals' System One board, PubMedQA, SciFact, and a clinical set built to System One's rules.
Measurejevask
Our 370 clinical decisions, right94.6%93.0%
PubMedQA, right (best EdgeEvals scored: 62.2%)77.0%74.4%
Read the comparison
Executive lookup for US-listed companies: Claude Opus 5.5 and ask on 95 questionsWho runs a public company, and how to email them: a frontier model from memory against hedwigai ask.
MeasureaskClaude Opus 5.5
Questions right, of 955963
Small companies right, of 20139
Read the comparison
Rental comps: floor-plan rents and amenities on 14 listings, five assistants comparedRent per floor plan and amenities for US rentals: hedwigai realestate-us against Claude, GPT, Gemini and Perplexity with web search.
Measurerealestate-usBest of four assistants
Floor-plan rents right, of 262623
Amenities claimed the listing doesn't state12129
Read the comparison
Company screening from SEC filings: jev, Vela 2.0 and ask on 92 yes/no questionsYes-or-no questions about public companies, answered by two decision models alone and by hedwigai ask.
Measureaskjev
Right, of the questions answered98%79%
Wrong answers, of 92219
Read the comparison