masterset-ai commited on
Commit
c07e0fa
·
verified ·
1 Parent(s): d39d1f2

Add GitHub badge

Browse files
Files changed (1) hide show
  1. README.md +207 -206
README.md CHANGED
@@ -1,206 +1,207 @@
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
- ```
 
 
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
+ [![GitHub](https://img.shields.io/badge/GitHub-PhysicalEye--Decide-181717?logo=github)](https://github.com/masterset-ai/PhysicalEye-Decide)
59
+ [![License](https://img.shields.io/badge/License-Apache%202.0-2ea44f)](https://www.apache.org/licenses/LICENSE-2.0)
60
+
61
+ </div>
62
+
63
+ ---
64
+
65
+ ## What it is
66
+
67
+ 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.
68
+
69
+ It does not generate text. It reads the input once and scores every option directly. That makes it:
70
+
71
+ - **Fast**: about 0.05 seconds per decision on one GPU.
72
+ - **Predictable**: the answer is always one of your options. No parsing, no free text.
73
+ - **Calibrated**: the probability is meant to be used. Set a threshold, route low-confidence cases to a person, and log every score.
74
+
75
+ ## Results
76
+
77
+ | Test | Setting | Result |
78
+ |---|---|---|
79
+ | **Egg inspection** | Held-out test, 100 candling photos, good vs bad | **98.0%** accuracy, mean confidence 0.964 |
80
+ | **AI2D** | 200 science diagram questions, 4 options | **87.0%** (chance 25%) |
81
+ | **Speed** | Median latency per decision, batched server, one B200 GPU | **0.051 s** (p80 0.068 s) |
82
+
83
+ ## Where to use it
84
+
85
+ | Area | Example question | Type |
86
+ |---|---|---|
87
+ | Food and farm inspection | "Is this egg good or bad?" | `choice` |
88
+ | Factory quality control | "Is there a crack on this part?" | `noul` |
89
+ | Retail and logistics | "Which product is on the shelf?" | `choice` |
90
+ | Documents and screens | "Is the total on this receipt above 50?" | `noul` |
91
+ | Robots and edge devices | "Is the gripper holding the object?" | `noul` |
92
+ | Rating and triage | "How damaged is this package, from 0 to 10?" | `score` |
93
+
94
+ 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.
95
+
96
+ ## Quick start
97
+
98
+ ```bash
99
+ pip install -U torch transformers accelerate safetensors pillow huggingface_hub
100
+ wget https://huggingface.co/masterset-ai/PhysicalEye-Decide-35B/resolve/main/decide.py
101
+ ```
102
+
103
+ ```python
104
+ from decide import Decider
105
+
106
+ d = Decider("masterset-ai/PhysicalEye-Decide-35B") # downloads about 69 GB on first use
107
+
108
+ result = d.decide(
109
+ images=["egg.jpg"],
110
+ state="Candling photo: a light is shone through the egg in a dark room.",
111
+ question={
112
+ "type": "choice",
113
+ "instructions": "Is this egg good or bad?",
114
+ "criteria": {"good": "Normal, healthy egg", "bad": "Defective, spoiled or damaged egg"},
115
+ },
116
+ )
117
+ print(result)
118
+ # {"type": "choice", "choice": "good", "confidence": ..., "probabilities": {"good": ..., "bad": ...}}
119
+ ```
120
+
121
+ From the command line:
122
+
123
+ ```bash
124
+ python decide.py --image egg.jpg --instructions "Is this egg good or bad?" --options good bad
125
+ python decide.py --image part.jpg --instructions "Is there a crack on this part?" # yes/no
126
+ ```
127
+
128
+ **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.
129
+
130
+ ## Question types
131
+
132
+ Every call takes up to **4 images**, a context string (`state`) and one question.
133
+
134
+ | Type | Fields | Returns |
135
+ |---|---|---|
136
+ | `choice` | `instructions`, `criteria`: a dict of option name to description (or `null`) | `choice`, `confidence`, `probabilities` |
137
+ | `noul` | `instructions`, optional `criteria`: `{"true": ..., "false": ...}` | `noul`: probability of yes |
138
+ | `score` | `instructions`, `criteria`: a list of level descriptions, lowest first | `score` (expected level), `confidence`, `probabilities` |
139
+
140
+ ```python
141
+ # yes / no
142
+ d.decide(images=["part.jpg"], state="Steel bracket on a conveyor.",
143
+ question={"type": "noul", "instructions": "Is there a visible crack?"})
144
+ # {"type": "noul", "noul": ...}
145
+
146
+ # score on a scale
147
+ d.decide(images=["box.jpg"], state="Parcel at the receiving dock.",
148
+ question={"type": "score", "instructions": "How damaged is this package?",
149
+ "criteria": ["no damage", "minor dents", "torn or crushed", "destroyed"]})
150
+ # {"type": "score", "score": ..., "confidence": ..., "probabilities": {...}, "legend": {...}}
151
+ ```
152
+
153
+ ### Tips
154
+
155
+ - **Describe each option in plain words** in `criteria`. Short, concrete descriptions work best.
156
+ - **Put fixed context in `state`**, such as the camera setup or the product type. Keep `instructions` short.
157
+ - **Use the probability.** Accept high-confidence decisions automatically and send the rest to a person.
158
+ - Up to 255 options per question.
159
+
160
+ ## How it works
161
+
162
+ 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.
163
+ 2. A small decision readout on top of the backbone scores every option in the same forward pass.
164
+ 3. A calibration temperature turns the scores into probabilities you can threshold.
165
+
166
+ ## Files
167
+
168
+ | File | Content |
169
+ |---|---|
170
+ | `model-0000X-of-00015.safetensors` | Backbone weights |
171
+ | `readout.safetensors` | Decision readout |
172
+ | `decision_config.json` | Option codes, token ids and calibration temperature |
173
+ | `decide.py` | Self-contained inference code (Apache-2.0). Examples: [GitHub](https://github.com/masterset-ai/PhysicalEye-Decide) |
174
+ | `config.json`, `processor_config.json`, `tokenizer*`, `chat_template.jinja` | Model, image processor and tokenizer settings |
175
+
176
+ ## Model family
177
+
178
+ | Model | Role |
179
+ |---|---|
180
+ | [PhysicalEye-35B](https://huggingface.co/masterset-ai/PhysicalEye-35B) | First-person video understanding |
181
+ | **PhysicalEye-Decide-35B** | Image and text decisions with calibrated probabilities |
182
+
183
+ ## Base model and license
184
+
185
+ - 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.
186
+ - Released under the **Apache-2.0** license. The upstream Qwen license notice applies to the base weights.
187
+
188
+ ## Training data credits
189
+
190
+ The decision readout was trained only on openly licensed data. We thank the authors of:
191
+
192
+ - **VQAv2** (CC BY 4.0, annotations) and **COCO** captions and instances 2017 (CC BY 4.0, annotations; images keep their Flickr licenses)
193
+ - **TextVQA 0.5.1** (CC BY 4.0), **ScreenQA**, **RICO-SCA** and **Screen2Words** on RICO (CC BY 4.0)
194
+ - **CLEVR v1.0** (CC BY 4.0), **A-OKVQA** (Apache-2.0), **VSR** (CC BY 4.0), **CORD v2** (CC BY 4.0)
195
+ - **Open-Jev** (CC0 1.0), **MMLU auxiliary train** (MIT), synthetic charts made in-house
196
+ - **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)
197
+
198
+ ## Citation
199
+
200
+ ```bibtex
201
+ @misc{physicaleye_decide_35b,
202
+ title = {PhysicalEye-Decide-35B: One-Pass Calibrated Image Decisions},
203
+ author = {MASTERSET},
204
+ year = {2026},
205
+ url = {https://huggingface.co/masterset-ai/PhysicalEye-Decide-35B}
206
+ }
207
+ ```