师 飘
(亳州学院电子与信息工程系, 安徽亳州 236800)
近年来, 随着我国生态环境的改善以及高压杆塔输电线路的逐渐增多, 鸟类对电力设备的损坏也越来越严重. 鸟类的排泄物会腐蚀部分输电设备, 进而影响其绝缘性能. 未孵化的卵也会招致大型动物的攀爬, 进而对电力系统带来损害[1]. 为保障电力系统的正常运行, 电力工作人员经常需要进行线路巡检, 特别是对于山区等地形复杂的地方, 巡检任务非常困难, 因此这项工作逐渐发展为用无人机去采集杆塔附近图像, 再由工作人员进行异物的排查[2]. 但由人眼去判断是否有鸟巢异物的存在, 不仅工作量大, 而且存在判断错误等情况[3].
随着人工智能技术的发展, 让机器代替人去做一些简单枯燥且重复性强的工作有助于工作效率的提高. 对于高压杆塔的异物巡检, 设计智能算法即可判断图像中是否有鸟巢等异物的存在. 后期可以将算法嵌入到无人机中, 在无人机巡检过程中即可进行异物的检测, 从而可以极大提高巡检人员的工作效率, 进而保障电力系统的安全运行. 参考文献[4]通过检测鸟巢图像的枝干悬垂点, 进而提取鸟巢枝条特征, 最后使用SVM分类器进行训练, 可以取得90%的正确率[5]. 针对铁轨杆塔鸟巢检测, 蒋欣兰等人使用深度学习YOLO模型对其进行训练, 取得89%的检测精度[6-7]. 杨佩使用Faster R-CNN结合生成式对抗网络对鸟巢进行定位检测[8-10]. 而在高压杆塔输电线路环境中, 图像均由无人机拍摄获得, 由于角度多变, 背景较为复杂, 包括草丛、 树木、 房屋、 杆塔等, 这些均会对检测带来一定的干扰. 关于高压杆塔异物检测方向的研究文献较少, 且由于深度学习网络模型对于机器设备的要求较高, 依赖较多的训练样本, 训练过程漫长, 因此其具有一定的局限性. 本文研究基于经典AdaBoost算法, 提取鸟巢图像的LBP特征和Haar特征, 寻找适合鸟巢的特征描述算子. 最后基于QT设计图像异物检测平台, 使用图形化界面, 可以提高人机交互能力.
本文算法结构如图1所示, 主要包括训练过程和识别过程. 其中训练过程使用不同特征描述子, 对训练样本进行特征处理, 在训练过程中会产生一系列的弱分类器, 通过级联最终形成强分类器. 分类器形成之后, 将算法和QT平台进行融合, 最终在图形化界面完成测试样本的识别和检测结果的输出.
图1 算法结构图
本项目基于VS2012、 OpenCV-2.4.9和QT5.5.0设计与实现. 训练样本的质量极大影响训练模型的优劣, 而样本不足也会出现严重的过拟合现象. 项目组所获取的图像, 均来源于无人机的拍摄, 大小为3936*2624像素. 本项目共收集651G的数据, 但含有鸟巢的只有750张, 如表1所示.
表1 线路图像资料汇总
部分含鸟巢的样本由于拍摄角度问题, 人眼很难识别, 因此选取适合作为正样本的含鸟巢图像600张. 负样本最终选取1 800张, 内容为图像区域中不含鸟巢的草丛、 树木、 房屋、 天空、 杆塔、 防震锤等位置.
训练样本的截取中使用了半自动化的标注程序, 由Matlab编写完成. 标注过程需人工参与位置的选择和大小的框定, 因此区域大小很难保持一致, 后期统一设置为100*80像素. 正、 负样本示例如图2所示. 第一行为正样本, 均含有鸟巢区域. 第二行为负样本, 包含除鸟巢区域的其他位置. 程序中使用resize函数设定截取后保存的图像大小以及rgb2gray函数将彩色图像转换成灰度图, 并对训练样本进行重命名操作.
图2 正负样本示例
LBP (Local Binary Pattern)称为局部二值模式[11], 因此待处理的图像一定是灰度图. 基本LBP算子如图3所示.
图3 基本LBP算子
Haar特征算子由Papageorgiou提出[13], 后经P. Viola和M. Jones将Haar特征的模板进一步拓展, Haar特征模板图4所示, 特征模板内包含黑白两种矩形, 而不同颜色面积之差即为该特征的计算公式, 例如, 在a)组中, 边缘特征值为A=sum(白)-sum(黑), 而线性特征中A=sum(白)-2*sum(黑), 因为Haar特征可以很好地表述图像灰度变化情况, 所以被广泛应用于目标检测中[14].
图4 Haar特征模板
在进行图像特征的计算时, 使用上述模板在图像上进行滑动或平移, 最终得到图像的矩形特征. 而大量特征的计算, 必定产生描述图像的高维Haar特征, 同时模板平移过程中, 势必带来重复计算的问题, 因此有了积分图的出现. 积分图如图5所示, 对于图中A点的积分图定义如下:其中(i,j)是原图像中点的像素值,A(x,y)表示A点积分值. 由图示可知, 积分图是将图像上(x,y)点左上角所有像素值进行求和, 作为当前点在积分图中的像素值, 公式表示如下:
图5 积分图
实际应用中利用迭代的方式减少积分图的计算量. 如下式, 表示(x,y)点以及y方向上所有原始像素之和.
A(x,y)=A(x-1,y)+S(x,y)
S(x,y)=S(x,y-1)+I(x,y)
若将特征应用于本项目中的含鸟巢图像, 由图6可以看出, 其在人脸监测中比较适用, 但在本项目因实验中所用图像中含有大量高压杆塔, 而杆塔图像区域的黑白特性和鸟巢枝干区域相似, 会给算法带来干扰.
图6 人脸与鸟巢的对比
AdaBoost分类器起源于Boosting算法, 后由Freund和Schapire完善成可以自适应地调整弱学习算法错误率, 最终由Viola在其基础之上提出级联结构的AdaBoost分类器.
级联分类器的结构如图7所示, 图中表示只有被判断为正的样本才会送入到下一级分类器, 判为负的样本直接输出, 因此最后输出的正样本是每一级分类器都认可的. 通过降低正确划分样本的权重, 增加错误样本权重, 从而实现自动调整样本权重空间. 其中1,2,3……均是由多个分类器集成的强分类器. 算法的优点在于使用加权的样本代替随机选取的训练样本, 层层级联, 并且使用加权的投票机制代替平均投票机制. 结合本实验, 算法具体实现过程如下:
1)给定训练样本
图7 级联分类器示意图
S={(x1,y1), (x2,y2), …, (xi,yi), …, (xn,yn)}
其中,xi是鸟巢样本,y2是类别标签yi∈{-1, +1},n表示当前的训练样本数量;
2)初始化训练样本, 并均匀赋予相同的权重:Dt(xi)=1/n;
3)循环t=1,2,3,……T, 表示弱分类器的个数.
①在当前的样本权重Dt下, 得到弱分类器Ht=H(x,y,Dt);
②计算弱分类器在当前权重下的错误率:
③计算弱分类器在最终分类器中的加权系数, 即弱分类器的权重:
at=ln(1-εt)/εt;
④为下一次迭代更新训练样本权重:
4)最终输出的强分类器
实验中, 分别使用训练至15级、 18级、 20级的级联强分类器进行测试样本的检测, 同时使用不同的特征描述子进行图像特征的表述, 从而进一步对比分析得到最优的特征算子以及训练级数.
为使算法具有更强的可操作性以及友好的人机交互界面, 本文使用QT 5.5.0设计检测界面. QT是一种跨平台的应用程序开发框架, 支持C++等主流计算机语言, 其主要用于GUI(Graphical User Interface, 图形用户界面)设计. 设计完成之后普通用户可以进行相关操作, 包括相关命令的执行、 编辑、 调用、 启动等. 正样本检测效果如图8、 图9所示, 表示检测正样本的结果展示. 可以看出, 不同拍摄角度、 目标的不同遮掩程度、 不同光线强度下均可以得到准确的检测结果, 算法具有较强的伺服性能. 而图10展示了负样本的检测结果, 可以看到检测鸟巢数量为0, 因此检测结果正确.
图8 正样本检测效果
图9 正样本检测效果
图10 负样本检测效果
本实验采用Haar和LBP两种特征对AdaBoost分类器进行训练, 不同训练级数对分类器的整体判断能力即准确率(ACC)的影响如表2所示.
表2 训练级数对检测结果的影响
通过表2可以看出, 增加训练级数在一定程度上可以提高检测的准确率, 但并不是训练级数越高越好. 实验表明, 训练级数为15级时候, 达到最优检测效果. 用此分类器对待检测图像进行结果分析如表3所示. 假设含鸟巢的正样本有P个,N个不含鸟巢的负样本, 则实际含鸟巢检测正确的样本称之为TP(ture positive), 而实际不含鸟巢检测结果错误的样本称之为FP(false positive), 实际含有鸟巢检测结果错误的称之为FN(false negative), 实际不含鸟巢检测结果正确的称之为TN(ture negative). 由于P=TP+FN,N=TN+FP, 因此数据计算结果如表3所示.
表3 AdaBoost检测结果
表中数值的计算公式如下:
FPR(虚警率, Fall-out or False Positive Rate)=FP/(FP+TN)=FP/N;
FNR(漏警率, Miss Rate or False Negative Rate)=FN/(FN+TP)=FN/P;
TPR(召回率, True Positive Rate)=TP/(TP+FN)=TP/P;
PPV(精确度, Precision or Positive Predictive Value)=TP/(TP+FP);
ACC(准确率, Accuracy)=(TP+TN)/(P+N).
测试实验中使用正样本90张, 负样本60张, 并使用LBP特征描述子进行分类器的训练. 正样本中有7张图像出现两个检测框, 一个正确一个错误, 79张正样本正确检测出目标位置, 因此TP=86,FN=4. 60张负样本中, 出现4个错误检测目标, 因此FP=4+7=11,TN=56, 则P=90,N=67, 最终计算结果如表3所示. 使用Haar特征进行分类器的训练, 对于90张正样本有10张出现两个检测窗口, 72张检测正确, 其余8张漏检. 60检测负样本中, 7张错检, 53张检测正确. 因此TP=82,FP=17,FN=8,TN=53,P=90,N=70. 实际算法使用中, 虚警率和漏警率越小越好, 从表3中可以看出, LBP算子相比Haar算法更加适合表述鸟巢纹理特征.
高压输电线路频频出现的鸟害现象, 一直是电力部门关注的问题. 本文通过分别使用Haar和LBP特征对鸟巢图像进行纹理提取, 并通过算法分析、 实验验证、 对比分析等得出结论, 提出的基于旋转不变的LBP特征训练AdaBoost分类器的高压杆塔鸟巢检测算法, 可以精确定位鸟巢所处位置. 同时, 课题将算法和QT平台进行融合, 设计了基于QT的鸟巢检测用户界面, 并在图形化界面完成测试样本的识别和检测结果的输出. 结果表明, 该方法有助于提高人机交互能力, 可以减轻电力工作人员的工作负担, 具有一定的应用价值. 随着课题研究的深入, 后期可以进一步拓展数据集, 以探索更高效的算法模型, 对本项目做进一步的优化.