基于Faster R-CNN的灵武长枣图像检测方法
2021-02-22王昱潭朱超伟李乐凯冯朝旭薛君蕊李嘉婧张加欣
王昱潭,朱超伟,赵 琛,李乐凯,李 萍,冯朝旭,薛君蕊,李嘉婧,张加欣
宁夏大学 机械工程学院,银川 750000
灵武长枣作为宁夏灵武市重要的经济林果之一,其最佳采摘期仅为20天左右。当下采摘方式仍是人工架梯采摘,危险性高,效率低。随着种植面积和产量的逐年增加,以及人口老龄化的加剧,研发相应的智能采摘装备是必然的。机器视觉部分作为智能采摘装备的图像信息采集处理环节,决定着该设备的可行性和工作效率。
研究人员在灵武长枣的图像分割领域做了大量的工作。王昱潭[1]根据灵武长枣的颜色特性,提出了基于颜色空间各分量特性和基于色差融合的两种在自然场景下的灵武长枣图像分割算法。这两种算法能很好地解决少量、轻度的粘连、遮挡和光线不均等问题,降低特定环境对图像分割的影响,并可以分别提取枣子的红色区域和绿色区域,分割成功率达到93.27%。后续对于灵武长枣彩色图像又提出了基于最大熵的图像分割方法[2],对于灵武长枣的彩色图像分割有很好的效果,分割的准确性为89.60%。赵琛等[3]针对灵武长枣几何特征的形态学研究提出了一种基于几何特征的灵武长枣图像分割算法,对于果实粘连较轻的图像,其分割准确率可达到92.31%。对于其他图像目标的检测识别方法很多选择卷积神经网络(Convolutional Neural Network,CNN)。如傅隆生等[4]以田间多簇猕猴桃为研究对象,利用LeNet 卷积神经网络对田间多簇猕猴桃图像进行识别,对于不同的田间情况其识别率不同,其中针对独立果实的识别率最高为94.78%。郑一力等[5]以提高植物叶片的识别率为出发点,在大量数据集的基础上利用AlexNet 和InceptionV3 卷积神经网络模型对植物叶片图像进行迁移训练,这两种模型的准确率分别为95.31%、95.40%,相对SVM(Support Vector Machine)、CNN 和DBN(Deep Belief Network)的准确率高,但时间稍长。Zhang 等[6]在处理图像检测时应用快速区域卷积神经网络(Fast R-CNN)方法,优化锚点和锚的大小使之对COCO2014数据集的训练检测更加精准。
在特定环境情况下利用传统分割算法是非常有效的[7],但是环境的变化对于算法有着较大影响。智能采摘装备在田间野外工作,周围环境的变化是未知的,太阳光照、树叶遮挡等都会直接影响图像分割效率和目标检测的准确度。
以更快速的区域卷积神经网络(Faster R-CNN)[8]为代表的当代神经网络算法已经能够适应各种环境,达到准确检测识别目标的效果。设计了一种具有自我学习能力、鲁棒性稳定、环境适应能力强和学习精准度高的双损失函数Faster R-CNN模型。标准的Faster R-CNN网络模型针对公共数据集的检测效果明显,但对于田间灵武长枣时时变化的环境,光照强度、枝叶遮挡、果果重叠黏连、不同角度、顺逆光、不同采集设备等条件下的分类损失会增大,同时目标候选框的回归损失增加。成熟网络结构特征的提取随着卷积层数的加深趋于收敛,一般情况下特征提取对网络检测效果有限。以首个区域生成网络(Region Proposal Network,RPN)层损失函数输出作为新的特征,分别连接其他损失函数进行集成运算。得到长枣图像检测网络,调试各网络参数达到速度和准确度最优化,与标准网络模型ResNet101、ResNet50[9-11]网络以及单一损失函数网络进行对比实验,验证本文设计的网络结构的优越性。再运用测试集检验Faster R-CNN网络模型的准确率。最后建立评价指标对测试集结果进行评估。
1 数据集与方法
1.1 数据的采集
图像数据于2016—2018 年9 月中旬到10 月初在宁夏灵武市长枣实验基地,自然状况下对灵武长枣进行拍摄取样。长枣图像拍摄设备为型号FUJIFILM FinePix S1800的数码相机,获得分辨率为3 016×4 032和4 608×3 456 两种图像。图像取样的原则是按照不同时刻、不同光照、遮挡、黏连、重叠、阴影等多样化情况,保证数据集的多样性。部分情况原始图像如图1所示。
图1 部分情况原始图像
1.2 数据集的建立
从实地采集的灵武长枣图像中共选取合格图像1 097 张,建立自然环境下灵武长枣图像数据集。对获取的合格原始数据,在不影响目标识别准确度的前提下,为加快训练对原始数据进行系列的预处理。针对图像像素进行大小处理,统一修改为256×256 的规格,为之后的数据训练节省时间,同时将图像的序号随机选择并重新编辑,保证其连续性、规范性和随机性。在采集图像环境多样性的条件下为使目标在图像中的姿态多样化,将全部图像按中心点逆时针旋转,在0°~180°每间隔10°进行一次旋转,共计18 次,并将原始图像进行一次镜像,最终获得原始图像20倍的数据共计21 940张。这样训练集在寻找目标的特征时增加了角度因素,减小了模型的过拟合现象。
以上是针对图像进行的系列处理,完备的数据集既包含训练集也有测试集,接下来在现有的数据集21 940张中选取前20 000张作为训练集,后1 940张作为测试集。
1.3 Faster R-CNN的结构设计
在深度学习神经网络算法领域,基于区域选择目标检测与识别算法中Faster R-CNN是应用最成熟的一种框架。它相对区域卷积神经网络(R-CNN)[12]和快速区域卷积神经网络(Fast R-CNN)[13],克服了提取卷积特征时产生的冗余操作,同时提出了区域生成网络[14](RPN),并融入GPU 运算,在不降低精度的同时大大提高了算法的检测和识别速度。但在使用单一损失函数情况下存在分类的误识别和识别遗漏,回归层长枣目标的框定出现冗余过大或过小,尤其是果果黏连、叶果遮挡的情况。使用双损失函数是为了进一步细化分类和减小回归损失,有效提高检测精度。
1.3.1 RPN
RPN模型在数据训练过程中,其输入端接收到前一层任意大小的特征图,以一个3×3的滑窗按特定步长搜索整个特征图,在这些滑窗的中心点对应着特征图上的锚点(Anchors),锚点生成与之匹配的9个预测目标候选框。这里将预测候选框和之前已经标定好的训练集数据中的矩形框进行定位精度评价(IOU),预测候选框经过非极大值抑制(Non-Maximum Suppression,NMS),评价值只有大于0.7的正样本才加入训练;接下来每一张特征图中所有滑窗选择的矩形窗口被映射为一个256维的向量,该向量传送到边框分类网络和边框回归网络,输出端会得到一系列矩形目标候选区,这就是RPN 的训练机制。RPN 训练过程中使用反向传播和随机梯度下降进行优化,其损失函数是分类误差和回归误差的联合损失:
SmoothL1平滑函数对离群点和异常点不敏感有利于控制梯度的量级。
其中,L为RPN联合损失,i为第几个锚点,Lcls为分类损失函数,Lreg为回归损失函数,Ncls为分类样本数,Nreg为回归样本数,ti为预测边界框坐标向量,为真实边界框坐标向量,pi为目标的预测概率,为锚点判别值。
经过RPN层的分类,可以获取候选区域,候选区域映射到原始图像中存在图2所示问题。
图2 第一层损失函数效果图
单层RPN 的训练,单一IOU 进行正负样本值域划分会导致误识别、重叠、边框回归不精准等问题,虽然加入了非极大值抑制,但从结果来看仍然存在上述问题。
在经历本层的分类损失函数softmax[15]后,得到以锚点为中心的区域各点概率值,选取≥0.9 的点,将其对应特征图中的区域作为感兴趣区域,此后不进行池化处理,将得到含有感兴趣区域的特征图作为新的特征图再次进行一次损失训练,但这一层的损失函数并不是重复性地添加。单一地添加softmax函数其分类机制完全相同,重复计算不能达到精度提升的效果。下面通过两种机制不同的损失函数进行分类处理,得到每个种类的概率值,选取最大的为感兴趣候选项。
这两种分类损失函数是利用softmax函数发展形成的更为精准的损失函数。softmax概率的矢量公式:
其中,O为输出层得到的数值矩阵,x为输入特征图中像素点,W为权值矩阵,b为偏置矩阵。为使输出的概率值在( 0,1) 之间,将输入的特征做以下变换:
其中,总的多分类类别为k,j∈[1,k]表示第j类,L为softmax 的交叉熵损失函数值,Li为中间函数,N为参与训练的样本数量,是第y类里第i个输入的权值,θyi,i代表了和xi之间的夹角。
在此基础上,对公式进行限定,固定‖ ‖W和b的值,使得角度因素权重增大,从而得到修正的损失函数(modified softmax loss):
为使该式具有单调性,引进:
其中,φ(θyi,i)=( -1)kcosθyi,i-2k,m=4 。综上得到A-softmax loss公式。
相对于A-softmax loss而言,L-softmax loss在公式中的区别是‖W‖并没有进行归一化处理,而是保留了权重模量上的影响。其公式如下:
公式中取所有权值‖W‖=1,偏置b=0。这样的数值最简单。
在多类别中间隔较小的类别不易分割,从上式中的影响因素分析,参数θyi,i的变化能使间隔产生较大的变化,这种变化的方式需要在θyi,i前加个数值m,在获取感兴趣区域时使得约束更强,数值更准确。得到公式:
不仅在角度方面对分类规则进行加强限制,同时在种类的距离上也具有限制作用。真正在训练时,精度是A-softmax loss的单约束高,还是L-softmax loss的双约束更能满足要求并不确定,包括softmax loss 都各有优势。所以这里选择A-softmax loss 和L-softmax loss 作为第二次损失计算的两种函数。
整个Faster R-CNN网络的训练结果是要生成一个检测器(detector)[16],用于验证智能采摘装置的视觉部分的实际应用。
本文设计的Faster R-CNN 框架结构示意图如图3所示。
图3 Faster R-CNN框架结构示意图
(1)卷积层(Conv Layers):该层由基础的卷积(Conv)层、线性整流函数(ReLU)层、池化(Pooling)层组成。输入训练集图像经过RGB 三通道进行颜色维度的扩大,使提取特征时颜色这一因素的比重增加,分别对每一通道进行卷积。这一层的处理提取到了图像的特征图(feature maps),在后续的处理当中feature maps将会被RPN网络与Fast R-CNN网络共享。
(2)RPN:在获取特征图后,RPN层按照一定的滑动框搜索机制实现场景中目标候选区域(region proposals)的选取,通过全连接卷积层送达到softmax 分类器进行前景和背景的锚点概率值计算。关键点在于能够将候选区域以新的特征图传递到两种损失函数,所传递的特征图相对于SS搜索机制得到的特征图极大地舍去了无关特征,提高了检测精度。
(3)RPN第二次损失函数的运用:在单一softmax函数不能有效区分目标所在的候选区域以及目标的合适回归位置时,在此添加一层损失函数是有必要的。之前使用的softmax再次重复使用会导致分类回归的收敛性增加。增加两种不同的损失函数减缓其收敛,同时选取两者中最高精度的损失值,映射得到新的候选区域传递至下一步运算。
(4)感兴趣区域池化层(ROI Pooling Layer),该层是属于Fast R-CNN网络的结构之一,在没有RPN层时要得到感兴趣区域很费时。一方面接收RPN层新的候选区域,另一方面接收共享的特征图,综合两方面信息提取出感兴趣区域特征图(proposal feature maps),将得到的感兴趣区域特征图经过池化传输给全连接层进行目标类别判定,这将大大提高目标的检测速度。
(5)分类(Classification):分类层利用已经获得的感兴趣区域特征图,通过全连接层与softmax 分类器计算每个感兴趣区域具体属于那个类别,同时再次利用边框回归获得每个感兴趣区域框的位置偏移量,用于精确目标检测框。
1.3.2 Fast R-CNN
Faster R-CNN 网络是由Fast R-CNN 网络发展而来,其中也包含了Fast R-CNN网络,如图4所示。
其优越之处是利用RPN层代替SS策略[17]提取目标候选区域。现将输入的图像经过5个Conv层、5个ReLU层、4个Max Pooling层和5个BN(Batch Normalization)[18]层得到特征图,用BN层做归一化处理保证在深度神经网络中输入分布的均匀性。特征图和RPN层的结果感兴趣区域框结合传到ROI pooling层,进而直接用softmax分类器进行计算,得出两个平行输出层:分类层和边界回归层[19]。
每个感兴趣区域在k+1 个类别上的概率分布为:
其中,p表示概率,pk表示第k类的概率。
边框回归的参数:
其中,tk表示第k类边框回归参数,表示第k类边框的中心点坐标,第k类边框的宽和高。
两个输出层的训练依据是一个联合损失函数:
u是目标所在类别的对数损失。
回归损失Lloc的定义为:
L在这里使用增强了模型的范数鲁棒性。其中L为联合损失函数,Lcls为分类损失函数,Lloc为回归损失函数,λ为权重值,SmoothLi为平滑损失函数。
2 实验
2.1 实验装置
(1)硬件部分
图4 Fast R-CNN网络
PC 参数如下:型号Acer Aspire E5-572G,处理器Intel Core i5-4210M(2.6 GHz),8.00 GB;GPU为NVIDIA GeForce 840M+Intel HD 4600;固体硬盘500 GB。
(2)软件部分
系统版本Windows10家庭中文版。
2.2 实验步骤
设计Faster R-CNN网络结构时对比单一损失函数网络以及ResNet101、ResNet50网络结构进行改进,在输入层添加RGB三通道和中间层加入BN层,关键是选择最适合灵武长枣的网络层数训练灵武长枣训练集,其步骤为:
步骤1输入层(Input Layer),对于检测识别任务一般输入整幅图像数据量过于庞大,无用的特征就要舍去,突出代表性强的特征,因此需要输入训练集图像中标定的目标最小尺寸作为输入数据,尺寸选为16×16,它能够很好地平衡一幅图像处理的时间和网络需要分析的空间细节量。输入图像的同时要经过RGB三通道将图像划为三个维度,然后分别对每个维度的图像提取特征图,增加真彩色图像的颜色特征提取。
步骤2中间层(Middle Layers),定义卷积层参数包括128 个滤波器,每个滤波器为5×5。接下来设计两个“Conv+maxPooling+BN+ReLU”层、三个“Conv+BN+ReLU”层。其中具体参数为:在卷积前填充的模式是输入维度等于输出维度的“SAME”,这样防止了边缘信息的缺失,在池化时使用5×5和3×3的最大池化和步长为3 和2 的搜索过程,在此过程后可以获取与RPN 共享的特征图。
步骤 3RPN 层,在步骤 2 运行后,RPN 层共享特征图。此处设置结构时经过一次5×5的卷积,分送到两个全连接层进行分类和边框回归处理,分类项应用softmax分类器,边框回归的参数是正样本范围在[0 .7,1.0],负样本范围在[0 ,0.3],训练时取以上两种范围。本文选取大于0.9的样本空间分别送入A-softmax loss和L-softmax loss函数,进行角度和角度距离两种限定条件分类,得到的结果送到下一步。
步骤4最后层(Final Layers),这一层要融合中间层获取的特征图和RPN 层的候选区域,使候选区域映射在特征图中建立ROI Pooling Layer 层,生成感兴趣区域特征图。接下来针对该特征图进行3×3最大池化,可以将大小不一的感兴趣区域特征图统一大小,然后进行分类处理。先经过一全连接层(Fully Connected Layer)和softmax分类器对感兴趣特征图中的感兴趣区域进行类别划分,判断出目标所在区域;另一方面针对锚点位置和边框大小进行回归处理,得到更精确目标的位置矩形边框。
步骤5训练超参数的设定,根据经验,学习率(learning rate)选择0.001,批量大小(batch size)为20,学习的回合数(epoch)为5,迭代次数(iterations)为1 000。按照上述设定好的网络结构和参数进行实验的配置设计,保存训练的结果检测器。
步骤6建立验证框架,利用训练的结果对测试集进行实验。记录了验证集的精确率P和召回率R值以及AP值。
实验流程如图5所示。
图5 实验流程
从测试集输出100张结果图像,部分展示如图6。
2.3 建立评价指标
采用平均精度[20](Average Precision,AP)作为对于Faster R-CNN 网络训练数据的一个评价指标,其定义与精确率P(Precision)和召回率R(Recall)相关[21]。将网络识别枣子这一目标的具体情况进行划分,如表1所示。
表1 情况和类别
图6 实验结果
精确率P的定义为:
表示搜索到的目标类别占所有检索到的类别的比例。
召回率R的定义为:
表示搜索到的目标类别占总目标类别的比例。以灵武长枣图像近端为识别对象,智能采摘装备在作业时首先要对最近的目标进行识别摘取,而远端的枣子需要执行端进行再识别,因此在计算召回率时要参考实际目标的图像环境。
精确率和召回率在神经网络处理大数据集的时候,以精确率为横轴,召回率为纵轴,建立了一个函数曲线,发现随着精确率增加而召回率非线性降低。要去判别一个网络检测识别目标的效果,平均精度是一项重要指标,其定义为:
从直观方面AP表示P(R)函数曲线所围成的面积,AP值越大说明该网络性能越优,反之则越差,这种情况也适用于精确率和召回率。针对识别灵武长枣这一类别使用R、P、AP三种数值能够准确评价网络结构的优劣。
根据以上的评价准则对本文方法和运用单一损失函数网络ResNet101、ResNet50网络进行比较。
各种方法的召回率R和精确率P的数值如表2所示。各种方法的AP值如图7所示。
在网络超参数的作用下迭代过程中采用双损失函数依次进行回归运算,不同的网络结构中的损失函数的收敛如何,依据网络中的损失函数迭代的均方根误差值(RMSE)和振荡效果来衡量。
表2 各种方法的R 和P 值
其中,n代表批量数,表示该批量在本次迭代中的平均值,yi为目标真实值。不同网络结构中的损失函数收敛曲线如图8所示。
2.4 实验结果分析
从每种方法对测试集的处理结果中选取相互对应的图片各6张,这6张图片的选取依据为:图像中的灵武长枣的个数分别为一个、两个和多个,其中包含不同时刻、叶果遮挡、果果黏连等情况。观察图6 中本文方法和其他方法的结果图,对于单一数量灵武长枣而言,双损失函数网络和单一损失函数网络、ResNet50网络的处理结果对比分类无误识别现象,其中ResNet101网络相对边框回归的精度较差。同样从两个长枣的图像比较,本文方法在边框回归的处理上更精确,三个及以上长枣的图像相互比较,可以得出双损失函数网络在目标的识别分类和边框回归方面相对于ResNet101、ResNet50 网络而言更加精准。
图7 各种方法的AP值
图8 收敛曲线图
另一方面,从各种方法处理测试集得到的精确率、召回率和平均精度的数据值表明:表2所示精确率和召回率是根据所有验证集图像的结果求得的平均值,本文方法的精确度为0.921 3 和召回率为0.982 6,相对于其他网络结构数值有明显的提高。而召回率大于精确度的原因是目标长枣是图像中前排的,相对较靠远的并不属于目标范围,所以即使识别到也不能划分为目标。图7平均精度表示非线性的召回率和精确率组成的图形面积,双损失函数网络为0.8,大于单一损失函数网络和ResNet101、ResNet50 网络的 0.7。图 8 中显示的双损失函数随迭代次数呈递减状态并接近0值收敛,与单损失函数随迭代次数的收敛曲线相比较,在前240次迭代为第一次损失函数,然而没有经历第二次损失函数在接下来的迭代中振荡明显而且均方根误差在0.2附近。经典的ResNet50网络后期在0.15附近振荡,ResNet101网络的损失迭代从振荡效果上可以得知收敛不明显,均方根误差无趋向值。综上表明本文方法能得到更优的检测结果。
3 结束语
本文从建立灵武长枣数据集开始,运用一种双损失函数的Faster R-CNN 网络结构进行特征图的提取,这决定了RPN 层会提供更为优化的数据,在经历目标候选区域与特征图的融合池化后传递至分类和边框回归,得到训练集的结果——检测器,进而通过检测器处理测试集得到结果图像。本文方法解决了在智能采摘灵武长枣装置的目标检测因环境不同、叶果之间遮挡、果果之间黏连等传统算法不易适应的问题,其对于测试集处理得到的结果相对于本文其他网络结构在精确率、召回率、平均精度方面有明显的优势。同时为机器视觉应用到林果采摘方面提供了基础数据。
因为程序对计算机的硬件性能要求严格,其中GPU尤为依赖,导致网络对训练集的训练效率较低,得到的检测器对验证集的目标检测也有一定的影响,一张图像的检测用时在30 s 左右。接下来要解决的是图像检测的用时问题,将检验器对于图像的检测达到林果实时采摘的要求。