汪旸,李丹
(四川大学锦城学院,四川成都,611731)
关键字:BoTNet-50网络;ResNet-50网络;垃圾分类;MHSA
根据有关部门的统计分析,我国每年产生的生活垃圾有大概4亿吨左右,属于世界产垃圾的大国之一。就当前形势而言,不管是焚烧、填埋、还是生物处理都存在着很多困难。在2019年6月,习总书记就垃圾分类工作做出了重要的明确指示[10],着重强调实施垃圾分类是社会文明水平的一个主要体现[1][10]。国内各个地方生活垃圾分类标准虽然不同,但一般情况下都分为以下四类,分别是有害垃圾、厨余垃圾、可回收物和其他垃圾,而且每个类别下又包含若干子类别,种类繁多且十分复杂[2]。
随着垃圾分类的渐渐流行,运用于垃圾分类的网络模型也变得越来越多,但最主要的网络模型中还是使用的卷积神经网络,卷积神经网络作为深度学习网络中最重要的网络之一,拥有广泛的运用场景。对于卷积神经网络的研究开始于二十世纪80年代到90年代期间,时间延迟网络和LeNet-5就是早期出现的卷积神经网络[3]。后来还出现了一些早期的卷积神经网络,如AlexNet[5]和VGGNet[6]提出了简单的激活函数和卷积结构使得多尺度特征的数据驱动学习成为可能。在二十一世纪后,随着深度学习理论的提出和数值计算设备的改进,卷积神经网络得到了快速发展,并被应用于计算机视觉、自然语言处理等领域[4]。ResNet[7]作为经典的卷积神经网络,通过加入残差结构实现了超深的网络结构,提升了运行精度,同时解决了梯度消失和梯度爆炸的问题。在此基础上,谷歌提出了在ResNet网络结构上进行改进的BoTNet(Bottleneck Transformers Network)网 络,只需要替换最后三个残差结构的3*3卷积层为MHSA(Multi-Head Self-Attention)层,这样一个简单的改进就可以在实例分割和目标检测方面显著改善了基线,同时还能减少参数,从而使延迟最小化。运用BoTNet网络进行图像分类,在ImageNet数据集上能够达到84.7%的top-1精度。
本研究就是基于卷积神经网络加自注意力机制算法的BoTNet网络结构来实现垃圾分类的研究,希望通过该网络能够在垃圾分类上得到更高的准确率。
为了减少参数,BoTNet框架选择了在ResNet-50/101/152网络框架基础上加入多头自注意力层(Multi-Head Self-Attention,MHSA)得到BoTNet-50/101/152,主要原因是由于ResNet-50/101/152网络框架在残差结构中加入了1*1卷积层,这种1*1的卷积层可以大大减少参数,我们通常将这种1*1卷积层称作“瓶颈层”。本研究进行实验使用到的网络结构是BoTNet-50和ResNet-50。
由ResNet改进的具有MHSA层的BoTNet网络结构块可以看作是具有瓶颈(Bottleneck)结构的“变压器”(Transformer)块。“变压器”最早是主要用于自然语言处理领域,但随着科学和技术的发展“变压器”逐渐也踏入了计算机视觉领域。在“变压器”中提出了将自注意力机制(Self-Atention)纳入计算机视觉的最简单方法就是用多头自注意力层(Multi-Head Self-Attention,MHSA)来代替空间卷积层。最近,这种方法分别在两个看似完全不同的方面取得了进展,一方面,如SASA、SANet、Axial-SASA等结构提出用不同形式的自注意力机制来代替ResNet瓶颈块中的空间卷积。另一方面,如ViT结构,提出堆叠“变压器”块,在不重叠组块的线性预测上运行。这两种方法似乎呈现了两种不同类型的体系结构,但其实并非如此,相反,具有MHSA层的ResNet网络瓶颈块可以被视为具有瓶颈结构的“变压器”块。这两种方法只在组件上有微小的差异,例如残差连接、标准化层的选择等。正是由于这两种方法的等价性,才有了BoTNet(Bottleneck Transformer Network)网络结构的由来。
BoTNet网络是基于ResNet-50/101/152的改进网络,加入了MHSA层,将卷积神经网络与自注意力机制相结合,是一种比较新兴的主干网络。与BoTNet类似的同样也是属于卷积神经网络与自注意力机制相结合的混合型网络还包括DETR、VideoBERT、VILBERT、CCNet等,但又不同于BoTNet,这些网络是将自注意力机制构建于主干框架之外,而BoTNet是将自注意力机制构建于主干框架内部。BoTNet-50网络结构图如图1所示。
图1 BoTNet-50网络结构图
注意力机制还有的一种不那么正式的说法,叫做神经注意力机制,它可以使得神经网络具备专注于其输入(或特征)子集的能力:选择特定的输入[11]。注意力可以应用于任何类型的输入而不管其形状如何。在计算能力有限的情况下,注意力机制就是主要提供去解决在信息超载问题中资源分配问题的方案,会选择将资源分配给更重要的任务[8]。注意力机制模仿了人体的注意力关注过程,即一种将自身经验与外部观察相结合来增加对于某一部分区域更精细度的观察的机制。由于注意力机制可以快速提取得到稀疏数据的重要特征,所以注意力机制被广泛用于自然语言处理任务,尤其是常常被应用于机器翻译应用方向。自注意力机制作为注意力机制的改进,它减少了对外部信息的依赖关系,更加关注于捕捉数据内部和特征内部的相关性。自注意力机制本质上是根据注意对象的重要程度进行不同的资源分配,在神经网络中,注意力所要分配的资源其实就是权重[9]。
BoTNet网络中的多头自注意力层一共设置有四个“头”,且全局注意力都是在一个二维特征图上执行的。与卷积操作不同的是,自注意力机制是将一张特征图中的每一个特征值都与这张特征图中的所有特征值进行计算来做特征提取,而在卷积操作中,每一个特征值都是在一个固定值大小的卷积核内部进行计算做特征提取。因此,在二维特征图上执行的自注意力机制也可以看成是一种特殊的卷积操作。
该实验的数据集来源于网络,包含40个类型的垃圾,分为四大类,分别是其他垃圾、厨余垃圾、可回收物、有害垃圾,总共14802张图片,图片是以大类加小类的形式加入分类标签的,例如“可回收物/易拉罐”。垃圾分类部分数据集如图2所示。
图2 垃圾分类部分数据集
由于图片数据量过大,只抽取一小部分数据来进行实验,数据预处理过程首先抽取每个小类中的10张垃圾图片,共400张,将这400张图片数据与标签一一对应起来存放到data.csv文件中,再通过data.csv文件划分训练集和验证集,并分别保存至train.csv与test.csv中,其中训练集占70%,验证集占 30%。
做好了数据预处理之后,接下来进行简单的图片预处理,包括缩放和裁剪,图片统一裁剪至224*224的大小,除了基础的预处理,训练集部分还对图片进行随机旋转和随机翻转操作。
此次的垃圾分类主要在BoTNet-50网络中进行,同时也会与ResNet-50进行横向比较。
用BoTNet-50网络训练垃圾分类数据集时,在MHSA层的“头”为4,训练轮次为310,学习率为0.1,权重衰减为1e-4的情况下运行得到的验证集准确率为86.92%,同样网络结构下当MHSA层的“头”为1时,得到验证集准确率为85.79%。用ResNet-50网络训练垃圾分类数据集时,任然是在训练轮次为310,学习率为0.1,权重衰减为1e-4的情况下运行得到的验证集准确率为86.87%。
BoTNet-50网络训练生成的训练集准确率和代价下降图与ResNet-50网络训练生成的训练集准确率和代价下降图对比如图3所示。
图3 BoTNet-50/ResNet-50训练对比
BoTNet-50网络训练生成的训练集准确率和代价下降图与BoTNet-50在MHSA层只设置了1个“头”的网络训练生成的训练集准确率和代价下降图对比如图4所示:
图4 BoTNet-50-Head4/BoTNet-50-Head1训练对比
可以通过对比看出虽然产生的差异很微小,但在BoTNet-50中训练垃圾分类数据集仍然可以得到相对较高的准确率。
垃圾分类在现代生活越来越受到重视,但许多人仍然不知道如何正确对垃圾进行分类,当我们不对垃圾进行分类时,就会导致许多可回收垃圾没办法得到回收利用,而有害垃圾和其他垃圾又无法及时得到处理等等问题。那么能够正确对垃圾进行分类就显得尤为重要。通过本实验就是希望在对垃圾进行分类时,能够正确对其进行投放。本实验对垃圾进行分类的流程如图5所示,用训练好的BoTNet50网络模型对垃圾进行分类预测,得出某种垃圾应该属于哪一类:首先获取垃圾图片,然后对图片进行预处理,再将获取到的垃圾图片送入训练好的BoTNet网络模型,最后获得预测结果。
图5 垃圾分类实现流程
通过实验得出,通过网络模型来训练垃圾分类数据集时,用ResNet-50训练得到的准确率高于 BoTNet-50-Head1(“头”设置为 1),而用BoTNet-50-Head4(“头”设置为 4)训练得到的准确率高于ResNet-50,说明用MHSA层有4个“头”的BoTNet-50网络来训练图像分类数据能得到相对较高的准确率,虽然这样的准确率提升很微小,但是这样一个简单的替换层的操作,即将ResNet网络中最后三个残差块的3*3卷积层替换成MHSA层得到的BoTNet网络,却是自注意力机制在计算机视觉领域不断发展和进步的一个重要体现。BoTNet网络作为使用了自注意力的视觉新兴主干架构,将其应用于实际生活是一个十分令人兴奋的课题。而垃圾分类在未来很可能作为实际生活中必不可少的事情,将垃圾分类应用与BoTNet网络,可以更好的促进自注意力在计算机视觉领域的应用,为这种新兴的自注意力视觉框架的发展起着重要的作用。