杨军奇 ,冯 全,王书志,张建华,杨 森
(1.甘肃农业大学机电工程学院,兰州 730070;2.西北民族大学电气工程学院,兰州 730030;3.中国农业科学院农业信息研究所,北京 100081)
在农业场景中,由于田间环境复杂,目标大小不一,农业场景下目标检测存在一定困难。尤其是小尺寸目标,因图像中所包含目标特征弱、特征信息较少等原因,导致检测效果不理想[1-2],因此小目标检测是目标检测领域研究难点。赵德安等为提高苹果采摘机器人在果实遮挡、黏连和套袋等多种复杂环境下检测准确率问题,提出一种基于YOLOv3 深度卷积神经网络的苹果定位方法[3],但对密集苹果识别准确率较低。吕石磊等提出一种改进的YOLOv3-LITE 轻量级柑橘识别网络,在遮挡程度对比试验中,分析果实遮挡与重叠对试验的影响,结果显示检测目标尺寸过小以及目标过于密集是导致检测精度下降主要因素[4]。朱德利等提出一种基于MF-SSD 卷积神经网络的玉米穗丝检测模型[5],利用特征融合方法,对小目标检测AP 值提高20.4%,玉米穗丝(红色)和背景(叶片绿色)区别明显,且属于稀疏型小目标检测(每张图像有3~4个目标)。肖德琴等为解决传统水果检测方法对小目标(柚子)漏检问题,提出一种基于IFSSD 改进型特征融合单镜头检测器[6],对小目标检测AP值达到86.68%,改善小柚子漏检情况。
农业场景下小目标检测对于实际工程应用非常重要,现阶段研究工作主要集中在稀疏型小目标检测,对于农业场景中的密集小目标检测问题的相关研究还不充分。本文为研究农业场景下密集小目标难检测问题,采用四轴飞行器获取田间密集小目标图像数据集,提出一种融合卷积注意力机制的CBAM-YOLOv4 密集小目标检测模型,本文旨在为林业资源调查、农作物幼苗监测[7]、果蔬智能化机械采摘、养殖场动物计数[8]等方面提供技术支持。
葡萄叶片图像采集地点为甘肃省葡萄与葡萄酒工程试验示范基地(甘肃兰州安宁区),采集时间为2020 年7 月上旬至9 月下旬。使用大疆·御MAVIC AIR 四轴飞行器进行低空慢速飞行拍摄,飞行器搭载照相机型号为DJI FC2103。拍摄时相机垂直于地面,在距离葡萄棚架上表面3~5 m 高空采用拍摄和录像两种方式采集图像数据,拍摄图像尺寸为4 048×2 272,水平和垂直分辨率均为240 dpi,位深度24,视频尺寸为3 840×2 160,帧速率为30 FPS。图像包含晴天、阴天、正午和傍晚等多种不同光照条件,以及有风天气图像,根据拍摄图像中叶片数量及大小,将图像划分为一般密集、中度密集和高度密集三类。其中,高度密集指单张图像中人工计数目标数量为1 000以上,目标大小为50~110 像素;中度密集图像目标数量为600~1 000,目标大小为110~180像素;一般密集图像目标数量为300~600,目标大小为180~220像素。
图1为试验数据部分样本示例,随密集程度越高,图像中包含叶片数量越多,叶片重叠度越大;晴天拍摄叶片太阳光照射投影阴影较多,且目标叶片图像呈现过曝现象,叶片轮廓模糊;有风等特殊天气,图像中目标叶片倾斜,叶片可见范围降低50%,且大部分仅背面叶片可见,常见于一般密集图像,同时,在飞行器拍摄距离目标较近时也较为常见。此外,葡萄棚架为倾斜“厂”字型,拍摄的图像中目标尺寸大小不一,整体表现为一侧叶片偏小,另一侧叶片偏大。
对拍摄和录像两种方式获取的试验图像,作如下预处理得到密集小目标检测数据集。
①对采集视频每隔30 帧提取一张图像,使用labelImg 工具进行人工标注数据。数据标注信息保存为PASCAL VOC 数据集格式,最后通过Python编程将人工标注的数据文件批量转换为YOLO模型训练格式,并作归一化处理,使数据介于0~1 之间,有利于模型训练时更快读取数据。数据最终格式为每行5个参数作一组,代表一个目标标注信息,其中5个参数分别为目标类别、目标中心位置横坐标、目标中心位置纵坐标、目标框宽以及目标框高。
②因获得的数据集原始图像尺寸过大,每张图像上目标数目过多,准确标注每一个目标叶片存在困难。同时,为降低模型显存占用率,减少运算量,加快模型训练速度,对原始图像进行分割后标注,分割后图像尺寸为640×540。
图1 部分试验数据样本示例Fig.1 Sample of datasets
③数据集总共包含1 825张图像,使用Python编程将数据集随机拆分为70%训练集、10%验证集、20%测试集。
YOLOv4是一种性能良好且计算效率高的目标检测模型[9],由四部分构成:输入(Input)、骨干网络(Backbone)、颈部(Neck)和头部(Head),网络结构如图2所示。
①YOLOv4 输入端采用Mosaic Augment、cmBN、SAT自对抗训练等策略。
②YOLOv4 骨干网络采用CSP-Darknet53[10],该网络在Darknet53 基础上加入5 个CSP(Cross Stage Partial)模块,在加深网络以获得更多特征信息的同时,可有效防止梯度消失问题。
图2 YOLOv4网络结构Fig.2 Network structure of YOLOv4
③YOLOv4 颈部结构采用空间金字塔池化(SPP,spatial pyramid pooling)[11]和路径聚合网络(PANet,Path Aggregation Network)[12]。SPP 模块位于骨干网络后,使用核大小为k={1×1,5×5,7×7,13×13}进行最大池化,然后将不同尺寸特征图通道采用concat方式连结作为输出,SPP 操作可有效增加骨干特征的感受野,显著分离最重要的上下文特征。YOLOv4 网络结构在FPN 层之后又添加一个自底向上的特征金字塔,自顶向下的FPN结构对强语义特征比较敏感,而自底向上的FPN结构又可传达强定位特征,两种结构相结合,对骨干网络中不同检测层参数聚合,进一步加强网络模型特征提取能力。在自底向上的FPN 中加入两个PAN 结构,PANet 通常使用自适应特征池化将相邻层相加进行mask 预测,而YOLOv4 将相邻层进行Concat操作,提高模型预测准确性。
④YOLOv4回归损失函数(Bounding box regres⁃sion loss)采用CIoU_Loss[13],CIoU_Loss 不仅可解决边界框不重叠导致梯度消失问题,且考虑边界框中心距离以及边界框宽高比信息,使回归预测框速度和精度有所提升,其表达式如下:
式中,A、B 分别代表预测框和真实框,Actr、Bctr分别表示预测框和真实框中心点坐标,ρ(Actr,Bctr)表示Actr和Bctr之间欧式距离,c表示预测框和真实框最小包围框对角线长度,wgt、hgt、wp、hp分别表示真实框宽和高以及预测框宽和高,α表示权重函数,v表示衡量宽高比一致性参数。
2.2.1 CBAM注意力机制
多尺度检测网络可较好利用来自网络浅层的特征信息,但也有来自图像背景的噪声信息,本文考虑引入注意力机制进行检测,以减少不必要的浅层特征信息,提高小目标检测效果。注意力机制最初应用在机器翻译中,将其应用于目标检测,可显著增强检测效果。本文引入一种基于卷积块的注意力机制模块,该模块(Convolutional block attention module,CBAM)是一个简单且有效的前馈卷积神经网络,在给定一个中间特征图基础上,CBAM模块沿通道和空间两个不同维度顺序推断出注意力图,然后将注意力图与输入特征图相乘以细化自适应特征。CBAM是一个通用的轻量级模块,可无缝集成到CNN 网络中,进行端到端训练。
CBAM 网络结构实现原理如图3所示,给定一个中间特征图F ∈ℝC×H×W作为输入,依次推导出一维通道注意力图Mc∈ℝC×1×1和二维空间注意力图Ms∈ℝ1×H×W,在相乘过程中,注意力值相应进行传播,最终输出F′′。实现过程如下式:
其中,⊗表示逐元素相乘。
图3 CBAM网络结构Fig.3 CBAM network structure
①通道注意力模块
通道注意力模块(Channel attention module,CAM)利用通道间特征关系生成通道注意力图,在该模块中,首先使用平均池化和最大池化操作聚合特征图空间信息,生成两个不同的空间上下文描述符:,其分别表示平均池化特征和最大池化特征。然后将这两个特征描述符置于一个共享网络,以生成通道注意力图Mc∈ℝC×1×1。该共享网络由多层感知器(MLP,Multi-Layer Percep⁃tron)构成,其中包含一个隐藏层,为降低参数开销,将隐藏层激活大小设置为ℝC/r×1×1,其中r为缩减比。将共享网络应用于每个描述符后,再使用逐元素求和方式合并输出特征向量。网络结构如图4a所示,通道注意力计算公式为:
其中,σ 表示sigmoid 函数,MLP 表示用于参数共享多层感知器,Avg Pool(·)和Max Pool(·)
②空间注意力模块
空间注意力模块(Spatial attention module,SAM)利用特征空间关系生成空间注意力图。空间注意力模块通过两个池化操作来聚合特征图的通道信息,生成两个二维映射:分别表示通道上的平均池化特征和最大池化特征,然后经一个标准卷积层进行卷积和连接,最终生成二维空间注意力图。网络结构如图4b 所示,计算公式如下式:
其中,σ 表示sigmoid 函数,f7×7表示卷积核大小为7×7的滤波器。
2.2.2 CBAM模块嵌入设计
在小目标检测任务中,随着网络层次深入,特征图中小目标特征越来越弱,导致网络漏检和误检小目标。而CBAM模块能增强特征图中重要特征信息(通道特征和空间特征),使网络模型在特征学习时更有“重点”。如图5所示,本文将CBAM注意力模块嵌入YOLOv4 骨干网络CSP-Darknet53中,位于残差块中Add操作和CSP模块Concat操作后,如图5b 中浅绿色模块所示。此嵌入构造不影响YOLOv4模型训练,本文模型仍按YOLO 原训练方法进行训练。
图4 CAM与SAM模块结构Fig.4 Network structure of CAM and SAM
图5 CBAM-YOLOv4网络结构Fig.5 CBAM-YOLOv4 network structure
本次试验模型训练、测试所用硬件为思腾合力IW4202(SITONHOLY)机架式服务器,硬件配置为Intel®Xeon(R)CPU E5-2620 v4@2.10GHz,GPU采用四块NVIDIA TITAN Xp,单卡显存容量12 GB,运行内存64 GB。软件平台为Ubuntu 16.04.6 LTS 64位操作系统,CUDA Toolkit 10.1,CUDNN v7.6.5,编程语言为Python 3.6,深度学习框架为Pytorch 1.7.0。
模型训练时采用64 个样本作为一个批次(Batch)一次性加入内存中,将每个批次分为8 个子批次(Subdivisions)前向传播,待所有子批次全部完成前向传播后,进行反向传播,完成参数更新。为防止过拟合,每次权值更新时,使用BN(Batch normalization)进行正则化,并为每一层添加丢弃层(Dropout),保持提取特征的独立性,其权值丢弃率设为0.5,权值衰减率(Decay)为0.0005,动量(Momentum)为0.949;为增加数据样本,进行数据增强,将样本旋转角度、饱和度、曝光度和色调分别设为5、1.5、1.5 和0.1;初始学习率为0.001,并采用steps学习率调整策略(Policy),分别在迭代12 000 和15 000 次时学习率衰减为原来的十分之一。为与本文CBAM-YOLOv4 模型进行对比,按相同方法训练YOLOv3、YOLOv4 和Effi⁃cientDet网络。
图6 是改进YOLOv4 模型迭代20 000 次损失值变化曲线,可看出,模型在前12 500 次训练损失值逐步减小,之后趋于平缓,模型逐渐收敛。
图6 训练损失变化曲线Fig.6 Training loss curve
为验证密集小目标检测方法性能,对比不同密集程度、不同光照条件及有风天气下叶片识别效果,分析模型在不同试验场景下识别准确率,并将本文提出的密集小目标检测网络与YOLOv3[14]、YOLOv4 和EfficientDet[15]等著名目标检测网络进行试验对比。
本文采用目标检测常用的AP值(Average preci⁃sion)评价检测效果,计算方式采用MS COCO 数据[16]比赛定义,计算公式如下:
其中,P和R分别表示准确率(Precision)和召回率(Recall),Pi和Ri为模型在测试集P-R曲线上的点对,i共有101个取值,范围为{0,0.01,0.02,…,0.99,1.00},COCO 数据集中对于AP 值的计算,有多种交并比(IoU,Intersection Over Union)值可选,本文试验AP值计算中IoU值均选用0.5。
P-R曲线中,准确率P和召回率R计算公式:
其中,TP(True positive)表示实际为正样本且预测也为正样本的数量,FP(False positive)表示实际为负样本但预测为正样本的数量,FN(False negative)表示实际为正样本但预测为负样本的数量。
3.4.1 不同密集程度检测对比试验
由于叶片密集程度对模型检测精度有影响,本节试验将叶片密集程度作为控制变量,使用CBAM-YOLOv4模型和通用目标检测模型作为检测网络,分别对高度密集、中度密集和一般密集3种不同密集程度下葡萄叶片测试图像识别效果进行统计,其中高、中、一般密集的测试图像数量分别为152、124、89 张。实际检测结果样例见图7,总体结果见表1。
图7 不同密集程度检测效果示例Fig.7 Examples of different intensity detection effects
表1 不同密集程度下检测试验结果Table 1 Experimental results of different intensity detection
由图7 可知,在3 种不同密集程度数据集中,密集程度越高,重叠度也越高,叶片尺寸越小,识别难度越高。随叶片密集程度和重叠度下降,葡萄叶片轮廓逐渐清晰,识别难度降低,准确率上升。同时,本试验拍摄对象为倾斜式“厂”字形葡萄架,图像整体表现一侧偏小另一侧偏大,多尺度目标的图像增加模型识别难度。从高度密集图像检测效果可见,YOLOv3 和YOLOv4 模型可将大部分轮廓清晰、重叠度较低的叶片准确检测出来,但对重叠度较高的叶片检测效果一般。本文提出的CBAM-YOLOv4模型优化特征提取网络,提升密集叶片检测效果。一般密集程度图像中会拍摄到非葡萄叶片区域,YOLOv3和EfficientDet 易将较小的杂草误判为葡萄叶片,本文提出的CBAMYOLOv4 模型对杂草误判率明显下降,图8 给出对比示例。
图8 检测结果局部放大示例Fig.8 Example of partial amplification of test results
表1给出4种检测模型在三类图像集上具体AP值,可见,叶片密集程度对各种模型检测效果均有影响。AP 统计结果显示,在一般密集图像数据集中,YOLOv4 模型检测精度最高,为90.81%,CBAM-YOLOv4 略低于YOLOv4,居第二。中度密集图像数据集中EfficientDet 模型检测精度最高,为87.58%,CBAM-YOLOv4 略低0.17%,位列第二。在高度密集图像数据中,CBAM-YOLOv4模型检测精度最高为82.04%,相比改进前YOLOv4 模型检测精度提升近2%。从3 种数据集的平均结果可知,CBAM-YOLOv4 模型平均检测精度最高为86.57%,相比YOLOv3、YOLOv4 和EfficientDet 模型分别高出2.35%、0.89%、0.23%,由图7 可知,该模型实际检测结果可识别所有叶片,且预测框位置准确。从单张图像所需检测时间看,EfficientDet模型耗时最长,为9.8514 s,YOLOv3为1.6133 s,YO⁃LOv4和CBAM-YOLOv4分别为0.9615和0.9872 s,改进前和改进后相差0.0257 s。综合以上结果,CBAMYOLOv4模型可胜任不同密集程度下检测任务。
3.4.2 阴影条件下的叶片检测试验
阴影是大田场景图像中常见的干扰因素之一,本文从测试图像集中取出40 张有阴影图像,评估各模型检测结果。样本实际检测效果示例如图9所示,统计结果见表2。
图9 阴影图像检测效果示例Fig.9 Example of shadow condition detection effect
表2 阴影和有风试验条件下检测结果Table 2 Experimental results under shadow and windy conditions
由图9 可知,4 种模型在阴影图像中均存在一定误检。导致这种现象的原因,一方面为晴天太阳光照条件下拍摄的图像中有大面积阴影,且叶片与树干投射的阴影与叶片形状相近,导致误判;另一方面,强烈的太阳光照射葡萄叶片,导致图像出现过曝现象,叶片轮廓模糊,导致识别准确率下降。从表2有阴影图像数据检测结果可以看出,CBAM-YOLOv4 模型检测精度最高,达到68.02%,比YOLOv3、YOLOv4 和EfficientDet 模型分别高出3.28%、1.07%和0.34%。
3.4.3 有风条件下叶片检测试验
无人机野外农田拍摄作业中,有风天气是常见的一种情形。本文对有风天气下采集的图像进行检测试验,测试数据集中有风天气拍摄图像共76 张,为排除3.4.2 节中阴影对试验结果的交叉影响,去除有阴影图像后保留49 张图像组成有风天气测试数据集。有风天气拍摄的葡萄叶片出现大面积倾斜,叶片在图像中可见范围变为叶片背面约二分之一面积,且大部分叶片可见部分为其背面,模型检测效果变差,因无周围其他叶片的相互支撑,这种现象在一般密集程度图像中居多。同时,在无人机拍摄距离叶片较近时,无人机桨叶高速旋转产生气流吹动叶片晃动。实际检测样例见图10,统计结果见表2。
图10 有风天气检测效果示例Fig.10 Example of windy weather detection effect
由图10 可知,YOLOv3 和YOLOv4 模型将发生翻转的单张叶片误判为两张或三张,且叶子倾斜角度过大时,无法准确识别。CBAM-YOLOv4的AP 虽略低于EfficientDet 0.15%,但实际检测效果较YOLOv3 和YOLOv4 提升,对翻转叶片的误判下降。由表2 可看出,在有风天气状况下CBAMYOLOv4 模型AP 值比YOLOv3 高出6.54%,比YO⁃LOv4高出3.51%。
由表2 可知,综合阴影和有风两种试验情形,CBAM-YOLOv4模型平均AP在4种模型中最高。
CBAM-YOLOv4模型在高度密集目标的极端情况下检测结果良好,为验证该模型有效性和普适性,将该模型应用于果树资源调查中。使用大疆·御MAVIC AIR 四轴飞行器在40 m 高空拍摄的甘肃省兰州市安宁区仁寿山白凤桃种植基地图像作为试验数据集,图像共计1 000张,其中训练集和测试集分别为750张和250张。在模型测试阶段,将高空拍摄图像拼接为全景图作为测试图像,测试结果如图11所示。
图11 果树资源调查对比试验结果Fig.11 Comparative experimental results of fruiter resources investigation
图11 测试图像中经人工辨识、计数和实地调查,共计白凤桃树324 棵,图11 a 为史浩等采用YOLT3 模型检测结果[17],YOLT 是目前遥感图像目标检测最常用方法,共检测出283棵桃树,检出比为87.35%,图11 b中CBAM-YOLOv4模型共检测出293 棵,检出比为90.43%。由图11a 可见,YOLT3模型对于密集区域树木有误检现象,单棵树木出现多个重复检测框,导致检测框数目较实际检测到的白凤桃树数目偏多。由图11b 可见,CBAM-YO⁃LOv4 模型对于树木密集区域的检测效果优于YOLT3,且改善图11a中果树地块边缘及非树木区域的误检现象。在实际资源调查中,通常要求树木计数精度在85%以上,因此本方法可应用于林业资源调查。
针对农业场景下密集小目标检测问题,本文在YOLOv4 框架下引入卷积注意力模块CBAM,该模块可与YOLO无缝集成,实现端到端训练,增强特征图中通道特征和空间特征,提升模型对密集小目标检测能力。在不同密集程度检测对比试验中,结果表明,CBAM-YOLOv4 模型平均AP 值达到86.57%,在高度密集图像数据集上AP 值达到82.04%,均高于其他对比模型。田间拍摄常见的阴影和有风两种特殊情形影响叶片图像目标检测,导致4种检测模型AP值大幅下降,但CBAMYOLOv4模型平均精度仍然最高。将该模型应用于实际果树资源调查中,遥感图像中树木检出比达到90.43%,优于业界最常用的YOLT方法。
上述结果表明,CBAM-YOLOv4模型在农业场景下密集小目标检测效果较好。后续研究将采集更多特殊情形下图像数据加入训练,并设计和优化网络模型,提高密集小目标检测精度。