【毕业设计选题】基于深度学习的可回收饮料瓶垃圾检测识别算法系统 YOLO python 卷积神经网络 人工智能

目录

 前言

设计思路

一、课题背景与意义

二、算法理论原理

2.1 EAM 模块

2.2 α-IOULoss 函数

三、检测的实现

3.1 数据集

3.2 实验环境搭建

3.3 实验及结果分析

最后


前言

       📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

        🚀对毕设有任何疑问都可以问学长哦!

         选题指导:

        最新最全计算机专业毕设选题精选推荐汇总

设计思路

一、课题背景与意义

        未经分类的垃圾可能被混入其他垃圾中,导致资源浪费和环境污染。通过垃圾检测识别系统,可提高饮料瓶垃圾的准确分类,从而减少对环境的负面影响。

二、算法理论原理

       YOLOv5m模型在网络结构上更加复杂,检测精度更高,但是检测效率相对较低。应用YOLOv5m模型进行物体检测时,应设置训练总轮次、批次大小和迭代次数参数,将待检测目标图像输入模型,通过训练获得表明定位精度的位置损失值及表明检测精度的AP_0.5值输出。学长提出了一种基于改进YOLOv5m模型的目标检测模型。模型共由4个部分构成:输入端(Input)、主干网络(Backbone)、颈部网络(Neck)和输出端(Prediction)。

毕业设计-基于深度学习的可回收饮料瓶垃圾检测识别算法系统 YOLO python 卷积神经网络 人工智能

2.1 EAM 模块

       CBAM模块能简洁、高效地实现注意力机制。该模块将特征图按通道进行全局池化运算,得到了通道注意力模块和空间注意力模块。但是在卷积神经网络中,如果插入CBAM模块,则会导致网络参数的增加,从而导致卷积神经网络的效率下降。学长应用了改进的轻量化CBAM模块——EAM模块,将EAM注意力模块融入YOLOv5m模型。

毕业设计-基于深度学习的可回收饮料瓶垃圾检测识别算法系统 YOLO python 卷积神经网络 人工智能

2.2 α-IOULoss 函数

YOLOv5m模型选择α-IOU Loss函数作为损失函数。该损失函数由一个附加的功率正则化项和一个功率项IOU组成。其中,功率正则化项包含一个功率参数α,可用于更加灵活地调整定位精度。而且可以通过自适应地增加高IOU对象的损失和梯度的权重,进而提高检测框定位精度。

检测流程:

       采用YOLOv5算法来进行数据检测。首先建立可回收饮料瓶检测数据集并进行数据集标注,将其标注的文件转换为YOLOv5算法的输入格式。然后将输入数据分为训练集和测试集,将训练集输入YOLOv5算法进行训练,完成分阶段训练及验证后获得基于EA-YOLOv5m的可回收饮料瓶检测模型。最后输入测试集测试模型是否满足要求。模型若没有满足要求,则调整参数重新训练,直到满足要求后对模型检测效果可视化。

毕业设计-基于深度学习的可回收饮料瓶垃圾检测识别算法系统 YOLO python 卷积神经网络 人工智能

       YOLOv5m模型在网络结构上更加复杂,检测精度更高,但是检测效率相对较低。应用YOLOv5m模型进行物体检测时,应设置训练总轮次、批次大小和迭代次数参数,将待检测目标图像输入模型,通过训练获得表明定位精度的位置损失值及表明检测精度的AP_0.5值输出。 

相关代码:

class ChannelAttentionModule(nn.Module):
    def __init__(self, in_channels, reduction_ratio=16):
        super(ChannelAttentionModule, self).__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Sequential(
            nn.Linear(in_channels, in_channels // reduction_ratio),
            nn.ReLU(inplace=True),
            nn.Linear(in_channels // reduction_ratio, in_channels),
            nn.Sigmoid()
        )

    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.avg_pool(x).view(b, c)
        y = self.fc(y).view(b, c, 1, 1)
        return x * y

class SpatialAttentionModule(nn.Module):
    def __init__(self):
        super(SpatialAttentionModule, self).__init__()
        self.conv = nn.Conv2d(2, 1, kernel_size=7, padding=3)
        self.sigmoid = nn.Sigmoid()

    def forward(self, x):
        avg_pool = torch.mean(x, dim=1, keepdim=True)
        max_pool, _ = torch.max(x, dim=1, keepdim=True)
        y = torch.cat([avg_pool, max_pool], dim=1)
        y = self.conv(y)
        y = self.sigmoid(y)
        return x * y

三、检测的实现

3.1 数据集

       为符合可回收饮料瓶的实际检测情况,选用有遮挡情况的瓶子为检测对象。采用来自互联网图片图像379张,手机拍摄图片121张,共计500张。数据集中检测目标中心点分布及尺寸大小情况如图4所示

毕业设计-基于深度学习的可回收饮料瓶垃圾检测识别算法系统 YOLO python 卷积神经网络 人工智能

       采用了Moscia数据增强方法使模型获得更好的训练效果。Mosaic数据增强方法不仅丰富了目标的位置分布情况,并且在一定程度上放大了小尺寸目标,从而提高了模型训练效率。

毕业设计-基于深度学习的可回收饮料瓶垃圾检测识别算法系统 YOLO python 卷积神经网络 人工智能

3.2 实验环境搭建

实验基于Pytorch框架实现,实验环境:Windows10操作系统;CPU为Intel(R) Core(TM)i5-1135G7@2.40GHz,GPU为GeForceMX450,内存2GB。为在保证模型训练效果的同时提升训练效率,根据实验环境采用YOLOv5算法的默认训练参数。将数据集随机分为训练集及验证集,数量比设定为8∶2;训练的初始学习率设置为0.0001,warm-up预训练步长为5,训练步数设置为300步,分批规模batchsize为8。

3.3 实验及结果分析

       在初始阶段需要进行位置信息编码,而造成初始损失值较高。但随着训练步数的不断增加,α-

       在IOU阈值设置为0.5时,3种模型的AP值均在训练200步左右收敛于0.9。为了更好的对训练模型性能进行客观比较,本实验比较了IOU阈值设置为0.5至0.95时3种模型的AP值。可知,EA-YOLOv5m模型在整个训练过程中AP值提升的效率最高。

       模型采用EAM注意力模块提升检测精度,采用α-IOU Loss函数对损失函数进行改进,改善检测框的定位精度及置信度。实验结果表明,EA-YOLOv5m模型测试的AP_0.5和AP_0.5-0.95较YOLOv5m模型分别提高了0.15%和1.28%,检测速度提高了0.5帧/s。型在模型权重和检测效率以及检测精度方面达到良好的平衡,对遮挡情况下瓶子的检测定位精度、置信度均有明显提升。

毕业设计-基于深度学习的可回收饮料瓶垃圾检测识别算法系统 YOLO python 卷积神经网络 人工智能

相关代码如下:

i def preprocess(self, x):
        # Preprocess the input image
        transform = transforms.Compose([
            transforms.ToTensor(),
            transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
        ])
        x = transform(x)
        x = x.unsqueeze(0)  # Add batch dimension
        return x

# 创建可回收饮料瓶垃圾检测识别模型
model = BottleGarbageDetectionModel(num_classes=2)

# 加载预训练权重
pretrained_weights = 'path/to/your/pretrained_weights.pth'
model.load_state_dict(torch.load(pretrained_weights))

# 将模型移至GPU
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model.to(device)

# 输入示例图像
image = torch.randn(3, 256, 256).to(device)

# 前向传播
output = model(image)

# 在输出中选择检测结果
prediction = torch.argmax(output)

# 打印预测结果
if prediction == 0:
    print("Detected: Non-recyclable garbage")
else:
    print("Detected: Recyclable bottle")

创作不易,欢迎点赞、关注、收藏。

毕设帮助,疑难解答,欢迎打扰!

最后

  • 26
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值