| --- |
| 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**. |
|
|