一种具有难样本感知的强弱双分支网络的长尾识别方法
1.本发明属于长尾分布视觉识别领域,具体涉及一种具有难样本感知的强弱双分支网络的长尾识别方法。
背景技术:
2.现实世界的数据通常呈现长尾分布,其中大多数示例仅来自少数几个类。在这种情况下,每个类的训练实例数量差异很大,从尾部类的几个样本到头部类的数千个样本。最先进的分类模型的性能通常有利于大多数类,导致罕见类的泛化性能较差。
3.早期工作通过重新平衡数据分布来缓解长尾训练数据的恶化。这些方法可以有效地减少头类在训练过程中的主导地位,但由于原始数据分布失真,它们往往存在过度拟合尾类的风险。最近,许多两阶段方法与一阶段重新平衡方法相比取得了显著的改进。延迟重采样和延迟重加权方法首先在第一阶段训练具有长尾分布的网络,然后在第二阶段使用不同的重采样或重加权策略调整网络。这种简单的两阶段训练方案已被证明能够处理过度拟合,并在许多长尾基准上设置新的最先进性能。最近还出现了许多将长尾数据分组训练的集成方法,例如lfme和bbn。这些方法通常为每个组训练一个模型,然后在多分支框架中组合各个模型。具体来说,lfme引用将数据集分为多类、中类和少类,并为每个子集分配单独的分支来学习特征表示。bbn提出了一种双边分支网络,通过动态组合实例平衡采样器和反向平衡采样器来模拟延迟重采样(drs)过程。
技术实现要素:
4.发明目的:为了解决长尾数据识别中对尾部类识别不准确的问题以及困难样本难以学习的问题,本发明提供一种具有难样本感知的强弱双分支网络的长尾识别方法。
5.技术方案:一种具有难样本感知的强弱双分支网络的长尾识别方法,包括如下步骤:
6.(1)构建双分支的网络结构:所述双分支网路结构为相同的残差网络结构,包括弱分支和强分支,其中:弱分支基于传统的数据增强策略,对于强分支进行随机添加灰度、模糊和颜失真处理,包括添加正则化项提高两个分支之间的差异;
7.(2)从差异到分类的学习策略:在训练的早期阶段通过差异损失获得尽可能不同的分支,并随着训练的进展逐渐将训练的重点转移到分类;
8.(3)构建难样本感知损失函数,在长尾数据识别中,当且仅当训练接近尾声且每类精度稳定时,通过难样本感知损失代替分类损失ldam-drw,所述难样本感知损失函数的表达式如下:
[0009][0010]
其中是第c类的难样本感知损失权重,m是训练示例的数量,c是类的数量,wc是第c类的权重,是训练示例m的第c类的目标标签,由softmax(z)计算;的设置规则
如下:
[0011][0012]
其中表示第c类在第e轮迭代的权重,m是动量因子,是第c类在第e轮迭代的验证集上的精度。
[0013]
进一步的,所述方法对于图像长尾数据识别的总损失定义如下:
[0014]
l
sdn
=λ(l
cls
(y,ps)+l
cls
(y,pw))+(1-λ)l
diff
(ps||pw)
[0015]
其中λ和1-λ分别是分类损失和差异损失的权重;λ定义如下:
[0016][0017]
上式中,e
max
是总训练迭代数,e是当前迭代。
[0018]
更进一步的,双分支的网络结构的训练包括如下计算过程:
[0019]
(1.1)令x表示训练样本,y∈{1,2,
…
,c}中的y是其标签,其中c是类数,分别对“强分支”和“弱分支”应用强增强和弱增强策略,然后获得两个增强样本(x_s,y)和(x_w,y)作为输入数据,其中(x_s,y)表示强分支,(x_w,y)表示弱分支;
[0020]
(1.2)将步骤(1.1)得到的两个样本发送到其相应的分支,获得特征向量f_s和f_w;
[0021]
(1.3)将步骤(1.2)得到的两个特征向量将分别发送到分类器w_s和w_w;输出对数公式如下:
[0022][0023]
其中zs,zw分别表示强分支和弱分支的预测输出;
[0024]
其中通过softmax函数计算类的概率如下所示:
[0025][0026]
此外,该方法通过增加正则化项以确保两个分支之间的差异。
[0027]
其中,步骤(1)包括将两个分支在总计c类别上的分类概率的kl发散最大化为:
[0028][0029]
其中,l
diff
表示差异损失。
[0030]
进一步的,所述方法从针对单标签分类的交叉熵损失函数开始引入难样本感知损失函数,所述交叉熵损失函数如下:
[0031][0032]
其中,m是训练示例的数量,c是类的数量,是训练示例m的第c类的目标标签,是训练示例m的第c类的估计概率,由softmax(z)计算。
[0033]
进而可得,重新加权损失公式化表示为:
[0034][0035]
其中,wc是第c类的权重,所述方法中ldam-drw损失引用作为l
wce
。
[0036]
最后可得,难样本感知损失函数公式化表示为:
[0037][0038]
其中的设置规则如下:
[0039][0040]
其中表示第c类在第e轮迭代的权重,m是动量因子,是第c类在第e轮迭代的验证集上的精度。
[0041]
有益效果:本发明所构建的双分支的网络结构和难样本损失函数的有效性与现有的长尾数据识别方法有明显的提高,包括在不平衡率方面的表现均优越,极大的提高了长尾数据识别过程中的准确率,提高了处理图像长尾数据的识别处理能力。
附图说明
[0042]
图1为本发明所述方法的实施流程图;
[0043]
图2为本发明具有难样本感知损失的强弱双分支网络的总体框架。
具体实施方式
[0044]
为详细说明本发明所公开的技术方案,下面结合说明书附图做进一步的阐述。
[0045]
目前存在的多分支方法本质上增加了分支之间的差异,因此本发明首先是提出一种简单而有效的方法来增加分支之间的差异,并取得了良好的效果。此外,还发现验证集的准确率与训练样本数不呈正相关。有些类有大量图片,但准确率不高,而有些类有少量图片,但准确率高。针对这一现象,本发明所述方法中,进一步的提供一种新的难样本感知损失函数,该函数在训练过程中动态调整困难类和简单类的权重,使模型更加关注困难样本。
[0046]
本发明所述方法用于解决长尾分布数据识别的难题,尤其涉及在图像处理领域中,本发明为强表示学习和弱表示学习设计了两个分支。两个分支的区别在于处理输入数据时,一个分支使用强增强数据,另一个分支使用弱增强数据。同时,通过最大化kl散度来增加两个分支之间的差异。此外,该方法包括为该网络结构设计一种新的学习策略来将学习的重点从差异转到分类。针对困难样本设计了一个新的难样本感知损失函数,该损失函数能够更有效地关注到困难样本,进一步提升预测的准确性。
[0047]
实施例1
[0048]
结合图1和图2,图2展示了具有难样本感知损失的强弱双分支网络的总体框架。本发明所述方法的实施过程具体如下:
[0049]
(1)构建强弱双分支网络结构
[0050]
这两个分支使用相同的残差网络结构,分别称为弱分支和强分支。对于弱分支,遵循传统的数据增强策略,而对于强分支,通过随机添加灰度、模糊和颜失真来提高训练及
提高结果的差异。
[0051]
令x表示训练样本,y∈{1,2,
…
,c}中的y是其标签,其中c是类数。分别对强分支和弱分支应用强增强和弱增强策略,然后获得两个增强样本(x_s,y)和(x_w,y)作为输入数据,其中(x_s,y)表示强分支,(x_w,y)表示弱分支。将这两个样本发送到其相应的分支,获得特征向量f_s和f_w。然后,这两个特征向量将分别发送到分类器w_s和w_w。输出对数公式如下:
[0052][0053]
其中zs,zw分别表示强分支和弱分支的预测输出。通过softmax函数计算类的概率为:
[0054][0055]
此外,本发明添加了正则化项以确保两个分支之间的差异。将两个分支在总计c类别上的分类概率的kl发散最大化为:
[0056][0057]
其中l
diff
表示差异损失。
[0058]
结合重新加权损失(ldam-drw损失)将分类损失定义为l
cls
,最终损失定义为:
[0059]
l
sdn
=λ(l
cls
(y,ps)+l
cls
(y,pw))+(1-λ)l
diff
(ps||pw)
[0060]
其中λ和1-λ分别是分类损失和差异损失的权重。λ的具体描述参见步骤(2)。
[0061]
(2)构建从差异到分类的学习策略
[0062]
该步骤提出一种新的学习策略,将学习重点从差异转移到分类。具体来说,希望在训练的早期阶段通过差异损失获得尽可能不同的分支,并随着训练的进展逐渐将训练的重点转移到分类。对此,λ定义如下:
[0063][0064]
其中,e
max
是总训练迭代数,e是当前迭代。据此可以看到λ是根据训练训练迭代次数自动生成的,并将随着训练迭代的增加而逐渐增加λ控制学习策略从差异到分类的速度。
[0065]
(3)构建新的难样本损失函数
[0066]
基于大量的现有技术及试验表明,在长尾数据识别任务中,具有少量样本的类不一定是难以学习的类,同样,具有大量样本的类也不一定是易于学习的类。然而,常见的重加权损失函数只是根据类别数为不同类别分配不同的权重,即样本数越大的类别,类别的权重越小。这会导致一些样本量大的困难类别学习不足,而一些样本量小的简单类别学习过度。为了解决上述问题,步骤(3)构建一种新的损失函数,称为难样本感知损失(hl)。
[0067]
首先从针对单标签分类的交叉熵损失函数开始引入难样本感知损失函数。
[0068][0069]
其中,m是训练示例的数量,c是类的数量,是训练示例m的第c类的目标标签,
是训练示例m的第c类的估计概率。这里由softmax(z)计算。
[0070]
常见的重新加权损失可以公式化为:
[0071][0072]
其中,wc是第c类的权重。本实施例使用ldam-drw损失引用作为l
wce
。
[0073]
形式上,在重新加权损失函数中引入权重项以获得步骤(3)所述的难样本感知损失函数:
[0074][0075]
其中是第c类的难样本感知损失权重。使用以下规则设置
[0076][0077]
其中表示第c类在第e轮迭代的权重,m是动量因子,是第c类在第e轮迭代的验证集上的精度。
[0078]
注意,当且仅当训练接近尾声且每类精度稳定时,才使用难样本感知损失代替分类损失ldam-drw。此外,动量因子还为难样本感知权重的变化提供了稳定性。
[0079]
综上,介绍了一种简单而有效的结构,称为强弱双分支网络,具有特殊的差异到分类的学习策略,用于长尾视觉识别。此外,本发明针对难以学习的样本提出了一种新的难样本感知损失。大量实验表明,该方法优于以前的工作,在长尾基准测试上有很大的优势。
[0080]
表1.resnet-32在long-tailed cifar-10/100上的top-1精度
[0081][0082]
表1报告了使用resnet-32的cifar-10-lt和cifar-100-lt的top-1精度。不平衡比率为200、100、50和20。本发明所述方法在所有数据集中表现最好,这证明了该方法的通用性。与之前的重加权和多分支方法相比,可以看到本发明所述方法明显优于其他现有技术,这表明了本发明中损失函数和架构的有效性。与强增强方法相比,本发明也超越了它们,这表明该方法的改进不仅仅是由于数据增强。与其他最近的竞争方法相比,在所有不同的不平衡率方面也优于现有技术。可以看出,与cifar-10-lt相比,cifar-100-lt的改进更大,这表明本发明所述方法在面对更困难的数据集时可以获得更好的结果。本实施例还根据每类训练样本的数量报告了多类、中类和少类上的准确性以上。
[0083]
表2.resnet-10/resnet-50在imagenet-lt和inaturalist 2018上的top-1精度
[0084][0085]
在imagenet lt和inaturalist 2018上进一步验证了本发明所述方法的有效性。这两个大规模不平衡数据集的结果在表2中报告。在imagenet lt上,本发明比ride分别高出2.2%(resnet-10)和1.9%(resnet-50),在inaturalist2018上,本发明比ride高出1.1%(resnet-50),表明本发明可以有效地推广到大规模数据集。
[0086]
实施例2
[0087]
进一步的结合图1,下面通过算法实施例来阐述本发明的应用。
[0088]
数据集采用imagenet-lt,编程语言为python3,框架采用pytorch1.7.1。
[0089]
准备数据集imagenet-lt,该数据集共有1000个类别,整体呈现长尾分布。训练集包含11万多张图片,每个类别的图片最多的有1280张,最少的只有5张;测试集包含5万张图片,每个类别包含的图片均为50张。准备特征提取网络resnet-50,输出特征维度为512维,分类器采用全连接层,输入特征维度为512,输出特征维度为1000,随机初始化神经网络的参数。
[0090]
训练阶段:对一张图片经过随机裁剪-随机进行水平翻转-自动增强-归一化后的图片作为弱增强的图片,在弱增强的基础上加入随机添加灰度、模糊和颜失真的图片作为强增强的图片,送入双分支的网络进行训练,训练的过程中最大化kl散度和最小化分类损失来保证双分支的差异以及分类的准确度,同时在训练的过程中使用从差异到分类的学习策略,将重点慢慢从差异转到分类上来。在训练接近尾声时,我们将分类损失函数替换为新提出的难样本感知损失函数,用于增大难样本的权重进行微调。
[0091]
训练的批大小为128,一共200次迭代,其中最后20轮迭代使用的难样本感知损失函数。初始学习率为0.05,在120和160轮时分别将学习率衰减为原来的0.1和0.01。
[0092]
测试阶段:构造imagenet-lt test集,每个类别有50张图片,将图片经过缩放-中心裁剪-归一化的操作后送入网络进行预测,集成双分支的输出作为最终结果,整个测试集上的准确率达到了56.31%,取得了目前最好的效果。