目录
前言
📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
🚀对毕设有任何疑问都可以问学长哦!
选题指导:
大家好,这里是海浪学长毕设专题,本次分享的课题是
🎯基于深度学习的驾驶员手持手机检测算法系统
设计思路
一、课题背景与意义
汽车已经成为生活中普遍使用的交通工具,驾驶员在驾驶过程中接、打电话等手持手机现象比较普遍,给交通安全带来极大的隐患。因此,对驾驶员手持手机行为进行检测具有重要意义。
二、算法理论原理
2.1 YOLOv5算法
通过在YOLOv5骨干网络中引入改进的注意力机制模块,更好地获取信息,减少语义信息的损失,更好地提高小目标检测的精确度。其次,采用一种改进的特征融合方法提取三个尺度的特征,并对特征进行融合,以更好地提取局部信息。
根据检测驾驶员手持手机行为目标小、检测距离比较远的问题,为了提高模型的提取能力和检测精确度,在YOLOv5目标检测网络模型不同特征提取层中分别添加坐标注意力机、通道注意力机制、空间注意力机制,通过添加多注意力机制使得新的检测模型能够更好地检测小目标,同时也提高了模型的检测速度。
2.2 特征融合
为了解决小目标物体检测精度低的问题,通过不同特征金字塔只对相邻两个尺度的特征图进行融合,随着网络层次的加深,深层特征的会损失更多的信息,此时在融合相邻特征层也不能达到理想的结果,影响特征融合的效果。可以通过提取后不同层级尺度的特征进行融合,更充分地融合局部信息和全局信息。
相关代码:
sift = cv2.SIFT_create()
# 检测关键点和计算描述符
kp1, des1 = sift.detectAndCompute(image, None)
kp2, des2 = sift.detectAndCompute(feature_points, None)
# 创建FLANN匹配器
flann = cv2.FlannBasedMatcher()
# 使用knnMatch进行特征点匹配
matches = flann.knnMatch(des1, des2, k=2)
# 进行比值测试,保留良好匹配
good_matches = []
for m, n in matches:
if m.distance < 0.7 * n.distance:
good_matches.append(m)
# 判断是否有物体与特征点对应
if len(good_matches) > 10:
print("存在物体与特征点对应")
else:
print("不存在物体与特征点对应")
三、检测的实现
3.1 数据集
采用学长自制的数据集,用相机在不同道路拍摄的不同时间段、不同车型监控图像构成的数据集。训练集图像采用labelimg工具进行标注,共使用1000个数据,训练集、验证集、测试集划分比例为7:2:1。
3.2 实验环境搭建
实验环境为64位Windows 10专业系统,GPU大小为12 GB的NVIDIA GeForce RTX 3060显卡,处理器为Intel(R) Core(TM)i5-12490F。采用PyTorch深度学习网络框架,在GPU上进行实验。
3.3 实验及结果分析
训练后的损失函数曲线:
改进的YOLOv5算法的准确度值达到了71.9%,改进YOLOv5网络模型,精度提升了2.1%,改进的YOLOv5则在YOLOv-CA和YOLOv5-FIRI的基础上mAP值仍有提高。
提出的改进算法模型相比于YOLOv5-FIRI在不同类别上的准确率、精确率和召回率均有所提升。
相关代码如下:
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='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)
实现效果图样例
创作不易,欢迎点赞、关注、收藏。
毕设帮助,疑难解答,欢迎打扰!