1 简介
针对登录界面验证码图像中字符,提出了一种基于卷积 神经网络( CNN)的验证码识别方法.先对验证码图像进行预处理得到单个字符,再对单 字符图像数据建立 CNN模型进行迭代训练.该方法针对
验证码图像特征,图像字符分割正确率接近100%,单个验证码字符正确识别率达98%以上,单张验证码图像识别率接近93%.试验表明,该方法对验证码识别率较高,可应用于验证码的自动识别.
2 部分代码
function [ ] = train_cnn( iteration )
%UNTITLED3 此处显示有关此函数的摘要
% 此处显示详细说明
[ trainData,trainLabel ] = train_pro( );
datasize = sqrt(size(trainData,1));
trainLabelVector = trainLabel;
% trainLabelVector = zeros(36, length(trainLabel));
% for i = 1:length(trainLabel)
% trainLabelVector(:,i) = LabelToVector(trainLabel(i));
% end
%% 2:CNN训练
% 工具包路径添加
path(path, 'DeepLearnToolbox-master/CNN/')
path(path, 'DeepLearnToolbox-master/util/')
train_x = double(reshape(trainData,datasize, datasize, length(trainLabel)));
train_y = double(trainLabelVector);
rand('state',0)
cnn.layers = {
struct('type', 'i') %input layer
struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer
struct('type', 's', 'scale', 2) %sub sampling layer
struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer
struct('type', 's', 'scale', 2) %subsampling layer
};
opts.alpha = 2;
opts.batchsize = 6;
opts.numepochs = iteration;
cnn = cnnsetup(cnn, train_x, train_y);
cnn = cnntrain(cnn, train_x, train_y, opts);
%% 3:对测试数据进行预测
%[er, bad] = cnntest(cnn, train_x, train_y);
%plot mean squared erro = //
%figure; plot(cnn.rL);
%assert(er<0.12, 'Too big error');
save cnn_net cnn datasize;
end
3 仿真结果
4 参考文献
[1]王振, 高茂庭. 基于卷积神经网络的图像识别算法设计与实现[J]. 现代计算机:专业版, 2015(20):61-66.
[2]陈超, 毛坚桓, 刘寅. 基于卷积神经网络的铁路货运网站验证码识别[J]. 指挥信息系统与技术, 2016.
部分理论引用网络文献,若有侵权联系博主删除。