Exploring Multi-Modal Fusion for Image Manipulation Detection and
Localization
论文(arxiv)
post1post2
数据集
下载 train 数据集:
下载 test 数据:
创建Casiav1+数据集需要corel数据集。
测试集的数据列表分为操纵图像和真实图像,并存在于名为的文件中:
./data/IDT-<DATASET_NAME>-manip.txt ./data/IDT-<DATASET_NAME>-auth.txt
|
这是为了在评估本地化时易于使用,因为您只使用操纵的图像(真实图像的本地化F1始终为0!)。
为了便于使用和再现,训练的数据列表分为训练文件和val文件。我们使用Kwon等人在CAT-Net中提出的列车验证划分.
列车数据列表位于名为的文件中:
./data/CAT-Net_splits/train/<DATASET_NAME>.txt ./data/CAT-Net_splits/val/<DATASET_NAME>.txt
|
对于我们的实验,我们在训练数据集的验证分割上进行了验证,因此测试数据集在评估之前完全不可见。
数据文件夹结构
然后,您应该将数据集放在数据目录中,如下所示:
data/ ├── Casiav1 │ ├── Au │ ├── Gt │ └── Tp ├── Casiav2 │ ├── Au │ ├── mask │ └── tampered ├── CocoGlide │ ├── fake │ ├── mask │ └── real ├── Columbia │ ├── 4cam_auth │ └── 4cam_splc ├── compRAISE │ └── <all images here> ├── corel-1k │ ├── test_set │ └── training_set ├── COVER │ ├── Au │ ├── mask │ └── tampered ├── DSO-1 │ ├── images │ └── masks ├── FantasticReality │ ├── ColorFakeImages │ ├── ColorRealImages │ └── masks ├── IMD2020 │ ├── 1a1ogs │ ├── 1a3oag │ . │ . │ . │ └── z41 └── tampCOCO └── <all images here>
|
训练
准备
在培训之前,您需要按照说明此处下载经过预培训的网络并将它们放在/pretrained目录中,如下所示:
pretrained/ ├── segformer ├── noiseprint └── modal_extractor
|
实验设置
在训练之前,您需要创建一个实验文件,并将其放在“experiments”文件夹中。此yaml文件包含用于训练的参数。要使用我们的训练设置训练模型,您可以使用提供的ec_example.yaml文件。
但是,您可以按以下方式更改训练参数:
- 如果需要,您可以更改学习参数或进行更多时期的训练:
WORKERS: 16 ACCUMULATE_ITERS: 6 BATCH_SIZE: 4 WARMUP_EPOCHS: 2 EPOCHS: 100
|
LEARNING_RATE: 0.005 SGD_MOMENTUM: 0.9 WD: 0.0005 POLY_POWER: 0.9
|
DATASET: TRAIN: - 'data-list-1' - ... - 'data-list-N' VAL: - 'val-data-list-1' - ... - 'val-data-list-N'
|
Localization训练
可以通过以下方式运行示例培训:
您可以通过在/experiences目录中创建一个新的实验yaml文件来更改训练参数。检查点另存为:
ckpt/ └── <model_name> ├── best_val_loss.pth └── final.pth
|
model_name参数在实验yaml文件中设置为:
MODEL: NAME: <model_name>
|
Detection训练
要运行detection训练(第2阶段),需要在chekpoints文件夹中放置一个本地化检查点(由第1阶段训练生成)。
如果您想使用我们的本地化检查点之一,您可以按照说明此处下载它们.
第二阶段训练的实验文件应设置为检测:
MODEL: TRAIN_PHASE: 'detection'
|
然后,可以在我们的测试数据集上训练检测和评估模型,如下所示:
source data.sh exp='./experiments/ec_example_phase2.yaml' ckpt_loc='./ckpt/<path_to_localization_ckpt>' ckpt='./ckpt/<model_name>/best_val_loss.pth' $pint ec_train_phase2.py --ckpt $ckpt_loc --exp $exp
$pint test_detection.py --exp $exp --ckpt $ckpt --manip $columbia_manip --auth $columbia_auth $pint test_detection.py --exp $exp --ckpt $ckpt --manip $cover_manip --auth $cover_auth $pint test_detection.py --exp $exp --ckpt $ckpt --manip $dso1_manip --auth $dso1_auth $pint test_detection.py --exp $exp --ckpt $ckpt --manip $cocoglide_manip --auth $cocoglide_auth $pint test_detection.py --exp $exp --ckpt $ckpt --manip $casiav1_manip --auth $casiav1_auth
|
评估
您可以按照说明此处下载我们经过预训练的网络并将它们放在/ckpt目录中。然后,您可以使用以下方法评估模型以进行本地化:
以及改变相关参数:
source data.sh exp='./experiments/ec_example.yaml' ckpt='./ckpt/<model_name>/best_val_loss.pth'
$pint test_localization.py --exp $exp --ckpt $ckpt --manip $columbia_manip $pint test_localization.py --exp $exp --ckpt $ckpt --manip $cover_manip $pint test_localization.py --exp $exp --ckpt $ckpt --manip $dso1_manip $pint test_localization.py --exp $exp --ckpt $ckpt --manip $cocoglide_manip $pint test_localization.py --exp $exp --ckpt $ckpt --manip $casiav1_manip
|
以同样的方式,可以评估用于检测的模型:
source data.sh exp='./experiments/ec_example_phase2.yaml' ckpt='./ckpt/<model_name>/best_val_loss.pth'
$pint test_detection.py --exp $exp --ckpt $ckpt --manip $columbia_manip --auth $columbia_auth $pint test_detection.py --exp $exp --ckpt $ckpt --manip $cover_manip --auth $cover_auth $pint test_detection.py --exp $exp --ckpt $ckpt --manip $dso1_manip --auth $dso1_auth $pint test_detection.py --exp $exp --ckpt $ckpt --manip $cocoglide_manip --auth $cocoglide_auth $pint test_detection.py --exp $exp --ckpt $ckpt --manip $casiav1_manip --auth $casiav1_auth
|
鸣谢
这项工作得到了欧盟地平线2020研究和创新计划的支持,该计划的赠款协议为H2020-101021866
CRiTERIA。
感谢public repositories:
引用
如果您发现我们的方法在您的工作中有用,或者您使用了本回购中提供的一些材料,请引用以下介绍我们的方法和材料的出版物:
@inproceedings{triaridis2024exploring, title={Exploring Multi-Modal Fusion for Image Manipulation Detection and Localization}, author={Triaridis, Konstantinos and Mezaris, Vasileios}, year={2024}, month={Jan.-Feb.}, booktitle={Proc. 30th Int. Conf. on MultiMedia Modeling (MMM 2024)} }
|