前言
对于图像伪造检测来说是一个时间相对较久但并不算是视觉的热门方向,从应用领域上看也相对离生活较远,主要是图像取证或是应用于伪造证件检测,还有个交叉但也应属于这个领域相对比较热的应用就是人脸的PS的检测,这主要还是归功于人脸识别的普及程度以及DEPPFAKE的比赛。
基本算法简介
该方向与其他方向一样,一般就分为传统方法和深度学习方法两种,其中传统方法最常用知道的最多的应该就是基于ELA的各种方法了,而深度学习方法掀起水花的可能就是Adobe自家检测自家提出的基于FasterRCNN的双流ps检测网络了。除了这些之外,还有一些其他的算法,这里简单列举后面会简单介绍。
传统方法
ELA, DCT,光照一致性, 边缘, SRM深度学习方法
Constrained R-CNN: A general image manipulation detection model
Distinguishing Computer-Generated Images from Natural Images Using Channel and Pixel Correlation
Learning-Rich-Features-for-Image-Manipulation-Detection
Distinguishing Between Natural and Computer-Generated Images Using Convolutional Neural Networks
Illuminant maps analysis for image splicing detection
busternet
mantrannet
....
算法详述
本部分会相对详细的介绍上面提到的算法,同时也对相关资料进行整理,以供查阅。
传统方法
传统方法理论基础相对直观,各种方法据其原理可解决问题对应的有它的局限性,推荐网站:https://fotoforensics.com/tutorial.php
该网站有相应示例与原理介绍。
ELA
ELA的全称是:Error Level Analysis
基本原理:JEPG是有损压缩,每次压缩再保存会引进更多误差 但直接ps的不会, 误差率是非线性的。
检测的基本方式就是以一定压缩率再保存一次计算ELA,看前后差异来确定图片是否别修改过。
其原理也说明了ELA的局限性,无损压缩无法检测,多次压缩之后也会不鲁棒。
Reference:
https://github.com/qumuase/ELA
DCT
基于离散余弦变换的ps检测。
基本原理:是将图片分成小块,在RGB和Y空间抽取特征,计算每个小块的特征距离,如果特征距离大于某一阈值,说明该块是伪造的。
相比ELA来说,DCT相对更鲁棒一些。
Reference:
原文:https://arxiv.org/pdf/1308.5661.pdf
go语言实现:https://github.com/esimov/forensic
光照一致性
光照一致性原理相对直观,完全基于图片的光照应当同源,目前来说该方法基本难以应用,本身光照极易受影响,在完全伪造的情况下做到同源难度不大,这里不再多做讨论。
基于深度学习方法
这部分内容会比较多,而且不像传统方法一样可以给出直观的部分,这部分的模型会更倾向于如何利用现在的目标检测模型来做伪造检测。大部分文章都是在RCNN家族的框架上做的。根据实测,会挑几篇文章做个基本解读,其它内容附上论文链接以供查阅。