一种基于YOLOv3的轻量级框架改进的目标识别方法与流程

文档序号:20189744发布日期:2020-03-27 19:31阅读:2202来源:国知局
一种基于YOLOv3的轻量级框架改进的目标识别方法与流程

本发明涉及计算机视觉和深度学习领域,特别是涉及一种基于yolov3的轻量级框架改进的目标识别方法。



背景技术:

现今无人驾驶技术发展愈发成熟,在自动驾驶过程中对环境信息进行实时获取并处理一直以来是研究的重点,无人驾驶技术是通过行车记录仪等摄像头工具对采集到的实时路况视频图像(包括行人、车辆、交通标志等信息)经过模型化处理得到汽车线控状态参数,再将此参数输入到车辆的决策和控制网络模型中,以进行车辆行为的决策控制。而目标检测是行为决策的前提,基于深度学习的目标检测方法不仅要保证多目标检测分类的准确性,还要满足实时性处理需求。目前主流的基于机器学习的目标检测方法主要分为以区域提名(regionproposal)为思想和以回归方法为基础的两大类方法。

基于区域提名的方法主要有r_cnn、spp_net、fastr_cnn、fasterr_cnn等方法。r_cnn方法存在候选框数量众多且重复计算导致计算量大的问题,从而导致运行速度慢,fastr_cnn方法利用共享特征层的方法,大大减少了运行时间,另外在分类及回归方法上由使用svm模型改为使用softmax作分类,以多任务方式同时进行分类和回归,在一定程度上减少了目标检测的运行时间,但其在选择性搜索过程中要找出所有的候选框,这个过程非常耗时,存在计算速度瓶颈问题。fasterr_cnn方法直接利用rpn网络提取候选框,区域提名、分类、回归等操作一起共用卷积特征,从而进一步提升了运算速度,但其在具体实施过程中是在获取候选区域(regionproposal)后再对每个候选框架(proposal)做分类计算,计算量依然比较大,无法实时检测目标。

基于回归方法的代表性方法有yolo方法,yolo方法简化了目标检测的整个流程,视频帧图像被缩放至统一尺度大小的图像,但是其在具体实施过程中对各个单元格仅仅预测两个边界框,而且这两个边界框属于一个类别,从而导致yolo方法对小目标检测准确率不够高,泛化能力偏弱,无法满足无人驾驶对多目标检测的要求。



技术实现要素:

本发明的目的是提供一种基于yolov3的轻量级框架改进的目标识别方法,以解决上述现有技术存在的问题,旨在在保证提升目标检测速度及小目标检测的准确率的同时,提升模型参数对噪声的鲁棒性。

为实现上述目的,本发明提供了如下方案:本发明提供一种基于yolov3的轻量级框架改进的目标识别方法,包括如下步骤:

s1、在不同的路况、行车环境和天气条件下采集车辆、行人和交通环境图片,制作初始样本数据集;具体而言,步骤s1包括:

s11、开启行车记录仪或者车辆自行安装的高清摄像头,实时拍摄道路交通环境下的行车信息;

s12、将获取到的行车视频进行分帧处理,将每一帧的图像提取出来,得到不同行车环境下的行车图像序列集;

s13、对步骤s12得到的行车图像序列集进行筛选,选取不同光照条件、交通时段和环境背景下的行车图像;

s14、利用标注工具对选取的行车图像进行标注,框出目标区域,所述目标区域包括车辆、行人和交通标志,然后将目标区域打上标签,制作初始样本数据集。

s2、对初始样本数据集中的图片数据进行预处理以及数据增强,得到目标识别样本数据集,具体而言,步骤s2包括:对步骤s1得到的初始样本数据集通过平移、旋转、调整饱和度和曝光量以及添加噪声操作,对待识别目标的特征参数进行处理,得到完备样本数据集。

s3、将得到的目标识别样本数据集划分为训练集和测试集两部分。

s4、在yolov3-tiny方法框架中嵌入senet结构,得到yolov3-tiny-se网络模型,具体而言,步骤s4包括:

在yolov3-tiny方法中嵌入senet结构,在每个池化层后以及最终输出结果前的卷积层后嵌入senet结构,通过修改yolov3-tiny.cfg文件,在第2、4、6、8、10、12层的池化层和第13、14、15、19、22层的卷积层后添加senet结构,并指定senet结构的输入全局池化层的特征通道值16、32、64、128、256、512、1024、256、512、128、256为嵌入层输出的特征通道数,得到yolov3-tiny-se网络模型。

s5、在训练集上训练yolov3-tiny-se网络模型,具体而言,步骤s5包括:

s51、在步骤s2进行样本数据集的增强并标注好参数以后,对于制作好的完备样本数据集重新计算anchorbox值;利用k-means聚类方法进行交通环境中的anchorbox值的计算,步骤如下:读取已标注好的数据集,随机取出其中一个图片的宽度和高度值作为坐标点并作为初始聚类中心,再使用k-means聚类方法进行迭代计算得到具体的anchorbox值;

s52、设置训练时的超参数和网络参数,然后将训练集输入到yolov3-tiny-se网络模型中进行多任务训练,并保存训练好的网络模型权重文件。

s6、在测试集上测试yolov3-tiny-se性能,具体而言,步骤s6包括:

s61、加载步骤s52得到的训练好的网络模型权重文件,将测试集输入到上述训练好yolov3-tiny-se网络模型中,经过卷积层、池化层、senet结构以及上采样层,得到多尺度特征图;

s62、采用logistic函数对网络预测的x、y、置信度、类别概率进行激活,经阈值判断,得到所有预测框的坐标、置信度和类别概率;

s63、将步骤s62得到的结果通过非极大值抑制处理去除冗余检测框,产生最终的目标检测框和识别结果。

s7、将步骤s6得到的yolov3-tiny-se在测试集上的性能测试结果与yolov3-tiny进行性能比较,得到性能比较的结果。

本发明公开了以下技术效果:本发明针对现有方法对于目标在复杂环境下的检测速度慢、小目标检测准确率不够精确的问题,将yolov3的轻量级版本yolov3-tiny和senet结构相结合得到yolov3-tiny-se网络模型,并利用得到的yolov3-tiny-se网络模型来进行目标检测和识别,一方面此网络模型泛化能力强,可以满足无人驾驶对多目标检测的要求,另一方面此网络模型在保证实时性的前提下可以提升目标检测速度、小目标检测的准确率并可以提升模型参数对噪声的鲁棒性。本发明同时还提出了一种改进的激活函数:psrelu函数,并将其用于激活模型。运用本申请提出的目标识别方法可以将通过行车记录仪等摄像头工具采集到的实时路况视频图像进行快速、实时、精确地处理,为自动驾驶中车辆行为的决策控制提供科学依据。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请系统整体结构图;

图2本申请改进的psrelu激活函数图;

图3为yolov3-tiny-se网络模型结构图;

图4为senet结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

参见图1-4,本发明提供一种基于yolov3的轻量级框架改进的目标识别方法,具体包括如下步骤:

s1、在不同的道路、交通环境和天气条件下采集车辆、行人和交通环境图片,制作初始样本数据集;包括如下步骤:

s11、开启行车记录仪或者车辆自行安装的高清摄像头,实时拍摄道路交通环境下的行车视频;

s12、将获取到的行车视频进行分帧处理,将每一帧的图像提取出来,得到不同行车环境下的行车图像序列集;

s13、对行车图像序列集进行筛选,选取不同光照条件、交通时段和环境背景下的行车图像;

s14、利用标注工具对选取的行车图像进行标注,对于样本数据集中待识别目标利用labelimg样本标注工具进行参数标记,框出目标区域(具体包括车辆、行人和交通标志三类)并打上标签,制作初始样本数据集。

s2、对制作的初始样本数据集进行预处理以及数据增强,完善初始样本数据集,得到目标识别样本数据集;具体步骤如下:

对初始样本数据集进行处理,通过编写程序进行以下操作:在已有初始样本数据集的基础上通过平移、旋转、调整饱和度和曝光量以及添加噪声操作对待识别目标的特征参数进行处理,增加样本数据,得到目标识别样本数据集以完善初始样本数据集,提高神经网络的泛化能力。

s3、按照7:3、8:2或者是8:1的比例将得到的目标识别样本数据集划分为训练集和测试集两部分。

s4、在yolov3-tiny方法中嵌入senet结构,得到yolov3-tiny-se网络模型;包括如下:

s41、本步骤在表1所述的的yolov3的轻量型框架上进行改进,将senet结构嵌入到yolov3-tiny框架内,得到图3所示的改进的yolov3-tiny-se网络模型;

s42、yolov3-tiny作为yolov3的轻量型框架,整体网络架构如表1所示,具体包括13个卷积层、6个池化层、2个融合层、1个上采样层以及2个不同尺度的输出层,其整体架构相比yolov3减少了残差层,取而代之增加的是一系列的池化层,同时也删减掉了一些用来提取特征的卷积层和fpn网络,从而简化了网络,降低了运算复杂度,并且提升了识别速度;

s43、yolov3-tiny对于目标检测和识别的处理思想与yolov3是一样的,yolov3在每一个卷积层卷积后进行了批标准化(batchnormalization,bn)的操作,用于避免网络训练过拟合现象的发生,然后在批标准化后使用leaky-relu函数作为激活函数;

s44、yolov3在前两代方法的基础上加入了fpn结构来提高多重scale目标的识别精度,具体步骤为:

首先对于一幅图像建立图像金字塔,不同级别的图像金字塔被输入到对应的网络当中,对不同深度的featuremap分别进行目标检测,通过当前层的featuremap对未来层的featuremap进行上采样,并加以利用,这样当前的featuremap就可以获得未来层的信息,将低阶的语义信息和高阶的语义信息有机融合,提升检测精度,从而改进了前两个版本方法的不足,将fpn网络引入yolov3框架之中,提升小目标识别的精准度,这样对于交通标志的识别会更加有效;

s45、yolov3-tiny-se网络模型如图3所示,senet结构先对输入特征图进行全局平均池化得到大小为c×1×1的特征图(c为特征通道数),然后经过两个全连接层,再进行先降维再升维的过程,最后用sigmoid函数进行非线性处理,得到大小为c×1×1的权重,然后将该权重与对应位置的原输入特征图进行相乘运算,得到最后的输出结果;

s46、在yolov3-tiny方法中嵌入senet结构;具体步骤为:

在每个池化层后以及最终输出前的卷积层后嵌入senet结构,通过修改yolov3-tiny.cfg文件,在第2、4、6、8、10、12层的池化层和13、14、15、19、22层的卷积层后添加senet结构,并指定senet结构的全局池化层的特征通道值16、32、64、128、256、512、1024、256、512、128、256为嵌入层输出的特征通道数,得到yolov3-tiny-se网络模型;

s47、yolov3-tiny的网络深度本来是24层,经过嵌入senet结构以后变成35层,嵌入senet网络主要目的是为了加强有用信息,并压缩无用信息,其中嵌入的senet结构的具体步骤以第二层的池化层为例,池化层输出的特征图为208*208*16,同样也是全局池化层(globalpooling)的输入特征图尺寸,全局平均池化以后得到1*1*16的特征图,然后经过第一个全连接(fullconnected)降维以后得到1*1*1的特征图,经过第二个全连接(fullconnected)升维以后得到1*1*16的特征图,最后再经过sigmoid函数激活得到1*1*16的权重值,最后将该权重值与输入的特征图相乘,得到208*208*16的输出。

表1

s5、在训练集上训练yolov3-tiny-se网络模型,具体包括如下步骤:

s51、对于训练集中标注的待识别目标的真实目标边框进行聚类,采用面积交互比iou作为评价指标以获得训练集中的预测的目标的初始候选边框,将初始候选边框作为初始参数输入到yolov3-tiny-se网络模型中,具体步骤如下:

采用k-means方法,以距离公式dis(box,centroid)=1-iou(box,centroid)对训练数据集的真实目标边框进行聚类;iou(box,centroid)为预测目标边框和真实目标边框的面积交互比,iou(box,centroid)作为评价标准且该值达到不低于0.5的时候,将此时预测的候选边框作为初始目标边框;

面积交互比iou(box,centroid)公式如下式所示:

其中,boxpred和boxtruth分别代表预测目标边框和真实目标边框的面积,两者的交集与并集的比例就是真实目标边框和预测初始目标的初始候选边框的平均交互比;

s53、调取yolov3-tiny网络的初始权重,设置超参数,学习率和迭代步数n以及batch_size的大小,这些超参数可以根据得到的模型数据进行调整;然后将训练数据集输入到yolov3-tiny-se网络模型中进行训练,直到训练数据集输出的loss值小于某个阈值q1或者是达到预先设置的最大迭代次数n以后停止训练,得到训练好的yolov3-tiny-se网络模型;具体步骤如下:

调取yolov3-tiny的初始网络权重,将训练数据集输入到yolov3-tiny网络中进行训练,并输出损失函数值,根据损失函数值不断训练调整网络权重和偏置值,直到训练集输出的损失函数值小于阈值q1或达到最大迭代次数n以后停止训练得到训练好的yolov3-tiny-se网络模型;

所述损失函数loss(object)如下式所示

上述loss损失函数的每一项分别对应对于预测中心坐标的损失、对于预测边界框的损失、对于预测置信度的损失以及对于预测类别的损失四部分。其中对于预测中心坐标和边界框的损失函数采用误差平方和来表示,对于预测类别和置信度的损失函数采用二院交叉熵损失函数来表示;

上式中,λcoord为预测坐标的误差系数;λnoobject为不包含识别目标时的置信度的误差系数;k2表示的是将输入图像划分的网格数量;m表示的是每一个网格预测的目标边框数量;xi,yi,wi,hi分别表示预测的目标的中心点的横、纵坐标和宽度、高度,分别表示真实的目标的中心点的横、纵坐标和宽度、高度;表示第j个候选框所在的第i个网格负责检测该对象object;表示第j个候选框所在的第i个网格不负责检测该对象object;ci与分别表示第i个网格中存在待检测目标的预测置信度和真实置信度;pi(c)和分别表示第i个网络中目标识别属于某个类别的预测概率值和真实概率值;

yolov3在卷积层后的激活函数采用了leaky-relu函数,此函数表达式如下式所示:

leaky-relu函数由relu函数演化而来,relu函数在x≤0的时候得到的值均为0,这样随着训练的进行可能会出现神经元权重无法更新的问题,该问题对于深层神经网络影响不大,但是对于层数比较浅的神经网络会有很大的影响于是leaky-relu函数在relu的基础上将复数域上为0的输出改为了一个斜率较小的线性函数,这样保留了负数域的输出,但是参数a通常都是通过人工先验和多次的重复训练已确定合适的参数值,其依然无法确保在失活状态下的噪声鲁棒性。基于上述问题,本实施方式提出了一种如图2所示的改进的激活函数psrelu(parametricsoftplus-relu)函数,此函数表达式如下:

其中在正值域时,yolov3-tiny采用的激活函数leaky-relu与relu函数一样,在负值域的时候采用softplus函数,并且向下平移log2个单位,参数α作为网络中一个可学习的参数,在网络中进行反向传播训练,与其它网络层联合优化。当x从0开始在负值域上逐渐缩小时,激活函数最终收敛到-αlog(2),这样当α较小的时候,本实施方式的激活函数的导数较小,减少了传播过程中的信息变化,所以具有较强的噪声鲁棒性。

s6、在测试集上测试yolov3-tiny-se网络模型性能,具体而言,步骤s6包括:

s61、加载训练好的网络权重,将测试集输入到训练好的网络中,经过卷积层、池化层、senet结构以及上采样层,得到多尺度特征图;

s62、采用logistic函数对网络预测的x、y、置信度、类别概率进行激活,经阈值判断,得到所有预测框的坐标、置信度和类别概率;

s63、将上述结果通过非极大值抑制处理(nms)去除冗余检测框,产生最终的目标检测框和识别结果;

s64、使用原激活函数对yolov3-tiny原生模型和改进以后的yolov3-tiny-se网络模型进行效果对比;分别使用改进的激活函数和原激活函数在yolov3-tiny原生模型上进行性能测试;分别使用改进的激活函数和原激活函数在yolov3-tiny-se网络模型上进行性能测试;

s65、将步骤s3得到的测试集分别输入到s61对应的网络之中进行性能检测,得出最终对于模型性能的包括包括平均精确度均值map(meanaverageprecision)、每秒检测识别帧数fps(framespersecond),召回率(recall)的评价指标。

s7、将步骤s6得到的yolov3-tiny-se网络模型在测试集上的性能测试结果与yolov3-tiny的性能进行比较,得到性能比较的结果。

对于本领域技术人员而言,显然本发明不限于上述示范实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看做示范性的,而非限定性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1