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 layerstruct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layerstruct('type', 's', 'scale', 2) %sub sampling layerstruct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layerstruct('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.
部分理论引用网络文献,若有侵权联系博主删除。
5 MATLAB代码与数据下载地址
见博客主页