本文正在参加 人工智能创作者扶持计划
源码链接:
车牌识别:www.hedaoapp.com/goods/goods…
车辆识别:www.hedaoapp.com/goods/goods…
大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
课题背景和意义
近年来,机动车持有量不断增加,随之而来的是交通违法行为的增加。其中,车辆压线行为是一种常见的违章行为,常造成违章变道、拥堵、交通事故等。传统图像处理压实线检测方法通过差分法检测车辆,采用颜色、形状等特征提取车道线,容易受外界环境影响,检测准确率不理想。近年来,居民汽车保有量快速增长。截止 2019 年底,中国的汽车保有量达到 2.6 亿辆。汽车的大范围普及推动了工业进步、经济发展,但同时也带来 一系列交通问题与城市管理问题,包括拥堵、事故、污染等,这些都可能会激化城市矛盾、阻碍城市发展。北京、上海等大型城市纷纷实施机动车摇号、限行等措施,但是我国的汽车工业正处于供给侧改革和转型升级的重要阶段,在这种城市管理需求与产业发展需求的矛盾下,加强对交通道路的规范化管理势在必行。智能交通系(Intelligent Transport System , ITS) 的出现能够有效的解决这些问题。ITS 将先进的物联网、大数据、云计算、人工智能、传感器、数据通信、电子控制、运筹学、自动控制技术等进行有效集成并运用于交通运输、服务控制、车辆行为规范,加强道路、车辆、交通参与者之间的联系,从而实现安全保障、改善环境、节约能源等目标。
实现技术思路
一、传统基于图像处理的运动目标检测算法
传统运动目标检测算法一般通过三种方法实现,第一种依赖于目标的浅层特征,比如颜色、形状等,这类方法受环境以及物体的位置影响较大,而且需要不断调整参数;第二种是通过图像间的差异进行检测,图像间的差异包括帧间的差异以及帧与背景模板的差异,因此,该种方法又可以分为帧间差分法与背景差分法,利用图像间的差异进行检测的抗干扰能力比利用目标的浅层特征,在图像处理领域比较常用的还是第二类方法,也就是帧间差分法与背景差分法。第三类是通过光流来对运动目标进行检测,光流即空间运动物体在成像平面上像素运动的瞬时速度。
二、目标检测理论基础
1、深度学习基础
深度学习是机器学习的一个重要分支,它包括多种基本网络类型:深度置信网络、栈式自编码网络、卷积神经网络。随着近些年计算机硬件的快速发展,卷积神经网络获得了前所未有的发展。卷积神经网络是通过模拟生物神经网络建立,内部有大量的节点相互连接,我们称之为“神经元”,单个神经元结构见图:
池化
在卷积阶段,特征图的通道数通常会不断上升,这会导致特征图的参数量越来越大。因此,需要在卷积层之间增加池化层,一方面降低特征图的参数量,降低计算量;另一方面也增加卷积核的感受野,使模型更加关注全局特征,保留一些重要的特征信息,并且为网络提供一定的位移不变性和旋转不变性。
与卷积操作类似,池化操作也是采用一个指定大小的窗口在特征图上滑动,然后根据这个窗口的规则获取数据,然后获得池化结果。
激活函数
卷积神经网络如果只有线性的卷积操作,则网络很难有很强的非线性分类能力,因此,需要加入非线性的映射的环节,增加网络的非线性分类能力,这个非线性环节又称为激活函数。常用的激活函数有: 𝑆𝑖𝑔𝑚𝑜𝑖𝑑 、 𝑅𝑒𝑙𝑢 、 𝑆𝑜𝑓𝑡𝑚𝑎𝑥 等
𝑆𝑖𝑔𝑚𝑜𝑖𝑑 型的激活函数模拟的是生物的神经元特性,当信号强度大于一定值时,神经元被激活,否则则不被激活。
为了弥补 𝑆𝑖𝑔𝑚𝑜𝑖𝑑 函数在两端出现梯度消失的缺点, 提出使用𝑅𝑒𝑙𝑢 函数来代替 𝑆𝑖𝑔𝑚𝑜𝑖𝑑 函数, 𝑅𝑒𝑙𝑢 的图像为图 b 。从图像中我们可以看出,𝑅𝑒𝑙𝑢 在 (−∞0) ,梯度为 0 ,在 (0 + ∞) ,梯度为 1 ,很好的避免了 𝑆𝑖𝑔𝑚𝑜𝑖𝑑函数梯度消失的现象
全连接
上文提到卷积计算能够提取数据的特征,其实不尽然,一般在卷积神将网络中都会在卷积层后加入池化层、激活函数层,一方面降低参数量,并且提升后续网络的非线性拟合能力,一方面也是使网络的整个卷积操作能够提取到足够数量的特征信息,因此,确切的来说,卷积层包括了卷积、池化、激活。全连接层的运算依赖于矩阵乘法,以下面的式子为例:
式中,𝑥为输入,𝑜𝑢𝑡为输出,上述四个式子的元素都是代表矩阵。式子中表示了一个输入层,一个隐藏层,一个输出层,其网络结构参照图:
2、基于深度学习的目标检测算法
目前,在目标检测领域,一般都需要完成两个任务: 1 、目标在哪里 2 、该目标是什么类别。主流的基于卷积神经网络的算法可分为两种:一类是以 Fast R-CNN 为典型代表,这类网络将这两个任务逐个进行,首先进行预选框构建与选取,然后进行目标的分类以及位置回归,计算量较大;另外一类以 YOLO 为典型代表,一步到位直接完成目标检测任务,直接预测出物体的位置与类别,不用
进行预测框的构建与选取。
YOLOv1
传统 CNN 都需要通过生成预选框、分类两个步骤,这种思想带来了检测速度的下降,而 YOLO 创新性的提出了采用回归的方式直接获得位置信息与分类信息,未使用预选框生成环节,极大降低了计算量,从而提升了网络的训练与检测速度,YOLOv1 区域划分:
30 个通道的数据对应每个包含了每个类别的概率、边框置信度、边框位置,具体构成如图所示:
YOLOv2
YOLOv2 针对 YOLOv1 存在的一些问题做了改进,预测更准、速度更快、类别更多。YOLOv2 相较于 YOLOv1 版本,改善了网络结构,提出了一种全新的网络结构,同时增加了预选框的设置。YOLOv2 提出的全新的网络结构称之为 DarkNet-19 。 DarkNet 包括 19 个卷积操作以及 5 个池化操作。
YOLOv3
YOLOv3 针对 YOLOv2 的一些问题,比如对小物体检测容易丢失目标,吸收了一些现今比较好的检测思想,例如增加了残差模块,以及深层特征与浅层特 征的通道拼接,提出了一种新网络结构的 DarkNet,称之为 DarkNet-53 ,在保证检测速度的前提下,进一步提升了检测精度,尤其是针对小物体。YOLOv3 的网络结构图如图:
YOLOv3 在低、中、高三个维度上进行特征融合,然后分别进行卷积与回归,最后输出三个尺度的特征图。划分方式如图:
YOLOv4
YOLO v4 作为 YOLOv3 的升级版本,是由俄罗斯的 Alexey 在 2020 年 4 月提出,核心结构与 YOLOv3 类似,通过新的算法思想对各个子结构进行了改进,并且融合多种网络设计思路,使 YOLO 系列目标检测算法的检测精度进一步提升,YOLOv4 网络结构图如图:
CBM 是 YOLOv4 网络结构的最小组件,由 Conv( 卷积层 ) 、 BN(批归一化)、 Mish 激活函数组成; CBL 由 Conv( 卷积层 ) 、 BN (批归一化)、 Leaky_relu 激活函数组成。
1 、 CSPDarknet53 将原来网络结构中首个卷积层中的激活函数由 Relu 改成了 Mish 。 Mish 激活函数相对于 Relu 激活函数更加平滑,全局没有一个不可导点,且在正区间与 Relu 函数类似,负区间仍然存在梯度,只有在趋向于 −∞ 的时候存在梯度消失的情况,利于反向求导,得到更好的特征传递能力,从而有了更好的泛化能力,这也为未来激活函数的设计提供了方向。Relu 激活函数已经在上文给出,Mish 激活函数的表达式如式:
图像如图 所示 :
Mish 激活函数与 Relu 激活函数的区别在于其导数。 Relu 激活函数求导后如式所示:
2 、借鉴了 CSPnet 的网络结构,将卷积层与多个残差网络进行通道融合,可以看成是一个并联结构,放大后如图:
3、对池化方法的改进。如图中部的 SPP 结构所示,类似于 Resnet 的短接结构,主要借鉴了 SPPNet 网络的结构,具体结构如图:
实现效果图样例
车辆压线检测实验: