这个人是GAN生成的?瞳孔形状判断下吧

2023-11-23 12:10
文章标签 判断 生成 形状 gan 瞳孔

本文主要是介绍这个人是GAN生成的?瞳孔形状判断下吧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“机器学习与生成对抗网络”,关注星标

获取有趣、好玩的前沿干货!


  新智元报道  

来源:arXiv 编辑:好困 新智元 

【新智元导读】定「睛」一看,就能区分照片真假?近日,来自纽约州立大学的华人研究员提出了一种全新的检测方法,可以根据眼睛形状判断人像的真假。不过,前提是你能把图放得了这么大才行。

现在,利用GAN生成的人脸几乎真实到让「肉眼」检测都达到了瓶颈。

比如说,https://thispersondoesnotexist.com/,在这上每刷新一次都会生成一幅让你真假难辨的人脸。

 

不过,既然这些人脸是基于深度学习生成的,那我们就用魔法去打败魔法!

 

真实的人像(左),GAN生成的人像(右)

 

最近的研究表明,基于深度学习模型的检测方法确实可以提供了不少可行的方案。

 

然而,这些方法通常面临两个挑战:

  1. 检测结果缺乏可解释性;

  2. 由于过拟合导致在不同的合成方法中,泛化的稳健性很低。

 

为了消除这些限制并探索一个更稳健的模型,来自纽约州立大学奥尔巴尼和布法罗分校的华人研究员提出了一种全新的方法,通过不规则的瞳孔形状检测出GAN生成的人脸。

 

论文地址:https://arxiv.org/pdf/2109.00162.pdf

 

结果表明,从两只眼睛中提取瞳孔并分析它们的形状,可以有效区分GAN生成的人脸和真实的人像照片。

 

真实的人眼(左4),GAN生成的人眼(右4)

 

论文的主要贡献有三个方面:

 

  1. 发现不规则的瞳孔形状广泛存在于高质量的StyleGAN生成的人脸中,这与真实的人类瞳孔不同。

 

  1. 提出了一种新的基于生理学的方法,可以使用不规则的瞳孔形状作为检测GAN生成的人脸的依据,并且简单而有效。

 

  1. 提出的方法不仅可以用于设计自动检测方法,而且也给利用「肉眼」区分GAN生成的人脸提供了一个新的线索。

 

眼睛不会骗人

作者从人眼的主要解剖部位着手进行研究,眼睛的中心是虹膜和瞳孔,而白色区域是巩膜。

 

 

对于一个普遍意义上健全的人来说,瞳孔的形状是近乎圆形的。然而,在GAN生成的眼睛部分,可以观察到明显的伪影和不一致,如瞳孔的边界不是椭圆形的。

 

人眼的解剖结构

真实的眼睛(左),瞳孔为明显的圆形或椭圆形(黄色);GAN生成的眼睛(右),瞳孔为不规则的形状(红色)

 

这种现象普遍存在于GAN生成的人脸上,其中一个根本原因是,目前的GAN模型缺乏对人眼解剖学的理解,特别是瞳孔的几何形状。

 

方法实现

作者利用模型对两只眼睛的瞳孔进行自动提取,并在之后评估这些瞳孔的形状是否为椭圆形。

 

1. 瞳孔分割和边界检测

 

首先通过人脸检测器来定位人脸,然后用提取器获得人脸的landmark。

 

在对两只眼睛对应的区域进行适当裁剪之后,使用EyeCool提取瞳孔的掩码及其边界。

 

(a)输入的高分辨率人脸图像;(b)裁剪的眼睛图像;(c)图像(b)的预测瞳孔掩码;(d)对(c)进行椭圆拟合后的瞳孔掩码

 

EyeCool是一个改进的基于U-Net的模型,可以同时对瞳孔和虹膜、内部和外部边界进行分割。

 

其中EfficientNet-B5被用作编码器,并在解码器中添加了一个边界注意块,以提高模型关注物体边界的能力。

 

此外,Dice损失和MSE损失都被用来训练模型,其中Dice损失被用来评估分割部分,MSE被用来计算边界热图的回归损失。

 

2. 椭圆拟合的瞳孔

 

利用基于最小平方的椭圆拟合方法可用于预测瞳孔掩码的外部边界,以估计椭圆拟合的瞳孔边界。

 

u为预测的瞳孔掩码的外边界上的点的坐标,利用最小二乘法找到一组参数θ,使数据点和椭圆之间的距离测量最小:

 

 

并通过最小化N个数据点上的代数距离平方之和来确定椭圆的大小:

 

 

3. 测量不规则瞳孔的形状

 

Boundary IoU(BIoU)可以用来对边界质量敏感的图像分割。

 

相比于平等对待所有像素的Mask IoU,BIoU计算的是预测和基准真相之间的边界轮廓在一定距离内掩码像素的IoU。

 

因此,作者使用BIoU来评估距离瞳孔外边界d像素范围内的瞳孔掩码像素。

 

其中P表示预测的瞳孔掩码,F表示椭圆的瞳孔掩码,参数d是距离边界的距离,控制测量对边界的敏感性。

 

左:预测的瞳孔掩码P和椭圆的瞳孔掩码F;

中:Pd和Fd是距离边界d以内的掩码像素(蓝色和黄色);

右:预测的瞳孔掩码和椭圆修正的瞳孔掩码的距离参数d之间的边界IoU计算。

 

此外,当把d放大到足以包括掩码内的所有像素时,BIoU就等于掩码IoU。为了使BIoU对边界质量更加敏感,可以减少参数d以忽略掩码内部像素。

 

预测的瞳孔掩码和椭圆的瞳孔掩码之间的BIoU得分的范围是[0, 1],较大的值表明瞳孔的边界与椭圆的形状更相似,那么人脸也更可能是真实的;否则就是用GAN模型生成的。

 

结果分析

数据集

 

真实人脸图像来自FlickrFaces-HQ(FFHQ)数据集,GAN生成的人脸由StyleGAN2创建。每个类别有1000张图像,分辨率为1024×1024。

 

结果

 

真实的人的瞳孔是清晰的椭圆形,这可以从预测的瞳孔掩码和椭圆的瞳孔掩码之间较高的BIoU分数中反映出来。然而,不规则瞳孔形状的伪影导致BIoU得分明显降低。

 

真实的人眼

 

GAN生成的人眼

 

此外,真实的人脸和GAN生成的人脸在BIoU得分的分布上有明显的区别。

 

真实的人脸和GAN生成的人脸在边界IoU上得分的分布情况

 

接收者操作特征(ROC)曲线,对应的AUC(ROC曲线下的面积)为0.94。

 

ROC曲线是基于边界IoU的得分,d=4

 

由此表明,不规则的瞳孔形状能有效地识别GAN生成的人脸,并用来与真实的人脸进行区分。

 

超参数分析

 

BIoU测量法有一个基本参数d,它表示与边界的距离。当d足够大时,BIoU将减少到Mask IoU,从而对边界不那么敏感,这就是为什么AUC分数随着d的增加而减少。

 

x轴表示超参数d的变化,y轴为AUC得分

 

局限性

 

  1. 当真实面孔的形状为非椭圆形时,可能会出现假阳性。例如瞳孔和虹膜区域的疾病。

 

由于瞳孔和虹膜区域的疾病和感染,导致的非椭圆形异常瞳孔

 

  1. 瞳孔上的遮挡或瞳孔分割失败也可能导致错误的预测。

 

遮挡和瞳孔周围的噪声以及瞳孔分割失败

 

整体而言,论文提出利用瞳孔进行区分的方法是非常有效的。

 

不过,前提是图像的分辨率足够高……

参考资料:

https://arxiv.org/pdf/2109.00162.pdf

猜您喜欢:

等你着陆!【GAN生成对抗网络】知识星球!  

CVPR 2021 | GAN的说话人驱动、3D人脸论文汇总

CVPR 2021 | 图像转换 今如何?几篇GAN论文

【CVPR 2021】通过GAN提升人脸识别的遗留难题

CVPR 2021生成对抗网络GAN部分论文汇总

经典GAN不得不读:StyleGAN

最新最全20篇!基于 StyleGAN 改进或应用相关论文

超100篇!CVPR 2020最全GAN论文梳理汇总!

附下载 | 《Python进阶》中文版

附下载 | 经典《Think Python》中文版

附下载 | 《Pytorch模型训练实用教程》

附下载 | 最新2020李沐《动手学深度学习》

附下载 | 《可解释的机器学习》中文版

附下载 |《TensorFlow 2.0 深度学习算法实战》

附下载 | 超100篇!CVPR 2020最全GAN论文梳理汇总!

附下载 |《计算机视觉中的数学方法》分享

这篇关于这个人是GAN生成的?瞳孔形状判断下吧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417846

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

C/C++随机数生成的五种方法

《C/C++随机数生成的五种方法》C++作为一种古老的编程语言,其随机数生成的方法已经经历了多次的变革,早期的C++版本使用的是rand()函数和RAND_MAX常量,这种方法虽然简单,但并不总是提供... 目录C/C++ 随机数生成方法1. 使用 rand() 和 srand()2. 使用 <random

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

Python如何在Word中生成多种不同类型的图表

《Python如何在Word中生成多种不同类型的图表》Word文档中插入图表不仅能直观呈现数据,还能提升文档的可读性和专业性,本文将介绍如何使用Python在Word文档中创建和自定义各种图表,需要的... 目录在Word中创建柱形图在Word中创建条形图在Word中创建折线图在Word中创建饼图在Word

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、

nginx生成自签名SSL证书配置HTTPS的实现

《nginx生成自签名SSL证书配置HTTPS的实现》本文主要介绍在Nginx中生成自签名SSL证书并配置HTTPS,包括安装Nginx、创建证书、配置证书以及测试访问,具有一定的参考价值,感兴趣的可... 目录一、安装nginx二、创建证书三、配置证书并验证四、测试一、安装nginxnginx必须有"-

Java实战之利用POI生成Excel图表

《Java实战之利用POI生成Excel图表》ApachePOI是Java生态中处理Office文档的核心工具,这篇文章主要为大家详细介绍了如何在Excel中创建折线图,柱状图,饼图等常见图表,需要的... 目录一、环境配置与依赖管理二、数据源准备与工作表构建三、图表生成核心步骤1. 折线图(Line Ch