Downloads · 30 days
23
35% of all-time downloads
redrob-labs/redrob-verify-forgery
redrob-verify-forgery is a image classification model from redrob-labs. Use it when you need a label for an image. It is set up for pytorch. The card lists the license as apache-2.0.
Forgery detector weights for redrob-verify, the Redrob verification stack (document OCR, forgery, face match, identity).
Downloads · 30 days
23
35% of all-time downloads
All-time downloads
66
Public
Parameters
35.1M
562 MB on disk
Likes
1
Public
Click a slice to open those files.
.pth140 MB · 50%
From the Hugging Face model README
Forgery detector weights for redrob-verify, the Redrob verification stack (document OCR, forgery, face match, identity).
redrob-labs/redrob-verify-forgeryservices/forgery/)Score a document scan or photo for tampering likelihood in [0, 1]
(higher = more likely forged). Tuned for ID / KYC–style pages in the
redrob-verify harness (MIDV authentic + synthetic patches).
Not a face deepfake detector. Not a claim of FMIDV cross-domain pass unless you run that split yourself.
| Architecture | ResNet-50 + FFT + HOG streams + upsample localization head |
| Backbone init | torchvision ResNet50_Weights.IMAGENET1K_V2 (BSD-3) |
| Input | RGB 320×320 |
| Serving score | Image-level sigmoid (localization used at train time) |
| Code | services/forgery/model.py |
Files in this repo:
model.safetensors — weights for Hub / safetensors loadersforgerynet_apache.pth — full training checkpoint (model_state + metadata); drop-in for redrob-verify config.yamlconfig.json — image size, recommended threshold, provenance pointers| Source | Role | Terms |
|---|---|---|
| torchvision ResNet-50 ImageNet-1K V2 | Backbone init | BSD-3 / torchvision |
| MIDV-2020 authentic pages | Train negatives (JPEG-recompressed, train-split only) + eval authentic (held-out docs) | Follow MIDV / portal terms |
tools/gen_forgery.py synthetic tampers | Train positives + masks (from train docs only) | Synthetic; generated in-repo |
Weights are not derived from TruFor.
Document-disjoint holdout (tools/split_forgery_holdout.py): 400 train /
100 eval authentic IDs, eval n=200 (100 auth + 100 forged).
Published checkpoint (seed 7):
Multi-seed check (seeds 7 / 13 / 42; judge by minimum):
| Seed | TPR | F1 | t* |
|---|---|---|---|
| 7 | 0.92 | 0.821 | 0.87 |
| 13 | 0.88 | 0.811 | 0.98 |
| 42 | 0.93 | 0.798 | 0.96 |
| min | 0.88 | 0.798 | — |
Protocol: ./run.sh split-forgery-holdout --regenerate-train --rebuild-eval then
./run.sh train-forgery / ./run.sh eval-forgery.
# From the redrob-verify checkout
./tools/fetch_models.sh # pulls face + forgery from Hugging Face
# Or Hub only
huggingface-cli download redrob-labs/redrob-verify-forgery \
--local-dir models/forgery
Serve with forgery.backend: forgery_net, image_size: 320, and
weights_path: models/forgery/forgerynet_apache.pth (or load model.safetensors
via the same ForgeryNet class).
Cite redrob-verify and MIDV-2020 per their terms when reporting results.