改进的YOLOv3安检包裹中危险品检测算法

2021-01-15 08:22卢官有顾正弘
计算机应用与软件 2021年1期
关键词:尺度边界预测

卢官有 顾正弘

(扬州大学信息工程学院 江苏 扬州 225127)

0 引 言

近年来,随着经济和电商行业的迅速崛起,物流货物流通量急剧增长,同时也加大了物流货物安检工作量。现有的X射线安检机只能检测出物质的类别,包裹中是否携带危险品还需安检工作人员进行肉眼观察识别,这种安检方式检测效率低,而且人工成本高,适应不了当前的安检需求。因此,利用计算机视觉及图像识别技术来辅助安检人员完成安检工作是未来的发展趋势[1]。

随着深度学习和计算机视觉技术的不断发展,越来越多的目标检测算法被提出。目前基于深度神经网络且应用比较广泛的目标检测算法可以分为两类:第一类是基于区域建议框的深度学习目标检测算法,如R-CNN[2]算法、Faster R-CNN[3]算法、Mask R-CNN[4]算法等。这些算法将目标检测任务分为两阶段:第一阶段是用区域候选网络来提取候选目标信息,第二阶段是利用检测网络完成对候选目标的位置和类别的预测和识别。第二类是基于回归的深度学习目标检测算法,如SSD[5]算法、YOLO[6]算法、YOLOv2[7]算法、YOLOv3[8]算法等。这些算法不需要使用区域候选网络来提取候选目标,即给定一幅输入图像,直接在图像中的多个位置进行回归运算,预测出这些位置附近可能存在的目标位置和类别,是一种端到端的目标检测算法,具有更快的检测速度。其中YOLOv3兼顾了速度和平均精度均值(mAP),是目前比较优秀的目标检测算法。

为了实现物流货物中危险品的实时检测,本文以YOLOv3网络模型为基础进行研究和改进,利用阿里天池数据竞赛平台的“津南数字制造算法挑战赛——赛场二:物流货物限制品监测”的数据集进行训练模型。通过改进YOLOv3的预测边界框(bounding box)来提升检测速度。为弥补数据集样本量较少的问题,采用了数据增强的方法。本文训练时采用了多尺度输入的策略,增强了模型检测不同尺度图像时的鲁棒性,此外尝试研究和改进YOLOv3算法,用于检测安检过程中的包裹是否包含有危险品及其大致位置。本文实现了自动化和智能化地辅助安检工作人员完成安检工作,同时也实现了低漏检率和安检工作的高效率。本文是一次未来物流及安防行业的有益尝试,对行业未来发展有着重要的价值。

1 YOLOv3算法

YOLOv3网络是从YOLO和YOLOv2网络发展而来的。与Faster R-CNN网络相比,YOLO网络将检测问题转化为回归问题,不需要提议区域,直接通过回归生成每个类的边界框坐标和概率,大大提高了检测速度。由于其内部网络结构,YOLOv3算法在小目标识别问题上具有突出的优势。本节重点介绍YOLOv3算法设计思想及其预测边界框的原理和YOLOv3网络结构。

1.1 设计思想

YOLOv3的核心思想是将整幅图片经过神经网络直接输出边界框位置信息和类别信息[9]。首先特征提取网络从输入图像中提取特征以获得特定大小的特征图(feature map),然后将输入图像分成S×S个网格(grid cell),如果某真实主体中心落在某个格子中,那么这个格子就负责检测这个主体。然后这个格子一般会预测N个边界框,每个边界框除了包括位置信息,还有一个置信度(Confidence)。这个格子利用Pr(Object)×IOU表达了有没有主体和边界框准确率两种信息,其中Pr(Object)为1时表示有物体,Pr(Object)为0表示没有物体,IOU为预测的边界框与真实的标注框之间的IOU值,当然只有IOU最大的边界框才是用来预测该Object。对于每个类别做logister操作,假如有K个主体类别,那么YOLOv3的输出就是S×S×(N×(4+1+K)),其中:S×S为特征提取网络输出的特征图的尺寸;N为每个网格(grid cell)预测边界框的个数;K为类别数;4表示坐标信息(x,y,w,h);1表示置信度。YOLOv3网络的输出格式如图1所示。

图1 YOLOv3网络的输出格式

假设输入图像分辨率为608×608,由于YOLOv3有三个尺度的检测层,三个检测层的特征图尺度分别是19×19、38×38、76×76,边界框个数为3,类别为5,那么YOLOv3最终输出三个不同大小的特征图,其中在小尺度检测层的输出为19×19×(3×(4+1+5)),中等尺度检测层的输出为38×38×(3×(4+1+5)),大尺度检测层的输出为76×76×(3×(4+1+5))。图1中的22 743是由(19×19+38×38+76×76)×3得来,也就是一幅图像最终要预测候选边界框的个数为22 743。

1.2 预测边界框

YOLOv1是直接通过模型预测边界框坐标位置的值(x,y,w,h),其损失值的计算是根据坐标位置的值直接做运算的,这就导致预测出的坐标波动较大,预测的坐标定位精度要低于其他优秀的目标检测算法。改进后的YOLOv3应用先验框对预测边界框施加约束,先验框是通过K-means算法对本文数据集聚类得到的。其坐标计算公式为:

(1)

式中:tx、ty为预测的坐标偏移值;σ()表示sigmoid运算,将tx、ty压缩至0到1之间,可以有效的确保目标中心位于网格单元中,通过sigmoid约束可以增强边界框定位的预测的稳定性;tw、th是预测的尺度大小;to为置信度的值;cx、cy是特征图中网格左上角坐标,每个网格的高和宽在特征图中都为1;pc表示将置信度的值缩放到0到1之间。如图2所示,边界框的中心落在第二行第二列的网格中,它的左上角坐标为(1,1),其中pw和ph是先验框映射到特征图中的宽和高。网络训练过程中实际上的学习目标是tx、ty、tw、th这4个offset,通过式(1)可以得到的预测边界框的坐标值为bx、by、bw、bh;然后通过设定置信度阈值,过滤掉分数低的预测边界框;最后通过非极大值抑制(NMS)方法处理得到预测边界框。

图2 YOLOv3的bounding box坐标转换公式

1.3 网络结构

YOLOv3模型通常可以分为特征提取层(Darknet53)和YOLO检测层。特征提取层是Darknet53[10],是通过对Darknet19和ResNet101网络的改进。Darknet-53网络由1×1和3×3的卷积层还有残差单元构成,其中每个卷积层都会使用一次批量归一化(Batch Normalization)和一个LeakyReLU激活函数。批量归一化解决了深层网络训练过程中出现的梯度消失和梯度爆炸的问题,因为数据通过卷积计算后导致数据分布发生了变化,使得网络学习能力下降,批量归一化可以对数据做归一化处理后传到下一层网络,这样可以更好地提取数据特征。Darknet53作为基础网络,其性能直接影响到目标检测算法的性能和精度,实践应用表明其性能优于其他特征提取网络。

YOLO检测层借鉴了FPN网络结构,采用了多尺度检测方法。假设输入图像分辨率为608×608,类别为5。在训练过程中对于每幅输入图像,首先通过Darknet53网络对输入图像进行特征提取,然后YOLOv3会预测三个不同大小的三维张量,对应着三个不同的尺度(scale)的特征图。设计这三个尺度的目的就是为了能够检测出不同尺度的物体。网络结构如图3所示。

图3 Darknet53网络结构

其中,小尺度检测层在YOLOv3模型第82层输出,输出特征图尺度为19×19×30,这一尺度的检测层有利于检测较大的物体,19×19表示输入图像尺度608×608经过5次下采样后得到的特征图尺度,30是由3×(4+1+5)得来,表示的是类别和位置信息。特征图的计算公式如下:

tensor=N×N×[(boundingbox)×

(offset+object+class)]

(2)

式中:boundingbox表示每个grid cell要预测边界框的个数,设置为3;offset表示位置信息,offset=4;object表示是否有物体,也叫置信度,object=1;class表示要预测的类别数,我们的数据集总共有5类,class=5。

通过上采样和特征融合操作,在第94层上输出中尺度检测层,输出的feature map尺寸为38×38×30,这一尺度的检测层适合检测中尺度的物体;在第106层中输出大尺度检测层,输出feature map尺寸是76×76×30,这一尺度的检测层有利于检测小物体。

同时,YOLOv3模型可以分为106层(从0层开始计算),其中:有75层是卷积层;有23层是Residual层;有4层是路由(route)层;有3层是YOLO层;有2层是上采样层。在卷积层中,主要使用1×1和3×3滤波器。3×3滤波器和strides进行特征下采样,减小特征图的宽度和高度;1×1卷积用于实现各通道信息的交互和整合,同时减少模型的参数量和模型的计算量,降低模型的复杂度。Residual类似于ResNet网络结构,ResNet采用跳跃式结构作为网络的基本结构,这样可以大大减少训练难度,同时能够精准控制梯度传播,有效地防止梯度消失或梯度爆炸。路由层实现跨层连接,促进了多个不同特征的融合。YOLO层用于最终输出预测对象的坐标和类别,上采样层将大分辨率特征图与小分辨率特征图连接,以增强对小目标的识别。

2 对YOLOv3的改进

2.1 先验框(anchors)的改进

YOLOv3算法借鉴了Faster R-CNN中使用先验框的思想,但是没有采用手动设置先验框,而是利用K-means聚类方法对数据集中的标注框进行训练,然后计算出合适的先验框,这样可以使网络更容易学习,从而将获得更好的检测效果。

传统的K-means[11]聚类方法一般使用欧氏距离为相似性指标,这意味着较大的标注框比较小的标注框将产生更多的错误,并且使用传统K-means聚类方法的结果可能导致偏差,因为对于先验框来说获取的是标注框的尺寸,所以常用的距离公式并不适用。为了使网络作出更合理的预测,采用的距离函数如下:

d(box,centroid)=1-IOU(box,centroid)

(3)

式中:box表示标注框;centroid表示聚类中心的矩形框;IOU(box,centroid)表示标注框与聚类中心的交并比。标注框到聚类中心的距离越小越好,但IOU值是越大越好,所以使用1-IOU,这样就保证距离越小,IOU值越大。该方法使用IOU分数作为最终评估标准,并且可以自动找到更合适的边界框。通过聚类方法,基于平均IOU选择9个先验框来预测边界框。图4为根据数据集聚类的结果,可以看出目标物体的尺度较小。

图4 K-means聚类

根据数据集通过K-means聚类计算得到的先验框可以更好地适应目标物体的尺度。由边界框预测原理可知,预测边界框是根据先验框的位置和大小作为基准去训练学习的,坐标损失和置信度损失是由标注框和与之匹配的先验框去计算的,然后通过平移和尺度缩放进行微调,一步一步减小损失。所以说如果先验框的尺度和标注框尺度比较相近的话,有利于加快损失的收敛速度,同时也可以提升精度(AP)。

一般的目标检测算法通常使用人工选择anchors,但人工选择会导致精度降低。为了使网络更好并作出更合理的预测,选择用K-means聚类方法基于数据集进行聚类分析,最终得到9组anchors,分别为:(20,31)、(39,27)、(41,58)、(48,14)、(70,45)、(75,101)、(87,26)、(129,91)、(155,54),替换了原来基于COCO数据集得到的9组anchors(10,13)、(16,30)、(33,23)、(30,61)、(62,45)、(59,119)、(116,90)、(156,198)、(373,326)。将基于自己数据集得到的9组anchors按面积大小排序,大尺度的特征图使用更小的anchor,分别是(20,31)、(39,27)、(41,58)。中等尺度的特征图使用中等大小的anchor,分别是(48,14)、(70,45)、(75,101)。小尺度的特征图使用更大的anchor,分别是(87,26)、(129,91)、(155,54)。实验证明,平均准确率均值提升了约1.13%。

2.2 预测边界框的改进

为了提升检测速度,本文改进了预测边界框,由原先每个网格预测3个边界框减少到2个,利用K-means聚类算法根据自己数据计算得到6组anchors,分别是(48,16)、(25,31)、(80,34)、(50,56)、(152,59)、(103,100),将以上anchor按面积大小排序,然后均分到3个不同尺度的特征图上,每个尺度特征图分两组anchors。其中:尺度小的特征图(feature map)使用更大的anchors,分别是(152,59)、(103,100);中等尺度的特征图(feature map)使用中等大小的anchors,分别是(80,34)、(50,56);尺度大的特征图使用更小的anchor,分别是(48,16)、(25,31)。

假设有一幅待检测图像分辨率为608×608,YOLOv3有三个尺度的检测层,三个检测层的特征图尺度分别是19×19、38×38、76×76,边界框个数为3,类别为5,那么YOLOv3的最终的输出是三个三维张量分别是19×19×(3×(4+1+5))、38×38×(3×(4+1+5))、76×76×(3×(4+1+5)),就是说一幅图像要预测22 743个候选边界框,而一幅图像中通常情况下有5到6个物体,预测边界框明显存在冗余的情况。针对这一问题,改进预测边界框的个数,由原来的每个网格预测3个边界框变为预测2个边界框。改进后,YOLOv3最终输出是三个三维张量分别是19×19×(2×(4+1+5))、38×38×(2×(4+1+5))、76×76×(2×(4+1+5)),就是说一幅图像要预测15 162个候选边界框,相比改进前,网络的运算量明显减少,实验证明,检测速度提升了约6%。

2.3 多尺度训练

在YOLO算法中网络使用固定的512×512尺度的图片作为输入,现在YOLOv3网络在YOLO网络基础上做了一些改进,将YOLO的全连接层改为全卷积层,不仅能够减少参数个数,降低网络运算量,而且还能提升网络性能。目前的网络只用到了卷积层,那么就可以在训练过程中随机改变输入图像的尺度。这样可以让网络充分地学习不同分辨率下图像的特征,可以提高YOLOv3算法的性能。

本文将采用多尺度训练方法[12]来训练自己的数据集,由于YOLOv3网络总共有5个下采样过程,因此网络的下采样倍率为32,然后将图像输入尺度设置成32的倍数。本文将从{320,352,384,416,448,480,512,544,576,608}随机选择一个尺度作为图像输入尺寸,让网络充分地学习不同尺度下图像的特征,这样可以更好地预测不同尺寸的图片,让网络完成不同分辨率下的检测任务,增强模型在不同尺度下的鲁棒性。实验表明,采用多尺度训练方法的模型比采用单一尺度训练的模型mAP提升了约1.22%。

3 实验与分析

本文对X射线图像数据集进行了实验,总共用2 024幅图片,其中随机选择20%为测试集,其余的为训练集。

实验条件是操作系统为Ubuntu 18.0.4,CPU为i7- 8700k,内存为64 GB,GPU为NVIDIA GeForce GTX 2080Ti。

3.1 数据集

3.1.1数据集介绍

本文数据集来自天池数据竞赛平台,由天津津南区发布的“津南数字制造算法挑战赛——物流货物限制品监测”中提供的数据集,下载地址为https://tianchi.aliyun.com/competition/entrance/231703/information。数据集包含了带有限制品的日常包裹X射线图像及对应限制品的位置标注信息,总共包括5类,分别包括如下:铁壳打火机(Iron_llighter)、黑钉打火机(Black_llighter)、刀具(Knife)、电池电容(battery)以及剪刀(scissors),类别id依次从1到5。

3.1.2数据预处理

在进行实验前,对数据做了一些简单分析。首先统计了标注框的大小信息,利用标注框的宽和高得到每个标注框的面积,进而得到每个标注框的大小,统计得出要检测的物体尺度较小。然后统计了类别分布信息,其中铁壳打火机有1 069个标注框、黑钉打火机有4 361个标注框、刀具有1 898标注框、电池电容有5 258个标注框以及剪刀有1 830个标注框。由图5可知,数据类别较不均衡。最后对数据集进行划分训练集和测试集,其中随机选取20%作为测试集,其余的作为训练集。

图5 标注框中的类别分布

3.1.3数据增强

在计算机视觉领域,想要把模型训练成具有高精度和强泛化能力就离不开大量的训练样本,然而多数情况下样本量是有限的,通常需要通过数据增强方法来弥补数据不足的问题。数据增强[13]是指基于现有的数据集样本,通过对原始样本施加一些小的改变从而得到新的数据样本的方法。数据增强的方法包括旋转、缩放、裁剪、饱和度调整和亮度值调整等,下面详细介绍几种常用的方法。

(1) 旋转变化是指将图像上的所有像素点以某一固定点旋转一定的角度从而改变图像的朝向,旋转后的图像尺寸一般不会改变。将图像顺时针旋转θ,其对应的矩阵变化为:

(4)

(2) 平移变换是指将图像中的所有像素点进行水平方向或者垂直方向的位移。设水平方向和垂直方向上的位移量分别为Δx和Δy,则该平移操作的矩阵形式为:

(5)

(3) 尺度变换是指对原图像在x和y方向上分别进行比例因子为αx和αy的缩放操作,其对应的矩阵变换为:

(6)

以上这三种数据增强方法是基于几何变换的,几何变换是将图像中的像素点通过几何操作映射到新的位置,修改了像素的空间关系,这些数据增强方法可以减少网络训练时对空间位置的敏感性。不同类型的数据增强方法可以进行叠加,从而增加样本图像的复杂性和多样性。图像增强已经成为一种常见的隐式正则化技术,用于防止深度卷积神经网络中的过度拟合,并且能够提高网络性能,有效地解决了数据集样本量过少、样本不均衡等问题。数据增强已经成为深度学习、计算机视觉等领域的研究热点。

本文实验所采用的数据集较少,仅有2 024幅标注图片。针对这些问题,本文应用数据增强方法来增加数据集样本量和增加数据的复杂性和多样性,图6展示了通过各种数据增强技术后的效果图。通过数据增强方法有效地避免了训练模型过拟合问题,增强模型的泛化能力,有效地弥补了因为数据集样本量过少,训练不充分的问题,mAP提升了约7.8%。

(a) 原始图像 (b) 图像翻转

3.2 网络训练

本文使用TensorFlow来实现YOLOv3,首先准备好数据集,把数据集的标注文件转换成txt文件,并划分好训练集和测试集,接着准备数据集的类别名,并保存为jinnan.names,再准备先验框,并保存为yolo_anchor.txt,然后设定模型训练参数,最后就可以开始训练模型了。部分实验参数具体如表1所示。

表1 网络训练参数表

图7为网络训练过程中损失值的收敛曲线。可以看出损失值随迭代步数降低,迭代步数为35 000左右时,损失值趋于稳定,损失值稳定在5左右,从这个参数收敛情况看,网络训练效果还是比较理想的。

图7 损失值函数曲线

3.3 目标检测评价指标

在目标检测中,常用的评价标准有:准确率(Precision)、召回率(Recall)、平均精度(AP)、平均精度均值、每秒内能够处理的图片数量FPS和衡量模型复杂度的评价指标FLOPs。模型的FLOPs越小,每秒能够处理的图片越多,检测速度也就越快。

P代表Precision,也就是预测样本中实际正样本个数占所有正样本个数的比值,在本文中Precision代表的是模型正确预测某一类危险品的个数占模型预测为该类危险品的个数的比值。

(7)

R代表Recall,也就是预测中实际正样本个数占预测样本数的比值,在本文中Recall代表模型正确预测某一类危险品个数占测试集中该类危险总数的比值。

(8)

AP是用来衡量检测器的性能。有多种方式可以计算AP,首先绘制出PR曲线图,然后对于每个R值,选取大于等于该R值的最大的Precision,求平均值作为AP。

mAP即表示对每一类的平均精度求均值:

(9)

3.4 模型的评估

实验一分别利用YOLOv3算法模型和Noaug_YOLOv3算法模型进行对比实验,其中YOLOv3算法模型表示利用了图像旋转、裁剪、平移等数据增强技术扩充的数据集进行实验,Noaug_YOLOv3算法模型表示没有用数据增强方法进行实验。分别计算各类目标的平均准确率并计算5类目标的平均准确率均值。实验测试结果如表2所示,通过数据增强技术将目标检测的mAP由62.35%提升到70.19%。

表2 数据增强方法前后平均精度对比表 %

本文还对比了Crop算法模型和Noaug_YOLOv3模型,其中Crop算法模型是对图像进行随机裁剪来扩充数据集,Noaug_YOLOv3算法模型表示没有用数据增强方法扩充数据集。图像裁剪可以使感兴趣的物体出现在不同位置,从而减轻模型对物体出现位置的依赖性,测试结果如表3所示,通过数据增强图像裁剪,mAP提升了约3.55%。

表3 图像随机裁剪方法前后平均精度对比表 %

实验二分别用K_YOLOv3算法模型和COCO_YOLOv3算法模型进行对比实验。其中K_YOLOv3算法模型是利用K-means对自己的数据集进行聚类生成9个先验框,替换原始的先验框;COCO_YOLOv3算法模型是使用COCO数据集聚类得到的先验框。测试结果如表4所示,根据自己数据集生成的anchors可以加快训练时的收敛速度,同时mAP从70.19%提高到了71.32%。

表4 先验框改进前后平均精度对比表 %

实验三本实验对比了采用多尺度输入进行训练和采用单一尺度输入进行训练,其中512_YOLOv3算法模型训练时,图片输入分辨率设置为512×512,M_YOLOv3算法模型把输入图片分辨率设置为随机从{320,352,384,416,448,480,512,544,576,608}抽取一个尺度。由表5可知,多尺度训练模型的mAP比单一尺度训练的模型提升了约1.22%,而且其模型能够更好地检测不同尺度的图像,多尺度训练模型的鲁棒性更好。

表5 单一尺度和多尺度训练网络性能对比表 %

实验四本实验分别对比了YOLOv3算法模型和New_YOLOv3算法模型,其中New_YOLOv3算法模型每个网格预测2个边界框,YOLOv3算法模型每个网格预测3个边界框。本次实验检测了测试集中的404幅图片,为了验证不同尺度的输入对检测速度的影响,本次实验分别用416×416、512×512、576×576、608×608、640×640五种分辨率作为模型输入的尺度,实验记录了模型读取每幅图片的时间和模型预测出边界框的时间,预测边界框的时间减去模型读入图片的时间为每幅图片的检测时间。实验中把检测404幅图像所需时间求平均,然后再计算FPS。实验结果如表6和表7所示,检测速度除了与硬件条件有关,待检测图像或视频的分辨率对检测速度影响也很大,分辨率越高,检测速度越慢,输入图像的分辨率为576×576时,改进后的模型检测速度比之前提升了6%。从表7可以看出,改进后的模型参数量和FLOPs都有所降低,说明模型复杂度也有所降低。

表6 改进预测边界框前后检测速度(FPS)对比表

表7 模型参数量对比表

4 结 语

本文提出一种YOLOv3改进方法,并将其方法应用在安检货物中危险品检测。首先,对数据集进行K-means聚类,得到anchors,替换原来通过COCO数据集聚集得到的anchors,加快了训练时的收敛速度,mAP比之前提升了约1.13%。然后,针对数据集样本量较少的问题,本文采用了数据增强的方法扩充数据集,通过数据增强方法后mAP比之前提升了约7.84%。最后,采用了多尺度输入训练方法,实验表明,此方法比单一尺度输入mAP提升了约1.22%。为了提升检测速度,本文改进了预测边界框,由原来每个网格预测3个边界框变成预测2个边界框,检测速度提升了6%。

猜你喜欢
尺度边界预测
无可预测
环境史衰败论叙事的正误及其评判尺度
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
选修2—2期中考试预测卷(A卷)
守住你的边界
有边界和无边界
OF MALLS AND MUSEUMS
人蚁边界防护网
以长时间尺度看世界