深度学习训练验证码识别

  • A+
所属分类:教程分享

1.实际操作训练验证码

由于这次发布,训练默认使用的网络是LeNet,而LeNet虽然识别时间很短,但是效果有限只能对付简单的验证码。所以建议大家采用NIN来训练,NIN基本可以应付绝大部分验证码,NIN的训练一定要记住,需要用nin的imagenet数据集模型来微调

NIN微调网络下载:http://www,zifuture,com/fs/6,models/nin_imagenet,caffemodel

训练好的网络:http://www,zifuture,com/fs/6,models/lenet_iter_5000,caffemodel

训练中的log日志:http://www,zifuture,com/fs/6,models/train,log log中可以看到网络构建的详细信息

网络可视化工具:http://www,zifuture,com/caffenet/Netscope,html#/editor

超参数的意义

net:"train_val.prototxt" 指定网络文件路径

test_iter:4 指定测试时需要迭代多少次

test_interval:300 指定训练迭代多少次执行一次测试

test_initialization:false 指定初始化完毕后不要测试

display:40 指定每40次迭代输出一次信息

average_loss:40 指定40次loss求平均

base_lr:0.001 指定基础学习率为0.001

lr_policy:"step" 指定学习率策略是step

stepsize:320000 指定学习率的步距是320000

gamma:0.96 指定学习率γ系数0.96

max_iter:10000000 指定最大迭代次数1000万次

momentum:0.9 指定阻力系数0.96

weight_decay:0.0002 指定权重衰减项

snapshot:40000 指定多少次保存一次快照

snapshot_prefix:"models/googlenet" 指定快照保存的路径前缀

solver_mode:GPU 指定训练的方式

batch_size分为train的和val的batch_size,即指train_lmdb数据集上,和val_lmdb数据集上对于迭代次数的设置,记得要让迭代次数跑完全部的训练图片,即至少一个epochs(一个完整的训练图片迭代)。1epochs = 在数据集上迭代完全部样本需要的次数,如果数据集有100个图,batch_size是5,则1epochs = 100 / 5 = 20,意味着1个epochs是20次迭代。

所以:

max_iter:一般设置为30个epochs(指train_lmdb),可以大致估算就行,不一定要准确计算

test_iter:设置为1epochs,即test的batch_size*test_iter= val_lmdb的样本总数

test_interval:设置为1个epochs(这里是train_lmdb)

2.一些比较关心的事情

做到这一步,大家会比较关心以下问题:

1.动态位数验证码可以识别吗? 可以

2.怎么做到更多位的识别? 只需要简单的修改即可

3.怎么调用他完成识别任务? cc提供有案例,我们可以实际操作一下

4.汉字或者复杂的验证码怎么做好? 可以用resnet系列,比如resnet50能做到很好效果

5.比如坐标类的复杂验证码如何识别 这个后续课程会讲到

3.一些异常的处理

caffe的异常常常是以程序崩溃来表现出来,因此很多操作容易导致程序直接崩溃,这不是bug,而是发生比如参数或者哪里错误,他这里的崩溃其实是断言错误而提示出来的,这时候你得看黑色屏幕里面提示的信息来debug

深度学习训练验证码识别

部署时正确的错误检查方法,是使用CC3.0-alpha.4目录下的debug.e(如果是其他语言,也一样在控制台界面中执行)的形式,在控制台程序中,运行模型和识别程序,此时,如果有异常会在黑窗口提示出来。确定没问题再集成到软件中.

深度学习训练验证码识别

  • 交流群
  • 扫一扫和我一起交流
  • weinxin
  • QQ游戏群
  • 扫一扫和我一起游戏
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: