Instructions to use deskmind/eyes-4b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use deskmind/eyes-4b with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="deskmind/eyes-4b") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("deskmind/eyes-4b") model = AutoModelForMultimodalLM.from_pretrained("deskmind/eyes-4b", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use deskmind/eyes-4b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "deskmind/eyes-4b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "deskmind/eyes-4b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/deskmind/eyes-4b
- SGLang
How to use deskmind/eyes-4b with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "deskmind/eyes-4b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "deskmind/eyes-4b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "deskmind/eyes-4b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "deskmind/eyes-4b", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use deskmind/eyes-4b with Docker Model Runner:
docker model run hf.co/deskmind/eyes-4b
DeskMind Eyes 4B
A 4B GUI grounding model: given a screenshot and a description of a UI element, it returns the point to click. DeskMind uses it on this Mac for apps that expose no accessibility tree.
ไธไธช 4B ็ GUI ๅฎไฝๆจกๅ๏ผ่พๅ ฅๆชๅพๅๅฏน็้ขๅ ็ด ็ๆ่ฟฐ๏ผ่พๅบ่ฆ็นๅป็ไฝ็ฝฎใ ๅพๅฟ๏ผDeskMind๏ผๅจๆฌๆบ็จๅฎๆไฝๆฒกๆ่พ ๅฉๅ่ฝ็ปๆ็ๅบ็จใ
Try it and read more: the DeskMind Mac app runs this model on your Mac ยท how the decision models were trained ยท code, app and bench
| Revision | Contents |
|---|---|
main |
bf16 weights (Transformers / vLLM), for reproducing the results below |
mlx-4bit |
MLX 4-bit build (group size 64) that the DeskMind app runs on Apple silicon |
Results ยท ็ปๆ
The benchmarks were run with the bf16 weights, all on one platform: vLLM 0.19, the Qwen3-VL computer_use tool prompt, native resolution and greedy decoding. Comparisons with other models are paired, item by item, on that platform.
็จ bf16 ๆ้่ฏๆต๏ผๆๆ็ปๆ้ฝๅจๅไธๅนณๅฐไธๅพๅบ๏ผvLLM 0.19ใQwen3-VL computer_use tool promptใๅ็ๅ่พจ็ใ่ดชๅฟ่งฃ็ ใไธๅ ถไปๆจกๅ็ๅฏนๆฏๆฏๅจ่ฏฅๅนณๅฐไธ้้ข้ ๅฏน่ฟ่ก็ใ
| Benchmark | GUI-Owl-1.5-4B (base) | Eyes 4B |
|---|---|---|
| ScreenSpot-Pro, no zoom, full 1581 | 64.8 | 67.7 |
| ScreenSpot-Pro, with zoom-in, full | 76.2 | 77.5 |
| ScreenSpot-v2, 1272 | 92.8 | 95.0 |
On ScreenSpot-Pro (no zoom), Eyes 4B is +2.9 over the base (paired: +81 / โ34, z = 4.4). It is +1.6 over KV-Ground-4B measured on the same platform (+68 / โ42, z = 2.5).
The
mlx-4bitbuild as DeskMind deploys it (4-bit, screenshots scaled to โค 2 MP,point_2dprompt) has no benchmark number. Quantization and the smaller input may cost accuracy.ScreenSpot-Pro๏ผไธๆพๅคง๏ผไธๆฏๅบๅบง้ซ 2.9๏ผ้ ๅฏน +81 / โ34๏ผz = 4.4๏ผ๏ผๆฏๅจๅไธๅนณๅฐๅฎๆต็ KV-Ground-4B ้ซ 1.6๏ผ+68 / โ42๏ผz = 2.5๏ผใ
DeskMind ๅฎ้ ้จ็ฝฒ็
mlx-4bit็ๆฌ๏ผ4-bitใๆชๅพ็ผฉๅฐ โค 2 MPใpoint_2dๆ็คบ่ฏ๏ผๆฒกๆ่ฏๆตๅๆฐใ้ๅๅๆดๅฐ็่พๅ ฅ้ฝๅฏ่ฝ้ไฝๅ็กฎ็ใ
Training ยท ่ฎญ็ป
The base is GUI-Owl-1.5-4B-Instruct. On top of it, a LoRA (r = 32, on all language-model linear layers and lm_head, vision tower frozen) was trained with GRPO and DAPO dynamic sampling, rewarded 1 for a click inside the target box and 0 otherwise. The LoRA is merged into the weights published here.
- DAPO on ShowUI-desktop and OS-Atlas desktop, with the OS-Atlas instructions rewritten into functional ones (see Disclosures).
- Continued DAPO on a harder pool of GroundCUA records, 3.3K with a base pass rate in [1/8, 4/8], at 2.5 MP.
ๅบๅบงๆฏ GUI-Owl-1.5-4B-Instructใๅจๅ ถไธ่ฎญ็ปไบไธไธช LoRA๏ผr = 32๏ผไฝ็จไบ่ฏญ่จๆจกๅ็ๅ จ้จ็บฟๆงๅฑๅ lm_head๏ผ่ง่งๅกๅป็ป๏ผ๏ผ็จ GRPO ๅ DAPO ๅจๆ้ๆ ท๏ผ็นๅป่ฝๅจ็ฎๆ ๆกๅ ๅฅๅฑไธบ 1๏ผๅฆๅไธบ 0ใ่ฟ้ๅๅธ็ๆ้ๅทฒ็ปๅๅนถไบ่ฏฅ LoRAใ
- ๅจ ShowUI-desktop ๅ OS-Atlas desktop ไธๅ DAPOใOS-Atlas ็ๆไปคๆนๅๆไบๅ่ฝๆ่ฟฐๅผ๏ผ่ง"่ฏดๆ"ไธ่๏ผใ
- ๅจๆด้พ็ GroundCUA ๅญ้ไธ็ปง็ปญ DAPO๏ผ3.3K ๆกๅบๅบง้่ฟ็ๅจ [1/8, 4/8] ไน้ด็่ฎฐๅฝ๏ผ่ฎญ็ปๅ่พจ็ 2.5 MPใ
Licence ยท ่ฎธๅฏ
The weights are released under Apache-2.0.
| Component | Licence |
|---|---|
| Base model GUI-Owl-1.5-4B-Instruct (mPLUG) | MIT: its notice is kept below |
| Qwen3-VL (the base of GUI-Owl-1.5) | Apache-2.0 |
| OS-Atlas data (OS-Copilot) | Apache-2.0 |
| GroundCUA (ServiceNow) | MIT |
| ShowUI-desktop (showlab) | not stated: see Disclosures |
ๆ้ไปฅ Apache-2.0 ๅๅธใๅ็ปๆ้จๅ็่ฎธๅฏ่งไธ่กจ๏ผๅบๅบงๆจกๅ็ MIT ๅฃฐๆไฟ็ๅจๆฌ่ๆซๅฐพ๏ผShowUI-desktop ็่ฎธๅฏๆชๆ ๆ๏ผ่ง"่ฏดๆ"ไธ่ใ
GUI-Owl-1.5 โ Copyright (c) the mPLUG / X-PLUG authors. Released under the MIT License: permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files, to deal in the Software without restriction, subject to the condition that the above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
Disclosures ยท ่ฏดๆ
ShowUI-desktop's licence is unconfirmed. Its dataset card states none, and we have asked the authors (showlab/ShowUI#104). If it turns out not to allow this use, a variant trained without it will replace these weights.
Rewritten instructions. The OS-Atlas desktop instructions (accessibility names) were rewritten into functional instructions by a frontier model. That rewriting prompt used a handful of ScreenSpot-Pro test instructions, text only, as style examples: no screenshots, boxes or answers. The rewritten data was used for training, not for evaluation, but the prompt did see those test strings.
UI-Vision is not reported here. GroundCUA shares its source with UI-Vision.
ShowUI-desktop ็่ฎธๅฏๅฐๆช็กฎ่ฎคใ ๆฐๆฎๅกไธๆฒกๆๅ่ฎธๅฏ๏ผๆไปฌๅทฒ็ปๅไฝ่ ่ฏข้ฎ๏ผshowlab/ShowUI#104๏ผใๅฆๆๅฎไธๅ ่ฎธ่ฟ็ง็จ้๏ผไผ็จไธๅซๅฎ็ๆฐๆฎ้่ฎญไธ็๏ผๆฟๆข่ฟ้็ๆ้ใ
ๆนๅ่ฟ็ๆไปคใ OS-Atlas desktop ็ๆไปค๏ผ่พ ๅฉๅ่ฝๅ็งฐ๏ผ็ฑไธไธชๅๆฒฟๅคงๆจกๅๆนๅๆไบๅ่ฝๆ่ฟฐๅผใๆนๅ็จ็ๆ็คบ่ฏ้๏ผๆฟไบๅ ๆก ScreenSpot-Pro ๆต่ฏ้็ๆไปค๏ผไป ๆๅญ๏ผๅฝ้ฃๆ ผ็คบไพ๏ผๆฒกๆ็จๆชๅพใๆ ๆณจๆกๆ็ญๆกใๆนๅๅ็ๆฐๆฎๅช็จไบ่ฎญ็ปใไธ็จไบ่ฏๆต๏ผไฝๆ็คบ่ฏ็กฎๅฎ่ง่ฟ่ฟๅ ๆกๆต่ฏๆๅญใ
่ฟ้ไธๆฅๅ UI-Vision ๅๆฐใ ๅ ไธบ GroundCUA ไธ UI-Vision ๅๆบใ
Use ยท ็จๆณ
Prompt (coordinates are 0โ1000, relative to the image):
ๆ็คบ่ฏ๏ผๅๆ ไธบ 0โ1000๏ผ็ธๅฏนไบๅพ็๏ผ๏ผ
Locate the UI element in the screenshot that matches the description, and output its click point in JSON as
{"point_2d": [x, y]}, with coordinates in 0-1000 relative to the image.
Description: <instruction>
pip install mlx-vlm huggingface_hub
hf download deskmind/eyes-4b --revision mlx-4bit --local-dir eyes-4b-mlx
python -m mlx_vlm.generate --model eyes-4b-mlx --max-tokens 32 --image screenshot.png --prompt "<the prompt above>"
Integrity: eyes-4b-bf16.sha256 on main and eyes-4b-mlx4.sha256 on mlx-4bit list every file's SHA-256.
ๅฎๆดๆงๆ ก้ช๏ผmain ไธ็ eyes-4b-bf16.sha256 ๅ mlx-4bit ไธ็ eyes-4b-mlx4.sha256 ๅๅบไบๆฏไธชๆไปถ็ SHA-256ใ
- Downloads last month
- 103