毕业设计-基于深度学习的多尺度交通灯检测系统 YOLO python 机器学习 目标检测 人工智能 算法

目录

前言

设计思路

一、课题背景与意义

二、算法理论原理

2.1 复合数据增强

2.2 多尺度融合

三、检测的实现

3.1 数据集

3.2 实验环境搭建

3.3 实验及结果分析

实现效果图样例

最后


前言

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

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

         选题指导:

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

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

        🎯基于深度学习的多尺度交通灯检测系统

毕业设计-基于深度学习的多尺度交通灯检测系统 YOLO python 机器学习 目标检测 人工智能 算法

设计思路

一、课题背景与意义

       基于视觉的交通灯检测、行人检测和车辆检测作为自动驾驶的核心技术受到众多学者关注。对交通灯的准确定位与类别识别能够获取路口信息,为自动驾驶汽车的决策提供重要的数据支持,减少了汽车行驶的安全隐患。因此,一个具有可靠性与实时性的交通灯检测算法能够保障自动驾驶汽车的行驶安全,避免交通事故发生。

二、算法理论原理

2.1 复合数据增强

       针对YOLOv5模型泛化能力差,容易出现过拟合,且采集的数据集规模不大的问题,我们提出复合数据增强策略;针对YOLOv5的输入是固定尺度,提取到的特征信息有限的问题,我们提出多尺度代替固定尺度的训练方式;针对YOLOv5将3种尺度语义信息送入检测头,对小目标的检测能力不足的问题,提出多尺度特征融合的改进方式,并引入远跳连接传输语义信息。

毕业设计-基于深度学习的多尺度交通灯检测系统 YOLO python 机器学习 目标检测 人工智能 算法

        YOLOv5使用mosaic方法对图像进行增强处理。考虑到制作数据集的规模不大,且环境复杂多样,因此在mosaic基础上提出复合数据增强方式对模型的输入进行增强,以提高模型输入的复杂性、增加训练难度,从而提升模型的泛化能力。

毕业设计-基于深度学习的多尺度交通灯检测系统 YOLO python 机器学习 目标检测 人工智能 算法

2.2 多尺度融合

       多尺度YOLOv5流程:基于深度学习的多尺度交通灯检测系统;使用多尺度训练方法随机为增强结果选择尺度,并输入模型;主干网络提取特征信息,将4倍、8倍、16倍和32倍采样提取的信息作为基础特征;将4种不同尺度特征送入设计的特征融合网络,生成多尺度的高级语义信息;对多尺度高级语义信息计算损失,通过反向传播训练模型权重。

毕业设计-基于深度学习的多尺度交通灯检测系统 YOLO python 机器学习 目标检测 人工智能 算法

相关代码:

import torch
import torch.nn as nn
import torchvision.models as models

# 定义多尺度交通灯检测模型
class TrafficLightDetector(nn.Module):
    def __init__(self, num_classes):
        super(TrafficLightDetector, self).__init__()
        self.backbone = models.resnet50(pretrained=True)
        self.num_classes = num_classes
        self.num_bbox_params = 5  # x, y, w, h, confidence

        # 添加自定义的检测头
        self.detection_head = nn.Sequential(
            nn.Conv2d(2048, 512, kernel_size=3, stride=1, padding=1),
            nn.ReLU(),
            nn.Conv2d(512, self.num_classes * self.num_bbox_params, kernel_size=1, stride=1)
        )

    def forward(self, x):
        features = self.backbone(x)
        detection_output = self.detection_head(features)

        return detection_output

三、检测的实现

3.1 数据集

      采集了10万张现实中的交通灯影像,并从中筛选出了16,333张图像,并使用Labelme工具进行标注,制作成交通灯检测数据集。数据集按照8:2的比例划分为训练集和测试集。

毕业设计-基于深度学习的多尺度交通灯检测系统 YOLO python 机器学习 目标检测 人工智能 算法

3.2 实验环境搭建

       模型的训练在Ubuntu 18.04操作系统、PyTorch框架下完成,硬件平台为Nvidia Tesla V100 PCIE 32GB GPU,处理器为Intel(R) Xeon(R) Silver 4214R CPU 2.4GHz,软件环境为CUDA 10.1和Python 3.8。

3.3 实验及结果分析

       实验训练了300个epochs,初始学习率为0.001,学习率衰减系数为0.2,采用余弦退火衰减方式,动量常数设置为0.937,batch大小为32,回归损失系数为0.05,分类损失系数为0.5,置信度损失系数为1.0。实验中使用了13,066张图像进行训练,并在3,267张图像上进行了测试。

毕业设计-基于深度学习的多尺度交通灯检测系统 YOLO python 机器学习 目标检测 人工智能 算法

       MS-YOLOv5l在训练开始的前20个epochs,训练损失快速下降到0.045。从第40个epoch开始,模型损失下降逐渐变缓,模型开始趋于收敛,损失值在0.02附近浮动。改进后模型的损失稳步下降,其中前期下降速度较快。

毕业设计-基于深度学习的多尺度交通灯检测系统 YOLO python 机器学习 目标检测 人工智能 算法

       MS-YOLOv5l的验证结果如图所示。验证集的mAP在前20个epochs快速上升,达到0.96。随着模型的收敛,mAP的上升速度也逐渐变慢,最后趋于稳定。通过验证mAP曲线,可知模型未发生过拟合。

毕业设计-基于深度学习的多尺度交通灯检测系统 YOLO python 机器学习 目标检测 人工智能 算法

MS-YOLOv5 对每个交通灯的置信度更高,对预测坐标框和类别有更高的确信度。

毕业设计-基于深度学习的多尺度交通灯检测系统 YOLO python 机器学习 目标检测 人工智能 算法

对小目标的检测结果:

毕业设计-基于深度学习的多尺度交通灯检测系统 YOLO python 机器学习 目标检测 人工智能 算法

相关代码如下:

class TrafficLightDetector(nn.Module):
    def __init__(self, num_classes):
        super(TrafficLightDetector, self).__init__()
        # 模型定义...

    def forward(self, x):
        # 前向传播...

# 创建模型实例
model = TrafficLightDetector(num_classes=3)  # 假设有3个类别的交通灯

# 加载预训练模型权重(如果有)
model.load_state_dict(torch.load('traffic_light_detector.pth'))

# 数据预处理和增强
transform = transforms.Compose([
    transforms.Resize((300, 300)),  # 调整图像尺寸为300x300
    transforms.ToTensor(),  # 转换为Tensor
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])  # 归一化
])

# 创建数据集实例
dataset = YourDataset(data_dir, transform=transform)

# 创建数据加载器
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)

# 定义训练过程
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.001)

for epoch in range(300):
    for images, labels in dataloader:
        # 随机选择尺度进行增强
        scale_factor = torch.rand(1) * 0.5 + 0.5  # 随机选择0.5到1之间的尺度因子
        resized_images = torch.nn.functional.interpolate(images, scale_factor=scale_factor, mode='bilinear', align_corners=False)

        # 输入模型进行训练
        outputs = model(resized_images)
        loss = criterion(outputs, labels)

        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

实现效果图样例

毕业设计-基于深度学习的多尺度交通灯检测系统 YOLO python 机器学习 目标检测 人工智能 算法

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

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

最后

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值