基于图像和YOLOv3的番茄果实表型参数计算及重量模拟
2023-06-17张寻梦赵子皓江晓东
张寻梦 赵子皓 江晓东
摘要:为了便捷准确地计算番茄果实长度、宽度和投影面积表型参数并模拟果实重量,以番茄粉冠F1为试验材料,利用YOLOv3深度学习模型检测和裁切番茄果实图像,利用像素计算来分割番茄果实区域,将计算果实区域的6个特征参数输入线性回归模型、BP神经网络模型、支持向量机(SVM)模型中反演果实重量,以期从图像中获取番茄果实表型参数及重量模拟结果。结果表明,YOLOv3模型对番茄果实检测的平均精确度(AP)为90.06%;用果实长度、宽度、投影面积计算的平均相对误差分别为3.37%、5.65%、5.49%;用线性回归模型、BP神经网络模型、SVM模型模拟得到的果实重量的平均相对误差分别为44.68%、17.38%、6.45%。研究结果证实,从图像处理中获取番茄果实长度、宽度、投影面积表型参数是可行的,SVM模型对番茄果实重量的模拟精度较高。
关键词:番茄;果实;表型参数;重量;YOLOv3模型;支持向量机模型
中图分类号:TP391;S126文献标志码:A
文章编号:1002-1302(2023)10-0193-09
作物表型参数对产量、品质的预估具有重要意义,传统作物表型参数和产量主要通过人工观测或遥感反演得到[1-2],遥感反演往往用于较大面积的作物产量反演[3],且难以反演室内的设施作物产量。要计算果实表型参数,首先要检测图像中的果实。图像目标物检测可以分为利用图像色彩、形状、纹理等特征进行判别的传统图像处理算法[4-5],以及利用深度学习模型对目标物进行检测的算法[6-7]。传统图像处理算法应用得较早[8],Chien等设计了一种基于“椭圆形的霍夫变换”算法,对作物叶片进行识别[9];刘涛等利用色彩特征和纹理特征对图像中的小麦穗进行了识别[10];王献锋等从图像中提取了35个颜色、形状、纹理参数,并利用判别分析方法对黄瓜的霜霉病、褐斑病和炭疽病进行了识别,效果较好[11]。传统图像处理算法的计算速度较慢,利用深度学习方法可以实现更精准、更快速的检测[12-14]。1998年,Lecun等较早地提出了LeNET5网络,主要用于手写文字的图像识别[15]。深度学习模型不断发展,相较以往的深度学习模型,YOLOv3模型同时提高了计算速度和精度,已被广泛用于苹果果实、番茄果实、生姜幼苗等目标检测,在作物目标检测上取得了良好效果[13,16-19]。
大部分深度学习模型仅标注目标物的上下左右范围,难以计算目标物的投影面积。因此,传统图像处理算法具有更为灵活的优势。胡维炜等利用K-means聚类方法将大豆健康叶片和病叶区分开,并计算了病叶的像素面积,但是并没有将结果计算为物理面积[20]。张万红等利用灰度二值化处理,实现了苹果叶片的分割,并计算了苹果叶片的物理面积[21]。传统图像处理算法的目标检测精确度不及深度学习模型,而仅利用深度学习模型又难以精确计算作物目标物的表型参数,这2种方法各有利弊。本研究将传统图像处理算法与YOLOv3深度学习模型结合,使其发挥各自的优势,建立通过图像计算果实长度、宽度、投影面积表型参数和重量模拟的方法,以期为便捷准确地观测作物果实表型参数和重量模拟提供科学依据。
1材料与方法
1.1资料来源
图像于2021年4—5月拍摄于南京信息工程大学农业气象试验站人工温室内,选用的番茄品种为粉冠F1。在番茄结果至成熟期间晴天、多云、雨天的8:00、14:00、18:00分别多次拍摄不同光照条件下带有果实的番茄作物图像。图像由2台Alpha7RM3相机(Sony,JPN)及SEL50F12GM镜头(Sony,JPN)拍摄得到。采用类似人眼视角的50mm焦距定焦镜头,设置图像分辨率为3840×2160像素。
用于训练YOLOv3番茄果实检测模型的图像为8000张,图像从不同距离和角度拍摄,其中6000张图像作为训练集,剩余2000张作为测试集。用于计算番茄果实表型参数及模拟果实重量的图像为含有56个番茄果实的番茄全株图像,图像按照双目视觉要求拍摄。双目视觉系统(图1)由带有云台、水平仪和滑轨的双目相机支架固定型号相同的左目、右目相机组成,左右相机光轴互相平行,且相机坐标系定义相同[22],可通過对x坐标轴的平移得到。相机架设高度都为0.70m,相机间距20.00cm。试验期间记录被摄果实的长度、宽度、投影面积及重量。在果实与左目相机间连线(利用细线实物连线),果实长度、宽度用游标卡尺在垂直于连线的平面上测量。果实长度通过测量果实直径最长的位置得到,果实宽度通过测量果实最长直径的垂直方向上宽度最大的位置得到。果实投影面积通过统计投影面的网格数进行测量,将底板按照垂直于果实与相机连线的平面置于果实后方,将果实固定在底板上,摘下果实后,确保果实在底板的投影形状与相机拍摄的图像一致。用细铅笔芯在底板上带有已知边长(1mm)的网格纸上垂直描绘果实边缘线,用统计的边缘线内网格数乘以单位网格的面积,得到果实投影面积。用电子天平称取果实重量。果实长度、宽度、投影面积、重量均重复观测3次,取平均值。
1.2处理方法
1.2.1相机标定和畸变校正首先利用林中豪等的方法[23]标定相机及校正图像。本研究采用的标定板网格边长为25mm。利用OpenCV对双目相机分别进行标定和畸变校正。以左目相机拍摄的标定板网格图像为例,校正效果见图2。校正后图像四周受到小幅度拉伸。经过校正,标定板左上角黑色方格的左上角顶点像素分别仅向上、向左移动了图像高度、宽度的0.60%、0.52%,可见图像畸变较轻微。
1.2.2YOLOv3深度学习模型YOLOv3模型将输入图片的分辨率转化为416×416并划分为S×S个网格后输入以Darknet53为基础的主干网络,模型取消了池化层和最后的全连接层,采用步长为2的卷积运算进行下采样,在减少计算量的同时,保留了图片不同尺度的语义信息[24]。模型得到13×13、26×26、52×52等3种尺度的特征图,每个单元格设置3个锚框,共有10647个边界框,对小目标的检测效果得到一定增强。将YOLOv3模型检测的目标范围适当扩大,裁切出矩形番茄果实区域用于传统图像处理计算。
本研究用LabelImg软件标注训练集图像,保存为VOC数据集。设置学习率(lr)为0.001,锚框数量和尺寸为默认值,迭代次数为3000次。试验系统为Ubantu20.04,测试的框架为Tensorflow和Pytorch1.7版本,采用CUDA11.1版本并行计算框架,配合CUDNN7.4版本深度神经网络加速库,主要硬件环境见表1。
式中:P为准确率;R为召回率;TP为真实的正样本数量;FP为虚假的正样本数量;FN为虚假的负样本数量。
YOLOv3模型对测试集图像番茄果实的检测效果见图3,可见不同光照条件下的番茄果实都能被准确检测。模型的AP为90.06%。由于YOLOv3的损失函数考虑真实边框与检测边框的欧氏距离,损失函数值与果实大小有一定关系,因此有可能遗漏小尺度目标。
1.2.3传统图像处理算法的构建
1.2.3.1构建粗糙度参数用于分割番茄果实对参数二值化处理是常用的图像分割方法[25]。由于番茄果实比其他区域更光滑,因此通过计算目标像素在一定范围内(7×7像素区域)灰度值的标准差构建粗糙度参数。为了减少计算量及背景干扰,仅对绿色(G)和红色(R)像素进行计算,当像素蓝色(B)大于R、G时不计算。经过对样本的处理分析,将粗糙度小于7的像素标记为光滑区域,效果较好。由于通过YOLOv3模型裁切的图像中果实占据绝大部分面积,因此可以通过保留面积最大的光滑区域,并对其进行填充得到果实区域。
分别选取红色轻微遮挡(简称为A果,图4-A至图4-E)、绿色无遮挡(简称为B果,图4-F至图4-J)、绿色较严重遮挡(简称为C果,图4-K至图4-O)的果实进行演示。图4-A、图4-F、图4-K为原图,图4-B、图4-G、图4-L为利用Sobel算子得到的边缘线,利用Sobel算子不仅不能得到完整的番茄果实边缘线,还会产生过多的错误边缘线。从图4-C、图4-H、图4-M可以看出,番茄果实被粗糙度高值区域包围。由粗糙度得到的二值图见图4-D、图4-I、图4-N,可以看出,其中黄色区域为光滑区域,番茄果实内部的光滑区域与外部的光滑区域被完全分割开,没有粘连。番茄果实区域的提取结果见图4-E、图4-J、图4-O。经过对其余番茄果实图像的处理和分析得出,在不同光照条件下,无论是成熟还是未成熟的番茄果实都能得到较好的提取。
1.2.3.2被遮挡区域的修复随机三点定圆方法是水果遮挡区域修复的方法之一[26](本研究简称为“圆形法”)。圆形法将边缘线至质心距离的突变点作为缺口的端点[27-28],删除缺口后在正确的边缘线上随机取3点求解圆的方程[26],重复计算50次取圆心、半径均值。本研究将边缘线上相邻5个像素内到质心距离变化幅度超过平均距离3%的位置记作缺口端点。但是由于番茄果实形状不规则,为了更好地利用原本正确的边缘线,本研究还用圆形法得到的半径绘制圆弧连接缺口端点,以此修复缺口,本研究简称为“圆弧法”。
图5-A、图5-D、图5-G为修复前的果实边缘线;图5-B、图5-E、圖5-H为圆弧法修复得到的果实边缘线,可见线条与番茄果实边缘贴合较好;图5-C、图5-F、图5-I为利用圆形法修复得到的果实边缘线。经过对各样本的处理和分析,发现由于圆弧法可以保留正确的果实边缘线,仅对缺口进行修复,因此得到的线条更贴合果实边缘,效果优于圆形法,对不同光照条件下拍摄的图像处理效果都较好。
1.2.3.3果实最长、最宽位置的确定连接果实边缘线上距离最远的2个点作为果实最长距离,沿果实最长位置的垂直方向计算距离最大的垂线作为果实最宽距离,详见图6。
1.2.3.4利用双目视觉计算果实表型参数双目视觉原理见图7。
设视差值为d,目标物P到相机平面的深度为Z,由相似三角形原理可得相关公式如下:
l-dl=Z-fZ。
基于标定得到的相机参数,使用OpenCV提供的stereoRectify、remap函数进行图像的立体校正,使图像的行得以对准,并得到重投影矩阵Q[23]。利用OpenCV提供的SGBM算法进行立体匹配,利用下列公式可以计算像素坐标对应的三维(3D)深度,其中W为非零常数,Q为重投影矩阵,d为视差值,(u,v)为目标点坐标,目标点的三维坐标为(X/W,Y/W,Z/W)[23]。使用reprojectImageTo3D函数实现三维坐标计算,计算果实最长、最宽处轴线端点对应的三维坐标位置,并计算果实的长度、宽度。计算单位像素代表的物理投影面积,根据图像中果实的像素投影面积计算物理投影面积。
Quvd1=XYZW
1.2.3.5果实亮度变化趋势的计算由于不同厚度的果实在图像上的阴影变化不同,果实区域亮度的变化可以间接反映出果实的厚度,对提高模型模拟能力有帮助。图像处理中常用的亮度计算公式如下:
L=0.299×R+0.587×G+0.114×B。
式中:L为亮度;R为红色分量的值;G为绿色分量的值;B为蓝色分量的值。
计算果实区域像素的亮度值,由低到高排序,计算亮度变化的斜率(k),用于反映果实区域像素亮度的变化趋势。不同投影面积的果实亮度变化斜率见图8,可见果实区域亮度变化的斜率随果实投影面积增大而减小。这是由于投影面积较大的
果实半径较大,所以亮度变化较慢。
1.2.3.6果实色彩参数的计算果实区域RG差值(R减G)、RB差值(R减B)见图9。总体而言,RG差值、RB差值随果实投影面积增大呈增大的趋势。这是由于一般而言,投影面积更大的果实更接近成熟,红色值越大。由于存在体积较大的绿色番茄,RG、RB差值与果实投影面积没有明显关系,但色彩参数能够反映果实的发育阶段信息,间接反映不同发育阶段的含水量差异等,在输入机器学习模型后,对提高果实重量模拟准确性有帮助。
1.2.4模拟果实重量选用线性回归、BP神经网络、SVM模型3种方法对果实重量进行模拟。选用果实长度、宽度、投影面积、亮度变化斜率(k)、RG差值和RB差值共6个参数输入模型,调试各模型参数,使模型能够准确模拟果实重量。将番茄数据分为训练集(占75%)及测试集(占25%),通过训练集数据训练3种模型,利用测试集数据验证模型的准确性。
2结果与分析
2.1果实投影面积的计算
利用圆弧法修复遮挡区域后果实投影面积的计算结果见图10-a,计算值与观测值的r2为0.99,平均绝对误差为0.31cm2,平均相对误差为5.49%,均方根误差(RMSE)为0.57cm2。利用圆形法修复遮挡区域后果实投影面积的计算结果见图10-b,计算值与观测值的r2为0.97,平均绝对误差为0.65cm2,平均相对误差为6.58%,RMSE为0.91cm2。利用圆弧法修复果实遮挡区域的效果优于圆形法,这是由于圆形不能很好地贴合果实边缘,因此本研究选用圆弧法对果实遮挡区域进行修复。
2.2果实长度、宽度计算
利用双目视觉算法重建图像的三维坐标,计算果实的长度、宽度。果实长度计算值与观测值的关系见图11-a,r2为0.98,平均绝对误差为0.12cm,平均相对误差为3.37%,RMSE为0.15cm。果实宽度计算值与观测值的关系见图11-b,r2为0.97,平均绝对误差为0.17cm,平均相对误差为5.65%,RMSE为0.19cm。可以看出,利用双目视觉算法得到的果实长度、宽度较为准确。
2.3果实重量模拟
调试模型参数,设置BP神经网络的训练次数为15万次,中间层节点数为15个,学习率(lr)为0.0001。调试SVM模型的C、γ参数。3种模型的训练效果见图12,线性回归、BP神经网络、SVM模型的r2分别为0.95、0.97、0.99。3种模型训练集对果实重量模拟的评价见表2,线性回归模型误差最大,平均相对误差为48.59%。SVM模型的误差最小,平均相对误差为5.29%。线性回归模型、BP神经网络模型对较轻的果实重量模拟效果较差,导致平均相对误差较大。
3种模型对测试集果实重量的模拟值与观测值对比见图13。线性回归模型的r2较小,为0.92,BP神经网络、SVM模型的r2分别为0.97、0.99。3种模型测试集对果实重量模拟的评价见表3,可见线性回归模型对果实重量模拟误差最大,平均相对误差为44.68%。SVM模型误差最小,平均相对误差为6.45%。由此可见,SVM模型对果实重量的模拟精度较高,能够满足需求。
3讨论与结论
YOLOv3模型的检测精高、速度快[24],对番茄果实检测的AP为90.06%。利用YOLOv3模型的目标检测结果能够有效缩小传统图像处理算法的计算区域,减少背景干扰,在提高处理速度的同时减小处理难度[29]。
利用粗糙度参数分割番茄果实具有较强的适用性,这是由于不同光照条件、生长发育阶段的番茄果实都比叶片等背景物更光滑。如果利用Sobel算子、Canny算子、Prewitt算子等传统边缘检测算法[30],则会出现较多错误的边缘线[31]。如果在这些边缘线基础上利用各种圆形检测方法来分割番茄果实,则会导致较大误差,这是由于圆形不能紧贴果实边缘。
利用圆弧连接果实边缘线缺口端点可以有效对果实区域的缺口进行修补,效果优于利用正圆形。采用随机三点定圆的方法确定圆心和半径,可以实现对边缘线的自适应,在保证结果准确性的同时,能够避免霍夫变换等方法需要较大计算量和储存空间的缺点[32]。
利用双目视觉原理计算目标物长度、宽度及投影面积表型参数是可行的。对果实长度、宽度、投影面积计算的平均相对误差分别为3.37%、5.65%、5.49%。双目视觉算法可以实现对图像数据的自适应,可以构建用不同距离、角度拍摄目标物的空间坐标信息,在实际应用中适用性较强。
在线性回归、BP神经网络、SVM等3种模型中,SVM模型对番茄果实重量的模拟效果最好,平均相对误差为6.45%。不同机器学习模型有各自的特征。例如BP神经网络具有可处理数据量大、计算较快的优势,但模型结构复杂,学习能力强,容易造成过拟合,模型调参过程繁琐,调参不当容易导致误差。SVM模型计算结果准确,且适用于小样本数据,在仅有几十个样本数据的情况下也能取得较好的模拟效果[33]。支持向量机模型的模拟结果可以由少数支持向量来决定,而不是所有的输入数据,这样可以抓住关键样本数据,避免模型学习到错误样本的信息,降低过拟合现象发生的可能性,但SVM在数据量过大时计算速度较慢。由此可见,选取合适的果实重量模拟模型十分重要。
由于裁切出的果实图像基本小于200×200像素,传统图像算法程序的处理时间得到控制。在本研究数据和硬件环境下,YOLOv3模型处理1张图像平均耗时0.11s,果实分割与遮挡区修复、双目匹配和三维重建等程序耗时3.16s。虽然不能用于对视频的实时处理,但是考虑到番茄果实的表型参数和重量变化缓慢,且该方法能够有效分割番茄果实并计算表型参数和重量,因此也能够满足实际生产中的需要。
研究结果表明,利用YOLOv3模型检测番茄果实位置是可行的,检测的AP为90.06%,计算速度快。利用双目视觉算法计算果实表型参数准确度较高,对果实长度、宽度、投影面积计算的平均相对误差分别为3.37%、5.65%、5.49%。利用支持向量机模型模拟番茄果实重量的精度較高,平均相对误差为6.45%,可以满足应用需求。
参考文献:
[1]任建强,陈仲新,周清波,等.MODIS植被指数的美国玉米单产遥感估测[J].遥感学报,2015,19(4):568-577.
[2]WengertM,PiephoHP,AstorT,etal.AssessingspatialvariabilityofbarleywholecropbiomassyieldandleafareaindexinsilvoarableagroforestrysystemsusingUAV-borneremotesensing[J].RemoteSensing,2021,13(14):2751.
[3]何亚娟,潘学标,裴志远,等.基于SPOT遥感数据的甘蔗叶面积指数反演和产量估算[J].农业机械学报,2013,44(5):226-231.
[4]FuHY,WangCF,CuiGX,etal.RamieyieldestimationbasedonUAVRGBimages[J].Sensors,2021,21(2):669.
[5]周彤,程万强,刘涛,等.基于图像技术的葡萄生长监测研究进展[J].北方园艺,2018(24):156-161.
[6]TellaecheA,Burgos-ArtizzuXP,PajaresG,etal.Avision-basedmethodforweedsidentificationthroughtheBayesiandecisiontheory[J].PatternRecognition,2008,41(2):521-530.
[7]KamalNA,KaranS,GaneshCB,etal.Weedrecognitionusingimage-processingtechniquebasedonleafparameters[J].JournalofAgriculturalScienceandTechnologyB,2012,2(8):899-908.
[8]MeyerGE,DavisonDA.Anelectronicimageplantgrowthmeasurementsystem[J].TransactionoftheASAE,1987,30(1):242-248.
[9]ChienCF,LinTT.Non-destructivegrowthmeasurementofselectedvegetableseedlingsusingorthogonalimages[J].TransactionoftheASAE,2005,48(5):1953-1961.
[10]刘涛,孙成明,王力坚,等.基于图像处理技术的大田麦穗计数[J].农业机械学报,2014,45(2):282-290.
[11]王献锋,张善文,王震,等.基于叶片图像和环境信息的黄瓜病害识别方法[J].农业工程学报,2014,30(14):148-153.
[12]郑远攀,李广阳,李晔.深度学习在图像识别中的应用研究综述[J].计算机工程与应用,2019,55(12):20-36.
[13]AravindKR,RajaP,AniirudhR.Tomatocropdiseaseclassificationusingpre-traineddeeplearningalgorithm[J].ProcediaComputerScience,2018,133:1040-1047.
[14]LiDS,WangRJ,XieCJ,etal.Arecognitionmethodforriceplantdiseasesandpestsvideodetectionbasedondeepconvolutionalneuralnetwork[J].Sensors,2020,20(3):578-598.
[15]LecunY,BottouL.Gradient-basedlearningappliedtodocumentrecognition[J].ProceedingsoftheIEEE,1998,86(11):2278-2324.
[16]AnnaK,TatianaM,VladimirS.UsingYOLOv3algorithmwithpre-andpost-processingforappledetectioninfruit-harvestingrobot[J].Agronomy,2020,10(7):1016-1034.
[17]LiuGX,JosephCN,PhilippeLTM,etal.YOLO-tomato:arobustalgorithmfortomatodetectionbasedonYOLOv3[J].Sensors,2020,20(7):2145-2164.
[18]侯加林,房立发,吴彦强,等.基于深度学习的生姜种芽快速识别及其朝向判定[J].农业工程学报,2021,37(1):213-222.
[19]TianYN,YangGD,WangZ,etal.AppledetectionduringdifferentgrowthstagesinorchardsusingtheimprovedYOLO-V3model[J].ComputersandElectronicsinAgriculture,2019,157:417-426.
[20]胡维炜,张武,刘连忠,等.利用图像处理技术计算大豆叶片相对病斑面积[J].江苏农业学报,2016,32(4):774-779.
[21]张万红,姬洪飞,刘勇刚.基于Matlab解析数字图像求解苹果叶面积的方法[J].北方园艺,2017(3):15-18.
[22]岳丽清,贾馨,苗洋,等.机械臂双目视觉系统内外参高精度标定[J].红外与激光工程,2021,50(9):262-268.
[23]林中豪,高晓阳,邵世禄,等.葡萄园田间机器人双目测距系统设计[J].中国农机化学报,2019,40(4):179-183.
[24]宋栓军,侯中原,王启宇,等.改进YOLOV3算法在零件识别中的应用[J].机械科学与技术,2022,41(10):1608-1614.
[25]FanJL,LeiB.Amodifiedvalley-emphasismethodforautomaticthresholding[J].PatternRecognitionLetters,2012,33(6):703-708.
[26]刘振宇,丁宇祺.自然环境中被遮挡果实的识别方法研究[J].计算机应用研究,2020,37(增刊2):333-335,339.
[27]RajneeshB,WonSL,SaumyaS.GreencitrusdetectionusingfastFouriertransform(FFT)leakage[J].PrecisionAgriculture,2013,14(1):59-70.
[28]夏雪,周国民,丘耘,等.自然环境下苹果作业机器人双果重叠目标侦测方法[J].中国农业科技导报,2018,20(7):63-73.
[29]刘芳,刘玉坤,张白.基于D-YOLOv3检测网络的温室叶菜幼苗图像检测[J].江苏农业学报,2021,37(5):1262-1269.
[30]YangS,HsiaoSH.266/VVCfastintrapredictionusingSobeledgefeatures[J].ElectronicsLetters,2020,57(1):11-13.
[31]BaoP,ZhangL,WuXL.Cannyedgedetectionenhancementbyscalemultiplication[J].IEEETransactionsonPatternAnalysisandMachineIntelligence,2005,27(9):1485-1490.
[32]王拓.基于改進霍夫变换的几何形状检测算法研究[D].南京:南京航空航天大学,2017.
[33]杨梅,李广.小麦产量预测模型的仿真研究[J].计算机仿真,2013,30(10):382-385.