张岩,罗小玲,潘新
(内蒙古农业大学 计算机与信息工程学院,内蒙古 呼和浩特 010018)
草原生态系统承担着防风固沙,调节气候,维护生物多样性等功能。鼠类作为其中的一员,其数量变化对生态平衡至关重要[1]。近年来,由于过度开垦,草原植被生长周期变长,植被矮小,覆盖率低,为鼠类生存提供了合适的生存环境,导致鼠类猖獗。严重威胁了草原生态环境和生物多样性,也制约着畜牧业的经济发展[2]。因此,动态的观察鼠类变化,加强鼠害监测,有利于及时开展防治,对生态改善和畜牧业发展具有重大意义。
随着草业信息技术的发展,无人机结合图像处理在鼠害监测领域得到了广泛的应用。周晓琳等[3]通过分割影像,选取出典型特征样本并生成初始模板,对有鼠洞的区域进行模板匹配,标记正确样本并更新模板,不断提高匹配精度;温阿敏等[4]用低空无人机遥感对鼠洞密度进行监测,通过3 类对象分类方法来提取鼠洞分布信息,并分析评价鼠洞提取的适用性和分类精度;马涛等[5]结合以往鼠害调查规律,发现鼠洞分布规律与地形之间存在关系,用无人机低空遥感影像提取地形因子数据,为研究地形与鼠洞关系奠定基础;花蕊等[6]通过提取无人机影像中洞口数、地表生物量等指标,构建多因子综合指标体系对研究区危害等级进行划分,为高效准确监测鼠害提供技术支持;熊瑞东等[7]使用4 种监督分类方法对无人机影像中的鼠洞进行提取分类并对比分析分类方法效果,为后续鼠害信息提取奠定基础。但是,传统的鼠洞提取过程复杂、繁琐,且生成的模型泛化性不强。
随着深度学习在计算机视觉领域的发展[8],目标检测算法也从传统手工提取变为深度卷积神经网络训练,精度、速度都得到了较大的提升。周俗等[9]用Mask R-CNN 网络和Res2Net 网络对鼠洞、次生裸地等地形地物进行分割并统计面积,结合不同地物特征比例和数量关系来预测草原发展趋势,建立鼠害监测模型;崔博超等[10]用YOLOv3 网络与YOLOv3-tiny 网络重新聚类先验框来训练鼠洞数据集,实现了对大沙鼠洞的识别定位;Wan等[11]从增加特征信息出发,在SSD 前置卷积网络上,减少对某些层的连接,并与Faster R-CNN、传统的人工检测进行对比,对鼠洞有较好的识别效果。以上深度学习的方法虽然涉及到算法的对比实现和精度的提高,但是没有考虑现实场景下的鼠洞拍摄存在的多种情形,数据集较为单一,导致模型鲁棒性较差。
为此,本研究以YOLOv5s 为基础网络,针对自然环境下拍摄的鼠洞存在特征弱、信息量少、容易受遮挡且与地物高度融合等情况,导致目标不易识别,检测精度较低。从特殊情形检测的鲁棒性出发,对算法进行优化改进,旨在实现复杂场景下鼠洞的精确定位,为鼠害监测在鼠洞检测指标方面提供模型依据。
本文的试验区域位于内蒙古自治区包头市达尔罕茂明安联合旗东南部的希拉穆仁镇S104 省道南侧,东与四子王旗毗邻,南与武川县接壤。地理坐标为东经109°,北纬41.32°,植被较为稀疏和低矮,鼠类物种丰富,主要鼠类包括长爪沙鼠、大沙鼠、中华鼢鼠和五趾跳鼠等[12-13]。数据采集平台为大疆御Mavic2 变焦版无人机,为丰富数据集特征,对夏季7 月和冬季12 月的草地鼠洞进行拍摄。
由于采集到的图像鼠洞目标样本少,为使模型学习到更多特征来提高泛化能力及避免过拟合,需要对数据集进行数据增强。本文除使用镜像翻转、倒置和旋转等方法扩充数据集外,还模拟拍摄因时间、天气等因素带来的影响,对图像进行模糊、加入噪声和调整亮度等处理。
使用伽马变换修正和增强对比度灰度过高或者过低的图片;对图像进行模糊处理来增强检测干扰,提升训练鲁棒性;通过抠图的方式裁剪目标样本,采用贴图的方法随机粘贴到数据集并进行平滑处理,最后筛选出合格的数据集进行训练。最终得到数据集共计图像2036 张,以8∶2 的比例划分训练集1629 张、测试集407 张。用LabelImg标注工具对鼠洞(mousehole)目标进行标注,并转换成YOLO 框架的TXT 类型标签文件。
(1)伽马校正。对部分数据集进行伽马校正,展示具体细节信息,方便目标标注,如图1 所示。可以看出当γ 值为0.5 时,鼠洞的轮廓更容易分辨,当γ 值为1.5 时,与地面背景融合度更高,不容易区分。
图1 伽马校正图像Fig.1 Gamma correction images
(2)模糊处理。高斯模糊作为低通滤波的一种,通过对图像进行平滑处理来达到模糊的效果,但是操作过程中作用不明显,如图2(b)所示。因此,通过设置PhotoShop 中动感模糊的参数来模拟拍摄过程中模糊的图像,效果如图2(c)所示。
(3)贴图处理。对包含鼠洞目标较少的图像进行相同背景下的套索抠图、复制粘贴等操作,增加鼠洞目标占比。因为抠图目标周围背景颜色相差不大,对抠出的目标进行随机数据增强,包括翻转和旋转等,直接复制粘贴到图像。贴图前后对比如图3 所示。
图3 贴图前后对比Fig.3 Comparison before and after texture mapping
YOLOv5s 由Input 输入端、Backbone 主干网络、Neck 颈部网络和Detect 检测头4 个部分组成,如图4 所示。
图4 YOLOv5s 网络结构图Fig.4 Network structure of YOLOv5s
(1)Input 输入端:对鼠洞图像进行裁剪、Mosaic 数据增强和自适应锚框计算;
(2)Backbone 主干网络:用来进行特征提取,YOLOv5-6.0 设计了2 种CSP 结构,C3_X 结构应用于Backbone 主干网络进行特征融合,C3_x_F 结构用于Neck 中用来提取图像中的特征信息;
(3)Neck 颈部网络:采用FPN+PAN[14-15]结构,如图5 所示。该结构使用自下而上和自上而下两种路径融合主干网络的特征信息,实现浅层细节信息和深层语义信息的充分结合。SPP 空间金字塔池化,通过3 种尺寸的最大池化操作,将任意大小的特征图转换为固定大小的特征向量,并将输出结果进行拼接。SPPF 用多个小尺寸池化核代替SPP 中单个大尺寸卷积核,来融合不同感受野的特征图,起到增大感受野的作用;
图5 FPN+PAN 结构Fig.5 FPN+PAN structure
(4)Detect 检测头:对图像特征进行预测,生成边框、置信度和分类损失等信息。使用NMS 非极大值抑制进行后处理,完成对预测框的过滤和边界框参数的修正,实现目标的准确定位和分类回归。
1.4.1 ECA 注意力机制
为了解决鼠洞检测背景复杂,容易漏检、误检的情况。在图像检测任务中融合注意力机制,更好的关注鼠洞特征,抑制背景信息干扰。
ECANet[16]是在分析SENet 跨通道交互过程中存在模型降维,会对预测产生负面影响的基础上提出(图6)。去除了SENet 中的FC(全连接层)层,将全连接改为一维卷积的形式。由于是一种非全连接,因此每次卷积只对部分通道起作用,实现了跨通道交互。在不降维的GAP(Global Average Pooling 全局平均池化层)聚合特征[C,1,1]后,先自适应的确定卷积核k 的大小,进行一维卷积后,再通过Sigmoid 函数学习通道注意力。k 与C 之间存在映射,通过通道维数来计算卷积核大小,k 的计算公式为:其中γ=2,b=1。
图6 ECA 注意力机制Fig.6 ECA attention mechanism
在YOLOv5 中有2 种方法引入注意力机制,第1 种是Backbone 骨干网络,第2 种是Head 检测头。通过试验发现将ECA 注意力机制模块加在Backbone 主干网络C3 层的平均检测精度更高,在C3 模块中加入ECA 注意力机制,结合为C3ECA模块,如图7 所示。在主干网络下采样的第2 层开始进行特征增强,来获得更多细节信息,更加准确的检测小鼠洞。
图7 C3ECA 模块Fig.7 C3ECA module
1.4.2 转置卷积
卷积神经网络用来进行特征提取,通过多层卷积核池化等操作,在得到丰富语义信息的同时,特征图也在变小,会丢失目标信息。因此,需要将图像恢复到原来的尺寸,也就是上采样。常见的上采样方法有最邻近插值、线性插值、转置卷积和反池化等。YOLOv5s 中采用最近邻插值进行上采样,即缺少的像素直接用最邻近的颜色生成,但这样会破坏原图中像素的渐变关系。
为了不破坏渐变关系,使用转置卷积[17]来进行上采样。标准的卷积运算在kernal 矩阵与input矩阵之间建立一个多对一的映射关系,转置卷积建立了一个标准卷积的逆向操作,形成一对多的映射关系。由于常规卷积的操作是不可逆的,所以转置卷积并不是通过输出矩阵和卷积核计算原始输入矩阵,而是计算得到保持相对关系位置的矩阵。转置卷积通过网络训练得到可学习参数的适当值,采用最优的上采样方法,来恢复小部分缺失的信息。转置卷积的计算过程如图8 所示:
对特征图进行补零操作即四边补K-P-1 个0,单边补S-1 个0,将卷积核进行上下、左右翻转后,进行卷积操作。例如,输入一个3×3 大小的特征图,步长stride=S=2,padding=P=1,对矩阵进行补零操作,填充后变为7×7 矩阵,将卷积核kernalsize=K=3 上下、左右翻转后,进行卷积操作得到5×5 矩阵。转置卷积的计算公式如公式(2)所示:
1.4.3 SIoU Loss
在鼠洞目标检测中,存在2 个距离较近目标的回归框相交出现多框的情况。YOLOv5s 中的回归损失函数是CIoU[18],虽然引入了检测框的长宽比要素,但是只能度量宽高比的一致性,不是真实宽高与其置信度的差异,会阻碍预测框回归优化。而且对于小鼠洞来说,预测框和真实框之间的中心点距离作用更明显,长宽比并不占优势。SIoU[19]从回归向量之间的方向和夹角出发,引入真实框和预测框之间的向量角度,对预测框进行x轴或y 轴某一方向的约束,来提高收敛速度。SIoU 由角度成本Angle cost,距离成本Distance cost,形状成本Shape cost 和IoU cost 四个成本函数组成。
(1)角度成本:
以预测框的中心B(bcx,bcy)为出发点,设置到真实框中心点距离的横向轴或纵向轴来降低锚框的自由度,实现沿着相关轴快速接近真实框,如图9(a)所示,角度成本计算如公式(3)所示。
图9 角度成本和距离成本的计算Fig.9 Calculation of angle cost and distance cost
其中,σ 和ch分别表示为真实框和预测框中心点之间的距离和高度差。
(2)距离成本:
表示预测框与真实框的最小外接矩形的对角线距离,如图9(b)所示,距离成本计算公式如公式(4)和公式(5)所示。
其中,cw和ch代表最小外接矩形的宽和高。
(3)形状成本:
其中,w 和wgt分别表示预测框与真实框的宽,h 和hgt分别表示预测框与真实框的高,θ 取值接近4。
最后,得出SIoU 回归损失函数为:
图10 IoU LossFig.10 IoU Loss
1.4.4 改进后的YOLOv5s 模型
对于鼠洞这类目标的检测,YOLOv5s 经过多次下采样会丢失鼠洞浅层信息,存在容易漏检的情况,对于距离较近的鼠洞会出现冗余框。因此,对YOLOv5s 网络进行改进。在主干网络加入注意力机制来更好的进行特征提取,实现鼠洞的精准定位和识别;采用转置卷积来学习最优的上采样方法,恢复缺失的鼠洞信息,使模型获取更多的特征。改进后的YOLOv5s 模型如图11 所示。
图11 改进后的网络结构图Fig.11 Improved network structure diagram
本文采用目标检测领域最常用的指标,检测精度P、召回率R、平均检测精度mAP、浮点运算次数GFLOPS 和每秒检测帧数FPS 等指标来衡量算法性能,计算公式如下:
其中,TP 表示模型正确检测出来的鼠洞个数,FP表示模型误检的鼠洞个数,FN 表示模型漏检的鼠洞个数。P 和R 作为横纵坐标画出PR 曲线p(r),计算PR 曲线下面积为平均精确度AP,mAP 是各类AP 的平均值,用来衡量模型性能的好坏。
试验所用的计算机硬件环境为12th Gen Intel(R)Core(TM) i5-12600KF 3.70 GHz 16.0 GB,NVIDIA GeForce RTX 3080 GPU,软件环境为Windows 10 操作系统,深度学习框架为Pytorch,所用语言为Python。输入图像为640×640,训练时batch size 为8,初始化学习率为0.01,优化器为Adam,可自动调整学习率,学习率动量为0.9,权重衰减为0.000 5。训练中设置相同的数据集和参数,根据训练生成的数据绘制目标训练损失函数曲线,如图12 所示。可以看出前50 个epoch 快速拟合,在200 个epoch 左右,loss 值逐渐平缓收敛。因此,训练的epcoch 设为200。
图12 训练损失曲线Fig.12 Training loss curve
2.3.1 注意力机制对比试验
为验证注意力机制结合主干网络C3 模块对YOLOv5s 性能的影响,对比SE、CBAM、CA 和ECA 四种主流注意力机制,在相同的环境下进行实验,结果如表1 所示。可以看出不是所有的注意力机制添加位置对算法都有提升,除了CA 之外,其它3 种算法相比原始YOLOv5s 算法的P、R 和mAP 三类指标都有不同程度的提升。其中,SE 的召回率较高,但是检测精度提升不够明显;CBAM的检测精度、召回率和平均检测精度分别提升了2.6%、3%和2.7%,检测精确度最高,平均检测精度也较高,综合检测效果较好;ECA 的召回率和平均检测精度最高,是在SE 的基础上增加了通道权重加权,从而保证通道权重和通道之间的关系不被破坏,3 类指标相比于SE 分别提高了2%、0.1%和1.3%,综合检测效果比SE 更好。所以,本文选择ECA 结合C3 模块进行目标检测。
表1 不同注意力机制的对比Table 1 Comparison of different attention mechanisms
2.3.2 消融试验
为了验证3 种改进策略的有效性,在自建数据集上展开消融实验,并对性能进行分析。为了保证试验的准确性,训练过程中使用相同的参数配置,结果如表2 所示。
表2 消融试验Table 2 Ablation experiments
可以看出,相较于YOLOv5s 算法,4 种改进策略都有不同程度的提升。其中,采用转置卷积优化上采样方法后,P、R、mAP 分别提升了3.2%、2.6%和3.2%,其中精确度提高最为明显,说明在上采样过程中能恢复部分丢失的信息,使提取的鼠洞信息更加充分。在Backbone 主干网络中引入ECA 后,P、R、mAP 分别提升了2.5%、3.8% 和2.9%,FPS 达到67.9。融合ECA 注意力机制可以对重要的通道特征进行集中关注,减少要处理的信息量,结合C3 模块不仅减少了模型参数量,还提升了检测速度和检测精度。改变回归损失函数为SIoU,P、R 和mAP 分别提高了2.8%、4.3%、1.4%,可以有效减少冗余框,提高召回率,加快模型收敛速度。同时本文提出模型的P、R 和mAP比原始YOLOv5s 提高了3.3%、3.7% 和3.5%,FPS 达到56.7。在提高平均检测精度的同时,改进后FPS 有所下降,但是仍然可以满足实时检测的能力。改进前后的模型在数据集上得到的mAP如图13 所示。
图13 改进前后mAP 对比图Fig.13 Comparison of mAP before and after improvement
2.3.3 鼠洞识别结果与分析
为验证所设计的模型对复杂场景的检测效果,对测试集图像识别结果进行分析。在图像遮挡、阴影影响、模糊和光线较暗的场景下对鼠洞的识别情况如图14 所示,识别正确的用白色椭圆表示,多检或漏检错检用黑色椭圆表示。可以看出改进后的模型在鼠洞被遮挡的情况下也能完全识别出鼠洞;在有阴影的情况下,也能避免阴影,只识别鼠洞;在图像模糊的情况下也能准确识别鼠洞特征;在光线较暗的情况下,对间隔距离较近的鼠洞也能分别正确框出鼠洞位置,不会出现多框的情况。
图14 改进的模型在不同场景下的识别Fig.14 Recognition of improved model in different scenarios
2.3.4 主流目标检测模型对比
为验证改进算法的有效性,将改进的算法与SSD,Faster-RCNN,YOLOv4 这3 种常用目标检测网络在数据集上进行实验对比,将mAP 与体积、FPS 等作为评价指标,主流算法性能对比如表3 所示。可以看出改进后的网络相较于其他网络,有着较高的mAP 值,相对于SSD、Faster-RCNN和 YOLOv4 分别提高 30.61%、13.57% 和21.53%。SSD 虽然识别速度最快,但是平均检测精度最低;Faster-RCNN 作为二阶段目标检测算法,平均检测精度较高,但是检测速度最慢;YOLOv4 的体积最大,而且检测效果不如Faster-RCNN 好。综上所述,本文提出的模型在平均检测精度、体积和速度上相对有较优秀的表现。
表3 主流算法性能对比Table 3 Performance comparison of mainstream algorithms
选择光线较暗、模糊和遮挡3 种情形下的鼠洞图像,进行主流算法检测效果的展示。4 种模型识别结果如图15 所示,用蓝色椭圆表示未识别到的鼠洞目标,白色椭圆表示检测框重叠多检情况,用黄色椭圆表示图像上鼠洞的正确位置。可以看出改进的网络相较于原始YOLOv5s 网络,对这3 种情况的识别结果较为准确,也就是黄色椭圆所框的位置。在模糊和遮挡的情况下YOLOv5s 存在漏检(图15d 蓝色椭圆标识),改进的算法优化了上采样方法,可以恢复下采样丢失的信息,一定程度上提高了模型的预测准确性。其它3 种算法中SSD 识别效果最差,漏检情况严重(图15a 蓝色椭圆标识),存在鼠洞识别不出来的情况;Faster-RCNN 虽然可以较为准确的检测到目标,但是对于同一鼠洞存在检测框冗余的情况(图15b 白色椭圆标识);YOLOv4 漏检情况严重(图15c 蓝色椭圆所示),在3 种情况下的检测均不是很理想。
图15 不同算法检测结果对比Fig.15 Comparison of detection results of different algorithms
现阶段使用深度学习模型进行鼠害监测的研究较少,虽然在遥感图像中将鼠洞归为小目标,但是缺少对鼠洞目标在图像中占比的分析,导致“小目标”的定义缺乏统一标准。计算机视觉领域[20]将边界框面积与图像面积做比,中位数介于0.08%~0.58%之间的视为小目标。对本试验数据集锚框宽高进行聚类分析,如图16 所示,可以看出锚框宽高主要聚集在0.05 以下,鼠洞目标在整张图像中的占比集中为为0.25%左右,符合小目标的定义。
图16 数据集分析图Fig.16 Dataset analysis chart
采用YOLOv3 算法和SSD 算法对本研究的数据集进行训练并测试,发现实验效果并没有崔博超等[10]和Wan 等[11]的研究效果好,检测准确率较低,存在鼠洞目标识别不出来的情况。其根本原因在于鼠洞检测领域没有公共的数据集,不同地形、气候的数据集种类和目标占比等条件也不尽一致,导致模型检测准确率难以界定。另外,本研究发现不同季节植被生长状况及光照影响、拍摄过程中图像模糊、鼠洞在图像中占比大小等情况都会影响鼠洞检测的准确率。在现实应用中,拍摄鼠洞的各类情况都需要考虑进去,这样才能确保检测模型的普适性。本文从数据集的广泛性和多样性出发来提高模型泛化能力,旨在训练出更具鲁棒性的鼠洞检测算法。对比不同深度学习算法发现YOLOv5s 算法对鼠洞的检测效果较好,检测准确率、模型体积和速度都较有优势,因此在其基础上进行算法优化改进,提高检测准确率。
针对鼠洞小目标与地物高度融合容易误检、漏检的情况,本文从特征提取、特征融合和锚框预测定位3 个角度出发。通过融合ECA 注意力机制模块、重置上采样方法和更换目标检测损失函数等方式来优化YOLOv5s 模型。改进的模型识别鼠洞的平均精确度为98.2%,比原始YOLOv5s 模型提高了3.5%,FPS 达到了56.7,且在特殊场景下无漏检、错检的情况,可以保证鼠洞检测的准确性和实时性。为更丰富的鼠洞拍摄场景提供借鉴,也为鼠洞检测提供更具通用性的深度学习模型。
本文提出的改进方法可以明显改善YOLOv5s 模型出现的误检漏检情况,获得较好的检测效果,满足现实场景下无人机低空遥感鼠洞检测的精度和速度需求,为鼠害监测提供鼠洞检测这一指标的模型支撑。但是,在提高检测精度的同时,不可避免的会增加模型参数,后续会把重点放在模型参数的减少和检测速度的提升上。同时,鼠洞检测还需结合地区鼠类繁殖变化情况,考虑是否为有效鼠洞,进行动态检测,综合判断。