基于Tiny-YOLOv3的田间绿色柑橘目标检测方法
2020-01-03魏超宇刘辉军
韩 文,魏超宇,刘辉军
(中国计量大学 计量测试工程学院,浙江 杭州 310018)
人工智能技术的发展与应用,促进了现代农业向智能农业方向发展[1]。其中,果蔬的目标检测是实现作物生长监测、农药变量喷施和果蔬自动采收等智能化生产的关键技术之一[2]。
Zemmour等[3]提出自然环境下多颜色空间融合的自适应阈值分割方法,对红苹果分割的F1值为93.17%,对绿葡萄分割的F1值为73.52%。Kurtulmu等[4]采用Ostu阈值分割法去除绿色柑橘的背景,并利用特征果实进行实例检测,其准确率为75.3%,但对高光果实的误识别率较高。Nguyen等[5]在遮光条件下使用RGB-D相机对苹果进行检测,通过深度信息和颜色特征过滤远景的果树等背景,再采用聚类算法分割出苹果,对红绿相间的独立果实识别率为100%,对遮挡苹果也有较好的识别率。王丹丹等[6]利用轮廓信息对果实进行重建,提出了一种无遮挡双重叠苹果目标分割方法,但对遮挡和有阴影区域的苹果分割结果较差。此类基于特征工程的果蔬目标检测方法,选取目标的颜色、纹理和形状等特征,并结合机器学习算法建立分类器从而区分目标类别,在特定场景约束下可取得较好的检测效果。
随着深度学习技术的快速发展,卷积神经网络(Convolutional neural network,CNN)被广泛用于图像分类、目标检测和语义分割等领域[7-10],并在果蔬目标检测领域中得到大量应用[11]。Bargoti等[12](2017年)较早使用Faster R-CNN对苹果、芒果和杏仁进行检测,其F1值分别为90.4%、90.8%和77.5%。王丹丹等[13]设计了基于ResNet-44的R-FCN网络,可有效识别重叠、被枝叶遮挡、表面有阴影的疏果前苹果目标。彭红星等[14]采用基于ResNet101的SSD网络对苹果、荔枝等4种水果进行检测,并通过水平翻转数据增强操作将检测精度提高至89.53%。Tian等[15]在利用DenseNet替代YOLOv3有的传输层以增强特征传播,实现了不同生长阶段苹果的检测,但影响了模型的检测效率。薛月菊等[16]采用Tiny-YOLOv2网络实现果园环境下未成熟芒果的识别,通过前景标注以降低树叶、枝干等背景对目标特征提取的影响。Koirala等[17]以Tiny-YOLOv3为框架,采用卷积优化下采样层,提出了MangoYOLO网络,在夜间场景下有较好的效果,但在白天自然场景下型精度较低。
基于CNN的果蔬检测方法缓解了人工特征选择依赖先验知识的不足,提高了自然条件下果蔬目标的检测精度。基于回归方法的YOLOv3具有多尺度的检测结构,提高了对小目标的检测精度,是当前优秀的目标检测通用网络之一,其简化后的Tiny-YOLOv3网络通过迁移学习对特定目标的检测任务具有更好的检测精度和速度[18]。然而Tiny网络层数少,提取的特征不够抽象,对背景的抗干扰能力较弱,不利于Tiny-YOLOv3在复杂自然场景下检测绿色果实。
柑橘是我国产量最高的水果,未成熟的柑橘果实较小,颜色呈绿色,与枝叶的细节特征相似,背景极为复杂,尤其是光照不均、重叠和遮挡等现象进一步增加了柑橘目标检测难度。为准确、快速地实现自然条件下绿色柑橘的检测,本文在Tiny-YOLOv3的基础上,采用卷积层替换池化层以减少信息丢失,并借鉴DenseNet网络[19],提出Tiny-Dense-YOLOv3网络,不仅能准确检出正常绿色柑橘,而且对在阴影、重叠和遮挡等复杂场景下绿色柑橘也有较好的检测精度。
1 改进的Tiny-YOLOv3方法
Tiny-YOLOv3是YOLOv3简化后的网络[20],由于Tiny网络的特征提取能力较弱,导致模型易受背景的干扰,较难检测复杂果实;网络通过池化进行下采样易导致目标信息丢失,不利于柑橘目标检测。
本文保留Tiny-YOLOv3的多尺度检测结构以检测不同尺寸的果实目标,采用步长为2的卷积层进行下采样可保留更多特征,在Tiny网络中引入2个密集块加强特征的传递,使网络更好地识别复杂绿色柑橘。
1.1 密集块
密集块(Dense block,DB)是DenseNet网络中主要组成部分,其内部采用密集连接的方式,每一层均可重用之前层的特征[19],则第i层的输出Xi可表示为。
Xi=Hi([X0,X1,…,Xi-1])
(1)
式(1)中:X0为密集块的输入;Hi为第i层的非线性变换,其由BN、Leaky Relu和Conv(3×3)组成;[-]为将第0到i-1层输出特征图进行拼接。密集块的结构如图1(a)所示,有3个卷积层,为了提高计算效率,在密集块的3×3卷积层之间加入1×1卷积对特征图进行降维,改进后的密集块如图1(b)所示,有6个卷积层。
图1 密集块结构图Figure 1 Dense block architecture diagram
密集块的特征重用和融合有利于减小增加网络深度带来的计算复杂度,此外,密集连接还具有正则化效应,可缓解小规模训练集导致的过拟合。
1.2 Tiny-Dense-YOLOv3网络
本文提出Tiny-Dense-YOLOv3网络,其结构如图2所示,采用步长为2的卷积层替换池化层,DB1替换Tiny网络的第5卷积层,DB2替换第6、7卷积层,并在DB1后加入1×1卷积层,其中,DB1和DB2均由6组1×1卷积和3×3卷积组成,各有12个卷积层。
图2 Tiny-Dense-YOLOv3结构图Figure 2 Tiny-Dense-YOLOv3 network structure
本文将输入两条检测支路的卷积层替换为密集块,使检测支路能接收密集块输出的多层特征,实现特征复用和融合;与此同时,Tiny-Dense的层数相比于Tiny增加了26层,因此Tiny-Dense提取的特征更加抽象,有利于网络识别复杂绿色柑橘,而Tiny-Dense的计算复杂度却从3.744 BFLOPs降为3.675 BFLOPs。
Tiny-Dense-YOLOv3的第一条检测支路的输入为DB2的输出,相比于Tiny-YOLOv3,输入该支路的语义信息更为抽象,有利于候选框的准确分类。该支路的输出为13×13×18特征图,对应3组较大的anchor。
DB2的输出经上采样后与DB1的输出进行拼接,然后输入第二条检测支路,其中,DB1含有更多细节信息,DB2中含有更抽象的果实目标语义信息,将DB1和DB2中的特征融合,有利于网络更加准确的识别和定位小尺寸绿色柑橘。该支路的输出为26×26×18特征图,对应3组较小的anchor。
先设置阈值删除置信度较低的候选框,再采用非极大值抑制(NMS)去除冗余的候选框,最终得到网络的检测结果。
1.3 损失函数
网络的损失函数由坐标误差项、IoU误差项和分类误差项三部分组成。如果坐标误差项的权重与其他误差项的权重相同,在训练的初始阶段,坐标误差值远小于分类误差值,会导致模型在训练过程中出现不稳定或发散,因此需要增大坐标误差项前的权重λcoord。如果2种检测框的IoU误差项的权重相同,由于不含目标的检测框的数量远多于包含目标的检测框的数量,导致不含目标的检测框的IoU误差值占总IoU误差值的比重较大,降低了包含目标的检测框的置信度向1收敛的速度,因此需要减小不含目标的检测框的IoU误差项前的权重λnoobj。本文的权重取经验值[20],分别为λcoord=5和λnoobj=0.5。
(2)
2 试验数据
2.1 图像采集
柑橘图像的采集地点在浙江省杭州市萧山区晶星都市村的商业果园,采集时间为2017年8月,此时是柑橘的第二次膨大期,果实近似于圆形,果、叶均呈墨绿色。采集设备为佳能数码相机(FUJIFILM F47fd),图像的分辨率为3 488×2 616像素,保存格式为JPEG。图像采集时相机与树冠距离约为2 m,随机采集了250张整个柑橘树冠层图像。
2.2 数据集制作
本文制作了2个数据集以验证模型的有效性,数据集A是实地采集的果园柑橘图像,数据集B是MSCOCO公开数据集中的柑橘图像。
(1)数据集A
先将每张原始图像不重叠地裁剪成12张872×872像素的子图,再将子图尺寸压缩至416×416像素以减少网络的运行时间,然后使用LabelImg软件进行标注,采用最小外接矩形标记露出面积大于50%的柑橘,最后从有标注的2 210张子图中随机挑选1 547张作为训练集,含有10 077个柑橘,剩余663张图像作为测试集,含有4 630个柑橘。针对果园光照多变和果实姿态不定等问题,分别采用了亮度调整、旋转变换和水平镜像进行图像增强,增强后的训练集图像为31 500张。
(2)数据集B
MSCOCO集中共有1 785张柑橘图像,其训练集和验证集分别有1 217张和568张。本文的研究对象是果园环境的柑橘目标,因此从验证集中删去果实被印刷在纸张上的柑橘图像及果实被剥皮或切块的柑橘图像,再将剩余250张图像按拍摄环境分为室内环境的柑橘图像和户外环境的柑橘图像,分别有219张和31张。采用与数据集A相同的图像增强流程对训练集图像进行扩增,增强后图像数量为18 255张。
3 模型训练
3.1 试验平台和训练参数
本文分别在Darknet、Caffe框架上实现YOLOv3和Faster R-CNN算法,服务器平台配置为IntelRRXeon(R) Bronze 3104 CPU@1.70GHz、32GB内存和11GB GTX 1080TiGPU,系统为windows10 1803。
不同模型在果园柑橘数据集上进行训练时,均采用MSCOCO数据集上的预训练权值进行迁移学习,输入图像为416×416像素,批处理为64,动量为0.9,权值衰减为0.000 5,初始学习率为0.001,学习率控制参数为1 000,训练次数为1×105,每迭代1 000次保存一次权值,其中,使用K-means聚类得到的Tiny-Dense-YOLOv3模型的6个锚点尺寸为19×19、28×29、39×39、53×53、74×74和110×108。当模型在MSCOCO集的柑橘图像上进行训练时,其权值采用随机初始化,锚点尺寸采用默认尺寸,其余参数保持不变。
3.2 评价指标
选取准确率(Precision,P)、召回率(Recall,R)、F1值、计算复杂度、检测速度作为评价指标。P、R和F1的定义如下所示:
P=TP/(TP+FP)
(3)
R=TP/(TP+FN)
(4)
F1=2PR/(P+R)
(5)
式(3~5)中:TP为识别正确的目标;FP为识别错误的目标;FN为漏识别的目标。
计算复杂度以浮点运算次数(FLOPs)表示,其中乘法和加法操作各算一次浮点运算[21]。
4 结果与讨论
本文在果园柑橘数据集A和MSCOCO集的柑橘数据集B上进行对比试验,并对Tiny、Darknet53和Tiny-Dense特征提取网络的输出特征图进行了可视化分析。
4.1 数据集A上的检测结果
Tiny-Dense-YOLOv3与Faster R-CNN、Tiny-YOLOv3和YOLOv3等模型在测试集上的F1值、召回率、准确率、计算复杂度和检测速度等指标如表1所示。不同YOLO模型的损失曲线见图3。不同场景中的测试结果示例如图4,其中,第一幅场景中的果实较为稀疏和完整,第二幅场景中重叠果实较多且露出区域较小,第三幅场景中的果实多被枝、叶遮挡,第四幅场景为逆光下Faster R-CNN是基于候选区域方法的目标检测网络,其根据RPN网络提出的侯选区域进行分类和边框修正,对大尺寸果实有较高的检测精度;但RPN网络的输入仅为深层低分辨率的特征图,不能较好地生成小目标的侯选区域,模型漏识别的小尺寸果实较多,如图4(a)所示。同时,由于RPN提出的候选区域较多以及网络的计算量大,模型的检测速度最低。
表1 不同模型的检测性能Table 1 Detection performance of the different models
图3 不同YOLO模型的损失曲线Figure 3 Loss curves of the different YOLO models
采集且果实均较小。
YOLOv3系列模型通过在多个尺度的特征图上进行检测,有利于提高对小尺寸果实的检测精度,但Tiny-YOLOv3模型的召回率并未明显提高,模型将部分大尺寸重叠果实误判为背景,如图4(b)的第二行。模型将第一、二幅场景中的高光叶片和第四幅场景中的阴影处叶片误判为柑橘。可见,由于Tiny网络层数较少,所提取特征中语义信息不足,易受背景的干扰,影响了Tiny-YOLOv3模型在阴影、重叠和遮挡等场景下的分类性能,模型的准确率、F1均低于Faster R-CNN模型。
图4 检测结果示例Figure 4 Examples of the detection results
Tiny-Dense-YOLOv3模型的F1值为92.03%,较Faster R-CNN、Tiny-YOLOv3模型分别提高了3.61%和4.15%,模型对阴影、重叠和遮挡场景下果实的召回率较Tiny-YOLOv3模型分别提高了6.1%、5.68%和8.29%,较好地克服了背景中枝、叶细节信息的干扰。Tiny-Dense特征提取网络给检测支路提供了更加抽象的语义信息,有利于提高模型的检测精度。同时,密集块对检测速度影响很小,达60.5帧/s。在图4(d)中,Tiny-Dense-YOLOv3模型识别出了第一、四幅场景中的全部果实以及第三幅场景中的未标记的果实,表明模型对阴影、遮挡、重叠果实的检测能力得到提升。YOLOv3模型的F1为92.85%,检测结果如图4(c)。Darknet53特征提取网络层数多,计算复杂度高,因此YOLOv3的检测速度仅为Tiny-Dense-YOLOv3的55.7%。
在第三幅场景中,不同模型均未能检测出一个小尺寸果实,该果实位于阴影处,且被枝、叶划分成为多个小区域,轮廓模糊。因此,如何进一步提高特征提取网络的特征提取能力以克服背景干扰是一个至关重要的问题。
综上,Tiny-Dense-YOLOv3模型能有效识别果园环境中的柑橘目标,其检测精度和速度均具有较明显的优势。
4.2 数据集B上的检测结果
为进一步验证Tiny-Dense-YOLOv3模型的有效性,选用Tiny-Dense-YOLOv3和Tiny-YOLOv3在MSCOCO集的柑橘数据集B的训练集上进行训练并在测试集上测试。
从表2可知,Tiny-Dense-YOLOv3模型各项检测指标均高于Tiny-YOLOv3,其中Tiny-Dense-YOLOv3模型在全部柑橘图像上的F1值为52.83%,较Tiny-YOLOv3提高6.33%。
表2 模型在MSCOCO的柑橘图像上的检测结果Table 2 Detection results by using the models in citrus images of MSCOCO dataset
在图5的第一行中,Tiny-Dense-YOLOv3比Tiny-YOLOv3多检测出2个小尺寸遮挡果实;在第四行中,Tiny-Dense-YOLOv3比Tiny-YOLOv3多检测出了全部重叠果实;在第二、三行中,Tiny-Dense-YOLOv3模型均比Tiny-YOLOv3少1个误识别框。由此说明,相比于Tiny-YOLOv3,Tiny-Dense-YOLOv3更有效地抑制了背景的干扰,提高了对复杂果实的检测能力。
图5 模型在MSCOCO的柑橘图像上的检测结果示例Figure 5 Detection examples by using the models in the MSCOCO's citrus images
在MSCOCO集的柑橘数据集B上的检测结果表明,本文针对果园环境改进的Tiny-Dense-YOLOv3模型在其他场景中对柑橘目标的检测能力也得到增强。
4.3 可视化分析
卷积神经网络中每个卷积层的输出均是对输入图像的不同特征表达,其中网络的浅层主要提取目标的浅层细节信息,较为直观;网络的深层主要提取抽象的深层语义信息,对目标细节的体现较少,难以解释。
为更好地考察模型的特征提取能力,本文借鉴文献[22]的可视化方法,以图3的第三幅场景为输入图像,对Tiny-YOLOv3、YOLOv3和Tiny-Dense-YOLOv3网络输出特征图进行可视化。
首先将卷积层生成的特征图输入Leaky Relu激活函数进行激活,然后采用双三次插值方法将特征图的尺寸扩大至416×416以保证对特征图直接进行可视化可产生像素级别的显示,再将特征图的数值归一化至0~1,最后将特征图以热图形式展示,0和1分别表示深蓝色和深红色。
图6(a)为输入图像,图6(b)~(d)为不同模型输出特征图的可视化结果,由于特征图的通道数量较多,所有网络仅展示了前64个通道的可视化结果。图6(b)中的特征区域普遍大于图6(c)和(d),表明Tiny网络提取的特征中有较多的树叶、枝干等背景特征,网络未能有效消除背景的干扰,Tiny-Dense和Darknet53网络能准确提取果实目标特征,克服了复杂背景干扰。
图6 不同特征提取网络的输出特征图的可视化结果Figure 6 Visualization of output feature maps of the different feature extraction networks
5 结 论
本文以绿色柑橘作为研究对象,提出了基于Tiny-YOLOv3的绿色柑橘检测方法。
(1)在Tiny网络中采用卷积层替换池化层,在网络的深层嵌入2个多层密集块,增强网络的特征提取能力,改进后网络称为Tiny-Dense-YOLOv3,该网络具有规模小、检测精度高和检测速度快等优点。
(2)在果园柑橘数据集上,Tiny-Dense-YOLOv3的F1较Faster R-CNN、Tiny-YOLOv3分别提高3.61%、4.15%,模型的F1接近于YOLOv3,检测速度为后者的1.8倍;在MSCOCO集的柑橘数据集上,Tiny-Dense-YOLOv3的F1值为52.83%,比Tiny-YOLOv3提高6.33%,验证了Tiny-Dense-YOLOv3模型的有效性。
(3)对Tiny、Darknet53和Tiny-Dense特征提取网络输出的特征图进行可视化分析,可知Tiny-Dense和Darknet53网络克服了复杂背景的干扰,可准确提取果实区域特征。
本文方法为农业自动化管理和采摘提供方法支持,后续研究将在该方法的基础上结合视频序列检测,实现果蔬目标追踪,提高农业机器人的工作效率。