基于PP-YOLO改进算法的脐橙果实实时检测

2022-11-01 09:27章倩丽李秋生胡俊勇谢湘慧
北京联合大学学报 2022年4期
关键词:阴天逆光晴天

章倩丽,李秋生,胡俊勇,谢湘慧

(1.赣南师范大学 智能控制工程技术研究中心,江西 赣州 341000;2.赣南师范大学 物理与电子信息学院,江西 赣州 341000)

0 引言

伴随着科技的进步,农业生产正逐步实现机械化[1],并在信息技术的助力下,进一步朝着自动化、数字化和智能化的方向发展。我国是脐橙种植大国,尤其是赣南地区,地处亚热带南缘,丘陵山地面积广阔,气候适宜脐橙生长。自20世纪70年代初开始,赣南脐橙的种植规模不断扩大,至今其种植面积居世界首位[2],年产量位列世界第三,是我国最大的脐橙主产区[3]。脐橙大规模种植生产对果实采摘的作业效率提出了更高要求。目前,脐橙主要依靠人力进行采收,采摘周期集中在相对较短的时间内,且劳动强度大。针对采摘劳动力短缺和劳动方式相对落后的现状,产业发展亟须运用现代化技术代替传统的人工劳作,解放更多劳动力,减少生产成本。准确快速地检测脐橙果实是实现高效采收的首要条件,然而,目前国内外的相关研究主要针对苹果、西红柿及草莓等果蔬进行目标检测[4-5],对成熟脐橙果实进行识别定位的研究较少,大多为表面缺陷检测[6]、病虫害检测[7]、品质检测[8]及分级[9]等。

Yu等[10]针对草莓检测进行了研究,利用mobilenet-v1提取特征,结合旋转锚点和logistic回归实现了草莓识别,但对于遮挡面积超过50%的草莓较难识别。Wang等[11]基于深度学习研究了芒果实时检测算法,先通过匈牙利算法对相邻帧的芒果进行关联,再采用卡尔曼滤波预测后续帧中芒果的位置,对每一帧中的芒果果实进行检测,改进了芒果在帧序列中多次被模糊检测或未被检测的情况,但检测速度较慢。Ji等[12]通过颜色空间转换提取图像的颜色因子,再采用迭代阈值分割出苹果和树枝,该方法实时性较好,但提取的图像灰度差异不大而无法细分。胡友呈[13]在研究柑橘检测时,利用卷积神经网络来提取柑橘图像特征,并利用最小二乘法以椭圆形状对果实外形进行拟合,最终得到对柑橘果实的识别准确率为86%。熊俊涛[14]对夜间环境下的柑橘进行识别,基于YOLO v3算法对检测网络做出改进,在测试集上的识别mAP(mean Average Precision)为90.75%,识别速度为53 fps。

脐橙的目标检测是以图片数据中的脐橙果实为目标对象进行查找分类和定位的,主要面临以下难题:果实生长在稠密和稀疏两种不同场景中,脐橙数量越多就越稠密,检测难度则越大;脐橙果实大小不一,当果实很小且稠密时则检测难度增大;存在外在环境干扰因素,受树枝、树叶、树干等遮挡,以及果实重叠、光照等因素的影响,检测难度加大。针对上述不足,本文基于改进的PP-YOLO算法[15]对复杂自然环境下的脐橙图像进行检测,通过K-means算法使anchor尺寸适宜脐橙果实,实验结果表明,本文提出的改进算法提升了检测速度和精度。

1 脐橙图像数据预处理

1.1 数据采集

如要建立一个鲁棒性强的脐橙检测机器学习模型,需要高质量、大规模的脐橙图像数据集提供支撑,然而,目前暂无公共可用的脐橙图像数据集[16]。本文所用图片数据为作者于2020年11月中旬在天气分别为晴天及阴天时,在江西省赣州市脐橙果园中采集的。在晴天有光照时分别从顺光和逆光两个角度,并在阴天时从不同位置和方向,对不同脐橙树进行图片拍摄,拍摄设备为普通手机,像素为1 200万以上。本次共采集脐橙图像1 100张,筛选和删除部分模糊不清及不适用的图片后保留了925张,将图像保存为jpg格式。其中:晴天逆光图像290张,晴天顺光图像310张,阴天图像325张;包含完整无遮挡、树枝树叶树干遮挡及脐橙果实相互遮挡的脐橙图像,有3/4左右的图像包含6个以上的脐橙果实且处于被遮挡情况下。所有图片的分辨率一致,均为400×400,部分图片示例如图1所示。

图1 采集图片示例

1.2 数据集制作

本文利用图像标注工具LabelImg,通过矩形框对采集到的图像数据中的脐橙目标进行标识,标注后的数据采用Pascal VOC格式保存。在模型开始进行训练前需准备数据集,本文以8∶2的比例把数据随机分为两部分,即训练集和验证集,并生成对应的文件列表,构成模型训练的数据集,且训练集和验证集呈互斥关系。数据集的具体分布情况如表1所示。

表1 数据集分布情况

1.3 数据增强

将模型损失控制在一个最佳点,是训练机器学习模型的优化目标。通过调整参数使输入的图片能够映射到输出,这需要足够比例的数据集样本支持。如果采用一些数据增强的方法,可以增加数据集中相关数据的数据量,增强模型学习能力,防止过拟合。

PaddlePaddle支持数据的在线增强,且支持GPU优化数据计算。在训练过程中,通过对图像进行各种变换以增加图像样本的多样性。此外,由于每轮迭代喂进网络的图像都是增强后的图像,所以可通过增加迭代轮数来保证训练的图像数量。也就是说,因为采用多种变换方法,而每种方法均包含随机因子,每次迭代都会遍历所有的训练集图片,且随机变换使得每轮喂给网络的图像都是不一样的,所以间接增加了训练的数据量。本实验所使用的数据增强方法包含以下几种,并如图2所示。其中,图2(a)为原脐橙图像,图2(b)为带真实标注框的原脐橙图像,其余图片分别对应各类图像处理方法。

1)混合图像(Mixup Image):按比例叠加两张图像,拼接原图像标注框和mixup后的图像标注框,见图2(c)。

2)随机畸变(Random Distort):以一定的概率对图像的像素内容进行随机变换操作,即用随机因子调整明亮度、对比度、饱和度和色调等,见图2(d)。

3)随机扩张(Random Expand):以大于1的随机扩张比例扩张图像,初始化像素值为输入填充值,并将原图像随机粘贴于该图像上,再根据原图像的粘贴位置换算出扩张后真实标注框的位置坐标,见图2(e)。

4)随机裁剪(Random Crop):以随机的角度、缩放比例和长宽比例生成若干候选框,再依据这些候选框和标注框的面积交并比(IoU),挑选出符合要求的裁剪结果,见图2(f)。

5)调整大小(Resize):随机选取一种插值方式,将图像调整为[608, 608],同时调整bounding box的大小,见图2(g)。

6)随机水平翻转(Random Horizontal Flip):以随机概率对图像进行水平翻转,见图2(h)。

图2 数据增强方法

7)标准化(Normalize):对图像进行标准化处理,并归一化图像到区间[0,1]。

2 模型结构

2.1 网络结构分析

PP-YOLO网络是基于原始目标检测模型YOLO v3进行的进一步优化及改进,网络主要组成部分包括主干网络、特征融合和检测头,网络结构如图3所示。

图3 网络结构

本实验采用ResNet50的第4个变种vd作为检测的主干网络,提取脐橙的图像特征,输出特征图(feature map),替换了原始YOLO v3的DarkNet53,保证信息传递不丢失,并且在骨干网络中添加了可变形卷积(DCN),用于捕捉特征图中有物体的区域。DCN基于平行网络学习偏移,使卷积核在输入特征图上的采样点发生偏移,集中于感兴趣的目标区域。由于标准卷积中的规则格点采样使网络难以适应几何形变,因此加入可变形卷积采样,通过对卷积核中各采样点增加偏移变量,可以实现在当前规则格点附近随意采样。

本实验使用特征金字塔网络(FPN)进行特征融合,从底向上通过一些卷积进行特征提取,得到不同尺寸的特征图,同时从上到下将得到的特征图 进行卷积和上采样,横向连接强位置信息的低层特征及强语义信息的高层特征,将多个尺度的特征进行融合,最终由检测头实现类别预测以及位置定位。

检测头沿用YOLO v3检测头,使用1×1和3×3卷积进行分类及定位,获得并输出最终的预测结果。

2.2 聚类anchor

对基于anchor的目标检测网络,是否能够合理设置anchor至关重要,会显著影响模型的最终检测性能。在训练过程中,anchor的大小和长宽比要与待检测物体的尺度保持基本一致,若anchor与物体的IoU大于设定的某一阈值,即为正样本;反之,若正样本的数目过少,可能会导致漏检概率增大。

原YOLO v3的anchor有3个尺度:{128, 256, 512},3个比例:{1∶1, 1∶2, 2∶1},一共9组anchor。在脐橙图像数据集上训练目标检测网络时,应根据数据的实际分布情况合理设置尺度。利用K-means聚类读取所有xml文件中的图片尺寸及目标框的坐标,将聚类的簇数设置为9,当K-means算法收敛时迭代结束,将结果可视化,如图4所示。其中,黑色小点是随机选取的4 000个物体框的大小,三角形状为聚类结果,由于太密集不易查看,网络可以推荐9组anchor的大小,如表2所示。

图4 聚类结果

表2 高宽比推荐表

由表2可知,网络推荐的anchor高宽比大多是1.0左右。此外,数据框的分布统计图如图5所示。从图5也可以看出,脐橙果实的高宽比多数都在1∶1左右。所以,对于树上成熟脐橙果实的检测,可以将anchor设置为0.8∶1、1∶1、1.2∶1,而没必要设置2∶1、1∶2这种明显不合理的比例。对于anchor的大小,可以查看表2的高度和宽度统计,参考聚类结果,设置合理的大小。由于输入的图片均为正方形,所以不需要考虑归一化操作影响高宽比变化的问题。

图5 真实框数据分布统计图

3 模型训练

3.1 训练平台

本实验的模型训练基于百度大脑AI studio平台,采用开源的深度学习框架PaddlePaddle、物体检测框架PaddleDetection及深度学习开发可视化工具VisualDL。本实验运行所需的软硬件信息和环境配置为:CPU 4核,RAM 32 GB,Tesla V100 GPU,显存16 GB,磁盘100 GB,Python 3.7,PaddlePaddle 1.8.4,运行cuda 9.0 API和cuDNN 7.6。

3.2 参数设置

初始化采用预训练好的分类模型权重,由于使用单卡GPU,且训练图像的数量不多,将batch_size设为2,学习率取值为0.000 125,max_epoch设置为150,变化节点设置在总轮次数的2/3和8/9处。因YOLO系列算法不把背景算为一类,只需分类脐橙果实,故把参数num_classes设置为1。在制作数据集时使用VOC数据格式,AP评估时采用VOC的11 point方法。

当训练模型时,使用在公共数据集上预训练的模型权重可降低不必要的消耗,但由于脐橙数据集与公共数据集存在较大差异,所以,为避免初始梯度过大,在刚开始训练时,学习率从0.0开始,慢慢增长到设定的学习率。之后,当迭代训练达到max_epoch的2/3处时,学习率衰减为之前的0.1倍(lr_decay_gamma取0.1),为0.000 012 5;达到max_epoch的8/9处时,学习率进一步衰减为0.000 001 25。

3.3 迁移学习

迁移学习[17]可将已学到的网络参数迁移到新网络中,新网络不仅能够识别底层的通用特征,还能快速学习新数据集的高维特征。在训练模型时,模型的损失值随时间推移而慢慢收敛最终趋于稳定,权值初始化需耗费大量时间,而通过迁移学习可加快训练进程,并且在数据集较小时也能得到较好的效果。本实验采用迁移学习的思想,在模型中加载了在公共数据集上学习好的网络参数进行权重初始化,在较短的训练时间内取得较好的结果,减少了训练所需的时间和资源。

4 结果分析及可视化

4.1 模型评估指标

本实验训练模型对晴天逆光、晴天顺光及阴天3种天气类型下的脐橙图片进行检测,采用AP(Average Precision)及检测速度来评估各模型的性能。具体计算公式[18]为

(1)

(2)

(3)

式中:n为待检测的类别数;Pn为检测准确率;Rn为召回率;TP为脐橙被正确地识别为脐橙的数量;FP为树叶、树枝、天空等背景被错误地识别为脐橙的数量;FN为脐橙被错误地识别为树叶、树枝、天空等背景的数量。

4.2 训练结果分析

在晴天逆光、晴天顺光及阴天环境下使用改进的PP-YOLO模型训练脐橙检测网络,检测准确率随训练轮次变化的具体情况如图6所示。受益于预训练权重,检测准确率随训练轮次的增加而逐渐上升,最后趋于饱和稳定值,在较少的训练轮次内即达到了较好的效果,大大缩短了模型训练所需的时间。晴天逆光环境下的检测准确率为90.81%,晴天顺光环境下达到92.46%,阴天环境下达到94.31%。晴天逆光环境下的脐橙图像光线较暗且分布不均匀,因部分脐橙处于逆光集中区域而加大了检测难度,故检测准确率低于晴天顺光下的环境。本实验采集的阴天脐橙图像数据,光线相对较均匀,既无太阳光照射又非昏暗的阴雨天气,较晴天逆光和晴天顺光更易于识别。

图6 检测准确率的变化情况

在晴天逆光、晴天顺光及阴天环境下使用改进的PP-YOLO模型进行训练的损失情况如图7所示。由于采用在底层卷积层中共享的权重,训练损失值在较少训练步长内迅速下降,并收敛于一个较小值。实验结果表明:改进的模型具有较优的性能。

图7 损失情况

4.3 对比验证

为了验证模型的鲁棒性及泛化能力,本文针对晴天逆光、晴天顺光和阴天环境分别采用改进的PP-YOLO、原始PP-YOLO、YOLO v4、YOLO v3、Faster RCNN这5种模型设计对比验证实验,检测结果对比曲线分别如图8、图9、图10所示。结果表明,改进的PP-YOLO在晴天逆光、晴天顺光及阴天环境下的检测准确率均高于其他4种网络模型,且原始PP-YOLO的检测准确率位列第二,Faster RCNN的检测准确率在3种情况下均高于YOLO v3,但低于YOLO v4。

图8 晴天逆光检测结果

图9 晴天顺光检测结果

图10 阴天检测结果

为了探究在不同光照环境下模型的检测性能,本文设计了几组对照实验。5种网络模型在晴天逆光、晴天顺光及阴天3种环境下的检测准确率和检测速度对比结果如表3所示。阴天环境下的检测难度比晴天顺光环境下低,晴天顺光环境下的检测难度比晴天逆光环境下略低,逆光环境下的检测准确率受大小不一的光斑影响。改进的PP-YOLO模型的检测准确率和检测速度均高于原始PP-YOLO、YOLO v4、YOLO v3和Faster RCNN模型。原始PP-YOLO的检测准确率和检测速度均优于另外3种模型,YOLO v4的检测性能优于Faster RCNN。Faster RCNN的检测准确率高于YOLO v3,但是检测速度低于YOLO v3。

表3 对比验证结果

4.4 检测结果可视化

选择没有标注训练的脐橙图片,经模型检测后如图11所示。其中,(a)、(b)、(c)分别为晴天逆光、晴天顺光和阴天的原图示例,(d)、(e)、(f)为改进的PP-YOLO的检测结果,(g)、(h)、(i)为YOLO v4的检测结果,(j)、(k)、(l)为Faster RCNN的检测结果,(m)、(n)、(o)为YOLO v3的检测结果。

图11 检测结果

结果表明:改进的PP-YOLO模型具有较好的泛化性,在不同光线环境下对脐橙拥有较好的检测能力。该模型在阴天环境中的识别性能优于晴天逆光和晴天顺光环境,且对粘连及被遮挡的脐橙也基本能够准确识别。根据图(d)、(e)、(f),输出结果中的脐橙检测数量和置信度较高,表明改进的PP-YOLO模型较其他模型具有更好的检测性能。

5 结束语

针对真实脐橙果园场景下自然及天气环境复杂、检测速度较慢和检测准确率较低等问题,本文对基于YOLO v3模型的PP-YOLO目标检测模型进行改进,以适用于脐橙果实的检测。主干网络采用ResNet50-vd网络提取特征,替换原始YOLO v3的DarkNet53网络,同时在最后两层换成可变形卷积(DCN),减少模型的计算参数和复杂度,保证信息传递不丢失,并通过K-means聚类算法得到适宜本实验数据集脐橙大小的anchor,进而提升脐橙检测的效率。实验中,在晴天逆光、晴天顺光和阴天3种环境下,对于不同的大小和数量、遮挡姿态、背景等多种情况,改进模型均表现出较好的鲁棒性和泛化能力。该检测模型在晴天逆光下的mAP值为90.81%,检测速度为72.30 fps;在晴天顺光下的mAP值为92.46%,检测速度为73.71 fps;在阴天环境下的mAP值为94.31%,检测速度为74.90 fps。与其他模型相比,该模型的识别速度和检测精确度均有一定的提升,为脐橙识别与采摘提供了良好的技术支持,具有广阔的应用前景和实用价值。

猜你喜欢
阴天逆光晴天
它若安好,便是晴天
太阳躲在哪里
给阴天染上色彩
晴天有时下猪
vivo X20:逆光摄影展
上期主题完美逆光效果 获奖作品
阴天
逆光
当高手遭遇逆光
露比的晴天