深度学习之再探验证码识别-Keras
基于Keras可以快速搭建神经网络进行深度学习
卷积神经网络(Convolutional Neural Networks)是一种人工神经网络结构,常被应用于图像识别,卷积神经网络在图像识别方面能够得出优秀的识别结果
搭建出自己的神经网络后,基于卷积神经网络的处理步骤,对图像进行特征提取。首先准备一张普通的手写字母图,作为识别素材
CNN卷积神经网络强大在于它能够很好的获取到图像的核心特征,图像经过两层卷积和池化后核心特征已经很明显得显现出来,大小也被压缩了很多
input_img = Input(shape=(28, 19, 1)) cnn = Convolution2D(filters=32, kernel_size=(3, 3), name="layer_one")(input_img) cnn = Activation('relu')(cnn) cnn = Convolution2D(filters=32, kernel_size=(3, 3), name="layer_two")(cnn) cnn = Activation('relu')(cnn) cnn = MaxPooling2D(pool_size=(2, 2))(cnn) cnn = Dropout(0.25)(cnn) cnn = Flatten()(cnn) cnn = Dense(250)(cnn) cnn = Activation('relu')(cnn) cnn = Dropout(0.5)(cnn) cnn = Dense(36)(cnn) cnn = Activation('softmax')(cnn) model = Model(outputs=cnn, inputs=input_img) model.compile(optimizer='adadelta', loss='categorical_crossentropy', metrics=['accuracy'])
训练过程使用名为Cage的开源验证码生成器来批量生成验证码
生成8000张4位验证码并以验证码实际字符命名,生成时候通过判断是否重名,避免覆盖导致实际数量小于生成数量
采用“过度切割法”切割验证码,得到32000个字符图片
将32000张字符图集30000份用作训练,2000份用作测试,每完成一次卷积神经网络训练进行一次样本测试,训练5次的精度和损失变化
model.fit(x_train, y_train, epochs=100, batch_size=500) loss, accuracy = model.evaluate(x_test, y_test) print '\ntest loss: ', loss print '\ntest accuracy: ', accuracy #保存模型 model.save('my_model.h5')
由于机器配置差训练过于费时只训练了二十次,最终对此类4位验证码的综合识别率只达到了80%(单个字符识别率的4次方)。
评论:
你是衣冠楚楚的人 而我只是一个打满补丁的猴子
-
小博客一个,没必要伤害她
热门文章
存档
标签
最新评论
- yz
想想你喜欢什么,想做什么,找好一个自己的... - 小屿
@Jahan:testfun1024#p... - Jahan
Hello dear Xia0 i a... - brave
@万:你的手机应该是anroid7.0以... - jhsy
新版的cookie机制应该又变了. 而且... - 小屿
@janto:无兴趣 - janto
新版的这些好像不起作用了,deviceI... - hunk
正在研究,可否发一份新源码?todz$1... - miffy
请问可以加个好友咨询下吗? - vegetableChicken
@Snkrs:我也遇到和你一样的问题了,...
2017-06-10 07:57