当前位置: 首页 > news >正文

基于深度学习的花卉智能分类识别系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 

1. 项目简介

        传统的花卉分类方法通常依赖于专家的知识和经验,这种方法不仅耗时耗力,而且容易受到主观因素的影响。本系统利用 TensorFlow、Keras 等深度学习框架构建卷积神经网络(CNN),利用花卉数据集进行模型训练与验证,预测准确率达到 84.3%,使用Flask框架结合Bootstrap前端技术搭建了一个交互式的分析预测平台,能够从大量的图像数据中自动学习和提取特征,从而实现高效、准确的分类。

        B站系统演示视频:基于深度学习的花卉智能分类识别系统_哔哩哔哩_bilibili

2. 花卉数据集读取与预处理

        利用 Tensorflow 框架从文件夹中读取花卉图像数据:

# 花卉类别
class_map = {'tulip': 0, 'sunflower': 1, 'rose': 2, 'dandelion': 3, 'daisy': 4}
class_name_dict = {0: 'tulip', 1: 'sunflower', 2: 'rose', 3: 'dandelion', 4: 'daisy'}def image_generator(height,width):datagen = ImageDataGenerator(rescale=1./255.,validation_split=0.2,rotation_range=10,width_shift_range=0.05,height_shift_range=0.05,# shear_range=0.05,brightness_range=[0.5, 1.5],)train_ds = datagen.flow_from_directory(data_dir,batch_size=batch_size,subset="training",#color_mode = 'grayscale',shuffle=True,class_mode='categorical',target_size=(height, width),classes=class_map)val_ds = datagen.flow_from_directory(data_dir,subset="validation",#seed=123,#color_mode = 'grayscale',class_mode='categorical',target_size=(height, width),batch_size=batch_size,classes=class_map)return train_ds, val_ds

3. 深度卷积神经网络模型构建

3.1 VGG16 Base Model

        VGG(Visual Geometry Group)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG19最为著名。

VGG16和VGG19网络架构非常相似,都由多个卷积层和池化层交替堆叠而成,最后使用全连接层进行分类。两者的区别在于网络的深度和参数量,VGG19相对于VGG16增加了3个卷积层和一个全连接层,参数量也更多。

VGG网络被广泛应用于图像分类、目标检测、语义分割等计算机视觉任务中,并且其网络结构的简单性和易实现性使得VGG成为了深度学习领域的经典模型之一。

input_shape = (height, width, 3)
base_model = tf.keras.applications.vgg16.VGG16(weights='./pretrained_models/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5', include_top=False,input_shape=input_shape
)
base_model.trainable = Falsemodel_vgg16 = tf.keras.Sequential()
model_vgg16.add(base_model)
model_vgg16.add(tf.keras.layers.Flatten())model_vgg16.add(tf.keras.layers.Dense(len(class_map), activation='softmax'))model_vgg16.compile(loss='categorical_crossentropy', optimizer=tf.keras.optimizers.Adam(0.001),metrics=['accuracy'])
model_vgg16.summary()

         模型训练:

vgg16_history = model_vgg16.fit(train_ds,validation_data=val_ds,epochs=epochs,callbacks=[checkpointer, earlystopper]
)
Epoch 1/100
69/69 [==============================] - ETA: 0s - loss: 0.9497 - accuracy: 0.6451
Epoch 1: val_accuracy improved from -inf to 0.78102, saving model to best_vgg16_model.h5
69/69 [==============================] - 308s 4s/step - loss: 0.9497 - accuracy: 0.6451 - val_loss: 0.6584 - val_accuracy: 0.7810......
Epoch 11/100
69/69 [==============================] - ETA: 0s - loss: 0.0755 - accuracy: 0.9854
Epoch 11: val_accuracy did not improve from 0.80839
69/69 [==============================] - 349s 5s/step - loss: 0.0755 - accuracy: 0.9854 - val_loss: 0.6177 - val_accuracy: 0.7938
Epoch 11: early stopping

 3.2 InceptionV3 Base Model

        深度神经网络(Deep Neural Networks, DNN)或深度卷积网络中的Inception模块是由Google的Christian Szegedy等人提出,包括Inception-v1、Inception-v2、Inception-v3、Inception-v4及Inception-ResNet系列。

tf.keras.backend.clear_session()base_model = tf.keras.applications.InceptionV3(weights='./pretrained_models/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5', include_top=False, input_shape=input_shape
)
base_model.trainable = Falsemodel_inceptionv3 = tf.keras.Sequential()
model_inceptionv3.add(base_model)
model_inceptionv3.add(tf.keras.layers.Flatten())model_inceptionv3.add(tf.keras.layers.Dense(len(class_map), activation='softmax'))model_inceptionv3.compile(loss='categorical_crossentropy',optimizer=tf.keras.optimizers.Adam(0.001),metrics=['accuracy']
)
model_inceptionv3.summary()

        模型训练:

inceptionv3_history = model_inceptionv3.fit(train_ds,validation_data=val_ds,epochs=epochs,callbacks=[checkpointer, earlystopper]
)

3.3 模型性能对比

labels = ['损失Loss','准确率Accuracy']
vgg16_evals = [vgg16_eval_result['损失Loss'], vgg16_eval_result['准确率Accuracy']]
inceptionv3_evals = [inceptionv3_eval_result['损失Loss'], inceptionv3_eval_result['准确率Accuracy']]x = np.arange(len(labels))  # the label locations
bar_width = 0.35  # the width of the barsfig, ax = plt.subplots(figsize=(8, 6), dpi=100)
rects1 = ax.bar(x - bar_width/2, vgg16_evals, bar_width, label='VGG16')
rects2 = ax.bar(x + bar_width/2, inceptionv3_evals, bar_width, label='Inception-V3')# Add some text for labels, title and custom x-axis tick labels, etc.
ax.set_ylabel('Loss/Acc')
ax.set_title('VGG16 与 Inception-V3 的花卉分类性能对比')
ax.set_xticks(x, labels)
ax.legend()ax.bar_label(rects1, padding=3)
ax.bar_label(rects2, padding=3)fig.tight_layout()plt.show()

        可以看出,基于 Inception-V3 为 base 模型的卷积神经网络,其预测准确率较高,为84.31%,以此花卉智能分类识别系统中,我们将集成该模型。

4. 花卉智能分类识别系统

4.1 系统首页

        系统首页提供简洁明了的界面设计,包括系统名称、主要功能简介以及使用指南等内容。用户可以通过主页快速了解系统的基本操作流程及注意事项。首页上还会展示一些示例图片,让用户直观地感受到系统的实际效果。

4.2 卷积神经网络模型介绍

4.3 花卉品种实时分类预测

        用户上传花卉图像后,系统将自动调用预先训练好的深度学习模型进行分析处理。模型会根据图像中的特征判断花卉种类,并给出相应的分类结果。此外,系统还会提供模型对所有类别的预测概率分布,提升模型输出可解释性。

        (1)郁金香(Tulip)类别样本预测

        (2)太阳花(Sunflower)类别样本预测

        (3)玫瑰花(Rose)类别样本预测

        (4)蒲公英(Dandelion)类别样本预测

        (5)雏菊(Daisy)类别样本预测

5. 总结

        本系统利用 TensorFlow、Keras 等深度学习框架构建卷积神经网络(CNN),利用花卉数据集进行模型训练与验证,预测AUC达到 94.9%,使用Flask框架结合Bootstrap前端技术搭建了一个交互式的分析预测平台,能够从大量的图像数据中自动学习和提取特征,从而实现高效、准确的分类。 

 欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。技术交流、源码获取认准下方 CSDN 官方提供的学长 QQ 名片 :)

精彩专栏推荐订阅:

1. Python-数据挖掘实战案例

2. Python-深度学习实战案例

3. Python-管理系统实战案例

相关文章:

基于深度学习的花卉智能分类识别系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 传统的花卉分类方法通常依赖于专家的知识和经验,这种方法不仅耗时耗力,而且容易受到主观因素的影响。本系统利用 TensorFlow、Keras 等深度学习框架构建卷积神经网络&#…...

Springboot集成MongoDb快速入门

1. 什么是MongoDB 1.1. 基本概念 MongoDB是一个基于分布式文件存储 [1] 的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数…...

DERT目标检测—End-to-End Object Detection with Transformers

DERT:使用Transformer的端到端目标检测 论文题目:End-to-End Object Detection with Transformers 官方代码:https://github.com/facebookresearch/detr 论文题目中包括的一个创新点End to End(端到端的方法)简单的理解就是没有使…...

软件后端开发速度慢的科技公司老板有没有思考如何破局

最近接到两个科技公司咨询,说是他们公司后端开发速度太慢,前端程序员老等着,后端程序员拖了项目进度。 这种问题不只他们公司,在软件外包公司中,有一部分项目甲方客户要得急,以至于要求软件开发要快&#…...

开放原子超级链内核XuperCore可搭建区块链

区块链是一种分布式数据库技术,它以块的形式存储数据,并使用密码学方法保证数据的安全性和完整性。 每个块包含一定数量的交易信息,并通过加密链接到前一个块,形成一个不断增长的链条。 这种设计使得数据在网络中无法被篡改,因为任何尝试修改一个块的数据都会破坏整个链的…...

【Qualcomm】高通SNPE框架的使用 | 原始模型转换为量化的DLC文件 | 在Android的CPU端运行模型

目录 ① 激活snpe环境 ② 设置环境变量 ③ 模型转换 ④ run on Android 首先,默认SNPE工具已经下载并且Setup相关工作均已完成。同时,拥有原始模型文件,本文使用的模型文件为SNPE 框架示例的inception_v3_2016_08_28_frozen.pb文件。imag…...

C++map与set

文章目录 前言一、map和set基础知识二、set与map使用示例1.set去重操作2.map字典统计 总结 前言 本章主要介绍map和set的基本知识与用法。 一、map和set基础知识 map与set属于STL的一部分,他们底层都是是同红黑树来实现的。 ①set常见用途是去重 ,set不…...

随手记:前端一些定位bug的方法

有时候接到bug很烦躁,不管是任何环境的bug,看到都影响心情,随后记总结一下查看bug的思路,在摸不着头脑的时候或者焦虑的时候,可以静下心来顺着思路思考和排查bug可能产生的原因 1.接到bug,最重要的是&am…...

【深度学习】03-神经网络2-1损失函数

在神经网络中,不同任务类型(如多分类、二分类、回归)需要使用不同的损失函数来衡量模型预测和真实值之间的差异。选择合适的损失函数对于模型的性能至关重要。 这里的是API 的注意⚠️,但是在真实的公式中,目标值一定是…...

Python爬虫APP程序:构建智能化数据抓取工具

在信息爆炸的时代,数据的价值日益凸显。Python作为一种强大的编程语言,与其丰富的库一起,为爬虫程序的开发提供了得天独厚的优势。本文将探讨如何使用Python构建一个爬虫APP程序,以及其背后的思维逻辑。 什么是Python爬虫APP程序&…...

第五部分:2---中断与信号

目录 操作系统如何得知哪个外部资源就绪? 什么是中断机制? CPU引脚和中断号的关系: 中断向量表: 信号和中断的关系: 操作系统如何得知哪个外部资源就绪? 操作系统并不会主动轮询所有外设来查看哪些资源…...

梧桐数据库(WuTongDB):SQL Server Query Optimizer 简介

SQL Server Query Optimizer 是 SQL Server 数据库引擎的核心组件之一,负责生成查询执行计划,以优化 SQL 查询的执行性能。它的目标是根据查询的逻辑结构和底层数据的统计信息,选择出最优的查询执行方案。SQL Server Query Optimizer 采用基于…...

Scrapy框架介绍

一、什么是Scrapy 是一款快速而强大的web爬虫框架,基于Twusted的异步处理框架 Twisted是事件驱动的 Scrapy是由Python实现的爬虫框架 ① 架构清晰 ②可扩展性强 ③可以灵活完成需求 二、核心组件 Scrapy Engine(引擎):Scrapy框架…...

Facebook对现代社交互动的影响

自2004年成立以来,Facebook已经成为全球最大的社交媒体平台之一,改变了人们的交流方式和社交互动模式。作为一个数字平台,Facebook不仅为用户提供了分享生活点滴的空间,也深刻影响了现代社交互动的各个方面。本文将探讨Facebook如…...

Java项目运维有哪些内容?

Java项目运维的内容主要包括环境准备、部署Java应用、配置和优化、安全配置、以及数据安全保护措施,服务的运行和资源动态监控管理。‌ ‌1,环境准备‌:这包括选择适合运行Java和Tomcat的操作系统,如Ubuntu、CentOS等Linux发行版…...

【学习笔记】MIPI

MIPI介绍 MIPI是由ARM、Nokia、ST、IT等公司成立的一个联盟,旨在把手机内部的接口如存储接口,显示接口,射频/基带接口等标准化,减少兼容性问题并简化设计。 MIPI联盟通过不同的工作组,分别定义一系列手机内部的接口标…...

QMake 脚本知识点记录

1. 简单工程配置 QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11CONFIG debug # debug/release HEADERS demo.h # 头文件 列表 SOURCES main.cpp demo.cpp # 源文件 列表 FORMS mainwin.ui # 窗体 列表…...

Kubernetes配置管理(kubernetes)

实验环境: 在所有节点上拉取镜像;然后把资源清单拉取到第一个master节点上; 同步会话,导入镜像: configmap/secret 配置文件的映射 变量: 基于valuefrom的方式 cm--》pod 特点:变量的名称可…...

macOS与Ubuntu虚拟机使用SSH文件互传

1.ubuntu配置: 安装openssh服务: sudo apt-get install openssh-server -y 查看服务启动状态: systemctl status ssh 2.macOS使用scp连接ubuntu并发送文件 查看ubuntu IP : ifconfigmacOS终端连接ubuntu : sc...

defineExpose 显式导出子组件方法

当父组件调用子组件的script setup中的方法时&#xff0c;必须显式导出该方法。因为 script setup 中定义的变量和方法默认是局部的&#xff0c;只有显式导出后&#xff0c;父组件才能访问这些方法。 //父组件-Parent <template><el-button type"primary" …...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...