AI造出的假图片恐怕很难再骗过AI了。

连英伟达本月刚上线的StyleGAN2也被攻破了。即使是人眼都分辨看不出来假脸图片,还是可以被AI正确鉴别。

最新研究发现,只要用让AI学会鉴别某一只GAN生成的假图片,它就掌握了鉴别各种假图的能力。

不论是GAN生成的,Deepfake的,超分辨率的,还是怎样得来的,只要是AI合成图片,都可以拿一个通用的模型检测出来。

尽管各种CNN的原理架构完全不同,但是并不影响检测器发现造假的通病。

只要做好适当的预处理和后处理,以及适当的数据扩增,便可以鉴定图片是真是假,不论训练集里有没有那只AI的作品。

这就是Adobe和UC伯克利的科学家们发表的新成果。

有网友表示,如果他们把这项研究用来参加Kaggle的假脸识别大赛,那么将有可能获得最高50万美元奖金。

然而他们并没有,而是先在ArXiv公布了预印本,并且还被CVPR 2020收录。

最近,他们甚至将论文代码在GitHub上开源,还提供了训练后的权重供读者下载。

造出7万多张假图

要考验AI鉴别假货的能力,论文的第一作者、来自伯克利的学生Wang Sheng-Yu用11种模型生成了不同的图片,涵盖了各种CNN架构、数据集和损失。

所有这些模型都具有上采样卷积结构,通过一系列卷积运算和放大操作来生成图像,这是CNN生成图像最常见的设计。

有ProGAN、StyleGAN、BigGAN、BigGAN、GauGAN等等,这些GAN各有特色。

ProGAN和StyleGAN为每个类别训练不同的网络;StyleGAN将较大的像素噪声注入模型,引入高频细节;BigGAN具有整体式的类条件结构;进行图像转换的GauGAN、CycleGAN、StarGAN。

除了GAN以外,还有其他处理图片的神经网络:

  • 直接优化感知损失 ,无需对抗训练的级联细化网络(CRN);
  • 条件图像转换模型隐式最大似然估计(IMLE);
  • 改善低光照曝光不足的SITD模型;
  • 超分辨率模型,即二阶注意力网络(SAN);
  • 用于换脸的的开源DeepFake工具faceswap。

主流图片处理CNN模型应有尽有。他们总共造出了7万多张“假图”。

虽然生成这些图片所用的算法大相径庭、风格迥异,但是总有会有一些固有缺陷,这里面既有CNN本身的问题,也有GAN的局限性。

这是因为常见的CNN生成的内容降低了图片的表征能力,而这些工作大部分集中在网络执行上采样和下采样的方式上。下采样是将图像压缩,上采样是将图像插值到更大的分辨率上。

之前,Azulay和Weiss等人的研究表明,表明卷积网络忽略了经典的采样定理,而跨步卷积(strided convolutions)操作减少了平移不变性,导致很小的偏移也会造成输出的极大波动。

另外,朱俊彦团队发表在ICCV 2019上的论文表明,GAN的生成能力有限,并分析了预训练GAN无法生成的图像结构。

今年7月,哥伦比亚大学的Zhang Xu等人进一步发现了GAN的“通病”,常见GAN中包含的上采样组件会引起伪像。

他们从理论上证明了,这些伪像在频域中表现为频谱的复制,这在频谱图上表现十分明显。

比如同样是一张马的图片,真实照片的信号主要集中在中心区域,而GAN生成的图像,频谱图上出现了四个小点。

因此他们提出了一种基于频谱而不是像素的分类器模型,在分辨假图像上达到了最先进的性能。

而Wang同学发现,不仅是GAN,其他的CNN在生成图像时,也会在频谱图中观察到周期性的图案。

训练AI辨别真伪

刚才生成的数据集,包含了11个模型生成的假图。

不过,真假分类器并不是用这个大合集来训练的。

真正的训练集里,只有英伟达ProGAN这一个模型的作品,这是关键。

 ProGAN过往作品展

团队说,只选一个模型的作品用来训练,是因为这样的做法更能适应现实任务:

现实世界里,数据多样性永远是未知的,你不知道自己训练出的AI需要泛化到怎样的数据上。所以,干脆就用一种模型生成的图像来训练,专注于帮AI提升泛化能力。

而其他模型生成的作品,都是测试泛化能力用的。

(如果用很多模型的假图来训练,泛化任务就变得简单了,很难观察出泛化能力有多强。)

具体说来,真假分类器是个基于ResNet-50的网络,先在ImageNet上做了预训练,然后用ProGAN的作品做二分类训练。

 ProGAN原理

不过,训练集不是一只ProGAN的作品。团队用了20只ProGAN,每只负责生成LSUN数据集里的一个类别。一只ProGAN得到3.6万张训练用图,200张验证用图,一半是生成的假图,一半是真图。

把20只ProGAN的成果加在一起,训练集有72万张,验证集有4000张

为了把单一数据集的训练成果,推广到其他的数据集上,团队用了自己的方法:

最重要的就是数据扩增。先把所有图像左右翻转,然后用高斯模糊,JPEG压缩,以及模糊+JPEG这些手段来处理图像。

扩增手段并不特别,重点是让数据扩增以后处理的形式出现。团队说,这种做法带来了惊人的泛化效果 (详见后文) 。

训练好了就来看看成果吧。

明辨真伪

研究人员主要是用平均精度 (Average Precision) 这个指标,来衡量分类器的表现。

在多个不同的CNN模型生成的图片集里,ProGAN训练出的分类器都得到了不错的泛化:

几乎所有测试集,AP分值都在90以上。只在StyleGAN的分值略低,是88.2。

不论是GAN,还是不用对抗训练、只优化感知损失的模型、还是超分辨率模型,还是Deepfake的作品,全部能够泛化。

团队还分别测试了不同因素对泛化能力产生的影响:

一是,数据扩增对泛化能力有所提升。比如,StyleGAN从96.3提升到99.6,BigGAN从72.2提升到88.2,GauGAN从67.0提升到98.1等等。更直观的表格如下,左边是没有扩增:

另外,数据扩增也让分类器更加鲁棒了。

二是,数据多样性也对泛化能力有提升。还记得当时ProGAN生成了LSUN数据集里20个类别的图片吧。大体上看,用越多类别的图像来训练,得到的成绩就越好:

然后,再来试想一下,这时候如果突然有个新模型被开发出来,AI也能适应么?

这里,团队用了刚出炉没多久的英伟达StyleGAN2,发现分类器依然可以良好地泛化:

最后,还有一个问题。

AI识别假图,和人类用肉眼判断的机制一样么?

团队用了一个“Fakeness (假度) ”分值,来表示AI眼里一张图有多假。AI觉得越假,分值越高。

实验结果是,在大部分数据集里,AI眼里的假度,和人类眼里的假度,并没有明显的相关性。

只在BigGAN和StarGAN两个数据集上,假度分值越高时,能看到越明显的瑕疵。

更多数据集上没有这样的表现,说明分类器很有可能更倾向于学习低层的缺陷,而肉眼看到的瑕疵可能更偏向于高层

安装使用

说完了论文,下面我们就可以去GitHub上体验一下这个模型的厉害了。

论文源代码基于PyTorch框架,需要安装NVIDIA GPU才能运行,因为项目依赖于CUDA。

首先将项目克隆到本地,安装依赖项。

pip install -r requirements.txt

考虑到训练成本巨大,作者还提供权重和测试集下载,由于这些文件存放在Dropbox上不便国内用户下载,在我们公众号中回复CNN即可获得国内网盘地址。

下载完成后将这两个文件移动到weights目录下。

然后我们就可以用来判别图像的真假了:

# Model weights need to be downloaded.
python demo.py examples/real.png weights/blur_jpg_prob0.1.pth
python demo.py examples/fake.png weights/blur_jpg_prob0.1.pth

如果你有能力造出一个自己的GAN,还可以用它来检测你模型的造假能力。

# Run evaluation script. Model weights need to be downloaded.
python eval.py

作者就用它鉴别了13种CNN模型制造的图片,证明了它的泛化能力。

闪闪发光作者团

这篇文章的第一作者是来自加州大学伯克利分校的Wang Sheng-Yu,他现在是伯克利人工智能研究实验室(BAIR)的一名研究生,在鉴别假图上是个好手。

今年他和Adobe合作的另一篇论文Detecting Photoshopped Faces by Scripting Photoshop,可以发现照片是否经过PS瘦脸美颜的操作,而且还能恢复“照骗”之前的模样。

这篇的另一名作者Richard Zhang与Wang同学在上面的文章中也有合作,2018年之前他在伯克利攻读博士学位,毕业后进入Adobe工作。

这篇文章的通讯作者Alexei Efros,他曾是朱俊彦的导师,本文提到的CycleGAN正是出自朱俊彦博士之手。Alexei现在是加州大学伯克利分校计算机系教授,此前曾在CMU机器人学院任教9年。

传送门

论文地址:https://arxiv.org/abs/1912.11035

源代码:https://github.com/peterwang512/CNNDetection

— 完 —

一个模型击溃12种AI造假,各种GAN与Deepfake都阵亡相关推荐

  1. 一个模型击溃12种AI造假,各种GAN与Deepfake都阵亡 | 伯克利Adobe新研究

    栗子 晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI AI造出的假图片恐怕很难再骗过AI了. 连英伟达本月刚上线的StyleGAN2也被攻破了.即使是人眼都分辨看不出来假脸图片,还是可以 ...

  2. 一个模型击溃 12 种 AI 造假,各种 GAN 与 Deepfake 都阵亡!

    栗子 晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI AI造出的假图片恐怕很难再骗过AI了. 连英伟达本月刚上线的StyleGAN2也被攻破了.即使是人眼都分辨看不出来假脸图片,还是可以 ...

  3. Nat.Commun.|使用基于注意力机制的多标签神经网络预测并解释12种RNA修饰

    今天介绍来自西交利物浦大学和福建医科大学的Zitao Song, Daiyun Huang等人六月份发表在Nature Communication的文章"Attention-based mu ...

  4. 一个模型搞定多个CTR业务!阿里STAR网络介绍(附代码实现)

    今天为大家带来阿里巴巴2021年的一篇文章:<One Model to Serve All: Star Topology Adaptive Recommender for Multi-Domai ...

  5. 2020-6-9 吴恩达-改善深层NN-w3 超参数调试(3.3 超参数训练的实践:Pandas(资源少,一次一个模型) VS Caviar(资源多,一次多个模型))

    1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c 2.详细笔记网站(中文):http://www.ai-sta ...

  6. 会写代码的AI开源了!C语言写得比Codex还要好,掌握12种编程语言丨CMU

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 比Codex还 ...

  7. 12种编程语言训练,开源的AI “程序员”来了,CMU出品

    点击上方"CSDN精品课",选择"置顶公众号" 第一时间获取精品编程教程 在自然语言处理领域,常用语言模型(LMs)可以实现为字符(tokens)序列分配概率. ...

  8. Meta AI推出“杂食者”:一个模型搞定图像、视频和3D数据三大分类任务,性能还不输独立模型...

    丰色 发自 凹非寺 量子位 | 公众号 QbitAI 最近,Meta AI推出了这样一个"杂食者" (Omnivore)模型,可以对不同视觉模态的数据进行分类,包括图像.视频和3D ...

  9. 一道题:给定一整数序列A1,A2,...,An(可能有负数),求A1到An的一个自序列,使得Ai到Aj的和最大。例如:整数序列-2,11,-4,13,-5,2,-5,-3,12,-9的最大子序列为21

    给定一整数序列A1,A2,-,An(可能有负数),求A1到An的一个自序列,使得Ai到Aj的和最大.例如:整数序列-2,11,-4,13,-5,2,-5,-3,12,-9的最大子序列为21(从A2到A ...

最新文章

  1. Redis 高级教程 Redis 分区(6)
  2. python中requests库的用途-数据爬虫(三):python中requests库使用方法详解
  3. 算法--删除链表的倒数第N个节点
  4. 洛谷1527(bzoj2738)矩阵乘法——二维树状数组+整体二分
  5. C 语言读写中文出现乱码
  6. 自定义起始时间的时间戳计算(个人代码记录)
  7. MySQL常用存储引擎之MyISAM
  8. 问题描述 给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底
  9. java xml解析_XML的理解以及SAX解析流程
  10. linux boot分区有什么用,/ boot分区的真正作用是什么?
  11. ubuntu14.04+gtsam安装(亲测)
  12. 网络编程-关于get请求与post请求
  13. php生产随机字符的代码
  14. html cursor居中,CSS cursor属性
  15. Kotlin入门(20)几种常见的对话框
  16. AspNetPager使用方法
  17. 语音识别,搜狗的下一个大梦想?
  18. 深度强化学习之稀疏奖励(Sparse Reward)
  19. 因为重置网络“netsh winsock reset”导致开不了机
  20. Java权限管理系统完整案例

热门文章

  1. 密切值matlab程序,密切值法
  2. 将二维数组保存为.csv格式
  3. python pip whl 安装
  4. Ping命令为什么要加上“-t”参数
  5. css loader.net,* !!vue-style-loader!css-loader?
  6. android碎片调用动态碎片,Android Training - 使用碎片创建一个动态UI
  7. 《自然》重磅:清华团队首次提出“类脑计算完备性”,智源学者张悠慧等为共同一作...
  8. 「智源论坛Live报名」清华大学董胤蓬:深度学习对抗攻防平台
  9. 3 万小时——这是你一辈子花在开会上的时间
  10. 安全领域多位世界级权威的智慧结晶——《黑客新型攻击防范:深入剖析犯罪软件》