目录
前言
📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
🚀对毕设有任何疑问都可以问学长哦!
选题指导:
大家好,这里是海浪学长毕设专题,本次分享的课题是
🎯基于深度学习的电力生产违规穿戴检测系统

设计思路
一、课题背景与意义
许多施工人员由于安全意识薄弱而未穿戴安全防护器具,这个现象成为了电力施工现场发生事故的重大导火索。因此,研究如何展开智能化监管,从而提高施工人员安全意识并减少施工事故,对于电力公司的可持续发展具有重要意义。
二、算法理论原理
2.1 非对称卷积网络
卷积神经网络(convolutional neural network, CNN)由于其局部感受野和权值共享的特性,具有较好的平移不变性,在计算机视觉领域倍受欢迎。然而,在面对图像背景复杂且目标物体不规则的情况下,普通卷积提取的视觉特征鲁棒性不佳。

非对称卷积网络通过使用不同大小和形状的卷积核,并在不同位置应用不同的卷积操作,增强了网络的感受野和非线性能力,提高了对图像和特征的表达能力和判别能力。它是一种有潜力的网络设计策略,可以在计算机视觉任务中取得较好的性能。

2.2 YOLOv5算法
Transformer结构最早在自然语言处理(natural language processing, NLP)领域中被提出。该结构利用全局自注意力机制自适应地捕获全局上下文信息,在多项NLP任务中取得卓越成果。而在计算机视觉领域中,视觉Transformer模型成为近年来学者们的热门研究对象。 Transformer结构融于YOLOv5中,形成卷积局部关注和全局上下文信息的互补,在保留CNN的归纳偏置的同时,也避免了全Transformer结构在数据量偏小情况下易出现的过拟合现象。

将Transformer结构融于YOLOv5中,形成卷积局部关注和全局上下文信息的互补,在保留CNN的归纳偏置的同时,也避免了全Transformer结构在数据量偏小情况下易出现的过拟合现象。本将特征提取主干网络中的标准卷积模块替换为ACB结构。通过ACB的中心增强机制将权重进行倾斜,针对不规则物体得到更具有辨识性和鲁棒性的视觉特征。该机制能够在推理阶段不额外增加计算开销的情况下,更好地服务于后续的下游任务,以构建更适合不同长宽比物体的检测模型。

相关代码:
import tensorflow as tf
def patch_embedding(input_feature, patch_size, embedding_dim):
# 获取输入特征的形状信息
batch_size, height, width, num_channels = input_feature.shape
# 计算特征图被划分的块数
num_patches = (height // patch_size) * (width // patch_size)
# 将输入特征划分为大小为 patch_size x patch_size 的块
patches = tf.image.extract_patches(images=input_feature,
sizes=[1, patch_size, patch_size, 1],
strides=[1, patch_size, patch_size, 1],
rates=[1, 1, 1, 1],
padding='VALID')
# 将每个块展平为向量
patches = tf.reshape(patches, [batch_size, num_patches, patch_size * patch_size * num_channels])
# 使用全连接层进行嵌入
embedded_patches = tf.keras.layers.Dense(embedding_dim)(patches)
return embedded_patches
三、检测的实现
3.1 数据集
使用的电力现场穿戴检测数据集来自学长从互联网收集的图片,其检测对象总共有6种,包括施工人员、佩戴安全袖章、佩戴绝缘手套、未佩戴绝缘手套、手持操作栏和手持验电笔。。本文将数据标注格式处理为Pascal VOC的组成格式,并将数据集随机划分成两组,其中90%的样本用于训练,而剩余10%的样本则作为测试集用于验证模型性能。

3.2 实验环境搭建
采用Pytorch1.7.0深度学习框架搭建IYOLOv5模型,并在NVIDIA RTX 2080Ti上完成模型训练。输入图像的大小为1280x1280x3,设定非极大值抑制和交并比(interaction-over-union, IoU)的阈值分别为0.3和0.5。优化策略使用Adam优化器进行梯度下降,设定批次大小为2,轮次为150,初始学习率为0.001。除此之外,采用余弦模拟退火算法实现对学习率的动态衰减,并在最后一个轮次时将学习率固定为0.0003。
3.3 实验及结果分析
通过对比现有的目标检测算法,来验证其在电力现场检测下的优良性能。所对比的方法包括一阶段方法(YOLOv5、SSD、CenterNet)和二阶段方法(Faster R-CNN)。在本实验中,根据对比方法的推荐训练参数在本训练集上进行训练。

消融实验将分别从两个方面对IYOLOv5进行设置,分别仅保留ACB以及Transformer模块来训练网络,以验证每个模块的作用。所添加的ACB与Transformer模块皆对电力现场检测有积极作用。其中,ACB对网络的提升效果最明显,鲁棒的视觉特征是目标检测效果好坏的基石。而一旦移除Transformer模块,模型缺乏捕捉全局信息的能力将会导致结果变差。

在电力现场检测环境下,依赖其ACB和Transformer模块能够更好地建模视觉特征,在忽视视觉噪声的同时能够更聚焦于检测物体上,达到更高的检测精度和识别效果。

相关代码如下:
import tensorflow as tf
# 定义违规穿戴检测模型
def create_model():
model = tf.keras.Sequential()
# 添加卷积层和池化层
model.add(tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)))
model.add(tf.keras.layers.MaxPooling2D((2, 2)))
model.add(tf.keras.layers.Conv2D(64, (3, 3), activation='relu'))
model.add(tf.keras.layers.MaxPooling2D((2, 2)))
model.add(tf.keras.layers.Conv2D(128, (3, 3), activation='relu'))
model.add(tf.keras.layers.MaxPooling2D((2, 2)))
# 添加全连接层
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(64, activation='relu'))
model.add(tf.keras.layers.Dense(2, activation='softmax')) # 假设有两类:违规穿戴和正常穿戴
return model
# 加载数据集并进行预处理
def load_dataset():
# TODO: 加载电力生产违规穿戴的数据集并进行预处理
pass
# 进行模型训练
def train_model(model, X_train, y_train):
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=10, batch_size=32)
# 进行模型评估
def evaluate_model(model, X_test, y_test):
loss, accuracy = model.evaluate(X_test, y_test)
print("Test Loss:", loss)
print("Test Accuracy:", accuracy)
实现效果图样例

创作不易,欢迎点赞、关注、收藏。
毕设帮助,疑难解答,欢迎打扰!
1034



被折叠的 条评论
为什么被折叠?



