Code Monkey home page Code Monkey logo

captcha's Introduction

DeepLab

机器学习、深度学习、量化投资,好用的工具、实用的工具,尽在DeepLab !

验证码识别

问题

通常验证码识别需要如下几个步骤:

(1)将整张图片切割为多个小图片,每个小图片包含一个字符

(2)训练模型,识别每个小图片中的字符

(3)将每个小图片的识别出的字符拼接为字符串作为整体识别结果

复杂一点的验证码往往各个字符不是均匀分布,难以准确切割。是否可以不切割图片直接识别其中的字符串?

思路

这其实是一个多标签分类问题,每个验证码图片有4个字符(标签),并且顺序固定;只要将卷积神经网络的最后一层softmax稍加修改就能实现多标签分类。

如下图所示,假设我们的验证码一共有4个字符,每个字符取26个大写字母中的一个;将卷积神经网络的输出层激活函数修改为sigmoid,输出层的[0-25]输出值对应第一个字符的onehot编码,[26-51]输出值对应第二个字符的onehot编码,[52-77]输出值对应第三个字符,[78-103]输出值对于第四个字符,并使用binary_crossentropy作为损失函数。

github

实验环境

keras theano cv2

训练集4000张图片,测试集2000张,每张图片大小20*80

网络结构

github

代码结构

generate.py 在GenPics目录下随机生成6000张验证码图片及其对应验证码字符串。

cnn_end2end_ocr.py 端到端验证码识别模型的训练、测试。

模型结果

Epoch = 60,Test Whole Accurate : 0.994

对于本文使用的较为简单的验证码,测试集整体正确率(4个字符都正确识别)99%以上。

参考:

https://zhuanlan.zhihu.com/p/21344595

captcha's People

Contributors

junliangliu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

captcha's Issues

4-6个字符能用一个模型实现吗?

你好,你的模型我成功复制了,4个字符,6个字符单独测试都识别率很高,有没有办法一个模型既支持4个字符又支持6个字符。

fit error help

model = Sequential()

model.add(Conv2D(32, kernel_size=(5, 9),
activation='relu', input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 4)))

model.add(Conv2D(16, kernel_size=(5, 7), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 3)))

model.add(Flatten())

#num_classes*4 =104

model.add(Dense(num_classes*4, activation='sigmoid'))

model.compile(loss=keras.losses.binary_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])

model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(x_test, y_test))

ValueError: Error when checking target: expected dense_1 to have shape (104,) but got array with shape (26,)

why? help me~~~~thks~

write labels err

writer.writerows(labels)

TypeError: a bytes-like object is required, not 'str'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.