刘媛媛,张 硕,于海业,王跃勇,王佳木
(1.吉林农业大学 信息技术学院,吉林 长春 130118;2. 吉林大学 工程仿生教育部重点实验室,吉林 长春 130025;3. 吉林农业大学 工程技术学院,吉林 长春 130118)
秸秆还田作为当今世界范围内普遍应用的一项培肥地力的保护性耕作措施,在杜绝了秸秆焚烧所造成的大气污染的同时还有增肥增产的作用[1-2],其对农业生产,生态环境有积极的影响。为了更好地限制秸秆焚烧,指导农民合理地进行秸秆还田,需要定量评估还田率。因此,田间秸秆覆盖率的检测就显得尤为重要。
为了准确、快速地计算田间秸秆覆盖率,利用近年来快速发展的计算机视觉技术来解决这个问题是非常有价值的。其具有成本低、效率高、经济效益大等特点。然而,该方法通常是由无人机搭载摄像头来完成任务,这样就带来了诸多问题,如:由于田间环境一般较复杂,田地周围通常都会有植被、路、农机、房屋等干扰。尤其是周围的树木,其在烈日下投在田间的树影非常长。这些干扰因素均可能出现在无人机拍摄的图片中,导致处理难度增大,精度降低。为了解决复杂场景下秸秆检测难的问题,最关键的是要将这些物体分割出,这样可以大大降低干扰。
传统的分割方法以阈值分割最为常见,如文献[3]提出将Sauvola算法与Otsu算法相结合的方法来检测秸秆区域细节图像,但仅限于二分类,对多类别复杂田地检测效果差;文献[4]提出将纹理特征与BP神经网络相结合的方法来识别秸秆和土壤,但检测时间多达10 s;因此,文献[5]提出基于多阈值图像分割算法的秸秆覆盖率检测,利用DE-GWO算法对其进行多阈值图像分割,检测准确率达到95%以上,并且单张图片测试时间缩短到1 s以内,但其算法稳定性较差。以上基于阈值的分割算法均存在同一个问题,即对于颜色相近的物体,会被归为一类。而基于纹理的算法,需要手动设计特征,大大增加了算法难度。此外,以上算法在面对复杂农田时效果均不好,尤其是由阴影引起的干扰因素。近年来,由于深度学习的发展,Hinton等人在2012年ILSVRC比赛中,利用卷积神经网络将ImageNet图像分类的错误率大幅降低到16%[6]。之后卷积神经网络就被广泛地应用到图像识别[7-8]、目标检测[9-10]、图像分割[11-12]等领域。其中利用全卷积网络解决语义分割问题由Jonathan Long等人提出[13],开创了利用全卷积网络解决语义分割问题的先河。由于卷积神经网络可以通过对大量数据的学习,自动抽取每个类别的特征,所以对图像的分类效果显著,对于复杂场景下的分割效果要明显优于传统的基于纹理或阈值的分割。基于此,本文设计了一个新的分割网络来解决复杂场景下的秸秆覆盖率检测。整体架构采用了UNet[12]对称编-解码设计思想,设计了一个全残差网络[14](Residual Network,RN)架构,并使用深度可分离卷积[15](Depthwise Separable Convolution,DSC)降低参数量,和注意力机制[16-19](Attention Mechanism,AM)来关注难分割的像素,使得网络在降低参数和深度较浅的情况下仍然可以达到较高的精度。所提算法在秸秆数据集上进行了测试,在不同的光照环境、摄像机拍摄高度、场景复杂度的情况下,仍可以达到较好的分割效果。同时,该网络为端到端可训练,且参数量少,使得其模型体积小、运行速度快,大大降低了部署到嵌入式设备的难度,这非常有利于在农田这样电子设备较少的环境下进行实地实时检测。
秸秆覆盖率检测基于计算机视觉技术,采用无人机高空拍摄的方式获取图片,然后将图片进行预处理后输入到卷积神经网络中,得到预测图。由于田间场景复杂,如图1所示,其中包括秸秆、土壤、公路、周边植被、农机、树影等干扰因素。其中田内若没有干扰,则田地上只含秸秆、草、土壤,由于草相对较少,且大部分被秸秆覆盖,因此将草和土壤归为一类。对于田内含有农机和树影等干扰的情况(从图中可以看出主要是树影影响范围较大),由于树影投在了秸秆上,导致该处难以分割,很容易将覆有树影的秸秆识别为土壤。为了准确分割出秸秆,本文利用卷积神经网络来提取秸秆特征,并提出了一种新的分割网络DSRA-UNet。该网络借鉴UNet 的对称编-解码语义分割模型,其中低水平特征层使用标准卷积,高水平特征层使用深度可分离卷积,两者相结合的方式来构造整个网络架构,以降低训练参数量。同时在每一层的两次卷积过程加入残差结构来加大网络深度和特征表达能力。最后在跳级连接(Skip Connection,SC)之前增加注意力机制获取更精准的信息。通过以上操作在降低网络参数和深度的情况下提升对秸秆的分割能力,以适应复杂的农田场景。
图1 复杂农田场景示意图
本文提出的网络架构如图2所示,其中特征图上方标注了该特征图的深度,圆圈标号为每一层特征提取模块的编号,虚线框内标注了每个符号的含义。下采样过程包含5次特征提取,上采样过程包含4次特征提取,下采样过程中的第1~4层与上采样中第6~9层通过跳级连接相连。编码阶段第1层使用标准卷积构造的残差块(Conv Residual Blocks,CRB)进行特征提取,第2~5层使用最大池化和深度可分离卷积构造的残差块(DSConv Residual Blocks)进行下采样特征提取,得到水平尺寸缩小16倍,深度扩大16倍的特征图。解码阶段在跳级连接之前加入了全局最大池化注意力机制(Global MaxPooling Attention Mechanism,GMPAM)来增加低层次特征图的语义信息,之后再经过一个1×1的卷积,并与经过反卷积的上一层高层次特征图进行拼接(Concatenate),以此结合同一尺度的下采样和上采样信息。拼接完成后经过深度分离卷积残差块进行特征融合,在第四次上采样后,将拼接的特征图经过标准卷积残差块,再通过1×1卷积和softmax函数得到与输入图片相同尺寸的预测图。
残差网络不仅可以解决在网络较深时导致的梯度消失和梯度爆炸问题,而且可以通过捷径路径将输入信息融合进来,使得网络更深,这样就可以在网络深度较浅的情况下加深网络,以增强特征表达能力。此模块将标准卷积与残差结构相结合,使用3×3卷积核、ReLU激活函数构造残差块。主要用于高分辨率特征图的语义信息提取,因为高分辨率图一般深度较浅,大量信息存储在空间维度,而标准卷积相较于深度卷积可以更好地提取空间维度的信息。因此,本文将其用在特征图尺寸大、深度较浅的第1层和最后1层特征提取中。
图2 DSRA-UNet算法网络结构
图3 标准卷积残差块
深度可分离卷积可看作先进行深度卷积(Depthwise Convolution,DC),再进行逐点卷积(Pointwise Convolution,PC)。与标准卷积操作不同,深度卷积的一个卷积核只负责一个通道,得到与输入层通道数相同的特征图,无法改变特征图深度。因此,再使用逐点卷积即1×1卷积,进行升维或降维。通过将标准卷积分解为两步可大大降低训练参数,但也导致由于训练参数不足精度下降的问题,因此本文使用5×5的卷积核以抽取更多的特征信息,同时增加了残差结构,增强特征提取能力。由于深度卷积是对不同的深度进行单独抽取特征,因此其获取深度信息的能力更高,为了高效使用深度可分离卷积,本文将其用在第2~8层的高层次特征图特征提取阶段。
图4 深度可分离卷积残差块
注意力机制在自然语言处理、图像分类等领域已经有广泛应用[16-17],近年来也被应用于语义分割并取得了不错的效果[18]。受文献[19]中所提注意力上采样模块启发,本文提出的注意力机制如图5所示,由于低层次特征图(Low-level Features)包含更多的位置信息,而高层次特征图(High-level Features)则包含丰富的类别信息,因此为了获得更精准的特征图,可以通过对低层次特征加权更丰富的类别信息而得到。所以本文利用高层次特征图中丰富的语义信息为低层次特征图进行特征选择,使低层次特征图增加更多细节信息。由于特征图在经过最大池化后可以获取当前感受野下更细节的信息,因此将高层次特征图经过全局最大池化得到1×1×N的特征向量以提供全局上下文信息,再经过1×1卷积、ReLU降维至低水平特征图维度,然后与经过1×1卷积操作的低层次特征进行相乘得到加权的特征图。经过权值加权后可以对特征图起到选取的作用,从而使特征图获得更丰富的类别信息和更精准的位置信息。
图5 全局最大池化注意力机制
本文数据集由DJI大疆悟2代无人机于2018年10月在吉林省榆树市大岗乡拍摄。由于秸秆只有在秋季收割之后才会产生,因此样本数量非常少,有效数据仅120张,其中100张是由2 min视频按每1.2 s截取下来的,但这100张图片仅仅是单一的秸秆田地图像,缺少农机、路、植物、树影等干扰因素。只有剩下20张含有这些复杂的干扰因素,如图6所示。因此需要进行数据增强,提高网络的鲁棒性,增强网络对复杂场景的分割。由于大部分图片不包含干扰信息,所以需要在100张仅含土壤和秸秆的图像基础上,通过增加干扰信息的方式来合成新的图片。首先合成含有路、植物、房子等干扰因素的图片,主要方法是将20张等有干扰信息的图片中的路、植物、农机、房子等裁剪出,然后将其加到不含干扰信息的图片上并做一些旋转缩放等操作,即可产生包含多类别的图片。对于树影,由于其数据集很少且树影有透明度,很难从原图中剪裁出进行图像合成。因此,本文利用photoshop工具生成了大量树影,再将其与100张基础图片进行合并。通过以上方法,得到了500张合成图,利用这500张合成图与100张仅含秸秆土地的原图像做为数据集。
图6 秸秆农田图的有效数据
多分类常使用交叉熵损失函数,但该损失函数在面对大量简单样本和少量困难样本时,由于交叉熵会更多的关注简单样本,而少量困难样本对模型的贡献较低,导致模型对难分样本的预测能力降低。因此本文使用改进的交叉熵[20](Focal Loss),以使网络更多地关注较难分类的像素点,同时引入平衡因子α,让网络更加专注于秸秆的分割,公式定义如式(1)所示:
(1)
(1)优化器:Adam
(2)学习率(learning-rate):初始学习率为0.001,衰减系数为0.5,最小为1e-6。
(3)批量大小(batch size):2
(4)训练迭代周期(epochs):100
(5)每周期步数(steps per epoch):600
将上述算法在秸秆数据上进行定性及定量评估,所提算法在Ubuntu18+python3.6+tensorflow10+Ker-as2的环境下训练及测试,使用1块Nvidia GTX 1080Ti显卡进行训练,训练时间大约需要3 h。
为了更好地评价秸秆的覆盖准确率,本文使用秸秆覆盖率RSCP、秸秆平均覆盖率误差ESCR和秸秆交并比SIoU等来衡量算法性能。
4.1.1 秸秆覆盖率误差
预测秸秆覆盖率为:
(2)
实际秸秆覆盖率为:
(3)
由式(2)和式(3)得秸秆覆盖率误差:
(4)
式中:RSCT为实际秸秆覆盖率;H为图片高度;W为图片宽度;Pp为预测的秸秆像素点个数;Pt为真实的秸秆像素点个数。
4.1.2 秸秆交并比
(5)
式中:Pi为相交的像素点个数;Pp为预测的秸秆像素点个数;Pt为真实的秸秆像素点个数。
为了验证本文所提算法的有效性,将该算法与其他算法进行比较,结果如表1。由表可以看出SegNet[21]与Deeplab[22]在该数据集表现较差且它们的参数量均较高。UNet3为全部使用3×3卷积核尺寸的UNet,由于其深度和卷积核尺寸均较小,导致精度较低,但也正因其网络简单,所以FPS较高。UNet5则采用5×5卷积核,从而增大了特征提取能力,使得mIoU提高到了85.75%,但参数量增加2.5倍左右。DE-GWO[5]为传统阈值分割算法,其对含阴影等的复杂场景检测效果较差,mIoU也较低。本文所提算法mIoU达到了94.3%,且参数量降低到0.76M,FPS也较高,优于上述其他方法。
表1 不同算法之间的比较
图7 每个类别对应的灰度颜色
如图8 为本文所提算法在不同场景下秸秆的检测结果,以及同其他算法的对比效果。其中类别所对应的灰度级别如图7所示。图8从上到下依次为原图、真实值、及各种算法得出的预测结果,从左到右展示了不同场景下秸秆覆盖率检测效果。对于第1张最简单场景下秸秆的检测难度较低,但SegNet检测效果较差。第2张是含有树影的场景,由图可以看出UNet3对覆盖在秸秆上的树影检测效果较差,UNet5则可以将部分秸秆检测出,而本文提出的算法可以将大部分被阴影遮盖的秸秆分割出。对于样本3和样本4,均是复杂农田场景,由图可以看出其他方法均出现了较大面积的错误,尤其是在路、植被和树影周围。而本文提出的算法,则可以更好地分割出这些干扰信息,进而提高了秸秆覆盖率检测精度。
图8 不同算法的实验结果
为了验证本文所提网络基础架构的有效性,设计了两组对比实验。第一组实验用来验证低层次特征图使用标准卷积,高层次特征图使用深度可分离卷积的有效性。第二组实验用来验证用于低层次特征提取的标准卷积使用3×3的内核大小,高层次特征提取的深度可分离卷积使用5×5内核大小的有效性。
4.3.1 卷积类型对比
由于高分辨率特征图(如输入的三通道图片,和最后一次上采样后得到的特征图),尺寸较大、深度较浅,其大部分信息存储在空间维度。因此本文提出,高分辨率低深度特征图使用标准卷积,低分辨率高深度特征图使用深度可分离卷积。实验结果如表2,其中其他参数保持不变,仅改变卷积型。All-Conv表示全部使用标准卷积,All-DSConv表示全部使用深度可分离卷积,Conv+DSConv表示浅层使用标准卷积,深层使用深度可分离卷积。由表可以看出当全部使用标准卷积时mIoU达到93.4%,精度较高,但参数量是其他方法的7倍左右。当全部使用深度可分离卷积时mIoU为91.73%,精度有所降低,但参数量仅为0.75 M。当采用本文提出的结构时mIoU达到94.3%,而参数量相较于上一种仅增加了0.01 M左右,但精度上升了2.57%。由此可得,标准卷积可以更好地抽取空间信息,适合在高分辨率特征图中使用。而深度可分离卷积可以更好地抽取高深度特征图,因为深度卷积可以分别抽取每个通道的特征图,对深度信息的利用率高。因此本文所提结构可以充分利用空间信息和深度信息,从而达到参数量和精度的平衡。
表2 不同卷积结果对比
Tab.2 Comparison of results from different convolution
MethodsmIoU/%Parameters/M PA/%All-Conv93.45.497.92All-DSConv91.730.7597.59Conv+DSConv94.30.7697.94
4.3.2 不同卷积核尺寸对比
由于标准卷积参数量大,深度可分离卷积参数量少,因此本文提出标准卷积采用3×3的卷积核尺寸,而深度可分离卷积采用5×5的卷积核尺寸,并保持其他结构不变,实验结果如表3。
表3 不同卷积核尺寸结果对比
Tab.3 Comparison of results from different convolution kernel sizes
MethodsmIoU/%Parameters/MPA/%Conv3+DSConv392.910.74397.25Conv5+DSConv392.890.76097.42Conv5+DSConv593.240.78297.25Conv3+DSConv594.30.7697.94
Conv代表标准卷积,DSConv代表深度可分离卷积,3和5分别代表3×3、5×5卷积核。由于均使用了标准卷积和深度可分离卷积相结合的方式,因此参数量变化较少。从实验结果可以看出Conv使用5×5卷积核的精度均低于使用3×3的,DSConv使用3×3卷积核的精度均低于使用5×5的。由此可得,在同时使用标准卷积和深度可分离卷积情况下,3×3卷积核可以更好地帮助标准卷积抽取更丰富的空间信息,而5×5卷积核可以更好地帮助深度可分离卷积抽取更丰富的深度信息,且参数量增加较少,从而使网络结构更加有效。
为了研究DSRA-UNet算法中各模块的作用,设计了4个不同的网络进行效果对比,实验结果如表4。首先是骨干网络,由于中间层(即第二和第八层)使用5×5标准卷积,此部分参数量较高,mIoU为89.18%。第二部分是将中间层改为深度可分离卷积,从而将模型参数大大降低,但mIoU仅降低了0.49%。第三部分是在上采样和下采样过程中均加入残差结构,从表中可以看出引入该结构后精度有较大提升,mIoU提高到了92.13%。第四部分是引入了全局最大池化注意力机制,从表中可以看出引入该机制后精度有了进一步提升,并且可以很好地平衡参数量和精度,mIoU达到了最高94.3%,而参数量仅为0.76 M。
表4 不同模块结果对比
将本算法用于实地复杂场景农田的测试,得到了较好的实验结果。由于秸秆检测主要关注秸秆的覆盖率,因此本部分仅列出秸秆的检测结果(由于农机会对秸秆造成一定的干扰因此也将农机标出),以下给出四个不同场景下的秸秆覆盖率检测结果。
如图9,其中秸秆像素值为255,农机为50,其他背景为0。样本1虚线框中是大量被阴影遮挡的秸秆,可以看出其他算法均出现较大误判。样本2为田间包含农机和人以及他们的影子,从中可以看出,其他算法对这些干扰信息的分割能力较弱,影子部分通常会被识别为土地。而本文算法,不仅可以将农机分割出,同时也可以将小目标的人以及影子正确分类为秸秆及土壤。样本3为包含树影、植被、房屋、公路的复杂农田场景,使用UNet和DSRA-UNet算法均可将植被、房屋、公路分割出,且DSRA-UNet算法可以大大提高被树影遮挡部分的秸秆分类准确性。样本4则为包含了大量植被和公路的复杂农田,由结果可以看出本文所提算法对其分割效果最好,仅有少数分割错误。
图9 不同复杂度的农田检测结果
对上述四个复杂场景下的农田,利用三个不同的算法对其分割后得到的实验结果如表5所示,可以看出本文所提算法秸秆的IoU均为最高。样本1由于改善了阴影部分的分割,因此秸秆IoU相较于UNet和传统阈值分别有7.1%和11.1%的性能提升,同时覆盖率误差也降低到了1.3%。样本2由于本文算法可以很好的将农机分割出,并且消除人和人影的干扰,秸秆IoU达到了93.7%,秸秆覆盖率误差也达到了最低,其中经实验验证,分割出的农机所占面积的40%为秸秆。而传统方法无法将农机分离出,大部分都分割为秸秆,因此误差较大。样本3则为既包含大量树影也包含公路、植被、房屋的复杂农田,本文所提算法对两者的处理均较好,秸秆IoU较UNet和传统阈值算法提升了9.7%和19.1%,覆盖率误差降低了一半。样本4为包含大量植被和公路的复杂农田,在这种大面积为干扰因素的情况。
表5 不同算法对秸秆检测的结果
下本文所提算法秸秆IoU比UNet和传统阈值算法高出12.9%和39%,达到了较好的分割效果。综上所述,本文所提算法能很好地解决复杂场景下秸秆的检测和大量树影遮挡下的秸秆分割,且运行一张960×528尺寸的图像时间为0.048 s,速度相较于传统算法有明显的优势,满足实际检测中对精度和速度两方面的要求。
本文针对传统算法无法在复杂场景的农田下高效分割秸秆的问题,提出使用语义分割的方法来解决。通过对UNet的改进设计了一种新的网络架构DSRA-UNet网络,使用标准卷积残差块和深度可分离卷积残差块构建整个网络以降低参数量和提高网络分割精度,并在跳级连接中融入全局最大池化注意力机制进一步提高网络性能。训练中采用带有平衡因子的焦点损失函数,使网络更加关注难分类别和提高秸秆对网络的贡献率。同时还设计了基础架构、不同模块等的对比实验,进一步验证了本文所提算法的有效性。将算法用于秸秆分割mIoU达到94.3%,参数量仅为0.76 M,且运行速度达到每秒21帧,效果优于基于阈值或纹理的传统分割和其他语义分割网络。