CNN-generated images are surprisingly easy to spot... for now
CNN-generated images are surprisingly easy to spot… for now----《目前CNN生成的图像非常容易被发现》
背景: 研究者们发现,仅仅对一种由CNN模型生成的图像进行训练的分类器,也可以检测许多其他模型生成的结果。由此提出这样的观点:即目前CNN生成的图像存在一些常见的系统缺陷,导致它们无法实现真实的图像合成。
动机: 随着生成模型的快速发展,对无法分辨真假的担忧。
最简单的方法:
引言
近年来深度图像合成技术(例如生成对抗网络(GAN))的快速发展引起了公众的极大兴趣和关注,同时人们担心我们正在进入一个无法辨别哪些图像是真实的、哪些图像是假的世界[14]。这种担忧主要针对特定的操纵技术,例如“深度伪造”式面部替换[2]和逼真的合成人类[20]。其实这些方法仅仅是一种广泛应用技术中的两个实例:基于卷积神经网络(CNN)的图像生成。我们这项工作的目标是找到一种通用的图像取证方法来检测 CNN 生成的图像。
检测图像是否是由特定合成技术生成的相对简单 - 只需在由真实图像和通过相关技术合成的图像组成的数据集上训练分类器即可。然而,这种方法可能与图像生成中使用的数据集(例如面部)相关联,并且由于数据集偏差[35],在新数据(例如汽车)上进行测试时可能无法泛化。更糟糕的是,随着生成方法的发展以及它所训练的技术变得过时,特定技术的检测器可能很快就会变得无效。
因此,很自然地会问,今天的 CNN 生成的图像是否包含常见的伪影,例如某种可检测的 CNN 指纹,这将允许分类器泛化到整个生成方法系列,而不是单个生成方法。不幸的是,先前的工作表明泛化是图像鉴别取证方法的一个重大问题。例如,最近的几项工作 [44,12,37] 观察到,在一种 GAN 架构生成的图像上训练的分类器在其他架构上进行测试时表现不佳,并且在许多情况下,当仅更改分类器训练数据集(而不是架构或任务)时,它们也无法泛化。这是有道理的,因为图像生成方法多种多样:它们使用不同的数据集、网络架构、损失函数和图像预处理。
在本文中,我们表明,与当前的理解相反,经过训练来检测 CNN 生成图像的分类器可以在数据集、架构和任务中表现出惊人的泛化能力。我们遵循惯例,以简单的方式训练我们的分类器,使用单个 CNN 模型生成大量假图像(我们使用 ProGAN,一种高性能无条件 GAN 模型 [19]),并训练二元分类器来检测假图像,使用模型的真实训练图像作为反例。
为了评估我们的模型,我们创建了一个新的 CNN 生成图像数据集,即 ForenSynths 数据集,由 11 个模型的合成图像组成,范围从无条件图像生成方法(如 StyleGAN [20])到超分辨率方法 [13] ,以及深度伪造[33]。每个模型都在适合其特定任务的不同图像数据集上进行训练。
在这种方法看似简单的背后,我们发现存在许多微妙的挑战,我们通过一组实验和经过训练的图像生成模型的新数据集来研究这些挑战。我们表明,当采取正确的步骤时,分类器对于 JPEG 压缩、模糊和调整大小等常见操作确实具有鲁棒性。我们还发现,训练图像的多样性很重要;从CNN合成方法中采样的大数据集导致分类器在一定程度上优于在较小数据集上训练的分类器。最后,检查后处理对模型泛化能力的影响至关重要,这通常发生在图像创建的下游(例如,在存储和分发期间)。我们表明,当采取正确的步骤时,分类器对于 JPEG 压缩、模糊和调整大小等常见操作确实具有鲁棒性。
总之,我们的主要贡献是:
1)我们表明,在CNN生成的图像上训练的取证模型对其他CNN合成方法表现出惊人的泛化能力;
2)我们提出了一种新的数据集和评估指标,用于检测CNN生成的图像;
3)我们通过实验分析了跨模型泛化的因素。
相关工作
检测CNN生成的技术。 最近的几项工作已经解决了检测 CNN 生成的图像的问题。Rossler 等人[33]评估了检测面部操纵技术的方法,包括基于 CNN 的面部和嘴巴替换方法。虽然他们表明简单的分类器可以检测同一模型生成的赝品,但他们没有研究模型或数据集之间的泛化。Marra 等人 [24] 同样表明,简单的分类器可以检测由图像翻译网络 [17] 创建的图像,但没有考虑跨模型迁移。
最近,Cozzolino 等人 [12] 发现取证分类器在模型之间的迁移很差,常常获得近乎偶然的性能。他们提出了一种基于自动编码器的新表示学习方法,以提高各种生成方法的零和低样本训练方案中的传输性能。虽然他们的最终目标与我们相似,但他们采取了正交方法。他们专注于改进迁移学习方法,并将其应用于各种模型(包括 CNN 和非 CNN)。相比之下,我们实证研究了简单“基线”分类器在不同训练和测试条件下基于 CNN 的图像生成的性能。Zhang 等人 [44] 发现分类器在 GAN 模型之间的泛化能力很差。他们提出了一种称为 AutoGAN 的方法,用于生成包含 GAN 架构中常见的上采样伪影的图像,并在两种类型的 GAN 上进行测试。其他工作提出使用手工制作的共现特征 [26] 或通过基于预训练的人脸检测器构建的异常检测模型来检测 GAN 图像 [37]。研究人员还提出了几种方法来识别哪些已知的 GAN 生成了给定的图像 [25, 41]。
图像取证。 研究人员提出了多种方法来检测更传统的操纵技术,例如通过图像编辑工具进行的操纵技术。早期的工作侧重于手工制作的线索 [14],例如压缩伪影 [3]、重采样 [31] 或物理场景约束 [27]。最近,研究人员将基于学习的方法应用于这些问题[45,16,11,32,38]。像我们一样,这一行的工作发现简单的监督分类器通常可以有效地检测操作 [45, 38]。
CNN生成的共有特征
研究人员最近表明,常见的 CNN 设计包含降低其表征能力的伪影。这项工作的大部分内容都集中在网络执行上采样和下采样的方式上。这种伪影的一个众所周知的例子是由反卷积层产生的棋盘伪影[28]。Azulay 和 Weiss [4] 表明,卷积网络忽略了经典采样定理,因此跨步卷积降低了平移不变性,Zhang [43] 通过减少这些层中的混叠来改进平移不变性。最近,Bau 等人 [5] 提出 GAN 的生成能力有限,并分析了预训练的 GAN 无法生成的图像结构。
研究问题:
是否有可能在一个生成模型的图像上训练一个取证分类器,该模型可以推广到许多其他模型上。
分类器的训练:
数据集构建: 选择ProGAN作为生成模型(无条件、结构简单、可生成任意数量、高质量图像),LSUN为ProGAN的训练数据集,共20个类别,为每类生成36K训练图像和200个验证图像,共720K训练图像和4K验证图像,再取相同数量的真实图像共同组成分类器数据集。
模型选择: 与训练的ResNet-50,图像输入为224×224.
评价指标: 平均精度 AP
实验结论分析:
- 作者认为以前的分类器没有很好的泛化,是因为图像没有后增强。由于真实图像存在后处理操作(指压缩、模糊、裁剪等)。而大多数合成图像不存在,但不能让分类器通过学习是否有后处理进行分类。因为在现实场景使用过程中,无论生成还是真实图像都会受到压缩或模糊处理,使模型的鲁棒性降低,导致在理想情况下训练的分类器不能很好泛化。
- 训练数据类别的增加能够提升模型的泛化性能,但类别达到一定数量后,AP的增量变得很小,说明可能存在一个对于实际泛化来说“足够多样性”的训练数据集。
- 证明了摘要中提出的观点,CNN生成的图像与真实图像存在不同,并且可视化了合成图像和真实图像的频率,并进行比较。
总结:
和大多数方法一样,都是训练一个分类器。改进在于:根据现实场景存在的伪影情况,对训练数据进行后增强,使模型学习到生成图像和真实图像更本质的区别,使得该分类器实现开箱即用的效果。
CNN分类器学习图像的高频和低频信息进行分类,但在现实中,图像会被压缩或模糊处理,导致部分低频信息损失,使模型失效(这说明伪影可能不仅是高频的,而且是跨频段存在的),可以在模型训练阶段使用高通滤波过滤掉低频信息,从而增强模型鲁棒性。
相关文章:

CNN-generated images are surprisingly easy to spot... for now
CNN-generated images are surprisingly easy to spot… for now----《目前CNN生成的图像非常容易被发现》 背景: 研究者们发现,仅仅对一种由CNN模型生成的图像进行训练的分类器,也可以检测许多其他模型生成的结果。由此提出这样的观点&#…...

蓝桥杯(七段码,C++)
思路: 1、把灯管的连接转为图结构,相邻的灯管即认为有边。 2、用深度搜索,去计算有多少种不同字符。 3、因为有每种字符都会重复算两遍,最后的结果需要数以2。 #include <iostream> using namespace std;int graph[7][7…...

Master PDF Editor v5.9.70便携版
软件介绍 Master PDF Editor中文版是一款小巧的多功能PDF编辑器,可以轻松查看,创建,修改,批注,签名,扫描,OCR和打印PDF文档.高级注释工具,可以添加任意便笺指示对象突出显示,添加下划线和删除,而无需更改源PDF文件. 软件截图 更新日志 code-industry.net/what-is-new-in-mas…...
【剑指Offer】20.表示数值的字符串
题目 请实现一个函数用来判断字符串str是否表示数值(包括科学计数法的数字,小数和整数)。 科学计数法的数字(按顺序)可以分成以下几个部分: 1.若干空格 2.一个整数或者小数 3.(可选)一个 e 或 E &…...

2023年9月Web3行业月度发展报告区块链篇 | 陀螺科技会员专享
9月是加密市场的活动月,斯坦福区块链周、Token2049等大型活动相继举办,后者更是创下超过1万人的历史最高纪录,成为了全球最大的Web3活动。在本次Token2049上,RWA、支付以及出入金成为了讨论度最多的活动。尽管活动如火如荼&#x…...

Unity 快捷键的一些记录
1.Unity Prefab Apply All 设置快捷键,修改预设体之后快捷键应用 打包会出问题:The type or namespace name ‘EditorWindow‘ could not be found EditorWindow类无法打包出EXE 添加unity关键字定义如下文所示: #if UNITY_EDITOR using Uni…...
GIT指令 - git stash
命令解释 保存当前工作进度,将工作区和暂存区恢复到修改之前。 使用场景 当在A分支上进行开发,有点事情需要切到B分支上进行开发,但是A分支的代码开发一半,又不想提交,直接切换又会报错,可以使用该指令。…...

LiveMedia视频中间件视频隐私打码直播解决方案
一、方案背景 随着科技的发展,视频监控系统已经成为了我们生活中不可或缺的一部分。无论是在公共区域,还是在私人场所,我们都可以看到各种各样的监控设备。这些设备的出现,无疑提高了我们的生活安全,使得我们可以更好地…...

关于神经网络的思考
关于感知机 感知机(Perceptron)和神经网络(Neural Network)之间有一定的关系,可以说感知机是神经网络的一个基本组成单元。 感知机: 感知机是一种简单的二分类线性分类器。它接受多个输入,对每…...

CodeForces每日好题10.14
给你一个字符串 让你删除一些字符让它变成一个相邻的字母不相同的字符串,问你最小的删除次数 以及你可以完成的所有方/案数 求方案数往DP 或者 组合数学推公式上面去想,发现一个有意思的事情 例如1001011110 这个字符串你划分成1 00 1 0 1111 0 每…...

Python Django 之连接 Mysql 数据库详解
文章目录 1 概述1.1 Mysql 下载和安装1.2 菜单目录 2 ORM 框架2.1 连接 Mysql 模块:mysqlclient2.2 创建数据库2.3 连接 Mysql2.4 创建表2.5 增删改查 3 扩展3.1 ERROR:2026, SSL connection error: unknown error number 1 概述 1.1 Mysql 下载和安装 …...

Java设计模式:Callback
介绍 回调(Callback)是一种设计模式,在这种模式中,一个可执行的代码被作为参数传递给其他代码,接收方的代码可以在适当的时候调用它。 在真实世界的例子中,当我们需要在任务完成时被通知时,我…...

年底旺季,Shopee、Lazada如何通过测评补单技术打造产品权重收割流量
当前Shopee和Lazada平台的主要推广方式仍然以广告为主,毕竟这是平台的主要收入来源之一。然而,由于近年来大量卖家涌入东南亚市场,导致卖家之间的竞争日趋激烈。高额的广告投入并不能带来预期的效果,因此越来越多的卖家开始自学测…...

CentOS 7 安装 MySQL8.0
由于centOS7中默认安装了 MariaDB , 需要先进行卸载 # 查看版本 rpm -qa | grep mariadb # 卸载 rpm -e --nodeps 文件名 # 查看是否卸载干净 rpm -qa | grep mariadb安装wget: yum -y install wget进入/usr/local/下: cd /usr/local/新建mysqlrpm文…...

C# 往多线程传递安全参数的方法
在C#构造一个线程时,要向其传递一个函数,这个函数可以试简单的无参函数,也可以是参数为Object类型的函数,但是由于参数类型为Object,因此编译器无法实行类型检查,看下面的例子: class Program{…...

Java之SPI
Java的SPI(Service Provider Interface)是一种面向接口编程的机制,用于实现组件之间的解耦和扩展。通过SPI机制,我们可以定义接口,并允许第三方提供不同的实现,从而实现可插拔、可扩展的架构。 SPI讲解 它…...

【数据结构】算法的空间复杂度
🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 算法空间复杂度的定义 算法的时间复杂度和空间复杂度是度量算法好坏的两个重要量度,在实际写代码的过程中,我们完全可以用空间来换时间,比如说,我们要判断某某年是不是闰年,大…...

恢复Windows 11经典右键菜单:一条命令解决显示更多选项问题
恢复Windows 11经典右键菜单:一条命令解决显示更多选项问题 恢复Windows 11经典右键菜单:一条命令解决显示更多选项问题为什么改变?恢复经典右键菜单 我是将军我一直都在,。! 恢复Windows 11经典右键菜单:一…...
Android:事件分发机制(二)
这篇主要是第一篇回顾之后,补充一些上一篇没写到的两个点。 第一个的切入点是这个。【处理层叠的view,想要执行下一层的view的点击事件】其背后的原理。 处理层叠的view,要执行下一层的view的点击事件 我们知道,方法是将上一层的…...

vue2时间处理插件——dayjs
在vue时间处理上有很多的方法和实现,可以自己实现,但是效率不高,所以,在框架开发中我们一般不会手写,一般是使用集成的第三方插件来解决我们的问题,在vue3中大家一般都使用Moment.js来处理,所以…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...