masterset-ai commited on
Commit
d624bb6
·
verified ·
1 Parent(s): 0c78df4

Model card: quick start, question types, tags, demo badge

Browse files
Files changed (1) hide show
  1. README.md +206 -73
README.md CHANGED
@@ -1,73 +1,206 @@
1
- ---
2
- license: apache-2.0
3
- base_model: FINAL-Bench/Darwin-35B-A3B-Opus
4
- library_name: transformers
5
- pipeline_tag: image-text-to-text
6
- tags:
7
- - vision
8
- - decision
9
- - multiple-choice
10
- - classification
11
- - moe
12
- - qwen3_5_moe
13
- ---
14
-
15
- # PhysicalEye-Decide-35B
16
-
17
- **One forward pass. One calibrated decision.**
18
-
19
- PhysicalEye-Decide-35B answers a question about an image by choosing among the options you give it, and returns a probability for every option. It does not write text. It reads the image, the question and the options once, and outputs a decision.
20
-
21
- Use it for visual inspection, yes/no checks, option selection and scoring on production lines, in apps and in robots.
22
-
23
- ## Results
24
-
25
- | Test | Result |
26
- |---|---|
27
- | Egg inspection, held-out test (100 photos, good vs bad) | **98.0%** accuracy, mean confidence 0.964 |
28
- | AI2D diagram questions (200, 4 options) | **87.0%** (chance 25%) |
29
- | Latency per decision, median (one B200 GPU) | **0.051 s** (p80 0.068 s) |
30
-
31
- ## How it works
32
-
33
- - Backbone: a vision-language Mixture-of-Experts model (35B total, about 3B active per token).
34
- - A small decision readout sits on top of the backbone and scores each option directly.
35
- - Output: one probability per option. Probabilities are temperature-calibrated.
36
-
37
- ## Input format
38
-
39
- One request carries up to 4 images, an optional context (`state`) and one or more questions.
40
- Three question types are supported: `choice` (pick one option), `noul` (yes or no) and `score` (a value on a scale).
41
-
42
- ```json
43
- {
44
- "images": ["<base64 image>"],
45
- "state": "Egg inspection line, candling light.",
46
- "questions": {
47
- "q1": {"type": "choice", "question": "Is this egg good or bad?", "options": ["good", "bad"]}
48
- }
49
- }
50
- ```
51
-
52
- The response has one entry per question key in `answers`, with the chosen option and its probability.
53
-
54
- ## Files
55
-
56
- - `model-*.safetensors`: backbone weights
57
- - `readout.safetensors`: decision readout
58
- - `decision_config.json`: option codes, token ids and calibration temperature
59
-
60
- ## Base model and license
61
-
62
- - Built on [FINAL-Bench/Darwin-35B-A3B-Opus](https://huggingface.co/FINAL-Bench/Darwin-35B-A3B-Opus), a Qwen3.5 MoE based model.
63
- - Released under Apache-2.0. The upstream Qwen license notice applies to the base weights.
64
-
65
- ## Training data credits
66
-
67
- The decision readout was trained on openly licensed data:
68
-
69
- - VQAv2 (CC BY 4.0, annotations), COCO captions and instances 2017 (CC BY 4.0, annotations; images keep their Flickr licenses)
70
- - TextVQA 0.5.1 (CC BY 4.0), ScreenQA and RICO-SCA / Screen2Words on RICO (CC BY 4.0)
71
- - CLEVR v1.0 (CC BY 4.0), A-OKVQA (Apache-2.0), VSR (CC BY 4.0), CORD v2 (CC BY 4.0)
72
- - Open-Jev (CC0 1.0), MMLU auxiliary train (MIT), synthetic charts made in-house
73
- - Good and Bad Eggs Identification Image Dataset, Md Mafiul Hasan Matin, Marium Jahan, Md. Saroar Jahan, Mendeley Data, doi:10.17632/mdty358x8m.1 (CC BY 4.0)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model: FINAL-Bench/Darwin-35B-A3B-Opus
4
+ library_name: transformers
5
+ pipeline_tag: image-text-to-text
6
+ language:
7
+ - en
8
+ - ko
9
+ - zh
10
+ tags:
11
+ - jev
12
+ - decision
13
+ - decision-engine
14
+ - calibrated
15
+ - calibration
16
+ - probability
17
+ - vision
18
+ - vision-language
19
+ - multimodal
20
+ - vlm
21
+ - image-classification
22
+ - zero-shot-image-classification
23
+ - zero-shot-classification
24
+ - visual-question-answering
25
+ - multiple-choice
26
+ - yes-no
27
+ - scoring
28
+ - visual-inspection
29
+ - quality-control
30
+ - defect-detection
31
+ - industrial-inspection
32
+ - food-inspection
33
+ - agriculture
34
+ - egg
35
+ - robotics
36
+ - physical-ai
37
+ - edge-ai
38
+ - document-understanding
39
+ - screen-understanding
40
+ - moe
41
+ - mixture-of-experts
42
+ - qwen3_5_moe
43
+ - qwen3.5
44
+ - multilingual
45
+ - korean
46
+ - chinese
47
+ ---
48
+
49
+ <div align="center">
50
+
51
+ # 👁️ PhysicalEye-Decide-35B
52
+
53
+ ### Show it an image. Ask a question. Get a calibrated decision in one forward pass.
54
+
55
+ [![Demo](https://img.shields.io/badge/%F0%9F%A4%97%20Live%20Demo-PhysicalEye--Decide--35B-ffcc4d)](https://huggingface.co/spaces/masterset-ai/PhysicalEye-Decide-35B-demo)
56
+ [![Base model](https://img.shields.io/badge/Base-Darwin--35B--A3B-6f42c1)](https://huggingface.co/FINAL-Bench/Darwin-35B-A3B-Opus)
57
+ [![Family](https://img.shields.io/badge/PhysicalEye-35B-ff7a59)](https://huggingface.co/masterset-ai/PhysicalEye-35B)
58
+ [![License](https://img.shields.io/badge/License-Apache%202.0-2ea44f)](https://www.apache.org/licenses/LICENSE-2.0)
59
+
60
+ </div>
61
+
62
+ ---
63
+
64
+ ## What it is
65
+
66
+ PhysicalEye-Decide-35B is a **decision engine for images**. You give it an image, a question and the possible answers. It returns a probability for every answer.
67
+
68
+ It does not generate text. It reads the input once and scores every option directly. That makes it:
69
+
70
+ - **Fast**: about 0.05 seconds per decision on one GPU.
71
+ - **Predictable**: the answer is always one of your options. No parsing, no free text.
72
+ - **Calibrated**: the probability is meant to be used. Set a threshold, route low-confidence cases to a person, and log every score.
73
+
74
+ ## Results
75
+
76
+ | Test | Setting | Result |
77
+ |---|---|---|
78
+ | **Egg inspection** | Held-out test, 100 candling photos, good vs bad | **98.0%** accuracy, mean confidence 0.964 |
79
+ | **AI2D** | 200 science diagram questions, 4 options | **87.0%** (chance 25%) |
80
+ | **Speed** | Median latency per decision, one B200 GPU | **0.051 s** (p80 0.068 s) |
81
+
82
+ ## Where to use it
83
+
84
+ | Area | Example question | Type |
85
+ |---|---|---|
86
+ | Food and farm inspection | "Is this egg good or bad?" | `choice` |
87
+ | Factory quality control | "Is there a crack on this part?" | `noul` |
88
+ | Retail and logistics | "Which product is on the shelf?" | `choice` |
89
+ | Documents and screens | "Is the total on this receipt above 50?" | `noul` |
90
+ | Robots and edge devices | "Is the gripper holding the object?" | `noul` |
91
+ | Rating and triage | "How damaged is this package, from 0 to 10?" | `score` |
92
+
93
+ Try these in the **[live demo](https://huggingface.co/spaces/masterset-ai/PhysicalEye-Decide-35B-demo)**: a real-time inspection line, a sample gallery and a playground in English, Korean and Chinese.
94
+
95
+ ## Quick start
96
+
97
+ ```bash
98
+ pip install -U torch transformers accelerate safetensors pillow huggingface_hub
99
+ wget https://huggingface.co/masterset-ai/PhysicalEye-Decide-35B/resolve/main/decide.py
100
+ ```
101
+
102
+ ```python
103
+ from decide import Decider
104
+
105
+ d = Decider("masterset-ai/PhysicalEye-Decide-35B") # downloads about 69 GB on first use
106
+
107
+ result = d.decide(
108
+ images=["egg.jpg"],
109
+ state="Candling photo: a light is shone through the egg in a dark room.",
110
+ question={
111
+ "type": "choice",
112
+ "instructions": "Is this egg good or bad?",
113
+ "criteria": {"good": "Normal, healthy egg", "bad": "Defective, spoiled or damaged egg"},
114
+ },
115
+ )
116
+ print(result)
117
+ # {"type": "choice", "choice": "good", "confidence": ..., "probabilities": {"good": ..., "bad": ...}}
118
+ ```
119
+
120
+ From the command line:
121
+
122
+ ```bash
123
+ python decide.py --image egg.jpg --instructions "Is this egg good or bad?" --options good bad
124
+ python decide.py --image part.jpg --instructions "Is there a crack on this part?" # yes/no
125
+ ```
126
+
127
+ **Hardware**: the weights are about 69 GB in bfloat16. Use one GPU with 80 GB or more memory (for example H100 80GB, H200, B200), or spread the model over several GPUs.
128
+
129
+ ## Question types
130
+
131
+ Every call takes up to **4 images**, a context string (`state`) and one question.
132
+
133
+ | Type | Fields | Returns |
134
+ |---|---|---|
135
+ | `choice` | `instructions`, `criteria`: a dict of option name to description (or `null`) | `choice`, `confidence`, `probabilities` |
136
+ | `noul` | `instructions`, optional `criteria`: `{"true": ..., "false": ...}` | `noul`: probability of yes |
137
+ | `score` | `instructions`, `criteria`: a list of level descriptions, lowest first | `score` (expected level), `confidence`, `probabilities` |
138
+
139
+ ```python
140
+ # yes / no
141
+ d.decide(images=["part.jpg"], state="Steel bracket on a conveyor.",
142
+ question={"type": "noul", "instructions": "Is there a visible crack?"})
143
+ # {"type": "noul", "noul": ...}
144
+
145
+ # score on a scale
146
+ d.decide(images=["box.jpg"], state="Parcel at the receiving dock.",
147
+ question={"type": "score", "instructions": "How damaged is this package?",
148
+ "criteria": ["no damage", "minor dents", "torn or crushed", "destroyed"]})
149
+ # {"type": "score", "score": ..., "confidence": ..., "probabilities": {...}, "legend": {...}}
150
+ ```
151
+
152
+ ### Tips
153
+
154
+ - **Describe each option in plain words** in `criteria`. Short, concrete descriptions work best.
155
+ - **Put fixed context in `state`**, such as the camera setup or the product type. Keep `instructions` short.
156
+ - **Use the probability.** Accept high-confidence decisions automatically and send the rest to a person.
157
+ - Up to 255 options per question.
158
+
159
+ ## How it works
160
+
161
+ 1. A vision-language Mixture-of-Experts backbone reads the images, the context and the question together. It has 35B parameters in total and about 3B active per token, so it runs fast for its size.
162
+ 2. A small decision readout on top of the backbone scores every option in the same forward pass.
163
+ 3. A calibration temperature turns the scores into probabilities you can threshold.
164
+
165
+ ## Files
166
+
167
+ | File | Content |
168
+ |---|---|
169
+ | `model-0000X-of-00015.safetensors` | Backbone weights |
170
+ | `readout.safetensors` | Decision readout |
171
+ | `decision_config.json` | Option codes, token ids and calibration temperature |
172
+ | `decide.py` | Self-contained inference code (Apache-2.0) |
173
+ | `config.json`, `processor_config.json`, `tokenizer*`, `chat_template.jinja` | Model, image processor and tokenizer settings |
174
+
175
+ ## Model family
176
+
177
+ | Model | Role |
178
+ |---|---|
179
+ | [PhysicalEye-35B](https://huggingface.co/masterset-ai/PhysicalEye-35B) | First-person video understanding |
180
+ | **PhysicalEye-Decide-35B** | Image and text decisions with calibrated probabilities |
181
+
182
+ ## Base model and license
183
+
184
+ - Built on [FINAL-Bench/Darwin-35B-A3B-Opus](https://huggingface.co/FINAL-Bench/Darwin-35B-A3B-Opus), a Qwen3.5 MoE based vision-language model.
185
+ - Released under the **Apache-2.0** license. The upstream Qwen license notice applies to the base weights.
186
+
187
+ ## Training data credits
188
+
189
+ The decision readout was trained only on openly licensed data. We thank the authors of:
190
+
191
+ - **VQAv2** (CC BY 4.0, annotations) and **COCO** captions and instances 2017 (CC BY 4.0, annotations; images keep their Flickr licenses)
192
+ - **TextVQA 0.5.1** (CC BY 4.0), **ScreenQA**, **RICO-SCA** and **Screen2Words** on RICO (CC BY 4.0)
193
+ - **CLEVR v1.0** (CC BY 4.0), **A-OKVQA** (Apache-2.0), **VSR** (CC BY 4.0), **CORD v2** (CC BY 4.0)
194
+ - **Open-Jev** (CC0 1.0), **MMLU auxiliary train** (MIT), synthetic charts made in-house
195
+ - **Good and Bad Eggs Identification Image Dataset**, Md Mafiul Hasan Matin, Marium Jahan, Md. Saroar Jahan, Mendeley Data, doi:10.17632/mdty358x8m.1 (CC BY 4.0)
196
+
197
+ ## Citation
198
+
199
+ ```bibtex
200
+ @misc{physicaleye_decide_35b,
201
+ title = {PhysicalEye-Decide-35B: One-Pass Calibrated Image Decisions},
202
+ author = {MASTERSET},
203
+ year = {2026},
204
+ url = {https://huggingface.co/masterset-ai/PhysicalEye-Decide-35B}
205
+ }
206
+ ```