ZennoLab

Automate everything

用户工具

站点工具


侧边栏

本页面的其他翻译:

zh:addons:capmonster:learning:module-teach

5. 模块训练和测试

前面的步骤全部做完后,你现在可以开始训练你的识别模块了。

训练的提示

为了更好的开始,我们建议先选择一些简单的核心,并且使用一大部分符号(总的3分之1的样子)进行快速识别。尝试快速的进行10多个训练,并一边检测结果,这样迭代进行。如果你已经得到正确的结果,调整参数,然后重新训练。这次你可以尝试更多和更高的品质。如果一切都有,就再往复杂和高品质去训练。不断的重新训练,在这个过程中不断的调整参数。

三种符号识别错误

1)错误识别 - 存在的符号却识别错误,比如,本来是“a”,却识别出来“c”。
2)错过符号 - 存在的符号,模块却识别不到。换句话说,本来是“a”,你得到的空值。
3)假识别 - 符号不存在,比如在两个符号之间,模块识别出来了第三个符号。

模块训练

核心设置


核心能力 - 核心能力越高,符号的识别率越高。但是,性能就较慢了,并且需要更多的CPU处理时间。我们推荐开始时使用简单的核心,有可能已经能够满足正确的结果了。当你调整能力时,你可以看在下面看到策略评分。这个参数表示需要多少CPU时间去处理一个点。这只是个数字,但是没有单位,可以用来比较两个核心。如果一个核心是另外一个的两倍那么大,那么在同样的环境下这个核心的性能就要两倍低于那个核心。核心策略分数同样也取决于符号识别的窗口尺寸。因此,调整这两个设置,你可以创建所需的识别核心、识别率、处理速度。

训练设置

\

训练速度 - 速度越慢,识别率越高。但是我们不建议一开始就使用慢的训练速度。开始的时候可以调快你的模块训练速度,这样可能会有一些错误结果,收集他们,然后返回之前的步骤中去纠正他们。对于简单的验证码,快速的训练可能就能得到很好的结果了。

开始设置 - 这个参数决定训练开始时的速度。可以让它为默认值,只有当以下的参数发错错误的时候才去改变他。

中心变化 - 当训练收集到的符号时,他们的中心你会标记出来。你可以增加这些点的变化,这样可能提高识别率。反之,识别率下降。当在下段“模块测试”中,你就会看到这个参数有用的时候了。

为识别错误符号训练 - 如果你获取到了错误了,那么这个值应该提高(3) - 错误识别错误出现的次数会比其他错误多。我们推荐使用默认的值:10。

训练符号部分 - 核心训练在收集到的符号中运行,但是不是完全这样,它们中有一些是用于核心测试的(第一张图)。测试是非常重要的,因为可以知道训练进程是否成功,以及去跳转设置而获得更好的结果。核心测试至少需要30-50个符号,并不是越多越好。最好是先使用一部分符号去测试,然后根据结果再去调整参数再用最少的符号去重新训练。

识别设置

识别阈 - 这个参数介于0(在高亮区域没有符号)和1(符号肯定在高亮区域)之间。识别阈可以帮助你准确知道那是不是含有符号。所有的值如果高于这个阈值,则表示那里有符号,如果低于这个阈值,则没有。介于这个值,则需要我们去调整一些参数去避免训练问题。

符号中心之间的最短距离 - 非常有用的参数,防止在已经识别到的符号里面再搜索其他的符号,可以最小化识别错误(3)。用Paint打开图片,根据你的滤镜进行缩放,并且测量两个元素之间最短的距离(像素)。构想一个所有的验证码图片中最小的值作为它的参数值。如果你发现错误了,你可以在模块测试的时候就可以更改它。

用于测试的验证码图片 - 识别测试会在模块训练过程中不断进行,用来估算模块的识别率。如果你有很多图片 - 测试时间会比较长,但会得到一个较为准确的估算。如果图片很少,测试很快,结果就会不怎么准确了。经过几次模块训练,你就能知道应该设置一个什么值了。

测试频率 - 指定多久进行测试。默认的情况,模块测试是在每个训练周期进行一次。使用这个参数,你可以指定多少个周期后才进行测试。

快速识别 - 复杂的验证码(符号之间相隔很近,在一条线没有空格,严重扭曲,许多不同种类的符号)需要设置放大,高的核心能力,大的质量中心转化等等。因为这些,模块训练可能要花费很长的时间。这个参数对此对了些优化,可以提高识别测速5到10倍。但是这个可能会降低识别率。你可以尝试在模块测试的时候开启它。要高的识别率,你可能需要调整质量中心搜索设置。我们建议在模块训练的时候不要开启快速识别,否则你不能获取到尽可能高的识别结果了。

训练进度

通过设置以上参数,你现在可以运行训练了。训练进程将会用图和进度条的形式显示在窗口上。在窗口上有3个图形:

1)第一张图显示了收集符号在模块测试下的结果:
绿线 - 正确识别的符号
黄线 - 没有找到符号(第二种识别错误)
红线 - 错误识别的符号 (第一种识别错误)

2)第二种图显示了错误的识别错误结果:
绿线 - 正确的答案(没有找到任何符号)
黄线 - 支持的识别 (核心识别到了某些东西,但那里没有符号)
红线 - 错误识别 (third recognition error)

3)第三张图显示一个模块识别率的近似值。

停止训练

如果你认为不会得到更好的结果了,训练过程可以随时停止。

停止或者完成(300次循环)训练后,你应该选择哪个核心用于你的模块中:

1)最大的结果 - 如果你在最近的一次循环中使用了最少的验证码图片(小于500张),所取的结果跟最好的结果没什么差别,我们推荐你选择这个核心结果。

2)最好的结果 - 在所有训练中达到最好的结果核心用于模块。

3)使用以前的训练结果 - 如果你之前已经有过最好的结果,你可以选择这个选项。

如何着手训练

如果训练进行成功,图片应该是这样的:

第一个图(符号识别)绿线上升达到最大值,黄线和红线降低到0。

第二个图(错误识别)绿线总是在最顶端,红线接近0,黄线的值比红线大在5到10倍多。

第三个图(获取识别率)蓝线逐渐上升,最开始很快,到后面就上升的很慢。

这张图是在制作简单验证码模块训练的时候截的,请记住,你可能会得到另一个图形,开始识别率可能较低,绿线上升,同时黄线和红线慢慢下降。所有这些都基于你的训练设置和验证码核心能力。最重要的是在训练的时候有所倾向。

训练的问题及解决

第一条规定 - 如果你在用这款软件有什么不明白,第一时间在我们论坛询问,不要浪费你的时间!

这里有很多问题你有可能在模块训练的时候遇到,他们可以从显示训练进程的图表里面找到帮助:
1)已经进行了10次循环,但是第一张图的绿线和红线还是没有上升。
这意味着这个核心没有启用。开始设置那个参数太低,提高10倍并开始训练。重复提高直到绿线开始上升。

2)第一张图上红线上升超过绿线。
*可能是开始参数设置太高。尝试降低10倍并重新训练。重复降低直到问题解决。如果降低开始参数后你又出现了问题(1),则问题是由其他影响的。
*可能是收集的符号不够,或者为符号使用了错误的设置去应用滤镜。收集更多的符号或者重新配置滤镜。
*有可能在你收集符号的时候把事情搞砸了,比如命名错误。在滤镜区域查看收集(那里有个“显示问题”,点击查看元素是否匹配文本)。

3)第一张图中红线离0很远.
第一种类型的识别错误太多。
这有可能有多种原因:
* 没有收集到足够多符号
* 太复杂验证码
* 过于简单的网络
* 训练速度太快
* 中心偏差太大
* 有太多类型的符号 (有可能你正在解决中文字符的验证码)。

4) 在第一次循环之前的第一次测试,返回太多的错误结果(红线)。
这里没有什么错误,有可能是你设置识别阈低于了0.5。

5) 循环次数达到了100,但是第一张图的黄线始终没有降低到0。
这个核心找不到太多的元素 - 识别错误(2)。
可能的原因:
*识别阈值太高。推荐值为0.5 - 0.6。
*开始参数太低. 尝试升高3-5倍。
*有没足够的符号,并且他们太扭曲了。
*太复杂的网络。
*过高的训练速度。

6) 第二张图的红线升的太高。
这个核心找到假的符号过于频繁 - 第三种识别错误(3)。为了避免这点,可以提高为识别错误符号训练这个参数。

7) 虽然其他的图片是正确的,第三张图的识别率一直不提高。
训练进行的很好,但是验证码图片却没有识别出来,你需要在测试过程中检测下原因。 完整的模块训练,第一张图和第二张图的结果是相似的。看识别错误的发生并阅读我们之前关于模块测试的文章,找到问题并解决识别错误。

zh/addons/capmonster/learning/module-teach.txt · 最后更改: 2015/07/14 15:51 (外部编辑)