白 阳, 刘 斌, 李彦彤
(陕西科技大学 电子信息与人工智能学院, 陕西 西安 710021)
随着生活垃圾分类制度的推行,垃圾分类作为推进绿色发展的重要举措收到越来越多的关注[1].可回收垃圾是可以循环再生的资源,准确的分类出可回收垃圾可以助力可持续发展.但可回收垃圾人工分类效率低下[2],利用垃圾图像自动分类成了研究热点.高光谱成像技术[3]作为自动分类的一种手段,对透明、半透明物体的分类效果不理想,限制了其在可回收垃圾分类中的应用.
目前在计算机视觉领域,深度学习展现出了强大的表征能力[4-8],在目标检测方面取得巨大成功[9-11].Faster R-CNN[12]、YOLO[13]、SSD[14]等深度学习算法的提出,使目标检测的速度和精度不断提高.其中,SSD(Single Shot MultiBox Detector)作为一种成熟的目标检测算法,受到了广泛的关注.杨辉华等[15]、邓壮来等[16]、马建等[17]将SSD算法应用在目标检测中取得了不错的效果.
为了提高SSD算法在可回收垃圾检测中的检测精度,提高小目标检测成功率,本文提出了一种可回收垃圾检测方法OctConv-SSD(简称O-SSD).
SSD算法是Wei Liu在ECCV 2016上提出的一种目标检测算法.它从YOLO(You Only Look Once) 继承了将检测转化为回归的思路,一步完成目标的定位和分类,提高了检测速度;同时基于Faster RCNN中的Anchor提出了预选框以提高检测精度.图1为SSD网络结构.
图1 SSD网络结构
SSD网络在不同特征层提取共8732个预选框,后续将预选框和真实边界框配对,依据置信度排序预选框,挑选置信度高的预选框进行训练,最终回归分类得到目标检测框.
SSD算法使用了传统的卷积方法,直接通过对不同特征图提取预选框,可以达到实时监测的效果.然而VGG[18]作为SSD的主干网络,不能够达到很深的层次,这使得负责检测小目标的conv4_3存在特征提取不充分的问题,对小目标的召回率一般,检测精度不如Faster RCNN.SSD采用了密集采样,正负样本分布极其不均衡,同样影响着目标检测精度;为了提高检测精度,本文提出的O-SSD网络将Resnet替换VGG作为SSD网络的主干网络,引入RPN网络粗筛预选框,均衡正负例数量,可以显著提高检测精度.另外,图像存在高、低频分量,低频分量存在冗余在编码过程中可以节省.为了提高模型计算效率与识别性能,O-SSD引入八度卷积(OctConv)方法替代传统CNN卷积方法以压缩低频分量,加快神经网络的训练.O-SSD网络体系结构如图2所示.
图2 O-SDD网络结构
O-SSD网络卷积方法替换为OctConv,目的是为了降低内存和计算成本.图中红色为Resnet替换原SSD网络中VGG的部分,其主要作用是用更深的网络结构保留更多的小目标信息.黄色的6个过滤模块(Filter Block)参考了Faster RCNN算法中的RPN网络,其主要作用是粗筛预选框,方便后续的回归分类.特征图间添加了4个链接模块(Link Block),其目的是在高层特征与低层特征之间添加特征融合方案,减少信息丢失.
1.2.1 OctConv
OctConv是一种可以使模型性能提升,算力减少的卷积方法.一张图片可以分成低频(粗略结构)和高频(边缘细节)两个部分,图片中高频信息往往较少,而低频信息存在冗余.对于普通卷积方法,所有输入和输出特征映射具有相同的分辨率,信息量较少的低频部分的计算量消耗大,存储空间需求高.针对上述问题,OctConv压缩了低频部分数据,分别处理低频和高频的数据,并在二者间进行信息交换以减少计算量和存储空间.OctConv的卷积过程如图3所示.
图3 OctConv卷积过程
图3中左侧部分为输入特征图,右侧部分为输出特征图.左上方与右上方两部分均为特征图高频部分;左下方与右下方两部分均为特征图低频部分.α表示低频分量所占的比重,是一个可调节参数.将卷积核分为两个分量:W=[WH,WL],为实现高低频之间的有效通信,输入张量分为两个分量X=[XH,XL],输出张量也分为两个分量Y=[YH,YL].高频输出张量YH=YH→H+YL→H,低频输出张量YL=YL→L+YH→L,定义YA→B表示从A到B的特征映射后更新的结果,则YH→H与YL→L是频率内的信息更新,YL→H与YH→L是频率间的信息更新.为了计算更新结果,本文将卷积核细分为WH→H、WH→L、WL→H、WL→L这四部分.输出张量计算方式如下:
(1)
(2)
公式(1)、(2)中:(p,q)是X张量中的位置坐标,(i,j)表示所取近邻范围.WH→H,WH→L,WL→H,WL→L这四部分为卷积核的频率内分量和频率间分量.定义卷积核为k×k大小,输入特征图的通道数为cin,输入特征图低频分量所占比重为αin,输出特征图的通道数为cout,输出特征图低频分量所占比重为αout.卷积核的通道数等于输入特征图的通道数,卷积核的个数等于输出特征图的通道数.由此可知WH→H的尺寸为[k,k, (1-αin)cin,(1-αout)cout],WH→L的尺寸为[k,k,(1-αin)cin,αout*cout],WL→H的尺寸为[k,k,αin*cin,(1-αout)cout],WL→L的尺寸为[k,k,αin*cin,αout*cout].OctConv卷积核参数张量形状如图4所示.
图4 OctConv卷积核
实验过程中设定α的值为0.5,高频分量与低频分量所占比重相同,四部分卷积核尺寸相同.由式(2)可知,OctConv可以增大低频特征映射的感受野.与普通卷积相比,有效地将感受野扩大了两倍,帮助OctConv层捕获更多的上下文信息.
1.2.2 O-SSD中的Resnet
VGG是SSD网络中的特征提取网络,其通过堆叠3x3大小的卷积核和2x2最大池化层,对样本进行特征由浅入深的提取.VGG使用有参层直接学习输入与输出之间的映射,作为小目标检测的conv4_3特征图,存在特征提取不充分的问题,使SSD网络对小目标的检测效果不佳.而Resnet通过使用多个有参层学习输入与输出之间的残差表示,获得了更多的特征细节与更深的网络结构,使负责检测小目标的较浅层特征图保留了更多的特征信息.实验证明Resnet相比VGG具有更好的特征提取能力.
为兼容SSD网络的特征图尺寸,O-SSD中Resnet的结构如表1所示.
表1 O-SSD网络中Resnet的结构
参考了Resnet50[19]模型,1×1卷积核起降维和升维作用,最终输出的特征图大小为[512,38,38],兼容了SSD网络conv4_3的特征图尺寸.
1.2.3 过滤模块(Filter Block)
SSD作为一种单步检测(Single Shot Detectors)算法,对提取的特征直接进行分类回归.在密集采样后可以获得8732个预选框,其中负样本远远大于正样本,容易因训练样本不均衡引起目标分类与目标位置回归错误,降低准确率.考虑到RPN网络结构可以对预选框进行前景与后景的分类和位置初步回归,本文使用RPN作为SSD网络的过滤模块(Filter Block),对预选框进行粗筛,过滤部分负样本,改善样本不均衡带来的问题.过滤模块的结构如图5所示.
由图5可知,过滤模块对n个预选框做回归和前景判别,获得共2n个置信数(前景与后景)和4n个坐标偏移量,最终在特征图中生成n个粗筛的预选框.
1.2.4 链接模块(Link Block)
SSD采用VGG作为backbone,后续添加了新的卷积层来获取更多的特征图用于检测.卷积神经网络层数加深的过程,是特征从低层到高层提取的过程.伴随着网络层数的加深,每一层都会丢失一部分信息,这影响着检测精度.针对决这一问题,本文于特征图之间添加了连接模块(Link Block),基于特征融合思想,将低层特征图信息添加到高层特征图中以减少信息的丢失,提高检测精度.连接模块的结构如图6所示.
图5 过滤模块结构
图6 链接模块结构
在图6中,低层特征图通过三次卷积操作后,与经过一次卷积操作后的高层特征图对应元素求和.后经一个3×3卷积确保特征可辨别,融合后的特征图进行池化操作完成降采样过程,输出特征图.
所有实验均在Windows7,64位操作系统,内存128 GB,CPU:Intel Xeon Silver 4116,GPU:NVIDIA TITAN Xp的环境下进行.使用Pytorch开源框架实现O-SSD算法并完成模型的训练.
由于目前没有针对可回收垃圾检测的公开数据集,因此通过已标定的可回收垃圾类别收集可回收垃圾数据,实验样本选择抱枕、玻璃杯、塑料盆等生活垃圾,电视机、挂式空调、吹风机等电子垃圾,共20类2 120个样本.使用Lable Image工具对可回收垃圾数据进行标注.
由于少量数据训练模型容易过拟合,需要对数据集进行扩充与增强处理.谷歌大脑在研究中发现对目标检测有收益的操作有颜色操作、几何操作和边界框操作.本文使用了适用于目标检测的自动数据增强方法AutoAugment[20]来搜索改进的数据增强策略.在强化学习的帮助下给定数据集最佳的增强策略,使模型得更好的训练效果.
本文通过对比O-SSD模型与SSD模型的检测精度和检测速度对比模型性能.设置bounding box与ground truth的IOU阈值大于0.65时检测结果正确.
检测精度评价指标选取mAP(Mean Average Precision)指标,定义为[21]:
(3)
mAP为所有类别的平均精度(AP)求和除以类别数M.AP定义为:
(4)
AP为某个类别精度,其中precision(i)为一张影像上一个物体的精度,K为实例个数,N为数据影像数.mAP指标越高,模型的检测效果越好.
检测速度评价指标选取FPS(Frames Per Second,每秒帧数)指标,定义为模型一秒内检测的图像数.模型的FPS越高,检测速度越快,实时性越好.
模型复杂度评价指标选取FLOPs(Floating Point Operations,浮点运算次数)指标,定义为模型的运算量.模型的FLOPs越小,模型所需运算量越小,计算效率越高.
实验使用采集的1 616张可回收垃圾图片训练O-SSD模型,剩余数据分为验证集与测试集数据.网络超参数设置如下:初始学习率为1e-4,网络迭代到30 000次时设置为1e-5,batch设置为10.网络迭代到65 000次达到最佳检测结果90.62%.
四是要有好身体。自驾游比跟团游更考验人的体能。吃饭不及时、休息不及时、睡觉不及时,都是常事。有时前不着村、后不着店,只能咬牙坚持。我们此次所去的地方,一连好几天,都在海拔3500-4000米左右的地方活动,如果有高原反应,对身体会造成一定影响。在阿克塞县城,遇到一伙刚从西藏下来的游客。他们都穿着棉衣,但其中有一女的却一身背心短裤,精神抖擞。据说在西藏,此人毫无不适之感。而另有一个人高原反应十分厉害,头疼欲裂,氧气吸了一大袋,差点死在那里。
2.5.1 模块性能评估
为了研究本文优化方法对算法性能的影响,对适配不同优化方法的O-SSD模型在可回收垃圾数据集上做了性能评估.定义OctConv为方法A,Resnet为方法B,过滤模块为方法C,链接模块为方法D.评估结果如表2所示.
表2 模块性能评估
在表2中,Model1、Model2、Model3、Model4分别为O-SSD模型缺少过滤模块,Resnet、OctConv、链接模块的模型,依据mAP的值升序排序.
对比上述四种模型与O-SSD模型的精度,可知过滤模块在算法中起到关键作用,不含过滤模块的Model1相比O-SSD模型性能下降明显.其主要原因是神经网络对训练样本分布比较敏感,当负例样本远大于正例样本时,网络会注重负例样本特征学习,使网络漏检率变高,检测精度变低.而过滤模块通过筛选剔除部分负例样本,使正例与负例样本比例均衡,解决了上述问题且较大幅度提高了模型检测精度.
对比Model3模型与SSD模型FLOPs可知,在添加B、C、D优化方法后,模型复杂度提升,运算量增多.而O-SSD网络在Model3的基础添加了A(OctConv)优化方法后,FLOPs下降明显.这得益于OctConv方法在卷积过程中,特征图低频分量得到压缩,低频特征尺寸仅为高频部分的1/4,这使得特征图与卷积核的运算量大幅度减少.因此,O-SSD模型可以在结构变复杂的同时,模型复杂度降低.
使用了四种优化方法的O-SSD模型,相比SSD模型检测精度提高了9.36%,FLOPs降低了10 G.实验证明O-SSD模型拥有比SSD模型更高的检测精度和更少的运算量.
为评估O-SSD模型的检测精度与检测速度,实验对比了O-SSD模型与SSD、Faster RCNN和YOLO V3在可回收垃圾数据集上的模型性能.四种模型对不同类别可回收垃圾的检测精度的如表3所示.
表3 模型对于不同类别可回收垃圾的检测精度(AP/%)
由表3可知,O-SSD在各类可回收垃圾样本的检测精度均为最高水准,检测精度优于其他三类模型.对于玻璃杯和矿泉水瓶这类透明、半透明垃圾的检测效果理想,相较于高光谱成像技术,O-SSD作为一种深度学习领域的可回收垃圾检测方法是十分有效的.
四种模型在可回收垃圾数据集上的性能如表4所示.由表4可知,O-SSD模型在可回收垃圾数据集上拥有最高的检测精度和较高的检测速度.虽然检测速度不及SSD模型(降低3FPS),但O-SSD模型更好的权衡了检测精度与速度.对比Faster RCNN模型和YOLO V3模型,无论是在检测精度还是检测速度上,O-SSD模型都更加优秀.综上,在可回收垃圾检测数据集中O-SSD模型拥有良好的检测性能.
表4 模型性能评估
2.5.3 小目标检测对比
在目标检测领域,对于小目标的定义有多种,本文采用的是MS COCO数据集的定义[20],即尺寸小于32*32像素的目标即可认定是小目标.为评估O-SSD模型对小目标的检测性能,实验对比了部分检测结果图,结果对比如图7所示.
图7 O-SSD模型与SSD模型对小目标检测结果对比图
图7列举了O-SSD网络与SSD网络对抱枕(pillow)与玻璃杯(glass)的检测结果,其中SSD(1)与SSD(2)为SSD模型的检测结果,O-SSD(1)与O-SSD(2)为O-SSD模型的检测结果.对比发现SSD网络存在小目标漏检的境况,检测图中较小的抱枕和玻璃杯均检测失败.
SSD网络主要是在主干网络中浅层特征图conv4_3上提取小目标特征,特征图尺寸较大,预选框较小,适合作为小目标的预选框.VGG作为SSD的主干网络,在其特征提取的过程中,卷积池化的下采样过程可能将有用的特征信息滤除掉,小目标信息量少容易丢失,因此特征图conv4_3存在特征提取不充分的问题,导致漏检.O-SSD得益于Resnet残差特性,网络学习特征图之间的残差,使得大部分特征得以保留,可以使网络达到更深的层数.作为O-SSD小目标特征层OctConv4_6达到了30层的深度,可以较好地保留小目标语意信息,因此改善了小目标漏检问题,提高了小目标的检测成功率.
本文提出了一种基于改进SSD的模型O-SSD,在可回收垃圾数据集上展开多次试验,通过对比实验验证了O-SSD模型具有较高的检测精度和检测速度,相比SSD模型改善了小目标漏检问题.下一步考虑改进预选框的采样方法,进一步优化模型,以提升模型检测速度.