1. 磐创AI-开放猫官方网站首页
  2. Medium

TensorFlow验证码解算器逐步培训教程

在我的上一个教程中,我提到我们将在第二个教程中收集训练数据并训练我们的模型。因此,在本教程中,我将逐步进行TensorFlow对象检测模型培训,我们将使用它来破解验证码图像。首先,下载前面的教程代码。在第一步中,我们将尝试一次检测不完整的验证码,但我们将尝试找出我们的图像中有多少符号,然后识别它们。因此,我们将从我们的数据集开始。如果你正在做类似的事情,你可以重复我的步骤。code

首先,我会提到,我将使用我在上一个CSGO目标机器人教程中使用的相同的检测方法,在那里我试图检测敌人并射击他们。因此,如果本教程没有您需要理解的那么详细,这里有一个使用自定义数据教程的更详细的循序渐进对象检测的链接。在本教程中,我假设您已经安装了TensorFlow对象检测。如果没有,请按照My TensorFlow安装教程进行安装。link following

标签图片:

首先,您需要收集数百个要破解的验证码图像。收集了所有图像后,是时候在每个验证码图像中标记符号了。LabelImg是一个很好的工具,它的GitHub页面上有明显的安装和使用说明。

LabelImg GitHub链接LabelImg GitHub link

LabelImg下载链接LabelImg download link

下载并安装LabelImg。运行此程序时,您应该会看到一个GUI窗口。从这里,选择“打开目录”并选择保存所有验证码图像的目录。现在,您可以开始使用“create rectbox”按钮进行注释。画出你的方框,把名字加进去,然后点击“确定”。保存,点击下一个图像,然后重复。您可以按“w”键绘制该框,然后执行“ctrl+s”以更快地保存。对我来说,100张照片平均需要1个小时。这取决于图像中的对象数量。请记住,这将需要一段时间,但这是值得的。我宁愿把时间花在标记图片上,而不是搜索开箱即用的验证码,因为您将准备您的数据集。如果您要尝试以不同于我的方式检测验证码图像,最好将标记的验证码图像添加到我的数据中,然后训练模型。

继续本教程,LabelImg将保存一个包含每个图像的标签数据的.xml文件。这些.xml文件将用于生成TFRecords,它是TensorFlow Trader的输入之一。标记并保存每个图像后,测试和训练目录中的每个图像都将有一个.xml文件。

一旦您给图像贴上标签,我们将把它们分成训练组和测试组。为此,只需将大约20%的图像及其注释XML文件复制到名为test的新目录中,然后将其余的复制到名为Train的新目录中。

有了标记的图像后,是时候生成TFRecords作为TensorFlow训练模型的输入数据了。本教程使用xml_to_csv.py和Generate_tfrecord.py脚本,但我创建的.bat脚本会让您更容易使用。

首先,图像.xml数据将用于创建包含列车和测试图像的所有数据的.csv文件。在主文件夹中,如果您像我一样使用我的文件结构,请启动xml_to_csv.bat脚本或在命令提示符下发出以下命令:Python xml_to_csv.py。这将在CAPTCHA_IMAGES文件夹中创建一个train_labels.csv和test_labels.csv文件。如果您使用不同的文件结构,请相应地将xml_更改为_csv.py。

接下来,如果您正在训练不同的自定义模型,请在文本编辑器中打开Generate_tfrecord.py文件,并将标签映射替换为您自己的标签映射,其中每个对象都分配有一个ID号。配置labelmap.pbtxt文件时将使用相同的编号分配。如果只是添加更多验证码图像,请保持此文件不变,除非您插入的是小写字母,然后对其进行相应更改。

接下来,通过启动我创建的Generate_tfrecord.bat文件生成TFRecord文件,该文件从本地文件夹发出以下命令:

python generate_tfrecord.py --csv_input=CAPTCHA_images\train_labels.csv --image_dir=CAPTCHA_images\train --output_path= CAPTCHA_images\train.record
python generate_tfrecord.py --csv_input=CAPTCHA_images\test_labels.csv --image_dir=CAPTCHA_images\test --output_path= CAPTCHA_images\test.record

这些行在Training文件夹中生成一个Train.Records和一个test.record文件。这些将用于训练新的目标检测分类器。

培训之前要做的最后一件事是创建标签映射并编辑培训配置文件。标签映射通过定义类名到类ID号的映射来告诉每个对象是什么。使用文本编辑器创建新文件,并将其另存为Training文件夹中的labelmap.pbtxt。(确保文件类型为.pbtxt)。在文本编辑器中,以与我的视频教程中相同的格式复制或键入标签地图。标签映射ID号应该与Generate_tfrecord.py文件中定义的相同。

配置培训:

最后,将目标检测训练流水线留给配置。它定义了将用于培训的模型和参数。这是运行实际培训之前的最后一步。

导航到TensorFlow Research\Object_Detect\Samples\configs目录,并将FETHER_rcnn_inestation_v2_coco.config文件复制到CAPTCHA_Training目录中。我选择这个模型是因为我已经为它做过培训,但是如果您要选择另一个模型,最好选择一个更高的“可可地图[^1]”,因为在这里,对我们来说,不是速度而是精度。

然后,使用文本编辑器打开该文件。我个人使用记事本++。需要对此.config文件进行几处更改,主要是更改类、示例的数量,并将文件路径添加到训练数据。

顺便说一下,路径必须以单正斜杠“/”输入,否则TensorFlow在尝试训练模型时会给出一个文件路径错误。路径必须包含在双引号(“)中,而不是单引号(‘)中。

第10行.将num_class更改为您希望分类器检测的不同对象的数量。对于我的验证码对象检测,它应该是:num_class:37line 107。将FINE_TUNE_CHECKPOINT改为:FINE_TUNE_CHECKPOINT:“faster_rcnn_inception_v2_coco_2018_01_28/model.ckpt”Lines 122和124。在TRAIN_INPUT_READER部分,将INPUT_PATH和LABEL_MAP_PATH更改为:INPUT_PATH:“CAPTCHA_IMAGES/Train.Records”LABEL_MAP_PATH:“CAPTCHA_Training/labelmap.pbtxt”第128行。将num_examples更改为您在CSGO_IMAGES\TEST目录中拥有的图像数量。我有86个图像,所以我将其更改为:Num_Examples:86行136和138。在eval_input_read部分中,将INPUT_PATH和LABEL_MAP_PATH更改为:INPUT_PATH:“CAPTCHA_IMAGENS/test.Records”LABEL_MAP_PATH:“CAPTCHA_Training/labelmap.pbtxt”

在进行更改后保存文件。就这样!准备并配置用于培训的培训文件。

运行培训:

在最新的TensorFlow对象检测文件中,无法使用model_main.pyI更快地训练_rcnn_inestation_v2_coco模型。但是,Training.py文件仍然位于/object_Detection/Legacy文件夹中。只需将Train.py从/Object_Detect/Legacy移到/Object_Detect文件夹中即可。将我们创建的CAPTCHA_IMAGES和CAPTCHA_TRAING文件夹移到/OBJECT_DETACTION文件夹中,然后从OBJECT_DETACTION目录继续cmd中的以下行:

python train.py --logtostderr --train_dir=CAPTCHA_training_dir/ --pipeline_config_path=CAPTCHA_training/faster_rcnn_inception_v2_coco.config

如果一切设置正确,TensorFlow将初始化培训。在实际培训开始之前,初始化可能需要长达30到60秒的时间。当培训开始时,它会向您显示培训步骤。

培训例程大约每10分钟定期保存检查点。您可以在命令提示窗口中按Ctrl+C来终止培训。我通常等到保存检查站后才终止培训。然后,您可以终止培训并稍后开始培训,培训将从上次保存的检查点重新启动。

我建议你训练这个模型,因为你至少要走40-60k步,这可能需要一些时间,但这是值得的。

这就是本教程的全部内容。在下一个教程中,我们将生成冻结的推理图并测试我们的验证码检测模型!

最初发表于https://pylessons.com/TensorFlow-CAPTCHA-solver-traininghttps://pylessons.com/TensorFlow-CAPTCHA-solver-training

原创文章,作者: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%e9%80%90%e6%ad%a5%e5%9f%b9%e8%ae%ad%e6%95%99%e7%a8%8b/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息