基于Tensorflow搭建卷积神经网络CNN(服装分类)保姆及级教程

news2024/12/24 0:16:07

项目介绍

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前端页面,然后自行做交互,上传图片,点击预测,模型会输出每一个类别的置信度,并按照从大到小的降序排列展示在网页上,展示在最上面的类别即为最终模型的识别结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

25 - 回文串问题

文章目录 1. 回文子串法一:动态规划法二:双指针法 2. 最长回文子串方法一:动态规划法方法二:双指针法 3. 最长回文子序列 1. 回文子串 法一:动态规划 递推公式 当s[i] ! s[j],那没啥好说的了,d…

三闯港交所,主打性价比的乡村基如何夺魁“中式快餐第一股”?

曾被中金公司称为“中国大消费最燃赛道”的中式餐饮,正在密集掀起IPO的风潮。去年5月和7月,老乡鸡和老娘舅分别向上交所提交招股书,绿茶餐厅、杨国福麻辣烫、捞王等企业也在推进上市计划。 国内第四大中式快餐集团,占据约0.6%市场…

python版pytorch模型转openvino及调用

一、openvino安装 参看官方文档https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html 安装命令是根据上面的选择生成。这里安装了pytorch和onnx依赖。 二、pytorch模型转opnvino模型推理 import os import time import cv2 import nu…

易基因:MeRIP-seq等揭示m6A甲基化修饰对抗病毒基因表达的转录调控机制|Cell Rep

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 2021年03月02日,杜克大学医学中心的分子遗传学和微生物学系Stacy M. Horner教授团队在《Cell Reports》(IF: 9.995)杂志发表了题为“Post-transcripti…

LeetCode算法小抄--归并排序详解及应用

LeetCode算法小抄--归并排序详解及应用 归并排序详解及应用[912. 排序数组](https://leetcode.cn/problems/sort-an-array/)[315. 计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/)[hard]--华为笔试[493. 翻转对](https://lee…

Java版本工程项目管理系统源码-全面的工程项目管理

​ ​工程项目管理系统是指从事工程项目管理的企业(以下简称工程项目管理企业)受业主委托,按照合同约定,代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 如今建筑行业竞争激烈,内卷严重&#xff0c…

供应链优化的好处是什么?

企业可以从优质的供应链优化软件中获得许多好处: 成本降低 通过供应链优化,可以消除许多不必要的成本,从而简化业务运营费用。所有重复或无效的流程也可以根据需要消除或自动化。重点可以转移到通过准确及时交付来满足客户的需求上。通过供…

OpUtils网络端口扫描

网络端口扫描程序使 IT 管理员能够密切监视端口,这些端口是网络通信的端点。网络端口支持不同实体之间的数据传输,并支持运行各种服务或应用程序。在日常工作中,网络管理员的任务是扫描和监控数百个交换机端口。网络端口扫描程序工具通过帮助…

Intellij IDEA-插件开发环境搭建

插件开发有两种方式 1.基于Gradle(新版IDEA,按钮名称叫做IDE Plugin,具体多新我也不清楚,反正2023的必须是这种) 2.基于Dev kit(旧版IDEA,按钮名称叫做IntelliJ Platform Plugin,具体…

【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透

前言 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对…

基于Udacity模拟器的端到端自动驾驶决策

1 端到端自动驾驶决策 端到端自动驾驶决策的输入为车辆的感知信息,如摄像头信息,输出为车辆的前轮转角和摄像头等信息。 如上图所示,为英伟达公司的端到端自动驾驶决策框架,其CNN网络如下图所示,其中包括一个归一化…

狂神说Docker

思维导图: 文章目录 1.Docker概念与安装1.1 概述1.2 安装1.3 卸载1.4 Docker的执行镜像原理1.5 Docker为什么比Vm快1.6 Docker底层原理 2.Docker常用命令2.1 帮助命令2.2 镜像命令2.3 容器命令2.4 其他常用命令 3.小练习3.1 Docker下安装Nginx3.2 Docker安装Tomcat…

[网络安全提高篇] 一二〇.恶意软件动态分析经典沙箱Cape批量提取动态API特征

终于忙完初稿,开心地写一篇博客。 “网络安全提高班”新的100篇文章即将开启,包括Web渗透、内网渗透、靶场搭建、CVE复现、攻击溯源、实战及CTF总结,它将更加聚焦,更加深入,也是作者的慢慢成长史。换专业确实挺难的,Web渗透也是块硬骨头,但我也试试,看看自己未来四年究…

SpringBoot设计了哪些可拓展的机制?

SpringBoot核心源码 public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) { ...this.primarySources new LinkedHashSet(Arrays.asList(primarySources));// Servletthis.webApplicationType WebApplicationType.deduceFromClass…

sentinel配置文件

转载自 https://blog.csdn.net/u012441222/article/details/80751390 Redis的哨兵机制是官方推荐的一种高可用&#xff08;HA&#xff09;方案&#xff0c;我们在使用Redis的主从结构时&#xff0c;如果主节点挂掉&#xff0c;这时是不能自动进行主备切换和通知客户端主节点下…

涨点神器:基于Yolov8小目标遮挡物性能提升(SEAM、MultiSEAM)

1.遮挡物检测简介 不同的目标检测应用场景有不同的检测难点,小目标、多尺度以及背景复杂等问题,被遮挡的物体仍然是最先进的物体检测器面临的挑战。本文尝试解决待测目标相互遮挡带来的检测困难,对于人脸遮挡提出了一个名为 SEAM 的注意力模块并引入了排斥损失来解决它,引…

机器学习入门实例-加州房价预测-3(选择与训练模型+调参)

选择与训练模型 使用线性回归 from sklearn.linear_model import LinearRegressionfrom sklearn.metrics import mean_squared_errorlin_reg LinearRegression()lin_reg.fit(housing_prepared, housing_labels)housing_predictions lin_reg.predict(housing_prepared)lin_ms…

直播预告 | TDengine Apache SeaTunnel 联合应用最佳实践

TDengine 自诞生之日起&#xff0c;除产品层面的技术创新和实力提升外&#xff0c;也在大力完善自身产品生态&#xff0c;以此进一步满足用户的业务需求、提升使用体验。 近日&#xff0c;TDengine 与 Apache SeaTunnel 展开集成合作&#xff0c;双方将于 4 月 18 日 19:00 联…

二、Java 并发编程(5)

本章概要 线程上下文切换 线程上下文切换的流程导致线程上下文切换的原因 Java中的阻塞队列 阻塞队列的主要操作Java中阻塞队列的实现 2.7 线程上下文切换 CPU 利用时间片轮询来为每个任务都服务一定的时间&#xff0c;然后把当前任务的状态保存下来&#xff0c;继续服务下…

IO多路转接—select,poll,epoll

目录 select 函数介绍 select基本工作流程 select的优缺点及适用场景 poll poll的优缺点 epoll epoll的相关系统调用 epoll_create epoll_ctl epoll_wait epoll工作原理 epoll服务器编写 epoll的优点 epoll工作方式 select 函数介绍 系统提供select函数来实现多路复…