tensorflow输出网络结构_毕业设计(基于Tensorflow的深度研究与实现)之番外篇

news/2024/11/18 13:32:02/

窗外风雪再大

也有我陪伴着你

全文字数:2508

阅读时间:30分钟

00cf56f3e1eed43802a4cb4b11015e3b.png

前言

本文是我的毕业设计基于Tensorflow的深度学习与研究的番外篇,在这篇文章中,我将解决以下两个问题:

  1. 利用深度学习进行五种花的分类

  2. 利用深度学习识别滑动验证码缺口位置

第一个问题来源于我妈的小花园和我的毕业设计,原本我的毕业设计只要求做一个demo(利用Alexnet完成MNIST的识别)就可以了,但为了丰富我的论文成果,我以我妈小花园的几种花为契机,参照微信小程序识花君(最重要的还是想在我妈面前显摆一下534499db44ba26e4a65d978d4e3fada4.png),通过华为云AI开发平台ModelArts进行数据标注、模型训练以及部署上线,实现对太阳花、郁金香、玫瑰、菊花、蒲公英的识别。

67978ff9beec85fd0b22514f7b057770.png

图 0-1 小花园的一角

第二个问题来源于2018年10月左右(大三上学期国庆节那阵),那阵初学爬虫,爬过了猫眼、豆瓣、喜马拉雅App等,当时遇到的我认为最难的反爬措施就是滑动验证码,这篇文章中我就通过深度学习的知识来讲解一下反爬虫中模拟滑动验证码滑动的问题。

01

利用深度学习进行五种花的分类

我的毕业设计中关于花分类的demo共有3672张样本图片,包括五种类别,其中daisy(菊花)633张,dandelion(蒲公英)898张,roses(玫瑰)641张,sunflowers(太阳花)699张,tulips(郁金香)799;训练集图片共3306张,同样也是五种类别,其中daisy(菊花)570张,dandelion(蒲公英)809张,roses(玫瑰)577张,sunflowers(太阳花)630张,tulips(郁金香)720;测试集图片共364张,也是五种类别,其中daisy(菊花)63张,dandelion(蒲公英)89张,roses(玫瑰)64张,sunflowers(太阳花)69张,tulips(郁金香)79;我将通过搭建Alexnet卷积神经网络(具体网络结构模型请参考Alexnet论文),实现对五种花的识别,以下是我的结果演示:

37cd4b8fc423a6e76715bfed9fa6a045.png

图1-1 模型训练成功

01f50a8296ccd4031cea5271af56ab0d.png

图1-2 训练集与测试集之间的误差展示

edb056d6edc04869ba6594ab41299fc0.png

图1-3 样例展示(检测玫瑰,识别率高达95.5%)

相信上面的过程叙述,小伙伴已经差不多看懂了,无非就是这几个过程:

  • 样本采集(大量的样本数据,通过批量爬虫或者手动保存)

  • 模型搭建(我用的是CNN-Alexnet)

  • 模型训练(我跑在了cpu上,推荐大家用Google cloud或者AWS云平台)

  • 使用测试集进行测试并按照要求调整即可

有的小伙伴可能说,这么麻烦,我才不做呢,好吧,此时天空一声雷,东哥登场,他带来了一种只需要动动鼠标、拖拽拖拽就可以训练一个模型并部署上线的方法,来看看吧。

首先,我们来解释一下,什么叫图像分类?顾名思义,就是把所给样本图片根据某些特征分开来,当用户想要判断一张前所未见的图片属于哪一类时,我们可以根据通过样本图片训练好的神经网络模型对要判断的图片进行特征提取,进而判断该张图片可能属于样本中哪一类别的概率,并最终判定概率最大的一个就是该图片所属的类别。(分类问题预测的是类别,模型的输出是概率分布(三分类问题输出例子:[0.2,0.7,0.1]),很明显,所有概率之和为1)接下来,我将通过华为云AI开发平台ModelArts来给大家展示一下整个的操作过程:

准备训练数据

我使用的数据是通过对百度图片、千图等几个网站的爬虫获取的,总共3762张图片,具体怎么爬,我就不赘述了。爬下来的所有图片长这样:

4fbf183c431b9dac195ef7bbb4f8a6c7.png

图1-4 采集样本图片

标注图片

接下来一步是借助ModelArts来完成数据集的标注,可能很多小伙伴到了这一步就已经望而却步了,坚持住,胜利就在眼前~让我们进入华为云ModelArts控制台来看看:

586737e26dc472acca8d095af3403676.png

图1-5 ModelArts控制台

它内置了一些深度学习模型,包括图像分类(本文第一专题-花的分类用到就是这个)、物体检测(本文第二个专题-滑块识别用的就是这个)、预测分析(房价预测等)等,我们可以直接利用它们来搭建属于自己的模型。

我们创建图像分类的项目,并创建OBS桶,通过obs-browser将本地图片上传,为了省流量,我将我demo中测试集的所有图片导入,共计364张图片,上传之后我们进行图片的标注。

bf7d3527839dab12319054289b5f9236.png

图1-6 图片标注

标注完之后,我给我的5个分类分别添加了标签名,如图中所示,可以随意制定,不必跟我一样。

训练

图片标注完成之后,我们就可以开始训练了。现在才是好多不喜欢写代码的小伙伴们的天堂啊,ModelArts内置了图像分类的深度学习模型,我们只需提供训练数据就可以了。

在这里,我们只需要设置一下最大训练时长就好了,这么点儿图片很快就训练完了,静静的等待一下就好,最大训练时长随意填写即可,最小不小于0.05,填写完成之后点击开始训练

等几分钟,就会训练完成,可以看到类似的页面:

f18285c46e0c22a2bee32ae6474e30f6.png

图1-7 训练成功界面

haha,是不是觉得好神奇啊,我都不知道深度学习是啥,我竟然搭出了模型,还有更神奇的呢,我们来最后一步,部署上线。

部署测试

最后一步,点击部署,部署成功的界面如下图所示:

104dbbb0d4ba7994f319575773b11926.png

图1-8 部署测试成功的界面

最后的最后,我们来享用一下我们的模型,看看准确率咋样,在这里我们上传一张花的图片,我上传的是一张玫瑰的图片,然后看看结果咋样。

5f715edeb4d3622e2220fe85bbe8be87.png

图1-9 最终效果图

还不错吧,最终判断为玫瑰的概率为76.8%,非常完美。

9a02690a958658aca343ef58c956f150.png

02

利用深度学习识别滑动验证码缺口位置

讲完了图像分类,我们再说说目标检测的事,其实在本文中具体来说就是滑动验证码识别的事,小伙伴们平时在登陆某些网站的时候肯定遇到过类似下面图示的界面:

e25aeec1610ab354eceb1a114fef4cf9.png

图2-1 滑动验证码(图片来自网易易盾 https://dun.163.com/trial/jigsaw)

虽然这种验证码形式友好,且安全性、美观度相比之前的手段都有了很大的改观,但是对于爬虫er来说,难度可是提升了一大截呀~

其实,对于滑动验证码的处理,其实思路上很简单:

  1. 找到目标缺口位置

  2. 模拟用户滑动操作将滑块拉动到目标缺口位置处

对于模拟用户拉动滑块的操作这里不做赘述,我们主要通过深度学习来分析缺口位置识别的事,如果你仔细看完了我第一部分的内容,相信到这里你已经有了思路,借助华为云--ModelArts平台,我们只需提供一些训练数据即可,这些训练数据不同于图像分类中仅有的图片数据,还需要包括缺口位置标注轮廓信息。

准备好了数据,我们就可以借助模型来训练了,具体步骤不在赘述,请参考图像分类部分:

6aa98206375a47e0025981750269a5b2.png

图 2-2 图片标注

需要注意一点:目标检测与图像分类不同,目标检测需要手动操作通过拖拽标注上传样本图片中的缺口位置,供模型训练用。

接下来的所有在华为云---ModelArts平台上的操作与图像分类大同小异,这里不在赘述。

到此为止,我根据毕业设计情况以及我遇到过的问题介绍了深度学习在图像识别(五种花的分类)、目标检测(滑动验证码识别)的两个小demo,相信大家已经看懂了,快实现一下吧

efbeee707f111755abb94d0c3d04976d.png

THE

END

延伸阅读

  1. TensorFlow环境搭建

  2. 利用深度学习识别滑动验证码缺口位置

  3. MVVM之卡哇伊Vue源码分析plus

  4. Python小游戏--外星人大战(一)

  5. urllib+requests+猫眼电影票房信息可视化

REC

99daeb55d30b0c91f51126631e85e434.gif beea98c99ac1f000c2cd9d0fecd8586d.gif

http://www.ppmy.cn/news/754093.html

相关文章

Python项目:《外星人入侵》代码及笔记 via:《Python变成入门到实战》

Python项目:《外星人入侵》代码及笔记 (via:《Python变成入门到实战》) 【项目代码】 alien_invasion.py import pygame from pygame.sprite import Group from settings import Settings from game_stats import GameStats from scorebo…

图片验证码的方法

1.生成验证码的工具类 package com.quanran.common.util; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.Random; /** * <p>Description: […

Python 开发 项目《外星人入侵》

2019-02-05 本篇心路历程&#xff1a; 本篇是打算记录自己的第一个python项目&#xff0c;也是众人皆知的《外星人入侵项目》&#xff0c;本项目大概500多行。趁着寒假&#xff0c;大概耗时3天吧&#xff0c;把完整代码敲了出来&#xff0c;当然是照着书敲的啦&#xff0c;本人…

【Leetcode】33.搜索旋转排序数组

一、题目 1、题目描述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 …

pygame外星人2

---恢复内容开始--- 一、game_functions将各个模块的功能整合起来&#xff0c;供主文件调用 1 # -*- coding:utf-8 -*-2 3 import sys4 import pygame5 from bullets import Bullet6 from alien import Alien7 from pygame.sprite import Sprite8 import time9 10 11 12 def ch…

1.mac M1 Java 开发环境的安装与配置

1.首先我们打开谷歌浏览器复制下面的网址安装jdk&#xff1a; Java Download | Java 7, Java 8, Java 11, Java 13, Java 15, Java 17, Java 19 - Linux, Windows and macOShttps://www.azul.com/downloads/?packagejdk#zulu 2.我们翻到最下面去选择我们需要的版本&#xff…

录音转文字实用工具(可互转)

工作中常常需要做会议记录&#xff0c;单单的通过敲文字根本忙不过来&#xff0c;这里推荐给大家一个方案&#xff1a; 第一步&#xff0c;下载手机上的STM10录音器的APK&#xff0c;下载网址&#xff1a; https://download.csdn.net/download/lusin_video/10880941 &#x…

亲测:真正免费的音频转文字软件

因工作上的需要&#xff0c;要将会议现场录音转为文本&#xff0c;以提高工作效率。 在网上找了不少软件&#xff0c;比如搜狗音频助手、迅捷、科大讯飞等一系列软件&#xff0c;不论是在线还是客户端&#xff0c;一开始都说是免费的&#xff0c;结果进去先要注册&#xff0c;…