毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

目录

前言

设计思路

一、课题背景与意义

二、算法理论原理

2.1 SimAM注意力机制

2.2 Neck结构改进

三、检测的实现

3.1 数据集

3.2 实验环境搭建

3.3 实验及结果分析

实现效果图样例

最后


前言

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

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

         选题指导:

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

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

        🎯基于深度学习的小目标烟雾火焰检测算法系统

毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

设计思路

一、课题背景与意义

       在日常生活中,火灾会对人类带来巨大的伤害,危害人类的身体健康,同时会影响社会健康发展和人民财产安全。而火灾在发生初期是很容易被扑灭的,因此,通过对火灾发生初期的烟雾与火焰进行迅速准确的检测是非常有必要的,可以很大程度上减少火灾带来的危害与损失。

二、算法理论原理

2.1 SimAM注意力机制

       计算机视觉中的注意力机制目的是模仿人类视觉系统,能够有效地在复杂场景中找到显著区域。通过注意力机制可以对输入图像的特征进行动态权重调整。注意力机制已经在许多视觉任务中取得了成功。SimAM注意力模块不同于现有1-D通道注意力和2-D空域注意力,无需额外参数去推导出3-D注意力权值,简单且高效,只需通过一个Energy函数来计算注意力权重。

毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

2.2 Neck结构改进

       为了加强网络对小目标的检测能力,且不扩大输入的分辨率,将在网络的第三层,也就是CSP1_1部分增加一个特征图输出,接入Neck部分作为P2输出,输入的大小为640×640时,P2的特征图大小为160×160,每格特征图对应输入图中以4×4的感受野,可以更好检测小目标,同时也可在特征融合的过程中为其他层提供信息。但是P2的部分仅经过4倍下采样,干扰信息较多,为更好地提取特征,将对YOLOv5s的Neck部分进行改进。

毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

       改进后的结构增加了些许复杂度,但每个特征图能融合更多的信息,能在提高在检测时的精度。同时,原有的特征融合过程中并没有对不同特征进行区分,仅仅为简单的相加融合,在改进后的Neck结构中,将特征融合优化为带权特征融合,区分每个权重的重要性。

毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

相关代码:

class Attention(nn.Module):
    def __init__(self, input_dim):
        super(Attention, self).__init__()
        self.input_dim = input_dim
        self.energy = nn.Linear(input_dim, 1)

    def forward(self, x):
        # 计算能量分数
        energy_scores = self.energy(x)

        # 计算注意力权重
        attention_weights = torch.softmax(energy_scores, dim=1)

        return attention_weights

# 创建输入张量
input_dim = 256
batch_size = 32
sequence_length = 10

input_tensor = torch.randn(batch_size, sequence_length, input_dim)

# 创建注意力模型实例
attention_model = Attention(input_dim)

# 计算注意力权重
attention_weights = attention_model(input_tensor)

# 打印注意力权重
print("Attention weights:", attention_weights)

三、检测的实现

3.1 数据集

       数据集是深度学习网络的基本,优秀的数据集能让模型有更强的鲁棒性和泛化性,为解决现有数据集的限制,制作了一个多场景的复杂烟雾与火焰数据集,数据来源于多个公共火灾数据集,搜索引擎搜索和网络火焰烟雾视频截取。

毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

       获取到的数据大多没有标注或标注不全,将对数据重新标注,对数据采用最大外接矩形框标注,将显著特征都包括进去,标注为fire、smoke两个类,标注格式为YOLO格式。在数据集收集与整理后,总共有9981张图片,每张图片中至少含有一个标签,对数据集进行统计。

毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

3.2 实验环境搭建

       实验环境硬件配置:CPU为AMD R7 5800H,GPU为NVIDIA RTX 3070 Laptop,操作系统为Windows10,编译环境为Python3.8+Pytorch1.10.1+CUDA11.3。

       当置信度阈值设定为0.5时,各项指标综合最高,由此表示此时的模型性能最好,其中precision为82.1%,recall为70.4%,mAP为78.9%。

毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

3.3 实验及结果分析

       在训练集与验证集中都比YOLOv5s网络更小,未出现严重过拟合现象,且训练花费时间更短,学习速率更高。改进后的网络比原网络收敛更快,在训练时更有效率。

毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

       改进后的网络比原YOLOv5s的精度指标更高,在火焰和烟雾检测中更有优势。同时因为数据集中大部分数据为小目标数据,当精度提升后,可以认定为对小目标检测效果提升。

毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

消融实验结果:

毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

       改进后的网络相较于YOLOv5s,在没有过多增加参数与权重大小的情况下,对火焰与烟雾中精度更高,提升了对小目标的检测精度,能满足实时检测的需求。

毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

 相关代码如下:

import torch
import torchvision
from torchvision.models.detection import FasterRCNN
from torchvision.transforms import transforms
from PIL import Image

# 加载预训练的模型
model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
model.eval()

# 图像预处理
transform = transforms.Compose([
    transforms.ToTensor(),
])

# 加载图像
image_path = 'path_to_image.jpg'
image = Image.open(image_path)
image_tensor = transform(image)

# 将图像转移到GPU(如果可用)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
image_tensor = image_tensor.to(device)

# 运行图像通过模型
outputs = model([image_tensor])

# 解析输出
boxes = outputs[0]['boxes']
scores = outputs[0]['scores']
labels = outputs[0]['labels']

# 设置阈值来筛选小目标、烟雾和火焰
threshold = 0.5
filtered_boxes = []
filtered_scores = []
filtered_labels = []

for box, score, label in zip(boxes, scores, labels):
    if score > threshold and (label == 1 or label == 2):
        filtered_boxes.append(box)
        filtered_scores.append(score)
        filtered_labels.append(label)

# 打印检测结果
for box, score, label in zip(filtered_boxes, filtered_scores, filtered_labels):
    print('Class:', label.item())
    print('Confidence:', score.item())
    print('Box coordinates:', box.tolist())

实现效果图样例

毕业设计-基于深度学习的小目标烟雾火焰检测算法系统 YOLO python 卷积神经网络 人工智能

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

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

最后

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值