关于 AI 生成人脸的疑惑

kalbipop-avatar

kalbipop

2022-12-11T05:10:13+00:00

在我的理解中,人要电脑做点什么 有个前提是人要能用语言/数学准确描述给机器。比如如果要电脑画个圆,那人需要直接告诉它步骤,比如是X,X为圆心 Y为半径画圆(也可以加点随机数)。从红白机到WIN7差不多都是这样。

但从对抗训练生成人脸开始我就搞不懂了。我先简单描述一下我对AI生成人脸的理解——AI甲随机制造一些像素点图片给AI乙,由AI乙判断是不是人脸。然后AI甲通过率越来越高 最后可以基本100%的几率生成世界上不存在的人脸了。
我对此有2个问题困惑——1、AI乙凭啥能判断人脸?人脸的定义是无法用语言/数学准确描述的啊。2、为啥AI甲的通过率会越来越高?或者说AI甲为什么会进化。

最好能用初中生能听懂的语言解答。
Zubrrr-avatar

Zubrrr

通过特征分辨呗
saturnlft-avatar

saturnlft

ai认识了100万章人脸,总结了共通点,然后用共通点识别人脸?
TrOlFaCe00-avatar

TrOlFaCe00

1.GAN中的鉴别器是一个使用真实人脸图片事先训练好的神经网络,它能够使用一些例如卷积层的结构,把不同层次的结构(例如:头发 嘴巴 鼻子 脸型等)抽象出来并且对输入的图像判断是否存在这些结构,从而输出他是真实的概率。
2.与一般的神经网络训练类似,会利用一些图像生成领域常用的损失函数(LPIPS,FID等),通过链式法则不断优化网络参数。

另外GAN结构里最后理想的判别率是50%,即鉴别器只能随机输出是或者否。
♡ 𝖏𝖚𝖏𝖚-𝖇𝖊𝖆𝖗 ♡-avatar

♡ 𝖏𝖚𝖏𝖚-𝖇𝖊𝖆𝖗 ♡

本质上Ai并不是识别脸,而是识别图像上的色点。

所以人绝大情况下不可能把红绿灯识别为机器人,但是Ai是可能把红绿灯识别为一只眼睛在亮的飞行机器人。

所以想欺骗Ai很简单,上传大量的香蕉照片,然后旁边注释为苹果。只要样本足够多,Ai就会认为香蕉是苹果。
Badonlkadonk-avatar

Badonlkadonk

1.凭啥AI就不能识别人脸呢?人脸也是有特征的,有3-5原则,你可以把这些特征量化成一个矩阵,一个向量空间,然后用统计学来判断相似度,类似的算法不要太多

2.这不就普通机器学习的Loss函数嘛,你比对数次结果之间的差值,得出一条loss不断下降的路径,顺着这个路径一直走就一定能走到头。当然实际上判断极值问题很可能是个多维的立体空间,该怎么走就是数学问题了
Hastyi-avatar

Hastyi

如果你想理解这个,起码得理解神经网络的训练过程,然后去看GAN的那篇论文了解“对抗生成”的过程。

你说人脸识别不出来,这本身就是错误的,任何图像理论上都会有特征,最常见的就是用卷积去提取。现在也有可视化的工作,这些特征有一部分是人类能理解的。还有一些传统机器学习方面的方法,比如mnist数据集用knn都能效果很好。

训练的基本是梯度,只要一个函数是凸的都能通过梯度下降更新模型的参数。GAN简单讲,最开始的生成器生成不出太多有特征的东西,分类器也识别不出多少特征,在迭代中,生成器开始生产一些数据试图骗过分类器,分类器会逐渐学习到能够识别一些生成器的特征,然后固定分类器,生成器去学习分类器能识别哪些特征,并试图避免它们的产生,反复迭代最终得到两个模型。生成器的输入就是最终生成结果的“种子”,分类器就是试图判断一个图形的特征和通过生成器生成的特征是否一样。

给你个链接,有视频demo,如果你有N卡,可以配置一下,基本不用写代码就可以运行,这个可以直观的感受到GAN中参数变化如何影响生成图像。[url]https://github.com/genforce/sefa[/url]
Hastyi-avatar

Hastyi

可能你不太熟悉cs相关的东西,我直接补两张图吧,去年自己运行的时候截的图,上下三张各调整了一个不同隐向量(latent vector),上面的是生成人物年龄的差异,下面造成的就是画风上的差异
[img]https://img.nga.178.com/attachments/mon_202212/13/9aQ8qrk-b5z4ZfT3cSsg-d2.jpg[/img]
DarkBeardedSoul-avatar

DarkBeardedSoul

归根结底还是求偏导,梯度下降
Munchkin-avatar

Munchkin

[s:a2:偷吃]用神经网络卷积进行数据提取
中间的步骤都是黑盒子 那些数据只有计算机能懂
但从结果上看它确实提取了正确的特征