DotCheck/vermeer-image-v12
Apache-2.0 image AI-likeness head for DotCheck. This repo includes the live .npz head, model card, license, and notices.
| Field | Value |
|---|---|
| Hub id | DotCheck/vermeer-image-v12 |
| Wire id | inhouse@12 |
| Label | Vermeer |
| Artifact | siglip2_base_patch16_224_linear_head_v12lora.npz |
| Backbone | google/siglip2-base-patch16-224 (Apache-2.0) |
| Head | trained linear / logistic on adapted SigLIP2 vision embeddings (merged LoRA) |
| Output | p ∈ [0,1] — P(AI-like); higher ⇒ more AI-like |
| Serve | CPU FastAPI (POST /v1/analyze-image); public clients → Express |
| Encode | client transport max side 256; processor → 224 |
Model description
Adapted SigLIP2-base vision tower (self-trained merged LoRA, Apache-2.0) + DotCheck head (*.npz). Video frames still use the frozen upstream tower with a separate head. This card documents the production image engine; prior @5 is archived and not loaded.
Files in this repo: README.md, LICENSE, NOTICE, CITATION.cff, the .npz head, and companion vision safetensors.
Architecture
JPEG/PNG bytes
→ resize (max side 256 at product edge)
→ AutoProcessor / SigLIP2 encode (224)
→ adapted embedding (merged LoRA vision weights)
→ linear/logistic head (npz)
→ p_AI
Shared SigLIP2 process family with video (inhouse-video@2); separate head artifact and image-only adapted weights.
Inference
Open weights: the live .npz head and companion vision safetensors in this repo (Apache-2.0). This is not a transformers AutoModel.from_pretrained("DotCheck/…") package.
Product scoring: Check or Pro API (below). Leviathan (shared memory and related product path) is not in these files.
HTTP (Pro API key dc_…; create in product Dashboard):
curl -sS -X POST "https://dotcheck-server-c221c1f32c68.herokuapp.com/analyze-image" \
-H "Authorization: Bearer dc_YOUR_KEY" \
-F "file=@photo.jpg"
Guest UI: https://dotcheck.ai/check · contract: https://dotcheck.ai/api · gates PDF/tables: https://dotcheck.ai/docs
Response includes wire engine (inhouse@12) and engine_label (Vermeer).
Training data
| Split | Content |
|---|---|
| Fit AI | Commercial-clean self-gen (SD family); no NC / GenImage / CIFAKE / CommunityForensics* |
| Fit real | Diversified Commons / Picsum + JPEG/size stress |
| Holdout AI | Kandinsky 2.2 (generator family withheld from fit) |
| Holdout real | Wiki / Commons-style reals (~200 / class in gate protocol) |
Evidence: eval/results/quality_gates_v5.json · IMAGE_GATES_OK.
Evaluation
| Metric | Target | Measured |
|---|---|---|
| mean P(AI) | real | ≤ 0.12 | 0.000 |
| mean P(AI) | AI | ≥ 0.88 | 0.938 |
| separation (AI−real) | ≥ 0.55 | 0.938 |
| bal_acc @ thr | ≥ 0.92 | 0.9950 |
SSOT floats: repo Data.json / MODEL-CHOICE.md. Do not cite eval/candidates.yaml (stale).
Intended use
- Binary AI-likeness scoring for still images in DotCheck inference.
- Reproducible citation of the holdout table above.
Out of scope
- Product scoring SLA / Leviathan / FUP via Hub download
- Generator identification / provenance (optional Pro vendor confirm is a separate path)
- Legal determinations of authorship
Limitations
- Domain shift: heavy recompression, novel generators, adversarial edits.
- Score = likeliness under this model, not a calibrated posterior over all generators.
- Closed commercial gens not in holdout may differ; not measured here.
License
LICENSE — Apache License 2.0 for DotCheck heads in this repo. Upstream backbones: see NOTICE.
Citation
CITATION.cff. Prefer wire inhouse@12 / label Vermeer@12 + https://dotcheck.ai/docs.
Model tree for DotCheck/vermeer-image-v12
Base model
google/siglip2-base-patch16-224Collection including DotCheck/vermeer-image-v12
Evaluation results
- mean_P_AI_real on DotCheck image holdout (Commons/wiki reals vs Kandinsky 2.2 AI)quality_gates_v12lora / Data.json0.000
- mean_P_AI_ai on DotCheck image holdout (Commons/wiki reals vs Kandinsky 2.2 AI)quality_gates_v12lora / Data.json0.938
- balanced_accuracy on DotCheck image holdout (Commons/wiki reals vs Kandinsky 2.2 AI)quality_gates_v12lora / Data.json0.995