sso_captcha_DL
华师sso验证码识别
前言
经过之前学校的AI算法挑战赛,算是初步入门了深度学习,成为了一个调参侠,看到之前的帖子有大佬用深度学习来识别学校的验证码的,就想学习一波,重现一下他的模型,然后用selenium登录sso,解放双手~
Github(暂时移除)
感谢
大佬的Github
大佬的帖子
我使用了他的数据集,数据处理模块并借鉴了模型
整体思路
学习了大佬的模型,他用Keras搭建了一个比较简单但十分优秀的模型,表现非常好,acc可以在0.9左右,我又想到了之前校赛用过的图像分类的模型以及迁移学习的思路,在他的模型基础上加入了Inception-V3模型,去掉了ImageNet自带的权重和顶层,所有层都是trainable,表现有所进步,在200个eopch的时候val_acc已经有0.93左右,虽然在后面线上测试的时候感觉不太出来,然后就是就是图片处理,变成灰度图,二值化,降噪,标签变成独热编码,最后就是train,任务量不大指与校赛相比,200个epoch是跑了3+小时。
先用selenium模拟人打开浏览器,输入账号密码,然后用pyautogui定位并截图验证码保存,原谅我用这么笨的办法,加载模型来predict,再把结果填进去。因为不可能一次性就答对,所以我设置了3次机会。如果3次都错误,那么这个模型也没有存在的必要了。
模型检验
模拟了50次登录的过程,并且每次只有一次机会输入验证码,成功率大概是0.78,5次当中起码有4次正确,我感觉还可以接受。
不足
- 在大佬的模型里面提到了大小写敏感的问题,我目前还没有发现。
- 打开浏览器,到完全登录进去所需时间大概是8-9s,所以这个项目有点鸡肋,懒人:可用;普通人:手输;大神:搭一个100%正确率的模型(bushi)。
思考
- 之前校赛的时候也稍微接触了一下AlexNet,VGG,EfficientNet之类的网络,可能对于验证码识别有帮助。
- 现在的我还是处于只会layer加加加的人,所以在暑假还是要学习一波底层的原理。
- 这个模型是在考试周的周末花了一个早上搞的,感觉还是有很多可以细化的地方,参数也没怎么调过,就训练了一次,暑假可以再跑一跑。