前言
《ManTra-Net: Manipulation Tracing Network For Detection And Localization of Image Forgeries With Anomalous Features》 是sponsored by the Defense Advanced Research Projects Agency under agreement num- ber FA8750-16-2-0204 一作是中国人,但是在为美国干事情,这让我想起了一个可怕的数字:88%的留美AI领域学者选择留在美国建设美利坚 只能说:道阻且长,任重道远
首先先来评价一下这篇文章:这是一篇少有的将问题分析的透彻、清晰、详细的文章,他们的主页其中,受人鉴别过程启发,设计了一个相对有理有据的算法,说的头头是道,但是效果上面欠点火候,Loss 和Trace Feature 的提取 欠点火候。
Abstract
本文提出了一个不需要额外的预处理和后处理的篡改检测网络ManTra-Net。此网络是一个全卷积网络,可以处理任意尺寸的图像和多种篡改类型。主要的贡献在于用一个自监督学习的方式从385篡改类型中学习特征。并且将篡改定位问题当做一个局部异常点检测问题来解决。使用Z-score特征表示局部异常,使用long short-term memory solution进行评估。
Motivation
矛和盾的问题:仅仅在医疗学领域,3.8%的论文都是存在疑问的,而且篡改手段要远远多于检测篡改的方法,换句话说矛有千万种,盾很少,矛盾不平衡,迟早会出现问题。
原来的研究关注的的几种篡改的类型(一般是10种以下),但是正是情况缺远比这复杂,在我看来也应该思考原来的评价指标(篡改检测真正发挥作用是在人也难以辨别的情况下),作者针对这个痛点,转换了问题的思路:将篡改检测问题分为了两个小问题:
- 篡改边缘检测
- 异常区域检测
由此,也就对应下面模型的两个部分:
- Image Manipulation Trace Feature Extractor
- Local Anomaly Detection Network
对于第一部分的设计采用的是实验说话,进行了大量的实验选择了backbone
对于第二部分的设计采用的是借鉴人鉴别的方式:首先能找到能够代表未篡改图的特征,然后求篡改部分与未篡改图的特征之差,当然,具体的实现要比这复杂的多,我们在后边详细介绍
Related Work
下面一张图很好的总结了前人的研究,我们重点关注两个东西:
- Target Forgery 代表网络的能力
- Clue/Feature 以何来鉴别
可以发现,作者的网络表达能力是最强的,所谓表达能力是能够检测和定位出300多种篡改类型,而强的来源是因为他把问题转化为异常区域检测的问题。(这部分有点含糊,暂且这样理解)
用作者的原话说:
Model
下图就是整个网络框架:
Image Manipultaion Trace Feature Extractor:
- 输入RGB-Image
- 三种类型的卷积核卷积,然后进行特征堆叠
- 然后是一个全卷积
Local Anomaly Detecion Network:
这一块分为三部分
- Aaptation:首先将前一步的特征对进行一些处理,使其能够更好的为后面服务 (将manipulation-trace feature转换为适用于anomaly detection task)
- Anomalous Feature Extraction:这一步是关键,下面会详细介绍
- Decision:整体考虑异常特征然后判断一个像素点是否forged
Local Anomaly Detection Network
给定一张图片,一个人如何判断这张图片是否经过了篡改?每个人的回答都不一样,但可能是先识别出一张图像的主要特征,然后与主要特征不一致的就是异常的。
在论文中,作者按照这样的思路,讨论了什么是主要特征、如何计算,如何量化局部特征和主要特征之间的差异。
作者将所有像素点的平均特征做为主要特征:相当于找了一个参照物(reference feature)
编码了每一个局部特征和reference之间的差距,但是这样也存在一个致命的问题:reference不准确的问题如何一个图片包含了两种不相关的篡改R1 R2,background用B表示,就有可能出现这个问题,具体的情况请看下面的英文解释。
针对这个问题的解决方法是:
One quick remedy is to compute the reference feature from a local but big enough window
上面的整个分析过程就是所做的事情。@后面内容代表不同的窗口尺寸。
在这个地方作者有个思考:很多人的算法在这里就直接堆叠处理,作为认为这不符合人类的直觉,我们在解决一个问题的时候应该是有易到难,由远及近(Look closer to see better就有这个味道) My Perspective:直觉来看,将不同的信息混合在一起是不是会增加问题的难度?,有没有更好的解决方法
所以作者使用LSTM和TimeConcat来达到这一目的,LSTM能够利用时间序列信息,换言之,不同的特征起到不同的作用,来达到前面所说的目的。
对于Loss,使用的是普通的交叉熵Loss
Image Manipulation-Trace Feature Extractor
对于First Block 这一部分的选择可以说是全靠实验:但实验做的充分也是值得肯定的。
First Block三种类型的卷积核由实验得出(由于篇实验较多,次要内容就不贴出来了)
下图是Middle Blocks的选择,值得注意的是这是一个全卷积网络(全卷积网络更加适合诸如Segmentation等此类任务全卷积网络),而且对输入图片的size没有要求,也就意味这不需要对图片进行resize,这对篡改检测任务或许是个好处。实验得出VGG优于其他几位,所以选用vgg
Experiential
之前有很多博客说作者的效果不好,其实他们忽略了一件事情:training%
数据集
Dresden Image Database
Kaggle Camera Model Identificatio 链接
自己合成数据集
PhotoShop-battle dataset 这是很真实的假数据download