毕业设计-计算机视觉:刨花板表面小目标缺陷检测系统 人工智能 算法 python

2023-12-29 21:20:57

?目录

?前言

设计思路

一、课题背景与意义

二、算法理论原理

2.1 自适应空间特征融合模块

2.2 Ghost 模块

三、检测的实现

3.1 数据集

3.2 实验环境搭建

3.3 实验及结果分析

实现效果图样例

最后


前言

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

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

? ? ? ? ?选题指导:

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

? ? ? ??大家好,这里是海浪学长毕设专题,本次分享的课题是

? ? ? ? 🎯基于深度学习的刨花板表面小目标缺陷检测系统

设计思路

一、课题背景与意义

? ? ? ?目前国内刨花板表面缺陷检测主要还是利用人工筛选的方式,存在较大主观性和误差性。同时,由于检测过程需要长时间连续观察运行的板材,工人极易产生视觉疲劳,不仅会降低工作效率,还会导致工作安全方面存在一定风险。

二、算法理论原理

2.1 自适应空间特征融合模块

? ? ? ?我们提出了一种改进的YOLOv5网络架构,专为刨花板表面缺陷检测而设计。通过融合ASFF模块与原有检测头、引入Transformer结构以及替换C3模块为C3Ghostv2模块,我们的网络在保持高检测精度的同时,显著减少了模型参数量和计算复杂度。通过融合ASFF(Adaptive Spatial Feature Fusion)模块与原有的检测头,我们能够更好地学习不同尺度特征层的信息。这样可以提高网络对刨花板表面缺陷的感知能力,从而提升检测准确性。这使得我们的网络更适用于实时应用场景,为刨花板表面缺陷的在线检测提供了一种高效准确的解决方案。

毕业设计-基于深度学习的刨花板表面小目标缺陷检测系统 YOLO python 卷积神经网络 人工智能?

? ? ? ?对于YOLOv5s而言,通过Neck部分获得了三种分辨率和通道数不同的特征层,记为F1、F2和F3,其分辨率分别为原始图像的1/8、1/16和1/32,因此针对每个尺度的特征层,需要相应采用上采样或下采样策略以及1×1卷积进行调整。

毕业设计-基于深度学习的刨花板表面小目标缺陷检测系统 YOLO python 卷积神经网络 人工智能?

2.2 Ghost 模块

? ? ? ?在实际的刨花板工业流水线上,为了提高生产效益,算法模型需要具备一定的实时性。为了提高检测精度,我们引入了ASFF和Transformer模块,这些模块能够更好地学习不同尺度特征层的信息,但同时也增加了计算量。然而,我们采用了轻量化的Ghostv2模块来替换原有的C3模块,以提升模型的检测速度。通过重新组织网络结构,我们在保持较高精度的同时,实现了模型的轻量化,从而满足了实时性要求,提高了生产效率。

毕业设计-基于深度学习的刨花板表面小目标缺陷检测系统 YOLO python 卷积神经网络 人工智能?

? ? ? ?在实际的刨花板工业流水线上,为了提高生产效益,需要具备一定的实时性。为了提高检测精度,引入了ASFF和Transformer模块,但这可能增加计算量。为了轻量化模型并提升检测速度,采用了Ghostv2模块替换C3模块。Ghostv2模块利用解耦全连接注意力机制(DFC)提升捕捉长距离空间信息的能力。这些改进使得模型在保持精度的同时满足实时性要求,提高生产效率。

毕业设计-基于深度学习的刨花板表面小目标缺陷检测系统 YOLO python 卷积神经网络 人工智能?

相关代码示例:

from torch.utils.data import DataLoader
from torchvision.transforms import transforms
from your_dataset_module import YourDataset
from your_model_module import ASFFModule, TransformerModule, Ghostv2Module

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

transform = transforms.Compose([
    transforms.Resize((640, 640)),
    transforms.ToTensor(),

])

train_dataset = YourDataset(train=True, transform=transform)
test_dataset = YourDataset(train=False, transform=transform)

三、检测的实现

3.1 数据集

? ? ? ?刨花板表面缺陷数据集是从某刨花板厂的实际生产过程中获取的。该数据集针对该厂出现的油污、粉尘斑、胶斑和刨花四类典型缺陷进行了精心选取。由于实际刨花板面积较大,在预处理过程中,首先将其进行灰度化处理,然后进行分割,并用黑色填充非板面部分,以避免无关背景的干扰。最终,我们选取了710张图像,每张图像的尺寸为1024×2048像素。为了增加数据集的多样性和数量,我们使用LabelImg软件对缺陷目标进行了标注,并通过上下和左右翻转、亮度调整以及增加高斯噪声等方法对图像进行了扩充。

毕业设计-基于深度学习的刨花板表面小目标缺陷检测系统 YOLO python 卷积神经网络 人工智能?

? ? ? ?相对于训练集中的1024×2048像素图像,粉尘斑、刨花和胶斑等缺陷的尺寸都较小,尤其是胶斑类缺陷的大小不超过40×50像素,属于典型的小目标。这些小目标在图像中的尺寸较小,因此在训练过程中需要特别注意对小目标的检测和识别。油污类缺陷的尺度跨度较大,并且当它们与其他类型的缺陷同时出现时,可能会产生一定的干扰。这意味着在模型训练和测试过程中,需要注意处理不同尺度的缺陷,并考虑它们之间的相互影响。

毕业设计-基于深度学习的刨花板表面小目标缺陷检测系统 YOLO python 卷积神经网络 人工智能?

3.2 实验环境搭建

? ? ? ?实验电脑处理器为Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz,GPU为NVIDIA RTX A4000,主机内存256GB,编程语言为Python3.6,基于深度学习框架Pytorch1.10.2进行训练。网络训练时,设置batch size为16,workers设置为8,epoch为100,训练时输入图像大小为640×640,初始学习率为0.01。? ? ? ?

3.3 实验及结果分析

? ? ? ?算法采用ASFF模块和Transformer模块进行精度方面的改良,同时采用Ghostv2模块进行精度和速度的综合考虑,精度提升了2.1%、召回率提升了7%,mAP提升了4.6%。针对获得的刨花板表面缺陷数据集,各类缺陷检测效果的P-R曲线,如下所示。

毕业设计-基于深度学习的刨花板表面小目标缺陷检测系统 YOLO python 卷积神经网络 人工智能?

? ? ? ?能够提升通类易检测目标的检测效果,针对存在复杂尺度变化缺陷干扰下的小目标缺陷,相对于原算法能够较大幅度提升检测效果。由于采用了Transformer模块和Ghostv2模块,无论是多头自注意力机制还是DFC注意力机制,所含的长距离注意力机制弥补了卷积操作时窗口大小的局限性,增强了算法捕捉全局信息的能力,与大面积油污一同出现的某些小尺寸油污被误检为胶斑的问题基本能够得到很好的解决。

毕业设计-基于深度学习的刨花板表面小目标缺陷检测系统 YOLO python 卷积神经网络 人工智能?

? ? ? ?检测结果中,小目标漏检、复杂背景干扰下的误检和检测置信度低等情况均得到不同程度的改善。ASFF模块针对数据集中多尺度特征的冲突抑制、融合权重学习,检测效果更好,能够有效地提升多尺度下小目标检测的准确性。在综合考虑增强网络小目标特征提取能力和优化多尺度融合后,mAP@0.5提升13.8%,证明了本研究改进算法的有效性。

毕业设计-计算机视觉:刨花板表面小目标缺陷检测系统 人工智能 算法 python

相关代码示例:

# 训练模型
for epoch in range(100):
    model.train()
    for images, labels in train_loader:
        images = images.to(device)
        labels = labels.to(device)

        optimizer.zero_grad()
        outputs = model(images)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

    # 在测试集上评估模型
    model.eval()
    test_loss = 0
    correct = 0
    with torch.no_grad():
        for images, labels in test_loader:
            images = images.to(device)
            labels = labels.to(device)
            outputs = model(images)
            test_loss += criterion(outputs, labels).item()
            _, predicted = outputs.max(1)
            correct += predicted.eq(labels).sum().item()

实现效果图样例

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

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

最后

文章来源:https://blog.csdn.net/weixin_55149953/article/details/135279689
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。