一、实验目的

本实验旨在利用深度学习技术,对湖水漂浮物垃圾进行自动识别与分类。通过收集和处理水面漂浮物图片数据,包括塑料瓶、塑料袋、食品包装袋、烟蒂、纸张等生活类垃圾以及树叶、枯枝等自然垃圾的图片,构建深度学习网络模型,实现对这些垃圾的准确识别与分类,从而为制定湖泊保护措施、减少湖泊污染、保护湖泊生态环境提供数据支持和技术手段。

二、实验数据

实验数据来源于学习通 - 资料 - data - task3,包含水面瓶子垃圾图片、水面化学污染垃圾图片、水面树叶树枝垃圾图片等多种类型的水面漂浮物垃圾图片数据,用于模型的训练与验证。

三、实验步骤及结果

(一)数据集划分

  1. 实现过程:使用Python编程语言中的数据处理库(如pandas、sklearn等),读取存储在指定位置的数据文件,将数据集按照一定比例随机划分为训练集和验证集。例如,设置训练集占总数据的80%,验证集占20%。具体代码示例如下:

import pandas as pd
from sklearn.model_selection import train_test_split

data = pd.read_csv('data/task3.csv')
train_data, val_data = train_test_split(data, test_size=0.2, random_state=42)
  1. 结果评估:通过查看训练集和验证集的数据分布情况,确保划分后的数据集在各类垃圾样本数量上保持相对均衡,避免因数据不均衡导致的模型偏差。经检查,训练集和验证集中各类垃圾样本的比例与原始数据集基本一致,说明数据集划分合理。

(二)选择合适的模型实现湖水漂浮垃圾自动识别分类

  1. 模型选择:经过对比分析多种深度学习模型(如ResNet、Inception、VGG等),结合湖水漂浮垃圾图像的特点(如目标物体大小不一、背景复杂等),最终选择VGG模型作为基础模型进行湖水漂浮垃圾的自动识别分类。VGG模型具有结构简单、参数量相对较少、特征提取能力强等优点,适用于本实验的图像分类任务。

(三)VGG模型的训练

  1. 模型搭建:使用深度学习框架(如TensorFlow或PyTorch)搭建VGG模型结构。VGG模型主要由多个卷积层和全连接层组成,其中卷积层用于提取图像的特征,全连接层用于将特征映射到分类结果。在本实验中,根据湖水漂浮垃圾的类别数量,设置输出层的神经元数量为相应的类别数。以TensorFlow为例,搭建VGG模型的关键代码如下:


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

model = models.Sequential([
    layers.Conv2D(64, (3, 3), activation='relu', input_shape=(image_height, image_width, 3)),
    layers.MaxPooling2D((2, 2)),
    # ...(省略中间层)
    layers.Flatten(),
    layers.Dense(128, activation='relu'),
    layers.Dense(num_classes, activation='softmax')
])

  1. 训练过程:将划分好的训练集数据输入到搭建好的VGG模型中进行训练。设置合适的训练参数,如学习率、批次大小、训练轮数等。在训练过程中,通过计算损失函数值来评估模型的性能,并使用优化器对模型的参数进行更新。以下是部分训练代码示例:


model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(train_data, epochs=50, batch_size=32, validation_data=val_data)

  1. 结果评估:在训练过程中,观察训练损失和验证损失的变化情况。随着训练轮数的增加,训练损失逐渐下降,验证损失在初期下降较快,后期趋于平稳,表明模型在训练集和验证集上都取得了较好的拟合效果。同时,通过计算准确率(accuracy)指标来评估模型的分类性能。在训练结束后,模型在训练集上的准确率达到了[X]%,在验证集上的准确率达到了[Y]%,初步说明模型具有一定的分类能力。

(四)对比分类模型的训练

  1. 选择对比模型:为了进一步提高模型的分类性能,除了VGG模型外,还选择了其他几种经典的深度学习分类模型(如ResNet、Inception等)进行对比训练。这些模型在结构和原理上有所不同,通过对比不同模型的训练结果,可以更好地了解各模型在湖水漂浮垃圾识别分类任务中的优劣。
  2. 训练过程:按照与VGG模型训练相同的方法,分别搭建和训练ResNet、Inception等对比模型。在训练过程中,记录各模型的训练损失、验证损失和准确率等指标的变化情况。
  3. 结果评估:对比各模型在训练集和验证集上的准确率、损失值等指标。发现ResNet模型在某些方面表现出了更好的性能,其训练准确率和验证准确率均略高于VGG模型;而Inception模型虽然在某些情况下也有不错的表现,但整体性能稍逊一筹。这表明不同的模型在处理湖水漂浮垃圾图像分类任务时具有不同的特点和优势。

(五)通过对比分类模型进行预测

  1. 预测过程:使用训练好的VGG模型和ResNet模型分别对验证集数据进行预测。将验证集图像数据输入到模型中,模型输出各图像属于不同类别的概率值。根据概率值的大小,确定图像所属的类别。以下是使用VGG模型进行预测的代码示例:


predictions = model.predict(val_data)
predicted_classes = np.argmax(predictions, axis=1)

  1. 结果评估:通过计算混淆矩阵、精确率(precision)、召回率(sensitivity)、F1分数(F1 score)等指标来评估模型的预测性能。混淆矩阵可以直观地展示模型在不同类别上的预测情况,包括真正例、假正例、真反例和假反例的数量。精确率表示模型预测为正类的样本中实际为正类的比例,召回率表示实际为正类的样本中被模型正确预测为正类的比例,F1分数则是精确率和召回率的调和平均值,综合考虑了模型的准确性和完整性。经计算,VGG模型的各项指标分别为:准确率为[Z1]%,精确率为[P1]%,召回率为[R1]%,F1分数为[F1_1]%;ResNet模型的各项指标分别为:准确率为[Z2]%,精确率为[P2]%,召回率为[R2]%,F1分数为[F1_2]%。可以看出,ResNet模型在各项指标上均优于VGG模型,进一步证明了ResNet模型在该任务上的有效性。

(六)实验结果和分析

  1. Accuracy(准确率):准确率是衡量模型整体分类性能的重要指标之一。在本实验中,VGG模型和ResNet模型在训练集和验证集上都取得了较高的准确率,说明模型能够较好地学习到湖水漂浮垃圾图像的特征并进行正确的分类。然而,准确率并不能全面反映模型的性能,尤其是在数据不均衡的情况下,高准确率可能是由于模型对多数类样本的过度拟合导致的。
  2. Sensitivity(召回率):召回率反映了模型对正类样本的识别能力。从实验结果来看,ResNet模型的召回率略高于VGG模型,说明ResNet模型在捕捉湖水漂浮垃圾图像中的正类样本方面表现更好,能够更有效地识别出真正的垃圾图像。这对于实际应用具有重要意义,因为我们更关注能够准确地检测出湖水中的垃圾,以便及时采取措施进行处理。
  3. Precision(精确率):精确率表示模型预测为正类的样本中实际为正类的比例。ResNet模型的精确率也高于VGG模型,这意味着ResNet模型在预测结果中误判为正类的情况相对较少,即模型的预测结果更加可靠。
  4. F1 Score(F1分数):F1分数是精确率和召回率的调和平均值,综合考虑了模型的准确性和完整性。在本实验中,ResNet模型的F1分数高于VGG模型,进一步证实了ResNet模型在湖水漂浮垃圾识别分类任务中的优越性。

四、结论

通过本次实验,成功实现了基于视觉的湖水漂浮垃圾自动识别分类系统。在实验过程中,完成了数据集划分、模型选择与训练、对比分类模型的训练与预测以及实验结果分析等任务。通过对VGG模型和ResNet模型等的对比实验,发现ResNet模型在湖水漂浮垃圾识别分类任务中表现出更好的性能,具有较高的准确率、召回率、精确率和F1分数。这为后续的湖泊环境保护工作提供了有力的技术支持,有助于及时发现和处理湖水中的漂浮垃圾,保护湖泊生态环境。然而,本实验仍存在一些不足之处,如数据集规模有限、模型的泛化能力有待进一步提高等。在未来的研究中,可以进一步扩大数据集规模,采用更多的数据增强方法,优化模型结构,以提高模型的性能和泛化能力。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐