博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅

点击查看作者主页,了解更多项目!

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、毕业设计:2026年计算机专业毕业设计选题汇总(建议收藏)✅

2、大数据毕业设计:2026年选题大全 深度学习 python语言 JAVA语言 hadoop和spark(建议收藏)✅

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、项目介绍

技术栈:
python语言、pyqt5、tensorflow、CNN算法(卷积神经网络)、numpy、opencv、matplotlib、Mobilenet

本次系统实现了垃圾图片的上传、识别与分类。用户上传图片后,系统通过卷积神经网络模型对图像进行垃圾分类识别。模型训练使用垃圾分类数据集,经过训练后能够识别不同类型的垃圾。识别完成后,系统能够输出垃圾的类别名称,并为每个类别提供具体的垃圾处理方法。系统根据模型预测的结果,提供处理建议,帮助用户正确分类和处理垃圾。整个流程包括图片上传、垃圾分类识别、结果输出和处理方法提示。功能实现准确,识别结果与预期一致。一共使用5组数据进行测试,系统测试过程如下
当上传的图片为卫生纸时,系统成功识别并输出它是属于其他垃圾类的,输出的名称正确,并且显示出了相关的介绍。

划分为4大类:厨余垃圾、其他垃圾、可回收物、有害垃圾

2、项目界面

(1)其他垃圾

在这里插入图片描述

(2)厨余垃圾

在这里插入图片描述

(3)其他垃圾

在这里插入图片描述

(4)有害垃圾

在这里插入图片描述

(5)其他垃圾
在这里插入图片描述

(6)厨余垃圾

在这里插入图片描述

3、项目说明

随着环境污染问题日益严重,垃圾分类已成为各国政府关注的重要议题。传统的垃圾分类方法依赖人工识别和处理,效率低且容易出错,导致分类不准确、资源浪费严重。尤其在日常生活中,居民常常因缺乏足够的分类知识或误操作而将不同种类的垃圾混合在一起,造成垃圾处理困难。此外,手动分类的工作量庞大,导致人员资源紧张和处理效率低下。
本系统采用卷积神经网络(CNN)技术,实现了自动垃圾分类。用户通过点击上传图片按钮,系统能够识别图片中的垃圾种类,并自动显示垃圾的名称和相应的处理方法。该系统能够快速、准确地识别垃圾类型,减少人为错误,提高垃圾分类效率。通过深度学习算法,系统能不断优化识别能力,并为用户提供实时反馈,助力垃圾分类的普及与推广。
关键词:环境污染,垃圾处理,卷积神经网络,深度学习

该功能用于从指定目录加载图像数据集,并对其进行划分,以便进行训练和验证。通过利用 tf.keras.preprocessing.image_dataset_from_directory 方法,能够读取指定路径下的图像文件,并将图像数据自动转化为 TensorFlow 数据集格式。数据集划分通过设置 validation_split 参数完成,其中指定数据集的划分比例。在加载数据时,通过设置 subset=“training” 来获得训练集,设置 subset=“validation” 获取验证集。这种方法能够有效地保证数据划分的随机性和代表性,有助于提升模型的训练效果。返回的数据集包含图像和标签,支持按批次进行训练,每个批次的大小由 batch_size 参数控制。最终,函数返回训练集和验证集的数据对象 train_ds 和 val_ds,以及类别名称列表 class_names,该列表包含数据集中所有类别的名称,便于后续的模型训练和评估。

标题模型的结构如下:

images 目录主要是放置一些图片,包括测试的图片和 ui 界面使用的图片
models 目录下放置训练好的两组模型,分别是 cnn 模型和 mobilenet 的模型
results 目录下放置的是训练的训练过程的一些可视化的图,两个 txt 文件是训练过程中的输出,两个图是两个模型训练过程中训练集和验证集准确率和 loss 变化曲线
utils 是主要是我测试的时候写的一些文件,对这个项目没有实际的用途
main.py 是界面文件,主要是利用 pyqt5 完成的界面,通过上传图片可以对图片种类进行预测
testmodel.py 是测试文件,主要是用于测试两组模型在验证集上的准确率,这个信息你从 results 的 txt 的输出中也能获取
train_cnn.py 是训练 cnn 模型的代码
train_mobilenet.py 是训练 mobilenet 模型的代码

4、核心代码

import tensorflow as tf
from tensorflow.keras import layers, models

def build_cnn_model(IMG_SHAPE=(224, 224, 3), class_num=10):
    model = models.Sequential()
    
    # 数据预处理层
    model.add(layers.Rescaling(1./255, input_shape=IMG_SHAPE))
    
    # 第一层卷积层
    model.add(layers.Conv2D(32, (3, 3), activation='relu'))
    model.add(layers.MaxPooling2D((2, 2)))
    
    # 第二层卷积层
    model.add(layers.Conv2D(64, (3, 3), activation='relu'))
    model.add(layers.MaxPooling2D((2, 2)))
    
    # 展平层,将二维数据展平为一维
    model.add(layers.Flatten())
    
    # 全连接层
    model.add(layers.Dense(128, activation='relu'))
    
    # 输出层,使用 softmax 激活函数
    model.add(layers.Dense(class_num, activation='softmax'))
    
    # 编译模型
    model.compile(optimizer='adam',
                  loss='categorical_crossentropy',
                  metrics=['accuracy'])
    
    return model

import time
from tensorflow.keras.models import save_model

def train_and_save_model(epochs):
    # 记录开始时间
    start_time = time.time()

    # 加载数据集
    train_ds, val_ds, class_names = data_load()

    # 构建模型
    model = model_load()

    # 训练模型
    history = model.fit(train_ds, epochs=epochs, validation_data=val_ds)

    # 保存训练好的模型
    save_model(model, 'models/cnn_245_epoch30.h5')

    # 绘制损失和准确率曲线
    show_loss_acc(history)

    # 计算并打印总运行时间
    end_time = time.time()
    total_time = end_time - start_time
    print(f"Total training time: {total_time:.2f} seconds")

5、源码获取方式

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看【用户名】、【专栏名称】就可以找到我啦🍅

感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式👇🏻

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐