CVPR2020论文解读:CNN合成的图片鉴别
CVPR2020论文解读:CNN合成的图片鉴别
《CNN-generated images are surprisingly easy to spot... for now》


论文链接:https://arxiv.org/abs/1912.11035
代码链接:https://peterwang512.github.io/CNNDetection/
该文章被CVPR2020录用,Arxiv公开于2019年12月,作者来自 UC Berkeley 和 Adobe Research。
CNN 生成的图像与真实图像很难分辨吗?来自 Adobe 和加州伯克利的研究者发现,仅仅在一种 CNN 生成的图像上进行训练的分类器,也可以检测许多其他模型生成的结果。或许,GAN 和 Deepfake 在「瞒天过海」上也不是万能的。
近来,诸如生成对抗网络(GAN)的深度图像生成技术快速发展,引发了公众的广泛关注和兴趣,但这也使人们担心,会逐渐走入一个无法分辨图像真实与否的世界。
这种担忧尤其体现在一些特定的图像操纵技术上,例如用来进行面部风格替换的「Deepfake」,以及逼真的人像生成。其实这些方法仅仅是一种广泛应用技术中的两个实例:基于卷积神经网络(CNN)的图像生成。
《CNN-generated images are surprisingly easy to spot... for now》提出,即使是在一种 CNN 生成的图像所训练的分类器,也能够跨数据集、网络架构和训练任务,展现出惊人的泛化能力。这篇论文目前已被 CVPR 2020 接收,代码和模型也已公布。
这篇论文主要探索如何利用单一的GAN模型来鉴别其他各种GAN生成的图像。无论各种GAN生成的图像是何种类型,使用何种网络结构,合成的假图都用相同的缺陷。作者首先利用11种GAN模型来构造一个大规模的合成图像鉴别数据库,ForenSynths Datsets。之后仅仅利用单一的ProGAN模型来训练,就能够在ForenSynths上表现出良好的泛化性能,甚至可以打败新出的StyleGAN2和DeepFake。通过实验表明数据增强作为后处理方法,以及训练数据的多样性是成功的关键,尤其是数据增强使得训练一个鉴别器就有良好的泛化能力和鲁棒性。这篇论文收录在CVPR 2020,是反造假技术再进一步的标志。造假和反造假技术一直在共同进步。
在这项工作中,研究者希望找到一种用于检测 CNN 生成图像的通用图像伪造检测方法。检测图像是否由某种特定技术生成是相对简单的,只需在由真实图像和该技术生成的图像组成的数据集上训练一个分类器即可。
但现有的很多方法的检测效果很可能会与图像生成训练中使用的数据集(如人脸数据集)紧密相关,并且由于数据集偏差的存在,一些方法在新数据(例如汽车)测试时可能泛化性较差。更糟糕的是,随着图像生成方法的发展,或是用于训练的技术被淘汰,这种基于特定生成技术的检测器可能会很快失效。
所以 CNN 生成的图像是否包含共同的伪造痕迹呢?例如某种可检测的 CNN 特征,这样就可以将分类器推广到整个生成方法族,而不只是针对单个生成方法。一般来说,泛化性确实一直是图像伪造检测领域的难题。例如,最近的一些工作 [48,13,41] 观察表明,对某一种 GAN 架构所生成图像进行训练的分类器在其他架构上进行测试时性能较差,并且在许多情况下,仅仅训练数据集的改变(而非架构或任务)就会导致泛化失败 [48]。这是有道理的,因为图像生成方法千差万别,它们使用的是不同的数据集、网络架构、损失函数和图像预处理方式。

但研究者发现,与当前人们的理解相反,为检测 CNN 生成的图像所训练的分类器能够跨数据集、网络架构和训练任务,展现出惊人的泛化能力。在本文中,研究者遵循惯例并通过简单的方式训练分类器,使用单个 CNN 模型(使用 ProGAN,一种高性能的非条件式 GAN 模型)生成大量伪造图像,并训练一个二分类器来检测伪造图像,将模型使用的真实训练图像作为负例。
此外,本文还提出了一个用于检测 CNN 生成图像的新数据集和评价指标,并通过实验分析了影响跨模型泛化性的因素。
基于 CNN 生成模型的数据集
研究者创建了一个 CNN 生成图像的新数据集「ForenSynths」,该数据集由 11 种模型生成的图像组成,从非条件式的图像生成方法(如 StyleGAN)到超分辨率方法,以及 deepfake。每个模型都在适合其特定任务的不同图像数据集上进行训练。研究者还继续在论文撰写后发布的模型上评估检测器,发现它可以在最新的非条件式 GAN——StyleGAN2 实现开箱即用。
实验:检测 CNN 生成的图像
鉴于数据集中的非条件式 GAN 模型可以生成任意数量的图像,研究者选择了一种特定的模型 ProGAN 来训练检测器。使用单一模型进行训练,这个方法与现实世界中的检测问题极为相似,即训练时并不清楚需要泛化模型的多样性和数量。
接着,研究者创建了一个仅由 ProGAN 生成的图像和真实图像组成的大规模数据集。使用 20 个模型,每个模型在不同的 LSUN 物体类别上进行训练,并生成 36K 的训练图像和 200 张验证图像,每个模型所用的真实和伪造的图像数量是相等的。一共有 720K 图像用于训练、4K 图像用于验证。
这一实验的主要思想是在这个 ProGAN 数据集上训练一个判断「真实或伪造」的分类器,并评估该模型对其他 CNN 合成图像的泛化效果。在分类器的选择上,使用了经过 ImageNet 预训练的 ResNet-50,并在二分类的设定下进行训练。
亮点:该工作意图探究深度生成取证泛化能力可能性。从训练数据的多样性、数据增强技术做探讨,说明了一定强先验条件下,泛化能力是可能的(AP衡量)。该文章做了偏基础的探究性实验工作。
缺陷:
1. 这种泛化效果的先验假设是,测试的样本都是同一种伪造技术,这是不满足实际应用环境的。
2. 对衡量指标AP的阈值threshold,和准确率Acc.未做讨论,未说明是否会存在较大的数据集之间的bias偏差。
思考:
1. 训练用的是ProGAN,内容是场景,非人脸
2. SAN 超分辨率很难检测,说明其有较强的篡改噪声能力,是否能加以利用?
3. Deepfake的泛化效果较差,因为经过强手工设计,并非ProGAN类似全局CNN图片生成。
4. 对Photoshop类似的算法无效。
1.
Introduction
通用的检测器、用11种CNN生成技术的数据集、预处理和后处理、数据增强。
“针对生成技术的共有特征”为出发点,公布了以11种生成方法生成的的测试集“ForenSynths”,包含GAN生成、超分辨率、手工设计的Deepfakes。以ProGAN用作训练,采用特定数据增强的前/后处理方法,能带来泛化能力和鲁棒性。
2. Related work
分三部分:检测CNN生成的技术、图像取证、CNN生成的共有特征。
CNN生成的共有特征:因为CNN的结构相似,导致生成的结果存在一种相似模式,举例为上采样和下采样。
3. A dataset of CNN-based generation models
训练尺寸:224x224的随机裁剪(数据集尺寸为256x256)
4. Detecting CNN-Synthesized images
4.1 Training classifiers
用ProGAN训练,探究泛化能力的上界;
采用ProGAN训练的原因:生成图像分辨率高、网络结构简单
ProGAN训练集用了20种LSUN类别:相当于20种生成的类型,airplane、cat...
每类别36K训练图片,20种一共720k训练图片
网络结构:预训练的ResNet-50+二分类
数据增强:随机翻转+224x224随机裁剪;同时Blur和JPEG压缩划分了几个等级。
衡量指标:AP,对不同数据集单独衡量,而非混合在一起(存在潜在数据集偏差问题,未做探究)
4.2 Effect of data augmentation
泛化性(训练数据增强,测试不处理)

鲁棒性(训练、测试同时处理)

4.3 Comparison to other methods
面对整张图片全由CNN生成的图片,效果较好;面对SAN和Deepfake,泛化表现较差。
4.4 New CNN models
对新出的StyleGAN2同样有效。

4.5 Other evaluation metrics

将Acc拿出来,比较真实应用场景下,有两张测试环境图片,估计阈值的情况。
Oracle表示准确率的上界,Two-shot表示拿测试集的两张图片“校准”后的准确率。注意这里的校准的含义是阈值的选取,而并非微调。
5. 测试结论
CNN生成方法当前存在能检测的通用“水印”,但不代表未来也可行,因为生成技术会持续进步,甚至补齐此缺陷;
真实场景(In
the wild)下,认真的攻击者会选择生成效果优良的结果,放在网络上,检测难度更大;
对Photoshop类似篡改算法测试来看,face-aware liquify dataset上,作者的分类器表现如随机选择一般;
测试结果
先是在测试集上,肉眼观察分类器判定的效果。作者把质量分成五个等级,上图从左至右分别真实性预测变差。
后续做了频谱分析,发现CNN生成的方法,在傅里叶变换频谱上,可能会呈现周期性的特性。(然而SAN和Deepfake比较正常,可能因为其经过手工设计,并非完全CNN生成。)

两个方面,ProGAN的不同类别、不同生成技术(换BigGAN做训练)
LSUN的20个类别,分别对应不同生成物品/物种种类,比如airplane、cat...
对比400k个图片BigGAN的训练结果:也有一定泛化能力,但效果没ProGAN好。
表 2:跨生成器的泛化结果。图中展示了 Zhang 等人提供的基线和本文模型在不同分类器上的平均准确度(AP),共 11 个生成器参与测试。符号 X 和 † 分别表示在训练时分别以 50%和 10%的概率应用数据增强。随机表现是 50%,可能的最佳表现是 100%。在测试用的生成器被用于训练时,结果显示为灰色(因为它们不是在测试泛化性)。黑色的值表示跨生成器的泛化性结果。其中,最高值以黑色加粗显示。通过减少数据扩充,研究者展示了针对 ProGAN 中较少类的消融实验结果。同时通过平均所有数据集的 AP 分数来得到 mean AP。

CVPR2020论文解读:CNN合成的图片鉴别的更多相关文章
- CVPR2020论文解读:手绘草图卷积网络语义分割
CVPR2020论文解读:手绘草图卷积网络语义分割 Sketch GCN: Semantic Sketch Segmentation with Graph Convolutional Networks ...
- CVPR2020论文解读:3D Object Detection三维目标检测
CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...
- CVPR2020 论文解读:少点目标检测
CVPR2020 论文解读:具有注意RPN和多关系检测器的少点目标检测 Few-Shot Object Detection with Attention-RPN and Multi-Relation ...
- CVPR2020论文解读:三维语义分割3D Semantic Segmentation
CVPR2020论文解读:三维语义分割3D Semantic Segmentation xMUDA: Cross-Modal Unsupervised Domain Adaptation for 3 ...
- 图像分类:CVPR2020论文解读
图像分类:CVPR2020论文解读 Towards Robust Image Classification Using Sequential Attention Models 论文链接:https:// ...
- CVPR2020论文解读:OCR场景文本识别
CVPR2020论文解读:OCR场景文本识别 ABCNet: Real-time Scene Text Spotting with Adaptive Bezier-Curve Network∗ 论文 ...
- [论文解读]CNN网络可视化——Visualizing and Understanding Convolutional Networks
概述 虽然CNN深度卷积网络在图像识别等领域取得的效果显著,但是目前为止人们对于CNN为什么能取得如此好的效果却无法解释,也无法提出有效的网络提升策略.利用本文的反卷积可视化方法,作者发现了AlexN ...
- CVPR2020行人重识别算法论文解读
CVPR2020行人重识别算法论文解读 Cross-modalityPersonre-identificationwithShared-SpecificFeatureTransfer 具有特定共享特征变换 ...
- SCNN车道线检测--(SCNN)Spatial As Deep: Spatial CNN for Traffic Scene Understanding(论文解读)
Spatial As Deep: Spatial CNN for Traffic Scene Understanding 收录:AAAI2018 (AAAI Conference on Artific ...
随机推荐
- 利用Xposed Hook打印Java函数调用堆栈信息的几种方法
本文博客链接:http://blog.csdn.net/QQ1084283172/article/details/79378374 在进行Android逆向分析的时候,经常需要进行动态调试栈回溯,查看 ...
- UVA11520填充正方形
题意: 给你一个n*n的矩阵,让你往里面添加大写字母,矩阵有的字母已经给填好了,然后要求是每个格子都不能与他相邻的格子的大写字母相同,如果有多个答案,输出从上到下,从左到右所连接的成的那个n ...
- src/main/resorces applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 三、多线程之Thread与Runnable的区别
Thread与Runnable的区别(用三个窗口同时出售10张车票为例子) 运行代码 运行结果 分析 System.out.println("开始测试多线程");class MyT ...
- 记一次 .NET 某旅行社Web站 CPU爆高分析
一:背景 1. 讲故事 前几天有位朋友wx求助,它的程序内存经常飙升,cpu 偶尔飙升,没找到原因,希望帮忙看一下. 可惜发过来的 dump 只有区区2G,能在这里面找到内存泄漏那真有两把刷子..., ...
- Servlet-授课
1 Servlet 1.1 Servlet概述 Servlet是SUN公司提供的一套规范,名称就叫Servlet规范,它也是JavaEE规范之一.我们可以像学习Java基础一样,通过API来学习Ser ...
- stm32开发笔记(三):stm32系列的GPIO基本功能之输出驱动LED灯、输入按键KEY以及Demo
前言 stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的. 本章讲解使用GPIO引脚功能驱动LED灯和接收Key按钮输入. STM ...
- [Python] execl读写
相关库 读:xlrd 写:xlwt 案例 要求: 将图1中的数据导以图2的形式写入另一个文件中 第一列索引关系:{1:K1-B1,2:K1-B2} ...(18列) 思路: 按行读取数据,根据索引关系 ...
- 在Linux中通过Top运行进程查找最高内存和CPU使用率
按内存使用情况查找前15个进程,在批处理模式下为"top" 使用top命令查看有关当前状态,系统使用情况的更详细信息:正常运行时间,负载平均值和进程总数. 分类:Linux命令操作 ...
- 从CentOS7默认安装的/home中转移空间到根目录/ - LVM操作简明教程
一.基础概念 Cent0S 7默认启用LVM2(Logical Volume Manager),把机器的一块硬盘分为两个区sda1和sda2,其中分区sda1作为系统盘/boot挂载,少量空间:sda ...