基于Tensorflow搭建卷积神经网络CNN(花卉识别)保姆及级教程

2023-11-11

项目介绍

TensorFlow2.X 搭建卷积神经网络(CNN),实现人脸识别(可以识别自己的人脸哦!)。搭建的卷积神经网络是类似VGG的结构(卷积层与池化层反复堆叠,然后经过全连接层,最后用softmax映射为每个类别的概率,概率最大的即为识别结果)。

其他项目

水果蔬菜识别:基于卷积神经网络的水果识别项目
交通标志识别:基于卷积神经网络的交通标志识别项目
人脸识别:基于卷积神经网络的人脸识别项目

网络结构:
在这里插入图片描述

开发环境:

  • python==3.7
  • tensorflow==2.3
安装conda和pycharm

若已经安装好了请忽略。

在评论区获取:安装包的分享链接,包含Pycharm、Anaconda、Miniconda、TeamViewer(远程协助)、FormatFactory(格式工厂)。
在这里插入图片描述

安装aconda
可以自行选择Anaconda或者Miniconda两者安装方法和法是完全一样的。但是强烈建议选择Miniconda,因为它比较“轻”,占用内存极小,并且安装时间相对Anaconda耗时极短!

直接下一步,到了这个页面全部勾选,否则不会添加添加环境变量。
在这里插入图片描述

安装Pycharm
直接下一步,到了这个页面全部勾选。
在这里插入图片描述
安装远程协助软件
如果需要远程协助,请自行提前安装好TeamViewer。
在这里插入图片描述

数据集:
在这里插入图片描述

在这里插入图片描述

图片类别:

‘daisy’:‘雏菊’, ‘dandelion’:‘蒲公英’, ‘rose’:‘玫瑰’, ‘sunflower’:‘太阳花’, ‘tulip’:‘郁金香’

在这里插入图片描述

代码调试

在这里插入图片描述

拿到项目后,解压文件,解压后如下图所示:
在这里插入图片描述

Step1:打开项目文件夹

在这里插入图片描述

各个文件及代码介绍:
在这里插入图片描述

Step2:搭建开发环境

在这里插入图片描述

创建虚拟环境

输入cmd回车后,会打开一个命令终端,下面我们开始创建虚拟环境:
在这里插入图片描述
输入命令为:

conda create -n tf23_py37 python=3.7

输入命令回车后,出现下面提示,继续回车:
在这里插入图片描述

然后回车后,我们就创建了一个环境名称为“tf23_py37”的虚拟环境,它的python版本为3.7,如下图所示:

在这里插入图片描述

激活虚拟环境

复制这条命令,输入命令行,激活我们创建的虚拟环境:

conda activate tf23_py37

在这里插入图片描述

安装第三方依赖库

下面开始安装项目用到的第三方依赖库,比如tensorflow、matplotlib、pyqt5等。本次用到的依赖库全部记录在了requirements.txt文件中。下面开始安装:

在命令终端中输入以下命令。

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

注意:上面这条安装第三方依赖库的命令 “-i” 后面接的是国内的镜像源地址。如果安装失败提示我们指定的镜像源中没有对应的第三方库依赖的版本,可以考虑选择其他的镜像源。
国内常用镜像源地址

清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:https://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/

安装成功后,如下如所示:

在这里插入图片描述

打开项目配置环境

在这里插入图片描述

如果出现下面提示:
在这里插入图片描述

如果出现下面提示:

在这里插入图片描述

选择解释器(我们上面创建的虚拟环境)

打开朋友charm后,在pycharm的右下角点击解释器选择,选择”Add Interpreter“选择添加解释器。

在这里插入图片描述

在这里插入图片描述

按照图片的提示操作即可,添加我们需要的“python解释器”,pycharm右下角显示如下图所示即为成功:

在这里插入图片描述

训练神经网络模型

打开项目“train_cnn.py”这个代码,根据图片中提示操作:

在这里插入图片描述
成功运行效果如下图所示:

在这里插入图片描述
成功运行后,接下来要做的事情就是“等待”,根据每个人电脑配置的高低,运行训练网络的代码时间也是不同的(几分钟–几个小时)等待运行完毕,不报错即为训练成功。

在训练成功后,在models文件夹中会生成"cnn_fv.h5"文件。

在这里插入图片描述
在训练成功后,在result文件夹中,可以看到“results_cnn.png”图片,记录了训练过程中准确率和loss的变化情况。
在这里插入图片描述
同样按着运行”train_cnn.py”的逻辑步骤去运行”train_mobilenet.py“,就会训练mobilenet神经网络。运行的结果可以和CNN形成一组对照。更有利于我们写文章哦!

测试

在训练模型完毕后,我们开始测试模型(评估模型的性能),打开“test_model.py”

在这里插入图片描述
按照图片提示操作。

运行成功后会在results文件夹下生成“heatmap_cnn.png”热力图(可以看到每个类别预测准确率的情况),如下所示:

在这里插入图片描述

预测

PYQT5的GUI界面

在经过训练和测试之后,我们得到了一个可以用来做交通标志识别的神经网络权重,下面开始预测需要识别的交通标志图片。打开"windows.py"这个代码,直接点击运行,结果如下所示:

在这里插入图片描述

运行成功后得到一个pyqt5的GUI界面,然后我们就可以通过这个GUI操作去预测我们项目预测的水果图片啦!

Flask网页端展示

打开"app.py"这个代码,直接点击运行,结果如下所示:

在这里插入图片描述
点击控制台输出的链接,或者自己打开浏览器输入http://127.0.0.1:5000这个网址。即可跳转到flask前端页面,然后自行做交互,上传图片,点击预测,模型会输出每一个类别的置信度,并按照从大到小的降序排列展示在网页上,展示在最上面的类别即为最终模型的识别结果

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Tensorflow搭建卷积神经网络CNN(花卉识别)保姆及级教程 的相关文章

  • 高效地将大型 Pandas 数据帧写入磁盘

    我正在尝试找到使用 Python Pandas 高效地将大型数据帧 250MB 写入磁盘或从磁盘写入的最佳方法 我已经尝试了所有方法Python 数据分析 但表现却非常令人失望 这是一个更大项目的一部分 该项目探索将我们当前的分析 数据管理
  • sy.sympify(str(表达式)) 不等于表达式

    据我了解 str将 SymPy 表达式转换为字符串并sympify将字符串转换为 SymPy 表达式 因此 我希望以下内容成立 对于合理的表达 gt gt gt sy sympify str expr expr True 我尝试过这个 确实
  • 在 PhotoImage 下调整图像大小

    我需要调整图像大小 但我想避免使用 PIL 因为我无法使其在 OS X 下工作 不要问我为什么 无论如何 因为我对 gif pgm ppm 感到满意 所以 PhotoImage 类对我来说没问题 photoImg PhotoImage fi
  • 如何将脚本作为 pytest 测试运行

    假设我有一个用简单脚本表示的测试assert 陈述 请参阅背景了解原因 例如 import foo assert foo 3 4 我如何以一种好的方式将该脚本包含在我的 pytest 测试套件中 我尝试了两种有效但不太好的方法 一种方法是将
  • 如何在 numpy 数组中查找并保存重复的行?

    我有一个数组 例如 Array 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 1 1 1 2 2 2 我想要输出以下内容的东西 Repeated 1 1 1 2 2 2 保留重复行的数量也可以 例如 Repeated 1 1
  • 烧瓶 - 404 未找到

    我是烧瓶开发的新手 这是我在烧瓶中的第一个程序 但它向我显示了这个错误 在服务器上找不到请求的 URL 如果您输入了网址 请手动检查拼写并重试 这是我的代码 from flask import Flask app Flask name ap
  • 无法在我的程序中使用 matplotlib 函数

    我正在 Windows 10 中运行 Anaconda 安装 conda 版本 4 3 8 这是我尝试在 python 命令行中运行的代码 import matplotlib pyplot as plt x 1 2 3 4 y 5 6 7
  • Python:“直接”调用方法是否实例化对象?

    我是 Python 新手 在对我的对象进行单元测试时 我注意到一些 奇怪 的东西 class Ape object def init self print ooook def say self s print s def main Ape
  • Jupyter笔记本突然变得很慢

    我以前在anaconda环境下运行jupyter运行得很好 显示警告后 IOPub data rate exceeded The notebook server will temporarily stop sending output to
  • 使用 Windows 任务计划程序安排 [Virtualenv 相关] Python 脚本

    I want to schedule a python script to start at 3AM and break at 5PM every weekday However the problem arises when I need
  • 如何让 Streamlit 每 5 秒重新加载一次?

    我必须每 5 秒重新加载 Streamlit 图表 以便在 XLSX 报告中可视化新数据 如何实现这一目标 import streamlit as st import pandas as pd import os mainDir os pa
  • 错误:尝试使用 scrappy 登录时出现 raise ValueError("No element found in %s" % response)

    问题描述 我想从我大学的bbs上抓取一些信息 这是地址 http bbs byr cn http bbs byr cn下面是我的蜘蛛的代码 from lxml import etree import scrapy try from scra
  • 操作错误:尝试在 ubuntu 服务器中写入只读数据库

    我正在使用 FlaskApp 运行mod wsgi and apache2在 Ubuntu 服务器上 我尝试运行烧瓶应用程序localhost成功 然后部署到ubuntu服务器上 但是当我尝试更新数据库时 出现错误 Failed to up
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 如何在 Python 中跟踪日志文件?

    我想在 Python 中提供 tail F 或类似内容的输出 而无需阻塞或锁定 我找到了一些非常旧的代码来做到这一点here http code activestate com recipes 436477 filetailpy 但我认为现
  • 无法将matplotlib安装到pycharm

    我最近开始使用Python速成课程学习Python编程 我陷入困境 因为我无法让 matplotlib 在 pycharm 中工作 我已经安装了pip 我已经通过命令提示符使用 pip 安装了 matplotlib 现在 当我打开 pych
  • 重定向 python 交互式帮助()

    我正在为使用 Qt 的应用程序开发交互式 python shell 但是我似乎无法获得重定向的交互式帮助 我的 python 代码中有这个 class OutputCatcher def init self self data def wr
  • 旧版本的 spaCy 在尝试安装模型时抛出“KeyError: 'package'”错误

    我在 Ubuntu 14 04 4 LTS x64 上使用 spaCy 1 6 0 和 python3 5 为了安装 spaCy 的英文版本 我尝试运行 这给了我错误消息 ubun ner 3 NeuroNER master src pyt
  • 如何在supervisord中设置组?

    因此 我正在设置 Supervisord 并尝试控制多个进程 并且一切正常 现在我想设置一个组 以便我可以启动 停止不同的进程集 而不是全部或全无 这是我的配置文件的片段 group tapjoy programs tapjoy game1
  • PYTHON:从 txt 文件中删除 POS 标签

    我有以下 txt 文件 其中包含 POS 词性 http en wikipedia org wiki Part of speech tagging 每个单词的标签 不用 jj到 说 vb 我 ppss是 bedz愤怒 jj在 在 dt无与伦

随机推荐

  • Python3.8.1的安装和运行

    01Python 3 8 1的安装和运行 在Windows10系统下安装python 1 1访问www python org网站 在浏览器地址栏中输入www python org访问网站 1 2下载python版本 根据自己的需要或者喜好下
  • 无压力轻松使用Obsidian写newsletter

    quail平台特点 拥有四大特点 开源 人工智能增强 web3和加密货币集成 超越电子邮件 开源 每个人都应该可以访问驱动其工具的代码 通过我们的服务 您可以放心地了解背后发生的事情 人工智能增强 为了创建一个真正智能的工具 我们知道需要在
  • Android Fragment

    Android实习札记 4 Fragment 碎片 基本概念解析 转载请注明出处 coder pig Fragment相信大家都不会陌生吧 侧滑啦 抽屉效果啦 DialogFragment啊等等 一堆地方都会 用到Fragment 对于Fr
  • “GetInputName“: 不是 “Ort::Session“ 的成员

    项目场景 使用C 和ONNXruntime部署深度学习模型 问题描述 作者在尝试使用onnxruntime和C 部署深度学习模型推理的时候 按照官网的文档对于Ort Session Run的定义 如下 需要获得模型输入层与输出层的名字 st
  • 如何根据SF6气体压力温度曲线,决定不同温度下断路器的充气压力?

    如何根据SF6气体压力温度曲线 决定不同温度下断路器的充气压力 答 SF6断路器的额定压力般为0 4 0 6MPa 表压 通常这时指环境温度为20 时的压力值 温度不同时 SF6气体的压力也不同 充气或检查时必须查对SF6气体温度压力曲线
  • 基于SSM框架的《超市订单管理系统》Web项目开发(第三天)用户管理,模糊查询,精准匹配,分页显示数据

    基于SSM框架的 超市订单管理系统 Web项目开发 第三天 用户管理 模糊查询 精准匹配 分页显示数据 昨天我们完善了登录的功能模块和退出的功能模块 今天我们将实现超市订单管理系统的用户管理功能模块中的用户列表和查询用户功能 今天要完成的功
  • Basic Commands for splunk(基本命令)

    1 搜索请求的数据 Task 1 Search for the requested data 导航到Search视图 如果你在主应用程序中 从屏幕左侧的列中单击Search Reporting 你也可以通过点击屏幕顶部栏上的搜索菜单选项来访
  • The Database Migration Assistant for Unicode (DMU) Tool (文档 ID 1272374.1)

    APPLIES TO Oracle Database Enterprise Edition Version 10 2 0 4 to 12 1 0 1 Release 10 2 to 12 1 Oracle Database Standard
  • SpringMVC中GET请求类型接收参数的两种方式

    1 PathVariable 方式接收URI参数 URI如 http localhost 8080 MyApp 123 Jack GetMapping user userId userName public String printMess
  • 将来时的表示

    一般将来时表示将来某一时刻的动作或状态 或将来某一段时间内经常发生的动作或状态 常常表示将来的时间状语连用 如 tomorrow 明天 next week 下周 in the future 将来 助动词will或shall 动词原形 表示将
  • 2021年总结

    一 目标回顾 一 工作 团队建设 学会管理团队 指引 领导团队前进 不太适合管理团队 技术 前端vue 熟悉 可以独立进行开发 并未达到 后端java熟悉springboot框架 可以独立进行开发项目 并且开发好一个项目 并达到 二 自我提
  • MYSQL设置密码时显示Failed! Error: SET PASSWORD has no significance for user ‘root‘@‘localhost‘ as the authe

    用这个命令进入mysql sudo mysql 在sql命令行输入以下命令回车 你就可以把密码改成mynewpassword ALTER USER root localhost IDENTIFIED WITH mysql native pa
  • 麒麟系统虚拟机安装教程

    作者 朱金灿 来源 clever101的专栏 为什么大多数人学不会人工智能编程 gt gt gt 1 首先得安装VM Ware软件 2 打开VM Ware 点击 文件 gt 新建虚拟机 3 进入新建虚拟机向导 点击下一步 如下图 4 安装来
  • elasticsearch-查询平分排序

    排序与相关性 默认情况下 返回的结果是按照 相关性 进行排序的 最相关的文档排在最前 在本章的后面部分 我们会解释 相关性 意味着什么以及它是如何计算的 不过让我们首先看看 sort 参数以及如何使用它 排序 为了按照相关性来排序 需要将相
  • idea生产junit类

    1 定义一个类 package com spring pro jdk8 construction test import lombok AllArgsConstructor import lombok Data import lombok
  • 本地运行hexo-theme-butterfly报错重定向次数过多

    本地运行hexo theme butterfly报错重定向次数过多 Github被墙了故选择使用Gitee 顺便搭建gitee page博客 使用了一个比较简约好看纯净的主题hexo theme butterfly 在这基础上进行配置 问题
  • 笔试,计算贡献值,2022-9-2

    计算时间区间的贡献值 若同一时间有多个应用程序 均分贡献值 每个vector表示一个应用的开始 结束时间段 一个应用可能有多个时间段 考虑 1 区间重叠 均分贡献值 2 浮点数计算 用整型处理单个时间会去掉小数 累计起来就错了 includ
  • 小样本中的自监督

    自监督脉络 SimCLR SimCLRV2 BYOL Moco SimSiam 一些典型操作 原图地址 When Does Self supervision Improve Few shot Learning 2019 ECCV 关键点 通
  • 计算机视觉(四):使用K-NN分类器对CIFAR-10进行分类

    1 引言 之前我们学习了KNN分类器的原理 现在让我们将KNN分类器应用在计算机视觉中 学习如何使用这个算法来进行图片分类 2 准备工作 创建项目结构如图所示 在datasets文件中下载数据集Cifar 10 k nearest neig
  • 基于Tensorflow搭建卷积神经网络CNN(花卉识别)保姆及级教程

    项目介绍 TensorFlow2 X 搭建卷积神经网络 CNN 实现人脸识别 可以识别自己的人脸哦 搭建的卷积神经网络是类似VGG的结构 卷积层与池化层反复堆叠 然后经过全连接层 最后用softmax映射为每个类别的概率 概率最大的即为识别