ADCD-Net
March 29, 2026 ยท View on GitHub
ADCD-Net addresses the challenging problem of document image forgery localization by leveraging adaptive DCT features alongside hierarchical content disentanglement to robustly detect tampered regions even under compression distortions.

๐ ForensicHub Benchmark (Doc Protocol)

Evaluation follows the Doc Protocol: train on the DocTamper training set, evaluate on seven test sets. DocTamper FCD/SCD/Test sets are compressed once using the official DocTamper pickle QFs. Authentic images are skipped.
For more details, see ForensicHub โ Doc Protocol.
โ๏ธ Environment Setup
| Dependency | Version |
|---|---|
| Python | 3.10.13 |
| PyTorch | 2.3.0+cu121 |
| albumentations | 2.0.8 |
๐ Data Preparation
1. Download DocTamper Data
Download the DocTamper dataset (Training, Testing, FCD, SCD) from: ๐ DocTamper GitHub
qt_table.pkandpks(JPEG record pickle files) are available in the DocTamper repository.
2. Download ADCD-Net Checkpoints & OCR Masks
Download from Google Drive: ๐ ADCD-Net Data (Google Drive)
The archive contains:
ADCDNet.pth # ADCD-Net model checkpoint
docres.pkl # DocRes backbone checkpoint
DocTamperOCR/ # Pre-generated OCR mask directory
โโโ TrainingSet/ # Training set OCR masks
โโโ TestingSet/ # Testing set OCR masks
โโโ FCD/ # FCD dataset OCR masks
โโโ SCD/ # SCD dataset OCR masks
3. Download Doc Protocol Cross-Domain Test Sets
Download the 4 cross-domain test sets (T-SROIE, OSTF, TPIC-13, RTM) from:
๐ Doc Protocol Data (Google Drive) โ cutted_datasets_fakes.zip
๐ค Get OCR Masks
OCR character segmentation masks are generated using seg_char.py, which requires PaddleOCR.
Install PaddlePaddle and PaddleOCR by following the official guide: ๐ PaddleOCR Installation
Then run:
python seg_char.py
๐ Training
ADCD-Net is trained on 4 ร NVIDIA GeForce RTX 4090 (24 GB) with:
- 100k training steps
- Batch size: 40 (10 per GPU ร 4 GPUs with gradient accumulation)
- Training time: ~27 hours
Steps:
- Configure paths in
cfg.py:
mode = 'train'
root = 'path/to/DocTamper'
docres_ckpt_path = 'path/to/docres.pkl'
- Launch training:
python main.py
๐ Evaluation
Reproduce the ForensicHub Doc Protocol results with the following steps:
- Generate OCR masks for the 4 cross-domain sets using
seg_char.py. - Generate path pickle files for the 4 sets using
build_path_pkl.py. - Configure
cfg.pyfor evaluation:
mode = 'val'
all_ds_name = ['TestingSet', 'FCD', 'SCD', 'T-SROIE_test', 'Tampered-IC13_test', 'RealTextManipulation_test', 'OSTF_test']
pkl_dir = 'path/to/path_pkl'
- Run evaluation:
python main.py
๐ Citation
If you find this work useful in your research, please consider citing:
@inproceedings{wong2025adcd,
title={ADCD-Net: Robust Document Image Forgery Localization via Adaptive DCT Feature and Hierarchical Content Disentanglement},
author={Wong, Kahim and Zhou, Jicheng and Wu, Haiwei and Si, Yain-Whar and Zhou, Jiantao},
booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
year={2025}
}