目录
前言
📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
🚀对毕设有任何疑问都可以问学长哦!
选题指导:
大家好,这里是海浪学长毕设专题,本次分享的课题是
🎯基于深度学习的金属焊缝缺陷识别检测系统
设计思路
一、课题背景与意义
焊缝美观是检验焊接工艺的重要评判标准之一,但是在焊接过程中由于焊接部件受到外界因素的影响,在焊接部位会形成不同类型的缺陷。人工检测需要耗费大量人力和时间,因工人经验不同导致检测结果一致性差,无法满足现代工业的生产需求。因此引入机器视觉等方法对焊缝表面进行缺陷检测,实现焊缝缺陷的识别分类和定位功能。
二、算法理论原理
2.1 主干网络改进
YOLOv5又分为YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x四个不同的模型,其中YOLOv5s检测速度最快、模型的文件最小。由于本研究方法主要用于工业上对焊缝进行检测,考虑精度的同时也要关注检测速度与模型大小,因此本研究使用便于嵌入系统的YOLOv5s作为主干网络模型。
CBS基本卷积块,CBS卷积块由卷积层、批量归一化层和激活函数SiLu组成。然而卷积层太多会增大计算量和网络参数量,利用轻量型的GhostNet网络替代YOLOv5主干网络中CSP1结构中的残差模块。
GhostNet卷积模块采用传统卷积与轻量的冗余特征生成器相结合的方式代替传统的卷积层,网络参数和计算量相对较少,更容易部署到终端。Ghost卷积是GhostNet卷积模块的主要部分,相比于传统卷积,Ghost卷积的实现分为两部分,首先经过正常的卷积计算得到一部分通道较少的特征图,然后对这些特征图进行简单的线性操作得到更多特征图,最后将两组特征图进行拼接组成新的输出。
2.2 损失函数
网络损失函数由两部分组成,分别是回归损失和分类损失。回归损失又称坐标位置损失,采用CIOU_Loss作为位置损失。分类损失又包括类别损失和置信损失,用Focal_Loss评价类损失和置信度损失。
相关代码:
import torch
import torch.nn as nn
class ConcatenateFeatureMaps(nn.Module):
def __init__(self):
super(ConcatenateFeatureMaps, self).__init__()
def forward(self, feature_map1, feature_map2):
# 在通道维度上进行拼接
concatenated_features = torch.cat((feature_map1, feature_map2), dim=1)
return concatenated_features
# 假设feature_map1和feature_map2是两组特征图,维度为(batch_size, channels, height, width)
feature_map1 = torch.randn(16, 64, 32, 32)
feature_map2 = torch.randn(16, 128, 32, 32)
# 创建ConcatenateFeatureMaps模型实例并进行前向传播
concatenator = ConcatenateFeatureMaps()
output_features = concatenator(feature_map1, feature_map2)
print(output_features.shape) # 输出拼接后的特征图维度
三、检测的实现
3.1 数据集
为实现缺陷识别,需要采集大量的焊缝图像制作用于训练模型的数据集。学长采用相机在不同光照强度下采集焊接产品的缺陷图像,共采集1070张焊缝图像,因拍摄的焊缝缺陷多样性有限,数量达不到训练模型数据集的要求,于是从网上收集了600张不同焊缝缺陷类型的图像
3.2 实验环境搭建
模型的训练和测试均在Windows10操作系统上完成,选用Pytorch1.2框架,并配置NvidiaGeForceRTX2080Ti显卡。
3.3 实验及结果分析
在模型训练开始之前需要对训练的超参数进行设置,初始学习率设为0.01,动量为0.937,权重衰减系数为0.0005,输入图像分辨率选用640×640,模型训练批大小设置为16,训练总轮数为500轮。由图5可以看出,随着训练轮数的增加,损失函数的损失值在减小,训练50轮之前损失函数快速收敛,在200轮之后损失值趋于稳定,收敛于0.1,mAP趋于稳定,基本稳定在96.88%。
平均精度君之mAP :
改进的YOLOv5的mAP比传统的YOLOv5提高了3.12%,比YOLOv4模型高8.41%,比FasterRCNN网络高10.31%。改进后的YOLOv5网络模型各项参数明显提高,效果较为理想。
相关代码如下:
class WeldingDefectDetectionModel(nn.Module):
def __init__(self, num_classes):
super(WeldingDefectDetectionModel, self).__init__()
# 使用预训练的卷积神经网络作为特征提取器
self.feature_extractor = models.resnet50(pretrained=True)
# 替换最后的全连接层,设置输出类别数量
num_features = self.feature_extractor.fc.in_features
self.feature_extractor.fc = nn.Linear(num_features, num_classes)
# 定义损失函数
self.criterion = nn.CrossEntropyLoss()
def forward(self, x):
# 前向传播
features = self.feature_extractor(x)
return features
def compute_loss(self, outputs, targets):
# 计算损失函数
loss = self.criterion(outputs, targets)
return loss
# 创建金属焊缝缺陷识别检测模型实例
num_classes = 5 # 假设有5个类别
model = WeldingDefectDetectionModel(num_classes)
# 加载训练数据和标签
train_data = torch.randn(100, 3, 224, 224)
train_labels = torch.randint(0, num_classes, (100,))
实现效果图样例
创作不易,欢迎点赞、关注、收藏。
毕设帮助,疑难解答,欢迎打扰!