张晓勐,朱德利*,余茂生
(1.重庆师范大学 计算机与信息科学学院,重庆 401331;2.重庆市数字农业服务工程技术研究中心,重庆 401331)
【研究意义】玉米是世界三大谷类作物之一,稳定生产玉米是实现粮食安全的一项关键任务[1]。雄穗是玉米的生殖器官,其分化、发育、抽雄、散粉是生殖生长的必经过程,是产量形成的重要农艺性状之一[2-3]。雄穗生长于玉米植株的顶部,传统的人工识别玉米雄穗存在经济成本高且主观性强等局限性。【前人研究进展】目前,国内外学者在对玉米雄穗进行检测计数上做了许多研究且取得了一些成果。F.Kurtulmus 等[4]使用支持向量机(SVM)去检测玉米雄穗,他们人工采集了46 张玉米树冠的RGB 高分辨图像作为一个小型数据集,利用SVM 提取颜色信息,将像素点分类为有穗或无穗,检测精度可达81.6%;Lu等[5]制作了MTC 玉米雄穗数据集,同时基于卷积神经网络提出TasselNet 对该数据集中的雄穗进行计数,然而样本数量非常有限;Liu 等[6]使用修改了锚框大小的Faster-RCNN 模型检测15 m 高空航拍的玉米雄穗图像,在检测精度上达到了90%,但Faster-RCNN 检测速度慢,参数量大;梁胤豪等[7]使用深度学习目标检测中的Faster R-CNN、SSD 以及YOLOv3 等多种主流模型,对标注好的玉米雄穗数据集进行训练和预测,将结果进行比较后得出Faster R-CNN 精度较高但模型参数较大,SSD-MobileNet 模型参数小但精度不高;AA Zadjali 等[8]在使用Faster R-CNN 作为基础模型的同时对目标检测的预测框与真实框的交并比(Iou)的阈值做了一定修改,使模型的准确率和召回率都有所提升,然而还是未解决Faster R-CNN 模型参数较大的问题;杨蜀秦等[9]对CenterNet 模型进行修改,在玉米雄穗检测的精度与速度上取得了不错的效果,然而CenterNet是基于中心点根据热力图进行预测,在雄穗周围环境较复杂的情况下容易出现误检与漏检。传统的目标检测方法是建立在手工制作特征和浅层可训练架构上的,这种方法从目标检测器和场景分类器中结合大量低水平图像特征和高水平语义信息构建成复杂系统的性能不高[10],如:Cascade[11]+HOG/DPM[12]+Haar/SVM[13],该类方法通过直接提取HOG/DPM 特征,并送入已训练好的分类器进行分类,但该类算法检测速度慢,检测性能较低。深度学习目标检测算法可以提取图像中更高语义的特征,在检测精度与速度方面有更好地效果[14-16]。【本研究切入点】综上所述,目前对玉米雄穗的检测研究已取得了一定的成果,然而却无法兼顾模型参数量和模型的精确度,没办法很好地完成实时检测任务。在未来的智慧农业中,要实时检测玉米的抽雄期,检测算法必须精准且轻量。【拟解决的关键问题】因此,针对玉米雄穗检测问题,提出一种基于深度学习轻量级的目标检测模型,用于高效地检测玉米雄穗,准确监测玉米抽雄期。
数据采集地点位于重庆市云阳县红狮镇农田(109.025 894E,30.983 671N),该镇属亚热带季风气候,山地河谷气候,海拔高差大,有立体气候特征;1 月平均气温7.7 ℃,7 月平均气温34.6 ℃,年平均气温18.5 ℃;年平均日照时数1 402.6 h;年均降水量1 120 mm。该镇粮食作物主要以玉米、水稻、小麦为主;畜牧业主要以饲养生猪、山羊、牛为主。
采用大疆Mavic air2无人机拍摄试验区域遥感影像。该无人机的机载云台采用1/2英寸的4 800万像素Quad Bayer 影像传感器,原生像素为4 800 万,可拍摄8 000×6 000 分辨率的照片;提供4K/60P 视频规格,可以使用H.265编码器以120 Mbps的码率录制视频。
试验数据于2021 年6 月9 日至6 月11 日进行采集,将无人机设置为距离玉米农田7 m 高度,地面采样距离为0.76 cm/像素,摄像机分辨率为1 920×1 080 像素,云台拍摄角度为垂直向下,以0.3 m/s 飞行速度围绕玉米农田进行视频录制。
试验采集视频共20分56秒,对视频每25帧进行一次截图保存,经筛选,得到1 000张有效数据,使用LabelImg 软件对玉米雄穗进行标注。样本的数量与模型的泛化性在一定程度上存在正相关关系,能直接影响到模型的训练效果。在现实情况中,玉米雄穗在不同的天气和光照下呈现出不同的特征,如何在复杂多变的环境下检测到雄穗是一个难点。对此,文章随机地采用镜像对称、仿射变换、高斯加噪、对比度变化的方式将数据扩充至11 000幅构建数据集,从数据集的角度去增强模型的泛化能力。
图1 云阳地理位置和采集过程Fig.1 Yunyang geographic location and acquisition process
图2 数据标注与数据增强Fig.2 Data annotation and data enhancement
YOLOv4[17-18]使用CSPDarknet53 作为主干特征提取网络,一共有5 个CSP 残差模块,每个CSP 残差模块前面都是大小为3×3,步长为2 的卷积核,起到下采样的作用,最后3 个CSP 残差模块的特征会输入到特征金字塔结构中,YOLOv4的特征金字塔部分采用了PANet[19]结构对特征层进行了特征融合。
对不同层级的特征进行融合后,会输出3种特征层,尺寸分别为输入尺寸的1/8,1/16,1/32,相当于将图片划分为S×S的单元格。在每个单元格中,都有3个不同尺寸的先验框,负责该格点的预测,最后通过预测值来对先验框进行调整得到边界框(Bounding box)。
CSP 残差模块中较多的卷积层相互堆叠,使YOLOv4 存在着较大的参数量与浮点计算量。YOLOv4虽然在精度上有着不小的优势,但参数量过多导致模型无法很好地部署到嵌入式端,较大的计算量导致模型预测需要更多的时间,无法满足实时检测的需求。
图3 YOLOv4结构图Fig.3 Structure of YOLOv4
GhostNet[20]的核心思想是通过一些计算量更低的操作去生成冗余的特征图,如图4。其网络最小单元是由线性运算生成特征图的Ghost Module,通过Ghost Module 组成基础模块Ghost Bottlenecks,从而构建出GhostNet。
图4 玉米雄穗特征可视化中的冗余特征Fig.4 Ghost feature map of maize tassel feature visualization
1.5.1 Ghost Module Ghost Module 通过普通卷积生成部分特征层后,剩余冗余的特征层使用线性操作获得,然后再将卷积生成的特征层与线性操作生成的特征层拼接到一起组成完整的特征层,如图5(b)所示。
图5 普通卷积与Ghost Module线性变换Fig.5 Ordinary convolution and linear transformation of Ghost Module
对于普通卷积,所采用的计算公式如下:
在该式中,X为输入数据,*与b分别代表卷积运算和偏差项,Y是具有n个通道的输出特征图,f则表示一层中的卷积核。
Ghost Module采用的基本卷积过程在普通卷积上进行了一定的简化,其公式如下:
其中,X为输入数据,Y′是计算产生的原始特征图,共m个(m≤n),f′是使用的卷积核。与普通卷积不同,Ghost Module 省略偏差项从而减少计算操作。为了得到所需的n个特征图,采用以下函数对原始特征图进行轻量的线性运算,用以生成z个冗余的特征:
对于上述式子,y′i是Y′中的第i个原始特征图,∅i,j是第i个生成的j个特征图。经过公式的运算,可获得n=m·z个特征图Y=[y11,y12,…,ymz]作为Ghost Module的输出数据,极大地减少了计算量。
1.5.2 计算量比较 在普通的卷积运算中,生成特征图的计算量公式如下:
其中,n为输出特征图的通道数,h′与w′分别代表输出特征图的高度和宽度,k·k为公式(1)中卷积核f的内核大小。
在Ghost Module中,生成特征图的计算量公式如下:
其中,n/z为原始特征图的通道数,d·d为生成冗余特征图中线性运算的平均内核大小,一般与公式(4)的k·k相同大小。
使用Ghost Module对普通卷积替换后的理论加速比S为:
1.5.3 Ghost Bottlenecks(G-bneck)Ghost Bottlenecks 主要由两个堆叠的Ghost Module 组成,如图,第一个Ghost Module 用于扩展层,增加通道数;第二个Ghost Module 用于减少通道数和shortcut path 相匹配。其中Ghost Bottlenecks有两个种类,其中步长为2的bottleneck用于对特征图的大小进行压缩。
图6 两种步长Ghost Bottlenecks结构Fig.6 Structure of stride are different Ghost Bottlenecks
1.5.4 GhostNet网络结构 GhostNet以G-bneck为基础,构建如表1所示的网络结构。
表1 GhostNet网络结构Tab.1 Structure of GhostNet
深度可分离卷积[21-23]是将传统的卷积分解成深度卷积加上1×1 的点卷积,如图7 所示。在深度卷积中,一个卷积核与一个通道相对应,使产生的Feature map通道数和输入的通道数完全一致。点卷积会将上一步的Feature map在深度方向上进行加权组合,输出新的Feature map,数量与卷积核一致。
图7 深度可分离卷积结构Fig.7 Structure of depthwise separable convolution
如前所述,玉米雄穗实时检测任务在保证精度的同时需要模型参数越小越好,检测速度越快越好[24-25]。在雄穗检测任务中,YOLOv4 有不错的精度,然而模型空间复杂度与时间复杂度过于庞大[26-27]。文章对YOLOv4 的主干特征提取网络进行优化,对PANet 中的卷积模块进行修改,使新网络参数量大大减少,新模型结构如图8。
图8 G-YOLO模型结构Fig.8 Structure of G-YOLO
1.7.1 网络优化方法 原YOLOv4 采用CSPDarkNet53 作为特征提取网络,CSPDarkNet53 主要由一系列残差网络构成,堆叠了大量的卷积块,造成较大的参数量。针对该问题,文章采用GhostNet 替代CSPDarkNet53 作为新模型的特征提取网络,通过简单的线性运算去代替部分的卷积层,以此有效地减少模型的参数量。
在特征加强网络中,YOLOv4沿用YOLOv3的卷积层、批归一化、Leaky_ReLU激活函数的组成CBL最小模块。文章采用MobileNets[29-30]的思想构建参数量更小的深度可分离模块,使用参数量更小的深度可分离卷积去替代CBL 模块的卷积层,使用值域为[0,6]的ReLU6 激活函数替代Leaky_ReLU 以提高模型的稀疏性。
1.7.2 模型参数量分析 原本YOLOv4 模型参数量为244.2 MB,浮点计算量为29.95 GFLOPs,将特征提取网络替换为GhostNet 后,模型参数量下降至151.4 MB,浮点计算量下降至20.41 GFLOPs。在不修改YOLOv4 特征提取网络,仅修改PANet 中的CBL 最小模块修改为深度可分离卷积模块,模型的参数量下降至141.5 MB,浮点计算量下降至22.5 GFLOPs。融合两点进行改进,文章使用的新模型G-YOLO 参数量仅有43.6 MB,浮点计算量仅有3.55 GFLOPs。
表2 模型参数对比Tab.2 Comparison of model parameters
试验基于Pytorch 深度学习框架,CPU 为AMD Ryzen 5 5600X,GPU 为NVIDIA GeForce RTX 3060,显存为12 G,Cuda版本为11.4,操作系统为Windows 10。
将11 000 张训练样本按照9:1 划分训练集与验证集,输入图像为416 × 416 像素。采用迁移训练的思想,模型训练300个周期,前100个周期冻结骨干网络参数,初始学习率为0.001,批处理尺寸为32。后200 个周期解冻骨干网络参数,初始学习率为0.000 1,批处理尺寸为16,使用余弦退火学习率防止训练陷入局部最优,使用标签平滑尽可能去避免过拟合现象。
试验从精度(AP)、交并比(IoU)、推理速度(FPS)、查准率(P)、查全率(R)、模型参数量5 个指标来评估模型。精度AP的计算组合了查全率R与查准率P,其计算公式如下:
查全率指预测正确的覆盖率,即在所有正样本中被正确预测的比率;查准率指模型预测的准确率,即在所有预测中正样本所占的比率。在目标检测任务中,交并比IoU用来衡量预测框与真实框之间的重叠程度,本次实验设置IoU阈值为0.5,当检测框与真实框之间的IoU大于等于0.5 时,则认为检测正确。在实时检测任务中,模型的检测速度非常重要,检测速度用FPS 进行衡量,即每秒内可以处理的图片数量,FPS值越高,模型计算速度越快。
使用相同的数据集,相同的训练方法分别在YOLOv4、Faster-RCNN、CenterNet 模型上进行训练,与新模型G-YOLO 相对比,结果如下表。在文章的任务中,检测速度和精度是较为重要的两个指标,新模型G-YOLO 的精度与推理速度是最高的,对比YOLOv4,AP 提高了0.65 个百分点,推理速度提高了近10 f/s。在参数量上面,G-YOLO对比其他模型是最小的,仅有43.6 MB。
表3 试验指标对比Tab.3 Comparison of experimental indexes
采用平均绝对误差(MAE)与均方根误差(RMSE)对模型的计数能力进行评估,结果如下图。可以看出,新模型G-YOLO的平均绝对误差与均方根误差最小,对比各个模型计数能力更强更准确。
图9 不同检测模型计数能力对比Fig.9 Comparison of counting capabilities of different detection model
预测结果展示见图10,每组2张预测图中共有玉米雄穗213株,其中红色框是各个模型预测的结果,蓝色框是人工标注的漏检雄穗,黄色圆框代表模型预测的负样本。本次预测中,YOLOv4模型共漏检33株样本,误检2株样本;Faster-RCNN共漏检65株样本,误检6株负样本;CenterNet共漏检52株样本,误检1株负样本;G-YOLO共漏检23株样本。
图10 预测结果图Fig.10 The results of forecast
在预测图中,Faster-RCNN 漏检,误检样本数最多,出现误检主要出现于多株雄穗之间的重复检测,分析主要原因是在雄穗检测任务中,玉米雄穗属于较小的目标,Faster-RCNN 在经过数次下采样后无法对小目标进行有效地特征提取,而且在非极大抑制后依旧保留了部分检测框。CenterNet 由于是无锚框的设计,模型通过热力图只预测物体的中心点,所以在小目标玉米雄穗上容易出现误检,预测图中CenterNet 有将叶片误检为雄穗。YOLOv4 主要对预测图边缘的叶片斑纹出现误检,分析其原因是主干特征提取网络CSPDarkNet53生成较多的特征图,导致特征图的质量参差不齐,在提取特征的同时也引入了噪声,使预测变得不准确。
针对实时检测玉米雄穗任务,文章以YOLOv4为基准模型,在主干特征提取网络上,使用参数量更小的GhostNet 替换CSPDarkNet53,在加强特征提取网络PANet中,使用参数量更小的深度可分离卷积与稀疏性较强的ReLU6激活函数搭配去替换原有的CBL模块。
文章分别从模型的精确度、参数量、每秒检测图片数量以及对玉米雄穗计数能力多个维度进行比较与评估。对比基准模型YOLOv4,新模型G-YOLO 在有效轻量化的同时,检测精度提升了0.7 个百分点,检测速度提升了10 f/s。对比在玉米雄穗检测已有不错效果的Faster-RCNN 与CenterNet,新检测模型GYOLO无论是在参数量、精度、检测速度与计数能力等各方面都有显著的优势。
实时检测任务要求模型有较高的检测精度与较快的检测速度,新模型G-YOLO 在检测精度95.37%的同时FPS 能达到47.55 f/s,且参数量仅有43.6 MB。故G-YOLO 能有效地部署到嵌入式端进行实时玉米雄穗检测,对密切关注玉米抽雄期,提高玉米产量提供了一个有效的方式。
致谢:重庆师范大学科研项目(YKC21038)、重庆市教委科学技术研究项目(KJQN201800536)和重庆市高校创新研究群体智慧农业的机器视觉感知与智能算法研究项目(CXQT20015)同时对本研究给予了资助,谨致谢意!