APP下载

基于改进Faster R-CNN 的垃圾检测与分类方法

2021-08-20陈嘉颖

计算机工程 2021年8期
关键词:卷积垃圾分类

马 雯,于 炯,,王 潇,陈嘉颖

(1.新疆大学 软件学院,乌鲁木齐 830008;2.新疆大学 信息科学与工程学院,乌鲁木齐 830046)

0 概述

随着我国经济的高速发展,城市规模逐渐扩大,城镇人口的日益增多,使得城市生活垃圾的产量迅猛增长[1]。针对目前的城市垃圾,加大治理力度,对垃圾进行无害化、资源化处理是当前急需解决的问题。垃圾的回收利用在现代社会中占有重要地位,对垃圾进行有效分类是处理垃圾回收问题的前提[2]。目前,面对人工分拣垃圾环境差、回收任务繁重且分拣效率低等问题,研究人员提出垃圾识别与分拣实现智能化和自动化。利用深度学习技术不但可以降低人工成本,节约人力资源,进一步提高有限资源的重复利用率,有助于加速实现生态文明建设的目标[3]。

本文提出一种基于改进Faster R-CNN 的垃圾检测与分类方法。利用改进的Faster R-CNN 算法处理垃圾分类问题,克服垃圾分类的人工预处理难题。使用经过预训练的Faster R-CNN 算法对物体进行检测,通过网络在图像的单个前向传输中提取全局和局部尺度的卷积特征。研究VGG16[4]网络架构与ResNet50[5]架构对于垃圾分类算法性能的影响,从而选择效果更好的网络完成垃圾分类。

1 相关工作

物体检测是一项计算机视觉任务,吸引了许多研究者的关注。2012 年提出的Alexnet 是一种卷积神经网络架构,该架构曾获得ImageNet 挑战赛的冠军[6]。该竞赛中使用的架构具有结构简单与性能极高的特征。目前,深度学习已成为最受关注的研究主题,并且涌现了出色的神经网络算法[7],例如VGG、Xception、ResNet 等。GIRSHICK 提出的R-CNN[8]算法将卷积神经网络用于目标检测,它通过使用深度卷积网络完成了图像的特征提取。HE等[9]提出一种SPP-NET 方法,去掉了原始图像上的crop/warp操作,并将其替换成在卷积特征上的空间金字塔池化层(Spatial Syramid Sooling,SPP)。OverFeat R-CNN[10]为使用CNN 的所有提案制定了ConvNet[11]功能,并且通过SVM 对每个区域进行分类[12]。R-CNN在空间和时间上的训练成本较高,对于非常深的网络,需要较大的硬盘空间来存储信息,在GPU 上使用VGG16 检测一个图像需要47 s。

为克服R-CNN 的耗时问题,Fast R-CNN[13]算法提出在对象提案中特征共享,感兴趣区域(RoI)池化层旨在获得同样长度的特征向量作为结果,每个图像仅提取一次特征。此外,由于SVM 过程被删除,所有功能都临时存储在内存中,没有占用额外的磁盘空间。在相同的硬件平台上,Fast R-CNN 仅需0.3 s 即可完成图像检测。但是,R-CNN 和Fast R-CNN都存在相似的缺陷,即它们在训练阶段之外还需提取建议并依赖于外部区域建议。因此,它们不是完全的端到端物体检测系统。为了解决这个问题,REN 等[14]提出一种区域提议网络(RPN),该网络可以直接连接到Fast R-CNN 网络的最后一个卷积层,以得到对应的检测对象框和分数信息,该网络被称作为Faster R-CNN。区域提议网络是一个全卷积网络(FCN),其主旨是生成更高质量的区域提议。每个提议都有一个对应的信心得分,同时它也可以预测每个坐标位置的对象边界及其分数。为了生成图像的区域提议,小网络在顶部转换层所输出的卷积特征图上滑动,通过使用不同尺度的锚,使得Faster R-CNN 的检测效果针对变形图像的表现比Fast R-CNN 的表现更加稳健。因为它与CNN 共享全图卷积特征,所以可以大幅减少计算时间。使用VGG16 模型,检测图像中的所有区域提议仅需0.2 s。由此可见,Faster R-CNN 是从训练到检测过程中真正的端到端网络。

在通常情况下,Fast R-CNN 的VGG16 模型或Zeiler 和Fergus 模型(ZF)[15]预先训练都有特定的图像数据集和相应的注释,例如Microsoft COCO 数据集[16]和Pascal VOC[17]。

2 垃圾分类检测方法设计

2.1 数据集

由于关于垃圾分类研究未曾发现公开数据集,因此本文研究使用的数据由网络采集和相机拍摄的方式获得。网络采集占总数据集的20%,其余80%均由索尼单反相机拍摄所得,保证了图像质量和清晰度。数据集中图片总共5 000 张,其中包括卡纸、玻璃、纸、塑料、金属等。图片尺寸为1 891×1 263,格式为JPG 格式,为保证类别标签的可靠性[18],所有的垃圾类别都预先经过了人工识别。

2.2 数据集的划分

利用LabelImage软件对所有的图片进行人工标注,将数据集制作成Pascal_voc 数据格式,同时对样本图片重新进行命名排序,根据产生的XML 格式文件编写相应的代码使其生成训练集、验证集和测试集。

1)训练集

训练集是指在模型训练的过程中使用的数据图像[19]。训练集起到对初始模型拟合与参数优化的作用,本文采用了五折交叉验证的方法来测试该优化算法的精确度。将5 000 张垃圾图片作为模型的输入,并平均分成6 个等份,然后轮流将其中5 份作为垃圾检测训练数据集,剩余的1 份作为测试数据集用来对模型进行测试(见图1)。每次的模型训练与测试实验都会得出相应的正确率,最终将5 次的正确率结果进行平均值计算得出该目标检测算法精确度的估计。因此,实际使用的训练集占总数据集的4/5。

图1 数据集划分Fig.1 Division of datasets

2)验证集

验证集是指在每个Epoch 完成之后检验模型的状态以及收敛情况[20],它并没有参与梯度下降的过程而仅仅是调整迭代次数和学习率等超参数,所以并不参与学习参数的确定。验证集根据5 组模型的表现决定哪一组的超参数拥有最好的性能并将其采纳。与此同时,验证集在训练的过程中还可以用来监控模型是否发生过拟合从而判断训练停止的时间。如图1 所示,在训练数据集中随机抽取1 份做验证集,剩余4 份做训练集,记录精确度。依次循环直到每份都做过1 次验证集,交叉验证的过程就此结束。算得5 次精确度的均值后,留下精确度最高的模型,并以该模型的超参数定为最终模型的超参数。

3)测试集

测试集是指在完成训练得出最优模型之后对模型进行测试的数据集。本文测试集共有833 张图片,通过测试确定该模型检测与分类的精确度,进一步验证其泛化能力,确保该模型在日后实际应用时的正确性和有效性[21]。

2.3 垃圾识别分类方法

本文探讨了将对象检测CNN 的特征用于垃圾分类任务的适用性。选择Faster R-CNN 作为实验训练模型,并将其用作全局和局部尺度的特征提取。如图2 所示,Faster R-CNN 算法利用卷积神经网络来提取输入的垃圾图像特征图,通过共享卷积层将该特征图分别送入Faster R-CNN 网络和区域提议网络中。一方面将特征图输入区域提议网络使其经过滑动窗口来产生特征向量,并且将其连接到网络后部的全连接层,然后再将其进行分类和回归生成区域建议;另一方面通过卷积神经网络提取特征图,将区域建议和特征图一并送入感兴趣区域池化(ROI Pooling)使其固定成特定的尺寸,接下来通过所定义的2 个损失函数对其进行分类和回归,生成预测坐标值从而得到目标检测框。

图2 Faster R-CNN 算法框架Fig.2 Framework of Faster R-CNN algorithm

如图3 所示,本文所提出的训练策略是首先利用ImageNet初始化模型使其独立地利用垃圾数据集训练一个区域提议网络(RPN)。其次运用ImageNet模型初始化该模型,同时将区域提议的训练结果作为输入用来训练Faster R-CNN网络,至此,设置RPN网络和Faster R-CNN 网络每一层的参数完全不共享。然后将其所得的网络参数初始化成一个新的区域提议网络(RPN2),设置Learning Rate 参数为0 来限制共享卷积层不再更新,只更新区域提议网络中特有的网络层,再次训练模型。此时,设置2 个网络共享所有公共卷积层并将其固定。最后将Faster R-CNN 特有的网络加入进来,从而形成独立的统一网络。

图3 Faster R-CNN 训练策略Fig.3 Training strategy of Faster R-CNN

区域建议网络作为该算法的核心部分是用一个全卷积网络来实现的,其具体结构如图4 所示。在区域提议网络结构中,滑动窗口对垃圾图像特征图进行卷积操作产生n维特征向量,产生的特征向量分别输入到回归层和分类层。滑动窗口滑动一次会预测出k个区域建议,其中回归层需要预测出包围框的宽、高和中心坐标,因此回归层需要输出4k个坐标,分别包括Proposal 的宽W、高H、中心点坐标(X,Y)4 个参数。分类层则需要辨别建议框是前景还是背景的概率,总共预测2k得分,其中分类结果包括前景和背景[22]。

图4 区域建议网络结构Fig.4 Structure of region proposal network

Faster R-CNN 的区域建议网络RPN 是采用多任务进行学习,图像中垃圾的位置定位任务和垃圾种类鉴定任务同时进行。RPN 网络在训练的过程中将会给每个标签分配一个二值标签,其中正值标签会分配给IoU 值最大的框以及与任意真实目标区域框相比大于0.7 的IoU 候选框,负值标签将会分配给小于0.3 的IoU 候选框。其中垃圾图像的损失函数定义如式(1)和式(2)所示:

其中:i表示垃圾图片处理中的第i个检测候选框的索引;Pi定义为第i个候选框会是预测目标的概率,若i为候选目标检测框,则Pi*标签为1,否则标签为0;ti={tx,ty,tw,th}是一个坐标向量,用来表示预测候选框的坐标;ti*是真实目标框的坐标向量,其向量定义如式(3)和式(4)所示:

其中:(x,y)为预测框的中心点坐标;(xa,ya)为候选检测框的中心点坐标;(x*,y*)为真实目标框的中心点坐标;w和h分别为预测框的宽和高。该算法致力于找到一种函数映射关系,将原始预测框映射到真实检测框,使得其检测效果更加接近真实框的回归框。

垃圾图像分类的损失函数定义如式(5)所示:

垃圾图像回归的损失函数定义如式(6)所示:

其中:R是式(7)所定义的具有鲁棒性的损失函数。

本文将区域提议网络分为2 个分支,图5 表明上面的网络分支通过锚获得前景和背景(实际应用过程中默认目标为前景)。下面的网络分支用于计算对于锚边界框回归的偏移量,以获得精确的目标候选区。最后的Proposal 层综合前景锚点和边界框回归偏移量来最终确定目标的候选区域,同时剔除尺寸较小和超出边界的目标区域[23]。至此,即可得到区域提议网络对于垃圾数据集中的目标定位。

图5 区域提议网络结构Fig.5 Structure of regional proposal network

2.4 网络模型设计

网络模型设计包括以下2 个部分:

1)网络结构

本文基于现有Faster R-CNN 目标检测模型进行算法改进,针对目标垃圾体积较小、图像分辨率较低等特点,用更深的网络且更小的运算量ResNet50 模型代替该算法原始的VGG16 网络来提取更丰富的特征。本文所提出的VGG16 模型在优化之后使用了3 个3×3 卷积核来代替原始的7×7 卷积核,同时使用2 个3×3 卷积核来代替5×5 卷积核,其原理基于多个非线性层增加网络深度,保证学习更复杂的模型,而且代价较小,参数较少,并且在一定程度上提升了垃圾检测与分类的实验效果。如图6 所示,VGG16 有16 个隐藏层,其中包括13 个卷积层和3 个全连接层。

图6 VGG16 网络架构Fig.6 Architecture of VGG16 network

本文提出运用残差模块来训练更深层的网络架构,主要使用3×3 卷积,其内部的残差块使用跳跃连接通道,缓解了在VGG16 网络中增加深度带来的梯度消失问题。如图7 所示为残差网络模型,其中:X为输入;F(x)是残差映射;ReLu 为该算法的激活函数。为减少训练误差,本文提出使用ResNet 的深度为50 层,相较于VGG16 有着层数更深、参数更少、检测精度更高的特征。

图7 ResNet 残差块结构Fig.7 Structure of ResNet residual block

2)Soft-NMS 算法

非极大值抑制算法是对象检测中的基本问题,该原理是基于物体检测分数产生检测框,其中分数最高的检测框会被选中,与被选中检测框有明显重叠的检测框将会被抑制,该过程会被不断递归应用于其余的目标检测框。根据该算法的设计,如果该检测目标处于算法预设的重叠阈值之内,可能会导致最终结果检测不到该物体。因此,BODLA 等[24]提出了Soft-NMS 算法,该连续函数算法对非最大检测框的检测分数进行衰减而非像传统NMS 算法一样将其彻底移除。同时,Soft-NMS 也是一种贪心算法,因此并不能保证找到全局最优的检测框。但是,该算法是一种更加通用的非最大值抑制算法,传统的非极大值抑制算法可以看为是它的一个采用不连续二值权重函数的特例[25],如式(8)所示:

其中:M为当前预测得分最高的候选框;bi为等待处理的候选框。传统的NMS 算法采用将IoU 大于阈值的候选框得分全部置为0 的方法。经过改进的Soft-NMS 算法如式(9)所示,将M和bi的IoU 值超过Nt阈值部分的检测分数进行衰减而不是彻底移除。

本文优化调整了Soft-NMS 的参数,为对参数进行敏感分析,通过在数据集上不断地改变参数值来观察平均准确率的变化。经过研究,Soft-NMS 在0.4~0.7 的参数变化范围内具有更优的性能,超出该范围内,平均准确率(AP)明显降低。在0.4~0.7 的参数变化范围内,与传统的非极大值抑制算法相比,使用Soft-NMS 得到的平均准确率提升了4.26 个百分点。与此同时,Soft-NMS 有着更加卓越的定位效果。经研究对比发现,当被检测垃圾有着高度重叠的情况下,Soft-NMS 所选择的垃圾分类预测框要更加准确。

综上所述,本文所提出的方法是将原始网络模型的层数增多以达到精确分类、减少信息丢失、避免梯度爆炸的目的。与此同时,将非极大抑制算法进行优化来更精确地挑选预测框。如图8 所示,改进后的Faster R-CNN 算法有着更优化的性能。本文使用的深度学习框架为TensorFlow,采用VGG16、ResNet50 2 种网络结构以及非极大值抑制算法与Soft-NMS 联合训练方式,在数据集上进行参数调整,经对比选择最优结果组成改进后的算法模型。

图8 Faster R-CNN 模型和改进的Faster R-CNN 模型Fig.8 Faster R-CNN model and improved Faster R-CNN model

3 实验结果与分析

本节选择改进后的Faster R-CNN 模型预先训练数据集。针对本文提出的模型与改进算法,分别进行了对比实验来检测性能。为实现整个网络端到端的训练,该模型训练采用Faster R-CNN 和区域提议网络近似联合训练方式[26]。

在多类别目标检测及其分类的评价指标中,平均精度均值(mean Average Precision,mAP)作为目前最重要的目标检测中检测精度的评价指标,是个体平均准确率的均值[27]。因此,本文采用mAP 作为垃圾检测与分类的评价指标。其中每个种类的垃圾记录了各自的平均精确度,记为AP。如表1 为各个种类的垃圾在改进的Faster R-CNN 算法中的精确度比较。

表1 不同垃圾类别的精确度比较Table 1 Precision comparison of different garbage types %

本文对比实验结果如下:

1)本文实验对比了VGG16 和ResNet50 基于Faster R-CNN 在垃圾分类处理上的不同表现。由表2 可见,使用ResNet50 作为垃圾特征提取网络来代替原始的VGG16 基础特征网络,综合平均识别率提高了2.96 个百分点,由原来的73.51% 提高至76.47%,由此可以看出,ResNet50 的表现要比VGG16 更好,时间消耗也较少,精度有所提高。

表2 不同模型的mAP 和时间比较Table 2 mAP and time comparison between different models

2)本文实验对传统的非极大值抑制算法(NMS)进行改进,对比了Soft-NMS 与NMS 在不同网络框架下的表现,其综合识别率相比传统Faster R-CNN算法提高了5.93 个百分点,达到79.44%。相较于ResNet50 框架下的Faster R-CNN 算法提高了2.97 个百分点。由此可见,利用Soft-NMS 算法,相较于传统的非极大值抑制算法,在垃圾图像检测与分类中精确度有显著提升。

3)将本文算法与其他目标检测算法比较可见,YOLOv3 算法在时间上的消耗有着很大的优势,每张图片的检测时间降低到2.391 s,但是对于该垃圾数据集的精确度只能达到67.63%,相比原始的Faster R-CNN 算法仍低了5.88 个百分点,而SSD 算法综合识别率达到了74.02%的mAP 值,时间的消耗相较于YOLOv3 有所提升,达到了3.112 s。

4)由以上数据可以看出,采用ResNet50 的VGG16 网络与Soft-NMS 本文算法模型,综合识别率达到了81.77%,相较于YOLOv3 算法提高了14.14%,相较于传统Faster R-CNN 提高了8.26%。这验证了调整过后的ResNet 网络架构与参数优化下的Soft-NMS 算法相结合有着更加优化的检测性能。图9 所示为改进后的Faster R-CNN 算法在不同种类垃圾中的识别结果。

图9 改进Faster R-CNN 算法的识别结果Fig.9 Recognition results of improved Faster R-CNN algorithm

4 结束语

本文针对人工分拣垃圾环境差、任务繁重且分拣效率较低等问题,基于现有深度卷积神经网络的模型,提出运用卷积神经网络处理垃圾分类与检测方法,解决对垃圾人工预处理的难题。研究VGG16 网络架构与ResNet 网络架构对于垃圾分类算法性能的影响,选择经过优化的网络架构完成垃圾检测与分类任务。实验结果表明,本文算法模型相比传统的Faster R-CNN算法、SSD 算法、YOLOv3 算法,平均精确度分别提高了8.26、7.75、14.14 个百分点,综合识别率达到了81.77%。采用级联深度卷积神经网络进行卷积共享策略简化神经网络的训练,检测网络的测试可节约算法所需的时间[28]。同时,由于卷积层的共享,实现了卷积神经网络完全端到端的优化,对于垃圾目标检测的检测框采用最大值衰减,经敏感分析后得到最优参数,从而提高整体卷积神经网络性能。下一步将在网络和训练模型改进的基础上,针对较小垃圾检测以及垃圾遮档问题进行研究,以提高垃圾分类的精确度及细小垃圾物体识别的准确度。

猜你喜欢

卷积垃圾分类
基于3D-Winograd的快速卷积算法设计及FPGA实现
垃圾去哪了
分类算一算
那一双“分拣垃圾”的手
从滤波器理解卷积
分类讨论求坐标
数据分析中的分类讨论
倒垃圾
基于傅里叶域卷积表示的目标跟踪算法
教你一招:数的分类