基于卷积神经网络的垃圾图像分类系统研究与实现

1.摘要

        垃圾分类作为资源回收利用的重要环节之一, 可以有效地提高资源回收利用效率, 进一步减轻环境污染带来的危害. 随着现代工业逐步智能化, 传统的图像分类算法已经不能满足垃圾分拣设备的要求. 本文提出一种基于卷积神经网络的垃圾图像分类模型 (Garbage Classification Network, GCN). 实验结果证明, GCN 在垃圾分类数据集上取得了优异的结果, 能够有效地提高垃圾识别精度。最后,本文基于训练好的GCN模型实现一个垃圾分类系统,该系统旨在向用户提供垃圾分类的知识,介绍不同类型的垃圾,并提供一个实用的界面,使用深度学习模型对垃圾图片进行分类。

2.基于卷积神经网络的垃圾分类模型实现与训练

垃圾数据集统计如下:(大家可以自己基于该数据集添加更多的类别)

************************************************************
                  Total Images per class
************************************************************
* cardboard => 403 images
* glass => 501 images
* metal => 410 images
* paper => 594 images
* plastic => 482 images

具体数据展示为:

  1. 加载和预处理数据

    # Load and preprocess the data
    train_datagen = ImageDataGenerator(horizontal_flip=True, rescale=1./255, zoom_range=0.2, validation_split=0.2)
    
    train_generator = train_datagen.flow_from_directory(
        "./dataset/",
        target_size=(128, 128),
        batch_size=100,
        class_mode='categorical',
        subset='training'
    )
    
    validation_generator = train_datagen.flow_from_directory(
        "./dataset/",
        target_size=(128, 128),
        batch_size=100,
        class_mode='categorical',
        subset='validation'
    )
    

    使用ImageDataGenerator加载和预处理训练数据和验证数据。在这里,数据进行了水平翻转、像素值缩放和缩放范围设置,并划分了验证集。

  2. 模型架构:创建了一个卷积神经网络(Convolutional Neural Network, CNN)模型,并依次添加了两个卷积层、池化层、Flatten层以及三个全连接层。卷积层用于提取图像特征,池化层用于降维,全连接层用于分类。

model = Sequential()
model.add(Conv2D(32, (3,3), input_shape=(128, 128, 3), activation='relu', padding='same'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(32, (3,3), activation='relu', padding='same'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(300, activation='relu'))
model.add(Dense(150, activation='relu'))
model.add(Dense(5, activation='softmax'))

        使用Conv2D函数添加一个卷积层,参数包括:32个滤波器(filters):表示该层输出的特征图数量。卷积核大小为(3, 3)。输入形状为(128, 128, 3),表示输入图像的尺寸为128x128,通道数为3(RGB)。激活函数为ReLU。padding设置为'same',表示对输入图像进行边界填充,保持输出与输入尺寸相同。使用MaxPooling2D函数添加一个最大池化层,参数为池化核大小为(2, 2),用于降低特征图的空间维度。再次添加一个相同参数的卷积层和池化层,用于进一步提取图像特征并降维。使用Flatten函数添加一个Flatten层,用于将多维数据压扁成一维数据,以便连接到全连接层。添加两个全连接层,分别包含300个和150个神经元,使用ReLU激活函数。添加一个输出层,包含5个神经元,对应5个类别(假设是5类问题),使用softmax激活函数进行多类别分类。

3. 训练模型:

最终,准确率可以训练达到90%左右。并使用save方法保存训练好的模型到文件中。

3.基于深度学习的垃圾分类系统实现

        将训练好的模型集成到 Flask 应用程序中:在 Flask 应用程序的代码中,添加模型的加载和预测函数。确保模型可以正确加载并对上传的图片进行预测。在服务器上部署 Flask 应用程序:将整个 Flask 应用程序上传到服务器,并确保服务器上已经安装了 Flask 和其他必要的依赖项。然后通过命令行运行 Flask 应用程序,使其在服务器上监听指定的端口。确保可以通过浏览器访问:在浏览器中输入服务器的 IP 地址或域名,加上相应的端口号(默认为 5000),即可访问部署好的 Flask 应用程序。本文将要实现的垃圾分类系统包含以下功能:
1.上传图片进行预测:用户可以通过网页界面上传垃圾图片。上传的图片会经过预处理,并使用预先训练好的深度学习模型进行分类预测。
2.预测结果展示:系统会将分类预测结果显示在网页上,告知用户该垃圾属于哪一类别。结果展示以图文结合的方式呈现,包括图片和分类标签。
3.多类别分类:模型可以对多种类别的垃圾进行分类,例如纸张、玻璃、金属、塑料等。
每个类别都有对应的图片和说明,用户可以通过预测结果了解垃圾的分类情况。
4.响应式界面设计:界面设计采用了响应式布局,适配不同大小的屏幕,提供良好的用户体验。
5.关于本项目页面:提供了关于本项目的介绍,说明了垃圾分类的重要性以及项目的解决方案。
6.展示了几种常见垃圾的图片和说明,增加了用户对垃圾分类的认识。
7.轮播图片展示:在页面顶部设置了轮播图片,通过动态展示图片和配文吸引用户关注。

        在项目文件夹中创建一个名为 templates 的文件夹,然后在其中创建 HTML 文件,设计上传图片的界面(例如 index.html)和显示预测结果的界面(例如 result.html)。最后设计实现的界面如下:

开始进行垃圾图像预测:

 上传图像:

预测:

4.总结 

        本文主要研究了基于深度学习和 Flask 的垃圾分类系统的设计与实现过程。首先,提出一种基于卷积神经网络的垃圾图像分类模型 (Garbage Classification Network, GCN),实验结果证明, GCN在垃圾分类数据集上取得了优异的结果, 能够有效地提高垃圾识别精度。其次,是Flask 应用程序开发部分,将深度学习模型应用于垃圾分类系统中。这个系统可以让用户上传垃圾图片,然后通过深度学习模型进行分类预测,最终展示预测结果给用户。

本文代码基于python3.7.0配置numpy==1.19.5、Flask==1.0.2、Keras==2.2.4、tensorflow等

完整代码下载链接:

https://download.csdn.net/download/weixin_40651515/89183885

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RF高频腔设计(7)

3.11 高阶模 之前我们说过,由于束流负载或者其它的原因会在RF高频腔中激发出很多模式,这些模式可能会对束流的稳定性造成不利的影响,尤其是腔的 R / Q ∗ Q L R/Q*Q_L R/Q∗QL​很高时。 为了解决这个问题,需要使用HOM阻尼器来抑…

数字化化转型中,人的重要性仍然不容忽视!

今日,蚓链多个数字化营销项目进行了复盘,最后数据显示:营销数据表现向上且居于高端的企业不仅仅是营销机制设置的科学、贴合市场,数据好的更主要原因还是体现在“人”!是团队的构成科学合理,拿到好结果的大…

AWVS的使用

AWVS的使用 1、使用docker拉取AWVS的镜像 docker pull secfa/docker-awvs 2.使用AWVS docker run -it -d -p 13443:3443 --cap-add LINUX_IMMUTABLE secfa/docker-awvs 3.访问 4.输入账号密码 https://hub.docker.com/r/secfa/docker-awvs 找到账号密码 username:adminadmin.…

1W 1.5KVDC 3KVDC 隔离宽范围输入,单、双输出 DC/DC 电源模块——TP2L-1W 系列

TP2L-1W系列是一款高性能、超小型的电源模块,宽范围2:1,4:1输入,输出有稳压和连续短路保护功能,隔离电压为1.5KVDC,3KVDC工作温度范围为–40℃到85℃。特别适合对输出电压的精度有严格要求的地方,外部遥控功…

【Python】爬虫-基础入门

目录 一、什么是爬虫 二、爬虫的主要用途 三、学会爬虫需要掌握的技能 四、爬虫使用的语言 五、编写爬虫需要的库,以python为例 六、爬虫示例-python 示例一 示例二 示例三 一、什么是爬虫 爬虫,又称网络爬虫或网页爬虫,是一种用来自…

《智能前沿:应对ChatGPT算力挑战》

在全球人工智能热潮中,以 ChatGPT 为代表的 AIGC 技术引发了广泛关注。人工智能和机器学习等技术对数据规模及处理速度等提出了更高要求。在数据成为主要生产要素的当下和未来,如何跟上时代的发展步伐,构建适应 AI 需求的数据中心&#xff0c…

Keil和VSCode协同开发STM32程序

系列文章 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 配置环境 2. 测试打开工程 3. 测试编译工程 随着项目的复杂度上升,开发者不仅需要强大的硬件支持,还需要一个高效和灵活的开发环境。 vscode是一款集成大量可以便携开发插件的代码…

自动化软件测试策略

作为一名软件开发人员,我在不同的公司工作过,具有不同的软件测试流程。在大多数情况下,没有特定/记录的测试方法......因此该过程的内容/方式取决于各个开发人员。与大多数情况一样,当没有强制执行或至少记录在案的政策时&#xf…

齐护K210系列教程(七)_LCD显示数据

LCD显示数据 文章目录 LCD显示数据1,显示英文2,显示传感器的数值3,显示中文4,课程资源 联系我们 LCD的最大分辨率为320*240,所以当我们设置文字或图像坐标时,后面要记住这一点,当然,…

如何将web content项目导入idea并部署到tomcat

将Web Content项目导入IntelliJ IDEA并部署到Tomcat主要涉及以下几个步骤: 1. 导入Web Content项目 打开IntelliJ IDEA。选择“File” -> “New” -> “Project from Existing Sources…”。浏览到你的Web Content项目的文件夹,并选择它。Intell…

QA的成长之路——深入测试的奇妙之旅

引言 功能测试的小伙伴,你们是否遇到过这些问题: 1、工作中重复性很高:尽管尽可能地让一个 case 覆盖更多场景,但仍有许多重复性 case,耗费大量时间,让人感到枯燥疲惫; 2、覆盖度不全&#x…

Bitmap 原理简述

之前写过一篇 bitmap 应用场景的文章https://blog.csdn.net/maray/article/details/136923316 本文介绍 bitmap 的原理: 下面有三张表:user_info_base, user_prefer, user_device,我们希望查询“喜欢电子产品并且使用iPhone的女性用户”&…

食用油5G智能工厂数字孪生可视化平台,推进食品制造业数字化转型

食用油5G智能工厂数字孪生可视化平台,推进食品制造业数字化转型。在食用油产业中,数字化转型已成为提升生产效率、优化供应链管理、确保产品质量和满足消费者需求的关键。食用油5G智能工厂数字孪生可视化平台作为这一转型的重要工具,正在推动…

数据结构之顺序表(java版)

目录 一.线性表 1.1线性表的概念 二.顺序表 2.1顺序表的概念 2.2顺序表的实现 1.顺序表的接口 1.2顺序表的功能实现 1.顺序表初始化 2.新增元素功能: 3.清空顺序表是否为空&&获取顺序表长度&&打印顺序表: 4.判断是否包含某个…

关于开设YOLOv8专栏及更新内容的一些说明

​ 专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,助力高效涨点!!! 专栏介绍 ⭐后期更新包含模块、卷积、检测头、损失等改进,目前已有70!现在入手仅$ 69.9,早入早发论文!⭐ ⭐…

【前端技术】HTML基础入门篇

1.1 HTML简介 ​ HTML(HyperText Markup Language:超文本标记语言)是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组…

uView u-parse 在nvue页面中无作用踩坑

问题起因: 在uni-app开发的app nvue页面中有需要回显渲染字符串形式的富文本内容 但使用v-html和uniapp的rich-text组件都无法起到作用,就想到了使用uView中u-parse进行尝试。 uView我是使用uniApp插件市场导入的方式将插件导入项目的uni_modules中 …

2024年教你学浪视频抓取#小浪助手

在2024年,学浪平台已经成为学习者们追逐知识、获取学习资源的热门平台之一。然而,尽管学习平台提供了丰富多样的学习内容,但有时候我们还是希望能够将这些学习资源下载下来,以便随时随地进行学习。那么,如何学习学浪视…

【layoutlmv3推理】无法识别的pdf使用ocr识别代码demo实例

目录 前情提要一、安装依赖1、直接安装的依赖2、需要编译的依赖1)Leptonica2)icu3)Tesseract 3、需要自行配置的依赖 二、模型下载三、更改transformers源码四、加载光学字符识别语言包五、运行代码 前情提要 在做pdf转文本时,发…

用于割草机器人,商用服务型机器人的陀螺仪

介绍一款EPSON推出适用于割草机器人,商用服务型机器人的高精度陀螺仪模组GGPM61,具体型号为GGPM61-C01。模组GGPM61是一款基于QMEMS传感器的低成本航向角输出的传感器模组,它可以输出加速度、角速度及姿态角等信息,为控制机器人运…