#说明
这是个破解验证码的完整示例,其中破解过程的多处需要改进,+代表需要改进的程度,主要有:
- CFS合并过程(
++)- 判断可能的字符数(
++++)- 字符分割(
++)- 单个字符识别精度(
+++)
由于是业余时间写的,没放太多精力,有好的建议欢迎提出!或者联系作者:
#破解流程
CFS(color fill segementation)分割字符块- 使用
cnn(convolution neural network)判断字符块包含的字符个数- 均分(
equally divide)字符块,产生单个字符- 使用cnn识别单个字符,获得最终答案
#各阶段精度
- CFS: ~= 99%
- 判断CFS块的可能字符数: ~= 80%
- 字符分割: ~= 98%
- 单字符识别: ~= 89% (with Caffe)
#训练各阶段源码 ##判断长度
train_net/cnn_train_size*.py
##单字符识别
- train_net/cnn_train_chars.py keras版本,效果不太好,accuracy大概84%
- data/lenet.prototxt
caffe+mnist识别,accuracy 89%左右,效果略好于keras版,实际使用版本
#Software requirements
Caffe和pycaffe参考: Caffe installation instructionsKeras>= 0.2.x 参考: Keras installation instructionscv2(openCV的python接口) 将cv2.so放入/usr/lib/python2.7/dist-packagesskimagenumpyandpandasPIL
#demo
python demo.py | tee ./log/demo.log
##demo accuracy
由于多处存在瑕疵,acuracy是
23/50 = 46%,效果不好,还需大力改进
##TODO
- Add a new implement