trufor-ph2 / README.md
benjaik's picture
Add phase 3: README.md
39f95db verified
|
Raw
History Blame Contribute Delete
3.9 kB
---
license: other
library_name: pytorch
tags:
- image-forensics
- image-manipulation-detection
- image-segmentation
- trufor
- pytorch
---
# TruFor Phase-2 and Phase-3 Checkpoints
This repository stores phase-2 localization and phase-3 detection/confidence
checkpoints trained with the official
[TruFor](https://github.com/grip-unina/TruFor) PyTorch implementation. TruFor
detects and localizes manipulated regions in images using RGB and Noiseprint++
features.
## Training summary
- Architecture: TruFor localization network (`detconfcmx`, SegFormer-B2 backbone)
- Training datasets: IMD2020, CASIA 2.0 revised, and CocoGlide
- Training crop: 512 x 512
- Epochs: 30
- Optimizer: SGD
- Initial learning rate: 0.005
- Batch size: 1 per GPU
- Hardware: NVIDIA GeForce RTX 2080 Ti (11 GiB)
- Validation maximum crop: 1024 x 1024
Final recorded validation results:
- Loss: 0.657
- Best `avg_p-F1_smooth`: 0.5505
- Class IoU: `[0.90797067, 0.17650062]`
### Phase 3: detection network and confidence estimator
- Initialization: phase-2 `weights/best.pth.tar`
- Frozen modules: Noiseprint++, backbone, and localization head
- Trained modules: confidence head and detection head
- Training datasets: IMD2020, CASIA 2.0 revised, and CocoGlide
- Training crop: 512 x 512
- Epochs: 100
- Batch size: 4 per GPU
- Validation maximum crop: 1024 x 1024
- Final validation loss: 0.538
- Best `avg_det_bacc`: 0.5981
- Final class IoU: `[0.90785598, 0.08274118]`
## Files
- `weights/best.pth.tar`: best checkpoint selected by `avg_p-F1_smooth`
- `weights/checkpoint.pth.tar`: final epoch-30 resume checkpoint
- `weights/phase3/best.pth.tar`: best phase-3 detection/confidence checkpoint
- `weights/phase3/checkpoint.pth.tar`: final epoch-100 phase-3 resume checkpoint
- `config/trufor_ph2.yaml`: training configuration
- `config/trufor_ph3_gpu2.yaml`: phase-3 training configuration
- `logs/trufor_ph2_gpu1.log`: complete training log
- `logs/trufor_ph3_gpu2.log`: concise phase-3 training log
- `code/`: the locally patched training/device-placement files and launchers
- `SHA256SUMS`: checkpoint integrity hashes
## Loading
These are native TruFor/PyTorch checkpoints, not Transformers checkpoints.
Use them with the TruFor training/inference code. Use
`weights/phase3/best.pth.tar` for complete localization, confidence, and image
detection inference by passing its path through the project's
`TEST.MODEL_FILE` configuration option. Use the top-level
`weights/best.pth.tar` as phase-2 initialization when retraining phase 3.
## How to use
To use or modify this work locally, install Git LFS and run
`git clone https://huggingface.co/benjaik/trufor-ph2`. Use
`weights/phase3/best.pth.tar` for complete inference with the upstream TruFor
code by setting `TEST.MODEL_FILE` to its downloaded path. Use
`weights/best.pth.tar` to initialize another phase-3 run, and use the matching
`checkpoint.pth.tar` file when resuming training. The included configurations,
patched files, and training logs can be copied and adapted for a new dataset or
experiment, subject to the included TruFor and CMX license terms.
## Local compatibility changes
The accompanying files document changes needed on the training server:
- consistent CUDA placement for model, inputs, labels, losses, and resumed
optimizer state;
- corrected eight malformed CASIA list entries;
- validation crops limited to 1024 pixels to fit an 11 GiB GPU;
- a dedicated CUDA-10.2-compatible Conda environment.
## License and attribution
The upstream TruFor license permits informational and nonprofit use and imposes
additional restrictions. This repository does not relicense the original code
or weights. Review `LICENSE.txt`, `LICENSE_CMX.txt`, and the upstream repository
before use or redistribution.
TruFor paper: *TruFor: Leveraging All-Round Clues for Trustworthy Image Forgery
Detection and Localization*, CVPR 2023.