窗外雪花飘舞
我也和你在一起
总字数:2508
阅读时间:30分钟
前言
这篇文章是我毕业设计所基于的深度学习研究的续篇。在本文中,我将解决以下两个问题:
使用深度学习对五种花卉进行分类
利用深度学习识别滑动验证码的缝隙位置
第一题来自妈妈的小花园和我的毕业设计,本来我的毕业设计只需要做demo(用已经完成的识别),但为了丰富我的论文成果,我以妈妈小花园里的花为契机,参考了微信小程序花卉识别(最重要的是在妈妈面前炫耀一下)。
),通过华为云AI开发平台进行数据标注、模型训练和部署,实现对向日葵、郁金香、玫瑰、菊花和蒲公英等花卉的识别。
图0-1 小花园一角
第二个问题起源于2018年10月左右(大三上学期国庆假期),那时候我刚开始学爬虫,爬了猫眼、豆瓣、喜马拉雅等APP,当时觉得反爬最难的手段就是滑动验证码。这篇文章我会用深度学习的知识讲解反爬虫中模拟滑动验证码的问题。
01
使用深度学习对五种花卉进行分类
我毕业设计中花卉分类的demo,一共有3672张样本图片,包含5个类别,分别为633(菊花)、898(蒲公英)、641(玫瑰)、699(向日葵)、799(郁金香);训练集一共有3306张图片,也分为5个类别,分别为570(菊花)、809(蒲公英)、577(玫瑰)、630(向日葵)、720(郁金香);测试集一共有364张图片,也分为5个类别,分别为63(菊花)、89(蒲公英)、64(玫瑰)、69(向日葵)、79(郁金香);我将构建一个卷积神经网络(具体的网络结构模型请参考论文)来实现对5种花卉的识别。 以下是我的结果演示:
图1-1 模型训练成功
图1-2 训练集与测试集之间的误差展示
图1-3 样例展示(检测玫瑰花,识别率高达95.5%)
相信上面的流程描述小伙伴们已经看得差不多了,无非就是这几个流程:
有朋友可能会说,这么麻烦,我不做了。好吧,这时候天上突然响起一道惊雷,东哥登场了,带来了一种只需要动动鼠标拖拽就能训练出模型并部署到线上的方法,我们一起来看看吧。
首先我们来解释一下什么是图像分类,顾名思义就是将给定的样本图片按照一定的特征进行分离开来。当用户想要判断一张从未见过的图片属于哪一类时,我们可以基于用样本图片训练的神经网络模型,从待判断的图片中提取特征,然后判断该图片在样本中可能属于哪一类的概率,最后判断出该图片所属概率最大的类别。(分类问题预测类别,模型的输出是一个概率分布(三分类问题的输出示例:[0.2, 0.7, 0.1]),显然所有概率之和为1。)接下来我将通过华为云AI开发平台为大家展示整个操作流程:
准备训练数据
我使用的数据是通过爬取百度图片、前途等网站得到的,一共 3762 张图片,具体怎么爬取的我就不多说了,全部爬取到的图片长这样:
图1-4 采集样例图片
注释图像
接下来就是使用 来完成数据集的标注了,很多朋友可能到了这一步就灰心了,坚持住,胜利就在眼前,我们去华为云控制台看一下:
图 1 - 控制台
它内置了一些深度学习模型,包括图像分类(本文第一个主题-花卉分类用到的)、物体检测(本文第二个主题-滑块识别用到的)、预测分析(房价预测等)等,我们可以直接使用它们来建立自己的模型。
我们创建一个图片分类项目和一个OBS ,并通过obs-上传本地图片。为了节省流量,我在我的demo中导入了测试集中的所有图片,一共364张。上传完成后,我们对图片进行标注。

图 1-6 图像标注
标记完成后,我为这 5 个类别添加了标签名称,如图所示。您可以随意命名,不必像我一样。
火车
图像标注完成后,我们就可以开始训练了。现在是很多不喜欢写代码的朋友的天堂。图像分类的深度学习模型已经内置,我们只需要提供训练数据即可。
这里我们只需要设置最大训练时间,这么少的图片数量,很快就能训练完成,只需要静静等待就可以了,最大训练时间可以随意填写,最小不小于0.05,填写完成后点击开始训练即可。
几分钟后,训练将完成,您将看到类似这样的页面:
图1-7 训练成功界面
哈哈,是不是觉得很神奇呢?我都不知道深度学习是什么,居然就建了一个模型,更神奇了。我们再进行最后一步,部署到线上吧。
部署测试
最后一步点击部署,部署成功界面如下图所示:
图1-8 部署测试成功界面
最后,让我们享受一下我们的模型,看看它有多准确。这里我们上传了一张花的照片。我上传了一张玫瑰的照片,看看结果。
图1-9 最终效果
还不错,最终判定为玫瑰的概率是76.8%,完美。
02
利用深度学习识别滑动验证码的缝隙位置
说完了图像分类,我们再来说说目标检测。其实这篇文章专门讲的是滑动验证码识别。在登录某些网站的时候,你一定遇到过类似下面的界面:
图2-1 滑动验证码(图片来自网易易盾)
这种验证码虽然方便用户使用,而且安全性和美观度比之前的方式要好很多,但是对于爬虫来说难度却要大很多。
其实处理滑动验证码的思路很简单:
找到目标间隙位置
模拟用户的滑动操作,将滑块拉至目标间隙位置
关于模拟用户拉动滑块的操作我就不多说了,我们主要用深度学习来分析一下缺口位置识别的问题。如果你仔细看过我第一部分的内容,相信看到这里你已经有个大概了。借助华为云平台,我们只需要提供一些训练数据即可。这些训练数据不同于图像分类中仅有的图片数据,还需要包含缺口位置标注的轮廓信息。
准备好数据之后,我们就可以使用模型进行训练了,具体步骤这里就不再赘述,请参考图像分类部分:
图 2-2 图像标注
需要注意的是,物体检测不同于图像分类,物体检测需要手动操作,在上传的样本图片中通过拖拽的方式标记出空隙位置,用于模型训练。
后续在华为云平台上的所有操作与图像分类类似,这里不再赘述。
至此,我结合毕业设计以及自己遇到的问题,介绍了深度学习在图像识别(五种花的分类)和目标检测(滑动验证码识别)两个小demo,相信大家已经看懂了,下面我们赶紧实现一下吧。
这
结尾