【毕业设计】基于深度学习的铁轨障碍物检测预警系统 人工智能 python 卷积神经网络

目录

前言

一、课题背景与意义

二、算法理论技术

2.1 深度学习

2.2 目标检测算法实现

三、模型训练

3.1 数据处理

3.2 实验环境

3.3 结果分析

最后


前言

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

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

         选题指导:

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

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

        🎯基于深度学习的铁轨障碍物检测预警系统


一、课题背景与意义

       铁路交通是重要的运输方式之一,然而,铁路安全一直是一个重要的关注点。障碍物在铁轨上的存在可能导致列车事故和运行故障,对人身安全和铁路运输的效率产生严重影响。障碍物的存在可能导致列车延误和运行故障。自动化地进行障碍物检测,减轻人工监测的负担,提高检测的准确性和效率。可以及时发现并清除铁轨上的障碍物,减少铁路运输的中断和延误,提高运输效率和准时性。

二、算法理论技术

2.1 深度学习

       随着卷积神经网络的发展和计算机性能的提升,基于深度学习的目标检测方法在目标检测领域变得流行。双阶段目标检测模型(如Faster R-CNN)和单阶段目标检测模型(如YOLO系列)得到广泛应用。

       基于Anchor-Free思想的目标检测模型出现,不需要使用锚点框,通过目标中心和关键点的方法进行检测,为目标检测领域带来新的方向。基于Anchor-Free的目标检测算法可以分为基于中心的检测方法和基于多关键点联合表达的检测方法两类。其中,基于中心的检测方法以中心点为基础扩展其他边界属性来确定目标位置,而基于多关键点联合表达的方法将目标建模为一组关键点,并通过组合关键点来识别目标框。

       FCOS是一种经典的基于Anchor-Free的目标检测算法,它将特征图中的每个像素视为对象进行预测,避免了生成锚点框的需求。FCOS通过对正样本像素点进行目标分类和位置回归来确定目标框位置,并引入了"centerness"方法来抑制低质量边界框,提高检测性能。总之,基于Anchor-Free的目标检测方法在不同方面的设计和改进,为目标检测领域带来了新的进展。

代码如下(示例):

class FCOS(nn.Module):
    def __init__(self, num_classes, num_anchors):
        super(FCOS, self).__init__()
        self.num_classes = num_classes
        self.num_anchors = num_anchors
        # 定义特征提取网络
        self.backbone = ...  # 定义特征提取网络,如ResNet
        # 分类和回归头部
        self.classification_head = nn.Conv2d(in_channels, num_anchors * num_classes, kernel_size=3, stride=1, padding=1)
        self.regression_head = nn.Conv2d(in_channels, num_anchors * 4, kernel_size=3, stride=1, padding=1)
    def forward(self, inputs):
        features = self.backbone(inputs)
        # 分类和回归预测
        cls_outputs = []
        reg_outputs = []
        for feature in features:
            cls_output = self.classification_head(feature)
            reg_output = self.regression_head(feature)
            cls_outputs.append(cls_output)
            reg_outputs.append(reg_output)
        return cls_outputs, reg_outputs
    def post_process(self, cls_outputs, reg_outputs, stride, threshold):
        # 对分类和回归预测结果进行后处理
        # 1. 对分类结果进行softmax
        cls_outputs = [F.softmax(cls_output, dim=1) for cls_output in cls_outputs]
        # 2. 对回归结果进行解码
        decoded_boxes = []
        for reg_output, feature_size in zip(reg_outputs, feature_sizes):
            decoded_boxes.append(self.decode_boxes(reg_output, feature_size, stride))
        # 3. 根据分类和回归结果筛选目标框
        detections = []
        for cls_output, decoded_box in zip(cls_outputs, decoded_boxes):
            detections.append(self.filter_boxes(cls_output, decoded_box, threshold))
        return detections

2.2 目标检测算法实现

       Mask R-CNN是基于Faster R-CNN的一种掩码型区域目标检测卷积神经网络。它采用多尺度金字塔FPN结构进行目标特征提取,并通过不同分支实现目标检测和目标分割任务。然而,原始FPN网络存在不能充分利用层间语义信息的问题,导致小目标漏检。特别是在红外图像分辨率较低、夜间环境下,红外图像的特征信息不明显,导致目标提取困难,影响铁路异物检测的准确性,对高速铁路行车安全监控造成隐患。为了克服这些问题,借鉴了DenseNet的密集连接思想,在FPN网络的基础上设计了密集强连接,实现了从低维特征到高维特征的特征传递,在不同尺度特征层之间建立连接关系,充分利用特征图的信息。

       在夜间环境下铁路异物侵限检测目标对象的红外辐射率差异很小,这会导致在红外弱光环境下成像的图像细节信息模糊。针对红外图像的低分辨率和细节模糊的问题,引入了基于密集强连接的FPN结构,以充分利用多尺度特征提取。其次,为了提高弱光环境下目标检测的关注度,引入了CBAM注意力机制,通过通道和空间注意力模块,集中关注感兴趣区域并抑制无用信息,从而提取红外图像的重要特征。这些改进方法能够有效地提高铁路异物检测的准确性和可靠性,为高速铁路行车安全监控提供了更好的支持。

 代码如下(示例):

class CBAM(nn.Module):
    def __init__(self, in_channels, reduction_ratio=16, kernel_size=7):
        super(CBAM, self).__init__()
        self.channel_att = ChannelAttention(in_channels, reduction_ratio)
        self.spatial_att = SpatialAttention(kernel_size)
    def forward(self, x):
        channel_att = self.channel_att(x)
        spatial_att = self.spatial_att(channel_att)
        return spatial_att
# 在Mask R-CNN的FPN特征提取网络中应用CBAM注意力机制
class FPNWithCBAM(nn.Module):
    def __init__(self):
        super(FPNWithCBAM, self).__init__()
        # FPN网络的定义...
        # 在每个特征层上应用CBAM注意力机制
        self.cbam = CBAM(in_channels)
    def forward(self, x):
        # FPN网络的前向传播...
        # 在每个特征层上应用CBAM注意力机制
        cbam_features = []
        for feature in features:
            cbam_feature = self.cbam(feature)
            cbam_features.append(cbam_feature)
        # 返回经过CBAM注意力机制处理后的特征
        return cbam_features

三、模型训练

3.1 数据处理

       利用红外摄像机在铁路现场实地拍摄了夜间铁路红外图像。然后,使用labelme工具对这些图片进行标记,制作了弱光环境下的铁路数据集。该数据集共计包含6500张图片,其中70%作为训练集用于模型训练,30%作为测试集用于验证模型的泛化能力。成功获取了夜间红外铁路异物侵限数据集,为后续的模型训练和性能评估提供了数据基础。

3.2 实验环境

       为了验证算法的有效性,进行了对比实验,并在相同的硬件环境下进行了训练。硬件配置包括Intel(R) Core i7-9700K CPU @ 3.6GHz、64.0GB RAM和NVIDIA GeForce GTX 1660。模型训练中,学习率设置为0.001,批量大小为32,训练周期(epoch)设置为100。

3.3 结果分析

       经过两次迁移训练,第一次在FLIR数据集上进行训练,以增强模型对红外图像目标的识别和定位能力;第二次迁移训练在自制的夜间红外铁路数据集上进行,以增强模型对铁路场景目标检测的鲁棒性和泛化能力。

       为了验证其在多尺度和遮挡的铁路异物检测方面的性能。在实际运营的铁路中,多尺度和遮挡问题主要出现在各类动物、行人和车辆中。通过对铁路场景下的动物和含有人的图像进行铁路异物侵限检测实验。

       在对第一列中的铁路遮挡异物进行检测时,提出的算法表现出了良好的检测能力,没有出现漏检的情况。对于第二列中遮挡程度较严重的铁路异物,也展现出了较好的检测结果,对图像中的异物目标检测精度较高。提出的算法不仅对于近景大尺度目标的检测效果良好,而且对于远景小目标也能进行精确检测,在铁路异物检测中对遮挡异物和不同尺度大小的铁路异物都展示了较好的检测效果。

最后