基于改进YOLOv5 的小目标检测算法

2022-03-30 04:18王邱龙
电子科技大学学报 2022年2期
关键词:预测图像特征

郭 磊,王邱龙,薛 伟,郭 济

(1. 电子科技大学计算机科学与工程学院 成都 611731;2. 新疆大学信息科学与工程学院 乌鲁木齐 830000;3. 西藏民族大学财经学院 陕西 咸阳 712082)

随着人工智能理论和深度学习技术的深入研究,作为计算机视觉领域核心问题之一的目标检测技术也取得了较大进展,已被应用于人脸检测[1]、智慧医疗[2-3]、行人检测[4]、活动识别[5]等。目标检测是利用图像处理、深度学习等技术,从图像或视频中定位感兴趣的对象,通过目标分类判断输入图像中是否包含目标,用目标定位找出目标物体位置并框出目标,其任务是锁定图像中的目标,定位目标位置、确定目标类别。作为图像及视频理解的基石,目标检测是解决图片分割、目标跟踪、图像描述、事件检测和场景理解等更高层次视觉任务的基础。

小目标检测长期以来是目标检测中的重点和难点之一。由于小目标具有图像覆盖面积较少、分辨率不足、位置缺乏准确性、特征表达不充分的特点,因而相对于常规目标小目标检测更困难。目标检测中对小目标的定义通常有两种:1)国际光学工程学会对小目标的定义,将256×256 像素的图像中成像点小于80 个像素点(即目标所占的像素点数与原图总像素点数的比例小于0.12%)的目标定义为小目标;2)根据具体的数据集对小目标进行定义,如在COCO 数据集[6]中,将尺寸小于32×32 像素的目标定义为小目标;文献[7] 在其交通标志数据集中,将宽度占整个图像比例小于20%的目标定义为小目标。一般而言,常规目标特征表达充分,位置准确明了,而小目标的分辨率相对较低,特征表达会相对缺乏。

1 相关工作

传统的目标检测算法通常由人工提取目标的特征,检测精度低、效果不好。随着深度学习的发展和硬件设备算力的提升,基于深度学习的卷积神经网络(convolutional neural network, CNN)[8]崭露头角,人们开始利用卷积神经网络自动提取图像中的特征并将其应用在目标检测中,极大地提升了目标检测效果。目前最通用的两个方法是以R-CNN(region-based CNN)系列为代表的基于候选框的两阶段深度学习算法和以YOLO(you only look once)系列为代表的基于回归的单阶段深度学习目标检测算法。

R-CNN 模型[9]使用CNN 提取的特征替代传统视觉特征,并采用大样本的有监督预训练与小样本微调的方式解决模型的过拟合问题,使得模型的检测性能有了较大的提升,但R-CNN 需对每个候选区域的CNN 特征进行大量重复计算。SPP-Net 网络[10]能产生固定大小的输出,而与输入图像大小无关;由于输入尺寸的灵活性,使得SPP-Net 能够提取多个尺度下的特征,且一张图片中候选区域的CNN 特征只需要计算一次,在很大程度上能够节省计算资源。在SPP-Net 的基础上,文献[11-12]先后提出Fast R-CNN 和Faster R-CNN 模型。从RCNN 模型发展到Fast R-CNN 模型,进一步发展到Faster R-CNN 模型,检测速度不断提高,检测精度也不断增强,但与单阶段目标检测算法在检测速度上相比,仍具有一定差距。

YOLO 系列算法和单点多盒检测器(single shot multibox detector, SSD)是典型的单阶段目标检测算法。文献[13] 提出了第一个单阶段目标检测算法YOLO,与YOLO 最后采用全连接层提取检测结果不同,SSD[14]使用不同尺度的特征图来做检测,并直接使用卷积提取检测结果。文献[15-16] 在YOLOv1 的基础上继续改进,又提出了YOLOv2和YOLOv3 检测算法,其中YOLOv2 进行了多种尝试,使用了批标准化(batch normalization, BN)技术,引入了锚框机制;YOLOv3 采用darknet-53 作为骨干网络,并且使用了3 种不同大小的锚框,在逻辑分类器中使用sigmoid 函数把输出约束在0~1 之间,使得YOLOv3 拥有更快的推理速度。文献[17] 在传统的YOLO 基础上,加入了一些实用的技巧,提出了YOLOv4 算法,将BackBone 骨干网络中的ReLU 激活函数改为Mish 激活函数,与ReLU 相比,Mish 函数图像更加平滑,实现了检测速度和精度的最佳权衡。从YOLOv1 至今,YOLO 系列已经发展到了YOLOv5,YOLOv5 融合了先前版本的优点,在检测速度和精度上都更胜一筹,在某种程度上YOLOv5 已经成为YOLO 系列算法中的SOTA(State Of The Art)。

YOLOv5 是一个高性能、通用的目标检测模型,能一次性完成目标定位与目标分类两个任务,因此选择YOLOv5 作为目标检测的基本骨架是可行的。但是为了实现一些场景下对小目标的独特性检测,就需要对YOLOv5 的网络结构进行相应的调整和改进。

2 改进的YOLOv5 算法

本文在YOLOv5 网络的基础上进行改进,改进后的整体的网络结构如图1 所示,通过新增尺寸为输入图像尺寸四分之一的特征图来提升对小目标特征的挖掘,采用多尺度反馈以引入全局上下文信息来提升对图像中小目标的识别能力。损失函数使用CIOU[18],从重叠面积、中心点距离、长宽比3 个方面更好地描述目标框的回归。在原始YOLOv5的基础上使用Mosaic-8 数据增强,修改目标框回归的公式,提高模型的收敛精度。下面分别从Mosaic-8 数据增强、特征提取器、损失函数和目标框回归4 个方面进行详细介绍。

图1 整体网络结构

2.1 Mosaic-8 数据增强

要获得一个表现良好的神经网络模型,往往需要大量的数据作支撑,然而获取新的数据这项工作往往需要花费大量的时间与人工成本,因此数据增强应运而生。使用数据增强技术,可以充分利用计算机来生成数据,增加数据量,如采用缩放、平移、旋转、色彩变换等方法增强数据,数据增强的好处是能够增加训练样本的数量,同时添加合适的噪声数据,能够提高模型的泛化力。

在YOLOv5 中除了使用最基本的数据增强方法外,还使用了Mosaic 数据增强方法,其主要思想就是将4 张图片进行随机裁剪、缩放后,再随机排列拼接形成一张图片,实现丰富数据集的同时,增加了小样本目标,提升网络的训练速度。在进行归一化操作时会一次性计算4 张图片的数据,因此模型对内存的需求降低。Mosaic 数据增强的流程如图2 所示。本文受Mosaic 思想的启发,采用Mosaic 方法的增强版——Mosaic-8,即采用8 张图片随机裁剪、随机排列、随机缩放,然后组合成一张图片,以此来增加样本的数据量,同时合理引入一些随机噪声,增强网络模型对图像中小目标样本的区分力,提升模型的泛化力,其细节如图3 所示。

图2 Mosaic 数据增强流程

图3 Mosaic-8 数据增强细节

2.2 特征提取器

在原始YOLOv5 骨干网络中,使用3 种不同尺寸的特征图来检测不同大小的目标,如图4 所示,该网络将原始输入图像通过8 倍下采样、16 倍下采样、32 倍下采样得到3 种不同尺寸大小的特征图,将其输入到特征融合网络中。根据特征金字塔网络(feature pyramid network, FPN)[19]的思想可以看出,经过深层次卷积后的特征图虽然拥有丰富的语义信息,但在多次卷积的过程中会丢失掉目标的一些位置信息,不利于小目标的检测;而浅层卷积后得到的特征图语义信息虽然不够丰富,但目标的位置信息却比较精确。

图4 原始YOLOv5 特征提取模型

在密集人群的条件下,大部分人脸检测目标占整幅图像的比例较小。因此,本文在YOLOv5 骨干网络的基础上对原始输入图片增加一个4 倍下采样的过程,如图5 所示。原始图片经过4 倍下采样后送入到特征融合网络得到新尺寸的特征图,该特征图感受野较小,位置信息相对丰富,可以提升检测小目标的检测效果。在卷积神经网络中,经过不同的卷积层得到的特征图包含不同的目标特征信息。浅层卷积后得到的特征图分辨率较高,目标位置信息相对丰富,但语义信息不明显;深层卷积后得到的特征图分辨率低,语义信息丰富,但丢失了较多的目标位置信息。因此,浅层特征图能区分较为简单的目标,深层特征图能区分复杂的目标,将浅层特征图与深层特征图进行信息融合更有利于目标的区分。如图6所示,将特征金字塔网络与路径聚合网络(path aggregation network, PAN)[20]相结合,特征金字塔网络自顶向下传递深层次语义特征,路径聚合网络自底向上传递目标的位置信息,通过自顶向下和自底向上的特征信息融合有利于模型更好地学习特征,增强模型对小目标的敏感度。

图5 改进后的特征提取模型

图6 改进后的特征融合网络

2.3 损失函数

原始YOLOv5 损失函数如式(1)所示,由定位损失、置信度损失和类别损失3 部分构成。其中置信度损失和类别损失采用二元交叉熵损失函数进行计算:

图7 预测框P 与真实框GT

原始YOLOv5 中使用GIoU[21]来计算定位损失:与原始IoU 不同,GIoU 不仅关注真实框与预测框之间的重叠面积,还关注其他的非重叠区域,因此GIoU 相较于原始IoU 能更好的反应两者之间的重合度,但GIoU 始终只考虑真实框与预测框之间的重叠率这一个因素,不能很好地描述目标框的回归问题。如图8 所示,当预测框在真实框内部时,且预测框的大小相同时,此时GIoU 会退化为IoU,无法区分各个预测框之间的位置关系。

图8 GIoU 退化为IoU 示例

本文选择CIoU 替代GIoU 作为目标框回归的损失函数,其计算式为:

式中, α是一个平衡参数,不参与梯度计算;v是用来衡量长宽比一致性的参数。CIoU 综合考虑了真实框与预测框之间的重叠率、中心点距离、长宽比,使得目标框回归过程中更加稳定,收敛的精度更高。

2.4 目标框回归

目标框回归的目的是要寻找某种映射关系,使得候选目标框(region proposal)的映射无限接近于真实目标框(ground truth)。对真实目标框的预测是采用相对位置的方式回归出目标框相对于某个网格左上角的相对坐标。先验框与预测框的关系如图9所示,其中,虚线框表示先验框,实线框表示预测框。预测框通过先验框平移缩放得到。将原始图片根据特征图尺寸划分成S×S个网格单元,每个网格单元会预测3 个预测框,每个预测框包含4 个坐标信息和1 个置信度信息。当真实框中某个目标中心坐标落在某个网格中时,就由该网格预测这个目标。

图9 目标框回归原理图

目标框的坐标预测计算公式为:

式中,tx、ty、tw、th为偏移; σ表示Sigmoid 激活函数,用于将网络预测值tx、ty、tw、th映射到[0,1]之间;cx、cy是单元网格中相对于图片左上角的偏移量;pw、ph是先验框宽高;bx、by和宽高bw、bh为预测目标框的中心坐标;σ(to)是预测框的置信度,由预测框的概率和预测框与真实框的IoU 值相乘得到。对σ(to)设定阈值,过滤掉置信度较低的预测框,然后再对剩下的预测框用非极大值抑制算法(non-maximum suppression, NMS)[22]得到最终的预测框。

在最小的特征图上,由于其感受野最大,故应该用其来检测大目标,所以大尺度的特征图应该应用小尺寸的先验框,小尺寸的特征图应该应用大尺度的先验框来进行预测框的回归。本文采用4 尺度检测结构,4 个尺度的特征图大小与先验框尺寸的对应关系如表1 所示。

表1 特征图大小与先验框尺寸对应关系

3 实验与结果分析

将改进后的算法应用在密集人群的防护面具佩戴场景下,并与文献[23] 提出的算法、AIZOO 算法(https://github.com/aky15/AIZOO_torch) 和原始YOLOv5 算法进行对比实验。防护面具主要包括医疗口罩、电焊面具、钢化玻璃面罩等,本文主要以医疗口罩(以下简称口罩) 为研究对象进行识别。由于密集人群条件下往往人物众多,且容易出现人与人之间相互遮挡的现象,检测难度大,且单个人员的口罩占整幅图像的比例远远小于20%,因此可以将其作为小目标对待。

3.1 数据集

本文数据集来源于WIDER FACE、MAPA(Masked Faces) 这两个公开数据集和网络,从中手动筛选出密集人群场景下的佩戴口罩和未佩戴口罩的图片,最终得到训练集4 000 张,测试集1 320张,共计5 320 张。

利用标记软件LabelImg 对数据集进行YOLO格式的标注,共有两个标记类别,分别是bad(未佩戴口罩) 和good(佩戴口罩)。标注完成后,每一张图片都对应着一个与该图片名称相同的txt 文件,txt 文件中的每一行表示一个标记实例,共5 列,从左到右分别表示标签类别、标记框中心横坐标与图片宽度的比值、标记框中心纵坐标与图片高度的比值、标记框宽度与图片宽度的比值、标记框高度与图片高度的比值。

3.2 实验环境与模型训练

实验环境使用Ubuntu20.04 操作系统,使用GeForce GTX 1080Ti 显卡进行运算,显存大小为11 GB,CPU 配置为Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz,CUDA 版本为11.4.0,Pytorch 版本为1.9.0,Python 语言环境为3.7.4。

本实验总迭代次数为140 次,迭代批量大小设置为32,优化器选择SGD。模型训练时学习率使用Warmup[24]训练预热,减缓模型在初始阶段对小批量数据的过拟合现象,避免模型振荡以便保证模型深层次的稳定性。在Warmup 阶段,偏置层的学习率由0.1 下降至0.01,其他的参数学习率由0 增加至0.01,Warmup 结束之后,采用余弦退火学习算法[25]对学习率进行更新。

3.3 评估指标与实验结果分析

本文评估指标采用平均精度(average precision,AP)、平均精度均值(mean AP, mAP)以及每秒检测图片的帧数(frames per second, FPS)这3 种在目标检测算法中较为常见的评价指标来评估本文算法的性能。平均精度与精确率(precision) 和召回率(recall)有关,精确率是指预测数据集中预测正确的正样本个数除以被模型预测为正样本的个数;召回率是指预测数据集中预测正确的正样本个数除以实际为正样本的个数。上述衡量指标的计算公式分别为:

式中,AP 值是指P-R 曲线面积,本文采用插值计算的方法来计算式(11)中的积分;mAP 的值是通过所有类别的AP 求均值得到;N表示检测的类别总数,本实验中N=2,mAP 的值越大,表示算法检测效果越好,识别精度越高;TP、FP 和FN 分别表示正确检测框、误检框和漏检框的数量。

在训练140 个迭代周期过程中,平均精度均值、精确率和召回率的变化曲线如图10 所示。可以看出,模型在训练的过程中,在Warmup 阶段结束后的几个迭代周期中,平均精度均值、精确率和召回率有些许下降,随后随着余弦退火算法对学习率的调整,模型逐渐达到收敛状态。

图10 模型在数据集上的训练过程

为进一步验证本文算法的有效性,将本文算法与文献[23] 方法、AIZOO 方法、原始YOLOv5 算法在同一测试集上进行测试,各项性能指标比较结果如表2 所示。

表2 不同算法性能对比结果

从表2 中可以看出,相较于文献[23] 方法、AIZOO 方法和原始YOLOv5 算法,本文算法在密集人群场景下对口罩这个小目标的检测表现效果更好,mAP 值可以达到94.88%,在原始YOLOv5 的基础上,bad 和good 类别的AP 值分别提高了3.72%和5.38%,mAP 值提高了4.55%。本文算法在检测速率上不及其他算法,FPS 为30.3,与原始YOLOv5相比,FPS 下降了11.3,检测单张图片的时间增加了9 ms,由于实时检测一般要求检测帧率大于25 帧/s,故本文算法仍能满足实时性要求。本文算法与文献[23] 方法、AIZOO 方法、原始YOLOv5算法进行对比的检测效果如图12 所示。

从图11 中可以看出,文献[23] 方法在小目标异常角度、人脸区域有遮挡的条件下表现较差;AIZOO 方法在检测效果上整体表现稍好于文献[23]方法,单帧检测时间最少,FPS 最高;原始YOLOv5算法相较于前两种方法表现相对较好,但在一些小目标和存在遮挡条件下仍存在误判或者漏检的情况;与其他算法相比,本文算法在密集人群口罩佩戴检测效果中表现突出,检测精度有明显上升,误检、漏检现象明显减少,对小目标异常角度、人脸区域存在遮挡的鲁棒性明显提升。

图11 检测效果对比图

4 结 束 语

本文在原有YOLOv5 算法的基础上,分别从Mosaic 数据增强、特征提取器、损失函数和目标框回归4 个方面进行改进,有效地增强了YOLOv5网络模型对小目标物体的检测精度,改进后的算法检测速率相较于原始YOLOv5 算法有所降低,但仍能满足实时性要求,可以直接应用在医学图像、遥感图像分析和红外图像中的小目标检测等实际场景中。

猜你喜欢
预测图像特征
无可预测
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
选修2—2期中考试预测卷(A卷)
离散型随机变量的分布列与数字特征
摄像头连接器可提供360°视角图像
浅析p-V图像中的两个疑难问题
抓特征解方程组
不忠诚的四个特征
名人语录的极简图像表达