目标网址
glidedsky.com/
搞爬虫,应该会知道这个网站。这次我们要做的就是 爬虫-验证码-1 这一题

分析过程
页面
这道题目是求,1000页的数字和。
进入第一页,首先会有一个滑块验证,验证通过后,会加载所需数据。
只能得到缺口背景图和缺口的图片


基本流程
第一步,使用selenium登录网站,访问题目页
第二步,确定移动距离
第三步,设置滑动算法,避免单一被识别 第四步,解析通过验证后数据
确定距离解决方案一
灰度处理
可以发现缺口位置的颜色是比其他位置深的。按照这个特征,我们将背景图,进行灰度处理,调整阈值,使只有缺口部位为黑色,然后确定黑色的起始横坐标来计算滑动距离。
这是我们的理想状态,可是这种方案的准确率并不高,不稳定。
确定距离解决方案二
深度学习
缘由
最开始是在 崔庆才博客,看到使用华为modelarts平台,利用深度学习来识别缺口位置。我跟着文章,去尝试了一下,成功了。但是平台里面很多名词,认证啥的很繁琐。最后部署上线后,自己都调用不了。感觉现在机器学习框架已经这么成熟了,写个这个应该不难,所以准备自己动手完成一个缺口识别模型。
详情连接
我之前没搞过机器学习,是在B站看了视频,跟着做的。不过现在视频被下掉了。这里提供作者的博客
bingxiong.vip/18438/
环境准备
我的配置如下
python3.6 tensorflow-gpu 1.12.0 cuda9 cudnn7
对应关系请参考官网 tensorflow.google.cn/install/sou…
数据预处理
我们先去搞个100张滑块的缺口图。
安装标注程序 pip install labelImg
将我们的图片都标注起来,这里标注区域与缺口相切即可

将标注完的图片,按比例放入train和test文件中,我这里是8:2
然后运行 python xml_to_csv.py 将我们标注的xml 汇总成csv表格,方便程序读取

然后参考详情连接中第10,11步完成初始化
要注意 训练步数为faster_rcnn_inception_v2_pets.config中num_steps的值,我们这个小项目,几千步就可以了,我这里设置了10000步,有点多。
训练,生成模型
参照详情连接中第12步,开始训练后 training文件夹中会不断生成训练的成果。

最终成果
可以做到精准识别缺口了,在实际使用中也是相当准确。

