窦安亮,路 红,杜一君,刘义亭,彭宇洋
(南京工程学院自动化学院, 江苏 南京 211167)
随着绿色城市建设推进,城市的绿化面积不断增加,树木涂白以及草坪修剪等绿化管理和养护工作量越来越大.为了降低人工成本和节约劳动力资源,涂白机器人和割草机器人等智能绿化设备的研发势在必行.基于视觉的树木检测和识别作为智能化核心技术之一也成为研究的重中之重.
由于缺乏有效的图像表示,传统的目标检测算法都基于手工特征构建,通过设计复杂的特征描述模型及加速算法以利用有限的计算资源[1].文献[2]根据Hough变换以及对树木纹理的分析提出了一种基于图像处理的树木检测算法;文献[3]通过对树木基本测树因子的检测提出了一种基于HALCON的树木检测方法;文献[4]结合激光脚点几何分布特征,应用冠层高度模型CHM与拉普拉斯算子研究树木提取及机载LiDAR树木检测在电力巡线中的应用;文献[5]利用HALCON算子将RGB图像转换到HSV空间后进行树木检测算法研究,并运用MER算法生成树木轮廓的最小外接矩形,为后续的树木间距测量等工作奠定基础.随着计算机技术以及硬件算力的发展与完善,基于深度学习的树木检测算法开始大放异彩.文献[6]利用车载激光雷达系统采集城市道路两旁树木的点云和图像,对树木进行各项参数的估计与分类研究,并利用Faster R-CNN网络对城市道路多视角图像中的树木进行检测和分类;文献[7]在快速区域神经网络目标检测框架基础上,通过对抗生成训练策略学习表征树木的最少特征信息,有效降低阴影对树木检测的干扰;文献[8]出基于优化Tiny YOLO v4算法的草坪树木检测算法,为在算力有限的割草机器人上实现草坪树木目标检测提供了有效思路.
本文采用YOLO v5中体积最小的YOLO v5s目标检测模型为基础[9-10],通过引入BiFPN-ECA结构和GSConv卷积结构[11-13],使网络能够更加快速地进行特征提取及多尺度特征的融合,在大幅降低模型大小、提升模型性能的同时避免牺牲模型精度;损失函数使用SIoU[14],从匹配的方向、重叠区域、框中心间的距离、纵横比四个方面考虑,加快了训练过程,并且获得了更好的树木检测效果.
改进的YOLO v5模型如图1所示.模型的Backbone部分主要采用C3残差网络结构来增强梯度传播,再通过SPPF空间金字塔池化结构来应对目标多尺度问题.Neck部分的作用是进行多特征融合,这里将原本的PA-Net结构替换成本文提出的BiFPN-ECA结构,引入高效通道注意力机制(efficient channel attention,ECA)增加双向加权特征金字塔(bidirectional feature pyramid network,BiFPN)对关键特征的关注度,提升特征提取速度、增强特征融合质量;Neck部分的卷积采用GSConv卷积替换普通卷积以减少计算量;Head部分使用SIoU损失函数替换CIoU,加快网络收敛,进一步提升回归精度,分别在20×20、40×40和80×80尺度上实现大中小目标类别和位置预测.
图1 改进YOLO v5网络结构图
图2 BiFPN-ECA结构
X′=δ(Conv1d(g(X)))⊗X
(1)
式中:g(X)为全局平均池化;Conv1d为1×1卷积操作;δ为Sigmoid激活函数;⊗为逐元素相乘;X为输入特征.
模型轻量化比较常用的一种方法为使用深度可分离卷积(depth-wise separable convolution,DSC)操作替换稀疏卷积(sparse convolution,SC)操作来减少参数量[15].然而DSC操作输入图像的通道信息在计算过程中是分离的,这会导致特征提取和融合能力有所降低,虽然模型的推理速度大大加快,但是模型精度有不小的损失.
为了在大幅降低模型规模、提升模型性能的同时尽可能少地牺牲模型精度,本文采用GSConv卷积结构,如图3所示,通过增加一个shuffle操作使得密集卷积SC操作生成的信息与DSC操作生成的信息充分融合.本文方法与SC、DSC的可视化对比结果如图4所示.由图4可见,与DSC输出的特征图相比,GSConv输出的特征图与SC输出的特征图更为相似,这表明使用计算量较小的GSConv结构的模型精度与使用SC输出的原始模型精度接近.
图3 GSConv结构
目标检测网络的训练一般需要至少定义分类损失和边界框回归损失两个损失函数,而损失函数的定义往往对检测精度以及训练速度产生较大的影响.本文采用SIoU损失函数,通过引入向量角度,可以尽可能减少与距离相关的变量,如图5所示.
图5 SIoU损失函数计算
SIoU损失函数考虑的惩罚指标包括向量角度损失Λ、中心点距离损失Δ、纵横比损失Ω、预测框与目标框之间的重叠程度损失IoU.当向量角度α≤45°时,收敛方向沿着α减小的方向;反之,则沿着α的余角β减小的方向收敛.设:BGT为真实边界框的面积;B为预测边界框的面积;ρx=(cw/cx)w;ρy=(ch/cy)2;v∈[2,θ];qw为真实边界框宽度差和高度差的绝对值与最大值之比;qh为预测边界框宽度差和高度差的绝对值与最大值之比.各指标计算公式为:
(2)
(3)
(4)
预测框与目标框之间的重叠程度损失计算公式为:
(5)
最终整个SIoU的计算公式为:
LSIoU=1-IoU+(Δ+Ω)/2
(6)
实地采集校园内以及学校附近常见的绿化树木(梧桐树、银杏树、玉兰树等)的图像和视频,对收集的视频采用帧差法将视频的每一帧图像由RGB色彩空间转化到LUV色彩空间(如图6所示),取帧间差分强度为极大值的帧作为视频的关键帧进行样本提取,连续帧的平均差分强度计算式为:
图6 关键帧提取
(7)
式中:fn(x′,y′,r)、fn-1(x′,y′,r)分别为第n帧和第n-1帧像素坐标(x′,y′)处的r分量强度,r={L,U,V};W、H分别为每一帧图像的宽度和高度.
通过Python软件在网络上爬取一些其他城市、城镇以及乡村街道上的绿化树木图像.将实地采集、视频抽帧、网络爬取获得的图像筛选后共获取到2 000幅图像,为了进一步提升数据集的丰富性和抗干扰性,通过旋转、HSV偏移以及添加噪声等方法进行图像增强.旋转采用固定步长旋转,计算式为:
(8)
式中:(x0,y0)为图像初始坐标;(x1,y1)为旋转后的图像坐标;Hrotate为旋转矩阵;i为旋转的次数,i∈[1,2,3,…,n];θ为每次旋转的步长.
如图7所示,最终获得5 000幅图像的数据集,按照8∶1∶1的比例划分本文改进的YOLO v5模型所需要的训练集、验证集和测试集,即4 000幅图像为训练集,500幅图像为验证集,500幅图像为测试集.运用Labelimg软件对数据集进行YOLO格式的标注,类别除了需要的正样本已涂白的树(painted tree)和未涂白的树(unpainted tree),还增加了道路上容易产生误识别的强干扰物的标签,如指示牌(indicator)、路灯(street lamp)、电线杆(telegraph pole)等,同时还包含行人(people)、车辆(car)等常见类别.
图7 城市树木数据集
试验环境为:Windows操作系统;GeForce GTX 3080显卡进行运算;显存大小为10 GB;CPU配置为Intel(R)Core(TM)i7-12700F,CUDA版本为11.4.0;Pytorch版本为1.10.2;Python语言环境为3.7.4.试验总迭代次数为300次,迭代批量大小设置为4,优化器选择SGD,并设置早停机制,防止数据过拟合.
图8为改进后模型训练结果.由图8可见,大概在150个迭代周期后,模型趋于收敛,收敛速度较快.本文采用常用评价指标准确率、召回率、平均精度均值mAP_0.5等进行目标检测,改进后的YOLO v5模型的mAP_0.5达到了40.1%,比原始YOLO v5模型的mAP_0.5提高了约5%.
(a) 训练回归框损失
改进后算法的树木检测结果如图9所示.由图9(a)和图9(b)可见,在白天光照不足(如逆光)的情况下,本文方法可以识别出涂白的树木及未涂白的树木,并且准确区分路灯、指示牌等街道上常见的强干扰物;由9(c)可见,在树木比较密集以及多尺度的情况下,本文检测方法可以准确识别远处以及近处的树木,同时发现树木之间的行人,从而可以避开行人,保证安全;由图9(d)可见,在夜间光照不足、树木多尺度的情况下,本文检测方法能够准确识别出密集的树木以及路灯等强干扰物.
(a) 场景1
为了直观地验证改进后算法的优越性、体现改进前后算法的差异性,选择更加复杂的场景对改进前后的算法进行检测结果对比.如图10所示,在夜间、复杂背景下(检测目标具有多尺度变化情形),原YOLO v5算法出现了漏检、误检等问题,而改进后的算法依然可以准确地识别.
(a) 原YOLO v5算法
为了进一步确认每个改进点的有效性,进行消融试验,试验结果如表1所示.表1中模型A为原YOLO v5算法;模型B为在模型A的基础上引入BiFPN-ECA结构,模型B的平均精度均值mAP_0.5较模型A提升了3%,而模型参数量只增加了0.4 MB;模型C为在模型B的基础上引入GSConv结构,虽然损失了一点模型精度,但是模型的参数量约减小为原来的50%;模型D为在模型C的基础上引入SIoU损失函数,对模型有3%的mAP_0.5提升以及0.3 MB的参数量减少,模型的帧率也增加到了52.63帧/s.试验结果表明,BiFPN-ECA结构、GSConv卷积操作以及SIoU损失函数均可以提升树木检测算法的检测效果,最终改进后的方法相比于原YOLO v5(模型A)平均精度均值提升了5%,模型参数量减少了接近50%,模型的帧率提升了5帧/s.
表1 消融试验结果
针对目前城市道路环境复杂、草坪树木密集等引起的树木误检、漏检以及模型较大不易部署在边缘计算设备上等问题,提出一种基于改进YOLO v5的城市树木检测算法.改进算法包括:设计一种BiFPN-ECA结构,增强特征融合质量;利用改进GSConv卷积结构,提升特征提取能力并减少运算量;引入SIoU损失函数,加快网络收敛,进一步提升回归精度.采集城市常见绿化树木图像和视频,建立城市绿化树木样本集进行模型对比试验,试验结果表明:改进后方法的mAP_0.5相比于原YOLO v5模型的提升了5%,模型参数量减少了接近50%,模型的帧率提升了5帧/s.改进后的算法能够在满足树木检测的精度的前提下保证检测的实时性.本文所提出方法和试验结果对推进绿色城市建设和城市绿化智能化设备的落地具有一定的理论和研究意义.