2. 广西高校并行与分布式计算技术重点实验室, 广西南宁 530004;
3. 广西医科大学第一附属医院, 广西南宁 530021
2. Guangxi Colleges and Universities Key Laboratory of Parallel and Distributed Computing Technology, Nanning, Guangxi, 530004, China;
3. The First Affiliated Hospital of Guangxi Medical University, Nanning, Guangxi, 530021, China
棉花生产关系到国家发展的点点滴滴,棉花不仅是人民穿着的重要材料来源,而且在疫情期间,口罩、防护服等医护用品的需求剧增,棉花的供给变得更为重要。棉花打顶作为棉花生产工作中的一个重要环节,整体机械化低下,导致棉花生产的人工成本居高不下。打顶一般在植物的枝条修剪定型期进行,及时打顶既能消除棉花顶芽的生长优势特性,还能调节棉花内部的养分配比,使棉铃获取更多的养分,增加铃重。另外打顶还有控制植株高度,改善生产基地的植株光照情况,以达到增产增收的作用。目前,我国对棉花的机械打顶主要采用“一刀切”的方法,这种方式对棉株的棉铃、花蕾造成损伤,影响棉花的产量。因此,提高棉花打顶技术,实现棉花顶芽检测和识别的机械化、智能化,具有很强的现实意义。
目前,我国机械打顶常用的机器视觉技术主要有3种: 基于BP神经网络的机器视觉技术[1]、基于机器视觉技术的棉株识别定位算法[2]、双目视觉技术[3]。近年来,随着计算机硬件的升级换代及性能大幅提升,机器学习领域得到飞速发展,而机器学习对于改进农业生产具有重大的助力作用。深度学习(Deep Learning,DL)是机器学习领域中一个新的研究方向[4]。2014年,Huo等[5]提出一种基于区域偏好和深度卷积运算的目标检测算法(Regions with CNN features,RCNN)。这一创新打破了目标检测技术的僵局,掀起深度学习机制下如何实施更优良的目标检测的新研究热潮。感兴趣区域对于目标提取的途径是解析图像中存在的各种信息,如图形纹理、物体边缘、特征大小等,同时标记尽可能少的窗口,来找到所有可能包含所需目标的区域。这不但要保证较高的召回率,还要尽可能地降低时间复杂度。目前基于深度学习的目标检测算法的研究主要分为两种方向: 一种是通过感兴趣区域提取特征的算法,例如RCNN、SPP-net[6]、Fast RCNN、Mask RCNN[7]和R-FCN-3000[8]等;另一种是基于回归计算的算法,例如YOLO[9]、YOLOv2[10]、YOLOv3[11]、YOLOv4[12]和SSD[13]。
经过RCNN和Fast RCNN[14]的积累,Girshick[15]在2016年提出新的算法模型Faster RCNN,在结构上,Faster RCNN将特征提取、感兴趣区域提取、边框回归、分类集成到一个网络中,通过构建一个RPN网络,使得产生候选建议框的速度大幅提升。
本研究将农业生产实践与深度学习算法结合,使用深度卷积神经网络技术,通过在Faster RCNN模型中融入多种深度网络模型,提出一种性能更好的改进深度学习模型。旨在将该模型用于农业自动化检测和识别棉花顶芽,减少人工重复的复杂田间劳动,提高棉花劳作工作效率,对促进棉花科学种植,棉花生产机械化自动化,提高棉花产量,提高棉农和相关企业收益,保证国家棉纺织业原材料稳定来源,维护国家稳定具有重要意义。
1 改进深度学习模型 1.1 模型架构概述本研究提出的改进深度学习模型,以最新的深度卷积神经网络算法为基础,将深度网络模型ResNet融入到Faster RCNN网络模型中。改进深度学习模型在网络的高层涵盖多种网络模型的优点,获得信息量更丰富,得到对于棉花顶芽检测与识别更为有益的图像特征,从理论上保证更优异的棉花顶芽的检测与识别结果。
1.1.1 Faster RCNN模型概述Faster RCNN是目标检测算法模型中较早提出来的两阶段模型,框架整体分为4个部分:
① Conv layers提取特征图。作为一种CNN网络系列目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取输入图像的图片特征, 用于后续的RPN层和全连接层。
② 区域提案网络(Region Proposal Network,RPN)。RPN网络主要用于生成候选区域(Region proposals),首先生成一堆锚框(Anchor box),对其进行裁剪过滤后通过softmax函数判断锚框属于前景(Foreground)或者后景(Background),即是物体或者不是物体,所以这是一个二分类,最后形成较精确的候选框(Proposals)。
③ ROI池化层。该层利用RPN生成的proposals和图片特征,得到固定大小的候选框特征图, 可利用全连接操作来进行目标识别和定位。
④ Classifier。会将ROI池化层形成固定大小的特征图进行全连接操作,利用softmax进行具体类别的分类,同时获得物体的精确位置。
1.1.2 ResNet模型概述ResNet于2015年提出,特别深的神经网络是很难训练的,因为存在梯度消失和梯度爆炸问题。传统对应的解决方案是数据的初始化(Normlized initializatiton)和正则化(Batch normlization),这两种方案虽然解决了梯度的问题,但同时带来另外的问题,就是网络性能的退化和错误率上升。而残差设计用来解决退化问题,同时也解决了梯度问题。ResNet是由残差块(Residual block)构建的,如公式(1)(2)所示。式(1)是残差模块中的基本形式,是恒等映射,F是网络中的变化,式(2)是对于叠加之后值的变换,在原始残差模块中是relu函数,网络通过学习F的参数来减小损失值。
$ {y_l} = h\left( {{x_l}} \right) + F\left( {{x_l}, {W_l}} \right), $ | (1) |
$ {x_{l + 1}} = f\left( {{y_l}} \right) $ | (2) |
改进深度学习模型的整体架构如图 1所示,模型基于深度网络架构进行关键区域选取、特征学习, 以及目标识别与分类的过程如①-④所示:
① 获取图片特征。使用预训练好的ResNet-101网络提取图片特征,通过网络的进一步处理得到下一部分区域提案网络(Region Proposal Network,RPN)需要的图片特征(conv5_3)。
② 使用ResNet-101模型与RPN网络获取待检测棉花顶芽的候选框Proposal,算法具体流程如算法1-1所示。
算法1-1候选框Proposal生成算法:
输入: 图片特征conv5_3
输出: 候选框proposals
Step 1:首先将图片特征conv5_3输入卷积层conv(3, 3, 512, 1, 1),输出的图片特征rpn_conv/3×3尺寸和通道数均保持不变。
Step 2:将图片特征rpn_conv/3×3输入给卷积层conv(1, 1, 36, 1, 1)得到rpn_box_pred。
Step 3:将rpn_conv/3×3输入给conv(1, 1, 18, 1, 1)得到类别得分rpn_cls_score。
Step 4:将rpn_cls_score输入reshape_layer,softmax,reshape_layer,得到概率rpn_cls_prob_reshap。
Step 5:将rpn_bbox_pred和rpn_cls_prob_reshape以及im_info输入给proposal_layer得到候选识别区域rois,即RPN网络最终输出的proposals。
每一个卷积层都能使用经过训练的卷积核,从前面的池化层中学习更高级、不变性更强的特征信息,如下面公式所示:
$ y_j^c = \sum\nolimits_i {{k_{ij}} \times {x_i} + {b_j}} , $ | (3) |
式中,yjC表示第j个卷积映射层,kij是对应的卷积核,从前面的池化层xi学习到本卷积映射层的数据特征,bj是第j个卷积映射层的运算偏移参数。每一个卷积层会使用多个卷积核,计算得到多个卷积映射层,从而能提取到广泛有效的各种数据特征。
③ 通过ROI池化层得到综合的proposals特征。将rois和conv5_3输入给roi_pool得到pool_5,关于roi_pool的输入,尺寸大小是任意的,但输出的特征都是长度为固定的。
池化层将采用平均运算子,对前一个卷积映射层学习到的数据特征进行聚合收拢,把重要的特征保留加强,噪声和无用特征滤除。计算推理公式为
$ y_j^p = S\left( {\beta \sum {x_i^{n \times n} + \alpha } } \right) $ | (4) |
式中,xin×n是前一个卷积映射层n×n的图像块,β是可训练参数,表示池化的训练期望权重,α是模型偏移参数,S是激发函数。
④ 根据poposals特征进行框回归和物体分类,算法具体流程如算法1-2所示。
算法1-2类别预测框回归算法:
输入: proposals特征pool_5
输出: 物体的边框bbox_pred和物体的类别cls_prob
Step 1:将pool_5连续输入两个全连接层得到fc_7。
Step 2:将fc_7输入全连接层得到bbox_pred, 得到最终的proposals。
Step 3:将fc输入全连接层得到物体类别得分cls_score。
Step 4:将cls_score经过softmax层得到cls_prob,即proposal属于各个物体的概率。
在softmax层中,假定训练集如下:
$ \left\{ {\left( {{x^{(1)}}, {y^{(1)}}} \right), \cdots \left( {{x^{(m)}}, {y^{(m)}}} \right)} \right\}, $ | (5) |
y由0或1扩大到{1, 2, 3, …, k }共有k类。
对于测试输入x则需要利用如下计算输入每个类别的j的条件概率值为
$ p = \left( {{y^{\left( i \right)}} = j\left| {{x^{\left( i \right)}}} \right.;\theta } \right) = \frac{{{e^{\theta _j^{\rm{T}}{x^{\left( i \right)}}}}}}{{\sum\nolimits_{l = 1}^k {{e^{\theta _l^{\rm{T}}{x^{\left( i \right)}}}}} }}。$ | (6) |
假设函数如(7)式输出一个k维的向量,那么每一维的向量分量则代表此类别j下的p值,同时全部向量的元素条件概率之和等于1,而θ是模型训练更新的参数:
$ \left. \begin{array} { l } { h _ { \theta } ( x ^ { ( i ) } ) = \left[ \begin{array} { c } { p ( y ^ { ( i ) } = 1 | x ^ { ( i ) } ; \theta ) } \\ { p ( y ^ { ( i ) } = 2 | x ^ { ( i ) } ; \theta ) } \\ { \vdots } \\ { p ( y ^ { ( i ) } = k | x ^ { ( i ) } ; \theta ) } \end{array} \right] = } \\ { \frac { 1 } { \sum _ { j = 1 } ^ { k } e ^ { \theta _ { j } ^ { T } x ^ { ( i ) } } } \left[ \begin{array} { c } { e ^ { \theta _ { 1 } ^ { T } x ^ { ( i ) } } } \\ { e ^ { \theta _ { 2 } ^ { T } x ^ { ( i ) } } } \\ { \vdots } \\ { e ^ { \theta _ { k } ^ { T } x ^ { ( i ) } } }。\end{array} \right] } \end{array} \right. $ | (7) |
Softmax回归的代价函数在定义示性函数为1{·}(大括号中表达式若真结果则为1,若假结果则为0)后, 为了防止参数冗余导致计算误差, 还会加入权重衰减策略:
$ \left. \begin{array} { l } { J ( \theta ) = } \\ { - \frac { 1 } { m } [ \sum\limits _ { i = 1 } ^ { m } \sum\limits _ { j = 1 } ^ { k } 1 \{ y ^ { ( i ) } = j \} \operatorname { log } \frac { e ^ { \theta _ { j } ^ { T } x ^ { ( i ) } } } { \sum\limits _ { l = 1 } ^ { k } e ^ { \theta _ { l } ^ { T x ^ { ( i ) } } } } ] + } \\ { \frac { \lambda } { 2 } \sum\limits _ { i = 1 } ^ { m } \sum\limits _ { j = 0 } ^ { k } \theta _ { i j } ^ { 2 } }。\end{array} \right. $ | (8) |
而对于式(8)的最小化问题,通常采用梯度下降求偏导进行迭代优化,得到一个相对准确的值。那么梯度公式则可表示为
$ { \nabla _ { \theta _ { j } } j ( \theta ) = - \frac { 1 } { m } \sum _ { i = 1 } ^ { m } [ x ^ { ( i ) } ( 1 \{ y ^ { ( i ) } = j \} - } \\ { p ( y ^ { ( i ) } = j | x ^ { ( i ) } ; \theta ) ) ] + \lambda \theta _ { j } }。$ | (9) |
由于RPN和Faster RCNN两个网络独立运行,所以本研究通过共享卷积特征的方法, 将两种深度学习方法融合构建出改进深度学习模型架构,训练方式有以下两种:
① 交替训练。首先进行网络参数初始化,接着利用预处理模型训练RPN网络,下一步再把RPN网络的输出输入到Faster RCNN目标检测网络中,然后在训练中更新权重参数, 并对RPN网络进行更新迭代,最后不断重复上述步骤, 得到一个训练好的改进网络模型。
② 近似联合训练。将RPN网络和Faster RCNN目标检测网络合二为一,正向传播时正常进行,反向传播则合并两个网络在共享层的所有损失。这种方法忽视了感兴趣区域计算出坐标预测梯度值,所以称作近似联合训练。
2 材料与方法 2.1 棉花顶芽图像数据本研究所用到的棉花顶芽图片数据,是由新疆棉花产地的生产员拍摄获取,部分图片如图 2所示。棉花顶芽位于棉花主茎的顶端,周围常生长繁茂的主茎叶,如图 2红框所示。顶芽的生长占据优势,同时抑制邻近侧芽的生长,使侧芽处于休眠状态,这种现象也叫做顶端优势。摘除顶芽,便可消除顶端优势,以促使侧芽萌发、增加侧枝数目,达到增产和控制花木株型的目的。
2.2 棉花顶芽探测难点分析
棉花是成行种植的,但是随着植株的生长,相邻植株的茎叶会争抢生长空间,同时由于相邻植株生长态势的差异性,会造成相邻植株的茎叶高低错落地遮挡、掩盖,另外还存在一些杂草和植株缠绕生长。这些因素造成图像空间背景的复杂性,因此棉花杂质探测模型要有很高的准确率。
本研究获取的2 000张棉花开花的图片,需要进行前期数据预处理,清除不良模糊的图片;接着对图片数量进行数据增强增加训练样本,同时按照PASCAL VOC2007所要求的数据集命名存放格式进行整理。数据集训练样本标
① 进行完数据预处理后对剩余图片进行数据增强,翻转复制。
② 对4 000余张图片按照PASCAL VOC2007所要求的命名格式进行批量命名,以便后期对棉花顶芽数据集进行训练。
③ 利用Labelimg图片标注工具对每张棉花顶芽图片进行目标框标注,同时剔除不良图片,并将标注的棉花顶芽的位置信息以xml数据格式保存
④ 根据标注生成的xml文件,利用Python语言随机生成棉花顶芽图片数据集的4个测试训练txt后缀文件: test.txt是测试集,train.txt是训练集,val.txt是验证集,trainval.txt是训练和验证集。
⑤ 将整理好的棉花顶芽数据集图片生成xml文件,同时将txt文件按照PASCAL VOC2007提供文件存放位置, 分别放入JPEGImages文件夹、Annotations文件夹和ImagesSets的Main子文件夹中。
2.3 对比实验设计本研究设计了3组Faster RCNN模型和改进深度学习模型的对比实验。
实验一: 在相同迭代次数下,对棉花顶芽数据集的训练时间长短进行对比;
实验二: 在相同迭代次数下,对棉花顶芽数据集的平均精度(Average Precision,AP)进行对比;
实验三: 在相同数量、相同内容图片的测试中,对单张图片的平均探测识别时间的长短以及检测的具体验证效果进行对比。
为更系统地评估本研究提出的模型,本实验将使用平均精度进行对比分析。计算公式如式(10)。
$ {\rm{AP = }}\int_0^1 {{\rm{Precision(Recall)}}\;d} \;{\rm{Recall, }} $ | (10) |
$ {\rm{其中,Precision}} = \frac{{{\rm{TP}}}}{{{\rm{TP}} + {\rm{FP}}}}, $ | (11) |
$ {\rm{Recall}} = \frac{{{\rm{TP}}}}{{{\rm{TP}} + {\rm{FN}}}}, $ | (12) |
式中TP (True Positives)表示真正例,指被标注的棉花顶芽被正确的检测出来;TN (True Negatives)表示真负例,指为正确地识别出的非棉花顶芽候选框;FP (False Positives)表示假正例,指被标注的棉花顶芽未被正确的检测出来;FN(False Negatives)表示假负例,是没有被检测识别出来的非棉花顶芽。
3 结果与分析 3.1 实验一结果与分析分别在Faster RCNN模型上和改进深度学习模型上进行40 000次迭代,对棉花顶芽数据集的训练时间长短检测结果如图 3中蓝色柱所示。虽然改进深度学习模型中的ResNet-101的网络层次是Faster RCNN模型中VGG-16网络深度的6倍左右,但是两种模型的训练花费时间分别是10 h和19 h,这是因为ResNet-101网络引入了跳跃连接,这可以使上一个残差块的信息没有阻碍地流入到下一个残差块,提高了信息流通。
3.2 实验二结果与分析
图 4展示两种模型对比的精确度-召回率曲线,两条曲线直观地展示出两个模型在精确度和召回率统计分析指标上的表现,具体数值对比如图 3中橙色柱所示,改进深度学习模型和Faster RCNN模型的精确率分别是77.5%和76.2%。从图 4可知Faster RCNN模型的精确率很高,随着召回率的增大,下滑速率逐渐加快;而改进深度学习模型,初始精确度一般,但是下滑速率却比Faster RCNN模型要小。图 4中存在改进深度学习模型曲线随着召回率的增大,下滑速率逐渐加快的现象,原因是在数据集预处理阶段没有考虑到其他近似分类项的标记处理,只进行了单分类标记。改进深度学习模型提高了棉花顶芽数据集的AP值,保证模型可以达到最优检测和识别性能,实际生产中,有利于减少棉花顶芽探测的遗漏,提高生产效益。
3.3 实验三结果与分析
在提供相同数量、相同内容图片的测试中,两种模型对于图片的平均探测识别时间的长短对比实验效果如图 3中柱状图灰色柱所示。从图 3中可以直观地看到改进模型探测时间是127 ms,而Faster RCNN模型的时间高达220 ms,Faster RCNN模型对于单张图片平均花费的探测识别时间远比改进深度学习模型要长。原因是ResNet网络的跳跃连接提高了信息流通,这与实验一的结果分析相同。随机选取原始标定框图 5,两种模型对图 5的探测具体识别效果如图 6和图 7所示,可以发现改进深度学习模型能做到很好的高精度识别,同时还对原始标定框以外的疑似目标进行框定。实际生产中,有利于保证棉花顶芽探测的全面性,提升经济效益。Faster RCNN模型识别精度也挺高,但还是存在一定的低精度识别。改进深度学习模型通过牺牲大量训练时间和增加识别时间达到更高精度的识别效果。相比于Faster RCNN模型而言,如果在处理好数据集样本进行更多分类样本标定的情况下,改进深度学习模型的检测识别效果可以大幅度提高。
4 结论
本研究借助深度卷积神经网络技术,在分析目标检测国内外相关研究工作的基础上,提出改进深度学习模型,实现对棉花顶芽的精准检测和识别。本研究通过对改进深度学习模型和Faster RCNN模型两种网络模型的对比分析实验,验证了本研究的改进深度学习模型基于Faster RCNN模型融入ResNet-101网络模型改进之后,对整体数据的识别准确率得到明显提高。这是本研究用深度学习和目标检测技术为棉花顶芽检测和识别提供的一个新思路,是推动农业智能化的一次尝试。
[1] |
刘俊奇. 棉花株顶识别系统的研究[D]. 石河子: 石河子大学, 2009: 1-4.
|
[2] |
瞿端阳. 基于机器视觉技术的棉株识别系统研究[D]. 石河子: 石河子大学, 2013: 1-6.
|
[3] |
魏纯, 李明, 龙嘉川. 采摘机器人果实识别与定位研究——基于双目视觉和机器学习[J]. 农机化研究, 2021, 43(11): 239-242. |
[4] |
员娇娇, 胡永利, 孙艳丰, 等. 基于深度学习的小目标检测方法综述[J]. 北京工业大学学报, 2021, 47(3): 293-302. |
[5] |
HUO L, BAI L, ZHOU S M. Automatically generating natural language descriptions of images by a deep hierarchical framework[J]. IEEE Transactions on Cybernetics, 2021(99): 1-12. |
[6] |
HE K M, ZHANG X Y, REN S Q, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2014, 37(9): 1904-1916. |
[7] |
KAIMING H, GEORGIA G, PIOTR D, et al. Mask R-CNN[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2020, 42(2): 386-397. |
[8] |
SINGH B, LI H, SHARMA A, et al. R-FCN-3000 at 30fps: Decoupling detection and classification[C]//2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2018(6): 18-23. DOI: 10.1109/CVPR.2018.00119.
|
[9] |
REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: Unified, real-time object detection[C]//2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016, 1: 779-788.
|
[10] |
REDMON J, FARHADI A. YOLO9000: Better, faster, stronger[C]//2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Honolulu, HI, USA: IEEE, 2017.
|
[11] |
REDMON J, FARHADI A. YOLOv3:An incremental improvement[J]. ArXiv preprint arXiv: 1804.02767, 2018. |
[12] |
BOCHKOVSKIY A, WANG C Y, LIAO H Y M. YOLOv4:Optimal speed and accuracy of object detection[J]. ArXiv Preprint ArXiv: 2004, 10934, 2020. |
[13] |
LIU W, ANGUELOV D, ERHAN D, et al. SSD: Single shot multibox detector[C]//European Conference on Computer Vision, 2016: 21-37.
|
[14] |
REN S Q, HE K M, GIRSHICK R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2017, 39(6): 1137-1149. |
[15] |
REN S Q, HE K M, GIRSHICK R B, et al. Faster R-CNN: Towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2017, 39(6): 1137-1149. |