该论文有github,链接:
MultiModal-DeepFake
rshaojimmy • Updated Oct 22, 2024
梳理模式:针对哪个领域或者方向的什么问题,目前有哪些挑战,有什么解决方案和方法,创新点是什么,能达到什么效果,还有什么待改进和值得研究的方面。这样逻辑比较清晰点。另外注意所查找文章的出处。建议按照参考文献的格式,注明文章来源。论文的问题背景、对应的数学问题,采用的模型,实验数据和结果介绍清楚一整套流程是怎么来做的写清楚数据的形式,以及数据的输入模型中数据与数学公式的联系模型的详细理解包括什么类型、输出是什么等,以及最后模型的评估指标以及评估方法。 1、用自己的话说说这篇论文干了什么? 2、论文笔记 数据准备 模型理解 训练策略与评估 实验结果 3、创新点 4、想法
零. ChatPaper的总结(来自chatwithpaper.org)
Basic Information:
- Title: Detecting and Grounding Multi-Modal Media Manipulation (多模态媒体伪造的检测与定位)
- Authors: Rui Shao, Tianxing Wu, Ziwei Liu
- Affiliation: Rui Shao - School of Computer Science and Technology, Harbin Institute of Technology (Shenzhen)
- Keywords: Multi-Modal Media Manipulation, DeepFake Detection, Text Fake News Detection, Misinformation Detection
论文简要 :
- 本研究提出了一个新的多模态媒体伪造检测与定位的问题,旨在同时检测图像和文本模态中的伪造,并定位伪造的内容(图像边界框和文本标记)。为此,研究人员构建了第一个大规模的多模态媒体伪造数据集,并提出了一种名为HAMMER(HierArchical Multimodal Manipulation rEasoning tRansformer)的模型,通过多模态编码器之间的对比学习和多模态聚合器的交叉注意力机制,实现了对伪造的细粒度检测和定位。实验结果表明,该模型在多模态媒体操纵检测与定位任务上具有优越性能。
背景信息:
- 论文背景: 随着深度生成模型的进步,虚假的媒体内容在网络上广泛传播,包括视觉和文本形式的虚假信息。虚假媒体对社会造成了严重影响,因此需要开发有效的方法来检测和定位这些虚假内容。
- 过去方案: 过去的方法主要针对单模态的操纵进行二分类的检测,如深度伪造图像的检测和文本虚假新闻的检测。然而,这些方法无法处理多模态媒体伪造的检测与定位问题。
- 论文的Motivation: 鉴于现有方法无法满足多模态媒体伪造的检测与定位需求,本研究提出了一个新的研究问题,旨在同时检测图像和文本模态中的伪造,并定位伪造的内容。为了解决这一问题,研究人员构建了一个大规模的数据集,并提出了一种新的模型HAMMER,通过对比学习和交叉注意力机制实现了对多模态媒体伪造的细粒度检测和定位。这项研究的目标是提供更全面和深入的解决方案,以应对日益严重的虚假媒体问题。
方法:
- a. 理论背景:
- 本文介绍了一个名为Detecting and Grounding Multi-Modal Media Manipulation (DGM4)的新的研究问题。DGM4的目标是检测和定位人类中心新闻中图像-文本对的操纵。为了支持这个研究问题,作者构建了第一个大规模的DGM4数据集。该数据集包含了通过各种方法进行伪造的图像-文本对,包括人脸交换、人脸属性操纵、文本交换和文本属性操纵。数据集提供了丰富的注释,用于检测和定位各种伪造,包括二进制标签、细粒度操纵类型、伪造图像边界框和伪造文本标记。
- b. 技术路线:
- 为了解决DGM4问题,作者提出了一种新颖的HierArchical Multi-modal Manipulation rEasoning tRansformer (HAMMER)方法。HAMMER通过两个单模态编码器之间的操纵感知对比学习来对齐图像和文本嵌入,作为浅层操纵推理。它还通过多模态聚合器的模态感知交叉注意力来聚合多模态嵌入,作为深层操纵推理。基于交互的多模态嵌入,分层地集成了专门的操纵检测和定位头部,用于检测二进制类别、细粒度操纵类型以及定位操纵图像边界框和文本标记。
结果:
- a. 详细的实验设置:
- 作者还建立了一个全面的基准来评估HAMMER的性能。该基准包括严格的评估协议和指标。进行了大量的定量和定性实验,以证明HAMMER在检测和定位多模态媒体操纵方面的优越性。
- b. 详细的实验结果:
- LPAA(Local Positional Attention Alignment)的有效性与使用[CLS]标记进行操纵边界框定位的效果进行了比较。结果显示,LPAA在所有指标上优于[CLS]标记,证明了其有效性。根据多标签分类器的输出,绘制了每种操纵类型的分类性能。发现文本操纵检测比图像模态更困难,其中TA(Text Addition)是最困难的情况。提供了伪造检测和定位的可视化结果,显示了准确的伪造边界框定位和正确的伪造类型检测。使用Grad-CAM可视化了注意力图,证明模型能够捕捉图像和文本之间的语义不一致,以解决DGM4(检测和定位多模态伪造)问题。
一. 论文简介
摘要
本文提出了多模态媒体操作检测和定位问题,并介绍了一种用于检测多模态假媒体的新型数据集。文中提出了一种新的HierArchical Multi-modal Manipulation rEasoning tRansformer(HAMMER)模型,它通过两个单模态编码器之间的操作感知对比学习来对齐图像和文本嵌入,并通过多模态聚合器的模态感知交叉注意力来汇总多模态嵌入来执行深度操作推理。文中还通过广泛的实验和基准测试对所提出的模型进行了深入分析,证明了HAMMER的优越性。通过推理图像和文本之间的语义对齐,可以发现操纵痕迹并提供多模态操作检测和定位的线索。技术上,HAMMER充分利用两种模态的语义相关性,并使用操作感知对比学习来强调由操作引起的语义不一致性,同时使用多模态聚合器来汇总深层信息以进行操纵分析和推理。
数据集介绍:
提出了DGM 4 ,一个用于研究机器生成的多模态媒体操作的大规模数据集。考虑到其巨大的公众影响力,该数据集特别关注以人为中心的新闻。基于 VisualNews 数据集开发数据集,共形成 230k 个新闻样本,包括 77,426 个原始图像文本对和 152,574 个操纵对。操纵的对包含:
- 43,546 Text Swap Manipulations (TS) (using flair and Sentence-BERT)
- 18,588 Text Attribute Manipulations (TA) (based on B-GST)
其中 1/3 的处理图像和 1/2 的处理文本组合在一起形成 32,693 个混合操作对。
数据集中的每个图像-文本样本都提供了丰富的注释。例如,具有混合操作类型 (FA + TA) 的虚假媒体示例的注释在 json 文件中可能如下所示:
其中
id
是 VisualNews 存储库中的原始 news-id,image
是操纵图像的相对路径,text
是操纵文本的标题,fake_cls
指示操作类型,fake_image_box
是操纵的 bbox,fake_text_pos
是 text
字符串中操纵token的索引(在本例中, 对应于“celebrate”、“event”和“won”), mtcnn_boxes
是 MTCNN 人脸检测器返回的 bbox。请注意,在训练和推理中都没有使用 mtcnn_boxes
,只是保留了这个注释以备将来使用。二. 复现指南
参照github主页的README即可,每句话都很重要
MultiModal-DeepFake
rshaojimmy • Updated Oct 22, 2024
环境准备
数据准备
下载数据集时若一下子下完非常慢,可尝试分开下载。
文件组织参照github的readme即可,注意文件需要按照作者给出的架构组织,下载的ALBEF_4M.pth放在指定位置:
由于实验室存放数据集一般都会有指定的文件夹,不直接放在用户目录下,故datasets可以不用跟code同级,我的数据集放在如下位置:
代码修改
由于换了数据集路径,需要改一下代码中各个用到的路径;实验室服务器是2张 3090,与作者的环境不太一样,故需要修改GPU数量,指定使用的GPU
configs修改:
- configs/test.yaml中修改数据集路径:
- configs/train.yaml中修改数据集路径:
dataset修改:
- 修改dataset.py中的根目录
训练和测试文件修改:
- train.py中指定GPU:
os.environ['CUDA_VISIBLE_DEVICES']='0,1’
- train.sh中修改
NUM_GPU=2
- test.sh中修改
NUM_GPU=1
结果
每次运行都会有一个日志文件存储在results文件夹下,results_all.txt文件内容如下:
对比作者给出的结果图,可以发现还是有一点差距
三、代码解读
train.py中:
setlogger
函数:
- 该函数设置了一个带有两个处理器:
FileHandler
和StreamHandler
的日志记录器。日志记录器被设置为 INFO 级别。此函数还向日志记录器实例添加了一个名为epochInfo
的方法,该方法在训练机器学习模型期间记录一个周期的信息。epochInfo
方法记录了集合(训练或测试)、周期索引、损失和准确性。
text_input_adjust
函数:
- 移除
input_ids
中的最后一个元素(可能是特殊的分隔符 SEP),并对其进行填充,使所有input_ids
的长度都等于最长的input_ids
的长度。
- 对
attention_mask
做了和input_ids
相同的处理。
- 对
fake_word_pos
进行处理,将其转换为fake_token_pos
。这个过程中,首先找到fake_word_pos
中为 1 的位置,然后根据这些位置找到对应的子词位置,最后将这些子词位置添加到fake_token_pos
中。
训练函数train
:
- 设置模型为训练模式。
- 创建一个
MetricLogger
对象,用于记录学习率和各种损失的值。
- 对数据加载器中的每个批次进行迭代,对每个批次的数据进行以下处理:
- 调整学习率(如果使用的是余弦退火调度器)。
- 将图像数据移动到指定的设备。
- 使用分词器对文本数据进行处理,并调整处理后的数据。
- 计算各种损失。
- 计算总损失,进行反向传播,并更新模型的参数。
- 更新
MetricLogger
中的值。 - 如果在预热阶段,每隔一定步数就调整学习率(如果没有使用余弦退火调度器)。
- 如果启用了日志记录,将学习率和各种损失的值写入 TensorBoard。
- 在所有进程之间同步
MetricLogger
的状态。
- 如果启用了日志记录,打印平均统计信息。
评估函数evaluation
:
- 设置模型为评估模式。
- 创建一个
MetricLogger
对象,用于记录各种指标的值。
- 对数据加载器中的每个批次进行迭代,对每个批次的数据进行以下处理:
- 将图像数据移动到指定的设备。
- 使用分词器对文本数据进行处理,并调整处理后的数据。
- 使用模型进行预测,并计算各种指标的值。
- 计算各种指标的平均值。
main_worker
函数:
这段代码定义了一个名为
main_worker
的函数,该函数用于训练和评估 HAMMER 模型。以下是该函数的主要步骤:- 初始化分布式环境。
- 创建日志目录和日志文件,然后将配置信息保存到 YAML 文件中。
- 创建一个
SummaryWriter
对象,用于将数据写入 TensorBoard。
- 设置设备(CPU 或 GPU)和随机种子,以确保结果的可重复性。
- 创建训练和验证数据集和数据加载器。
- 创建模型、优化器和学习率调度器。
- 如果提供了检查点文件,那么从检查点文件中加载模型、优化器和学习率调度器的状态。
- 如果使用了分布式训练,那么将模型包装在
DistributedDataParallel
中。
- 进行训练和评估,然后将结果写入日志文件和 TensorBoard。
- 如果当前的评估结果优于之前的最佳结果,那么保存当前的模型状态。
- 在每个训练周期结束后,更新学习率。
- 在所有训练周期结束后,保存最后的模型状态,并记录总的训练时间。