Remix.run Logo
knollimar 9 hours ago

Oof 800 by 800 kills a lot of use cases

johndough 9 hours ago | parent | next [-]

Might still be fine. The most recent crop of vLLMs proactively use whichever programs are available on the system (e.g. ImageMagick or PIL) to "zoom in" by cropping subimages if they can't quite make out the details.

knollimar 6 hours ago | parent [-]

Downsizing a higher res image to lower res means the zoom will be blurry.

andai 6 hours ago | parent | next [-]

They process the original image file with Python on the local device. (And I've seen the web chats do this with their "computer use" features too.)

The really wild one is even blind models will do this and they'll try to run stats on the pixels to figure out what it looks like... the even wilder thing is that it kind of works!

knollimar 5 hours ago | parent [-]

If the API accepts only 800 by 800, the aegument youre making is "fix it in the harness".

I don't think the n by n subgrid fixes this the way most harnesses do, as it'll fail to count things if you have more overlap and fail relatiomships if you have less

tjoff 3 hours ago | parent [-]

That seems weirdly specific?

And if you are counting things it should be trivial to note the position of your items and not double-count them, no?

johndough 3 hours ago | parent | prev | next [-]

The order is:

    LLM issues tool call to read high res image ->
    harness sends high res image to server ->
    server downsizes it to 800x800 (blurry) ->
    LLM issues bash command (e.g. `convert`) to crop a small subimage (e.g. 600x600) from the high res image ->
    LLM issues tool call to read subimage ->
    harness sends subimage to server ->
    server does not resize the subimage because it is small already, so it is not blurry when finally ingested by the LLM
an hour ago | parent | next [-]
[deleted]
knollimar an hour ago | parent | prev [-]

Then you have a separate issue where the LLM can't piece together 9 subimages well.

adastra22 4 hours ago | parent | prev [-]

They’re not talking about zooming, hence the quotes.

johndough 3 hours ago | parent | next [-]

Yes. When the LLM tries to read an image, it will be resized by DeepSeek's server to 800x800, which might be a bit blurry. The LLM will then crop a smaller image from the high resolution image (using e.g. the `convert` tool via bash) and will then read the small cropped image. This image will still be resized to 800x800 by DeepSeek's server, but since it is already small, there is no or little loss of quality.

knollimar 4 hours ago | parent | prev [-]

If the harness does it that's just like saying "please use a workaround". You'll lose fidelity and LLMs will lose the ability to count things or maintain relationships for schematics, etc

johndough 3 hours ago | parent [-]

LLMs read images by splitting them up into e.g. 16x16 patches, which are then converted to embedding vectors and fed to the LLM, so from a technical point of view, feeding a big image as many 20x20 patches all at once is not too different from cropping subimages from the image, splitting those subimages into patches and feeding them to the LLM. Of course, the LLM has to be trained to understand that those images belong together, but it can be done.

knollimar an hour ago | parent [-]

You say "it can be trained" but they fail at counting in my use cases, let alone maintaining symbolic relationships.

Can you point me at one that can understand a detailed block diagram? Frontier is fine, soliciting recommendations

wongarsu 9 hours ago | parent | prev | next [-]

For most use cases you can fix that in the harness. Just give the model a tool to request a crop of specific coordinates of any image it has in its context. Call the tool "zoom" and it should be intuitive for the model

Maybe there are some use cases where you need high detail everywhere at once, but for OCR of small text and the like a zoom ability should be sufficient

embedding-shape 8 hours ago | parent [-]

For really dumb models I've also had success automatically cropping it into a grid of N images with the max size, then processing each cell individually, then once all been processed, do one final call with resized image + all other context previously generated per cell. Basically a workaround to the image dimension restrictions without loosing fidelity. Works well with even dumb 7B models.

Can't remember if I stole this idea from some existing public harness though, can't remember. If someone knows of public harnesses that do this already, please share them :)

Aeroi an hour ago | parent | next [-]

i think the claude cookbook has a file that does this, called tiling.

dotancohen 8 hours ago | parent | prev [-]

Does this not loose context? Especially e.g. in fonts where the character pairs 0O 1I 1l Il may be difficult to differentiate?

skeledrew 7 hours ago | parent [-]

That's what the grid crop should handle. The detail is retained at that level, and then everything is logically stitched together again using the lower-res-full-image as reference. That's going to be 2x token usage at minimum though.

stronglikedan 4 hours ago | parent | prev | next [-]

I don't know about a lot. Probably more like a few. I take a lot of screenshots for various reasons, and over 800 seems like I could have done a better job framing and cropping.

shadyr 9 hours ago | parent | prev | next [-]

It might also be due to its experimental status. Wouldn't surprise me if the GA version allows for larger input. Either that or the eventual pro version.

Chnmy 6 hours ago | parent | prev | next [-]

what are these use cases?

knollimar 6 hours ago | parent [-]

Anything where there are symbols representing in space (e.g. schematics). Thats pretty broad

asdfsa32 9 hours ago | parent | prev [-]

flash vs fine details. Pick one.

Doohickey-d 9 hours ago | parent [-]

Gemini "flash" models have an option for media resolution, including a high resolution option for screenshots.

skeledrew 7 hours ago | parent [-]

At what price point?