captcha_solver icon indicating copy to clipboard operation
captcha_solver copied to clipboard

对于论文几处不太明白的地方

Open Lucas-Luoling opened this issue 6 years ago • 8 comments

首先感谢作者的这篇论文,给了很多启发。 认真的读了论文,有几处不太明白的地方,希望能解答。

我读论文理解的为

  • captcha generator生成器生成两种验证码(with security and without security),这个生成器是Opencv或者Pillow生成的而不是模型
  • captcha synthesizer是通过输入with security(上一步生成)输出为长得像real-like captcha,判别器模型输出captcha和真实captcha
  • preprocessing是通过输入captcha synthesizer的生成结果生成 without security图片(第一步生成的),判别器区分模型输出结果和第一步的without security captcha

疑问:但是看Figure11和12,经过preprocessing又不像是生成的without security,所以preprocessing的目标图片怎么得来的

  • 后面的LeNet的输入时without security captcha(经过preprocessing)

我的疑问

  • We use the grid search method presented in [4] to search for the optimal parameters for a given captcha scheme这个grid search是如何判定,穷举所有选择训练生成器,然后看效果?
  • Training the synthesizer takes around 2 days for one captcha scheme on our platform是由于模型复杂?

Lucas-Luoling avatar Nov 29 '19 09:11 Lucas-Luoling

谢谢对我们工作的关注,读于您的问题,我理解如下,有不对的请批评指正:

  1. GAN中判别器只是一个二分类器,其作用只是判断生成数据和真实数据是否同一个风格(可以理解为数据分布是否相似),而数据是生成器生成的,没有混淆背景的验证码生成时需要将背景参数设置为false。

  2. Pre-processing model的作用是去除真实验证码中的背景和干扰线,或者是填充空心字符。其训练数据全部由生成数据组成,即有背景(干扰线)和无背景(干扰线)的生成验证码。

  3. LeNet-5的训练也是使用生成的无背景(干扰线)的验证码,仅在模型迁移是使用了少量的去除背景(干扰线)的真实验证码数据。

  4. 对于调整生成参数的步骤,我们主要思想是把参数枚举出来,然后选择生成最好的那一组参数,所以训练比较慢。这里还有待完善,在后续的实验中我们发现,把可变参数的初始值调大(例如把字符旋转角度调整为[-50,50],涵盖真实数据中的旋转角度),也可以不用调整生成参数。

yeguixin avatar Dec 18 '19 02:12 yeguixin

感谢你的回答,根据你的回答,我说下我的理解

  • 对于第一个GAN,生成器输入(通过Opencv,Pillow生成的图片,记为Data1),输出(记为Data2),判别器区分Data2和真实数据(记为Data3)
  • 对于第二个GAN,生成器输入Data2,输出(记为Data4),判别器区分Data4和Data1
  • pre_trained阶段:Data1->GAN1->GAN2->LeNet5
  • fine-tune阶段:真实数据Data3->GAN2->LeNet5

Lucas-Luoling avatar Dec 18 '19 03:12 Lucas-Luoling

Pre_trained阶段直接是Data1->GAN1->LeNet5,这里的Data1是生成没有背景或干扰线的验证码图片。

yeguixin avatar Dec 18 '19 03:12 yeguixin

我的理解是应该有3个生成器

  1. 传统验证码生成器,就是我前面说的通过OpenCV或者Pillow生成的,目的是生成与真实验证码长得差不多的验证码(不需要特别像)
  2. GAN验证码生成器,目的通过pix级别微调传统验证码生成器生成的验证码,使其长得更像真实验证码,生成器的输入时传统验证码生成器生成的验证码,目标输出是真实验证码
  3. preprocessing,应该也是一种GAN生成器,目的是将有security features的验证码变成没有security features的验证码,方便后续LeNet5的分类,生成器的输入是第一个GAN的输出,目标输出是传统验证码生成器生成的验证码

Lucas-Luoling avatar Dec 18 '19 03:12 Lucas-Luoling

是这样。Pre_trained阶段是Data1->GAN1->LeNet5,这里的Data1是生成没有背景或干扰线的验证码图片。

yeguixin avatar Dec 18 '19 03:12 yeguixin

是这样。Pre_trained阶段是Data1->GAN1->LeNet5,这里的Data1是生成没有背景或干扰线的验证码图片。

好的,非常感谢,就是pre_trained不需要用到preprocessing,只有fine-tune才用到preprocessing的意思吧

Lucas-Luoling avatar Dec 18 '19 03:12 Lucas-Luoling

是的,pre_trained用的是生成数据,传统生成器可以直接生成无security features的验证码。

yeguixin avatar Dec 18 '19 03:12 yeguixin

谢谢对我们工作的关注,读于您的问题,我理解如下,有不对的请批评指正:

  1. GAN中判别器只是一个二分类器,其作用只是判断生成数据和真实数据是否同一个风格(可以理解为数据分布是否相似),而数据是生成器生成的,没有混淆背景的验证码生成时需要将背景参数设置为false。
  2. Pre-processing model的作用是去除真实验证码中的背景和干扰线,或者是填充空心字符。其训练数据全部由生成数据组成,即有背景(干扰线)和无背景(干扰线)的生成验证码。
  3. LeNet-5的训练也是使用生成的无背景(干扰线)的验证码,仅在模型迁移是使用了少量的去除背景(干扰线)的真实验证码数据。
  4. 对于调整生成参数的步骤,我们主要思想是把参数枚举出来,然后选择生成最好的那一组参数,所以训练比较慢。这里还有待完善,在后续的实验中我们发现,把可变参数的初始值调大(例如把字符旋转角度调整为[-50,50],涵盖真实数据中的旋转角度),也可以不用调整生成参数。

请问参数是怎么训练出来的,论文中说是网格搜索,那怎么判断哪组参数最优呢,如果是判别器反向传播来获得的,那loss是怎么影响网格搜索的呢。

RubanSeven avatar Jun 15 '20 22:06 RubanSeven