计算机系统应用  2020, Vol. 29 Issue (5): 202-208   PDF    
改进SSD的输电铁塔鸟窝检测
祁婕, 焦良葆     
南京工程学院 人工智能产业技术研究院, 南京 211167
摘要:输电铁塔作为架空输电线的重要组成部分, 其安全状况将影响整个电力系统的运行, 鸟窝的搭建作为影响输电线路正常运行的重要因素之一, 需要对此进行监控. 而现有的监控手段不仅效率低, 还需要耗费大量的人力物力. 本文针对这一现象提出一种基于SSD算法的实时检测方法, 并在SSD的网络结构基础上将前置网络VGGNet替换为ResNet-101, 提高其特征提取能力, 并将Softmax loss用Focal loss代替以改善SSD算法中样本不平衡的问题, 并利用数据增广提高数据多样性, 以提高模型的鲁棒性. 实验结果表明本文所提出的方法检测精度对比原SSD算法在准确度和召回率上分别有3.17%和6.35%的提升.
关键词: 深度学习    SSD算法    鸟窝检测    ResNet    Focal loss    
Bird Nest Detection on Transmission Tower Based on Improved SSD Algorithm
QI Jie, JIAO Liang-Bao     
Institute of Artificial Intelligence Industry Technology, Nanjing Institute of Technology, Nanjing 211167, China
Foundation item: National Natural Science Foundation of China (61703201); Natural Science Foundation of Jiangsu Province, China (BK20170765)
Abstract: As an important part of overhead transmission line, the safety of transmission tower will affect the operation of the whole power system. The construction of bird's nest is one of the important factors affecting the normal operation of transmission line, which needs to be monitored. Nevertheless, the existing monitoring methods not only are inefficient, but also require a lot of manpower and material resources. To cope with this phenomenon, this study puts forward a real-time detection method based on the algorithm of SSD. In addition, lead network VGGNet is replaced by ResNet-101 based on the network structure of SSD, so as to improve their ability of feature extraction. The Focal loss instead of Softmax loss improve SSD sample imbalances in the algorithm. And the data augmentation is used to increase diversity, in order to improve the robustness of the model. Experimental results show that the detection accuracy of the method proposed in this study is improved by 3.17% and 6.35% respectively in terms of accuracy and recall rate compared with the original SSD algorithm.
Key words: deep learning     SSD algorithm     bird nest detection     ResNet     Focal loss    

引言

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

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

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

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

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

${s_k} = {s_{\min }} + \dfrac{{{s_{\max }} - {s_{\min }}}}{{m - 1}}(k - 1),\;k \in \left[ {1,\;m} \right]$ (1)

式中, ${s_{\min}}$ 为0.2, 即最低层的尺度为0.2, ${s_{\max}}$ 为0.9, 即最高层的尺度为0.9, m是所使用feature maps的数量. 再使用不同的长宽比, 用 ${\alpha _r}$ 来表示: ${\alpha _r} \in \left\{ 1,2,3,1/2,\right.$ 1/3}. 至此, 可以求出每个default box的宽(w)和高(h): $w_k^\alpha = {s_k}\sqrt {{\alpha _r}} $ , $h_k^\alpha = {{{s_k}} / {\sqrt {{\alpha _r}} }}$ , 由于长宽比有等于1的情况, 即每个特征图都会有一个尺度为 ${s_k}$ 的先验框, 除此之外, 还会设置一个尺度为 $\sqrt {{s_k}{s_{k + 1}} + 1} $ 且长宽比为1的先验框, 这样每个特征图就会定义6个default box.

1.2 目标损失函数

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

$L\left( {x,c,l,g} \right) = \frac{1}{N}\left( {{L_{\rm conf}}\left( {x,c} \right) + \alpha {L_{\rm loc}}\left( {x,l,g} \right)} \right)$ (2)
$\left\{\begin{split} &{{L_{\rm conf}}(x,c) = \displaystyle\sum\limits_{i \in Pos}^N {x_{ij}^p\log (\hat c_i^p)} - \displaystyle\sum\limits_{i \in Neg}^{} {\log (\hat c_i^0)} }\\ &{\;\;\hat c_i^p = \frac{{\exp (c_i^p)}}{{\displaystyle\sum\nolimits_p {\exp (c_i^p)} }}} \end{split}\right.$ (3)

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

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

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

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) + \omega x$ , 其中 $\omega $ 是用于调整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].

$FL\left( {{P_t}} \right) = - {\alpha _t}{\left( {1 - {p_t}} \right)^\gamma }\log \left( {{p_t}} \right)$ (4)

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

$L\left( {x,c,l,g} \right) = \frac{1}{N}\left( {FL\left( {{p_t}} \right) + \alpha {L_{\rm loc}}\left( {x,l,g} \right)} \right)$ (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表示找到了多少目标, 其计算公式为:

${{P = }}\frac{{TP}}{{TP + FP}}$ (6)
${{R = }}\frac{{TP}}{{TP + FN}}$ (7)

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

2.4 训练

在进行训练前, 需针对电脑配置、搭建环境, 检测目标及数据预处理时生成的文件路径等对训练程序的参数及路径做一定修改. 本文将改进后SSD算法与原始的SSD算法在相同数据集中进行对比实验, 为保障实验的公平性, 对学习率, 权重衰减及迭代次数进行统一设置, 初始学习率为 ${10^{ - 3}}$ , 权重衰减为 $5 \times {10^{ - 4}}$ , 前 $5 \times {10^4}$ 次迭代学习率保持不变, 后 $5 \times {10^4}$ 次迭代学习率为 ${10^{ - 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算法更能实现对小目标的检测, 能够提升目标检测的准确度.

参考文献
[1]
师飘. 输电线路上鸟巢的检测算法研究[硕士学位论文]. 北京: 北京交通大学, 2017.
[2]
Castrillón M, Déniz O, Hernández D, et al. A comparison of face and facial feature detectors based on the Viola-Jones general object detection framework. Machine Vision and Applications, 2011, 22(3): 481-494. DOI:10.1007/s00138-010-0250-7
[3]
Dalal N, Triggs B. Histograms of oriented gradients for human detection. Proceedings of 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. San Diego, CA, USA. 2005. 886–893.
[4]
Chen PH, Lin CJ, Schölkopf B. A tutorial on ν-support vector machines . Applied Stochastic Models in Business and Industry, 2005, 21(2): 111-136. DOI:10.1002/asmb.537
[5]
Felzenszwalb PF, Girshick RB, McAllester D, et al. Object detection with discriminatively trained part-based models. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2010, 32(9): 1627-1645. DOI:10.1109/TPAMI.2009.167
[6]
Jiao JL, Sun J, Satoshi N. A convolutional neural network based two-stage document deblurring. Proceedings of 2017 14th IAPR International Conference on Document Analysis and Recognition. Kyoto, Japan. 2017. 703–707.
[7]
Ren J, Chen XH, Liu JB, et al. Accurate single stage detector using recurrent rolling convolution. Proceedings of 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu, HI, USA. 2017. 752–760.
[8]
Girshick R. Fast R-CNN. Proceedings of 2015 IEEE International Conference on Computer Vision. Santiago, Chile. 2015. 1440–1448.
[9]
何春燕. 基于卷积神经网络的车行环境多类障碍物检测与识别[硕士学位论文]. 重庆: 重庆邮电大学, 2017.
[10]
Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection. Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, NV, USA. 2016. 779–788.
[11]
Liu W, Anguelov D, Erhan D, et al. SSD: Single shot MultiBox detector. Proceedings of the 14th European Conference on Computer Vision. Amsterdam, The Netherlands. 2016. 21–37.
[12]
Mahdianpari M, Salehi B, Rezaee M, et al. Very deep convolutional neural networks for complex land cover mapping using multispectral remote sensing imagery. Remote Sensing, 2018, 10(7): 1119. DOI:10.3390/rs10071119
[13]
He KM, Zhang XY, Ren SQ, et al Deep residual learning for image recognition. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, NV, USA. 2016. 770–778.
[14]
Shi WW, Gong YH, Tao XY, et al. Fine-grained image classification using modified DCNNs trained by cascaded softmax and generalized large-margin losses. IEEE Transactions on Neural Networks and Learning Systems, 2019, 30(3): 683-694. DOI:10.1109/TNNLS.2018.2852721
[15]
Lin TY, Goyal P, Girshick R, et al. Focal loss for dense object detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2018. DOI:10.1109/TPAMI.2018.2858826
[16]
唐聪, 凌永顺, 郑科栋, 等. 基于深度学习的多视窗SSD目标检测方法. 红外与激光工程, 2018, 47(1): 0126003.
[17]
Nasr MB, Chtourou M. A constructive based hybrid training algorithm for feedforward neural networks. Proceedings of 2009 6th International Multi-conference on Systems, Signals and Devices. Djerba, Tunisia. 2009. 1–4.
[18]
He KM, Zhang XY, Ren SQ, et al. Identity mappings in deep residual networks. Proceedings of the 14th European Conference on Computer Vision. Amsterdam, The Netherlands. 2016. 630–645.
[19]
肖尧. 小型飞行平台视频目标检测与跟踪技术研究[硕士学位论文]. 西安: 西安电子科技大学, 2018.