一种基于transformer的二训练图像分类算法
技术领域
1.本发明属于图像分类技术领域,特别涉及一种基于transformer的二训练图像分类算法。
背景技术:
2.当下面对垃圾产量的日益增长导致生态环境每况愈下,如何通过垃圾分类管理,最大限度地实现垃圾资源利用,减少垃圾处置量,改善生存环境质量,是一个重要问题。
3.伴随着垃圾分类在我国立法推行,各地区也陆续颁布了生活垃圾相关管理条例,在有组织、有目的性的监督下,垃圾分类初期效果显著。为了保证垃圾分类的效果,现在的垃圾桶都具有自动分类功能,但是现在的分类功能有一定的局限性,分类种类不多且错误率高,另外由于自动分拣设备的延迟需要保持在一个较低的水平,对算法的执行效率要求较高;造成上述问题的原因主要是因为垃圾分类数目繁多,且图像的类别之间数目不均衡,不同类别之间视觉上存在差异较小,或图像背景信息干扰等。故现在急需一种具体应用于垃圾分类上的分类方法。
技术实现要素:
4.针对上述的问题,本发明提供一种基于transformer的二训练图像分类算法,该方法包括:
5.将输入的图像进行预处理;
6.将处理后的所述图像划分成固定大小的子图,连接各个所述子图后进行维度调整,形成输入数据;
7.将所述输入数据输入resnet-50模型,获得图片分类结果;
8.定义分类标签和蒸馏标签,并将所述分类标签和所述蒸馏标签分别拼接到所述输入数据的头和尾,得到标签数据;
9.将所述标签数据进行位置编码,得到位置编码标签数据;
10.将所述位置编码标签数据输入注意力transformer模型中,获取所述分类标签的分类结果以及所述蒸馏标签的分类结果;
11.将所述注意力transformer模型作为学生模型,所述resnet-50模型作为教师模型构建损失函数;
12.将所述损失函数对所述注意力transformer模型进行反向传播训练,训练完成后,得到训练好的所述transformer模型;
13.基于训练好的所述transformer模型,获得待测图像的类别。
14.优选的是,对所述图像进行预处理包括将所述图像转换为tensor类型。
15.优选的是,所述resnet-50模型为卷积神经网络。
16.优选的是,所述将所述位置编码标签数据输入注意力transformer模型中,获取所述分类标签的分类结果以及所述蒸馏标签的分类结果包括:
17.将所述位置编码标签数据输入所述注意力transformer模型中encoder编码器,设定滑动窗口,采用全局与所述滑动窗口结合的多头自注意力机制,获得自注意力机制的结果;
18.将所述自注意力机制的结果输入至所述transformer模型中meta-transformer学习器,获得不同类别的各个特征分布;
19.将所述不同类别的各个特征分布泛化,进行二次训练,训练完成后获得训练好的所述transformer模型;
20.将所述位置编码标签数据输入至训练好的所述transformer模型,获得所述分类标签的分类结果以及所述蒸馏标签的分类结果。
21.优选的是,所述获得自注意力机制的结果中,自注意力机制公式:
[0022][0023]
式中:q代表查询矩阵,k代表键矩阵,v代表值矩阵;
[0024]
其中,多头自注意力计算步骤如下:
[0025]
将所述分类标签、所述蒸馏标签分别通过公式计算,得到两个结果attn1和attn2;
[0026]
将所述结果attn1和attn2分别乘以v,获得attn
v1
和attn
v2
;
[0027]
将所述attn
v1
和attn
v2
拼接,得到attn
v12
;
[0028]
将所述attn
v12
维度转换和通过全连接层,得到自注意力机制的结果attn。
[0029]
优选的是,将所述自注意力机制的结果输入至所述transformer模型中meta-transformer学习器,获得不同类别的各个特征分布包括:
[0030]
所述meta-transformer学习器中设有符合高斯分布参数的度量模型;
[0031]
对所述度量模型进行初步训练:
[0032]
将所述输入数据分为训练集和测试集,所述测试集为单一类别,所述训练集为不同于所述测试集的至少一种不同类别;
[0033]
将所述自注意力机制的结果与所述训练集和测试集同步输入迭代训练,求解所述度量模型中的参数,完成所述度量模型的训练。
[0034]
优选的是,所述对所述transformer模型进行二次训练包括:
[0035]
将输入的所述自注意力机制的结果中的所述分类标签、所述蒸馏标签和其余部分分离;
[0036]
将所述其余部分经过全连接层,所得到的结果投影至新的矩阵中;
[0037]
对所述投影结果进行重塑;
[0038]
将重塑投影结果经过深度为32层的深度卷积网络处理,所得到的结果进行重塑;
[0039]
将该重塑结果经过全连接层后,并拼接回分离的所述分类标签和所述蒸馏标签,得到新的输入数据;
[0040]
将所述自注意力机制的结果和所述新的输入数据进行残差连接和layernorm,获得输出结果;
[0041]
从所述输出结果中取出与所述分类标签以及所述蒸馏标签对应的层,经过全连接层,得到所述分类标签的分类结果以及所述蒸馏标签的分类结果。
[0042]
优选的是,将所述注意力transformer模型作为学生模型,所述resnet-50模型作为教师模型构建损失函数包括:
[0043]
采用软蒸馏法构建损失函数,所述损失函数公式为:
[0044][0045]
式中:z
t
为所述教师模型的输出结果;zs是所述学生模型中分类标签对应的输出结果;zd是所述学生模型中蒸馏标签对应的输出结果;τ为蒸馏温度;λ为kl散度与实标号y之间的交叉熵之间的平衡系数;ψ为softmax函数。
[0046]
与原有技术相比,本发明的有益效果为:
[0047]
本发明采取全局与滑动窗口相结合的多头自注意力机制,大大减少了训练所需的计算资源和内存;并且将原有的多头感知机层与卷积神经网络相结合,充分考虑了图像像素与像素之间的相关度,使得分类结果正确率大大提高。
附图说明
[0048]
图1为本发明基于transformer的图像分类的流程图;
[0049]
图2为本发明基于transformer的图像分类中transformer模型结构图。
具体实施方式
[0050]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0051]
本发明提供一种基于transformer的二训练图像分类算法,包括:
[0052]
将输入的图像进行预处理;
[0053]
具体地,对图像进行预处理包括将图像转换为tensor类型。
[0054]
将处理后的图像划分成固定大小的子图,连接各个子图后进行维度调整,形成输入数据;
[0055]
具体地,根据设定的图片分块大小将图像进行分块处理,将每一块视作一个标签,得到维度为r
batch_size
×
src_len
×
(channel
×
patch_size
×
patch_size)
,其中src_len代表分块的总数,image_length与image_width代表图片分辨率的长度与宽度;计算公式为最后,通过全连接层将维度处理为r
batch_size
×
src_len
×
d_model
,便得到输入数据。
[0056]
将输入数据输入resnet-50模型,获得图片分类结果;
[0057]
具体地,resnet-50模型为卷积神经网络,且为大规模数据集预训练过的卷积神经网络,将输入数据分成若干批,并对resnet-50模型进行训练,训练完毕,得到训练好的教师模型。该训练方法为常规方法,故在此不再详细说明。将输入数据输入训练好的教师模型的的带图片分类结果。
[0058]
定义分类标签和蒸馏标签,并将分类标签和蒸馏标签分别拼接到输入数据的头和尾,得到标签数据,此时输入数据的维度为
[0059]rbatch_size
×
(src_len+2)
×
d_model
;
[0060]
将标签数据进行位置编码,得到位置编码标签数据;该数据维度不变;
[0061]
将位置编码标签数据输入注意力transformer模型中,获取分类标签的分类结果以及蒸馏标签的分类结果;
[0062]
具体地,位置编码标签数据输入注意力transformer模型中,
[0063]
首先经过dropout层,随机失活一些神经元,随机失活的概率是人为定义的参数emb_dropout,此处的概率会直接导致神经元的丢失的多少,过多会使得模型性能变差,过少会让整个模型训练困难,此处我们采用随机失活概率为0.3;
[0064]
将失活后的位置编码标签数据输入注意力transformer模型中encoder编码器,设定滑动窗口,采用全局与滑动窗口结合的多头自注意力机制,获得自注意力机制的结果;
[0065]
进一步地,自注意力机制公式:
[0066][0067]
式中:q代表查询矩阵,k代表键矩阵,v代表值矩阵;
[0068]
其中,多头自注意力计算步骤如下:
[0069]
将分类标签、蒸馏标签分别通过公式计算,得到两个结果attn1和attn2,其维度分别为
[0070]rbatch_size
×
n_heads
×2×2与r
batch_size
×
n_heads
×
src_len
×
src_len
;
[0071]
将结果attn1和attn2分别乘以v,获得attn
v1
和attn
v2
,其维度分别为r
batch_size
×
n_heads
×2×
d_v
与r
batch_size
×
n_heads
×
src_len
×
d_v
;
[0072]
将attn
v1
和attn
v2
拼接,得到attn
v12
,其维度为
[0073]rbatch_size
×
n_heads
×
(src_len+2)
×
d_v
;
[0074]
将attn
v12
维度转换和通过全连接层,得到自注意力机制的结果attn。该结果维度为r
batch_size
×
(src_len+2)
×
d_model
。
[0075]
将自注意力机制的结果输入至transformer模型中meta-transformer学习器,获得不同类别的各个特征分布;
[0076]
进一步地,meta-transformer学习器中设有符合高斯分布参数的度量模型,该度量模型设置在transformer模型的特征仿射变换层中,在这个特征仿射变换层中,有两个超参数θ
γ
∈r和θ
β
∈r,这二者代表的是变化层的一个高斯分布的标准差;
[0077]
对度量模型进行初步训练:
[0078]
将输入数据分为训练集和测试集,测试集为单一类别,训练集为不同于测试集的至少一种不同类别;
[0079]
将自注意力机制的结果与训练集和测试集同步输入迭代训练,求解度量模型中的参数,完成所述度量模型的训练,即初步训练。
[0080]
具体地,对输入数据进行重新规划,本实施例将4个类别的图片组成一个训练集,称为可见域,即将这4个类别外的其他类别中的一个类别单独作为测试集,称为伪
可见域,即τ
ps
。将训练集中和测试集的组成为一个合集,即为训练的一个单位《τ
seen
,τ
ps
》。
[0081]
在每一次的训练迭代t中,我们对数据集进行采样得到一个set,并将上一阶段的自注意力层得到的特征矩阵也作为输入,通过伪可见任务求解参数θf,公式如下:
[0082][0083][0084][0085][0086]
式中:α为可学习参数;t为迭代次数;和分别为图片和这张图片的标签;为自注意力机制矩阵的符号;为度量模型的特征编码器;为度量模型的度量函数;f为参数的集合;ps为伪可见域;q为测试集;分别为特征自编码器和度量函数的可变参数,用于参与l
pu
的计算;s为训练集;l
cls
为常见类别收益损失函数;l
pu
为度量模型的损失函数。以上整个操作都是在特征仿射变换层进行的,模型的泛化能力就是通过这个特征仿射变换层实现。
[0087]
以上的都是在训练中完成,在完成训练后得到了特征分布参数,此步骤为初训练。
[0088]
将不同类别的各个特征分布泛化,进行二次训练,训练完成后获得训练好的transformer模型;
[0089]
进一步地,将输入的自注意力机制的结果中的分类标签、蒸馏标签和其余部分分离,得到其余部分维度为r
batch_size
×
src_len
×
d_model
;
[0090]
将其余部分经过全连接层,所得到的结果投影至新的矩阵中,其维度为r
batch_size
×
src_len
×
d_ff
;
[0091]
对投影结果进行重塑,得到新的矩阵,其维度为
[0092][0093]
将重塑投影结果经过深度为32层的深度卷积网络处理,得到了特征矩阵并保持维度不变;
[0094]
将所得到的结果进行重塑,使其维度变回r
batch_size
×
src_len
×
d_ff
;
[0095]
将该重塑结果经过全连接层后,维度变回r
batch_size
×
src_len
×
d_model
;
[0096]
拼接回分离的分类标签和蒸馏标签,使特征矩阵的维度变为r
batch_size
×
(src_len+2)
×
d_model
,得到新的输入数据;
[0097]
将自注意力机制的结果和新的输入数据进行残差连接和layernorm,获得输出结果;此步骤是常见操作,有助于提高模型的泛化能力。当初步训练的执行次数达到n_layers时,则输出结果;否则重复输入注意力transformer模型中encoder编码器到出初训练的过程,直至执行次数达到n_layers。n_layers指的是transformer+meta-transformer的组数,
即如果有两个组,每个组都是由一个transformer+meta-transformer组成,则n_layers为2。
[0098]
从输出结果中取出与分类标签以及蒸馏标签对应的层,经过全连接层,得到分类标签的分类结果以及蒸馏标签的分类结果。
[0099]
将注意力transformer模型作为学生模型,resnet-50模型作为教师模型构建损失函数;
[0100]
具体地,利用大模型学习到的知识去指导小模型训练,使得小模型具有与大模型相当的性能,但是参数数量大幅降低,从而实现模型压缩与加速。
[0101]
采用软蒸馏法构建损失函数,损失函数公式为:
[0102][0103]
式中:z
t
为教师模型的输出结果;zs是学生模型中分类标签对应的输出结果;zd是学生模型中蒸馏标签对应的输出结果;τ为蒸馏温度;λ为kl散度与实标号y之间的交叉熵之间的平衡系数;ψ为softmax函数。
[0104]
将损失函数对注意力transformer模型进行反向传播训练,训练完成后,得到训练好的transformer模型;
[0105]
基于训练好的transformer模型,获得待测图像的类别。
[0106]
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种基于transformer的二训练图像分类算法,其特征在于,包括:将输入的图像进行预处理;将处理后的所述图像划分成固定大小的子图,连接各个所述子图后进行维度调整,形成输入数据;将所述输入数据输入resnet-50模型,获得图片分类结果;定义分类标签和蒸馏标签,并将所述分类标签和所述蒸馏标签分别拼接到所述输入数据的头和尾,得到标签数据;将所述标签数据进行位置编码,得到位置编码标签数据;将所述位置编码标签数据输入注意力transformer模型中,获取所述分类标签的分类结果以及所述蒸馏标签的分类结果;将所述注意力transformer模型作为学生模型,所述resnet-50模型作为教师模型构建损失函数;将所述损失函数对所述注意力transformer模型进行反向传播训练,训练完成后,得到训练好的所述transformer模型;基于训练好的所述transformer模型,获得待测图像的类别。2.如权利要求1所述的基于transformer的二训练图像分类算法,其特征在于,对所述图像进行预处理包括将所述图像转换为tensor类型。3.如权利要求1所述的基于transformer的二训练图像分类算法,其特征在于,所述resnet-50模型为卷积神经网络。4.如权利要求1所述的基于transformer的二训练图像分类算法,其特征在于,所述将所述位置编码标签数据输入注意力transformer模型中,获取所述分类标签的分类结果以及所述蒸馏标签的分类结果包括:将所述位置编码标签数据输入所述注意力transformer模型中encoder编码器,设定滑动窗口,采用全局与所述滑动窗口结合的多头自注意力机制,获得自注意力机制的结果;将所述自注意力机制的结果输入至所述transformer模型中meta-transformer学习器,获得不同类别的各个特征分布;将所述不同类别的各个特征分布泛化,进行二次训练,训练完成后获得训练好的所述transformer模型;将所述位置编码标签数据输入至训练好的所述transformer模型,获得所述分类标签的分类结果以及所述蒸馏标签的分类结果。5.如权利要求4所述的基于transformer的二训练图像分类算法,其特征在于,所述获得自注意力机制的结果中,自注意力机制公式:式中:q代表查询矩阵,k代表键矩阵,v代表值矩阵;其中,多头自注意力计算步骤如下:将所述分类标签、所述蒸馏标签分别通过公式计算,得到两个结果attn1和attn2;将所述结果attn1和attn2分别乘以v,获得attn
v1
和attn
v2
;
将所述attn
v1
和attn
v2
拼接,得到attn
v12
;将所述attn
v12
维度转换和通过全连接层,得到自注意力机制的结果attn。6.如权利要求4所述的基于transformer的二训练图像分类算法,其特征在于,将所述自注意力机制的结果输入至所述transformer模型中meta-transformer学习器,获得不同类别的各个特征分布包括:所述meta-transformer学习器中设有符合高斯分布参数的度量模型;对所述度量模型进行初步训练:将所述输入数据分为训练集和测试集,所述测试集为单一类别,所述训练集为不同于所述测试集的至少一种不同类别;将所述自注意力机制的结果与所述训练集和测试集同步输入迭代训练,求解所述度量模型中的参数,完成所述度量模型的训练。7.如权利要求4所述的基于transformer的二训练图像分类算法,其特征在于,所述对所述transformer模型进行二次训练包括:将输入的所述自注意力机制的结果中的所述分类标签、所述蒸馏标签和其余部分分离;将所述其余部分经过全连接层,所得到的结果投影至新的矩阵中;对所述投影结果进行重塑;将重塑投影结果经过深度为32层的深度卷积网络处理,所得到的结果进行重塑;将该重塑结果经过全连接层后,并拼接回分离的所述分类标签和所述蒸馏标签,得到新的输入数据;将所述自注意力机制的结果和所述新的输入数据进行残差连接和layernorm,获得输出结果;从所述输出结果中取出与所述分类标签以及所述蒸馏标签对应的层,经过全连接层,得到所述分类标签的分类结果以及所述蒸馏标签的分类结果。8.如权利要求1所述的基于transformer的二训练图像分类算法,其特征在于,将所述注意力transformer模型作为学生模型,所述resnet-50模型作为教师模型构建损失函数包括:采用软蒸馏法构建损失函数,所述损失函数公式为:式中:z
t
为所述教师模型的输出结果;z
s
是所述学生模型中分类标签对应的输出结果;z
d
是所述学生模型中蒸馏标签对应的输出结果;τ为蒸馏温度;λ为kl散度与实标号y之间的交叉熵之间的平衡系数;ψ为softmax函数。
技术总结
本发明公开了一种基于Transformer的二训练图像分类算法,属于图像分类技术领域,包括将图像进行预处理并划分成固定大小的子图,连接子图形成输入数据;将输入数据输入ResNet-50模型,获得图片分类结果;将分类标签和蒸馏标签分别拼接到输入数据的头和尾,得到标签数据;将标签数据进行位置编码,得到位置编码标签数据;将位置编码标签数据输入Transformer模型中,获取分类标签和蒸馏标签的分类结果;将Transformer模型作为学生模型,ResNet-50模型作为教师模型构建损失函数;将损失函数对Transformer模型进行反向传播训练,训练完成后,得到训练好的Transformer模型;基于训练好的Transformer模型,获得待测图像的类别。本发明将ResNet-50模型和Transformer模型分别作为师生模型,学习教师网络的特征空间表达,最后输出分类结果。后输出分类结果。后输出分类结果。
技术研发人员:叶增荣 曹迪 黄立鑫 高嘉彬 胡尚
受保护的技术使用者:杭州慧看智能科技有限公司
技术研发日:2022.02.11
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-17303.html