CN114565896A - 一种跨层融合改进的YOLOv4道路目标识别算法 - Google Patents
一种跨层融合改进的YOLOv4道路目标识别算法 Download PDFInfo
- Publication number
- CN114565896A CN114565896A CN202210006574.4A CN202210006574A CN114565896A CN 114565896 A CN114565896 A CN 114565896A CN 202210006574 A CN202210006574 A CN 202210006574A CN 114565896 A CN114565896 A CN 114565896A
- Authority
- CN
- China
- Prior art keywords
- network
- yolov4
- data set
- dense
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2415—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/40—Engine management systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Image Analysis (AREA)
Abstract
本发明提出了一种跨层融合改进的YOLOv4道路目标识别算法,所用数据集是KITTI道路目标数据集,为了使模型能够更加轻量化的同时还能保持检测精度,本发明方法以YOLOv4为基础网络,借鉴DenseNet的思想,设计了Dense‑SPP跨层空间池化模块和Dense‑特征融合模块,并且对原始模型进行参数剪枝以及削减,设计了轻量化的Dense‑YOLOv4‑Small网络模型,将骨架网络CSPDarknet‑53中CSP模块进行削减,将原本CSP模块中ResUnit的数量统一设置为1个,对网络进行剪枝消除网络的冗余计算,将KITTI道路目标数据集中的“Misc”和“Dontcare”剔除得到KITTI‑7classes道路目标数据集,在该数据集上对YOLOv4、Dense‑YOLOv4、Dense‑YOLOv4‑Small三个模型进行训练,并对比三种模型的检测速度和检测性能;检测结果表明Dense‑YOLOv4‑Small的检测速度大幅度提升,检测精度几乎不变。
Description
技术领域
该发明属于图像识别领域,一种跨层融合改进的YOLOv4道路目标识别算法,该算法在通用标准数据集上表现出很好的检测性能。
背景技术
为了更高效管理交通道路,维持社会稳定,需要对道路上的行人车辆等目标进行检测。车辆行人的检测任务在无人驾驶领域中占据重要地位,进行智能车辆行人识别,可以辅助交警进行有效的管理和交通流量控制,并且可以及时预测接下来的交通状况,预防交通拥堵。
随着计算机技术的不断发展及算力的不断提升,计算机视觉与其中的目标检测成为了近年来热门方向。利用目标检测可以对特定物体进行识别与定位,在驾驶辅助系统、军事预警系统等有广泛的发展前景。目标检测技术包括传统目标检测技术及基于深度学习的目标检测技术,而后者由于在性能与复杂度方面优于前者,已成为当前目标检测领域的主流算法。为了更高效管理交通道路,维持社会稳定,需要对道路上的行人车辆等目标进行检测。车辆行人的检测任务在无人驾驶领域中占据重要地位。进行智能车辆行人识别,可以辅助交警进行有效的管理和交通流量控制,并且可以及时预测接下来的交通状况,预防交通拥堵。
本发明基于YOLOv4网络,利用KITTI道路目标数据集,构建了更高性能的道路目标检测与识别算法。本发明以YOLOv4为基础网络,借鉴DenseNet的思想,设计了Dense-SPP模块和Dense-特征融合模块,可以有效地对高层特征进行多尺度池化以增加感受野以及更加充分的融合网络高层的特征,同时还能减少网络的计算量。
本发明所用数据集是KITTI道路目标数据集,为了使模型能够更加轻量化的同时还能基本保持检测精度,设计了Dense-YOLOv4-Small网络模型。在KITTI-7classes道路目标数据集上对YOLOv4、Dense-YOLOv4、Dense-YOLOv4- Small三个模型进行训练,并对比三种模型在检测速度,mAP和Recall指标上的性能。本发明通过设计Dense-SPP跨层空间池化模块和Dense-特征融合模块,并且对原始模型进行参数剪枝以及削减,设计了轻量化的Dense-YOLOv4-Small 网络模型,对网络进行剪枝可以消除网络的冗余计算,没有引起精度大幅度的下降,但检测速度能够大幅度提升。
发明内容
针对以上问题,本发明的目的是提供一种针对YOLOv4网络结构的基于跨层融合模块的改进YOLOv4道路目标识别算法。
为了实现上述目的,本发明采取如下的技术解决方案:
一种跨层融合改进的YOLOv4道路目标识别算法,以YOLOv4为基础网络,借鉴DenseNet的思想,设计Dense-SPP跨层空间池化模块和Dense-特征融合模块,并且对原始模型进行参数剪枝以及削减,设计了轻量化的Dense-YOLOv4- Small网络模型,消除网络的冗余计算,在测试精度几乎不下降的情况下大幅度提升检测速度;
所述道路目标识别算法包括以下步骤:
步骤一、下载当前目标检测领域通用数据集KITTI道路目标数据集,剔除原始KITTI数据集中的“Misc”和“Dontcare”两类数据,创建KITTI-7Classes道路目标数据集,使用该数据集可保证算法检测效果与该领域公开的通用数据集保持一致,构建了本发明使用的道路目标数据集;将测试集、验证集与训练集按照 6:2:2的比例划分;
KITTI数据集是目前最大的自动驾驶场景下数据集;KITTI包含各种道路场景采集的真实图像数据;KITTI数据集共包含九类,分别为Car,Van,Truck, Pedestrian,Person(sitting),Cyclist,Tram,Misc和Dontcare;由于KITTI中有两类为“Misc”和“Dontcare”,分别为“杂乱无章”类和“不关心的”类,这两种类别是无意义的,并且由于这两类没有特定的目标特征,在不同的图片中其“Misc”类可能包含的物体是不同的,本发明对原始KITTI数据集中的“Misc”和“Dontcare”剔除,形成KITTI-7Classes数据集,本发明将在KITTI-7Classes上进行训练和测试;
步骤二、使用标准YOLOv4网络训练并识别和定位道路目标;使用标准 YOLOv4网络对基于步骤一道路目标数据集进行训练,下载标准YOLOv4网络并进行编译,标准YOLOv4网络的下载地址:https://github.com/AlexeyAB/darknet;为道路目标数据kitti-7classes更改cfg文件夹中kitti7.data文件中的训练集、验证集、测试集目录为下载数据集的地址,指定类别数量与类别名称,并将 kitti7.name中的“Misc”和“Dontcare”条目删除;在训练执行的命令中根据精度要求设定迭代次数(epoch)为100,根据本次实验数据集加载kitti7.data,同时加载yolov4.cfg,程序即可开始训练;保存训练过程中各层的权重文件Q1,作为训练结束后检测的权值输入文件;利用权重文件Q1进行测试,得到均值平均精度(Mean Average Precision,mAP)、召回率(Recall)与检测时的帧率(Frame Per Second,FPS);当目标占据整张图片一半以上大小时,由于实际有效感受野的限制,网络的检测效果并不佳;
训练过程具体如下:
1)构建YOLOv4网络模型,使用Initialization函数进行神经网络各层权值参数的初始化;
YOLOv4由四个部分组成,分别是:(1)Input输入端:指输入网络原始样本数据;(2)骨架(Backbone)网络:指进行特征提取操作的卷积神经网络结构;(3)Neck颈部:对主干网络提取的图像特征进行融合,并将融合后的特征传递到预测层;(4)Head头部:对图像中的感兴趣目标物体进行预测,并生成可视化的预测框与目标类别;
下载标准YOLOv4网络后,对YOLOv4网络使用make命令进行编译,形成可执行文件darknet;为道路目标数据集KITTI-7classes编辑cfg文件夹中 kitti7.data文件,将class、train、valid、names字符串改为对应数据集的目录与参数,这样就编辑好了标准YOLOv4网络Input部分需要的参数,在训练执行的命令行中设定epoch后,根据本次实验数据集加载kitti7.data,同时加载 yolov4.cfg,程序即可开始训练;程序在运行时会使用Initialization函数进行神经网络各层权值参数的初始化;
2)从Input部分输入图片数据,经过Backbone部分,最终输出两个尺度的特征图,并使用分类器输出预测框Pb1与分类概率CPx;
从Input部分输入图片数据,经过Backbone部分,最终输出两个尺度的特征图,将两种不同尺度的特征图送入特征金字塔网络(Featuer Pyramid Network, FPN)组成的Neck部分,并将融合后的特征传递到预测层中,与此同时Head部分完成目标的分类并输出预测框Pb1与分类概率CPx,其中x为每个分类的索引;
3)对这些数据进行IoU与NMS后处理,将预测框Pb2与真实框Gtb对比,并使用Adam算法进行神经网络各层权值更新;
经过Backbone网络生成的预测框Pb1数量太大,对图片中同一物体有大量检测框存在,造成检测结果冗余;YOLOv4的Head部分会同时完成预测框与其对应的分类概率;对这些数据进行IoU与NMS后处理,得到处理好的数据;这里使用的Iou与NMS为标准YOLOv4的CIoU_loss与NMS;经过这些后处理后就可以得到感兴趣目标的预测框Pb2与其对应的分类概率CPx;同时,使用Adam算法使用后处理过程中得到的loss进行神经网络各层权值更新;
4)循环执行步骤2)和3)继续迭代至命令中设定的epoch值,停止训练,输出记录每一层权重与偏移的文件Q1;利用Q1得到的权重与偏移对测试集进行检测,计算得到mAP、Recall与检测时的帧率FPS;
本发明按照精度要求设置迭代阈值epoch=100,迭代次数小于阈值时,使用 Adam算法进行网络各层权值更新,直到阈值epoch=100停止训练,计算mAP 与Recall,输出记录每一层权重与偏移的文件Q1;
步骤三、设计Dense-YOLOv4网络模型;在该模型中设计两种跨层融合模块,分别为Dense-SPP模块和Dense-特征融合模块;以YOLOv4为基础网络,将上述两个模块引入到YOLOv4模型中;
在Backbone网络上采用CSPDarknet-53为特征提取网络,在特征融合网络上,将原始SPP模块换为Dense-SPP模块;同时将路径聚合网络(Path Aggregation Network,PAN)结构上的与上一尺度的输出特征图进行融合的单路五层卷积模块换为本发明设计的Dense-特征融合模块;网络的检测器方面,采用原始设计的三尺度检测,网络的输入尺寸为640×640×3,最终检测层特征图大小分别为 20×20、40×40和80×80,分别检测大中小目标;
(1)设计一种Dense-SPP模块,在原始SPP模块的基础上引入跨层连接模块,这样特征图分为两个分支,其中一个特征图进行原始SPP模块卷积、池化等操作,另一个特征图进行1×1×512单次卷积,然后两个分支的输出特征图进行Concat拼接操作;Dense-SPP模块的卷积核的数量为11264,而原始SPP模块的卷积核的数量为20480,相比之下参数量减少了45%;本发明设计的Dense- SPP模块同样是采用5个CBL模块,不同之处在于增加一个跨层连接,融合了之前卷积的信息,保留了更多的原始信息;其次,网络具有层次性,也就是说对于同一个任务,不同样本可能用不同种类的特征就可以完成检测;浅层网络提取的是简单的特征,如纹理等特征,而不同的样本可能需要不同复杂程度的特征来进行判断,没有Concat拼接操作时,网络没有保存前面浅层网络提取的特征;加入Concat拼接操作后,相当于又在输出上拼接了模块第一层的特征信息,变得有效;
(2)设计一种Dense-特征融合模块,进入Dense-特征融合模块,特征分为两个分支,其中一个特征图进行四次卷积,卷积核大小分别为1×1×256、3×3×256、 1×1×256、3×3×256,另一个特征图进行1×1×256单次卷积,然后两个分支的特征进行Concat拼接操作;与原始YOLOv4中的单路五次卷积相比Dense-特征融合模块的计算量会更少,卷积核参数的数量为5376,而单路五次卷积的卷积核参数的数量为9984,相比之下计算量减少了40%;由于每做一次卷积都会浪费掉一些信息:比如激活函数的抑制作用、卷积核参数的随机性,此跨层连接相当于把以前处理过的信息直接再拿到现在一并处理,起到了减损的效果;并且 Concat拼接操作,相当于又在输出上拼接了模块第一层的特征信息,实现了特征复用;密集跨层连接模块每一层的输出都会和后面所有层建立输入输出关系,而每一层的输入都是前面所有层的累加,这种模式可以把网络浅层的简单特征保留到网络深层,与高语义特征进行融合,可以实现特征复用;这种模可以减少网络的参数量;后续的网络层获得损失函数的梯度和原始的输入信号,使得网络包含了隐式的深度监督,进而容易训练更深的网络同时具有正则化的效果,在一定程度上缓解训练过程中的梯度消失问题;
步骤四、将步骤二与步骤三模型性能的检测结果进行对比,包括模型检测精度、模型检测速度、模型检测召回率、模型权重文件大小,并查看步骤二与步骤三实际检测的数据集中的图像,分析检测结果。
本发明以YOLOv4为基础网络,借鉴DenseNet的思想,设计了Dense-SPP 跨层空间池化模块和Dense-特征融合模块,并且对原始模型进行参数剪枝以及削减,设计了轻量化的Dense-YOLOv4-Small网络模型。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中需要使用的附图做简单介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明方法的流程图;
图2是使用YOLOv4进行训练的流程图;
图3是Dense-SPP和Dense-特征融合模块结构图;3(a)Dense-SPP模块, 3(b)Dense-特征融合模块;
图4是轻量化后跨层融合模块结构图;4(a)Dense-SPP-Small模块,4(b)Dense- 特征融合-Small模块;
图5是YOLOv4与引入跨层融合模块的模型性能对比柱状图;5(a)mAP 对比柱状图,5(b)召回率对比柱状图;
图6是YOLOv4与引入跨层融合模块的模型检测速度对比图;6(a)参数总量对比柱状图,6(b)模型权重文件大小对比柱状图,6(c)FPS对比柱状图, 6(d)单张图片检测对比柱状图;
图7是Dense-YOLOv4、Dense-YOLOv4-Small两种算法与原始YOLOv4算法的检测效果对比图;7(a)原始YOLOv4检测效果图,7(b)Dense-YOLOv4 检测效果图,7(c)Dense-YOLOv4-Small检测效果图;
图8是YOLOv4与引入跨层融合模块的模型性能分析;
图9是YOLOv4与引入跨层融合模块的模型检测速度分析;
具体实施方式
为了让本发明的上述和其它目的、特征及优点能更明显,下面特举本发明实施例,并配合所附图示,做详细说明如下:
图1为本方法具体流程图,可分为四个步骤:
步骤一、下载当前目标检测领域通用数据集KITTI道路目标数据集,剔除原始KITTI数据集中的“Misc”和“Dontcare”两类数据,创建KITTI-7Classes道路目标数据集,使用该数据集可保证算法检测效果与该领域公开的通用数据集保持一致,构建了本发明使用的道路目标数据集;将测试集、验证集与训练集按照 6:2:2的比例划分;
KITTI数据集是目前最大的自动驾驶场景下数据集;KITTI包含各种道路场景采集的真实图像数据;KITTI数据集共包含九类,分别为Car,Van,Truck, Pedestrian,Person(sitting),Cyclist,Tram,Misc和Dontcare;由于KITTI中有两类为“Misc”和“Dontcare”,分别为“杂乱无章”类和“不关心的”类,这两种类别是无意义的,并且由于这两类没有特定的目标特征,在不同的图片中其“Misc”类可能包含的物体是不同的,本发明对原始KITTI数据集中的“Misc”和“Dontcare”剔除,形成KITTI-7Classes数据集,本发明将在KITTI-7Classes上进行训练和测试;
步骤二、使用标准YOLOv4网络训练并识别和定位道路目标;使用标准 YOLOv4网络对基于步骤一道路目标数据集进行训练,下载标准YOLOv4网络并进行编译,标准YOLOv4网络的下载地址:https://github.com/AlexeyAB/darknet;为道路目标数据kitti-7classes更改cfg文件夹中kitti7.data文件中的训练集、验证集、测试集目录为下载数据集的地址,指定类别数量与类别名称,并将 kitti7.name中的“Misc”和“Dontcare”条目删除;在训练执行的命令中根据精度要求设定迭代次数(epoch)为100,根据本次实验数据集加载kitti7.data,同时加载yolov4.cfg,程序即可开始训练;保存训练过程中各层的权重文件Q1,作为训练结束后检测的权值输入文件;利用权重文件Q1进行测试,得到均值平均精度(Mean Average Precision,mAP)、召回率(Recall)与检测时的帧率(Frame Per Second,FPS);当目标占据整张图片一半以上大小时,由于实际有效感受野的限制,网络的检测效果并不佳;
参照图2,训练过程具体如下:
1)构建YOLOv4网络模型,使用Initialization函数进行神经网络各层权值参数的初始化;
YOLOv4由四个部分组成,分别是:(1)Input输入端:指输入网络原始样本数据;(2)BackBone网络:指进行特征提取操作的卷积神经网络结构;(3) Neck颈部:对主干网络提取的图像特征进行融合,并将融合后的特征传递到预测层;(4)Head头部:对图像中的感兴趣目标物体进行预测,并生成可视化的预测框与目标类别;
下载标准YOLOv4网络后,对YOLOv4网络使用make命令进行编译,形成可执行文件darknet;为道路目标数据集KITTI-7classes编辑cfg文件夹中 kitti7.data文件,将class、train、valid、names字符串改为对应数据集的目录与参数,这样就编辑好了标准YOLOv4网络Input部分需要的参数,在训练执行的命令行中设定epoch后,根据本次实验数据集加载kitti7.data,同时加载 yolov4.cfg,程序即可开始训练;程序在运行时会使用Initialization函数进行神经网络各层权值参数的初始化;
2)从Input部分输入图片数据,经过Backbone部分,最终输出两个尺度的特征图,并使用分类器输出预测框Pb1与分类概率CPx;
从Input部分输入图片数据,经过Backbone部分,最终输出两个尺度的特征图,将两种不同尺度的特征图送入特征金字塔网络(Featuer Pyramid Network, FPN)组成的Neck部分,并将融合后的特征传递到预测层中,与此同时Head部分完成目标的分类并输出预测框Pb1与分类概率CPx,其中x为每个分类的索引;
3)对这些数据进行IoU与NMS后处理,将预测框Pb2与真实框Gtb对比,并使用Adam算法进行神经网络各层权值更新;
经过Backbone网络生成的预测框Pb1数量太大,对图片中同一物体有大量检测框存在,造成检测结果冗余;YOLOv4的Head部分会同时完成预测框与其对应的分类概率;对这些数据进行Iou与NMS后处理,得到处理好的数据;这里使用的Iou与NMS为标准YOLOv4的CIoU_loss与NMS;经过这些后处理后就可以得到感兴趣目标的预测框Pb2与其对应的分类概率CPx;同时,使用Adam算法使用后处理过程中得到的loss进行神经网络各层权值更新;
4)循环执行步骤2)和3)继续迭代至命令中设定的epoch值,停止训练,输出记录每一层权重与偏移的文件Q1;利用Q1得到的权重与偏移对测试集进行检测,计算得到mAP、Recall与检测时的帧率FPS;
本发明按照精度要求设置迭代阈值epoch=100,迭代次数小于阈值时,使用 Adam算法进行网络各层权值更新,直到阈值epoch=100停止训练,计算mAP 与Recall,输出记录每一层权重与偏移的文件Q1;
最基础的网络性能评价指标分为四个分类,分别为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作为主要评价指标;
步骤三、设计Dense-YOLOv4网络模型;在该模型中设计两种跨层融合模块,分别为Dense-SPP模块和Dense-特征融合模块,结构如图3(a)和3(b)所示;以YOLOv4为基础网络,将上述两个模块引入到YOLOv4模型中;在骨架网络上采用CSPDarknet-53为特征提取网络,在特征融合网络上,将原始SPP模块换为Dense-SPP模块;同时将路径聚合网络(PathAggregation Network,PAN) 结构上的与上一尺度的输出特征图进行融合的单路五层卷积模块换为本发明设计的Dense-特征融合模块;网络的检测器方面,采用原始设计的三尺度检测,网络的输入尺寸为640×640×3,最终检测层特征图大小分别为20×20、40×40和 80×80,分别检测大、中、小目标;将骨架网络CSPDarknet-53中CSP模块进行削减,将原本CSP模块中ResUnit的数量统一设置为1个,称为CSP1模块,并且Dense-特征融合与Dense-SPP模块进行轻量化调整,轻量化之后结构如图4(a) 和4(b)所示;调整之后的网络称为Dense-YOLOv4-Small模型,其参数量大大降低
(1)设计一种Dense-SPP模块,在原始SPP模块的基础上引入跨层连接模块,这样特征图分为两个分支,其中一个特征图进行原始SPP模块卷积、池化等操作,另一个特征图进行1×1×512单次卷积,然后两个分支的输出特征图进行Concat拼接操作;Dense-SPP模块的卷积核的数量为11264,而原始SPP模块的卷积核的数量为20480,相比之下参数量减少了45%;本发明设计的Dense- SPP模块同样是采用5个CBL模块,不同之处在于增加一个跨层连接,融合了之前卷积的信息,保留了更多的原始信息;其次,网络具有层次性,也就是说对于同一个任务,不同样本可能用不同种类的特征就可以完成检测;例如:对一瓶纯净水和一瓶饮料做二分类,如果一个样本是黄色的,通过颜色特征判断,其是饮料,如果样本是无色的,就需要通过它的味道等更复杂的特征判断;浅层网络提取的是简单的特征,如纹理等特征,而不同的样本可能需要不同复杂程度的特征来进行判断,没有Concat拼接操作时,网络没有保存前面浅层网络提取的特征;加入Concat拼接操作后,相当于又在输出上拼接了模块第一层的特征信息,变得有效;
(2)设计一种Dense-特征融合模块,如图3(b)所示,进入Dense-特征融合模块,特征分为两个分支,其中一个特征图进行四次卷积,卷积核大小分别为 1×1×256、3×3×256、1×1×256、3×3×256,另一个特征图进行1×1×256单次卷积,然后两个分支的特征进行Concat拼接操作;与原始YOLOv4中的单路五次卷积相比Dense-特征融合模块的计算量会更少,卷积核参数的数量为5376,而单路五次卷积的卷积核参数的数量为9984,相比之下计算量减少了40%;由于每做一次卷积都会浪费掉一些信息:比如激活函数的抑制作用、卷积核参数的随机性,此跨层连接相当于把以前处理过的信息直接再拿到现在一并处理,起到了减损的效果;并且Concat拼接操作,相当于又在输出上拼接了模块第一层的特征信息,实现了特征复用;密集跨层连接模块每一层的输出都会和后面所有层建立输入输出关系,而每一层的输入都是前面所有层的累加,这种模式可以把网络浅层的简单特征保留到网络深层,与高语义特征进行融合,可以实现特征复用;这种模可以减少网络的参数量;将骨架网络CSPDarknet-53中CSP模块进行削减,将原本CSP模块中ResUnit的数量统一设置为1个,称为CSP1模块,并且对设计的两个跨层融合模块进行轻量化调整,调整之后的网络称为Dense-YOLOv4- Small模型,其参数量大大降低;
步骤四、将步骤二与步骤三模型性能的检测结果进行对比,包括模型检测精度、模型检测速度、模型检测召回率、模型权重文件大小,并查看步骤二与步骤三实际检测的数据集中的图像,分析检测结果;
本发明以YOLOv4为基础网络,借鉴DenseNet的思想,设计了Dense-SPP 跨层空间池化模块和Dense-特征融合模块,并且对原始模型进行参数剪枝以及削减,设计了轻量化的Dense-YOLOv4-Small网络模型。
下面结合仿真实例对该发明做进一步的描述。
仿真实例:
本发明使用原始YOLOv4作为对比样本,训练数据集与测试数据集均来自通用道路目标数据集KITTI-7classes,以验证算法对不同数据集的普适性。
在数据集上的AP和mAP如图8所示,从图8中可看出,Dense-YOLOv4 模型的mAP值最优,达到了89.9%,比原始YOLOv4算法提升0.8%,从图4 可以看出Dense-YOLOv4模型的Recall也是最高的,达到90.6%,比原始YOLOv4 模型提高1.1%,而对于各个类别,Dense-YOLOv4模型基本都要比原始YOLOv4 的AP值高,由此可见本发明方法提出的跨层融合的Dense模块能对特征提取网络提取到的特征进行复用,并且此跨层融合模块相当于在输出特征图中又拼接了输入的特征信息,对提取到的特征做到最大程度的利用,可以提高检测的效果和精度。而大量剪枝之后的模型Dense-YOLOv4-Small的mAP值达到87.7%,其精度并没有大幅度下降,其Recall值达到90.1%,比原始YOLOv4模型高出 0.6%,这说明对网络进行剪枝可以消除网络的冗余计算,不会引起精度大幅度的下降,但能够大幅度提升检测速度。
YOLOv4、Dense-YOLOv4和Dense-YOLOv4-Small三种模型的模型参数量、 FPS和检测时间性能对比如图5、图6和图9所示。Dense-YOLOv4模型的参数量为52221792,而原始YOLOv4为64165728,下降约20%,所以本发明设计的跨层融合模块可以有效降低参数量,其FPS也从43提升至49。Dense-YOLOv4- Small检测速度最快,FPS达93,比原始YOLOv4提升一倍,模型所占内存只有31M,参数量和模型所占内存大小约为原始YOLOv4的十分之一。由此可知,本发明设计的Dense-YOLOv4-Small轻量化的网络结构削减了原始YOLOv4中CSP模块的残差结构的个数,原本残差结构的作用就是为了防止网络深度过深而导致网络性能下降,但是对于本发明所用的KITTI-7classes数据集而言,削减残差结构的个数没有引起网络整体性能大幅度的下降,但是模型的检测速度大幅度提升。
将本发明提出的Dense-YOLOv4、Dense-YOLOv4-Small两种算法模型与原始YOLOv4模型对实际检测效果进行对比,实际检测对比如图7所示,将同一张图片分别放在原始YOLOv4、Dense-YOLOv4和Dense-YOLOv4-Small三种模型上进行检测,以图中最左侧车辆为例,原始YOLOv4的检测置信度93%, Dense-YOLOv4的检测置信度为97%,提升了4%,说明本节设计的Dense跨层融合模块可以融合之前卷积的信息,保留更多的原始信息,相当保留了一些原始简单的特征用于之后网络高层的预测,可以使网络变得更加有层次性,提升检测精度和效果。而在对Dense-YOLOv4网络进行剪枝之后的Dense-YOLOv4-Small 网络,其最左侧车辆的检测置信度为94%,相较于原始YOLOv4其检测置信度提升1%,说明对网络进行剪枝后,剪掉冗余的计算,保留了有效的计算。
综上仿真结果表明,与原始YOLOv4算法模型相比,本发明提出的跨层融合的Dense模块能对特征提取网络提取到的特征进行复用,并且此跨层融合模块相当于在输出特征图中又拼接了输入的特征信息,对提取到的特征做到最大程度的利用,可以提高Dense-YOLOv4和Dense--YOLOv4-Small算法模型检测的效果和精度。对网络进行剪枝可以消除网络的冗余计算,不会引起精度大幅度的下降,但能够大幅度提升检测速度。
Claims (1)
1.一种跨层融合改进的YOLOv4道路目标识别算法,基于KITTI通用数据集的道路目标识别,其特征在于:
步骤一、下载当前目标检测领域通用数据集tt100k数据集与LISA数据集,使用这两个数;
步骤一、下载当前目标检测领域通用数据集KITTI道路目标数据集,剔除原始KITTI数据集中的“Misc”和“Dontcare”两类数据,创建KITTI-7Classes道路目标数据集,使用该数据集可保证算法检测效果与该领域公开的通用数据集保持一致,构建了本发明使用的道路目标数据集;将测试集、验证集与训练集按照6:2:2的比例划分;
KITTI数据集是目前最大的自动驾驶场景下数据集;KITTI包含各种道路场景采集的真实图像数据;KITTI数据集共包含九类,分别为Car,Van,Truck,Pedestrian,Person(sitting),Cyclist,Tram,Misc和Dontcare;由于KITTI中有两类为“Misc”和“Dontcare”,分别为“杂乱无章”类和“不关心的”类,这两种类别是无意义的,并且由于这两类没有特定的目标特征,在不同的图片中其“Misc”类可能包含的物体是不同的,本发明对原始KITTI数据集中的“Misc”和“Dontcare”剔除,形成KITTI-7Classes数据集,本发明将在KITTI-7Classes上进行训练和测试;
步骤二、使用标准YOLOv4网络训练并识别和定位道路目标;使用标准YOLOv4网络对基于步骤一道路目标数据集进行训练,下载标准YOLOv4网络并进行编译,标准YOLOv4网络的下载地址:https://github.com/AlexeyAB/darknet;为道路目标数据kitti-7classes更改cfg文件夹中kitti7.data文件中的训练集、验证集、测试集目录为下载数据集的地址,指定类别数量与类别名称,并将kitti7.name中的“Misc”和“Dontcare”条目删除;在训练执行的命令中根据精度要求设定迭代次数(epoch)为100,根据本次实验数据集加载kitti7.data,同时加载yolov4.cfg,程序即可开始训练;保存训练过程中各层的权重文件Q1,作为训练结束后检测的权值输入文件;利用权重文件Q1进行测试,得到均值平均精度(Mean AveragePrecision,mAP)、召回率(Recall)与检测时的帧率(Frame Per Second,FPS);当目标占据整张图片一半以上大小时,由于实际有效感受野的限制,网络的检测效果并不佳;
训练过程具体如下:
1)构建YOLOv4网络模型,使用Initialization函数进行神经网络各层权值参数的初始化;
YOLOv4由四个部分组成,分别是:(1)Input输入端:指输入网络原始样本数据;(2)BackBone网络:指进行特征提取操作的卷积神经网络结构;(3)Neck颈部:对主干网络提取的图像特征进行融合,并将融合后的特征传递到预测层;(4)Head头部:对图像中的感兴趣目标物体进行预测,并生成可视化的预测框与目标类别;
下载标准YOLOv4网络后,对YOLOv4网络使用make命令进行编译,形成可执行文件darknet;为道路目标数据集KITTI-7classes编辑cfg文件夹中kitti7.data文件,将class、train、valid、names字符串改为对应数据集的目录与参数,这样就编辑好了标准YOLOv4网络Input部分需要的参数,在训练执行的命令行中设定epoch后,根据本次实验数据集加载kitti7.data,同时加载yolov4.cfg,程序即可开始训练;程序在运行时会使用Initialization函数进行神经网络各层权值参数的初始化;
2)从Input部分输入图片数据,经过Backbone部分,最终输出两个尺度的特征图,并使用分类器输出预测框Pb1与分类概率CPx;
从Input部分输入图片数据,经过Backbone部分,最终输出两个尺度的特征图,将两种不同尺度的特征图送入特征金字塔网络(Featuer Pyramid Network,FPN)组成的Neck部分,并将融合后的特征传递到预测层中,与此同时Head部分完成目标的分类并输出预测框Pb1与分类概率CPx,其中x为每个分类的索引;
3)对这些数据进行IoU与NMS后处理,将预测框Pb2与真实框Gtb对比,并使用Adam算法进行神经网络各层权值更新;
经过Backbone网络生成的预测框Pb1数量太大,对图片中同一物体有大量检测框存在,造成检测结果冗余;YOLOv4的Head部分会同时完成预测框与其对应的分类概率;对这些数据进行IoU与NMS后处理,得到处理好的数据;这里使用的IoU与NMS为标准YOLOv4的CIoU_loss与NMS;经过这些后处理后就可以得到感兴趣目标的预测框Pb2与其对应的分类概率CPx;同时,使用Adam算法使用后处理过程中得到的loss进行神经网络各层权值更新;
4)循环执行步骤2)和3)继续迭代至命令中设定的epoch值,停止训练,输出记录每一层权重与偏移的文件Q1;利用Q1得到的权重与偏移对测试集进行检测,计算得到mAP、Recall与检测时的帧率FPS;
本发明按照精度要求设置迭代阈值epoch=100,迭代次数小于阈值时,使用Adam算法进行网络各层权值更新,直到阈值epoch=100停止训练,计算mAP与Recall,输出记录每一层权重与偏移的文件Q1;
步骤三、设计Dense-YOLOv4网络模型;在该模型中设计两种跨层融合模块,分别为Dense-SPP模块和Dense-特征融合模块;以YOLOv4为基础网络,将上述两个模块引入到YOLOv4模型中;
在骨架网络上采用CSPDarknet-53为特征提取网络,在特征融合网络上,将原始SPP模块换为Dense-SPP模块;同时将路径聚合网络(Path Aggregation Network,PAN)结构上的与上一尺度的输出特征图进行融合的单路五层卷积模块换为本发明设计的Dense-特征融合模块;网络的检测器方面,采用原始设计的三尺度检测,网络的输入尺寸为640×640×3,最终检测层特征图大小分别为20×20、40×40和80×80,分别检测大中小目标;
(1)设计一种Dense-SPP模块,在原始SPP模块的基础上引入跨层连接模块,这样特征图分为两个分支,其中一个特征图进行原始SPP模块卷积、池化等操作,另一个特征图进行1×1×512单次卷积,然后两个分支的输出特征图进行Concat拼接操作;Dense-SPP模块的卷积核的数量为11264,而原始SPP模块的卷积核的数量为20480,相比之下参数量减少了45%;本发明设计的Dense-SPP模块同样是采用5个CBL模块,不同之处在于增加一个跨层连接,融合了之前卷积的信息,保留了更多的原始信息;其次,网络具有层次性,也就是说对于同一个任务,不同样本可能用不同种类的特征就可以完成检测;浅层网络提取的是简单的特征,如纹理等特征,而不同的样本可能需要不同复杂程度的特征来进行判断,没有Concat拼接操作时,网络没有保存前面浅层网络提取的特征;加入Concat拼接操作后,相当于又在输出上拼接了模块第一层的特征信息,变得有效;
(2)设计一种Dense-特征融合模块,进入Dense-特征融合模块,特征分为两个分支,其中一个特征图进行四次卷积,卷积核大小分别为1×1×256、3×3×256、1×1×256、3×3×256,另一个特征图进行1×1×256单次卷积,然后两个分支的特征进行Concat拼接操作;与原始YOLOv4中的单路五次卷积相比Dense-特征融合模块的计算量会更少,卷积核参数的数量为5376,而单路五次卷积的卷积核参数的数量为9984,相比之下计算量减少了40%;由于每做一次卷积都会浪费掉一些信息:比如激活函数的抑制作用、卷积核参数的随机性,此跨层连接相当于把以前处理过的信息直接再拿到现在一并处理,起到了减损的效果;并且Concat拼接操作,相当于又在输出上拼接了模块第一层的特征信息,实现了特征复用;密集跨层连接模块每一层的输出都会和后面所有层建立输入输出关系,而每一层的输入都是前面所有层的累加,这种模式可以把网络浅层的简单特征保留到网络深层,与高语义特征进行融合,可以实现特征复用;这种模可以减少网络的参数量;后续的网络层获得损失函数的梯度和原始的输入信号,使得网络包含了隐式的深度监督,进而容易训练更深的网络同时具有正则化的效果,在一定程度上缓解训练过程中的梯度消失问题;
步骤四、将步骤二与步骤三模型性能的检测结果进行对比,包括模型检测精度、模型检测速度、模型检测召回率、模型权重文件大小,并查看步骤二与步骤三实际检测的数据集中的图像,分析检测结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210006574.4A CN114565896A (zh) | 2022-01-05 | 2022-01-05 | 一种跨层融合改进的YOLOv4道路目标识别算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210006574.4A CN114565896A (zh) | 2022-01-05 | 2022-01-05 | 一种跨层融合改进的YOLOv4道路目标识别算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114565896A true CN114565896A (zh) | 2022-05-31 |
Family
ID=81711557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210006574.4A Pending CN114565896A (zh) | 2022-01-05 | 2022-01-05 | 一种跨层融合改进的YOLOv4道路目标识别算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114565896A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110991337A (zh) * | 2019-12-02 | 2020-04-10 | 山东浪潮人工智能研究院有限公司 | 一种基于自适应双路检测网络的车辆检测方法 |
CN116342596A (zh) * | 2023-05-29 | 2023-06-27 | 云南电网有限责任公司 | 一种基于YOLOv5改进的变电站设备螺母缺陷识别检测方法 |
-
2022
- 2022-01-05 CN CN202210006574.4A patent/CN114565896A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110991337A (zh) * | 2019-12-02 | 2020-04-10 | 山东浪潮人工智能研究院有限公司 | 一种基于自适应双路检测网络的车辆检测方法 |
CN116342596A (zh) * | 2023-05-29 | 2023-06-27 | 云南电网有限责任公司 | 一种基于YOLOv5改进的变电站设备螺母缺陷识别检测方法 |
CN116342596B (zh) * | 2023-05-29 | 2023-11-28 | 云南电网有限责任公司 | 一种基于YOLOv5改进的变电站设备螺母缺陷识别检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107886073B (zh) | 一种基于卷积神经网络的细粒度车辆多属性识别方法 | |
JP6820030B2 (ja) | 異なるラベルセットを有する複数のラベリングされたデータベースを用いて学習する方法及び装置、そしてこれを利用したテスト方法及び装置{learning method and learning device using multiple labeled databases with different label sets and testing method and testing device using the same} | |
CN102693432B (zh) | 使用可靠局部模型更新来调节畅通路径检测 | |
CN111508101B (zh) | 通过检测驾驶场景来评估驾驶员的驾驶习惯的方法和装置 | |
CN109993082A (zh) | 卷积神经网络道路场景分类与道路分割方法 | |
CN112668663A (zh) | 一种基于YOLOv4的航拍小汽车检测方法 | |
CN114565896A (zh) | 一种跨层融合改进的YOLOv4道路目标识别算法 | |
CN111105011A (zh) | 用于对有用学习数据进行取舍筛选的基于cnn的方法及装置 | |
CN102682301B (zh) | 使用附加分类器来调节畅通路径检测 | |
CN111488879B (zh) | 利用双嵌入构成的用于提高分割性能的方法及装置 | |
Xia et al. | ResNet15: weather recognition on traffic road with deep convolutional neural network | |
CN111415533B (zh) | 弯道安全预警监控方法、装置以及系统 | |
CN110889318A (zh) | 利用cnn的车道检测方法和装置 | |
CN113034378B (zh) | 一种区分电动汽车与燃油汽车的方法 | |
CN115661767A (zh) | 一种基于卷积神经网络的图像前方车辆目标识别方法 | |
CN112785610B (zh) | 一种融合低层特征的车道线语义分割方法 | |
CN114419583A (zh) | 一种大尺度特征的YOLOv4-tiny目标检测算法 | |
CN114639067A (zh) | 一种基于注意力机制的多尺度全场景监控目标检测方法 | |
US20210271979A1 (en) | Method, a system, a storage portion and a vehicle adapting an initial model of a neural network | |
CN114694104A (zh) | 一种基于激活函数的改进YOLOv4车辆行人检测算法 | |
CN112509321A (zh) | 一种基于无人机的城市复杂交通情景的驾驶控制方法、系统及可读存储介质 | |
CN114120246B (zh) | 一种基于复杂环境的前方车辆检测算法 | |
CN113269156B (zh) | 一种基于多尺度特征融合的信号灯检测识别方法及系统 | |
CN114419584A (zh) | 一种改进的非极大值抑制YOLOv4交通标志识别定位方法 | |
Jain et al. | Machine Learning-Based Real-Time Traffic Control System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |