一种基于改进yolov3的轻量化目标检测方法
技术领域
1.本发明涉及计算机视觉领域,尤其涉及一种基于改进yolov3的轻量化目标检测方法。
背景技术:2.近年来,计算机科学技术发展迅猛,计算机处理能力和算法不断取得突破,自动驾驶、工业质检和智能安防等应用不断商业化,这些技术中都离不开目标检测,目标检测通过识别待测物体特征为用户提供各种服务和技术支持。大型商场使用自动测温系统通过目标检测算法识别出进入摄像头视野的行人,再调用红外温度传感器获取行人温度,这种应用节约了人力成本减少了人员接触;在自动驾驶中,车辆识别交通信号、进行路径规划、避让车辆和行人,也都需要目标检测技术提供支持。目标检测技术在这些应用场景发挥着无可替代的作用,越来越多的科研人员也都聚焦于该领域。
3.随着深度学习在目标识别和检测领域的不断发展,继alexnet以来,vgg、 googlenet、resnet等网络向网络层数更深地方向发展,以寻求更好的检测精度。然而,在目前许多应用,如自动驾驶、疲劳检测、机器人等受限于集成设备与处理速度,模型压缩研究应运而生新的深度神经网络不断提出;相关研究人员运用增加卷积层数,增加卷积核的个数等方法来提取检测目标的深层次特征;尽管深度网络模型在许多问题中表现优越,但实际应用时受到了时间上和空间上的制约,大而深的网络模型运算量巨大,即使借助于图形处理器,也难以嵌入开发在计算资源和存储资源有限的设备上,时间上也难以满足日常生活中的许多场景需求;高性能的计算机生产及维护成本较高,不适合大量普及推广;例如传统的行人检测设备(比如摄像监控头)是将录制的视频上传到远程的大型服务器上进行数据处理,因受带宽和传输时延的影响,无法实时对目标行人进行有效的识别,于是在一些特殊的场合应用比较局限。
技术实现要素:4.针对现有技术存在的上述问题,本发明要解决的技术问题是:深度学习的目标检测算法在嵌入式系统中部署困难的问题。
5.为解决上述技术问题,本发明采用如下技术方案:一种基于改进yolov3的轻量化目标检测方法,包括如下步骤:
6.s1:采集包含待检测目标物的图像数据,使用labelimage工具对所有图像进行标注,即在每个图像上采用矩形框标注待检测目标物,将所有标注后的图像依据voc2012数据集格式制作得到训练集;
7.s2:构建改进的yolov3网络模型,包括如下两个部分的改进:
8.s21:对原始yolov3网络模型中的backbone进行改进得到初步改进的yolov3网络模型,具体如下:
9.对原始yolov3网络模型中的backbone进行剪枝处理,将原本的1-2-8-8-4残差结
构调整为1-2-3-3-2稀疏残差结构,并设置各个稀疏残差结构的长度因子;同时限制每个卷积层的卷积核个数不超过64个;
10.构建一条包含5个卷积层的卷积支路,将第一个卷积层的输出作为卷积支路的输入,并将卷积支路各层的输出按顺序分别与backbone的5个下采样层的输出进行拼接;
11.构建一条包含3个池化层的池化支路,将第1个残差结构的输出经过第1池化层处理与第1个稀疏残差结构的输出进行拼接,作为第3个下采样层和第2池化层的输入;将第2池化层的输出与第2个稀疏残差结构的输出进行拼接,作为第4个下采样层和第3池化层的输入;将第3池化层的输出与第3个稀疏残差结构的输出进行拼接,作为第5个下采样层的输入;
12.s22:对s21得到的初步改进的yolov3网络模型进行损失函数和后处理模块的改进得到最终改进的yolov3网络模型,具体如下:将s2得到的改进的yolov3网络模型的损失函数调整为ciou损失函数,将后处理模块中nms类型调整为diou-nms;
13.s3:对s22得到的最终改进的yolov3网络模型进行训练:
14.s31:采用k-means聚类算法对训练集中的标注待检测目标物的矩形框对应的高和宽进行聚类,获得需要的锚框尺寸初始值;
15.s32:利用训练集中的数据,采用神经网络进行梯度反向传播的方法对最终改进的yolov3 网络模型训练;
16.s4:将训练好的最终改进的yolov3网络模型载入到嵌入式设备中,向训练好的最终改进的yolov3网络模型输入待检测图像,训练好的最终改进的yolov3网络模型将检测到的目标物用外接矩形框标记并显示。
17.作为改进,所述s2中将原本的残差结构调整为稀疏残差结构的具体步骤如下:
18.当l=2时:所述l表示长度因子,即稀疏残差单元中输入层的个数;
19.y2=y0+f1(y0)+f2(f1(y0))
20.其中y0为稀疏残差模块的输入,f1(y0)和f2(f1(y0))为该稀疏残差模块中卷积层输出特征图,y2为该稀疏残差模块的输出;
21.当l=3时:
22.y3=y0+f1(y0)+f2(f1(y0))+f3(f2(f1(y0)))
23.其中y0为稀疏残差模块的输入,f1(y0)和f2(f1(y0))、f3(f2(f1(y0)))为该稀疏残差模块中卷积层输出特征图,y3为该稀疏残差模块的输出。
24.作为改进,所述s22得到最终改进的yolov3网络模型的改进过程为:将s2得到的改进的yolov3网络模型的损失函数调整为ciou损失函数,将后处理模块中nms类型调整为 diou-nms。
25.相对于现有技术,本发明至少具有如下优点:
26.本发明对传统yolov3算法进行轻量化改进,在保证其精度和实时性的同时,将模型大小减小到3.17mb,操作简单,易于实现,具有较高的实用性。经过voc2012数据集的测试,与现有的yolov3算法相比,在保证检测精度损失不超过5%的前提下,将模型的大小缩减了98.7%,具有优越的轻量性。
附图说明
27.图1为一种基于改进yolov3的轻量化目标检测方法的流程简图。
28.图2为本发明的算法模型结构图。
29.图3为实验效果对比。
30.图4为长度因子为2时的稀疏残差结构图。
31.图5为长度因子为3时的稀疏残差结构图。
32.图中,type:类型;filters:卷积核个数;size:卷积核尺寸;output:输出尺寸;convolutional:卷积层;residual:残差模块;maxpool:池化层;srn:稀疏残差模块;concatenate:连接层;convolutionalset:卷积集合;conv2d:二维卷积层。
具体实施方式
33.下面对本发明作进一步详细说明。
34.本发明设计了一种轻量化的卷积神经网络,使其能够嵌入开发在计算和存储能力有限的移动终端上,使其能够实时对图像目标进行有效的识别,将在一定程度上突破深度网络模型的应用局限,具有较为广阔的应用前景。
35.针对深度学习的目标检测算法在嵌入式系统中部署困难的问题,以及保证在实际应用场景下的检测精度和实时性,本发明对yolov3的backbone部分进行剪枝处理,以缩小算法模型的体积,并构建一条卷积支路和一条下采样支路,从而保证在模型的检测精度。
36.参见图1-5,一种基于改进yolov3的轻量化目标检测方法,包括如下步骤:
37.s1:采集包含待检测目标物的图像数据,使用labelimage工具对所有图像进行标注,即在每个图像上采用矩形框标注待检测目标物,将所有标注后的图像依据voc2012数据集格式制作得到训练集;
38.s2:构建改进的yolov3网络模型,包括如下两个部分的改进:
39.s21:对原始yolov3网络模型中的backbone进行改进得到初步改进的yolov3网络模型,具体如下:
40.对原始yolov3网络模型中的backbone进行剪枝处理,将原本的1-2-8-8-4残差结构调整为1-2-3-3-2稀疏残差结构,并设置各个稀疏残差结构的长度因子;同时限制每个卷积层的卷积核个数不超过64个;
41.构建一条包含5个卷积层的卷积支路,将第一个卷积层的输出作为卷积支路的输入,并将卷积支路各层的输出按顺序分别与backbone的5个下采样层的输出进行拼接;
42.构建一条包含3个池化层的池化支路,将第1个残差结构的输出经过第1池化层处理与第1个稀疏残差结构的输出进行拼接,作为第3个下采样层和第2池化层的输入;将第2池化层的输出与第2个稀疏残差结构的输出进行拼接,作为第4个下采样层和第3池化层的输入;将第3池化层的输出与第3个稀疏残差结构的输出进行拼接,作为第5个下采样层的输入。
43.精简网络结构能够减少模型的参数量,提升其轻量性;引入稀疏残差结构则能够增加特征多样性,同时对梯度反向传播有益;卷积支路能够在特征图传递过程中减少信息的损失,同时融合了特征图的深、浅层特征,也增强了网络结构的表征能力;池化支路使主干网络融合了浅层特征,增强了网络结构的表征能力,同时也起到了防止梯度弥散的作用。
44.s22:对s21得到的初步改进的yolov3网络模型进行损失函数和后处理模块的改进得到最终改进的yolov3网络模型;(yolov3中的后处理模块即通过nms非极大值抑制算法,将网络输出的预测框中的冗余部分删除),具体如下:将s2得到的改进的yolov3网络模型的损失函数调整为ciou损失,将nms类型调整为diounms。
45.由于yolov3中使用的iou损失函数仅在预测框与真实框之间有重叠部分的时候才生效,而对于非重叠的情形,iou损失函数既无法衡量两个边界框之间的距离,也不会提供任何可供传递的梯度。而且,iou指标具有尺度不变性,对图像的尺度变换(缩放、旋转等)并不敏感,无法精确反映边界框之间重合程度的大小。因此,使用ciou损失函数就是为了解决上述问题,ciou损失函数综合考虑了两个框之间的重叠面积、距离、尺度变化以及长宽比等几何因素,其对尺度变化敏感,同时不会在非重叠情况下失效。总的来说,使用ciou损失函数有效提升了检测精度。
46.而nms存在导致重叠目标被误删的问题,影响检测结果,通过diou-nms则能在一定程度上缓解该问题。
47.s3:对s22得到的最终改进的yolov3网络模型进行训练:
48.s31:采用k-means聚类算法对训练集中的标注待检测目标物的矩形框对应的高和宽进行聚类,获得需要的锚框尺寸初始值;锚框为特征图上每个像素预先设置的矩形框,yolov3 通过预先设置矩形框,通过不断调整矩形框的位置和大小,使得到的预测框不断逼近真实框。预先设置的锚框影响着预测框调整为真实框的难易程度,一般采用k-means聚类算法对数据集中标注好的真实目标框的宽高聚类得到。
49.s32:利用训练集中的数据,采用神经网络进行梯度反向传播的方法对最终改进的yolov3 网络模型训练。该训练过程为现有技术。
50.s4:将训练好的最终改进的yolov3网络模型载入到嵌入式设备中,向训练好的最终改进的yolov3网络模型输入待检测图像,训练好的最终改进的yolov3网络模型将检测到的目标物用外接矩形框标记并显示。
51.所述s2中将原本的残差结构调整为稀疏残差结构的具体步骤如下:
52.参见图4,当l=2时:所述l表示长度因子,即稀疏残差单元中输入层的个数;
53.y2=y0+f1(y0)+f2(f1(y0))
54.其中y0为稀疏残差模块的输入,f1(y0)和f2(f1(y0))为该稀疏残差模块中卷积层输出特征图,y2为该稀疏残差模块的输出。
55.参见图5,当l=3时:
56.y3=y0+f1(y0)+f2(f1(y0))+f3(f2(f1(y0)))
57.其中y0为稀疏残差模块的输入,f1(y0)和f2(f1(y0))、f3(f2(f1(y0)))为该稀疏残差模块中卷积层输出特征图,y3为该稀疏残差模块的输出。
58.具体的,所述s22得到最终改进的yolov3网络模型的改进过程为:将s2得到的改进的 yolov3网络模型的损失函数调整为ciou损失函数,将后处理模块中nms类型调整为diou-nms。
59.实验验证:
60.本发明选择pascal voc 2012数据集进行仿真测试。pascal voc 2012数据集包含20 个类别,共计17125张jpg格式图片,按照8:1:1的比例划分成训练集、验证集和测试集。
61.评价指标为检测精度map、模型大小。为了进一步验证本发明的有效性,将其与热门主流的目标检测算法进行了对比,它们分别如下:
62.yolov3:一种one-stage目标检测方法。
63.tiny-yolov3:对yolov3做剪枝处理后的算法。
64.mobilenetv3-yolov3:将mobilenetv3替换yolov3中的backbone部分得到的算法。
65.本发明提出的基于改进yolov3的轻量化目标检测方法称作lightweight yolov3。
66.使用pascal voc 2012数据集对上述的算法模型进行训练并进行测试验证,实验结果显示,在保证检测精度的前提下,相比yolov3算法将模型的大小缩减了98.7%,本发明在轻量性上明显优于其他算法,这表明本文提出的算法模型是有效的。
67.对比tinyyolov3算法(即yolov3算法的轻量化版本)可以看出,本文提出的算法无论是检测精度还是轻量性都明显更优;而与轻量化程度很高的mobilenetv3-yolov3算法相比,本文算法虽然在检测精度上优势不大,但模型更小,轻量性更好;最后与yolov3原版算法相比,虽然本文算法在检测精度上有一定落后,但在轻量性上有极大的领先,更容易进行低成本硬件平台的移植开发。
68.本发明方法与现有方法的效果对比如表1:
69.表1
70.[0071][0072]
对比tinyyolov3算法(即yolov3算法的轻量化版本)可以看出,本发明提出的算法无论是检测精度还是轻量性都明显更优;而与轻量化程度很高的mobilenetv3-yolov3算法相比,本文算法虽然在检测精度上优势不大,但模型更小,轻量性更好;最后与yolov3原版算法相比,虽然本文算法在检测精度上有一定落后,但在轻量性上有极大的领先,更容易进行低成本硬件平台的移植开发。
[0073]
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
技术特征:1.一种基于改进yolov3的轻量化目标检测方法,其特征在于:包括如下步骤:s1:采集包含待检测目标物的图像数据,使用labelimage工具对所有图像进行标注,即在每个图像上采用矩形框标注待检测目标物,将所有标注后的图像依据voc2012数据集格式制作得到训练集;s2:构建改进的yolov3网络模型,包括如下两个部分的改进:s21:对原始yolov3网络模型中的backbone进行改进得到初步改进的yolov3网络模型,具体如下:对原始yolov3网络模型中的backbone进行剪枝处理,将原本的1-2-8-8-4残差结构调整为1-2-3-3-2稀疏残差结构,并设置各个稀疏残差结构的长度因子;同时限制每个卷积层的卷积核个数不超过64个;构建一条包含5个卷积层的卷积支路,将第一个卷积层的输出作为卷积支路的输入,并将卷积支路各层的输出按顺序分别与backbone的5个下采样层的输出进行拼接;构建一条包含3个池化层的池化支路,将第1个残差结构的输出经过第1池化层处理与第1个稀疏残差结构的输出进行拼接,作为第3个下采样层和第2池化层的输入;将第2池化层的输出与第2个稀疏残差结构的输出进行拼接,作为第4个下采样层和第3池化层的输入;将第3池化层的输出与第3个稀疏残差结构的输出进行拼接,作为第5个下采样层的输入;s22:对s21得到的初步改进的yolov3网络模型进行损失函数和后处理模块的改进得到最终改进的yolov3网络模型;s3:对s22得到的最终改进的yolov3网络模型进行训练:s31:采用k-means聚类算法对训练集中的标注待检测目标物的矩形框对应的高和宽进行聚类,获得需要的锚框尺寸初始值;s32:利用训练集中的数据,采用神经网络进行梯度反向传播的方法对最终改进的yolov3网络模型训练;s4:将训练好的最终改进的yolov3网络模型载入到嵌入式设备中,向训练好的最终改进的yolov3网络模型输入待检测图像,训练好的最终改进的yolov3网络模型将检测到的目标物用外接矩形框标记并显示。2.如权利要求1所述的基于改进yolov3的轻量化目标检测方法,其特征在于:所述s2中将原本的残差结构调整为稀疏残差结构的具体步骤如下当l=2时:所述l表示长度因子,即稀疏残差单元中输入层的个数;y2=y0+f1(y0)+f2(f1(y0))其中y0为稀疏残差模块的输入,f1(y0)和f2(f1(y0))为该稀疏残差模块中卷积层输出特征图,y2为该稀疏残差模块的输出;当l=3时:y3=y0+f1(y0)+f2(f1(y0))+f3(f2(f1(y0)))其中y0为稀疏残差模块的输入,f1(y0)和f2(f1(y0))、f3(f2(f1(y0)))为该稀疏残差模块中卷积层输出特征图,y3为该稀疏残差模块的输出。3.如权利要求2所述的基于改进yolov3的轻量化目标检测方法,其特征在于:所述s22得到最终改进的yolov3网络模型的改进过程为:将s2得到的改进的yolov3网络模型的损失函数调整为ciou损失函数,将后处理模块中nms类型调整为diou-nms。
技术总结本发明涉及一种基于改进YOLOv3的轻量化目标检测方法,该方法包括S1采集包含待检测目标物的图像数据,依据VOC2012数据集格式制作得到训练集,S2对原始YOLOv3网络模型的backbone进行改进,S3对改进的YOLOv3网络模型进行训练,S4向训练好的最终改进的YOLOv3网络模型输入待检测图像,输出目标物用外接矩形框标记并显示。本发明对传统YOLOv3算法进行轻量化改进,在保证其精度和实时性的同时,将模型大小减小到3.17MB,操作简单,易于实现,具有较高的实用性。高的实用性。高的实用性。
技术研发人员:宋永端 沈志熙 徐赞林 李韵聪
受保护的技术使用者:重庆大学
技术研发日:2022.03.22
技术公布日:2022/7/5