基于少样本学习的域迁移目标检测论文总结(一)

总结一些关于少样本学习的目标检测文章。目标检测继续挖掘的方向是从目标检测的数据入手,困难样本的目标检测,如检测物体被遮挡,极小人脸检测,亦或者数据样本不足的算法。

1、【Few-Shot Learning with Localization in Realistic Settings】(2019CVPR)

Abstract

传统的识别方法通常需要大量的,人为平衡的训练类别,而很少有基于few-shot Learning人工测试的方法。与两个极端条件相反,现实世界中(in Realistic Settings)的识别问题表现出严重的类分布(class distributions),场景混乱(cluttered scenes),并且存在粗略和细粒度的类差异(coarse and fine-grained class distinctions)。本文证明,在这些具有挑战性的条件下,基于新的“meta-iNat”基准,为few-shot Learning设计的先前的方法并不是现成能使用的。我们引入了三项无参数的改进:(a)采用基于交叉验证(cross-validation )适应元学习(meta learning)以更好的训练程序,(b)在分类之前使用有限的边界框注释对对象进行定位的新颖架构,以及(c)基于双线性池化(bilinear pooling)的特征空间的简单无参数扩展。总之,这些改进将meta-iNat上最新模型的准确性提高了一倍,同时可以将其推广到先前的基准测试、复杂的神经架构和具有实质性域迁移(domain shift)的设置。

Introduction

图像识别模型据称(purportedly)已在ImageNet等基准上达到了人类的性能,但严重依赖(depend critically )于大型,平衡且带有标签的训练集( large, balanced, labeled training sets),每类有数百个示例。在许多现实情况下,这一要求是不切实际的,在这些情况下,物体类别可能很少见,或者带有标记的训练示例很少。此外,获取更多带标签的示例可能需要专业的注释者(expert annotators ),因此成本太高。

过去的一些研究工作通过基于极少数训练示例(例如,每类别有5个示例),可以学会区分一些新的类别(unseen classes :通常少于20个)。然而当这些方法应用于现实世界(realistic scenarios)的识别问题时,它们面临着多重挑战(multiple challenges)。首先,(a)few-shot methods 通常假设均衡的数据集,并优化学习者以获得精确的、通常不真实的每个类的少量训练示例。相反,现实世界中的问题可能具有高度不平衡的,重尾类分布,某些类中的数据要比其他类多几个数量级。其次(b), few-shot learning methods经常假设相关概念的数量很小,并且彼此之间有很大的区别。在实际的应用场景中,上千种类别具有细微的差别。当自然图像杂乱或难以解析时,这些区别可能特别难以检测。因此,训练好的模型还必须能够对杂乱的自然图像(cluttered natural images)进行精细的分类(make fine grained class distinctions)。

本文首先基于iNaturalist数据集的heavy-tailed 类分布和细微类区别(subtle class distinctions),在现实的基准上评估一种原型网络[37],这是一种简单而先进的少量学习方法。当物体较小或场景混乱时,仅凭图像级标签(image-level labels)很难识别出相关物体。为了解决这个问题,本文探索新的学习架构,在对每个感兴趣的对象进行分类之前将其定位。结果表明,本文提出的方法在实际现实识别问题上比现有技术具有明显优势(significant benefits)。

2、《Few-shot Adaptive Faster R-CNN》(CVPR 2019)

小样本(few-shot)数据方向下的域适应(Domain Adaptation)的目标检测算法。

新加坡国立大学&华为诺亚方舟实验室的paper《Few-shot Adaptive Faster R-CNN》被收录于CVPR 2019,解决的具体问题场景是我们有在普通常见场景下的汽车目标检测,我们只有少量雾天暴雨极劣天气环境下的汽车样本,那么我们可以使用成对采样(pairing-sampling)的方法,源域(source domain)即普通场景下的汽车样本Car_{s}和目标域(target domain)即恶劣天气下的汽车样本 Car_{t} 成对( Car_{s} ,Car_{t})组成负样本,另一方面源域下成对组成正样本(Car_{s} ,Car_{s} ),使用GAN的结构,判别器(discriminator)尽可能去分辨正负样本的不同,也就是分辨出源域和目标域的样本,生成器(generator)是尝试去迷惑判别器。这就是这个算法的主要思想,主要是把域适应的思想应用到了目标检测上。

Abstract

为了降低由于域迁移(domain shift)而导致的检测性能下降,我们开发一种新颖的“few-shot adaptation ”方法,该方法仅需要少数具有有限边界框注释的目标域图像。为此,我们首先观察到几个重大挑战。

  • 首先,目标域数据是高度不足的,使得大多数现有的域适配方法无效。
  • 其次,目标检测涉及同时定位和分类,进一步复杂化了模型的适应过程。
  • 最后,该模型存在过度适应(类似于使用少量数据示例进行训练时的过度拟合)和不稳定风险,这可能导致目标域的检测性能下降。

为了解决这些挑战,我们首先在源域和目标特性(target features)上引入一种配对机制(pairing mechanism),以缓解目标域样本不足的问题。

然后,我们提出一个双级模块,将经过源训练的检测器(source trained detector)适配到目标域:1) the split pooling based image level adaptation module uniformly extracts and aligns paired local patch features over locations, with different scale and aspect ratio; 1)基于分割池的图像级自适应模块在不同尺度和长宽比的情况下,均匀地提取和对齐多个位置上的成对局部图像块特征;

2) 实例级自适应模块(the instance level adaptation module)在语义上对齐成对的对象特征,同时避免类间混淆。同时,采用源模型特征正则化(source model feature regularization (SMFR))来稳定两个模块的自适应过程。将这些贡献结合起来,可以实现一种新颖的少镜头自适应Faster-RCNN框架,称为FAFRCNN,它能有效地适应带有少量标记样本的目标域。

对多个数据集的实验表明,该模型在感兴趣的 few-shot domain adaptation(FDA)和无监督域自适应(unsupervised domain adaptation(UDA) )两种情况下都取得了最新的性能。

Introduction

在本文中,我们探索了使用源域数据训练的对象检测器仅用少数几个带注释的目标图像样本(并非所有对象实例都带注释)来适应目标域的可能性。

这是基于我们的主要观察结果,即有限的目标样本( limited target samples)仍可以在很大程度上反映主要的域的特征( major domain characteristics),例如 照明,天气情况,单个物体的外观,如图1所示。该设置在实践中很有吸引力,因为从新域中收集一些代表性数据需要的工作可以忽略不计,同时可以减少大量样本带来的不可避免的噪声。然而,仅用少量目标数据样本来学习域不变表示(domain invariant representation)是非常具有挑战性的,并且检测器需要细粒度(fine-grained)的高分辨率特征(high resolution features)以实现可靠的定位和分类。

图1 最上面一排显示图像级域迁移的背景图片。中间一行显示两个分别来自城市景观和雾城景观的图像。最下面一行显示独立的物体(汽车)反映物体实例级的域迁移。

然而,仅用少量目标数据样本来学习域不变表示是非常具有挑战性的,并且检测器需要细粒度的高分辨率功能以实现可靠的定位和分类。为了解决这一挑战,我们提出了一个新颖的框架,该框架由特征配对机制的两级适应模块以及一个用于稳定适应的强正则化组成。配对过程对将样本分为两组,有效地扩充了有限的目标域数据,第一组由一个来自目标域的样本和一个来自源域的样本组成,第二组均来自源域。

在两个自适应模块中分别增加局部特征块和目标特征。利用引入的配对机制(pairing mechanism),图像级模块可以均匀地提取(uniformly extracts)并对齐配对的多粒度图像块特征(multi-grained patch features),以解决像光照(illumination)这样的全局域迁移问题;实例级模块在语义上匹配成对的目标对象特征,同时避免类之间的混淆,并降低区分能力。我们进一步提出了一种强正则化方法(a strong regularization method),称为源模型特征正则化(SMFR),通过对前景锚定位置的特征响应施加源模型和自适应模型之间的一致性,来稳定训练,避免过度适应。两级自适应模块结合SMFR,在目标样本数据较少的情况下,能够很好地适应新的目标域。

一般的,依赖对抗目标的领域自适应方法(domain adaptation approaches relying on adversarial objective)可能是不稳定的,对模型参数的初始化比较敏感。我们提出的SMFR方法使模型避免了过度拟合,并从少量的目标数据样本中获益。对于两个对抗性适应模块( two adversarial adaptation modules),尽管强加SMFR不能显着提高其性能,但不同运行之间的差异却大大减小了。因此,SMFR提供了更加稳定和可靠的模型适应性。

Method

针对目标域样本不足带来的问题,提出了一种基于分割池(split pooling)和实例ROI采样的特征对机制( feature pairing mechanism)。我们提出的方法通过域对抗学习(domain-adversarial learning),在图像级和对象实例级( image and object-instance levels )两个层次上对成对特征(paired features )进行域自适应,其中第一个层次减轻全局域迁移(global domain shift),第二个层次在语义上对齐对象表征移位(semantically aligns object appearance shift),同时避免类之间的混淆。

在带注释的目标域图像中只有几个对象实例的情况下,我们的目标是使在源训练数据上训练的检测模型适应目标域,而性能下降最小。

Image level Adaptation

本文提出分割池(split pooling,SP)来统一地提取(uniformly extract)不同长宽比和尺度的区域之间的局部特征块(local feature patches),用于域对抗性对齐(domain adversarial alignment)。

####未完待续#####

3、Towards Universal Object Detection by Domain Attention(2019 CVPR)

这一篇是把域注意力机制考虑进来了。

可参考:

cnblogs.com/SuperLab/p/

blog.csdn.net/jiaoyangw

该项目地址可参考:

Abstract:

该模型基于SENet,将多个SENet得到的特征图连接在一起,并且提出了domain attention,将其施加在连接好的特征图后,这样能够使模型更好地适应不同场景下的目标检测任务。

插播:SENET

可参考:blog.csdn.net/evan123mg

Squeeze-and-Excitation Networks(简称 SENet,压缩和激励网络)是 Momenta 胡杰团队(WMW)提出的新的网络结构。动机是希望显式地建模特征通道之间的相互依赖关系。另外,作者并未引入新的空间维度来进行特征通道间的融合,而是采用了一种全新的「特征重标定」策略。具体来说,就是通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征。SENet的核心思想在于通过网络根据loss去学习特征权重,使得有效的feature map权重大,无效或效果小的feature map权重小的方式训练模型达到更好的结果。

将SENet block插入到现有的多种分类网络中,都取得了不错的效果。SE block嵌在原有的一些分类网络中不可避免地增加了一些参数和计算量,但是在效果面前还是可以接受的 。Sequeeze-and-Excitation(SE) block并不是一个完整的网络结构,而是一个子结构,可以嵌到其他分类或检测模型中。

Introduction:

目标检测任务是多种多样的,有种类差异(人脸、马、医学损伤等等),也有相机视角差异(从飞机、自动驾驶汽车上拍摄的图像等),还有图像风格(比如漫画、剪贴画、水彩画、医学图像等)等。然而,现有的检测器通常是基于特定于域的(在单一数据集上进行训练和测试)。这部分原因是因为目标检测数据集是多样的,并且它们之间存在一个不容易的域迁移(domain shift )。

众所周知,为不同领域的任务各自设置专门的检测器能达到很好的检测效果。但是实际应用中,系统可能需要处理多个领域的图像。简单粗暴一点的方法,我们要处理D个领域的图像,那么就训练D个检测器分别处理每个领域。但是,系统不一定明确某个时间点出现的是哪个领域的图像,而且模型会很大。所以研究人员提出了两种方案(图像分类),一种是在一个通用模型上解决多任务,另一种是在多个领域解决同一任务目标检测比分类任务复杂得多。

在多个领域解决同一任务

其中D表示不同的domain,O表示输出,A表示domain-specific的adapter,DA表示文中提出的领domain-attentive module,蓝色部分是universal domain,其他颜色表示各领域专用。(a)和(b)是多领域专用检测器,显然它们都需要领域的先验知识。(c)和(d)是通用检测器。

(a):是一系列领域专用检测器,不共享参数和计算;

(b):在(a)的基础上进行卷积层共享以及实现轻量级的领域专用的适应层。

(c):所有领域间参数和计算(除了输出层),很难覆盖所有非平凡转换的领域,所以检测效果比(b)差;

(d):是文中提出的方法,加入了DA(domain attention)模块。首先加入一系列通用SE adapter,然后引入基于特征的关注机制以实现对领域的敏感。该模块通过通用SE适配器库学习将网络激活分配给不同的域,并通过领域-注意机制来确定它们的响应,所以adapter可以专注于各自的领域。由于该过程是数据驱动的,所以域的数量不必与数据集的数量相匹配,数据集可以跨越多个域。网络可以利用跨领域的共享知识。

【小结】:

有两个领域(domain)的数据,source domain和target domain,source domain可以看成比如晴天数据, target domain可以看出阴天数据,只要source 和 target数据分布不要太不一样一般都能做迁移,比如不同摄像头视角的数据也可以。

对于UDA,也就是无监督DA问题,source的数据都是有label 的,target是没有label的,目的是通过学习使得学到的模型在target数据上表现性能不错的模型,那我们其实就是想学到更加invariant的特征。在UDA领域, 一般有个提feature的feature extractor,有个domain discriminator用来区分提的feature是属于source domain还是target domain,通过添加一个GRL层来做对抗学习,也就是,feature extractor想提出更好的特征,去欺骗domain discriminator, 而domain discriminator想优化自己努力去区分来的feature到底是来自source还是target,这样不断迭代优化, 最终feature extractor提的特征更具有欺骗性(也就是更加domain invariant,更加体现数据的共同本质),而domain discriminator的区分能力也更强。

【补充】SE adaptor

论文思想感觉就是将多个模型组合在一起,可以更好的完成多场景的检测任务。论文基于此思想,使用了多个SENet来实现通用目标检测,并且提出了Domain attention,这个attention机制应该是用来让模型适应不同的场景信息的机制。

(attention大法好,既能用在时空上加权,又能在通道上加权,现在还能在场景上加权)

插播:SENet 结构组成详解

上图是SE 模块的示意图。给定一个输入 x,其特征通道数为 c_1,通过一系列卷积等一般变换后得到一个特征通道数为 c_2 的特征。与传统的 CNN 不一样的是,接下来通过三个操作来重标定前面得到的特征。

  • 首先是 Squeeze 操作,顺着空间维度来进行特征压缩,将每个二维的特征通道变成一个实数,这个实数某种程度上具有全局的感受野,并且输出的维度和输入的特征通道数相匹配。它表征着在特征通道上响应的全局分布,而且使得靠近输入的层也可以获得全局的感受野,这一点在很多任务中都是非常有用的。
  • 其次是 Excitation 操作,它是一个类似于循环神经网络中门的机制。通过参数 w 来为每个特征通道生成权重,其中参数 w 被学习用来显式地建模特征通道间的相关性。
  • 最后是一个 Reweight 的操作,将 Excitation 的输出的权重看做是经过特征选择后的每个特征通道的重要性,然后通过乘法逐通道加权到先前的特征上,完成在通道维度上的对原始特征的重标定。

Squeeze操作,公式非常简单,就是一个global average pooling(也即将图片尺寸变为1*1):

因此公式2就将H*W*C的输入转换成1*1*C的输出,对应上图中的Fsq操作。为什么会有这一步呢?这一步的结果相当于表明该层C个feature map的数值分布情况,或者叫全局信息。

再接下来就是Excitation操作,如公式3。直接看最后一个等号,前面squeeze得到的结果是z,这里先用W1乘以z,就是一个全连接层操作,W1的维度是C/r * C,这个r是一个缩放参数,在文中取的是16,这个参数的目的是为了减少channel个数从而降低计算量。又因为z的维度是1*1*C,所以W1z的结果就是1*1*C/r;然后再经过一个ReLU层,输出的维度不变;然后再和W2相乘,和W2相乘也是一个全连接层的过程,W2的维度是C*C/r,因此输出的维度就是1*1*C;最后再经过sigmoid函数,得到s。

也就是说最后得到的这个s的维度是1*1*C,C表示channel数目。这个s其实是本文的核心,它是用来刻画tensor U中C个feature map的权重。而且这个权重是通过前面这些全连接层和非线性层学习得到的,因此可以end-to-end训练。这两个全连接层的作用就是融合各通道的feature map信息,因为前面的squeeze都是在某个channel的feature map里面操作。

在得到s之后,就可以对原来的tensor U操作了,就是下面的公式4。也很简单,就是channel-wise multiplication,什么意思呢?uc是一个二维矩阵,sc是一个数,也就是权重,因此相当于把uc矩阵中的每个值都乘以sc。

SENet 在具体网络中应用:

上左图是将 SE 模块嵌入到 Inception 结构的一个示例。方框旁边的维度信息代表该层的输出。

这里我们使用 global average pooling 作为 Squeeze 操作。紧接着两个 Fully Connected 层组成一个 Bottleneck 结构去建模通道间的相关性,并输出和输入特征同样数目的权重。我们首先将特征维度降低到输入的 1/16,然后经过 ReLu 激活后再通过一个 Fully Connected 层升回到原来的维度。这样做比直接用一个 Fully Connected 层的好处在于:1)具有更多的非线性,可以更好地拟合通道间复杂的相关性;2)极大地减少了参数量和计算量。然后通过一个 Sigmoid 的门获得 0~1 之间归一化的权重,最后通过一个 Scale 的操作来将归一化后的权重加权到每个通道的特征上。

除此之外,SE 模块还可以嵌入到含有 skip-connections 的模块中。上右图是将 SE 嵌入到 ResNet 模块中的一个例子,操作过程基本和 SE-Inception 一样,只不过是在 Addition 前对分支上 Residual 的特征进行了特征重标定。如果对 Addition 后主支上的特征进行重标定,由于在主干上存在 0~1 的 scale 操作,在网络较深 BP 优化时就会在靠近输入层容易出现梯度消散的情况,导致模型难以优化。

目前大多数的主流网络都是基于这两种类似的单元通过 repeat 方式叠加来构造的。由此可见,SE 模块可以嵌入到现在几乎所有的网络结构中。通过在原始网络结构的 building block 单元中嵌入 SE 模块,我们可以获得不同种类的 SENet。如 SE-BN-Inception、SE-ResNet、SE-ReNeXt、SE-Inception-ResNet-v2 等等。

[总结]SENet 构造非常简单,而且很容易被部署,不需要引入新的函数或者层。除此之外,它还在模型和计算复杂度上具有良好的特性。

PyTorch代码地址:github.com/miraclewkf/S

2019 GCNet(attention机制,目标检测backbone性能提升)论文阅读笔记:

2019 SSA-CNN(自注意力机制)目标检测算法论文阅读笔记:


英语短语:

mitigate:减轻,缓和

To this end, 为此

models suffer significant performance drop:模型性能显著下降

severely limits:严格限制

Poor adaptability to new domains severely limits the applicability and efficacy of these models.对新领域的适应性差严重限制了这些模型的适用性和有效性。

supervised domain adaptation (SDA):监督域适应

unsupervised domain adaptation (UDA):无监督域适应

loosely annotated:少数带注释的图像

Less data collection cost:减少数据收集成本

drastically mitigating:大大减轻

reduced significantly:显著减少

We further propose a strong regularization method, termed source model feature regularization (SMFR), to stabilize training and avoid overadaptation by imposing consistency between source and adapted models on feature response of foreground anchor locations.

我们进一步提出了一种强正则化方法(a strong regularization method),称为源模型特征正则化(SMFR),通过对前景锚定位置的特征响应施加源模型和自适应模型之间的一致性,来稳定训练,避免过度适应。

Our model significantly surpasses compared methods and outperforms state-of-art method using full target domain data.

我们的模型明显优于比较方法,并且优于使用全目标域数据的最新方法。

This problem is exacerbated(使恶化;使加剧;使加重) in applications。

###################################

【补充】从 CVPR 2019 一览小样本学习研究进展

通常情况下,在训练时你有许多可以使用的各类样本;然后,在测试时,你会面对新的类别(通常为 5 类),其中每个类别仅有极少量的样本(通常每类只有 1 个或 5 个样本,称为「支持集」),以及来自相同类别的查询图像。

  • 「Older」指的是基于度量学习的方法,其目标是学习一个从图像到嵌入空间的映射,在该空间中,同一类图像彼此间的距离较近,而不同类的图像距离则较远。我们希望这种性质适用于那些没有见过的类。
  • 在这之后,就到元学习方法了。这类模型建立在当前所面对的任务的基础上,因此使用不同的分类器作为支持集的函数。其思路是寻找模型的超参数和参数,这样一来在不对使用的小样本过拟合的条件下可以很容易地适应新的任务。

Meta-SSD:基于元学习的小样本目标检测:

相关代码:github.com/ztf-ucas/NIS

元学习,又名学会学习,即让机器学会如何学习,其利用已有的知识来指导新任务的学习,使机器具备学会学习的能力。整个元学习过程分为元训练和元测试阶段,元学习模型在一系列的小样本任务上进行训练,从而获取对新任务的泛化能力。如下图所示,与监督学习应用于相同类别的测试样本不同,元学习可有效应用于新类别的测试样本。

  • 与此同时,数据增强方法也十分流行。其思想是学习数据增强的方式,从而可以通过少量可用的样本生成更多的样本。
  • 最后,基于语义的方法正在逐渐兴起。这类方法受到了零样本学习(zero-shot learning)的启发,其中分类任务的完成仅仅基于类别的名称、文本描述或属性。当视觉信息稀缺时,这些额外的语义信息也可能很有用。

Few-shot Object Detection via Feature Reweighting

零样本目标检测

【附录】

Few-Shot Unsupervised Image-to-Image Translation


参考:

发布于 2020-02-14 21:32