前言
📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
🚀对毕设有任何疑问都可以问学长哦!
选题指导:
最新最全计算机专业毕设选题精选推荐汇总
大家好,这里是海浪学长毕设专题,本次分享的课题是
🎯基于深度学习的绝缘子缺陷检测系统
一、课题背景与意义
随着电力系统规模的不断扩大,电力设备的智能运维得到广泛关注。变电站作为电力系统的枢纽,在电能的传输与分配环节中发挥了重要作用,变电站中关键设备的运行状态直接决定了电网的安全稳定运行。绝缘子大多长时间暴露在户外,往往容易出现破损、掉串、腐蚀等缺陷,绝缘子的绝缘强度将会下降。若不能及时发现此类缺陷而继续带电运行,极易发展为永久性故障,从而为电网安全稳定运行带来重大隐患,因此绝缘子是变电站日常维护工作中的重点巡检对象。
二、设计思路
2.1.多尺度特征融合
多尺度特征融合网络由特征提取网络和特征融合网络构成,其中特征融合网络包含反卷积特征融合模块和多分支检测模块,形成不对称沙漏的网络结构,并通过跨层连接实现多尺度特征融合。为适应巡检图像中不同尺寸和形状的绝缘子缺陷,MSD2Net采用基于反卷积和多分支检测的特征融合网络。该网络采用可学习的反卷积层自适应调整上采样的参数,实现跨特征层的信息交互,并通过多分支检测结构分别进行目标分类和边框位置回归,可实现更好的检测效果。
SSD网络将VGGNet提取的特征图直接输入检测环节,缺少特征融合操作。MSD2Net网络通过反卷积特征融合模块,将特征提取网络的Conv3~Conv6的输出特征图分别跨层与同尺寸的反卷积层Deconv1~Deconv4输出特征图连接并融合,实现深层语义信息与浅层细节信息的交互,之后送入检测环节。多尺度特征融合网络采用反卷积代替传统的双线性插值作为上采样方法,能够动态调整输出特征。反卷积过程是先按照一定比例在尺寸为i的输入特征图中通过插入零值来扩大尺寸,再通过尺寸为k的卷积核处理获得尺寸为o的输出特征图,从而实现从低分辨率到高分辨率的映射。
目标检测网络常选择与标注框交并比最大的先验框作为正样本,而将IOU小于设定阈值的先验框全部作为负样本,正负样本数量严重不平衡。交叉熵损失作为分类损失,大量的负样本会淹没正样本的回归过程,使网络整体难以快速准确地拟合正样本,影响检测结果。
代码如下(示例):
lass FocalLoss(nn.Module):
def __init__(self, alpha=0.25, gamma=2):
super(FocalLoss, self).__init__()
self.alpha = alpha
self.gamma = gamma
def forward(self, inputs, targets):
ce_loss = nn.CrossEntropyLoss(reduction='none')(inputs, targets)
pt = torch.exp(-ce_loss)
focal_loss = self.alpha * (1 - pt) ** self.gamma * ce_loss
return focal_loss.mean()
2.2 绝缘子缺陷检测
在网络检测环节,常用的非极大值抑制算法按置信度得分对检测框进行排序,并保留得分最高的检测框,同时筛除与该框的重叠面积(IOU)大于设定阈值的检测框。然而,这种方法存在一个问题,即在重叠面积较大的情况下,其他检测框可能会被错误删除。为了解决这个问题,可以计算每个检测框与最高得分框的IOU,并将其作为高斯函数的输入,再与原始置信度得分相乘得到最终的分数。通过这种方式,与最高得分框重叠较大的检测框的分数会下降更多。然后,可以删除分数高于设定阈值的检测框,从而缓解了与最高得分框有重叠部分的检测框被错误删除的问题。
代码如下(示例):
def adjust_scores_with_iou(detection_boxes, detection_scores, iou_threshold):
# 根据IOU调整检测框的分数的代码
adjusted_scores = detection_scores.copy()
max_score_index = np.argmax(detection_scores)
for i in range(len(detection_boxes)):
if i == max_score_index:
continue
iou = calculate_iou(detection_boxes[i], detection_boxes[max_score_index])
adjusted_scores[i] *= np.exp(-iou / iou_threshold)
return adjusted_scores
def remove_boxes_with_high_scores(detection_boxes, detection_scores, score_threshold):
# 删除分数高于阈值的检测框的代码
filtered_boxes = []
filtered_scores = []
for i in range(len(detection_boxes)):
if detection_scores[i] < score_threshold:
filtered_boxes.append(detection_boxes[i])
filtered_scores.append(detection_scores[i])
return filtered_boxes, filtered_scores
# 检测框和置信度得分的初始化
detection_boxes = load_detection_boxes() # 加载检测框数据
detection_scores = load_detection_scores() # 加载置信度得分数据
# 调整检测框的分数
adjusted_scores = adjust_scores_with_iou(detection_boxes, detection_scores, iou_threshold)
# 删除分数高于阈值的检测框
filtered_boxes, filtered_scores = remove_boxes_with_high_scores(detection_boxes, adjusted_scores, score_threshold)
# 输出结果
for i in range(len(filtered_boxes)):
print("Box:", filtered_boxes[i], "Score:", filtered_scores[i])
设计模型的主要目标是减少复杂背景的干扰,提高绝缘子缺陷检测的精度,并解决缺乏样本数量的问题。为此,作者构建了一个变电场景下的绝缘子缺陷数据集,包括不同场景的图像样本。在真实场景的变电巡检图片中,提取绝缘子串,并在提取后的图像中批量生成模拟缺陷,以增加数据集的多样性。为了避免图像变形对检测精度的影响,作者将提取出的绝缘子图片划分为正方形滑动窗口进行检测,以原始图片的短边作为窗口的边长。
在不同巡检场景中的泛化性能,在公开的输电场景数据集上进行了验证。由于该数据集的绝缘子串形状角度相似且缺陷位置单一且固定,样本数量较少,容易导致网络过拟合。因此,通过合成缺陷样本对数据集进行增强。
代码如下(示例):
# 创建增强后的数据集
augmented_images = []
augmented_labels = []
# 对每个样本进行合成缺陷样本的增强
for i in range(len(dataset_images)):
image = dataset_images[i]
label = dataset_labels[i]
# 创建一个全黑的缺陷掩膜
defect_mask = np.zeros_like(image)
# 随机选择缺陷类型(比例根据实际需求进行调整)
defect_types = ['crack', 'contamination']
selected_defect_types = np.random.choice(defect_types, size=2, replace=False)
# 生成两个合成缺陷样本
for defect_type in selected_defect_types:
augmented_image = add_synthetic_defect(image, defect_mask.copy(), defect_type)
augmented_images.append(augmented_image)
augmented_labels.append(label)
# 将增强后的数据集与原始数据集合并
final_images = dataset_images + augmented_images
final_labels = dataset_labels + augmented_labels
三、模型训练
3.1 实验环境
为验证本文算法的可行性,作者使用PyTorch 1.9.0深度学习框架、PyCharm 2020.3软件和CUDA 11.2开发环境,在Ubuntu 20.04.2 LTS操作系统上进行了模型的训练和测试。实验硬件配置包括Intel Core i7-11700K 8核16线程的CPU和NVIDIA GeForce RTX-3070 GPU。
3.2 结果分析
测试实验的评估指标包括每个类别的平均精度(AP)和所有类别的平均精度均值(mAP),用于评估检测算法的准确率。
精度曲线是一种常见的评估模型性能的方式,它展示了模型在不同阈值下的准确率(Precision)和召回率(Recall)之间的关系。通过调整阈值,我们可以在准确率和召回率之间进行权衡。通常,我们可以通过绘制精度-召回率曲线或者绘制接收者操作特征曲线来进行模型性能的评估和比较。验证集和测试集的精度曲线对比可以帮助我们评估模型的泛化能力,并为进一步改进和优化模型提供指导。
在不同数量和不同拍摄角度的绝缘子片场景下,能够有效地检测出绝缘子和缺陷目标。与SSD网络相比,所提出的网络避免了漏检、多检和错检等问题,进一步验证了算法的有效性。在复杂背景和目标尺寸差距较大的场景下仍然具有相对最高的检测精度,并展现了较强的适应性。
最后
版权归原作者 Mini_hailang_IT 所有, 如有侵权,请联系我们删除。