【毕业设计】深度学习车道线检测系统(自动驾驶) – opencv python

文章目录

  • 0 前言
  • 1 课题背景
  • 2 实现效果
  • 3 卷积神经 络
    • 3.1卷积层
    • 3.2 池化层
    • 3.3 激活函数:
    • 3.4 全连接层
    • 3.5 使用tensorflow中keras模块实现卷积神经 络
  • 4 YOLOV5
  • 6 数据集处理
  • 7 模型训练
  • 8 最后

0 前言

Hi,大家好,这里是丹成学长的毕设系列文章!

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

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的新项目是

**基于深度学习的自动驾驶车道线检测算法研究与实现 **

学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:4分
  • 工作量:4分
  • 创新点:3分

选题指导, 项目分享:

https://gitee.com/yaa-dc/BJH/blob/master/gg/cc/README.md

1 课题背景

从汽车的诞生到现在为止已经有一百多年的历史了,随着车辆的增多,交通事故频繁发生,成为 会发展的隐患,人们的生命安全受到了严重威胁。多起事故发生原因中,都有一个共同点,那就是因为视觉问题使驾驶员在行车时获取不准确的信息导致交通事故的发生。为了解决这个问题,高级驾驶辅助系统(ADAS)应运而生,其中车道线检测就是ADAS中相当重要的一个环节。利用机器视觉来检测车道线相当于给汽车安装上了一双“眼睛”,从而代替人眼来获取车道线信息,在一定程度上可以减少发生交通事故的概率。
本项目基于yolov5实现图像车道线检测。

2 实现效果

3.1卷积层

卷积核相当于一个滑动窗口,示意图中3x3大小的卷积核依次划过6x6大小的输入数据中的对应区域,并与卷积核滑过区域做矩阵点乘,将所得结果依次填入对应位置即可得到右侧4x4尺寸的卷积特征图,例如划到右上角3x3所圈区域时,将进行0x0+1x1+2x1+1x1+0x0+1x1+1x0+2x0x1x1=6的计算操作,并将得到的数值填充到卷积特征的右上角。

3.3 激活函数:

激活函数大致分为两种,在卷积神经 络的发展前期,使用较为传统的饱和激活函数,主要包括sigmoid函数、tanh函数等;随着神经 络的发展,研宄者们发现了饱和激活函数的弱点,并针对其存在的潜在问题,研宄了非饱和激活函数,其主要含有ReLU函数及其函数变体

3.4 全连接层

在整个 络结构中起到“分类器”的作用,经过前面卷积层、池化层、激活函数层之后, 络己经对输入图片的原始数据进行特征提取,并将其映射到隐藏特征空间,全连接层将负责将学习到的特征从隐藏特征空间映射到样本标记空间,一般包括提取到的特征在图片上的位置信息以及特征所属类别概率等。将隐藏特征空间的信息具象化,也是图像处理当中的重要一环。

3.5 使用tensorflow中keras模块实现卷积神经 络

4 YOLOV5

简介
基于卷积神经 络(convolutional neural network, CNN)的目标检测模型研究可按检测阶段分为两类,一 类 是 基 于 候 选 框 的 两 阶 段 检 测 , R-CNN 、 Fast R-CNN、Faster R-CNN、Mask R-CNN都是基于 目标候选框的两阶段检测方法;另一类是基于免候选框的单阶段检测,SSD、YOLO系列都是典型的基于回归思想的单阶段检测方法。

YOLOv5 目标检测模型 2020年由Ultralytics发布的YOLOv5在 络轻量化 上贡献明显,检测速度更快也更加易于部署。与之前 版本不同,YOLOv5 实现了 络架构的系列化,分别 是YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、 YOLOv5x。这5种模型的结构相似,通过改变宽度倍 数(Depth multiple)来改变卷积过程中卷积核的数量, 通 过 改 变 深 度 倍 数 (Width multiple) 来 改 变 BottleneckC3(带3个CBS模块的BottleneckCSP结构)中 C3的数量,从而实现不同 络深度和不同 络宽度之 间的组合,达到精度与效率的平衡。YOLOv5各版本性能如图所示:

YOLOv5s 模型算法流程和原理

YOLOv5s模型主要算法工作流程原理:

(1) 原始图像输入部分加入了图像填充、自适应 锚框计算、Mosaic数据增强来对数据进行处理增加了 检测的辨识度和准确度。

(2) 主干 络中采用Focus结构和CSP1_X (X个残差结构) 结构进行特征提取。在特征生成部分, 使用基于SPP优化后的SPPF结构来完成。

(3) 颈部层应用路径聚合 络和CSP2_X进行特征融合。

(4) 使用GIOU_Loss作为损失函数。

关键代码:

6 数据集处理

获取摔倒数据集准备训练,如果没有准备好的数据集,可自己标注,但过程会相对繁琐

考虑到有的朋友时间不足,博主提供了标注好的数据集和训练好的模型,需要请联系。

数据标注简介

通过pip指令即可安装

在命令行中输入labelimg即可打开

7 模型训练

配置超参数
主要是配置data文件夹下的yaml中的数据集位置和种类:

目前支持的模型种类如下所示:

8 最后

文章知识点与官方知识档案匹配,可进一步学习相关知识OpenCV技能树OpenCV中的深度学习图像分类11074 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月24日
下一篇 2022年10月24日

相关推荐