File size: 6,177 Bytes
8b32ee3
 
 
d12ed2e
 
 
 
 
 
 
 
 
8b32ee3
 
d12ed2e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8b32ee3
 
 
d12ed2e
8b32ee3
d12ed2e
 
 
 
 
 
 
 
8b32ee3
d12ed2e
8b32ee3
d12ed2e
8b32ee3
d12ed2e
8b32ee3
d12ed2e
 
 
8b32ee3
d12ed2e
8b32ee3
d12ed2e
8b32ee3
d12ed2e
8b32ee3
d12ed2e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
---
pipeline_tag: image-segmentation
library_name: onnx
tags:
  - privacy
  - pii
  - computer-use
  - on-device
  - image-segmentation
  - lightweight
  - edge-ai
  - knowledge-distillation
---

# Veil-tiny

**Veil-tiny is a 321,305-parameter visual privacy model built by Parergon.**

It detects potentially sensitive regions directly from screenshots so they can be redacted **locally, before the original image leaves the device**.

**No giant VLM. No cloud OCR round-trip. No sending the raw screenshot somewhere else just to decide what should have been hidden.**

```text
Screenshot
    ↓
Veil-tiny
    ↓
Sensitive-region mask
    ↓
Local redaction
    ↓
Sanitized screenshot
```

> **One tiny model. One job: decide what pixels should not leave your computer.**

---

## Why Veil?

Real computer-use data is messy.

Screens can contain:

- emails
- names
- addresses
- account information
- credentials
- API keys
- customer information
- passwords
- private application state
- personal data

Large multimodal models can reason about screenshots.

But continuously running a giant model inside a lightweight desktop recorder is expensive, slow, and unnecessary.

Veil-tiny takes the opposite approach:

> **Make the privacy model extremely small and extremely specialized.**

---

## Model

| Property | Veil-tiny |
|---|---:|
| Parameters | **321,305** |
| Input | **384 Γ— 384 RGB** |
| Task | Binary sensitive-region segmentation |
| Output | Per-pixel sensitivity probability |
| Teacher | 1,224,497 parameters |
| Formats | PyTorch + ONNX |

Veil-tiny does not need to decide whether something is specifically an email, phone number, API key, or account ID.

It answers a narrower question:

> **Should these pixels be redacted?**

That narrow objective is what allows the model to stay tiny.

---

## Architecture

Veil-tiny uses a compact visual segmentation network with:

- depthwise-separable convolutional blocks
- lightweight encoder
- top-down decoder
- dense per-pixel prediction
- teacher-student knowledge distillation

The deployed student contains only **321K parameters**.

---

## Training

Veil-tiny was trained from sensitive-region masks using WebPII and additional Parergon-generated desktop data.

### WebPII

- **40,384 training screenshots**
- synthetic web interfaces
- pixel-aligned sensitive-region annotations

### Synthetic desktop data

An additional **10,000 generated desktop-style screenshots** containing examples such as:

- authentication screens
- email-style interfaces
- terminals
- credentials
- API keys
- CRM-style interfaces
- account information
- dense desktop UI
- safe text and hard negatives

### Knowledge distillation

A **1.22M-parameter teacher** supervises the **321K-parameter student** alongside ground-truth masks.

```text
Ground-truth masks ─────────────┐
                                ↓
Screenshot β†’ Teacher β†’ Veil-tiny
              1.22M       321K
```

The goal is simple:

**Transfer useful visual behavior into a model small enough to run locally.**

---

## Held-out results

Evaluated on the held-out WebPII test set.

At a privacy-biased threshold of **0.10**:

| Metric | Result |
|---|---:|
| Precision | **74.70%** |
| Recall | **86.83%** |
| F1 | **80.31%** |
| Strict leak-free rate | **33.32%** |

### Threshold sweep

| Threshold | Precision | Recall | F1 | Leak-free |
|---:|---:|---:|---:|---:|
| **0.10** | 74.70% | **86.83%** | 80.31% | **33.32%** |
| 0.15 | 76.19% | 86.24% | 80.91% | 31.48% |
| 0.20 | 77.27% | 85.80% | 81.31% | 29.87% |
| 0.25 | 78.12% | 85.42% | 81.61% | 28.78% |
| 0.30 | 78.85% | 85.08% | 81.85% | 27.55% |
| 0.35 | 79.50% | 84.75% | 82.04% | 26.26% |
| 0.40 | 80.10% | 84.44% | 82.21% | 24.88% |
| 0.50 | **81.19%** | 83.82% | **82.48%** | 22.38% |

For privacy, maximizing ordinary F1 is not necessarily the best operating point.

Lower thresholds deliberately trade some precision for higher sensitive-region coverage.

---

## What does "leak-free" mean?

We use a deliberately unforgiving metric.

A screenshot only counts as leak-free when essentially **all annotated sensitive regions are covered**.

Missing a visible portion of even one sensitive region can fail the entire screenshot.

> **A privacy model should not get credit for blurring most of your API key.**

---

## How Veil sees a screen

Veil produces a dense sensitivity probability map.

```text
0.02 β†’ probably safe
0.18 β†’ suspicious
0.91 β†’ likely sensitive
```

That map becomes a redaction mask.

```text
Screenshot
    ↓
Veil-tiny
    ↓
Probability map
    ↓
Threshold
    ↓
Redaction mask
```

The operating point can be tuned depending on how aggressively the system should redact.

**Lower threshold β†’ more paranoid**

**Higher threshold β†’ more selective**

---

## An interesting failure mode

Veil-tiny can be **too paranoid** on complex desktop interfaces.

On unseen applications it may incorrectly redact ordinary information-dense regions such as:

- menu labels
- documentation
- filenames
- source code
- ordinary UI text

In other words, sometimes a tiny model learns:

> **lots of text = suspicious**

instead of perfectly learning:

> **this particular information is private**

We're publishing that limitation instead of pretending the problem is solved.

---

## Files

### `veil_tiny.pt`

PyTorch checkpoint for research and experimentation.

### `veil_tiny.onnx`

Portable ONNX model for lightweight local inference.

---

## Intended use

Veil-tiny is designed for research and experimentation around:

- privacy-preserving screen recording
- computer-use data
- GUI agents
- screenshot sanitization
- multimodal datasets
- local AI
- edge vision
- on-device privacy filtering

---

## Important

**Veil-tiny is a research model, not a privacy guarantee.**

It can miss sensitive content and should not currently be used as the sole privacy or security control protecting private information.

---

# Built small on purpose.

A visual privacy model for screen capture should be able to run where the screenshots are created.

> **321,305 parameters. Visual privacy before upload.**

Built by **Parergon**.