互联网上的人们或多或少都熟悉验证码这个术语–那些烦人的图片包含了你在访问网站之前必须键入的文本。CAPTCHA代表全自动公共图灵测试,用于区分计算机和人类。验证码的主要目的是防止互联网上有机器人的自动化东西,称这是一种用于计算的测试,以确定用户是否是人类。
验证码只是一个文本,带有噪音、不同的颜色、旋转的符号或其他方式的改变,使计算机更难识别。有时,即使对人类来说,也很难识别图像上写的是什么,所以要制造出能够破坏这些图像的机器人并不容易。
如果你正在阅读本教程,你可能知道,随着深度学习和计算机视觉的兴起,无论验证码有多难,都已经有可能解决它。但是你可能不知道如何做到这一点,所以请继续阅读,找出答案。
无论验证码发展到什么程度,总会有人想出方法来打破它。其中最著名的方法之一是使用机器学习方法,我们的主要关注点是一种特定类型的神经网络,称为卷积神经网络(CNN)。
CNN的工作原理类似于我们的大脑如何识别事物并将一个物体与另一个物体区分开来。为了提供更好的直觉,当你看下面的图片时,你可以立即看出这两种动物不是同一物种,但你会问,是怎么回事?答案是,这是显而易见的…
因此,它来自于这样一个事实,即我们可能已经看到了一百万张狗、猫和其他动物的照片,并在现实生活中看到了它们。当我们还是孩子的时候,我们被告知他们是不同的。然后,我们的大脑慢慢地理解了这两种动物之间的区别。我们的记忆允许我们通过看到狗和猫之间的许多不同之处来正确地识别它们。
使用相同的概念,我们将对我们的验证码检测神经网络执行同样的操作。嗯,不一样,因为我们的电脑感知图片的方式和我们不一样。他们看到指示该特定像素上的颜色强度的一串串符号。如果我们有一个RGB图像,一种将它们显示为数组的方式是RGBA。CNN中的层是特殊的,因为它们以3维、宽度、高度和深度进行组织。这一事实使我们可以将图片提供给网络。最后一层是完全连接层,它告诉我们它预测了什么。
下面是我们看到的一张照片的示例,以及计算机在同一张图像中看到的内容,以使一切变得更加直观。在这张照片中,我们看到一只小狗:
如果我们想要以计算机的方式查看图片,我们可以在此图像上使用这个简单的脚本:
from PIL import Image
im = Image.open("puppy.jpg","r")
pix_val = list(im.getdata())
print(pix_val)
结果,我们收到数千个数字,它们将照片中的每个像素表示为RGB值:
现在我们了解了CNN是做什么的,我们将使用这种方法来分解验证码,看看我们可以多么准确地解决它。当我们试图探测反击敌人并射杀他们时,我们使用了R-CNN和我之前的教程。
创建结构化模型以断开验证码:
让我们再来看看验证码。让我们假设它将以26个英文字母和0-9个数字的组合出现。最后,使用我们的方法,我们将能够求解具有不同数量符号的验证码。
要使用任何机器学习系统,我们都需要收集训练数据。要打破验证码系统,我们需要一个工作方式如下的训练有素的模型:
当我们有了训练数据后,我们可以用它来训练一个卷积神经网络,看起来像这样:
有了足够的训练数据,我们的方法必须奏效,但我们可以让问题更直接地解决。问题越简单,训练数据就越少,我们解决问题所需的计算能力和时间也就越少。我们知道验证码图像总是由一定数量的独立符号组成。如果我们能以某种方式将图像分开,使每个字母都是一个单独的图像,那么我们只需要训练神经网络一次识别一个字母:
因此,我们正在教导CNN一次检测验证码中的单个字母,而不是整个字符串。这样,我们需要的训练数据就会少得多。在第二个教程中,我将更多地讨论训练数据。目前,这是我们期望得到的结果:
从上面的图像中,您可以看到我们将验证码图像提供给经过训练的CNN,作为输出,它给出了另一个带有检测的验证码图像。但是,检测并不总是百分之百的。这个检测百分比取决于我们使用的训练数据。此外,我们的CNN可能会检测到比验证码图像上更多的符号。要解决这个问题,我们必须使用一些过滤器。从上图可以看到,我们的模特看到的是字母“I”,而不是字母“T”,但是使用过滤后,我们还是收到了“T”。因此,我们将在最后的教程步骤中讨论和开发过滤器。
顺便说一下,当我在寻找其他开箱即用的验证码求解模型时,我找不到它们,所以我决定自己做一个。当我完成本系列教程时,您将能够下载全部代码。如果您的计算机上有所有的TensorFlow库,您将向此模型提供验证码并接收结果。
这部分就到这里吧。我相信我们对我们的做法有很好的理解。接下来,我们将使用验证码图像数据集,并使用TensorFlow训练CNN。我会一步一步地训练我的验证码破解模型或使用我的模型。
最初发表于https://pylessons.com/TensorFlow-CAPTCHA-solver-introductionhttps://pylessons.com/TensorFlow-CAPTCHA-solver-introduction
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/08/tensorflow%e9%aa%8c%e8%af%81%e7%a0%81%e8%a7%a3%e7%ae%97%e5%99%a8%e6%b8%b8%e6%88%8f%e6%94%bb%e7%95%a5-2/