对于论文几处不太明白的地方
首先感谢作者的这篇论文,给了很多启发。 认真的读了论文,有几处不太明白的地方,希望能解答。
我读论文理解的为
- 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是由于模型复杂?
谢谢对我们工作的关注,读于您的问题,我理解如下,有不对的请批评指正:
-
GAN中判别器只是一个二分类器,其作用只是判断生成数据和真实数据是否同一个风格(可以理解为数据分布是否相似),而数据是生成器生成的,没有混淆背景的验证码生成时需要将背景参数设置为false。
-
Pre-processing model的作用是去除真实验证码中的背景和干扰线,或者是填充空心字符。其训练数据全部由生成数据组成,即有背景(干扰线)和无背景(干扰线)的生成验证码。
-
LeNet-5的训练也是使用生成的无背景(干扰线)的验证码,仅在模型迁移是使用了少量的去除背景(干扰线)的真实验证码数据。
-
对于调整生成参数的步骤,我们主要思想是把参数枚举出来,然后选择生成最好的那一组参数,所以训练比较慢。这里还有待完善,在后续的实验中我们发现,把可变参数的初始值调大(例如把字符旋转角度调整为[-50,50],涵盖真实数据中的旋转角度),也可以不用调整生成参数。
感谢你的回答,根据你的回答,我说下我的理解
- 对于第一个GAN,生成器输入(通过Opencv,Pillow生成的图片,记为Data1),输出(记为Data2),判别器区分Data2和真实数据(记为Data3)
- 对于第二个GAN,生成器输入Data2,输出(记为Data4),判别器区分Data4和Data1
- pre_trained阶段:Data1->GAN1->GAN2->LeNet5
- fine-tune阶段:真实数据Data3->GAN2->LeNet5
Pre_trained阶段直接是Data1->GAN1->LeNet5,这里的Data1是生成没有背景或干扰线的验证码图片。
我的理解是应该有3个生成器
- 传统验证码生成器,就是我前面说的通过OpenCV或者Pillow生成的,目的是生成与真实验证码长得差不多的验证码(不需要特别像)
- GAN验证码生成器,目的通过pix级别微调传统验证码生成器生成的验证码,使其长得更像真实验证码,生成器的输入时传统验证码生成器生成的验证码,目标输出是真实验证码
- preprocessing,应该也是一种GAN生成器,目的是将有security features的验证码变成没有security features的验证码,方便后续LeNet5的分类,生成器的输入是第一个GAN的输出,目标输出是传统验证码生成器生成的验证码
是这样。Pre_trained阶段是Data1->GAN1->LeNet5,这里的Data1是生成没有背景或干扰线的验证码图片。
是这样。Pre_trained阶段是Data1->GAN1->LeNet5,这里的Data1是生成没有背景或干扰线的验证码图片。
好的,非常感谢,就是pre_trained不需要用到preprocessing,只有fine-tune才用到preprocessing的意思吧
是的,pre_trained用的是生成数据,传统生成器可以直接生成无security features的验证码。
谢谢对我们工作的关注,读于您的问题,我理解如下,有不对的请批评指正:
- GAN中判别器只是一个二分类器,其作用只是判断生成数据和真实数据是否同一个风格(可以理解为数据分布是否相似),而数据是生成器生成的,没有混淆背景的验证码生成时需要将背景参数设置为false。
- Pre-processing model的作用是去除真实验证码中的背景和干扰线,或者是填充空心字符。其训练数据全部由生成数据组成,即有背景(干扰线)和无背景(干扰线)的生成验证码。
- LeNet-5的训练也是使用生成的无背景(干扰线)的验证码,仅在模型迁移是使用了少量的去除背景(干扰线)的真实验证码数据。
- 对于调整生成参数的步骤,我们主要思想是把参数枚举出来,然后选择生成最好的那一组参数,所以训练比较慢。这里还有待完善,在后续的实验中我们发现,把可变参数的初始值调大(例如把字符旋转角度调整为[-50,50],涵盖真实数据中的旋转角度),也可以不用调整生成参数。
请问参数是怎么训练出来的,论文中说是网格搜索,那怎么判断哪组参数最优呢,如果是判别器反向传播来获得的,那loss是怎么影响网格搜索的呢。