这个人是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

相关文章

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

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总结注:本文章中代码均为