最近在爬知乎的数据,遇到了验证码,像下面这样:
就想使用TensorFlow的CNN训练一个能自动识别验证码的模型,说干就干!
预备知识
Python3
PIL库和numpy库
TensorFlow
CNN(卷积神经网络)
步骤
使用Python3和TensorFlow构建一个卷积神经网络
购买打码服务标记足够多的知乎验证码,并存储到本地
使用PIL和numpy库将标记好的验证码转化成图片和标签数组
把图片和标签数据feed到卷积神经网络中,不断的训练,直到达到满意的准确率
保存训练好的网络模型
恢复网络模型,拉取知乎线上验证码转换成图片数组feed到神经网络中进行预测
Boom!
CNN
使用TensorFlow构建一个简单的卷积神经网络,该网络包含一个输入层、三个卷积层+池化层和最后一个全连接层,关于CNN的具体原理大家可以google查一查,数据科学家N多年总结出来也不是几句话能说清楚的。
使用TensorBoard显示整个网络结构如下:
购买打码服务标记足够多的验证码,不断输入到CNN网络中进行训练,我跑了一个晚上准确率达到了95%左右,走势图如下:
loss曲线如下:
源码地址:https://github.com/lonnyzhang423/zhihu-captcha
领取专属 10元无门槛券
私享最新 技术干货