华师sso验证码识别
经过之前学校的AI算法挑战赛,算是初步入门了深度学习,成为了一个调参侠,看到之前的帖子有大佬用深度学习来识别学校的验证码的,就想学习一波,重现一下他的模型,然后用selenium登录sso,解放双手~
我使用了他的数据集,数据处理模块并借鉴了模型
- 搭建模型
学习了大佬的模型,他用Keras搭建了一个比较简单但十分优秀的模型,表现非常好,acc可以在0.9左右,我又想到了之前校赛用过的图像分类的模型以及迁移学习的思路,在他的模型基础上加入了Inception-V3模型,去掉了ImageNet自带的权重和顶层,所有层都是trainable,表现有所进步,在200个eopch的时候val_acc已经有0.93左右,虽然在后面线上测试的时候感觉不太出来,然后就是就是图片处理,变成灰度图,二值化,降噪,标签变成独热编码,最后就是train,任务量不大指与校赛相比,200个epoch是跑了3+小时。
[upl-image-preview url=https://static.0xffff.one/assets/files/2021-07-03/1625329275-116519-e8562172-6420-4f3c-a6bb-e906c0e97623.png]
- 实际使用
先用selenium模拟人打开浏览器,输入账号密码,然后用pyautogui定位并截图验证码保存,原谅我用这么笨的办法,加载模型来predict,再把结果填进去。因为不可能一次性就答对,所以我设置了3次机会。如果3次都错误,那么这个模型也没有存在的必要了。
[upl-image-preview url=https://static.0xffff.one/assets/files/2021-07-03/1625329161-475075-12ef85d0-a240-40b9-9447-31d3e5531983.png]
模拟了50次登录的过程,并且每次只有一次机会输入验证码,成功率大概是0.78,5次当中起码有4次正确,我感觉还可以接受。
[upl-image-preview url=https://static.0xffff.one/assets/files/2021-07-03/1625329172-613804-b3c9f389-068e-4320-8f3c-6eb929d742e5.png]
因为使用要load.h5权重文件,但是学校网太垃圾,所以就不放上来了,要使用的话,可以自己train()。