从深度学习视角生成CAPTCHA
1. 基于对抗学习的CAPTCHA生成
我们可以通过生成对抗网络(GAN)来创建CAPTCHA,具体是生成类似于街景房屋号码数据集(SVHN数据集)的图像,并将这些GAN生成的图像用作CAPTCHA。这样做的好处是,在训练好GAN后,我们可以轻松地从噪声分布中采样生成图像,避免了使用更复杂的方法创建CAPTCHA,还能为CAPTCHA中使用的SVHN街景号码增添多样性。
SVHN是一个在机器学习和深度学习领域非常受欢迎的真实世界数据集,常用于目标识别算法。该数据集包含从谷歌街景图像中获取的房屋号码真实图像,可从链接 http://ufldl.stanford.edu/ housenumbers/ 下载。我们将使用调整大小后的房屋号码数据集,图像尺寸调整为(32, 32),感兴趣的数据集文件是 train_32x32.mat。
在GAN中,有一个生成器(G)和一个判别器(D),它们围绕一个损失函数进行零和极小极大博弈。随着时间的推移,生成器和判别器的性能都会不断提升,直到达到一个稳定点,即损失函数的鞍点,此时两者都无法再进一步优化。对于我们的应用,生成器G会将给定分布P(z)的噪声z转换为房屋号码图像x,即x = G(z)。生成的图像会通过判别器D,判别器会尝试将其识别为假图像,而将SVHN数据集中的真实房屋号码图像识别为真图像。同时,生成器会尝试创建图像x = G(z),使判别器认为这些图像是真实的。如果将真实图像标记为1,生成器生成的假图像标记为0,那么判别器会作为一个二分类网络,尝试最小化二元交叉熵损失。判别器D最小化的损失可以表示为:
判别器D的损失函数:
[
\min_{D} \left[
超级会员免费看
订阅专栏 解锁全文
17

被折叠的 条评论
为什么被折叠?



