目录
前言
📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
🚀对毕设有任何疑问都可以问学长哦!
选题指导:
大家好,这里是海浪学长毕设专题,本次分享的课题是
🎯基于深度学习的瓷砖表面缺陷检测算法系统
设计思路
一、课题背景与意义
目前在瓷砖表面缺陷检测环节中,主要通过质检人员利用人眼主观地去判断瓷砖表面是否存在瑕疵。质检人员长时间在强光高噪音的环境下工作,存在检测效率低、人力成本高、检测质量不稳定等问题。相较于人工检测,使用机器来实现瓷砖表面缺陷的自动检测也存在很多问题,瓷砖表面缺陷检测一直是困扰瓷砖行业的痛点,也是瓷砖行业发展的瓶颈。
二、算法理论原理
2.1 YOLOv5 算法
为了解决瓷砖表面缺陷检测存在的小目标检测困难、实时性要求高的问题。改进点主要分为3个部分:
- 1) 模型结构改进:删除原模型中专门用来检测大目标的冗余检测头分支;
- 2) 模型轻量化改进:使用轻量化模块ghost convolution和C3Ghost替换原模型Backbone网络中的C3和普通卷积模块;
- 3) 添加注意力机制:为了让模型更关注重要的区域,在Backbone和Neck网络末端添加CA (coordinate attention) block。

为了对比拥有不同数量目标检测头分支的YOLOv5s模型,在Prediction网络添加了一个专门针对微小目标的检测头,在Neck网络中采用FPN+PANet的网络结构,添加了A1和A2部分,A1与P2输出的特征信息拼接后直接对微小目标进行检测。

2.2 注意力机制
对YOLOv5s模型进行轻量化改进思路是使用基于ghost module的ghost convolution和C3Ghost去分别替换原模型Backbone网络中的普通卷积和C3模块。

CA block网络结构,相比于SE block,它除了考虑通道间的关系外,还考虑了特征空间的位置信息,在通道注意力中结合水平方向信息和垂直方向信息,这能帮助模型更加精确地定位和识别感兴趣的目标。

相关代码:
import tensorflow as tf
def compute_attention_weights(inputs):
# 计算水平方向的注意力权重
horizontal_attention = tf.keras.layers.Conv2D(1, kernel_size=1, activation='sigmoid')(inputs)
# 计算垂直方向的注意力权重
vertical_attention = tf.keras.layers.Conv2D(1, kernel_size=1, activation='sigmoid')(inputs)
return horizontal_attention, vertical_attention
# 创建一个输入张量
inputs = tf.keras.layers.Input(shape=(64, 64, 3))
# 计算注意力权重
horizontal_weights, vertical_weights = compute_attention_weights(inputs)
# 创建模型
model = tf.keras.Model(inputs=inputs, outputs=[horizontal_weights, vertical_weights])
# 打印模型结构
model.summary()
三、检测的实现
3.1 数据集
数据集是天池瓷砖瑕疵检测数据集,共有5388张图像。主要分为6种缺陷,分别是边异常、角异常、白色点瑕疵、浅色块瑕疵、深色点块瑕疵和光圈瑕疵。本文从中随机选取4168张作为训练集,610张作为验证集,610张作为测试集。

对瓷砖瑕疵检测数据集进行数据分析发现绝大部分瓷砖表面缺陷高度尺寸要小于原始图像高度尺寸的0.5%,宽度尺寸小于原始图像宽度尺寸的2%,瓷砖表面缺陷只占原始图像中很小一部分面积,且目标缺陷的长宽尺寸较小,因此小目标检测是瓷砖表面缺陷检测的重点。

3.2 实验环境搭建
训练和测试所使用的GPU为Nvidia RTX 3090,操作系统为Ubuntu,版本为20.04,采用PyTorch深度学习框架,版本号为1.9.0,CUDA版本为11.2,cuDNN版本8.0.5。训练的初始学习率为0.01,最大迭代次数为400,batch size设置为4。
3.3 实验及结果分析
以YOLOv5s-de为基准模型进行消融实验,实验主要包括以下2个部分:第1部分是对比3种不同的轻量化模块,包括深度可分离卷积、ghost convolution以及C3Ghost。第2部分对比两种不同的注意力机制模块,包括SE block和CA block。

使用ghost convolution和C3Ghost两种轻量化模块,再选择添加CA block后的模型平均精度均值最高,达到66%。相比于原YOLOv5s模型,mAP0.5提升了1.8%,参数量减少了48.7%,计算量减少了38.7%。在参数数量和计算量少于原模型的基础上,实现了更高的平均精度均值和更快的检测速度。

改进后的模型在小目标缺陷检测方面表现出色,特别适用于检测瓷砖表面缺陷这种类型的微小目标。此外,改进后的模型参数量和计算量最少,能够很好地满足瓷砖表面缺陷检测对实时性的要求。

相关代码如下:
import tensorflow as tf
# 加载和预处理数据集
def load_dataset():
# TODO: 加载瓷砖表面缺陷的图像数据集,并进行预处理(如图像大小调整、归一化等)
pass
# 构建模型
def build_model():
model = tf.keras.Sequential()
# TODO: 添加卷积层、池化层、全连接层等构建深度学习模型的代码
# 可以使用常见的卷积神经网络架构,如ResNet、VGG等
return model
# 进行模型训练
def train_model(model, X_train, y_train):
model.compile(optimizer='adam', loss='binary_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)
实现效果图样例

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



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



