一种基于YOLOv4的航拍小汽车检测方法
文献发布时间:2023-06-19 10:38:35
技术领域
本发明涉及一种基于YOLOv4的航拍小汽车检测方法,属于目标检测技术领域。
背景技术
在无人机图像处理领域中,目标检测是时下最热门的方向之一,针对无人机图像小目标、数量多、自然环境复杂以及目标易被遮挡等特点,给无人机航拍图像目标检测技术提出了更高的要求,传统的目标检测算法是通过图像预处理、滑窗进行特征提取、使用分类器进行分类,然后再进行特征匹配和定位等步骤完成的,这种方法虽然具有一定的准确性,但是需要耗费一定的时间以及人力资源。随着基于深度学习的目标检测算法的快速发展,越来越多的目标检测模型被提出,深度学习下的目标检测算法可以通过卷积神经网络对输入的图像直接进行特征提取,并通过深层神经网络模型的学习直接回归输出结果,实现了端到端的目标检测。YOLOv4就是基于这种端到端的检测模型,具有非常高的实时性和不错的检测精度。YOLOv4有多尺度的检测锚框,可以对大中小三种类型的目标进行检测,基本满足无人机航拍图像小目标的检测要求。但是由于YOLOv4是将CSPDarknet53、SPP、PANet、YOLOv3等网络结构融合在一起组成的网络结构模型,导致其网络结构深度很深,训练模型也比较厚重,占用空间内存大。
发明内容
本发明所要解决的技术问题是:提供一种基于YOLOv4的航拍小汽车检测方法,解决了YOLOv4训练模型占用空间大的问题,同时提高了航拍图像小目标的检测精度。
本发明为解决上述技术问题采用以下技术方案:
一种基于YOLOv4的航拍小汽车检测方法,包括如下步骤:
步骤1,获取无人机航拍图像数据集,对航拍图像中的小汽车进行标注,并将格式转换为YOLO格式;将数据集分为训练样本和验证样本;
步骤2,对YOLOv4模型的参数进行初始化,所述参数包括输入图像尺寸、初始学习率、yolo层类别种类以及yolo前一层卷积核的深度,并使用学习率余弦退火策略降低初始学习率;
步骤3,采用预训练权重对步骤1的数据集进行基础训练,得到基础训练后的模型,所述预训练权重根据darknet版本的YOLOv4模型对coco数据集训练得到;
步骤4,对基础训练后的模型进行L1损失稀疏训练,得到稀疏训练后的模型;
步骤5,采用silm-yolo极限通道剪枝策略对稀疏训练后的模型进行剪枝,得到剪枝后的模型;
步骤6,对剪枝后的模型进行微调,得到训练好的YOLOv4模型;
步骤7,采用训练好的YOLOv4模型对航拍图像进行测试,得到航拍小汽车检测结果。
作为本发明的一种优选方案,所述步骤1的具体过程如下:
步骤11,选取开源航拍图像数据集,将数据集整理为VOCdevkit格式;
步骤12,对数据集中的小汽车进行标注,并将标注格式转换为YOLO格式;
步骤13,将数据集按照9:1的比例分为训练样本和验证样本。
作为本发明的一种优选方案,步骤2所述使用学习率余弦退火策略的计算公式为:
其中,L表示学习率,i表示第i次训练,
作为本发明的一种优选方案,所述步骤3的具体过程如下:
步骤31,采用darknet版本的YOLOv4模型对coco数据集训练,得到预训练权重;
步骤32,对于步骤1的数据集,采用mosiac数据增强策略对每四张图像进行缩放和随机裁剪,再将四张图像拼接在一起,组成训练图像,训练图像的大小为输入图像尺寸;
步骤33,采用训练图像进行基础训练,将训练图像输入YOLOv4网络模型中,通过CSPDarknet、SPP以及PANet进行特征提取和融合,并生成一系列卷积特征图,YOLOv4网络模型包括第一至第三yolo层,卷积特征图分别在8、16、32倍降采样后在第一yolo层生成大小为52*52*18的一维向量,在第二yolo层生成大小为26*26*18的一维向量,在第三yolo层生成大小为13*13*18的一维向量,每个yolo层有3个预测框,每个预测框回归置信度、位置和类别信息,根据预测框的置信度通过DIoU-NMS选择最终预测框;
步骤34,观察总损失图,当总损失收敛或者达到最大迭代次数时,停止训练,得到基础训练后的模型。
作为本发明的一种优选方案,所述步骤4的具体过程如下:
步骤41,利用BN层的稀疏因子来衡量通道的重要性,设置稀疏因子的值为0.005,对通道进行筛选;
步骤42,使用经步骤41筛选后剩下的通道进行运算,得到稀疏训练后的模型。
作为本发明的一种优选方案,所述稀疏训练的目标函数为:
J=F
其中,J为目标函数,F
作为本发明的一种优选方案,步骤5所述剪枝中,设置全局阈值即剪枝率为0.8,局部安全阈值为0.01,对卷积层进行压缩剪枝,得到剪枝后的模型。
作为本发明的一种优选方案,步骤6所述微调中,增加500张训练样本来增加模型泛化能力,并且应用图像随机尺度进行训练。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
本发明解决了航拍图像小目标检测困难的问题,在原darknet版YOLOv4训练的自己的数据集模型的基础上压缩了目标检测模型,减少了参量数,缩短了推理时间,并且通过微调提高了检测精度,能够更好的在嵌入式系统上对航拍小汽车进行检测。
附图说明
图1是本发明一种基于YOLOv4的航拍小汽车检测方法的流程图。
图2是本发明中YOLOv4模型网络结构图。
图3是本发明剪枝后模型网络结构图。
图4(a)-图4(e)分别是模型训练的平均精确度、准确率、类别损失、位置损失以及置信度损失图。
图5是原模型与压缩后模型对比图。
图6是原模型检测航拍小汽车的结果图。
图7是压缩后模型检测航拍小汽车的结果图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
如图1所示,本发明提出一种基于YOLOv4的航拍小汽车检测方法,具体步骤如下:
(1)制作无人机航拍数据集,对其中小汽车进行标注,将标注格式转换为YOLO格式。
(2)根据步骤(1)定义的数据集配置模型参数。
(3)选择darknet版本的YOLOv4对coco数据集训练好的预训练权重,将步骤(1)的数据集传入YOLOv4网络模型中进行基础训练,直至达到迭代次数或者收敛,得到基础训练后的模型。
(4)对步骤(3)基础训练后的模型进行L1损失稀疏训练,直至达到迭代次数或者收敛,得到稀疏训练后的模型。
(5)对步骤(4)稀疏训练后的模型进行slim-YOLO通道剪枝,剪枝率设为80%,得到剪枝后的模型。
(6)使用步骤(5)剪枝后的模型进行微调,获得精度回升的YOLOv4模型。
(7)使用步骤(6)微调后得到的YOLOv4模型,对航拍图像中的小汽车进行目标检测,并显示检测结果。
下面结合一实施例进行说明。
(1)制作基础训练所需航拍数据集并且进行标注:
a1、选取2000张航拍图像数据集,其中包括各种场景下的小汽车图像,并带有一定数量的空样本,按照9:1的比例设置训练样本和验证样本,将数据集整理为VOCdevkit形式;
a2、对数据集中的小汽车进行标注,并将格式转换为YOLO格式,如下表:
其中,坐标都是经过归一化处理的,以减少计算量。保留训练所需的原图像文件和图像标注文件。
(2)根据自定义数据集修改配置参数:
b1、根据训练要求和显卡性能约束,将输入图像尺寸固定为461*416,初始学习率设为0.00261,并使用学习率余弦退火的策略随着迭代次数按照余弦函数的形式降低学习率,在一个周期内从最大降到最小,周而复始。学习率决定着权值更新的速度,设置过高可能会使结果越过最优解,设置过小会使得损失下载速度过慢。修改yolo层类别种类为1,并相应修改yolo前一层convolutional卷积核的深度为18;
学习率余弦退火的公式为:
其中,L表示当前学习率大小,i表示第i次运行,
b2、数据集类别文件中写入检测类别car。
(3)采用darknet版本的YOLOv4对coco数据集训练好的预训练权重,再利用步骤1的训练样本对YOLOv4网络模型进行基础训练,得到基础训练后的模型。图2所示为YOLOv4模型网络结构图。
c1、采用darknet版本的YOLOv4对coco数据集训练好的预训练权重;
c2、使用mosiac数据增强策略对数据集中的每四张图像进行缩放和随机裁剪,并按照四个方向位置放好再拼接在一起,组成训练图像;
c3、将预处理好的训练图像输入至预训练模型中,通过CSPDarknet、SPP以及PANet进行特征提取和融合,并生成一系列卷积特征图,卷积特征图分别在8、16、32倍降采样后在三个yolo层生成大小为52*52*18,26*26*18,13*13*18的一维向量,每个yolo层有3个预测边界框,每个预测边界框回归置信度,位置和类别信息,然后根据预测框的置信度分数通过DIoU-NMS选择最终预测框;由于训练类别为1,因此类别损失为0;
c4、观察总损失图,当总损失收敛或者达到最大迭代次数时,停止训练,得到基础训练后的模型。
(4)对基础训练后的模型进行稀疏训练:
d1、利用BN层的稀疏因子,在训练过程中来衡量通道的重要性,并得到各个通道的尺度因子然后进行排序,删除尺度因子小的通道。设置稀疏因子的值为0.005;
d2、使用未删除的通道进行训练运算,得到稀疏训练后的模型。
稀疏训练的目标函数为:
J=F
其中,J为目标函数,F
(5)对稀疏训练后的模型进行通道剪枝:
使用slim-yolo极限通道剪枝的策略,设置全局阈值(剪枝率)为0.8,局部安全阈值为0.01,全局阈值控制剪枝率,局部安全阈值防止过度剪枝和保证网络连接的完整性。在剪枝过程中,首先根据全局阈值和局部安全阈值为所有convolutional层构造一个剪枝掩码,并使用80%的剪枝率进行剪枝,对于route层,将其传入层的剪枝掩码按顺序串联起来,并将串联起来的掩码作为route层的剪枝掩码。YOLOv4中的shortcut层起到的作用类似于残差网络。因此,所有与shortcut层有连接的层都需要有相同的通道号码。为了匹配通过shortcut层连接的每一层的特征通道,对所有连接层的剪枝掩码进行迭代,并对这些连接层剪枝掩码执行或操作生成最终的剪枝掩码,图3所示为剪枝后模型网络结构图。
(6)对剪枝后的模型进行微调:
对修剪后的模型执行微调操作,以补偿潜在的临时退化现象。微调时增加了500张对小汽车进行标注了的航拍图像数据集,以增加模型泛化能力,应用图像随机尺度进行训练,随机尺度范围为[320,640],微调后得到精度回升的模型,训练过程中平均精确度(mAP_0.5)和准确率(precision)如图4(a)和图4(b)所示,类别损失(cls_loss)、位置损失(giou_loss)以及置信度损失(obj_loss)如图4(c)、图4(d)和图4(e)所示。最终模型大小相较基础训练的模型减小了四分之一。具体对比图如图5所示。
(7)使用压缩后的模型检测航拍图像的小汽车:
对不同场景下的航拍图像进行检测,压缩后模型检测小汽车的准确度和精度为59.47%和57.06%,相比基础训练模型提升了2.41%和1.06%,压缩后的模型在保证精度和准确度基本不变的前提下使模型压缩了四分之一,也基本克服了无人机航拍图像小目标不好检测的困难。如图6和7所示,压缩前的模型虽然预测框更加完整,但是错误的检测了一辆小货车,压缩后的模型预测框较小,但是准确度更高。可见检测模型基本克服了无人机航拍图像小目标不好检测的困难,具有一定的准确性和鲁棒性。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
- 一种基于YOLOv4的航拍小汽车检测方法
- 一种基于改进YOLOv4的公路路面病害检测方法