前言
随着大数据时代,人工智能时代的到来,深度学习的应用越来越广,场景识别、目标检测、人脸识别、图像识别等等广泛应用。而我们的业务场景需要进行验证码识别,接入第三方打码平台产生费用较大,故此我引入了深度学习框架来降低成本。
一、CC框架的简介
CC框架,是一个由Caffe包装的一个深度学习应用框架。一个简单易用的DLL接口库,一套训练的解决方案和部署的解决方案,也是一个完全开源免费的公开项目。GitHub地址:https://github.com/dlunion/CC4.0
CC的特性有:
支持最新的人脸识别训练,Center Loss。
支持目标检测训练,SSD。
支持CPU、GPU、Win32、x64。
支持快速深度学习项目部署,只有极少的依赖项。
支持GPU高性能服务,也支持易语言实现GPU高性能服务。
支持模型压缩功能。
支持LSTM+CTC、多标签,便于OCR、验证码识别。
有C++、C#、易语言调用案例。
非常容易使用而且稳定。
二、步骤
1、样本采集
采集样本后需命名正确的验证码作为名称,不想手动修改的可采用第三方打码平台打码时记录下来,我这里采集了1500张图片作为样本。
2、生成标签文件
3、生成数据库
使用make-lmdb.bat生成数据库
4、生成网络
分类数量看 label-map.txt 的行数
image.png
5、开始训练
使用train-gpu.bat开始训练。
耐心等待,机器显卡性能不好的话时间会比较长,直到出现accuracy = 1,我们就可以停止了。
训练好的文件,选取最后一个库就可以了。
6、调用识别
使用训练好的文件识别 100%通过 没有错误的。
三、超参数的意义
在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
下面介绍超参数的意义及参数
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)