#4999: Why AI Can't Just Put a Circle on Your Photo

Why multimodal AI models can't simply circle a Dremel bit without rebuilding your entire image from scratch.

Featuring
Listen
0:00
0:00
Episode Details
Episode ID
MWP-5181
Published
Duration
24:22
Audio
Direct link
Pipeline
V5.2
TTS Engine
chatterbox-regular
Script Writing Agent
deepseek-v4-pro

AI-Generated Content: This podcast is created using AI personas. Please verify any important information independently.

When you ask a multimodal AI like ChatGPT to circle a Dremel bit in a photo, you expect to get your photo back with a circle on it. Instead, you often get a slightly different photo of slightly different Dremel bits on a slightly different table. This episode explains why.

The core problem is architectural. Multimodal LLMs don't edit images like Photoshop — they don't add layers. Instead, they run an image-to-image pipeline: encode your photo into an internal representation, modify that representation based on your text instruction, and decode a whole new image. The model lacks pixel-level spatial awareness; it can describe where something is in words but cannot output precise coordinates. When asked to annotate, it regenerates the entire image, and the denoising process propagates changes everywhere — causing "global drift" where even unedited regions shift.

Researchers have converged on a two-camp solution. The "overlay" camp, led by SketchVLM, appends a coordinate grid to the input image and has the VLM output structured XML annotations, which are rendered as an SVG overlay on the untouched original. Throughmark uses a similar grid approach with multiple analysis passes and voting for consensus. The alternative "precision generation" camp works on teaching models to edit only targeted pixels. For now, neither approach exists in a consumer chat interface — but the blueprint is clear: separate the annotation reasoning from the image generation.

Downloads

Episode Audio

Download the full episode as an MP3 file

Download MP3
Transcript (TXT)

Plain text transcript file

Transcript (PDF)

Formatted PDF with styling

#4999: Why AI Can't Just Put a Circle on Your Photo

Corn
So Daniel wants his AI to circle a Dremel bit without rebuilding the entire workbench from scratch. And apparently that's a big ask.
Herman
It's a huge ask. And he's put his finger on something that's been driving people quietly nuts for about two years now. He took a photo of some Dremel bits, wanted the model to look at them and say "use this one for soft ABS plastic" and just... point to it. Circle it. Leave everything else alone. Instead, he gets back a slightly different photo of slightly different Dremel bits on a slightly different table.
Corn
The computer interior one gets me. You want it to point to the PCIe slot, and suddenly your RAM sticks are a different color and there's a ghost of a cable that wasn't there before.
Herman
Right, and Daniel's question is really four questions rolled into one. First, what's actually happening technically when the model regenerates the whole image instead of just marking it up. Second, why that regeneration keeps introducing these little hallucinations and detail losses. Third, what the ideal workflow would actually look like — he sketched out this three-step process of coordinate grounding, then annotation, then burning it in. And fourth, the practical one: are there any models or tools that actually do this properly right now.
Corn
The short answer to that last one is no, not in any chat interface you can just open and use. But the research community has been all over this exact problem, and Daniel's three-step intuition is almost exactly what they're building.
Herman
So what's actually going on under the hood when you ask ChatGPT to just put a circle on something?
Corn
Let's start with what the user actually wants. You've got a photo. It's your photo. You want one thing added to it — an arrow, a circle, a label. Everything else should be pixel-for-pixel identical to what you uploaded. This is not image editing in the normal sense. You're not asking it to remove your ex from a wedding photo or change the sky. You're asking for a non-destructive overlay.
Herman
And that word "non-destructive" is the whole thing. In Photoshop terms, you want a new layer with a circle on it, not a flattened JPEG that's been rebuilt from scratch. But that's not how multimodal LLMs work. When ChatGPT gets an image and you say "put a red circle around the dipstick," it doesn't open a little graphics editor in its head. It goes through an image-to-image pipeline — it encodes your photo into some internal representation, modifies that representation based on your text instruction, and then decodes a whole new image.
Corn
So it's rebuilding the engine bay to add one arrow.
Herman
It's rebuilding the engine bay. And the reason it has to do that is architectural. There's this really telling moment from the OpenAI developer forums back in August of twenty twenty-four. A user asked directly whether GPT-four-o could return pixel-level coordinates — like, "the dipstick is at X four hundred and ninety six, Y four hundred and forty four." And a moderator from OpenAI responded, flat out, that the model doesn't have the ability to return pixel-level coordinates directly. The multimodal capabilities are designed for understanding and generating natural language about images, not for pixel-level operations.
Corn
So it can tell you there's a dipstick in the photo. It can describe where it is in words — "on the left side, near the oil filler cap." But it cannot give you the grid reference.
Herman
The image gets transformed into this internal representation that discards spatial coordinate information. The model understands the content — it knows what objects are there and roughly how they relate to each other — but it doesn't retain a pixel map. So when you ask it to draw on the image, it can't just say "pixels three hundred through three fifty, make those red." It has to regenerate the whole thing and hope the dipstick lands in roughly the same place.
Herman
It's doing a tremendous amount of work. There's a paper from August this year, ATDEdit — Asynchronous Token Decoding Edit — that names the problem really precisely. They say naive switching of the text condition during sampling often causes global drift, because the denoising dynamics propagate changes across tokens and can disrupt unedited regions. What that means in plain terms is that when the model regenerates the image, the changes ripple outward. You told it to circle the dipstick, but the denoising process that builds the new image doesn't know which pixels are "dipstick area" and which are "everything else you wanted to keep." So the whole image shifts slightly.
Corn
The cafeteria becomes a different cafeteria.
Herman
That's a real quote from a frustrated user in August. They said, I can provide an exact screenshot and ask ChatGPT to recreate that exact environment, and instead it decides to interpret the image. A cafeteria becomes a different cafeteria. And that's the core of it — the model isn't being sloppy. It's doing what it was built to do, which is generate images from descriptions. It's just that "the exact same cafeteria with one arrow" is not a description it can faithfully execute, because it doesn't have the spatial scaffolding to preserve what's already there.
Corn
There's another failure mode here that's worth naming. Attribute leakage.
Herman
Yes. This is from the ALE framework paper, accepted at ICCV twenty twenty-five. Edits meant for specific objects unintentionally affect unrelated regions because of something called semantic entanglement in the end-of-sequence embeddings. You say "make the red car blue," and the model might also tint the red brick wall behind it slightly blue, because "redness" and "blueness" are tangled up in the representation. For annotation, that's deadly. You circle the oil dipstick and suddenly the yellow oil filler cap is a slightly different yellow.
Corn
And OpenAI did try to patch this. They released gpt-image-one-point-five in December with an input fidelity parameter — you could set it to high and it was supposed to preserve the original better.
Herman
It didn't work. Or it didn't work well enough. Users on the developer forums reported persistent artifacts, text on packaging getting distorted, dimensions changing. One user asked for and received a refund in August because, quote, the image tool was no longer doing what I needed it to do. Specifically, it couldn't preserve an existing image while making a single requested change.
Corn
A refund. For an AI feature that couldn't not hallucinate.
Herman
That's where we are. And the thing is, Daniel's intuition about the ideal workflow is almost exactly what the research community has converged on. He laid out three steps: figure out where the thing is in pixel space, decide how to annotate it, and then burn the annotation onto the original without regenerating anything. That's the blueprint.
Corn
So if the architecture can't do this natively, what are the workarounds?
Herman
The research community has been surprisingly busy on this exact problem, and they're coming at it from two directions. One camp says, forget trying to make the generative model spatially precise — just use it to output coordinates, and then render the annotations as a separate layer. The other camp says, no, we can teach the generative model to be spatially precise, and then it can edit only the pixels it's supposed to touch.
Corn
Give me the overlay camp first.
Herman
The star of the overlay camp is a paper called SketchVLM, from Auburn University and Adobe Research, published on arXiv in April. It's training-free, model-agnostic, and it's the closest thing I've seen to what Daniel is asking for. Here's how it works. You take the input image — say, a car engine — and you append a coordinate grid to it. A literal grid, like graph paper, overlaid on the image. Then you feed that combined image to GPT-five or Gemini-three-Pro, and you prompt it to output annotation primitives as XML.
Corn
Wait. You're showing the model a picture with a grid on it, and asking it to describe where things are using the grid?
Herman
And it outputs structured XML — things like, open tag S one, points, quote, X five hundred Y one hundred, quote, comma, quote, X five hundred Y two seventy, close quote, close tag. That's an arrow from point A to point B. Or a circle with a center point and a radius. Or a text label with coordinates. Then SketchVLM takes that XML, converts it to an SVG overlay, and renders it on top of the original image. The source pixels are never touched.
Corn
So the model never generates an image at all. It generates a set of instructions for where to draw.
Herman
Right. It's using the VLM for what it's actually good at — reasoning about content and spatial relationships — and then handing off the actual rendering to a deterministic graphics library. The paper's flagship demo is almost painfully on the nose for Daniel's use case. They show a car oil check — circling the dipstick, labeling the oil filler cap, drawing an arrow to the safe operating range on the dipstick itself.
Corn
Of course they do.
Herman
On part labeling tasks, SketchVLM with GPT-five hits sixty-four point one percent accuracy at zero boundary dilation. The baseline GPT-five without the framework gets nineteen point one percent. That's the gap between "I know where the dipstick is" and"I can tell you exactly which pixels it occupies." And on connect-the-dots — literally, here are numbered dots, draw lines between them in order — GPT-five with SketchVLM has a root mean square error of five point nine two pixels. Gemini-three-Pro is forty-six point six nine. Nano Banana Pro is a hundred and ninety-eight point seven four.
Corn
A hundred and ninety-eight pixels off. At that point it's not connecting dots, it's just... expressing itself.
Herman
It's doing abstract expressionism. And that number tells you something important. The underlying model matters enormously for spatial precision, even with the grid hack. GPT-five is dramatically better at this than Gemini-three-Pro, which is dramatically better than Nano Banana Pro. The grid overlay is an equalizer, but it doesn't make a spatially sloppy model precise.
Corn
What's the other tool in the overlay camp?
Herman
Throughmark. It's an open-source TypeScript tool that hit GitHub in April of twenty twenty-five. Similar idea — overlay a dynamic grid on the image, use an LLM to identify regions of interest by grid cell, like "the dipstick is in cells D seven through E nine." But it adds a clever twist: it runs multiple analysis passes at different temperatures and looks for consensus. If three out of five passes agree that the dipstick is in D seven, it's probably in D seven. If they disagree, it flags the region for review.
Corn
That's just... voting.
Herman
It's voting. And it works. The original image is preserved exactly — it's rendering highlights and labels as a separate layer. It supports batch processing and ground-truth validation too, so you can actually measure how well it's doing.
Corn
And neither of these is a product I can use in ChatGPT.
Herman
Neither is a consumer product. SketchVLM is a research framework — you need to set up the pipeline yourself. Throughmark is a developer tool — you run it from the command line. There's also a Visual Annotation MCP server that appeared on GitHub in April this year, which lets LLMs draw circles, arrows, rectangles, and text labels on screenshots via Playwright. It does automatic contrast correction and background blur. But again, that's a developer workflow tool — you're using it with Claude Code, not in a chat window.
Corn
So the research exists, the tools exist, but the thing Daniel actually wants — upload a photo to a chat interface and get back his photo with an arrow on it — doesn't exist yet.
Herman
Not in any mainstream product. And that brings us to the other camp, the people trying to make the generative model itself spatially precise enough to do this natively.
Corn
Because if you could just tell the model "edit only these pixels," you wouldn't need the overlay hack.
Herman
Right. And the most interesting paper in this camp is MetaPoint, from ByteDance Seed and Zhejiang University, published in June. Their insight is really elegant. The reason multimodal LLMs can't handle coordinates is that coordinates are continuous numbers, and the model's native representational space is tokens — discrete chunks of text. There's no natural way to say "X equals zero point five six three five" in token space. So MetaPoint creates one. They introduce a single special token that encodes a continuous two-D coordinate into the model's native positional encoding. One token, one point. Two tokens, a bounding box.
Corn
They're teaching the model to think in coordinates by giving it a coordinate alphabet.
Herman
And the results are substantial. On the COCO multi-instance generation benchmark, they improved mean intersection over union from fifty-nine point two three percent to seventy-seven point two nine percent — that's a thirty percent relative improvement over the previous state of the art. On the ImgEdit benchmark, they took a model called BAGEL from three point four two to three point nine four, which is a fifteen percent jump. And here's the telling part: their paper explicitly shows that GPT-four-o-Image and Nano Banana both fail at simple coordinate-based editing instructions. You say"remove the dog in this bounding box" and give it the coordinates, and they just... don't.
Corn
They can't follow a grid reference.
Herman
They can't. Because they have no mechanism for mapping"zero point five six, zero point three one" onto the two-D canvas. MetaPoint gives them that mechanism. But it requires training — you can't just bolt it onto an existing model. You need to train the model with these coordinate tokens from the start, or at least fine-tune extensively.
Corn
There's another paper you mentioned. InterCoG?
Herman
Interleaved Chain of Grounding, from March. Their approach is different — instead of encoding coordinates into the model, they interleave textual reasoning with visual grounding. The model first reasons about where the target is in text: "the dipstick is a long thin metal rod on the left side of the engine block, protruding from a tube near the oil filler cap." Then it generates a visual annotation — a bounding box and a mask — to ground that reasoning in pixel space. Then it executes the edit. It's like the model is talking itself through where something is before it draws.
Corn
And that works better than just going straight to the edit?
Herman
On GroundEdit-Bench, InterCoG hits zero point eight eight Editing Grounding Accuracy. The baseline Bagel model gets zero point six two. That's a forty-two percent improvement. The chain-of-grounding approach forces the model to commit to a location before it starts modifying pixels, and that commitment step dramatically reduces drift.
Corn
So between the overly camp and the precision camp, the research community has basically solved this in the lab. But the product gap remains.
Herman
And I think the product gap exists because of a tension that the industry hasn't resolved. Most product teams are building editing tools, not annotation tools. Nano Banana Pro's Regional Annotation feature is positioned as an editor — you circle an area and it modifies the pixels in that region. FireEdit, which was accepted to CVPR twenty twenty-five, is all about preserving source content during edits, but it's still an editor. The user — Daniel, and I suspect a lot of people — wants something simpler. They don't want to edit the image. They want to mark it up and get back exactly what they sent, plus the markup.
Corn
"I don't need the AI to be more creative. I need it to be more faithful."
Herman
That quote again. And it captures something important about where AI is heading. For the first couple of years, the wow factor was creativity — look what it generated, look how it transformed this thing. But as people start using these tools for practical work — car maintenance, computer repair, home DIY — faithfulness becomes the feature. You don't want a creative interpretation of your engine bay. You want your engine bay with an arrow.
Corn
Daniel's Dremel bit question is a perfect example. It seems trivial. Just circle the right bit. But it exposes this whole architectural gap between understanding images and manipulating them precisely. And the fact that the research community has identified this exact use case — the SketchVLM paper literally demos a car oil check — tells you they know where the pain is.
Herman
The missing piece is integration. SketchVLM needs GPT-five running in a pipeline with an SVG renderer. MetaPoint needs a model trained with coordinate tokens. Throughmark needs a command line. None of this is hard to integrate — the pieces all exist — but nobody has put them together in a chat window yet.
Corn
And that's the open question. Will anyone?
Herman
I think someone will. The demand is too obvious. But I suspect it'll come from a tool that's purpose-built for this kind of annotation, rather than from a general-purpose chatbot bolting it on as a feature. The architectural shift — from"generate a new image" to"output structured annotations and render them" — is big enough that it might need its own product.
Corn
Which brings us to someone who has actually done this for a living.

Hilbert: Five point nine two pixels.
Herman
I'm sorry?

Hilbert: The SketchVLM connect-the-dots error you mentioned. Five point nine two pixels for GPT-five. At three hundred DPI, that's about half a millimeter on paper. I used to do that job. Not the AI part. The marking-up-photos part. Six months in twenty nineteen, technical illustrator for a car repair manual publisher in Cleveland. Haynes-type outfit. My job was to take the photographer's engine bay shots and add the arrows, the circles, the callouts. In Photoshop, with a Wacom tablet.
Corn
You were the human version of SketchVLM.

Hilbert: I was the human version of the thing SketchVLM is trying to replace, and I'll tell you what none of these papers mention. The hard part isn't drawing the arrow. The hard part is deciding where to put the label so it doesn't cover anything important. You've got an engine bay — it's all important. Every square inch has a hose or a cap or a bolt that someone might need to see. So you spend half your time just... placing text. Moving it six pixels left, checking if it obscures the alternator bracket, moving it back.
Herman
Do any of these models handle that? The layout optimization problem?

Hilbert: Not from what I've read. SketchVLM dumps the label at the coordinates you give it. If your label lands on top of the spark plug wire you're trying to label, that's your problem. Throughmark does some grid-based placement but it's not reasoning about visual obstruction. It's just putting the label in the cell you specified.
Corn
There's a whole sub-problem here that nobody's even touching. Annotation layout.

Hilbert: It's not trivial. I had a supervisor named Gloria who would send back anything where a leader line crossed another leader line. Two arrows crossing on a diagram — she said it looked unprofessional. So now you're not just placing labels, you're routing arrows around obstacles. It's a mini routing problem on every image.
Herman
That's actually a really interesting constraint. If you're building an annotation system that's supposed to be non-destructive and precise, you also need it to be readable. And readability means solving these little layout optimization problems that a human illustrator just... does, by eye, in seconds.

Hilbert: Gloria did it by eye in about three seconds. She'd look at my layout, squint, and say "move the power steering label up and left." And she was always right. I don't know how you encode Gloria in a loss function.
Corn
Maybe you don't. Maybe the model outputs candidate label positions and a human — or a second model — scores them for occlusion.

Hilbert: That's what I'd build. But I'm not building it. I'm just saying, five point nine two pixels is impressive, but it's only half the job. The other half is making sure the thing you drew is actually useful to the person looking at it. And Gloria would have had opinions about a hundred and ninety-eight pixel error on a connect-the-dots task. She'd have used words I won't repeat here.
Herman
The Gloria constraint. We need to add that to the research agenda.

Hilbert: You do. Meanwhile, I've got four of those Haynes manuals in a box somewhere. The ones I worked on. They're not worth anything, but the arrows are placed correctly.
Corn
Of course they are.
Herman
The question that leaves me with is whether the overlay camp or the precision camp is better positioned to handle the Gloria problem. And I think it's the overlay camp, because they've already separated the reasoning from the rendering. If you're outputting structured XML, you can add a layout optimization pass between the reasoning step and the rendering step. You can't do that if the model is generating pixels directly.
Corn
Which means Daniel's ideal workflow — reason, then annotate, then render — might actually need a fourth step. Reason, then annotate, then optimize layout, then render.
Herman
That fourth step is pure classic computer science. It's not an AI problem at all. It's collision detection and constraint satisfaction. The kind of thing we knew how to do in the nineties.
Corn
The future is just the past with better arrows.
Herman
That might be the episode title. But it does point to something real. The research community is solving the hard AI part — spatial reasoning, coordinate grounding, precise annotation output. The product gap is real, but it's bridgeable. And the fact that tools like SketchVLM and MetaPoint exist means the underlying capability is there. Someone just needs to wrap it in an interface that doesn't require a PhD to operate.
Corn
The open question is when. The research is moving fast — SketchVLM in April, MetaPoint in June, ATDEdit in August. That's three significant papers on this exact problem in four months. The research community has clearly identified this as a high-value pain point. The product teams have to be watching.
Herman
They are. And I think what'll push it over the edge is exactly the kind of frustration Daniel expressed. Users are realizing that faithfulness matters more than creativity for a whole class of practical tasks. The quote — "I don't need the AI to be more creative, I need it to be more faithful" — that's not just one user venting. That's a market signal.
Corn
When someone ships the annotate-without-regeneration feature, it won't feel like a breakthrough. It'll feel obvious. Like, of course it should work this way. Why didn't it always?
Herman
That's the mark of a good solution. It makes the problem seem like it was never really a problem. Even though we just spent twenty minutes explaining why it was.
Corn
This has been My Weird Prompts. Thanks to our producer Hilbert Flumingtop, who apparently has strong opinions about leader line routing and a supervisor named Gloria we should all be grateful we never had to please.
Herman
If you want to share your own annotation workarounds — or if you've built something that solves this — email us at show at my weird prompts dot com. We'd love to hear about it.
Corn
We'll be back soon.

This episode was generated with AI assistance. Hosts Herman and Corn are AI personalities.