论文阅读:Seesaw Loss for Long-Tailed Instance Segmentation

  提出Seesaw Loss就是在样本在训练时,减小多数类对其他类的梯度(负向信号),从而减小对其他类的抑制。
具体操作是引入两个因子:
  mitigation factor:按照不同类之间样本数量的比例,降低对尾部类的惩罚。
  compensation factor:提升对误分类的某个类的惩罚。


前言

  一般分类训练的过程大概是这样:进行训练时,给定一个 i i i 类样本,将其送入模型会得到该样本对所有类的一个得分 Z = [ z 1 , . . . , z i , . . . , z j , . . . , z c ] Z = [z_1,...,z_i,...,z_j,...,z_c] Z=[z1,...,zi,...,zj,...,zc] 。这个得分输入损失函数能够计算损失,损失函数对各个 z z z 求偏导,然后反向传播更新与各个类相关的参数。
  更新的趋势是,新得到的参数会使得 z i z_i zi 更大,其他类的 z z z 更小,如 z j z_j zj。所以,对于 i i i 类训练样本送入模型训练时,损失函数对 z i z_i zi 的梯度可以看做是一个正向信号,会使 i i i 类得分增大;损失函数对其他类的梯度,如 j j j 类,就可以看做一个负向信号,使 j j j 类得分减小。当 i i i 类样本比 j j j 类样本多很多时, j j j 类就一直受到抑制,导致最后得到的模型在少数类的表现不是很好。
  文章提出的Seesaw Loss就是在样本在训练时,减小多数类对其他类的梯度(负向信号),从而减小对其他类的抑制。
具体操作是引入两个因子:
  mitigation factor:按照不同类之间样本数量的比例,降低对尾部类的惩罚
  compensation factor:提升对误分类的某个类的惩罚

我之前理解是:在SGD的时候,损失就像是一个起伏的平面,SGD是为了找到最低点,梯度就是方向导数最大,沿梯度的方向是下降最快的。但是长尾数据集中,训练时一个mini-batch中头部类数量多,整个EMR主要是头部类贡献的,头部类的样本对损失的贡献值太大了,这时梯度方向是让整个mini-batch的loss最小,具体看可能是头部类的样本损失下降的多,对尾部类样本的损失可能直接没什么降低。所以梯度下降更可能朝向了对头部类更好的方向,因此要平衡一下梯度,使其沿着对尾部类较好的方向。想法感觉有点像损失重加权。但后面仔细看了看感觉还是不一样的。

1. Introduction

介绍长尾数据集对模型训练的影响,将其与梯度联系起来,又从梯度入手,说明了自己提出的Seesaw Loss,并介绍其工作原理及特点。

  长尾数据集上,现存的实例分割框架表现有待提升,图1 展示了在LVIS数据集上,Mask R-CNN模型的分类精度和实例分割精度,用CE(Cross-Entropy)训练出来的精度很低。
在这里插入图片描述

  导致这种低性能的原因:在长尾数据集中,头部类的样本数太多,导致正负样本的梯度失衡,从而导致分类器的学习过程有偏差。正负样本的梯度就像是一个跷跷板的两端,如图1所示。为了平衡两者,一个可行的方法就是用一个因子缩小尾部类中负样本的梯度。但盲目降低负样本的梯度会引起尾部类的正样本错误。因此需要一个补偿因子来补偿额外减少的惩罚。

  所提出Seesaw Loss通过两个互补的因子来动态重平衡每个类的正负梯度。mitigation factor 根据训练过程中各种类累计样本数的比例来减少对rare class的惩罚,一个类的正向样本出错时,compensation factor会提升对这种类的惩罚。两个factor协同作用,使得Seesaw Loss能减少对尾部类的惩罚,也能补偿由于惩罚降低导致的misclassification的情况。

  Seesaw Loss有三个特点:1)探索了不同类别累计训练样本的比例,考虑了训练中实例的误分类。2)自己检验校准,mitigation 和 compensation 两个 factor 协同作用,既能减少对尾部类过重的惩罚,又能避免尾部类惩罚过小而产生错误的分类。3)不需要预先计算数据集的分布,在任何采样器的情况下都运行的很好,在训练时,Seesaw Loss能通过计算每个类的样本数估计出真实数据分布。

  大量实验表明,Seesaw Loss在不同实例分割框架和数据采样器中都有提升。再LVIS数据集上,使用Mask R-CNN模型,分别用随机采样器、重复因子采样器,应用Seesaw Loss之后分别有了6.0%和2.1%的显著提升。以及转到更强的Cascade Mask R-CNN上,随机采样器、重复因子采样器上仍然有着6.4%和2.3%的提升。


2. Related Work

介绍了三种视觉相关的任务:目标检测、实例分割、长尾识别

Object Detection. 一种方法是两阶段法:第一阶段产生一系列区域预测框,第二阶段对预测框进行分类和微调。另一种是一阶段法:直接预测bounding box。经典的一阶段方法,需要密集的Anchor作为先验,而没有Anchor的方法在没有这种先验的情况下也能获得类似或更好的性能。也有人尝试应用级联架构来逐步改进边界盒的预测

Instance Segmentation. 随着目标检测的兴起,实例分割变得流行起来。在目标检测以前就有实例分割的方法。Mask R-CNN通过在Faster R-CNN结构里添加mask预测分支,将目标检测与实例分割联系起来。最近研究出一种更短的结构:跳过检测过程,直接为每个实例预测mask。Seesaw Loss能很容易与目标检测或实例分割框架进行组合,在长尾数据集上训练。

Long-Tailed Recognition. 长尾问题的一种代表性解决方法是损失重平衡,该方式基于每个类的分布,为每个类的损失赋予不同的权重。另外还有平衡每个类实例数量的方式,基于累的样本数进行重复因子采样或类平衡采样。不同训练阶段可以用不同的采样策略,如decouple方式,特征学习用自然采样,分类器学习用类平衡采样。也可以通过修正分类器来提升长尾识别的性能,如对不同组的类用不同的分类器,用两个分类器在不同的数据采样下训练。


3. Methodology

  • 介绍了CE缺陷,过度依赖长尾分布导致尾部类精度下降,并探究主要原因是负样本梯度远大于正样本梯度。
  • 提出Seesaw Loss,缓解负样本梯度,同时补偿误分类样本梯度,减少假正例。
  • 设计组件,将Seesaw Loss应用到实例分割上。

3.1 Cross-Entropy Loss

  交叉熵损失可以写成如下所示:
在这里插入图片描述
  其中 Z = [ z 1 , z 2 , . . . , z c ] Z = [z_1,z_2,...,z_c] Z=[z1,z2,...,zc] σ = [ σ 1 , σ 2 , . . . , σ c ] \boldsymbol{\sigma} = [\sigma_1,\sigma_2,...,\sigma_c] σ=[σ1,σ2,...,σc],是预测的logit和分类概率, y i ϵ { 0 , 1 } y_i \epsilon \left\{ 0,1 \right\} yiϵ{0,1}为groundtruth。
  则对 z i , z j z_i,z_j zi,zj梯度如下:
在这里插入图片描述
   σ i − 1 \sigma_i - 1 σi1 是一个正向信号,会使得 i i i 类的得分升高, σ j \sigma_j σj 是一个负向信号,会使得 j j j 的置信度降低。若 i i i 类样本数量比 j j j 类样本多很多,则 j j j 类分类器在大多数样本中会收到惩罚,在训练时只能得到很少的正向信号。因此 j j j 类的预测概率极大程度上被抑制,导致尾部类的分类精度很低。

这里我的理解:在用一个i类样本进行训练时,损失函数对 z i z_i zi求梯度,按得到的结果进行参数调整是正向的,是有利于往i类分类;而对 z j z_j zj求梯度,按这个这个调整时是负向的,是尽量不往 j j j类分的。如果数据集很不平衡,那么结果就是少数类接收到的负向信号很多,正向信号很少,就不利于尾部类的分类。

3.2 Seesaw Loss

  为了缓解上述提到的问题,用一个因子降低公式3中被头部类施加到尾部类负样本的梯度,提出的Seesaw Loss为:
在这里插入图片描述
  损失对 z j z_j zj的梯度就变为:
在这里插入图片描述
  其中 S i j S_{ij} Sij是一个不同类之间可调节的平衡因子,通过 S i j S_{ij} Sij,Seesaw Loss调整了正例 i i i j j j 的惩罚。
  Seesaw Loss通过mitigation factor和compensation factor来确定 S i j S_{ij} Sij,如下:
在这里插入图片描述
  mitigation factor M i j \mathbf{M}_{ij} Mij根据尾部类 j j j和头部类 i i i实例数量的比例,减少对尾部类 j j j的惩罚。
  compensation factor C i j \mathbf{C_{ij}} Cij负责当类 i i i误分类到类 j j j时增加对类 j j j的惩罚。

Mitigation factor.
  在整个训练过程中,Seesaw Loss会计算每个 i i i类的数量 N i N_i Ni。如图2所示:给定一个正向类 i i i的实例,mitigation factor会根据 N j N i \frac{N_j}{N_i} NiNj缓解对负类 j j j的惩罚:
在这里插入图片描述
   i i i 类样本比 j j j 类样本多时,Seesaw Loss就会使用 ( N j N i ) p (\frac{N_j}{N_i})^p (NiNj)p 减少 i i i 类训练样本对 j j j 类的惩罚。
   i i i 类样本数小于等于 j j j 类样本数时,Seesaw Loss就保持原来对 j j j 类的惩罚,防止误分类。指数 p p p 作为一个超参数能够自适应mitigation的量级。

  注意:Seesaw Loss计算的是训练过程中的实例数量,而不是统计整个数据集的分布。这样有两个好处:
  1)不知道训练集分布的情况下也可以使用。
  2)每个种类的训练样本会被所应用的数据采样器所影响,并且线上计算对采样方式比较稳定。训练过程中,mitigation factor被均匀初始化,平滑更新至近似真实数据。

Compensation Factor.
  mitigation factor能平衡头部类和尾部类的梯度,然而由于对少数类过少的惩罚,这可能造成尾部类假正例的情况。而且简单地调整 p p p 并不能缓解这种情况,因为 p p p 是应用到所有类上的。
  我们提出了Compensation factor来关注误分类的样本,而不是调整所有类。如图2所示,Compensation factor能减少误分类时的梯度( σ j \sigma _j σj σ i \sigma _i σi 大时)。Compensation factor的公式如下:
在这里插入图片描述
  对于 i i i 类的训练样本,被误分类成 j j j 类时(也就是 σ j > σ i \sigma _j > \sigma _i σj>σi 时), C i j C_{ij} Cij会用 ( σ j σ i ) q (\frac{\sigma_j}{\sigma_i})^q (σiσj)q 来增加对 j j j 类的惩罚。当没出现误分类时(也就是 σ j ≤ σ i \sigma _j \le \sigma _i σjσi 时), C i j C_{ij} Cij就是1,相当于只有 M i j M_{ij} Mij起作用。

在这里插入图片描述
Normalized Linear Activation.
  预测分类的Logit z = W T x + b z = W^Tx + b z=WTx+b,前人的研究表明,长尾数据集上各个类别的分类器权重 W W W 与对应的类别的样本数有关,某个类别样本数越多,其分类器权重越大,这种现象在特征范数 ∣ ∣ x ∣ ∣ ||x|| ∣∣x∣∣ 也有体现,因此我们采用了归一化线性激活, z = τ W ~ T x ~ + b z = \tau \widetilde{W}^T\widetilde{x} + b z=τW Tx +b,其中 W i ~ = W i ∣ ∣ W i ∣ ∣ 2 , i ϵ C , x ~ = x ∣ ∣ x ∣ ∣ 2 \widetilde{W_i} = \frac{W_i}{||W_i||_2},i \epsilon C,\widetilde{x} = \frac{x}{||x||_2} Wi =∣∣Wi2Wi,iϵC,x =∣∣x2x τ \tau τ是一个temperature factor。Normalized linear activation通过把权重和特征除以他们对应的 L 2 L_2 L2范数来缩小不同种类之间的差异,因此能高效地平衡预测概率,并提升在长尾数据集上的性能。

3.3 Model Design for Instance Segmentation

Objectness Branch. 和图像分类相比,目标检测中的分类器有两个函数性,首先要确定一个bounding box中的物体是不是前景目标,然后再分辨前景实例属于哪一类。以前的实践通常把背景也看成一个辅助类,给定的 C C C 个类别的数据集中,最多的检测器的分类器需要预测 C + 1 C+1 C+1 个logit。这种方式尽管使用地比较广泛,但是如果要采用Seesaw Loss,这种方式带来了许多困难。一般来讲,检测器中大部分目标候选框是背景,因此前景类别比背景类别更少,因此Seesaw Loss会显著降低对前景类的惩罚,分类器往往把背景误分类成前景,导致性能很差。
  为了处理这一问题,我们分离了目标检测器中的两个步骤。加了一个objectness branch区分前景背景,objectness branch采用Normalized linear activation来预测前景、背景两个类的logit,用交叉熵损失训练。推断时, i i i 类的logit z i c l a s s z_i^class ziclass 、objectness的logit z o b j z^{obj} zobj 都用softmax计划函数。最后 i i i 类bounding box的检测概率 σ i d e t = σ i c l a s s ⋅ σ o b j \sigma_i^{det} = \sigma_i^{class} \cdot \sigma^{obj} σidet=σiclassσobj

Normalized Mask Predication. 受到normalized linear activation的启发,我们进一步提出normalized mask prediction来减轻在mask头部的训练的偏移。在mask R-CNN中,mask head最后用了 1 × 1 1 \times 1 1×1 的卷积层,用sigmod函数激活logit。我们将 1 × 1 1 \times 1 1×1 的卷积层的权重归一化,然后将输入的特征 X X X 也归一化。注意, X X X 的尺寸是 H × W H \times W H×W 。将 ( y , x ) (y,x) (y,x) 的特征记为 X X X 。则normalized mask prediction的预测为 z = τ W ~ ∗ X ~ + b z = \tau \widetilde{W} * \widetilde{X} + b z=τW X +b 其中 W i ~ = W i ∣ ∣ W i ∣ ∣ 2 , i ϵ C , X y , x ~ = X y , x ∣ ∣ X y , x ∣ ∣ 2 , y ϵ H , x ϵ W \widetilde{W_i} = \frac{W_i}{||W_i||_2},i \epsilon C,\widetilde{X_{y,x}} = \frac{X_{y,x}}{||X_{y,x}||_2},y\epsilon H,x\epsilon W Wi =∣∣Wi2Wi,iϵC,Xy,x =∣∣Xy,x2Xy,x,yϵH,xϵW τ \tau τ是一个temperature factor。


4. Experiments

  实验直接不看了,啥时候看代码再看,简单看一下表格。
  用AP来衡量实验结果, A P r , A P c , A P f AP_r,AP_c,AP_f APr,APc,APf。分别表示少数类、普通类、多数类上的AP。
在这里插入图片描述
看一看出应用了Seesaw Loss 和 Norm Mask效果好。

在这里插入图片描述
可以看出MF、CF两个factor,还有NLA操作,都有自己的作用,共同应用效果最好。

在这里插入图片描述
NLA方式应用到别的方法中也有效果。

在这里插入图片描述
表3的实验结果是在探究计算 N i , N j N_i,N_j Ni,Nj方式是否有用,作者提出的方法是online。
表4的实验结果是在探究超参 p p p ,0.8时比较合适,其他实验中都默认设置 p = 0.8 p = 0. 8 p=0.8

在这里插入图片描述
表6的实验结果是探求超参 q q q ,2.0时比较合适,其他实验中都默认设置 p = 2.0 p = 2.0 p=2.0

在这里插入图片描述
图3表现了当控制magnitude的两个参数 p , q p,q p,q 取不同值时两个factor的结果。

在这里插入图片描述
表7说明 τ = 20 \tau = 20 τ=20效果最好,实验默认 τ = 20 \tau = 20 τ=20

表8说明自己添加的用来分清前景背景的objectness branch的重要性,虽然对CE没有提升,但是对于提出的Seesaw Loss作用很大。

表9是探究decouple中采样的影响,也将decouple与end-to-end方式性能作比较。decouple方式中预训练用random和repeat factor sampler进行比较,微调阶段一直用repeat factor sampler。最后得出decouple中Seesaw Loss预训练用RFS采样方式最好,而且decouple与end-to-end方式性能作比较得出,对于Seesaw Loss的方式,end-to-end效果更好。

探究Seesaw Loss在长尾分类任务中的作用
表11显示在ImageNet-LT上预训练出超参 q = 1.0 q = 1.0 q=1.0
表11显示end-to-end的Seesaw Loss最好

在这里插入图片描述

附录A

把对 S i j S_{ij} Sij 的梯度求了一下,说明了 i i i 类 对 j j j 类的因子 S i j S_{ij} Sij 施加的变化,梯度为正,因此使得 S i j S_{ij} Sij 逐渐减小
在这里插入图片描述

附录B

可视化了正负样本梯度比例,可以看到应用Seesaw Loss后正负梯度平衡了
在这里插入图片描述

附录C LVIS Challenge 2020

Seesaw Loss在LVIS v1的一个验证集切片上效果提升了6.9%AP,我们提出的HTC-lite,是Hybrid Task Cascade (HTC)轻量的版本,用全局上下文编码代替了语义分割。用单一模型,除了ImageNet-1k外没有额外的数据和注释对backbone预训练,我们使用的方法在LVIS的一个test-dev切片上的benchmark达到了38.29%的AP。

HTC-Lite.
Hybrid Task Cascade (HTC)的一个轻量版本,保证性能的同时兼顾速度,改造方式:用全局上下文编码代替了语义分割,减少了mask head。
在这里插入图片描述

Context Encoding Branch.
LVIS不能应用semantic segmentation annotations,因此使用 global context encoder替代这一部分,作为一个多分类器,context encoder用一个卷积层和全局平均池化将输入的特征图变成一个特征向量,然后用一个辅助的全连接层分类。通过这一步骤,特征向量编码了图片的全局上下文信息,然后将其加到RoI上,box head 和 mask head用这个来增强语义信息。

Reduced Mask Heads.
为了进一步降低实例分割的成本,HTC-Lite只在最后阶段保留mask head,也省去了原来交叉的信息传递。
用两个主流的实例分割框架跟HTC-Lite比较了一下性能。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值