基于改进YOLO v3的玉米叶片气孔自动识别与测量方法
2023-03-07郭思媛任方涛张新红李结平
张 帆 郭思媛 任方涛 张新红 李结平
(1.河南大学河南省大数据分析与处理重点实验室,开封 475004;2.河南大学计算机与信息工程学院,开封 475004;3.河南大学软件学院,开封 475004;4.河南大学农学院,开封 475004)
0 引言
植物气孔控制着植物的各项生命活动,气孔研究对深入了解生态系统具有重要意义,受到生态学家的广泛关注[1-2]。气孔可以调节植物与环境之间的气体交换[3],尤其是二氧化碳和水蒸气之间的交换[4],因此对全球碳循环和水循环有重要的影响。气孔通过开闭运动可以控制植物的光合作用、蒸腾流、营养、新陈代谢[5-7],避免恶劣环境下的水分流失,以确保植物可以适应不同的生存环境[8]。此外,如果植物感染,气孔可以关闭以有效限制细菌入侵,这一行为可能代表着植物对病原菌的原始反映[9],因此对植物免疫学也有重要意义。然而,气孔形态受到相对湿度、温度、大气中二氧化碳浓度、光强、植物激素等多种因素的影响[10-13]。植物器官发育时气孔也可能产生分化,导致同一个叶片在生长发育的不同阶段,其气孔密度(单位面积上的气孔数目)有很大的差异,因此研究气孔的密度和大小等性状可以用于分析植物的抗逆性[14]。
对气孔性状的传统分析方法是人工观察与测量,直接在显微镜图像中对气孔进行标记。这种方法不仅过程繁琐、效率低下,而且容易出现人为误差。为了更加精确地研究气孔的形态并定量描述气孔的行为,植物学家借助于计算机软件ImageJ测量气孔密度、开度及形态特征[15]。这种方法需要人工标注感兴趣点,如孔隙边界、长度、宽度等,而植物气孔数据集动辄几千幅图像,对这些图像重复进行标注耗时耗力,且容易出错。为了提高研究效率,研究人员只利用少部分数据构建模型,导致大量的实验数据没有发挥作用。自20世纪80年代以来,人们一直尝试将这一繁琐的工作自动化。早期提出的检测方法多基于图像处理技术,一般只适用于特定的植物种类[16-20]。首先,这些方法需要对数据集进行繁琐的预处理操作,如使用高斯滤波器等对图像进行处理。其次,对显微图像质量要求较高,只适用于气孔排列规则的物种且要求图像中气孔轮廓清晰。但是在实际拍摄显微图像时由于光照和人为操作经常会导致显微镜图像质量不佳。上述方法均属于半自动的方法,在实际应用中仍有较大的局限性。
近年来机器学习和深度学习的快速发展促进了植物气孔的全自动检测与识别技术的研究[21]。AONO等[22]将5个经典特征提取器与6个深度学习描述符进行比较,以检测玉米(ZeamaysL.)叶片中的气孔。FETTER等[23]用深度学习方法对大豆(GlycinemaxL.)叶片气孔密度的遗传多样性进行了分析,提出了一种气孔检测工具StomtaCounter。JAYAKODY等[24]提出了一种气孔高通量实例分割(High-throughput instance segmentation)的通用方法,可以在不同质量和规模的多个显微图像数据集上实现稳健的性能,不需要对每个数据集重新标记和重新训练。
现有基于深度学习的方法未结合植物气孔图像数据集的特点对深度学习模型进行针对性的改进和优化,而且没有考虑训练过程中需要采用迁移学习加快模型收敛速度的问题以及提高模型泛化能力的问题,也没有考虑获得大量标注数据的难度。由于模型的泛化能力较差,导致这些模型在基准数据集上表现良好,但在数据集之外的真实图像上很难取得较好的效果。另外,目前虽然很多基于深度学习的方法可以自动完成气孔的识别与计数,但大多数方法没有同时实现气孔参数的自动测量。一些方法可以实现气孔的自动识别,但不能同时自动测量,测量工作仍然需要在后期依靠人工完成。还有一些方法可以对人工标识出的气孔进行参数自动测量,但不能实现气孔的自动识别。本文针对玉米叶片气孔识别的特点对YOLO(You only look once)深度学习模型[25]进行改进,以实现玉米叶片气孔的自动识别与自动测量。
1 数据集构建与模型改进
1.1 数据集获取
本文使用的玉米样本种质来源于中国、美国和国际玉米小麦改良中心(Centro Internacional de Mejoramientode Maizy Trigo, CIMMYT)[26]。玉米样本种植于河南省原阳县实验基地(113.947 402°E,35.112 807°N)。本文采用“指甲油印迹法”获取玉米叶片上表皮气孔印迹片。在玉米生长的三叶期,选取长势一致植株,以玉米苗第2片叶为取样叶片,在叶片中部均匀涂上一层透明指甲油,涂抹的过程中需避开主脉,等待20 min晾干后用镊子取指甲油层,将收集到的指甲油印迹片保存至1.5 mL离心管中,每个材料保存至独立的离心管。将保存好的印迹片用镊子小心放置于载玻片上,加入少量的清水,增加印迹片与载玻片的粘度,加盖盖玻片,制成临时玻片[27]。使用Olympus CX41普通光学显微镜分别在10×10和10×20的放大倍数下对临时玻片进行观察,使用ImageView软件随机截取清晰的视野作为最终气孔图像。每个装片上的3个样本各随机获取2个视野图像,然后按照编号构成气孔图像集。
1.2 数据集预处理
为了便于计算机对采集到的玉米数据集进行处理,需要对图像进行预处理以节约内存空间,加快计算机处理速度。为了训练YOLO深度学习模型,将图像分辨率统一调整为1 000像素×667像素,图像格式由ttif转换为png格式。使用LabelImg软件对图像进行标注。标注过程中,为提高模型的精确度,尽量使最小外接矩形框住气孔。一幅图像中的气孔全部标注完成后,LabelImg软件自动生成带有气孔坐标信息的标签文件。标注完成后,还需要对标签信息进行归一化处理,并将标签格式转换为YOLO模型可以识别的txt文本文件。
基于深度学习方法需要大量的训练数据。本文的气孔原始图像共2 150幅,但是这个图像数量对于深度学习模型来说并不够。本文通过CLoDSA方法进行数据增强(Data augmentation)[28]。通过一系列操作如随机角度旋转、随机遮挡、加入高斯噪声等方法,把气孔图像数据集扩充到26 184幅气孔图像。将数据集划分为训练集、验证集与测试集。为了提高气孔识别精确率,本文采用了有监督学习的训练模式。需要在模型训练前准备足够多数量的标注气孔图像,本文人工标注气孔23 360个。
1.3 YOLO v3深度学习模型改进
YOLO是一种深度学习目标检测模型,使用一个网络同时进行定位和识别[29]。该模型融合了特征金字塔网络(Feature pyramid networks)、残差块(Residual blocks)设计、交叉熵(Cross entropy)等方法[30]。YOLO v3借鉴了金字塔特征图思想,通过卷积和下采样产生多尺度的特征图(Feature map)检测物体,共输出3个特征图。在这3个特征图中,图像分别被划分为8×8、16×16和32×32网格,每个网格称为Grid Cell。YOLO v3引入了先验框(Anchor box)的概念,先验框是通过K-means聚类算法对训练集所有标注框的长宽进行聚类得到的最常出现的几个矩形框。上述3个尺度的特征图分别引入3个先验框,一共9个。如果某一个标注框(Ground truth box)的中心落在了某一个Grid Cell中,这个Grid Cell就负责预测此物体的边界框(Bounding box)[31]。由于每个尺度的特征图都有3个不同比例大小的先验框,所以要选择与目标形状最接近的先验框,评价指标是交并比(Intersection over union, IoU)。如果两个框完全重叠,IoU为1,如果完全不相交,IoU为0。在包含目标的Grid Cell中计算与3个先验框的IoU,选出重合度最高的先验框。然后对选出的先验框进行平移(迭代修改中心位置参数)和尺度缩放(迭代修改长宽参数),生成一系列边界框,经过迭代逐渐与标注框重合。
在深度学习训练中,不断计算边界框与标注框的中心坐标、宽、高的差异,这种差异表达为损失函数(Loss function)。另外,使用交叉熵函数计算是否含有目标的置信度(Confidence)损失值。置信度是当前边界框内是否包含目标的概率。同样使用交叉熵函数计算与目标各个类别的置信度损失值。深度学习的训练目标就是使这些损失函数之和最小。
气孔检测是单目标检测任务,同类目标的特征具有很大的相似性。本文对所有气孔图像标注目标的长度、宽度占整幅显微镜图像的比例进行测算,发现气孔的长度和宽度相对于整幅图像的大小总是在一定范围内波动。气孔宽度占整幅显微图像的比例集中在2.5%~12.5%之间,长度占整幅显微图像的比例集中在5%~15%之间。
通过对YOLO v3主干网络结构和实验结果的分析发现,较深的模型在显微图像这种单一目标的识别未必取得更佳的实验效果。对于通用的目标检测模型,其检测的目标类别较多,特征复杂,而对于单一目标,其特征较为简单,并不一定需要很深的网络模型才能表达。加深网络反而可能带来优化问题,梯度下降不稳定,增加训练成本并导致学习能力下降[32]。根据气孔图像数据集的特点,本文对YOLO深度学习模型中的预测端进行了优化,以降低误检率。同时结合气孔目标的特征对16倍、32倍下采样层进行简化,以提高识别效率。
本文对YOLO v3主干网络进行了改进。将第36层(8倍下采样层)与第91层(8倍下采样层与16倍下采样层预测端的拼接处)的特征图拼接结构删除,取消了对小型目标的预测,有效地避免了将很小的气泡或杂质误判为气孔。对5个下采样层中的最后2个进行改进,使用Res1替代原来的Res4和Res8进行下采样,在不影响采样效果的前提下大幅度减少了网络层数。由于网络修改后层数发生相应的改变,将第79层(32倍下采样层)的特征图进行上采样后与第39层(16倍下采样层)的特征图进行拼接,进一步提高提取特征的能力,提高检测精确率。改进后的网络结构如图1所示。其中CBL层为卷积层(Convolution)、批归一化(Batch normalization, BN)层、LeakyReLU激活函数层的组合模块层;ResX中的X表示残差块中残差单元数量;US表示上采样层;Concat表示张量拼接,这里是将网络中的第39层与第79层的特征图进行拼接。改进前模型为222层,参数量为6.152 37×107;改进后模型为139层,参数量为3.556 07×107。改进后模型网络层数和参数数目都大幅度减少。
图1 改进YOLO v3模型结构图
1.4 拉东变换
拍摄中由于人为原因,气孔可能没有呈水平状。虽然本文的深度学习模型可以识别各种角度的气孔,但是非水平状的气孔会给后续自动测量造成一定的困难。因此本文通过拉东变换(Radon transform)将图像中的气孔旋转水平位置,再进行识别和精确测量。拉东变换就是将数字图像矩阵在某一指定角度θ射线方向上做投影变换[33]。一个两维函数f(x,y)的拉东变换定义为
式中R——拉东变换算子
ρ——极坐标极径
δ——狄拉克(Dirac)函数
通过计算不同角度的拉东变换,可以完成图像的倾斜校正。基于拉东变换的图像旋转校正是自动进行的,读入图像后不需要人为进行任何操作就可以自动将气孔旋转至水平位置。
2 结果与分析
2.1 气孔自动识别
本文气孔图像数据集中共有2 150幅(扩增后为26 184幅)气孔图像。在深度学习模型的训练时设定训练集、验证集比例为7∶3。YOLO模型对整个数据集迭代周期(Epochs)设定为300,在迭代中所使用的学习率设定为0.000 5。
在多个目标检测模型上进行训练测试,分别计算精确率(Precision)、召回率(Recall)、F1值(F1-score)。
分别对模板匹配方法(Template matching)、最大稳定极值区域特征方法(Maximum stable external regions, MSER)、级联目标检测方法(Cascade object detection, COD)、YOLO v3、Faster R-CNN以及改进YOLO v3深度学习模型进行实验对比,结果如表1所示。从表1可以看出,改进YOLO v3模型的精确率、召回率和F1值优于其它模型,训练时间也比YOLO v3模型有了较大的改善。改进YOLO v3模型训练过程中的精确率、召回率、损失值曲线如图2所示。
图2 改进YOLO v3模型训练过程中精确率、召回率、损失值变化曲线
表1 不同模型实验结果对比
深度学习模型训练完成后,利用训练好的模型对测试集图像进行气孔检测,检测效果如图3所示。气孔目标用矩形框框出,识别框上角的数字代表置信度。虽然深度学习模型的训练时间很长,但训练完成后,检测、识别一幅气孔图像的时间很短,只需要0.2 s就可以检测识别出全部气孔。
图3 基于深度学习的气孔自动识别结果
2.2 气孔自动测量
气孔的长、宽、面积等参数的传统测算方法是根据显微镜图像利用图像处理软件如ImageJ、Matlab进行人工测算。这种方法误差较大且需要耗费大量时间。使用本文模型对旋转的气孔图像进行识别后,每个识别出的气孔都被一个边界框框住,可以通过模型直接计算出每个最终边界框的长、宽(像素值)。由于图像在训练过程中进行了缩放和旋转,所以上述边界框的长度和宽度并不等于真实叶片气孔的长度和宽度。根据气孔图像的尺寸与图像中比例尺对边界框的长度和宽度进行换算,计算出真实气孔的长度和宽度。本文模型可以完成气孔图像数据集中所有图像的气孔自动识别与自动测量工作,结果自动输出为一个Excel文件。在Excel文件中,每幅气孔图像保存为一个sheet,图像中每个气孔的参数占一行,另外还自动计算了本幅图像中全部气孔的统计参数。
在统计气孔数目时,位于图像边缘的气孔如果1/2以上面积不在图像中则不计入气孔总数。本文将人工测量的数据与本文模型自动测量的数据进行对比,对比结果如表2所示,参数测量的平均精确率达到90%以上。其中长度与宽度指1幅图像中所有气孔的平均值。需要指出的是,大于气孔总面积1/2但形态不完全的气孔虽然被记入气孔总数,但为了避免对测量结果有明显影响,这类气孔(约538个)并不参与气孔平均长度和平均宽度的测量。为
表2 气孔自动测量实验结果
了科学地反映计算机自动测量的准确性,通过与人工统计的数目作相关性分析,长、宽、数目的平均相关系数达到0.93,说明本文方法具有实用性。
通过对实验结果进行分析,发现容易漏检或误检的气孔有两种:一种是被人工标注但是深度学习模型没有检测到的气孔,通常产生的原因是图像存在遮挡、图像亮度和对比度较低、杂质过多以及气孔形态变异;另一种是被深度学习模型检测出来但未被人工标记的气孔,产生的原因可能是存在形态类似气孔的伪影或小气泡、水滴等。
3 结束语
结合气孔图像数据集特点对YOLO v3模型进行了改进,考虑到识别对象气孔的大小处于某一狭窄的范围内,简化了YOLO模型的主干网络结构。在人工拍摄过程中由于人为原因造成非水平状的气孔会给后续的自动测量造成一定的困难,基于拉东变换对气孔图像进行了旋转校正。采用改进YOLO v3深度学习模型完成了玉米叶片气孔的自动识别与自动测量工作。改进后模型的精确率、召回率和F1值优于模板匹配、最大稳定极值区域特征、级联目标检测等非深度学习方法,以及YOLO v3、Faster R-CNN等深度学习方法,训练时间也比改进前的YOLO v3模型有了改善。本文方法解决了传统的气孔分析方法效率低、误差大的问题,可以帮助农业科学家、植物学家开展植物气孔相关分析研究。