1.本发明涉及垃圾分类及数据信息处理技术领域,具体是涉及一种基于知识蒸馏学习的生活垃圾图像识别方法。
背景技术:
2.近年来,人工智能技术的复兴以及相关理论的不断发展,为其他各学科的攻关克难提供了新的契机,例如医疗,金融,教育等领域,并且在这些领域扮演越来越重要的角色,有着越来越广泛的应用。人工智能中的深度学习可以学习样本数据的内在规律和表示层次,可以识别文字、图像和声音等数据。深度学习在图像识别方面的优势,使得基于深度学习的垃圾图像识别可以解决生活垃圾的分类问题。
3.虽然生活垃圾分类引起了人们的关注,产生了一些优秀的垃圾分类方法。在中国专利cn106005807a中,傅启明等人通过红外感应技术发明了一种自动分类垃圾箱。在期刊《黑龙江科技信息》,2015年24卷,82-84页中,杨秀秀,马利兵等人开发出一种智能分类垃圾箱系统用于垃圾分类。在2018年,期刊《哈尔滨工业大学》中,周滢慜提出了基于机器视觉的生活垃圾智能分拣系统,设计了一种基于faster-rcnn目标检测模型的改进算法。马雯,于炯等人在《计算机工程》2021年47卷294-300页中,提出了一种基于改进faster r-cnn的垃圾检测与分类方法,达到了81.77%的识别精度。在加拿大,搭载计算机视觉系统的人工智能垃圾桶——“奥斯卡”被广泛应用于生活垃圾分类的识别和投放环节,成为人工智能技术助力生活垃圾分类的样板。
4.上述方法都集中在对垃圾分类的工具的设计或者识别精度的提升。以faster r-cnn为例,作为二阶目标检测算法,虽然有着很好的精度,但是模型却面临这参数量大,推理速度慢的缺点。在垃圾智能分类越来越普及的今天,大参数量的模型部署到移动端,需要消耗很高的成本,而小模型却面临精度不足的问题。此外,深度学习所需要的,具有标注的,公开的数据集,目前是不清楚,这严重限制了目标识别领域和垃圾分类等研究领域的发展。
5.同时,深度学习系统的学习需要海量的数据,才会有更好地性能表现,而目前可供研究的垃圾图像数据集图像稀缺。另一方面,尽管一些深度模型保持着很高的精度,但是模型的参数量是极大的,这给模型在移动端上的部署带来了很大的难度。
6.知识蒸馏,是通过将复杂模型(教师模型)中的暗知识迁移到简单模型(学生模型)中去,一般来说,教师模型具有更多的参数和强大的性能,而学生模型参数量较小和一般的性能。通过知识蒸馏,学生模型能尽可能逼近,甚至是超过教师,从而用更少的复杂度来获得类似的预测效果。
7.基于上述技术问题,本发明旨在提供一种基于知识蒸馏学习的生活垃圾图像识别方法,通过生活垃圾图像数据集的构建有机知识蒸馏的方法提升小参数量模型对垃圾图像的识别精度。
技术实现要素:
8.本发明的目的在于提出一种基于知识蒸馏学习的生活垃圾图像识别方法,通过生活垃圾图像数据集的构建和通过知识蒸馏的方法提升小参数量模型对垃圾图像的识别精度,从而实现生活垃圾图像的快速、精确识别。
9.为了实现上述目的,本发明所采用的技术方案为:
10.一种基于知识蒸馏学习的生活垃圾图像识别方法,步骤如下:
11.(1)数据集的构建,通过设置不同采集变量,用于模仿垃圾真实状态下周围的环境;对于图像较少的样本,采用自动化扩增方法,使样本量趋于均衡;
12.(2)通过对教师模型的微调,让教师模型和学生模型有着同样的网络检测头,使之可以蒸馏学习;然后将微调后的教师模型和学生模型在数据集上训练,得到权重参数;
13.(3)分别对主干网络,网络检测头设计损失函数,加载得到的权重参数,进行蒸馏学习;
14.(4)最终输出识别结果。
15.本专利首先建立了包括30种常见的生活垃圾,并对其人工标注与自动化扩增,扩增后约1.8万张垃圾图片。然后,采用ssd模型对该数据集进行检测评估,可以做到对图像中垃圾种类的识别与定位。最后,为了提高模型的可移植性,方便模型在移动端上的部署,通过知识蒸馏的方法,对教师模型和学生模型进行蒸馏,提升了学生模型的精度。
16.与现有技术相比,本发明的有益效果表现在:
17.(1)本发明新建了一个垃圾数据集,可以用来对比目前常见的垃圾识别目标检测算法的性能,解决的了深度学习在垃圾分类领域应用缺少数据集的困境。
18.(2)本发明面对小模型精度不高的问题,采用知识蒸馏方法,通过ssd教师模型和mobilenetv2-ssd学生模型之间的学习,提高了学生模型对生活垃圾图像的识别性能。
附图说明
19.图1为本发明基于知识蒸馏学习的生活垃圾图像识别方法的流程示意图。
20.图2为以纸杯为例对样本进行自动化扩增的样例。
21.图3为知识蒸馏结构图。
22.图4为采用本发明识别方法对一种目标(a)和多种目标(b)的可视化识别结果。
具体实施方式
23.如图1所示,本发明所提出的一种基于知识蒸馏学习的生活垃圾图像识别方法,新建一个用于垃圾识别的数据集,采用知识蒸馏的方法,提升了小模型识别生活垃圾的性能。该方法具体包括:(1)数据集的构建,通过设置不同采集变量,用于模仿垃圾真实状态下周围的环境。对于难以采集的样本,采用自动化扩增方法,使样本量趋于均衡。(2)通过对教师模型的微调,让教师模型和学生模型有着同样的网络检测头,使之可以蒸馏学习。然后将微调后的教师模型和学生模型在数据集上训练,得到权重参数。(3)分别对主干网络,网络检测头设计损失函数,加载得到的权重参数,进行蒸馏学习。(4)最终输出识别结果。
24.本发明所提出的一种基于知识蒸馏学习的生活垃圾图像识别方法,其具体步骤如下:
25.步骤1、数据集采集思路与自动化扩增方法
26.1.1数据集采集思路
27.相比于传统的检测方法,深度学习系统的学习需要海量的数据。因此本步骤选取部分典型的居民生活垃圾,通过自主拍摄和网络收集组建了一个居民生活垃圾数据集共包含30小类居民生活垃圾,如表1。
28.表1居民生活垃分类
[0029][0030][0031]
由于卷积神经网络对空间位置的敏感性,在图像不同位置的同一种物体,卷积神经网络会认为是两种物体。因此,每类图像采集都有不同的样本样例、复杂的角度,背景和光照。
[0032]
采集条件以拍摄纸杯为例,具体如下:
[0033]
1)样本样例:选取多个纸杯作为拍摄的样本。
[0034]
2)角度:对每个纸杯采,取俯视、左、右、前、后六个角度进行拍摄。
[0035]
3)光照:对每个纸杯在强光、室内光、暗光下拍摄。
[0036]
4)背景:对每个纸杯在水泥地面、砂石地面、泥土地面进行拍摄。
[0037]
针对数据集采集,首先,数据的采集由6名计算机视觉基础知识的研究人员使用不同分辨率的手机,按照上述采集条件采集而成。然后,对于难以采集或者数量稀少的样本,采取网络爬取的方式获得。最后得到的数据集为原始数据集。
[0038]
1.2自动化扩增方法
[0039]
由于不同垃圾采集难度不同,获得难度不同,导致每类垃圾图像的数量也不一样。为了每类垃圾具有相对均衡的数量,对图像较少的垃圾种类进行扩增,可以更公平全面的评估模型性能。一方面数据集扩增可以提升场景复杂度,一方面可以缓解模型过拟合的情况,也可以给模型带来的更强的泛化能力。因此,对得到的原始数据集中的原始图像数量较少的样本,通过python语言,实现一种自动化扩增方法,依次为数量稀少的样本执行以下操作:
[0040]
1)、添加高斯噪声:
[0041]
高斯噪声,顾名思义是指服从高斯分布(正态分布)的一类噪声。通过索引图像上每一个像素点,为每一个像素点加上方差为1.5的随机高斯噪声。
[0042]
2)、添加椒盐噪声:
[0043]
椒盐噪声,椒盐噪声又称脉冲噪声,它随机改变图像中一些像素值,对每幅图像添
加噪声密度为1.5的椒盐噪声。
[0044]
3)、昏暗处理:遍历每个垃圾图像的像素值,将像素亮度调整为原像素的1.6倍。
[0045]
4)、明亮处理:遍历每个垃圾图像的像素值,将像素亮度调整为原像素的0.4倍。
[0046]
5)、缩放旋转处理:每幅图中心为原点,逆时针旋转45
°
、135
°
,并缩小为原图的0.7倍。
[0047]
以纸杯为例,一张纸杯图像经过扩增后,可以形成如图2所示的六幅图像。原始数据集经过扩增后,一共得到约1.8万张垃圾图像数据集hgi-30,每类垃圾图像数量如表2。
[0048]
表2hgi-30中每种垃圾图像个数(18178张)
[0049][0050]
步骤2、模型的微调与训练结果
[0051]
目标检测网络主要由主干特征网络(backbone)和检测头(head)组成,其中检测头包括对目标物体的回归预测(reg)和分类预测(cls)。知识蒸馏的损失函数也对应由主干网络的损失函数和检测头损失函数构成。
[0052]
2.1教师模型的微调
[0053]
教师模型ssd的主干特征网络为vgg16,网络检测头为head-ssd。其中网络检测头通过提取vgg16中的六个特征层conv4_3(38*38*512)、conv7(19*19*1024)、conv6_2(10*10*1024)、conv7_2(5*5*256)、conv8_2(3*3*256)、conv9_2(1*1*256)。分别为这6个提取出来的特征层的每个特征点上设置4、6、6、6、4、4个先验框(num_anchors)。然后再对每个提取出来的特征层做num_anchors
×
4、num_anchors
×
num_classes的卷积操作,其中num_anchors
×
4的卷积用来预测每个先验框的四个坐标的变化情况,num_anchors
×
num_classes的卷积用于预测每个先验框内对应的物体种类。得到的ssd先验框的数量计算公式如下:
[0054]
total_number=(38*38*4) (19*19*6) (10*10*6) (5*5*6) (3*3*4) (1*1*4)=8732(1)
[0055]
而学生模型mobilenetv2-ssd对应的head-mob里包括的先验框个数为3000个,因此需要将ssd的检测头head-ssd替换为head-mob。替换方法步骤如下:
[0056]
1)、在ssd中conv8_2(3*3*256)的特征层之后,通过卷积核大小为2*2,步长为1的卷积操作,将conv8_2(3*3*256)压缩为conv8_3(2*2*256)。
[0057]
2)、分别选取vgg16中的conv7(19*19*1024)、conv6_2(10*10*1024)、conv7_2(5*5*256)、conv8_2(3*3*256)、conv8_3(2*2*256)、conv9_2(1*1*256),分别为这6个提取出来的特征层的每个特征点上设置6、6、6、6、6、6个先验框(num_anchors),得到的修改后的ssd先验框的数量计算公式如下:
[0058]
total_number=(19*19*6) (10*10*6) (5*5*6) (3*3*6) (2*2*6) (1*1*6)=3000(2)
[0059]
2.2训练结果
[0060]
首先,将垃圾图像数据集hgi-30按8:1:1划分为训练集(trainset)、验证集(validationset)和测试集(testset),训练集是为了指导模型的学习,验证集是用来调整超参数,监控模型是否发生过拟合,以决定是否停止训练,测试集是为了评估模型性能。
[0061]
然后,分别将ssd和调微调后的mobilenetv2-ssd在训练集(trainset)上训练,得到教师模型和学生模型的训练权重,并将得到的权重在测试集上测试,根据测试结果,评估教师模型和学生模型的表现。
[0062]
步骤3、知识蒸馏的设计
[0063]
目标检测任务,可以分为目标的分类任务和回归任务,分别用来确定目标的种类和位置。在知识蒸馏中,学生模型可以通过模仿主干网络的输出、网络检测头的输出来提升精度。其中核心部分就是损失函数的设计,下面将分别从主干网络损失、分类损失和回归损失来介绍。由于知识蒸馏选用的教师模型和学生模型分别为ssd和mobilenetv2-ssd,知识蒸馏的损失函数也对应由主干网络的损失函数和网络检测头的损失函数构成,当损失函数逐渐收敛,代表两者差距逐渐缩小,学生模型也逐渐接近教师模型性能。
[0064]
3.1主干网络损失函数
[0065]
不同的主干网络对应的特征提取能力不同,教师模型的主干网络有着更好地提取能力,学习到的特征也较多。对主干网络特征进行蒸馏,可以弥补学生模型主干网络的不足。
[0066]
将步骤1和步骤2中得到的垃圾图像数据集hgi-30和训练权重,分别喂入教师模型和学生模型,选取教师和学生模型对应的特征层进行蒸馏学习,即conv7(19*19*1024)、conv6_2(10*10*1024)、conv7_2(5*5*256)、conv8_2(3*3*256)、conv8_3(2*2*256)、conv9_2(1*1*256)这六个特征层。在公式(3)中,v为学生模型特征层特征,z为教师模型特征层特征。l
hint
为主干网络损失函数,此步骤旨在缩小师生模型的主干特征之间的差距。
[0067][0068]
3.2分类损失函数
[0069]
将垃圾数据集图像喂入教师模型,教师模型会首先提取图像的特征层,检测头接着提取步骤3.1中的特征层所包含目标的类别信息p
t
和坐标信息r
t
,并输出。在公式(4)中,z
t
表示教师模型的检测头输出的类别信息,也就是学生模型的需要模仿学习的部分。t为温度,t越大,模型输出的分布越平缓,t为1则为原始分布。温度t和softmax函数联合起到软化的作用,即调节输出结果的概率分布。教师模型则根据p
t
,通过方向传播来调整参数。同理,学生网络的检测头输出类别信息为ps和坐标信息rs,如公式(5)所示。
[0070][0071][0072]
将得到的p
t
和ps,通过l
soft
可以联合教师网络中的信息,改进学生模型性能。其中,wc为权重参数,用来区分目标和背景,可以通过调整目标和背景的权重来调节分类的错误率,如公式(6)所示。l
hard
由真实标签和学生模型的输出ps组成,其中y为真实类别,ps为学生模型的输出。其目的就是通过真实标签调整学生模型输出的概率分布,如公式(7)。
[0073]
l
soft
(ps,p
t
)=-∑wcp
t
log(ps)(6)
[0074]
l
hard
(ps,y)=-∑ylog(ps)(7)
[0075]
在知识蒸馏方法中,学生网络的分类损失函数如公式(8)所示,由l
hard
和l
soft
的概率分布组成。其中,μ是超参数,用来平衡l
hard
和l
soft
之间的比例关系。
[0076][0077]
3.3回归损失函数
[0078]
目标位置坐标的回归主要由检测头完成,检测头提取步骤3.2中的特征层所包含目标的坐标信息r
t
和rs,并输出。回归损失主要由两部分组成,一部分是学生的回归输出rs和真实标签y
reg
的坐标信息之间的smoothl1损失,另一部分是学生模型rs、教师模型r
t
和真实标签y
reg
回归组成,前提是学生模型回归结果rs与真实标签y
reg
的l2距离大于教师模型回归结果r
t
与真实标签y
reg
的l2距离,如公式(9)、(10)所示。
[0079][0080][0081]
3.4网络检测头损失
[0082]
由步骤3.2和3.3得到的分类和回归损失函数,蒸馏结构检测头部分的损失函数由分类损失函数和回归损失函数按不同比例组成,如公式(11)所示,其中n为正样本的数量,λ用来调整二者之间比例。
[0083][0084]
3.5总损失函数
[0085]
知识蒸馏的总损失函数包括两个部分组成,包括步骤3.1中主干网络的损失函数和3.4中网络检测头的损失函数。γ为超参数,用来调整检测头损失和主干网络损失之间的比例。当总损失函数最小时,表示学生模型性能最接近教师模型性能。如公式(12)所示。
[0086]
l
total
=l
head
γl
nint
(12)
[0087]
步骤4、输出结果
[0088]
采用以上知识蒸馏方法,通过ssd教师模型和mobilenetv2-ssd学生模型之间的学习(总结构图如图3所示),提高了学生模型对生活垃圾图像的识别性能。结果如表3所示,在
保持学生模型参数不变的情况下,提升了模型的精度。
[0089]
表3测试结果
[0090]
模型模型大小(mb)map教师模型ssd1000.807未蒸馏mobilenetv2-ssd13.10.749蒸馏后mobilenetv2-ssd13.10.765
[0091]
通过图4所示的可视化结果也可以很明显的看出,采用本发明的识别方法能够对垃圾图像的快速、精确识别。
[0092]
以上内容仅仅是对本发明的构思所作的举例和说明,所属本技术领域的技术人员对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离发明的构思或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。
转载请注明原文地址:https://tc.8miu.com/read-3270.html