ZennoLab

Automate everything

用户工具

站点工具


zh:addons:capmonster:learning:module-teach

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

zh:addons:capmonster:learning:module-teach [2015/07/14 15:51] (当前版本)
行 1: 行 1:
 +====== 5. 模块训练和测试 ======
  
 +前面的步骤全部做完后,你现在可以开始训练你的识别模块了。\\
 +===== 训练的提示 =====
 +
 +为了更好的开始,我们建议先选择一些简单的核心,并且使用一大部分符号(总的3分之1的样子)进行快速识别。尝试快速的进行10多个训练,并一边检测结果,这样迭代进行。如果你已经得到正确的结果,调整参数,然后重新训练。这次你可以尝试更多和更高的品质。如果一切都有,就再往复杂和高品质去训练。不断的重新训练,在这个过程中不断的调整参数。\\
 +
 +===== 三种符号识别错误 =====
 +
 +1)错误识别 - 存在的符号却识别错误,比如,本来是“a”,却识别出来“c”。\\
 +2)错过符号 - 存在的符号,模块却识别不到。换句话说,本来是“a”,你得到的空值。\\
 +3)假识别 - 符号不存在,比如在两个符号之间,模块识别出来了第三个符号。\\
 +
 +
 +===== 模块训练 =====
 +
 +==== 核心设置 ====
 +{{:​en:​addons:​core_settings.png|}}\\
 +**核心能力** - 核心能力越高,符号的识别率越高。但是,性能就较慢了,并且需要更多的CPU处理时间。我们推荐开始时使用简单的核心,有可能已经能够满足正确的结果了。当你调整能力时,你可以看在下面看到策略评分。这个参数表示需要多少CPU时间去处理一个点。这只是个数字,但是没有单位,可以用来比较两个核心。如果一个核心是另外一个的两倍那么大,那么在同样的环境下这个核心的性能就要两倍低于那个核心。核心策略分数同样也取决于符号识别的窗口尺寸。因此,调整这两个设置,你可以创建所需的识别核心、识别率、处理速度。
 +
 +==== 训练设置 ====
 +
 +{{:​en:​addons:​train_settings.png}}\\\
 +
 +**训练速度** - 速度越慢,识别率越高。但是我们不建议一开始就使用慢的训练速度。开始的时候可以调快你的模块训练速度,这样可能会有一些错误结果,收集他们,然后返回之前的步骤中去纠正他们。对于简单的验证码,快速的训练可能就能得到很好的结果了。
 +
 +**开始设置** - 这个参数决定训练开始时的速度。可以让它为默认值,只有当以下的参数发错错误的时候才去改变他。
 +
 +**中心变化** - 当训练收集到的符号时,他们的中心你会标记出来。你可以增加这些点的变化,这样可能提高识别率。反之,识别率下降。当在下段“模块测试”中,你就会看到这个参数有用的时候了。
 +
 +**为识别错误符号训练** - 如果你获取到了错误了,那么这个值应该提高(3) - 错误识别错误出现的次数会比其他错误多。我们推荐使用默认的值:10。
 +
 +**训练符号部分** - 核心训练在收集到的符号中运行,但是不是完全这样,它们中有一些是用于核心测试的(第一张图)。测试是非常重要的,因为可以知道训练进程是否成功,以及去跳转设置而获得更好的结果。核心测试至少需要30-50个符号,并不是越多越好。最好是先使用一部分符号去测试,然后根据结果再去调整参数再用最少的符号去重新训练。
 +==== 识别设置 ====
 +
 +{{:​en:​addons:​rec_settings.png|}}
 +
 +**识别阈** - 这个参数介于0(在高亮区域没有符号)和1(符号肯定在高亮区域)之间。识别阈可以帮助你准确知道那是不是含有符号。所有的值如果高于这个阈值,则表示那里有符号,如果低于这个阈值,则没有。介于这个值,则需要我们去调整一些参数去避免训练问题。
 +
 +**符号中心之间的最短距离** - 非常有用的参数,防止在已经识别到的符号里面再搜索其他的符号,可以最小化识别错误(3)。用Paint打开图片,根据你的滤镜进行缩放,并且测量两个元素之间最短的距离(像素)。构想一个所有的验证码图片中最小的值作为它的参数值。如果你发现错误了,你可以在模块测试的时候就可以更改它。
 +
 +**用于测试的验证码图片** - 识别测试会在模块训练过程中不断进行,用来估算模块的识别率。如果你有很多图片 - 测试时间会比较长,但会得到一个较为准确的估算。如果图片很少,测试很快,结果就会不怎么准确了。经过几次模块训练,你就能知道应该设置一个什么值了。
 +
 +**测试频率** - 指定多久进行测试。默认的情况,模块测试是在每个训练周期进行一次。使用这个参数,你可以指定多少个周期后才进行测试。
 +
 +**快速识别** - 复杂的验证码(符号之间相隔很近,在一条线没有空格,严重扭曲,许多不同种类的符号)需要设置放大,高的核心能力,大的质量中心转化等等。因为这些,模块训练可能要花费很长的时间。这个参数对此对了些优化,可以提高识别测速5到10倍。但是这个可能会降低识别率。你可以尝试在模块测试的时候开启它。要高的识别率,你可能需要调整质量中心搜索设置。我们建议在模块训练的时候不要开启快速识别,否则你不能获取到尽可能高的识别结果了。
 +
 +==== 训练进度 ====
 +
 +通过设置以上参数,你现在可以运行训练了。训练进程将会用图和进度条的形式显示在窗口上。在窗口上有3个图形:\\
 +{{:​en:​addons:​training_progress.png?​500}}\\
 +
 +1)第一张图显示了收集符号在模块测试下的结果:\\
 +绿线 - 正确识别的符号\\
 +黄线 - 没有找到符号(第二种识别错误)\\
 +红线 - 错误识别的符号 (第一种识别错误)\\
 +
 +2)第二种图显示了错误的识别错误结果:\\ ​
 +绿线 - 正确的答案(没有找到任何符号)\\
 +黄线 - 支持的识别 (核心识别到了某些东西,但那里没有符号)\\
 +红线 - 错误识别 (third recognition error)\\
 +
 +3)第三张图显示一个模块识别率的近似值。
 +
 +==== 停止训练 ====
 +
 +{{:​en:​addons:​training_result.png}}
 +
 +如果你认为不会得到更好的结果了,训练过程可以随时停止。
 +
 +停止或者完成(300次循环)训练后,你应该选择哪个核心用于你的模块中:
 +
 +1)最大的结果 - 如果你在最近的一次循环中使用了最少的验证码图片(小于500张),所取的结果跟最好的结果没什么差别,我们推荐你选择这个核心结果。
 +
 +2)最好的结果 - 在所有训练中达到最好的结果核心用于模块。
 +
 +3)使用以前的训练结果 - 如果你之前已经有过最好的结果,你可以选择这个选项。
 +
 +==== 如何着手训练 ====
 +
 +{{:​en:​addons:​correct_graphics.png?​500}}
 +
 +如果训练进行成功,图片应该是这样的:
 +
 +第一个图(符号识别)绿线上升达到最大值,黄线和红线降低到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 (外部编辑)