一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于激活函数的改进YOLOv4车辆行人检测算法

2022-07-02 03:18:02 来源:中国专利 TAG:

一种基于激活函数的改进yolov4车辆行人检测算法
技术领域
1.该发明属于图像识别领域,一种基于激活函数的改进yolov4车辆行人检测算法,该算法在通用标准数据集上表现出很好的检测性能。


背景技术:

2.随着计算机技术的不断发展及算力的不断提升,计算机视觉与其中的目标检测成为了近年来热门方向。利用目标检测可以对特定物体进行识别与定位,在驾驶辅助系统、军事预警系统等有广泛的发展前景。目标检测技术包括传统目标检测技术及基于深度学习的目标检测技术,而后者由于在性能与复杂度方面优于前者,已成为当前目标检测领域的主流算法。为了更高效管理交通道路,维持社会稳定,需要对道路上的行人车辆等目标进行检测。车辆行人的检测任务在无人驾驶领域中占据重要地位。进行智能车辆行人识别,可以辅助交警进行有效的管理和交通流量控制,并且可以及时预测接下来的交通状况,预防交通拥堵。
3.本发明基于yolov4网络和kitti道路目标数据集,构建了更高性能的车辆行人检测算法。以yolov4为基础网络,借鉴densenet的思想,设计了dense
‑ꢀ
spp模块和dense-特征融合模块,称为dense-yolov4,可以有效地对高层特征进行多尺度池化以增加感受野以及更加充分的融合网络高层的特征,同时还能减少网络的计算量。
4.本发明所用的数据集是kitti道路目标数据集,为了使模型能够更加轻量化的同时还能基本保持检测精度,设计了dense-yolov4-small网络模型,同时构造了fmish激活函数,其在零点处梯度并不突变,而是为非常小的负梯度,从而保证信息流动。在kitti道路目标数据集上对yolov4、dense-fmish
‑ꢀ
yolov4、dense-fmish-yolov4-small三个模型进行训练,并对比三种模型在检测速度,map和recall指标上的性能。fmish激活函数不仅能避免饱和问题,而且函数较为平缓,避免“梯度爆炸”的问题,可以保证训练过程的稳定性,提升检测效果。


技术实现要素:

5.针对以上问题,本发明的目的是提供一种针对yolov4网络结构的基于激活函数的改进yolov4车辆行人检测算法。
6.为了实现上述目的,本发明采取如下的技术解决方案:
7.一种基于激活函数的改进yolov4车辆行人检测算法,在dense-yolov4与 dense-yolov4-small网络结构的基础上,构造了fmish激活函数,其在零点处梯度并不突变,而是为非常小的负梯度,将全部的激活函数替换为fmish激活函数,称为dense-fmish-yolov4与dense-fmish-yolov4-small算法,fmish 激活函数不仅能避免饱和问题,而且函数较为平缓,避免“梯度爆炸”的问题,可以保证训练过程的稳定性,提升检测效果。
8.所述车辆行人检测算法包括以下步骤:
9.步骤一、下载当前目标检测领域通用数据集kitti道路目标数据集,剔除原始
kitti数据集中的“misc”和“dontcare”两类数据,创建kitti-7classes道路目标数据集,使用该数据集可保证算法检测效果与该领域公开的通用数据集保持一致,构建了本发明使用的道路目标数据集;将测试集、验证集与训练集按照 6:2:2的比例划分;
10.kitti数据集是目前最大的自动驾驶场景下数据集;kitti包含各种道路场景采集的真实图像数据;kitti数据集共包含九类,分别为car,van,truck, pedestrian,person(sitting),cyclist,tram,misc和dontcare;由于kitti中有两类为“misc”和“dontcare”,分别为“杂乱无章”类和“不关心的”类,这两种类别是无意义的,并且由于这两类没有特定的目标特征,在不同的图片中其“misc”类可能包含的物体是不同的,本发明对原始kitti数据集中的“misc”和“dontcare”剔除,形成kitti-7classes数据集,本发明将在kitti-7classes上进行训练和测试;
11.步骤二、使用标准yolov4网络训练并识别和定位车辆行人;使用标准 yolov4网络对基于步骤一道路目标数据集进行训练,下载标准yolov4网络并进行编译,标准yolov4网络的下载地址:https://github.com/alexeyab/darknet;为道路目标数据kitti-7classes更改cfg文件夹中kitti7.data文件中的训练集、验证集、测试集目录为下载数据集的地址,指定类别数量与类别名称,在训练执行的命令行中根据精度要求设定迭代次数(epoch)为100,根据本次实验数据集加载kitti7.data,同时加载yolov4.cfg,程序即可开始训练;保存训练过程中各层的权重文件q1,作为训练结束后检测的权值输入文件;利用权重文件q1进行测试,得到均值平均精度(mean average precision,map)、召回率(recall)与检测时的帧率(frame per second,fps);
12.1)构建yolov4网络模型,使用initialization函数进行神经网络各层权值参数的初始化;
13.yolov4由四个部分组成,分别是:(1)input输入端:指输入网络原始样本数据;(2)骨架(backbone)网络:指进行特征提取操作的卷积神经网络结构;(3)neck颈部:对主干网络提取的图像特征进行融合,并将融合后的特征传递到预测层;(4)head头部:对图像中的感兴趣目标物体进行预测,并生成可视化的预测框与目标类别;
14.下载标准yolov4网络后,对yolov4网络使用make命令进行编译,形成可执行文件darknet;为道路目标数据集kitti-7classes编辑cfg文件夹中kitti7.data 文件,将class、train、valid、names字符串改为对应数据集的目录与参数,这样就编辑好了标准yolov4网络input部分需要的参数,在训练执行的命令行中设定epoch后,根据本次实验数据集加载kitti7.data,同时加载yolov4.cfg,程序即可开始训练;程序在运行时会使用initialization函数进行神经网络各层权值参数的初始化;
15.2)从input部分输入图片数据,经过backbone部分,最终输出两个尺度的特征图,并使用分类器输出预测框pb1与分类概率cp
x

16.从input部分输入图片数据,经过backbone部分,最终输出两个尺度的特征图,将两种不同尺度的特征图送入特征金字塔网络(featuer pyramid network, fpn)组成的neck部分,并将融合后的特征传递到预测层中,与此同时head部分完成目标的分类并输出预测框pb1与分类概率cp
x
,其中x为每个分类的索引;
17.3)对这些数据进行iou与nms后处理,将预测框pb2与真实框gtb对比,并使用adam算法进行神经网络各层权值更新;
18.经过backbone网络生成的预测框pb1数量太大,对图片中同一物体有大量检测框存在,造成检测结果冗余;yolov4的head部分会同时完成预测框与其对应的分类概率;对这些数据进行iou与nms后处理,得到处理好的数据;这里使用的iou与nms为标准yolov4的ciou_loss与nms;经过这些后处理后就可以得到感兴趣目标的预测框pb2与其对应的分类概率cp
x
;同时,使用adam算法使用后处理过程中得到的loss进行神经网络各层权值更新;
19.4)循环执行步骤2)和3)继续迭代至命令中设定的epoch值,停止训练,输出记录每一层权重与偏移的文件q1;利用q1得到的权重与偏移对测试集进行检测,计算得到map、recall与检测时的帧率fps;
20.本发明按照精度要求设置迭代阈值epoch=100,迭代次数小于阈值时,使用 adam算法进行网络各层权值更新,直到阈值epoch=100停止训练,计算map 与recall,输出记录每一层权重与偏移的文件q1;
21.yolov4拥有良好的实时性,模型检测速度与模型权重文件大小也是非常重要的评价指标;检测速度因硬件配置不同而不同,本发明中所有实验使用同一硬件平台,检测速度的标准为每秒检测的图片数量,基于yolov4的车辆行人目标的检测表明模型检测速度不高,内存占用大,为了进一步提升检测速度和检测精度设计了基于fmish激活函数dense-fmish-yolov4与dense-fmish
‑ꢀ
yolov4-small模型;
22.步骤三、设计fmish激活函数,使得函数在零点处梯度并不突变,而是为非常小的负梯度,避免了饱和问题,而且在x》0部分其梯度略小于mish,与 mish相比fmish函数较为平缓,可以保证训练过程的稳定性;
23.本发明设计了fmish激活函数,mish激活函数与本发明设计的fmish公式如下:
24.y
mish
=x
·
tanh(ln(1 e
x
)),
25.其中x为批标准化(batch normalization,bn)层传递的矩阵;
26.本发明在dense-yolov4与dense-yolov4-small网络结构的基础上,引入了fmish激活函数,将全部的激活函数替换为fmish激活函数,称为 dense-fmish-yolov4与dense-fmish-yolov4-small算法;
27.步骤四、将步骤二与步骤三模型性能的检测结果进行对比,包括模型检测精度、模型检测速度、模型检测召回率、模型权重文件大小,并查看步骤二与步骤三实际检测的数据集中的图像,分析检测结果;
28.本发明在dense-yolov4与dense-yolov4-small网络结构的基础上,引入了fmish激活函数,将全部的激活函数替换为fmish激活函数,fmish激活函数不仅能避免饱和问题,而且函数较为平缓,避免“梯度爆炸”的问题,可以保证训练过程的稳定性,提升检测效果。
附图说明
29.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中需要使用的附图做简单介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
30.图1是本发明方法的流程图;
31.图2是使用yolov4进行训练的流程图;
32.图3是本发明的fmish和mish激活函数对比图;
33.图4是dense-fmish-yolov4模型结构图;
34.图5是dense-fmish-yolov4-small模型结构图;
35.图6是三种模型检测性能对比柱状图;6(a)map对比柱状图,6(b)召回率对比柱状图;
36.图7是yolov4和dense-fmish-yolov4检测结果对比图;7(a)yolov4 图片a检测结果图,7(b)dense-fmish-yolov4图片a检测结果图;
37.图8是yolov4和dense-fmish-yolov4-small检测结果对比图;8(a) yolov4图片b检测结果图,8(b)dense-fmish-yolov4-small图片b检测结果图;
38.图9是三种模型检测速度性能对比;
39.图10是三种模型的map性能分析;
具体实施方式
40.为了让本发明的上述和其它目的、特征及优点能更明显,下面特举本发明实施例,并配合所附图示,做详细说明如下:
41.图1为本方法具体流程图,可分为四个步骤:
42.步骤一、下载当前目标检测领域通用数据集kitti道路目标数据集,剔除原始kitti数据集中的“misc”和“dontcare”两类数据,创建kitti-7classes道路目标数据集,使用该数据集可保证算法检测效果与该领域公开的通用数据集保持一致,构建了本发明使用的道路目标数据集;将测试集、验证集与训练集按照 6:2:2的比例划分;
43.kitti数据集是目前最大的自动驾驶场景下数据集;kitti包含各种道路场景采集的真实图像数据;kitti数据集共包含九类,分别为car,van,truck,pedestrian,person(sitting),cyclist,tram,misc和dontcare;由于kitti中有两类为“misc”和“dontcare”,分别为“杂乱无章”类和“不关心的”类,这两种类别是无意义的,并且由于这两类没有特定的目标特征,在不同的图片中其“misc”类可能包含的物体是不同的,本发明对原始kitti数据集中的“misc”和“dontcare”剔除,形成kitti-7classes数据集,kitti-7classes数据集,本发明将在kitti-7classes上进行训练和测试;
44.步骤二、使用标准yolov4网络训练并识别和定位车辆行人;使用标准 yolov4网络对基于步骤一道路目标数据集进行训练,下载标准yolov4网络并进行编译,标准yolov4网络的下载地址:https://github.com/alexeyab/darknet.为道路目标数据kitti-7classes更改cfg文件夹中kitti7.data文件中的训练集、验证集、测试集目录为下载数据集的地址,指定类别数量与类别名称,在训练执行的命令行中根据精度要求设定迭代次数(epoch)为100,根据本次实验数据集加载kitti7.data,同时加载yolov4.cfg,程序即可开始训练;保存训练过程中各层的权重文件q1,作为训练结束后检测的权值输入文件;利用权重文件q1进行测试,得到均值平均精度(mean average precision,map)、召回率(recall)与检测时的帧率(frame per second,fps);
45.参照图2,训练过程可分为四步:
46.1)构建yolov4网络模型,使用initialization函数进行神经网络各层权值参数的
初始化;
47.yolov4由四个部分组成,分别是:(1)input输入端:指输入网络原始样本数据;(2)backbone网络:指进行特征提取操作的卷积神经网络结构;(3) neck颈部:对主干网络提取的图像特征进行融合,并将融合后的特征传递到预测层;(4)head头部:对图像中的感兴趣目标物体进行预测,并生成可视化的预测框与目标类别;
48.下载标准yolov4网络后,对yolov4网络使用make命令进行编译,形成可执行文件darknet;为道路目标数据集kitti-7classes编辑cfg文件夹中 kitti7.data文件,将class、train、valid、names字符串改为对应数据集的目录与参数,这样就编辑好了标准yolov4网络input部分需要的参数,在训练执行的命令行中设定epoch后,根据本次实验数据集加载kitti7.data,同时加载 yolov4.cfg,程序即可开始训练;程序在运行时会使用initialization函数进行神经网络各层权值参数的初始化;
49.2)从input部分输入图片数据,经过backbone部分,最终输出两个尺度的特征图,并使用分类器输出预测框pb1与分类概率cp
x

50.从input部分输入图片数据,经过backbone部分,最终输出两个尺度的特征图,将两种不同尺度的特征图送入特征金字塔网络(featuer pyramid network, fpn)组成的neck部分,并将融合后的特征传递到预测层中,与此同时head部分完成目标的分类并输出预测框pb1与分类概率cp
x
,其中x为每个分类的索引;
51.3)对这些数据进行iou与nms后处理,将预测框pb2与真实框gtb对比,并使用adam算法进行神经网络各层权值更新;
52.经过backbone网络生成的预测框pb1数量太大,对图片中同一物体有大量检测框存在,造成检测结果冗余;yolov4的head部分会同时完成预测框与其对应的分类概率;对这些数据进行iou与nms后处理,得到处理好的数据;这里使用的iou与nms为标准yolov4的ciou_loss与nms;经过这些后处理后就可以得到感兴趣目标的预测框pb2与其对应的分类概率cp
x
;同时,使用adam算法使用后处理过程中得到的loss进行神经网络各层权值更新;
53.4)循环执行步骤2)和3)继续迭代至命令中设定的epoch值,停止训练,输出记录每一层权重与偏移的文件q1;利用q1得到的权重与偏移对测试集进行检测,计算得到map、recall与检测时的帧率fps;
54.本发明按照精度要求设置迭代阈值epoch=100,迭代次数小于阈值时,使用 adam算法进行网络各层权值更新,直到阈值epoch=100停止训练,计算map 与recall,输出记录每一层权重与偏移的文件q1;
55.最基础的网络性能评价指标分为四个分类,分别为tp(true positives):正样本被正确识别为正样本,即狗被正确识别为狗;tn(true negatives):负样本被正确识别为负样本,即猫被正确识别为猫;fp(false positives):负样本被错误识别为正样本,即猫被错误识别为狗;fn(false negatives):正样本被错误识别为负样本,即狗被错误识别为猫;准确率(accuracy)代表预测正确的样本数量与总样本数量的比值,用来评价算法模型的整体准确性能,计算方法为精确率(precision)即查准率,指的是识别正确的样本数占总识别样本数的比例,计算方法为而召回率
(recall) 即查全率,是指正确识别为正例的样例占所有正样例的比例,计算方法为性能好的算法模型应该在保证较高准确率的情况下,召回率维持在较高水平使用precision-recall(p-r)曲线来展示算法模型在准确率与召回率之间的权衡;ap指的是在某一阈值下获得的准确率与召回率所绘制的p-r曲线图与横纵坐标轴围成的面积大小,衡量模型在每个类别上检测性能的好坏,即map指的是多个目标类别的ap再取平均值,用来衡量算法模型在所有待测类别上检测性能的好坏;设有n个类别,则map的计算方法为本发明主要使用模型总体评价指标map与recall作为主要评价指标;
56.yolov4拥有良好的实时性,模型检测速度与模型权重文件大小也是非常重要的评价指标;检测速度因硬件配置不同而不同,本发明中所有实验使用同一硬件平台,检测速度的标准为每秒检测的图片数量,基于yolov4的车辆行人目标的检测表明模型检测速度不高,内存占用大,为了进一步提升检测速度和检测精度设计了基于fmish激活函数dense-fmish-yolov4与dense-fmish-yolov4
‑ꢀ
small模型;
57.步骤三、设计fmish激活函数,使得函数在零点处梯度并不突变,而是为非常小的负梯度,避免了饱和问题,而且在x》0部分其梯度略小于mish,与mish 相比fmish函数较为平缓,可以保证训练过程的稳定性;
58.参照图3:本发明设计了fmish激活函数,mish激活函数与本发明设计的 fmish公式如下:
59.y
mish
=x
·
tanh(ln(1 e
x
)),
60.其中x为批标准化(batch normalization,bn)层传递的矩阵;
61.参照图4与图5:本发明在dense-yolov4与dense-yolov4-small网络结构的基础上,引入了fmish激活函数,将全部的激活函数替换为fmish激活函数,称为dense-fmish-yolov4与dense-fmish-yolov4-small算法;
62.步骤四、将步骤二与步骤三模型性能的检测结果进行对比,包括模型检测精度、模型检测速度、模型检测召回率、模型权重文件大小,并查看步骤二与步骤三实际检测的数据集中的图像,分析检测结果;
63.本发明在dense-yolov4与dense-yolov4-small网络结构的基础上,引入了fmish激活函数,将全部的激活函数替换为fmish激活函数,fmish激活函数不仅能避免饱和问题,而且函数较为平缓,避免“梯度爆炸”的问题,可以保证训练过程的稳定性,提升检测效果。
64.本发明构造了fmish激活函数,其在零点处梯度并不突变,而是为非常小的负梯度,从而保证信息流动。fmish激活函数不仅能避免饱和问题,而且函数较为平缓,避免“梯度爆炸”的问题,可以保证训练过程的稳定性,提升检测效果。
65.下面结合仿真实例对该发明做进一步的描述。
66.仿真实例:
67.本发明使用原始yolov4作为对比样本,训练数据集与测试数据集均来自通用数据
集kitti数据集以验证算法对不同数据集的普适性。
68.图9给出了yolov4、dense-fmish-yolov4和dense-fmish-yolov4
‑ꢀ
small三种网络模型在kitti-7classes数据集中的七个类car,van,truck, pedestrian,person(sitting),cyclist,tram的ap值,从图9可以看出,dense
‑ꢀ
fmish-yolov4方法给出的7个类的测试精度全部优于yolov4方法,大量剪枝之后的模型dense-fmish-yolov4-small与yolov4性能非常接近,计算速度大大提升。
69.引入fmish激活函数后模型的性能对比图6所示,参照图6:原始yolov4 模型的map值为89.1%,recall为89.5%,引入fmish激活函数后,dense-fmish
‑ꢀ
yolov4模型的map提升1.4%,达到90.5%,recall提升1.6%,达到91.1%。所以本节提出的fmish激活函数可以有效的提升网络模型的检测效果和精度。而大量剪枝之后的模型dense-fmish-yolov4-small由于fmish激活函数的引入,map值达到88.5%,其性能非常接近yolov4模型,其recall值达到90.2%,比原始yolov4模型高出0.7%。
70.图7给出dense-fmish-yolov4算法模型与原始yolov4模型对实际检测效果对比图,将同一张图片分别放在原始yolov4、dense-fmish-yolov4两种模型上进行检测,原始yolov4的左右两辆车的检测置信度分别为95%和74%, dense-fmish-yolov4的左右两辆车的检测置信度分别为96%和88%,分别提升了1%和14%,说明本发明设计的fmish激活函数不仅能避免饱和问题,而且函数较为平缓,避免“梯度爆炸”的问题,可以保证训练过程的稳定性,提升检测效果。
71.图8给出dense-fmish-yolov4-small与原始yolov4模型对实际检测效果的对比图,将同一张图片分别放在原始yolov4、dense-fmish-yolov4-small 两种模型上进行检测,在图8(a)中,原始yolov4模型将图中一辆“tram”有轨电车识别成两辆,出现误检问题,而在图8(b)中,dense-fmish-yolov4-small 模型则正常识别,并没有出现误检问题,这是因为本发明设计的dense跨层融合模块可以融合之前卷积的信息,在网络中进行已提取特征的跨层融合,使网络更加有层次性,提升检测精度和效果。并且对dense-yolov4网络进行剪枝之后的dense-yolov4-small网络,剪掉了多余冗余的计算,保留了有效的计算,网络检测速度上升,但是检测精度和置信度并没有下降。此发明设计的fmish激活函数也能避免“梯度爆炸”,使训练过程更稳定,提高检测精度和效果。
72.图10给出了yolov4、dense-fmish-yolov4和dense-fmish-yolov4
‑ꢀ
small三种网络模型在kitti-7classes数据集上的处理速度,总参数量和内存占用的对比关系,从表中可以看出yolov4和dense-fmish-yolov4的处理速度相差不大,dense-fmish-yolov4的处理速度略快于yolov4和内存占用上略小于yolov4。dense-fmish-yolov4-small处理速度略和内存占用上明显优于 yolov4。
73.综上仿真结果表明,与原始yolov算法模型相比,本发明提出的基于fmish 激活函数的dense-fmish-yolov4和dense-fmish-yolov4-small的性能有明显的提升,dense-fmish-yolov4在7个类上的ap值都有明显提升,dense
‑ꢀ
fmish-yolov4-small削减残差结构的个数消除了网络的冗余计算,没有引起网络整体性能大幅度的下降,模型检测速度大幅度提升,内存占用大大减小。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献