APP下载

改进损失函数的地基云状目标检测算法

2022-01-25王胜春

计算机工程与应用 2022年2期
关键词:先验边界损失

王胜春,陈 阳

湖南师范大学 信息科学与工程学院,长沙 410081

地面气象测报是气象工作的基础项目,其中地基云状的观测尤为重要。连续地观察和测定云状的变化,对于分析天气转变、科学研究和气象服务有着重要意义。但是,目前地基云状的观测仍然存在着许多挑战。首先,不同云状之间有很多相同的特征,以蔽光高层云和雨层云为例,两种云状非常相似,业余人员甚至无法辨认。其次,云存在着空间分布的不均匀性和随时间变化的脉动性,按照云的高度、结构特点和外形特征,云可分为三族,十属,二十九类,类别繁杂,变化多端。现在气象站一般采用全天空成像仪拍摄云状,云状的精标主要依赖经验丰富的观测员。但是,人工观测存在情绪干扰和主观意识,且很难形成一个统一的标准。因此,地基云状的自动化识别是气象工作的一个重要方向,部署深度学习算法、研发自动化观测仪器代替甚至超过人工观测是气象工作的一个重要目标。

地基云状的观测和识别作为气象领域的一个热点问题,有很多学者对其进行了研究,特别是应用计算机算法对地基云状进行识别已经成为了研究趋势。Alireza等[1]在形态的基础上将云按照低云、中云、高云进一步做了划分,并使用了神经网络和支持向量机算法对全天空地面图像进行云自动分类,但其使用的数据集图片只有250张,模型缺乏一定的泛化能力。鲁高宇等[2]使用了一种融合局部特征和全局特征的云图特征提取算法,并设计了基于K均值算法的神经网络模型,有效地提高了云图识别的精度,但是其对于一张图片中的多类别云状识别较差。李晨溪等[3]通过提取ESS模型标度特征进行典型地基云状识别,提取了云图的标度指数特征,并选用了支持向量机作为分类器对5种云图进行分类,测试样本分类准确率达到了90%,但是其使用的分类算法不同于目标检测算法,只能识别云状的类别,云状的位置、面积等关键因素无从得知。

目标检测[4-6]作为深度学习的一个重要分支,发展非常迅速,热度一直很高。目前,基于深度学习的目标检测主要有两类主流的算法。第一类算法准确率较高。2015年发布的Fast R-CNN[7],使用了一个卷积神经网络作为图像特征提取器,并使用了Smooth L1 Loss作为边界框损失函数,但是网络的选择性搜索(selective search)模块速度较慢。之后的Faster R-CNN[8]使用了区域候选网络(RPN)生成的待检测区域,检测时间从2 s缩减到了10 ms,mAP也提升了3.2%。再之后的Mask R-CNN[9]是对Faster R-CNN的直接扩展,精度高于后者,而且增加了实例分割的分支。另一类算法速度较快。2015年发表的YOLOv1[10](you only look once),它将目标位置检测与目标分类这两个阶段合二为一,速度超过了之前的算法,但由于其特征提取器与损失函数存在缺陷,所以定位不够准确。针对YOLO的不足,Liu等[11]提出的SSD(single shot multibox detector)使用了分层特征提取器,速度依然很快且对小目标的检测效果更好。2018年Redmon等[12]提出YOLOv3算法,进一步提升了速度和准确度,在coco数据集上速度能达到30 frame/s,它的检测速度比Fast R-CNN快100倍。

目标检测算法中的边界框损失函数也一直在迭代和发展。2016年提出的IoU[13](intersection over union)将边界框四个点的位置信息看成一个整体进行训练与回归,但是在预测框和目标框不相交时无法继续优化。针对IoU的不足,Rezatofighi等[14]在2019年提出了GIoU(generalized IoU loss)具有尺度不变性,使YOLOv1准确率涨了2个百分点,但是当目标框包含预测框时无法区别两者的位置关系。在2020年的AAAI大会上,Zheng等[15]提出了DIoU loss(distance IoU loss),优化了两个框之间的距离,收敛更快,回归更准确。

本文改进了目标检测算法中的边界框损失函数,提出了新的损失函数UIoU(unify IoU loss)。因为YOLOv3速度较快、精度较高,方便应用于工业生产,很好地迎合了云状识别中实时性和效率高的要求,所以本文使用了UIoU-YOLOv3算法对地基云状进行识别。训练和测试数据集来源于摄像头实时拍摄的高清全天空地基云图数据,对数据进行了筛选和标注。对三组实验进行了讨论和验证:先在原YOLOv3算法上进行实验,再将边界框回归损失函数替换成DIoU,最后使用UIoUYOLOv3进行实验。实验结果表明,改进后的YOLOv3算法在地基云状识别中有了明显的提升。

1 YOLOv3算法

YOLOv3的特征提取网络Darknet-53使用了全卷积网络(fully convolutional network)[16],包含大量大小为3×3和1×1的卷积核,其中,3×3的卷积增加channel,而1×1的卷积在于压缩3×3卷积后的特征表示。其次,Darknet-53借鉴了残差网络ResNet[17]的思想在网络中融入了1,2,8,8,4个残差模块(Residual Block),网络结构可以更深且避免了梯度消失等问题。

另外,网络使用了类似于特征金字塔网络(feature pyramid netword)[18]的概念从3个不同的尺度(13×13、26×26、52×52)提取特征,将早期layer的特征与深层layer的特征融合在了一起,因此它在检测大目标和小目标方面都有很好的性能。小尺度的特征图感受野更大,提供了较深的语义信息,大尺度的特征图则提供了较细粒度的目标信息。YOLOv3通过向上采样调整了更深一层的特征图,不同尺度的特征图将具有相同的尺寸,并将9组anchor box(先验框)按面积从小到大的顺序分配给了三个尺度的特征图,再对每个anchor box进行置信度回归,最后保留大于置信度阈值的预测框。YOLOv3的网络结构如图1所示。

图1 YOLOv3网络结构Fig.1 Network structure of YOLOv3

YOLOv3的损失函数由三部分组成:置信度损失项、分类损失项和边界框坐标损失项。其中,置信度损失公式如下:

公式包括两部分:预测框内有目标物和没有目标物。公式中融入了交叉熵,表示预测框内含有真实目标的概率值,表示真实值,λnoobj是一个权重值,用来控制没有物体时损失的贡献量。

分类损失公式如下:

坐标(coord)损失公式如下:

公式(3)为中心坐标损失,公式(4)为宽高坐标损失。λcoord表示坐标损失权重,用来协调不同尺度的先验框对损失的贡献值。整个损失函数表示:第[i][j]个先验框负责检测某一个目标,以这个先验框为基准回归进行尺度变换,然后产生bounding box,使用均方误差(MSE)将bounding box与标注框比较计算得到中心和宽高坐标误差。但以MSE误差作为损失函数存在以下缺点:误差越小并不代表两个框的重合度越高;损失对目标框尺度太敏感,没有一个可以衡量其尺度的参数,不具有尺度不变性。公式(4)中的开平方处理就是为了缓解目标框尺度对损失产生的影响。

2 UIoU边界框回归损失函数

目标定位是目标检测的一个关键任务,边界框回归损失函数是目标定位的一个关键因素,直接影响到回归的准确率。目前最常使用的边界框损失函数是IoU Loss,公式如下:

其中,B代表预测框,Bgt代表目标框。从公式来看,如果B和Bgt没有交集,分子为0,损失函数一直等于1。所以IoU损失仅在边界框有重叠的情况下起作用。DIoU解决了这一问题,DIoU的图像如图2所示,DIoU的计算见公式(6):

图2 DIoUFig.2 DIoU

式中,bgt表示目标框中心点,b表示预测框中心点,ρ表示两点之间的距离,灰色虚线框代表覆盖目标框与预测框的最小框,c表示最小框的对角线长度。在两个框的中心点距离不断缩减的过程中,能够使得边界框的收敛速度更快。当两个框不重叠的时候,预测框会不断往目标框的方向靠近,直到两个框的中心点重合;在两个框存在包含关系的情况下边界框回归速度也很快。

但是DIoU没有考虑到预测框的长宽比和目标框之间长宽比的一致性,容易出现“伪对齐”的情况。基于这一点,本文提出了新的边界框回归损失函数UIoU(Unify IoU Loss):

UIoU比DIoU多了两个参数和α和v,其中α是用来平衡比例的系数,v将预测框和目标框的长宽比融入sigmoid函数的变量中,一方面可以对值阈值化以防过度震荡,另一方面用来衡量两个框之间长宽比的一致性。因为增加了这个惩罚项,预测框会不断地变换长宽比,尽可能与目标框一致,然后往目标框的方向移动。α和v的公式如下:

其中,w1、w代表目标框和预测框的长,h1、h代表目标框和预测框的宽。UIoU求导公式如下:

预测框在不同位置下三个损失函数的数值及其变化情况如图3所示。

图3 IoU、DIoU与UIoU数值变化Fig.3 Variation of IoU,DIoU and UIoU

图3中黑色框代表预测框,红色框代表真实框。图3(a),当两个框没有重叠时,IoU损失为0,因为DIoU和UIoU分别增加了中心点距离和长宽比的惩罚项,所以两者损失不为0。图3(b)和图3(c),真实框完全包含预测框导致IoU没有变化。图3(d),两个框的中心点重合,DIoU退化成IoU,因为两个框的长宽比不一致,UIoU可以继续发挥作用,其收敛的精度更高。

3 对云状数据集进行K-means聚类

先验框的大小直接影响算法的回归速度和准确率。YOLOv3根据coco数据集设定了9种先验框的尺寸,但是考虑到地基云状数据集的目标尺寸和coco数据集差异较大,需要重新设计先验框尺寸。不同于依赖人的先验知识设定尺寸,通过使用K-means[19-20]聚类算法对地基云状数据集中所有的目标框进行聚类,产生不同数量的先验框,可以使锚框与目标边界框更加匹配,从而提高检测速度与精度。不同聚类数目对应的平均交并比和归一化后的先验框尺寸分布如图4和图5所示。

图4 聚类数目与平均交并比Fig.4 Number of clustering and average IoU

图5 先验框尺寸分布Fig.5 Distribution of anchor box

考虑到计算效率与准确率的平衡,同时为了使产生的先验锚框平均分配到3个预测尺度,选择产生9个先验锚框。在图5中,红色三角形为聚类尺寸,将归一化数值进行还原,最终确定的先验锚框尺寸有以下9组:(16,32)、(32,20)、(23,60)、(52,39)、(40,67)、(55,113)、(116,143)、(245,262)、(105,55)。

4 实验结果与分析

4.1 地基云状数据集

本文使用的数据集来自高清摄像头实时拍摄的1 254张地基云状鱼眼图,按照1比9的比例划分测试集和训练集。数据集的类别是3种云状,分别是Cidens(密卷云)、Cuhum(淡积云)、Actra(透光高积云)。图6为云状数据集样例。

图6 云状数据集样例Fig.6 Sample of nephogram datasets

数据集采用labelImg标注并制作成VOC格式方便训练。标注工作由人工执行,如图7所示。使用labelImg将鱼眼图中的云框出来并打上对应的云状标签,保存之后就可以在路径中生成对应的xml文件,文件中包含标注框的类别、具体坐标、图片名称等信息。

图7 labelImg标注Fig.7 Using labelImg to annotate

4.2 模型训练

本文中,模型训练与测试在Ubuntu18.04环境下进行,使用NVIDIA GeForce GTX 1080Ti显卡。采用Darknet[21]框架进行训练,网络的训练参数设置如下:采用Multistep学习策略,初始学习率为0.001,max_batchs设为12 000,decay为0.000 5,训练时batch size为64,使用SGD优化算法,momentum为0.9。实验采用AP50和mAP50作为评价指标,指标的计算需要用到准确率Precision和召回率Recall两个概念:

TP(true positives):数据集中实际被检测到的目标个数。

FP(false positives):检测模型误检测的目标个数。

FN(false negatives):检测模型漏检测的目标个数。

以Recall为横轴、Precision为纵轴构建P-R图,AP50的计算公式如下:

即AP50表示IoU阈值为0.5时P-R曲线与坐标轴所围成的面积。同时,将全部类别目标的平均精度mAP50表示为:

其中,N表示目标类别数,AP50i表示IoU阈值为0.5时每个目标类别的平均精度。

YOLOv3和UIoU-YOLOv3的Avg IOU对比曲线如图8所示,地基云状数据集训练过程中UIoU-YOLOv3的损失变化曲线如图9所示。

图8 云状数据集Avg IOU曲线对比Fig.8 Avg IOU curve comparison of nephogram datasets

图9 云状数据集UIoU-YOLOv3损失变化曲线Fig.9 UIoU-YOLOv3 loss curve of nephogram datasets

PASCAL VOC数据集作为标准数据集,不仅能衡量目标检测算法的分类识别能力,而且促进了目标检测相关领域的发展。为验证本文模型的准确性,在VOC2007上对模型进行了训练和评估,其中训练集和测试集分别包含7 172和1 794张图片。与云状实验在同一实验环境下进行训练与测试,因为数据集较大,所以max_batchs修改为50 200。Avg IOU对比曲线和损失变化曲线如图10、11所示。

图10 VOC数据集Avg IOU曲线对比Fig.10 Avg IOU curve comparison of VOC datasets

4.3 实验结果与分析

3种模型在云状数据集和VOC数据集上的AP50和mAP50数值分别见表1和表2。

如表1所示,UIoU-YOLOv3在云状数据集上的mAP50数值分别较YOLOv3和DIoU-YOLOv3提升了2.56个百分点和1.25个百分点。如表2所示,在VOC2007数据集上,提升数值为3.4个百分点和2.08个百分点。图9和图11是UIoU-YOLOv3在两个数据集上的训练损失曲线,整体上呈下降趋势,最后趋于稳定,说明神经网络训练效果较好。Avg IOU表示训练过程中预测框与标注框的平均交并比,可以很好地反映预测框的回归准确率,它的期望数值为1。通过分析图9和图11两个数据集上的Avg IOU对比曲线可知:UIoU-YOLOv3相比于YOLOv3在训练时的Avg IOU曲线震荡范围更小、上升得更快更稳定,最后回归的数值也更高。因此,UIoU-YOLOv3训练时预测框与目标框的重合度更高,边界框回归更加准确。综上所述,在地基云状数据集和VOC数据集上,本文提出的UIoU边界框损失函数是一种有效提升模型性能的方案。

图11 VOC数据集UIoU-YOLOv3损失变化曲线Fig.11 UIoU-YOLOv3 loss curve of VOC datasets

表1 云状数据集各类别AP50和mAP50Table 1 AP50 and mAP50 of nephogram datasets%

表2 VOC数据集mAP50Table 2 mAP50 of VOC datasets

此外,为了更加直观地感受不同算法之间的检测区别,本文选取了一些检测图像进行对比分析,如图12。

图12 YOLOv3和UIoU-YOLOv3检测结果对比图Fig.12 Comparison diagram of YOLOv3 and UIoU-YOLOv3 detection results

对于图12(a)、(b)中大面积的云状,YOLOv3仅回归出了一个检测框,容易出现漏检的错误,而UIoUYOLOv3回归出了多个分类准确的检测框,框出的目标物范围更大更准确;对于图12(c)、(d)中小块的云状,UIoU-YOLOv3可以识别出YOLOv3识别不出的目标物,检测效果更佳。

5 结束语

本文在DIoU的基础上提出了新的边界框回归损失函数UIoU,并将其应用于YOLOv3上,代替原算法的边界框MSE损失;使用K-means聚类算法对云状数据集中所有已标注过的目标边界框进行聚类,重新设计了先验框尺寸。经过实验验证,改进后的YOLOv3算法在精度上相比于原算法确有提升,而且比较稳定。

本文提出的UIoU损失函数只在YOLOv3上进行了可行性实验验证,下一步将在其他目标检测算法上进行应用与分析。此外,对模型结构进行探索与调整也是本文的下一步研究方向。

猜你喜欢

先验边界损失
BOP2试验设计方法的先验敏感性分析研究*
守住你的边界
拓展阅读的边界
探索太阳系的边界
胖胖损失了多少元
意大利边界穿越之家
一种考虑先验信息可靠性的新算法
玉米抽穗前倒伏怎么办?怎么减少损失?
先验的风
基于平滑先验法的被动声信号趋势项消除