改进SSD的输电铁塔鸟窝检测①

2020-05-22 04:47焦良葆
计算机系统应用 2020年5期
关键词:类别卷积样本

祁 婕,焦良葆

(南京工程学院 人工智能产业技术研究院,南京 211167)

引言

输电线路在电力系统巡行中扮演着至关重要的角色,一旦产生故障,将会对于输电网络造成巨大的经济损失.影响到输电线路安全运行的因素有很多,鸟害便是其中之一.近年来,鸟害事故的发生明显增多,通过对其分析,鸟窝造成的短路故障这一现象最为普遍,而对于鸟窝的检测目前采用最多的便是传统的人工巡检方法,这就要求巡检工作人员定期的前往检查,这种方法不仅效率低,而且容易受地形,天气等客观因素影响[1].

近年来,机器学习的出现带动目标检测这一课题也被重视起来,目标检测就是在所给定的图片中精确的找到所需物品的位置,并标注其类别.传统的目标检测算法代表有:V-J[2]检测算法、HOG[3]特征+SVM[4]算法、DPM[5]算法,传统的目标检测算法流程如图1所示.

图1 传统的目标检测算法流程图

传统的目标检测算法更注重特征的提取,只能够适用于有明显特征,背景简单的图片,所提取的特征一般较为抽象,不能够拥有较好的鲁棒性.而在实际情况中,无人机所拍摄的照片背景复杂,且所需要检测的目标复杂多变,很难通过所提取出来的一般的抽象特征对目标进行检测.

伴随着深度学习的不断发展,目标检测技术的研究取得了突破性的进展.基于深度学习的目标检测方法可以分为两大类:Two-stage[6]目标检测算法;Onestage[7]目标检测算法.Two-stage 检测算法如Faster RCNN[8]等,是通过一个完整的卷积神经网络来实现整个目标检测过程,以CNN 网络为主干网络,对图片进行深度特征的提取,其提取的是CNN 卷积特征,后由RPN[9]网络产生候选区,并完成其分类,对目标的位置进行初步的定位,最终通过分类和回归对边界框进行位置精修和对目标的类别进行判定.One-stage 检测算法如YOLO[10],SSD[11],Retina-Net 等,是在给定输入之后,同样以CNN 网络为主干网络完成特征的抽取,然后直接进行区域的回归和目标的分类,One-stage 的核心思想就体现在回归网络上.对于目标检测而言,Twostage 的方法则可以获得高精度,而One-stage 的方法具有高效率的优点,能够实现端到端的实时监测,但其检测精度不如Two-stage 高.

本文以SSD 算法为基础对输电铁塔上的鸟窝进行目标检测,通过将前置网络VGGNet[12]替换为ResNet-101[13],以提升SSD 算法的特征提取能力,并对其损失函数作了改进,将Softmax loss[14]用Focal loss[15]替换,改善了SSD 算法中的样本不平衡问题,从而使得模型的检测性能得到提高.

1 SSD 原理和方法

1.1 SSD 目标检测模型

SSD (Single Shot multibox Detector)算法是一种多框检测的One-stage 算法,其网络模型是基于一个前馈CNN 网络,该网络产生一个固定大小的包围框集合,并对这些框中存在的对象类别进行评分,然后利用非极大值抑制方法产生最后的检测结果.其网络结构如图2所示[16].

图2 SSD 网络结构

总结SSD 算法的核心设计理念可以概括为以下3 点:

(1)采用多尺度的特征图进行检测.

从图2可以看出,SSD 以去除了全连接层的分类网络作为前端的特征提取网络,在其后面添加了多尺度特征检测网络,通过池化操作将这些层的尺寸逐步缩小,对于相同大小的先验框,高层的特征图中具有高级语义信息,由于相对应的感受野较大,便于检测大的目标,而低层的特征图中具有细节信息,相同范围内所对应的感受野更小,便于检测小的目标,SSD 提出在多个尺度上进行检测,并且每个特征层用于预测检测的卷积模型都是不同的,这样可以提高识别的准确度.

(2)用于检测的卷积预测器.

不同于YOLO 在采用全连接层之后做检测,SSD是通过卷积直接对特征图进行提取检测的全卷积神经网络,对于网络中的6 个特定的卷积层输出采用两组3×3 的卷积核分别做分类和boundingbox 回归,其实质就是对6 个特征图对应的实际有效感受野进行分类和回归.

(3)设置多种宽高比的default box.

Default box 是指在feature map[17]的每一个小格上都有一系列固定大小的box,在default box 宽高比的设置上,SSD 借鉴了Faster R-CNN 中anchor 的理念,所预测的bounding box 是以default box 为基准的,该做法在一定程度上可以减少训练的难度.对default box 尺寸大小的确定是根据6 层卷积层输出的特征图大小决定的,其分别是Conv4_3、Conv7、Conv8_2、Conv9_2、Conv_10_2、Conv11_2,所对应的特征图大小分别是38×38、19×19、10×10、5×5、3×3、1×1.由于特征图的不同,所需设置的先验框的尺度和长宽比也不尽相同.对于先验框的尺度要遵循线性递增的规则,是按式(1)进行计算的.

式中,smin为 0.2,即最低层的尺度为0.2,smax为0.9,即最高层的尺度为0.9,m是所使用feature maps 的数量.再使用不同的长宽比,用 αr来表示:αr∈{1,2,3,1/2,1/3}.至此,可以求出每个default box 的宽(w)和高(h):由于长宽比有等于1 的情况,即每个特征图都会有一个尺度为sk的先验框,除此之外,还会设置一个尺度为且长宽比为1 的先验框,这样每个特征图就会定义6 个default box.

1.2 目标损失函数

SSD 在计算损失函数时用到了两项的加权和,分别是:分类loss:Softmax loss;回归loss:smoothL1loss.

其中,Lconf为分类loss,Lloc为回归loss,N为真实框与标记框所匹配的数量,α为权重值,用于调节分类loss 与回归loss 的比例,一般默认值为1,p指代类别序号,当p=0 时表示背景,指代第i个预测框与第j个真实框关于类别p是否匹配,即第i个搜索框和第j个类别框的IOU 是否大于阙值,若大于阙值则取1,反之则为0.cip表示第i个搜索框对于类别p的预测概率,概率通过Softmax 产生,当p的概率预测越高,则损失越小.

对于分类损失函数,样本的正负比控制尤为重要,本文将阙值设置为0.5,当搜索框与类别框的IOU 大于阙值时为正样本,否则为负样本.在正负样本的处理过程中,一般负样本的数目不要超过正样本数目的3 倍或4 倍,这样确保其能够收敛,而当负样本与正样本的比例超过3:1 或4:1 时的数据就可归类为不平衡数据,数据的不平衡会使分类出现严重的偏向性,这在一些常用指标上无法显现出来,但对于准确率的影响很大.

回归损失是预测框(l)和ground truth box (g)的smoothL1loss,其相较于L1损失函数的优点是收敛速度更快,而相较于L2损失函数,smoothL1loss 对离群点、异常值不敏感,更加鲁棒,梯度变化相对较小,训练时不容易跑飞.

1.3 改进策略

1.3.1 前置网络的改进

深度学习网络的深度对于目标的分类与识别有着很大的影响,因此,常规的思路为网络越深越好,然而,事实却并非如此,常规的网络堆叠在网络很深的时候效果却变差了,其原因之一就是:伴随着网络的加深,梯度消失的现象越来越明显,网络的训练效果也随之下降.SSD 算法较为明显的缺点就是对小目标不够鲁棒,这主要是由于在浅层提取的feature map 表征能力不够强,但是现在浅层的网络已经无法明显的提升网络的识别效果,因此,对于SSD 算法的改进所需要解决的问题是在加深网络的情况下解决梯度消失的问题.本文将SSD 原有的VGGNet 用ResNet-101 进行替换,以提高网络特征提取能力,从而提升目标检测精度.由于ResNet-101 比VGG 的网络更深,所以ResNet-101提取的特征就有更高的语义信息,且ResNet-101 的分类精度比VGG 高,其网络结构如表1所示.

表1 ResNet-101 网络结构表

在不断的加深神经网络深度时,会出现准确率不断上升后达到饱和,再增加深度时则会导致准确率下降,这一现象的出现并不是由于过拟合,而是由于更深的网络会导致训练集和测试集的误差增大.

针对网络越深,梯度消失的现象越明显这一问题,He KM 等[18]提出一种残差网络,该网络能够实现identity mapping,即恒等映射.模块中除了正常的卷积层输出外,还通过一种连接方式将当前的输入直接传递给输出,其连接方式为shortcut connection,最终整个结构的输出为卷积层输出与该层输入做算术相加所得,当卷积层的输出与该层的输入channel 个数相同时,其公式为H(x)=f(x)+x,而当个数不同时,两者是不能相加的,其公式为H(x)=f(x)+ωx,其中 ω是用于调整x的channel 维度的卷积操作,这样人为的将神经网络的某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系.这种简单的加法不会给网络增加额外的参数以及计算量,同时却可以增加模型的训练速度以及提高训练效果,并当网络的层数加深时,该网络能够很好的解决退化问题.

VGG-16 中,用于提取小目标信息的是Conv4_3层,作为最浅的网络层,在信息传递时,或多或少的会存在信息丢失、损耗的问题,而ResNet 在某种程度上解决了这个问题,通过将输入信息直接传递到输出,以保护信息的完整性,使得整个网络只需学习输入和输出差别的那一部分,简化学习目标与难度.

值得注意的是,当输入图像尺寸为300×300 时,精度不升反降,当输入为512×512 时,精度才有所提升,这是由于ResNet 网络很深,在前置网络后接入SSD 网络时,根据其接入倒退计算其输入尺寸时,其输入的分辨率要增加,而尺寸为300×300 的的图像对于ResNet而言数值偏小了.在VOC2007 test 上的评估结果见表2.

表2 VOC2007 test 检测结果

1.3.2 损失函数的改进

对于One-stage 的检测准确率不如Two-stage 这一问题进行分析,主要原因为样本的类别不均衡.在目标检测算法中,对于输入的一张图像会产生成千上万的预选框,但是,其中只有少部分包含真实的目标,换言之,无用的易分反例样本过多,会使得整个模型学习的方向跑偏,导致无效学习,即只能分辨出没有物体的背景,而无法分辨具体的目标.

在所获得的输电铁塔数据原始图中,有鸟窝的图片数量仅占4%,且每张图中鸟窝所占面积较小,即负样本的数量太大,占据总的loss 函数输入的大半,这就造成了严重的样本不平衡现象,使得模型的优化方向与所期望的背道而驰.为了改善这一现象,本文针对分类损失函数做了一定的改进,将Softmax loss 由Focal loss 代替,Focal loss 是基于Cross Entropy 的改进,用以解决数据不平均的问题,其主要思路直接体现在式(4)中[19].

式中,pt指 代各个类别的预测概率,(1−pt)γ对loss 有缩放作用,从式(4)中很容易推断出:当 γ确定时,假设γ=2,在pt=0.9的情况下,说明该类别为easy example,该loss 经过公式变换会缩小至 0.01αt倍;在pt=0.968的情况下,说明该类别仍为easy example,该loss 经过式(4)变换会缩小至 0.001αt倍;而在pt=0.1的情况下,说明该类别为hard example,该loss 经过式(4)变换会缩小至 0.81αt倍.即所有的样本loss 都会缩小,但hard example 比easy example 缩小的倍数要小.αt的作用则在于平衡权重,解决正负样本不平衡的问题.改进后损失函数的计算可以总结为式(5).

2 实验

2.1 实验平台

本文实验平台具体参数配置如表3所示.

表3 实验平台参数配置

2.2 数据预处理

输电铁塔的数据原始图是由某市供电公司提供的,总计40 966 张图片,其中有鸟窝图的有1624 张,其数据集类别数量如表4所示.在进行数据训练之前首先要制作自己的数据集,而在制作数据集之前则是要对数据进行预处理,由于SSD 采用的是固定的输出尺寸,如300×300 或者512×512,而通过无人机拍摄的图像尺寸过大,在7000×4000 以上,需要对其进行缩放或者裁剪,本文使用了图片转换器对于图片进行批量的处理,将图像的尺寸缩至512×512,使之能够匹配SSD 的输入.继而通过数据增广以提高数据的多样性,在SSD中的数据增广对于SSD 网络识别小物体效果明显.对图像进行等比例变换、随机裁剪加颜色扭曲、水平翻转、随机采集块域、色彩变换、减去ImageNet 中RGB 的平均数等方法经常被用于训练当中,以提高模型的鲁棒性.

表4 本文数据集类别数量

对于进行数据增广之后的图片,本文使用了labelImg工具给图片打标签,由其自带的pascalVOC可以得到与图片相对应的XML 文件,进而由XML 文件集合生成可供caffeine 框架读取的lmdb 文件,由于前置网络的替换,lmdb 数据的生成随之也产生变化,要对原Caffe 框架下所自带的脚本进行修改,依据所标注好的XML 文件来产生新的lmdb 文件.所标图示例如图3.

图3 图片标签示例

2.3 性能评价指标

本文采用精确率(Precision,P)和召回率(Recall,R)对算法的性能进行定量评估,其中,P表示有多少目标被正确预测,R表示找到了多少目标,其计算公式为:

式中,TP表示为被正确地划分到正例的个数,FP表示为被错误地划分到正例的个数,FN表示为被错误的划分到负例的个数.

2.4 训练

在进行训练前,需针对电脑配置、搭建环境,检测目标及数据预处理时生成的文件路径等对训练程序的参数及路径做一定修改.本文将改进后SSD 算法与原始的SSD 算法在相同数据集中进行对比实验,为保障实验的公平性,对学习率,权重衰减及迭代次数进行统一设置,初始学习率为1 0−3,权重衰减为5 ×10−4,前5×104次迭代学习率保持不变,后5 ×104次迭代学习率为1 0−4,总迭代次数为100 000 次,学习动量为0.9.其算法对比结果见表5.

表5 SSD 算法改进前后检测精度(%)

针对该算法的收敛性,和原有的SSD 算法进行对比,其对比的loss 曲线如图4所示.从图中可以看出虽然一开始Focal loss 的损失值较大,但随着迭代次数的增加,其损失快速收敛并逐步稳定.

针对该算法的实时性,在相同迭代次数的前提下,将本文改进后的SSD 算法与Faster-RCNN、原始SSD 算法和YOLO 在使用相同数据集的前提下进行对比,如表6所示.

图4 对比损失曲线图

表6 算法检测时间对比

其检测效果图如图5所示,在图中可以看出改进后的SSD 目标检测算法在小目标上的漏检问题得以改善.

图5 SSD 算法改进前后效果对比图

3 结束语

本文针对输电铁塔上的鸟窝检测的问题,提出了了基于SSD 算法改进的目标检测网络,主要做了以下两方面的改进:(1)将SSD 原有的前置网络VGGNet替换为ResNet-101,通过加深网络提升SSD 算法的特征提取能力,提高对小目标的检测精度.(2)将损失函数中的分类函数Softmax loss 用Focal loss 替换,改善了SSD 算法中的样本不平衡问题.实验结果证明本文提出的改进方法比起原SSD 算法更能实现对小目标的检测,能够提升目标检测的准确度.

猜你喜欢
类别卷积样本
基于全卷积神经网络的猪背膘厚快速准确测定
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
一起去图书馆吧
规划·样本
简析基于概率预测的网络数学模型建构
人大专题询问之“方城样本”
随机微分方程的样本Lyapunov二次型估计
“官员写作”的四个样本