毕业设计-基于深度学习的工作人员吸烟检测系统 YOLO python 机器学习 目标检测 人工智能 算法

目录

前言

设计思路

一、课题背景与意义

二、算法理论原理

2.1 多头注意力机制

2.2 特征金字塔改进

三、检测的实现

3.1 数据集

3.2 实验环境搭建

3.3 实验及结果分析

实现效果图样例

最后


前言

       📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

        🚀对毕设有任何疑问都可以问学长哦!

         选题指导:

        最新最全计算机专业毕设选题精选推荐汇总

        大家好,这里是海浪学长毕设专题,本次分享的课题是

        🎯基于深度学习的工作人员吸烟检测系统

设计思路

一、课题背景与意义

       规范约束工作人员的日常吸烟行为,对违规吸烟行为进行监测警告。烟雾报警器监测吸烟行为,依靠传感器技术对空气进行实时采样,尽管其检测精度较高,但该方法无法准确判断是人为原因还是其他原因导致报警,满足不了实时控烟的要求。

二、算法理论原理

       YOLOv5.6.0版本中的YOLOv5s算法为基础,通过修改网络结构和添加相关模块,在保持网络轻量化的同时,有效提升吸烟行为检测精度,具有较高的实用价值。整个YOLOv5网络可以分为4个部分,分别是输入端、骨干网络Backbone、强特征提取网络Neck以及预测网络Prediction。YOLOv5s网络Backbone采用了卷积(Conv)替换了5.0版本Backbone中的Focus层,其目的是为了方便模型导出。

毕业设计-基于深度学习的工作人员吸烟检测系统 YOLO python 机器学习 目标检测 人工智能 算法

2.1 多头注意力机制

        UCBerkeley和Google基于Transformers结构设计了一种结构简单、功能强大的Backbone,名为BotNet,其改变是将ResNet中的3x3卷积替换为多头注意力层(MHSA)。

毕业设计-基于深度学习的工作人员吸烟检测系统 YOLO python 机器学习 目标检测 人工智能 算法

       将YOLOv5s网络Backbone和Neck中C3模块的3x3卷积替换为MHSA,使YOLOv5s网络可以关注图像全局,并且能够基于相同的注意力机制学习到不同的行为,提高算法学习能力,进而提高检测精度。替换后的结构与原网络C3模块相比,将Bottleneck模块替换成了BottleneckTransformer。

毕业设计-基于深度学习的工作人员吸烟检测系统 YOLO python 机器学习 目标检测 人工智能 算法

 ECA模块的实现主要分为三步,第一步是将输入特征图进行全局平均池化操作,从而获得未降维的所有特征;第二步则进行卷积核大小为k的1维卷积操作,以此来捕获局部跨通道交互信息,接着经过Sigmoid激活函数得到各个通道的权重。 

毕业设计-基于深度学习的工作人员吸烟检测系统 YOLO python 机器学习 目标检测 人工智能 算法

2.2 特征金字塔改进

       BiFPN允许特征既能够自下而上也能够自上而下地反复流动,从而可以重复多次以得到更多高层特征融合,与FPN+PAN结构相比,BiFPN去掉了只有一条输入边和输出边的节点,并且如果输入和输出节点是同一层的,就额外添加一条边。因此,用BiFPN网络替换FPN+PAN的金字塔结构,可以有效增强不同网络层之间特征信息的传递,明显提升YOLOv5s算法检测精度,并且具有不错的检测性能。

毕业设计-基于深度学习的工作人员吸烟检测系统 YOLO python 机器学习 目标检测 人工智能 算法

相关代码:

import torch.nn as nn

# 定义全局平均池化层
global_avg_pool = nn.AdaptiveAvgPool2d(1)

# 假设输入特征图的维度为 (batch_size, channels, height, width)
input_features = torch.randn(batch_size, channels, height, width)

# 进行全局平均池化操作
output = global_avg_pool(input_features)

# 输出的维度为 (batch_size, channels, 1, 1),将输入特征图的高度和宽度降为1
print(output.shape)

三、检测的实现

3.1 数据集

       实验的数据集采用两种方式进行采集,第一种采集方式是先录制模拟电厂厂区内不同人员吸烟的视频,然后按照一定的帧率间隔截取视频获得图片,另一种采集方式是从网络上搜集不同场景下的吸烟图片,通过上述采集方法共采集图片1395张,其中,视频截取图片873张,网络搜集图片522张。

       对于准备好的数据集,采用LabelImg软件进行标注。按照标签为cigarette进行标注,标注完的信息以xml的格式保存在相同路径下,然后通过代码脚本将xml文件转换为YOLOv5模型需要的txt文件。最后将数据集按6:2:2的比例划分为三部分,分别为训练集、验证集和测试集。

3.2 实验环境搭建

       实验平台操作系统为Ubuntu 18.04,实验以PyTorch为软件框架,编程环境为Python,CPU为Intel(R) Xeon(R) Gold 5118 CPU @ 2.3GHz,GPU为GeForce RTX 2080Ti,显存24G,内存128G。

毕业设计-基于深度学习的工作人员吸烟检测系统 YOLO python 机器学习 目标检测 人工智能 算法

3.3 实验及结果分析

       训练结束后会生成相应的权重文件,将测试代码中的权重路径修改为生成的best权重文件,其余相关参数设置同训练设置一样,然后运行代码就会生成测试结果。使用原YOLOv5s检测时存在一定的误报和漏报,而使用改进后的算法进行检测时,误报和漏报情况明显改善,并且对于视频监控下远距离的人员吸烟行为检测置信度达79%,属于较易检测出的对象,检测效果较好。

毕业设计-基于深度学习的工作人员吸烟检测系统 YOLO python 机器学习 目标检测 人工智能 算法

       为了验证加入注意力模块后算法的检测能力以及探究应该将注意力模块加到算法的具体哪个位置,通过在同一位置分别加入ECA、CBAM、CA三种注意力机制实验,结果表明,加入ECA注意力机制的效果最好。然后再变换ECA加入的位置,具体替换位置如下所示。通过实验得出,将ECA加到Backbone部分中80×80×25。

毕业设计-基于深度学习的工作人员吸烟检测系统 YOLO python 机器学习 目标检测 人工智能 算法

改进损失函数 SIoU 验证实验:

毕业设计-基于深度学习的工作人员吸烟检测系统 YOLO python 机器学习 目标检测 人工智能 算法

相关代码如下:

# 设定图像变换
transform = transforms.Compose([
    transforms.Resize((640, 640)),  # 调整图像大小
    transforms.ToTensor(),  # 转换为Tensor格式
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])  # 归一化
])

# 加载图像
image = Image.open('smoking_image.jpg').convert('RGB')

# 对图像进行变换
input_tensor = transform(image).unsqueeze(0)

# 将输入数据传入模型进行推理
results = model(input_tensor)

# 获取检测结果
detections = results.pandas().xyxy[0]

# 遍历检测结果
for _, detection in detections.iterrows():
    class_name = detection['name']
    confidence = detection['confidence']
    bbox = detection[['xmin', 'ymin', 'xmax', 'ymax']].values

    print(f'Class: {class_name}, Confidence: {confidence}, BBox: {bbox}')

实现效果图样例

创作不易,欢迎点赞、关注、收藏。

毕设帮助,疑难解答,欢迎打扰!

最后

【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载! 通过 yolov5 + openpose + resnet18实现远距离抽烟动作行为检测 需要用的模型文件 已在代码中openpose文件夹 Classification_smoke_pytorch\checkpoints中为resnet18 分类模型 运行runOpenpose.py 只跑了open pose 可以获得人体的关键点图(需简单改下,请看代码),用于后续的.jit模型训练 人体的关键点图会保存在data/test中 该项目适用于远距离抽烟行为检测,弥补单独yolov5来检测吸烟行为的缺陷 方案一:使用yolov5 + openpose + resnet18模型来检测吸烟 运行 detect.py 会先进行yolo目标检测检测到人后会生成骨骼点图,然后送入resnet网络进行分析,最后给出结果,然后在画面上显示 方案二:直接使用openpose + resnet18模型来检测吸烟 运行 runOpenpose.py,代码路径需改成自己的。 如果想要检测其他姿势 (使用yolov5+openpose): 1.收集图片,跑runOpenpose.py 文件获得人体的关键点图 2.对人体的关键点图根据自己想要的进行分类放在data/train 和 data/test 3.跑 action_detect/train.py 或者使用yolov5 + openpose + resnet18,需要训练rensnet模型 吸烟动作关键点分类数据集:data目录下的train和test。可自己生成其他的或增加
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值