目标检测与域适应界核的一篇文章,非常有启发,CVPR2018作品,非常有趣。
1.全文综述
目标检测任务通常假设训练集与测试集从属于同一个分布,但是在实际情形中并不完全如此,这种分布上的差异会导致性能的下降与损失,本文旨在提高目标检测的跨域鲁棒性。作者从两个层面处理领域转移:1)图像级移动,如图像样式、光照等;2)实例级移动,如对象出现-亮度、大小等。我们基于最新的最先进faster R-CNN模型构建了我们的方法,并设计了两个主要的跨域自适应组件在图像级和实例级同时作用,以减少领域差异。这两个域自适应分量基于H散度理论,以对抗学习为途径来学习一个域分类器。以faster R-CNN模型为基础,通过一致性正则化进一步增强了不同层次的域分类器,学习了一个域不变区域建议网络(RPN)。
尽管目前深度学习为基础的CNN目标检测模型取得了卓越进展,现实世界中的目标检测仍然面临着视点、目标外观、背景、光照、图像质量等方面的巨大差异,这可能导致训练数据与测试数据之间存在较大的域差异。已经观察到这种域差异会导致性能的显著下降。虽然收集更多的培训数据可能会减轻领域转移的影响,但这并不简单,因为标注边界框是一个昂贵且耗时的过程。因此,开发一种算法,使目标检测模型适应与训练领域在视觉上不同的新领域,是非常必要的。
在本文的情境设置中,我们将源域设置为全监督的目标检测任务而目标域是无监督的目标检测任务。目的是在源域的数据集的帮助下实现目标域上性能的提升。基于Faster R-CNN框架提出了领域自适应Faster R-CNN,在像素以及实例层面上拉近两个域之间的H散度。
这篇文章的主要贡献如是:1)从概率的角度对跨域目标检测的域转移问题进行了理论分析。2)设计了两个域自适应组件,分别在在图像和实例级缓解域差异。3)进一步提出一种一致性正则化方法,使RPN保持域不变。4)将提出的组件集成到更快的R-CNN模型中,得到的系统可以端到端进行训练。
2.Faster R-CNN介绍
Faster R-CNN主要包括三个组件:共享底层卷积层、区域建议网络(RPN)和基于感兴趣区域(ROI)的分类器。首先,将输入图像表示为共享底层卷积层生成的卷积特征图。基于该特征图,RPN生成候选对象建议,然后由ROI-wise分类器从使用ROI-pooling得到的特征向量预测类别标签。训练损失由RPN的损失和ROI分类器的损失组成:
RPN分类器和ROI分类器的训练损失都有两个损失项:一个用于分类,即预测概率有多准确;另一个则是bbox的回归损失项,保证目标框尽可能的贴近ground-truth。
3.基于H散度的分布一致性度量
H散度与KL散度类似,用来度量不同域之间的分布差异,这里假设源域有标签,目标域无标签。源域的话预测为0,否则预测为1。散度用来定义两个域之间的差异性,其表达式为:
与分别是域预测器在源域与目标域的预测错误率,上述定义表明区域距离dH(S, T)与区域分类器h的错误率成反比。在深度神经网络中,特征向量x通常包含某一层后的激活量。我们用f表示产生x的网络,为了使两个域对齐,我们需要强制网络f输出特征向量,使域距离dH(S, T)最小化,得到:
这样就可以结合梯度反转层在深度神经网络里做对抗学习。
4.这篇文章的模型及训练步骤
根据领域适应中的常用设置,我们将训练数据的领域称为源领域,用S表示,将测试数据的领域称为目标领域,用T表示。例如,当使用Cityscapes数据集进行培训和KITTI数据集进行测试时,S是Cityscapes数据集,T表示KITTI数据集。
目标检测问题可以看作是学习后验P(C,B|I),其中I为图像表示,B是对象的边界框,C∈{1,…,K}对象的类别(K为类别总数)。即目标是在目标域上获得图像的具体表示后预测体重的目标对象的种类与边界框。
将用于目标检测的训练样本的联合分布表示为P(C,B, I),并使用P_s (C,B, I)和
P_t (C,B, I)分别表示源域联合分布和目标域联合分布。注意,这里我们使用P_t (C,B, I)来分析域转移问题,尽管边界框和类别注释(即,B和C)在训练中未知。当有定义域偏移时,P_s(C,B, I) ≠ P_t (C,B, I)。
本文的域适应包括两部分组成,一个是图片级别的域适应,一个是样例级别的域适应。
图片级别的域适应:
利用贝叶斯公式,可以将联合分布分解为:
P(C,B, I) = P(C,B|I)P(I).
与分类问题相似,我们对目标检测做协变量移位假设,即,两个域的条件概率P(C,B|I)相同,域分布偏移是由边际分布P(I)的差引起的。换句话说,检测器在两个域之间是一致的:给定一个图像,无论图像属于哪个域,检测结果都应该是相同的。在faster R-CNN模型中,图像表示I实际上是基本卷积层的feature map输出。因此,为了处理域转移问题,我们应该强制两个域的图像表示分布相同(即, PS(I) = PT (I)),称为图像级自适应。
样例级别的域适应:
同时,上面的联合分布P(C,B, I)也可以表示为第二种形式:
即如果两个域的图像级表示的分布相同,那么实例级表示的分布也相同,然而,完美地估计条件分布P(B|I)通常是不对等的。有两方面的原因:1)在实践中很难完全一致的边际分布P (I),这意味着输入估计P (B |I)是有偏见的,和2)边界框注释仅供源域训练数据,因此P (B|I) 只是学会了使用源域的数据,这是很容易偏向源域。
Y因此在这个问题上同时适配图像级和样例级的域差异是十分有必要的,要对齐两个域的分布,需要训练一个域分类器h(x)。在目标检测问题中,x可以是图像级表示I,也可以是实例级表示(B, I),从概率的角度来看,h(x)可以看作是估计一个样本x属于目标域的概率。
因此,把域标签定义为D,可以将图像级域分类器看作是估计P(D|I),实例级域分类器看作是估计P(D|B, I),利用贝叶斯定理得到:
5.域适应目标检测过程:
1.图片级别域适应:faster R-CNN模型的功能映射输出映像级别表示基本卷积的层(见图中的绿色平行四边形)。消除域分布不匹配在图像层次,我们使用了一个基于patch的域分类器来实现。
特别地,我们针对每个来自特征映射的激活训练一个域分类器。因为接受域激活对应输入图像的图像块,域分类器实际预测每个图像patch的域标签。这样做可以在图像整体上拉近域之间差异,我们用Di表示第i个训练图像的域标签,源域Di = 0,目标域Di = 1。我们表示φu, v (Ii)激活位于(u, v) i图像特征映射的基本卷积后层。将域分类器输出记为p(u,v) i,利用交叉熵损失,图像级自适应损失可表示为:
这里类比DaNN里面的训练方式,通过对抗训练提取域不变特征,不再赘述。
2.样例级别的域适应:实例级表示是指在输入最终类别分类器(即对齐实例层表示有助于减少本地实例之间的差异,如对象的外观、大小、视角等。与图像级自适应相似,我们训练了一个用于特征向量的域分类器来对齐样例级分布。我们将第i幅图像中第j个区域建议的样例级域分类器的输出表示为pi,j。样例级的适应损失现在可以写成
一致性正规化:强迫不同层次的分类器实现分类一致性有利于有助于学习边界框预测器的跨域鲁棒性。因此,我们进一步增加了一致性调整器。由于图像级域分类器为图像级表示I的每次激活生成一个输出,因此我们将图像中所有激活的平均值作为其图像级概率。一致性正则化器可表示为:
上图显示了我们的网络概况。我们用领域自适应组件扩展了更快的R-CNN基础架构,这导致了我们的领域自适应更快的R-CNN模型。图2的左边部分是原始的更快的R-CNN模型。底层的卷积层在所有组件之间共享。然后在上面构建RPN和ROI池层,然后是两个完全连接的层来提取实例级特性。在我们的领域中引入了三种新的自适应快速R-CNN组件。在最后一个卷积层之后添加图像级域分类器,在ROI-wise特征的末尾添加实例级域分类器。这两个分类器与一致性损失相关联,以鼓励RPN保持域不变。该网络的最终训练损失为各部分之和,可表示为
λ是一个超参数。可以使用标准的SGD算法以端到端方式对网络进行训练。注意,域适应组件的对抗性训练是通过使用GRL层实现的,它在传播过程中自动逆转梯度。在推理过程中,可以删除域自适应组件,只需使用具有自适应权重的原始更快的R-CNN体系结构。
6.实验
后面就是实验了,不多说了,大家可以自己去看~,效果很好就是了。