python实现六种垃圾分类(基于mindspore深度学习框架)

目录

1. 实验目的与内容 

1.1 实验目的

1.2 实验内容

1.3 研究背景与意义

2.  算法概述、流程、功能模块

2.1 准备数据

2.2 配置网络

2.3 定义网络

2.4 定义损失函数

2.5 定义优化算法

2.6 训练网络

2.7 模型评估

2.8 模型预测

3. 结果及性能分析

3.1 结果

3.2 调参及性能优化

4. 总结

4.1 实验中遇到的问题

4.2 解决问题的过程及体会

4.3 实验收获

4.4 实验结论

5. 参考文献

6. 源代码


1. 实验目的与内容 

1.1 实验目的

        本实验使用MindSpore框架进行AI模型的训练与部署,通过训练一个基于MobileNet V2架构的深度学习模型,实现垃圾分类。具体目标包括:

        1. 下载并预处理垃圾分类数据集。

        2. 利用预训练的MobileNet V2模型进行微调,训练出一个高精度的垃圾分类模型。

        3. 实现实时垃圾分类的功能,并对模型的性能进行评估和优化。

1.2 实验内容

1. 数据准备与加载:

    下载并解压垃圾分类数据集。

    对数据集进行图像增强和预处理操作,创建训练集和验证集。

2. 模型训练:

    下载预训练的MobileNet V2模型。

    利用预训练模型进行微调,调整模型参数以适应垃圾分类任务。

    训练模型,并使用验证集评估模型性能,保存验证精度最高的模型。

3. 模型可视化:

    使用训练好的模型对输入图像进行预测,并将预测结果可视化展示。

4. 性能评估与优化:

    评估模型在验证集上的性能,包括准确率和损失。

    对模型进行调参和优化,提高模型的精度和推理速度。

1.3 研究背景与意义

        垃圾分类是当前社会面临的一个重要环境保护问题。通过对垃圾进行分类处理,可以有效提高资源的回收利用率,减少环境污染。然而,人工进行垃圾分类不仅效率低下,而且容易出错。为了解决这一问题,利用深度学习技术开发自动化的垃圾分类系统具有重要的现实意义。

        近年来,随着深度学习技术的发展和硬件计算能力的提升,基于图像分类的AI模型在实际应用中表现出色。MobileNet V2作为一种轻量级卷积神经网络,因其高效的计算能力和较低的资源消耗,特别适用于移动端和嵌入式设备。通过MobileNet V2的垃圾分类模型,可以实现高效、便捷的实时垃圾分类,助力环保事业的发展。

2.  算法概述、流程、功能模块

2.1 准备数据

下载数据集: 垃圾分类数据集包含6个类别:纸板、玻璃、金属、纸、塑料、垃圾,我们下载并解压数据集到指定路径下。

datasets

└── Garbage_Data
    ├── infer
    │   ├── cardboard1.jpg
    │   ├── glass1.jpg
    │   ├── metal1.jpg
    │   ├── paper1.jpg
    │   ├── plastic1.jpg
    │   └── trash1.jpg
    ├── train
    │   ├── cardboard
    │   ├── glass
    │   ├── metal
    │   ├── paper
    │   ├── plastic
    │   └── trash
    └── val
        ├── cardboard
        ├── glass
        ├── metal
        ├── paper
        ├── plastic
        └── trash

加载数据集: 该create_dataset函数从指定路径加载数据集,如果train设置为,则应用数据增强True,它规范化图像并将其转换为所需的格式。

def create_dataset(path, batch_size=10, train=True, image_size=224):

    dataset = ds.ImageFolderDataset(path, num_parallel_workers=8, class_indexing={"cardboard": 0, "glass": 1, "metal": 2, "paper": 3, "plastic": 4, "trash": 5})


# 图像增强操作

    mean = [0.485 * 255, 0.456 * 255, 0.406 * 255]
    std = [0.229 * 255, 0.224 * 255, 0.225 * 255]
    if train:
        trans = [

            vision.RandomCropDecodeResize(image_size, scale=(0.08, 1.0), ratio=(0.75, 1.333)),
            vision.RandomHorizontalFlip(prob=0.5),
            vision.Normalize(mean=mean, std=std),
            vision.HWC2CHW()

        ]
    else:
        trans = [

            vision.Decode(),
            vision.Resize(256),
            vision.CenterCrop(image_size),
            vision.Normalize(mean=mean, std=std),
            vision.HWC2CHW()

        ]

    dataset = dataset.map(operations=trans, input_columns="image", num_parallel_workers=8)

    # 设置batch_size的大小,若最后一次抓取的样本数小于batch_size,则丢弃
    dataset = dataset.batch(batch_size, drop_remainder=True)
    return dataset


# 加载训练数据集和验证数据集
train_path = "Garbage_Data/train"
dataset_train = create_dataset(train_path, train=True)


val_path = "Garbage_Data/val"
dataset_val = create_dataset(val_path, train=False)

2.2 配置网络

下载预训练的MobileNet V2模型,并进行微调。设置网络超参数,包括学习率、批次大小、训练轮数等。

from mindspore import nn, load_checkpoint, load_param_into_net

from mindspore.train import Model

from mindspore import context

# 设置执行环境

context.set_context(mode=context.GRAPH_MODE, device_target="CPU")

# 加载预训练的MobileNetV2模型

from mindvision.classification.models import mobilenet_v2

network = mobilenet_v2(num_classes=6, pretrained=True)

# 修改最后的全连接层

network.clas
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值