(一) Title
论文来源CVPR2022
代码地址:https://github.com/AmingWu/Single-DGOD
(二) Summary
研究背景:
- 在本文中考虑的问题是Single-Domain Generalized Object Detection(Single-DGOD),Single-DGOD解决的是to learn a detector that performs well on many unseen target domains with only one source domain for training,也就是得到能够在不同domain下表现较好的检测器。
- 对于Single-DGOD问题,提取包含了目标内在特点的domain-invariant representation(DIR)是相当重要的。
主要工作:
- 提出cyclic-disentangled self-distillation,首先设计了一个cyclic-disentangled module 能够cyclically从输入图像特征中提取DIR,并通过循环操作来提升disentangled能力。
- 将DIR看成教师模型,设计了一个self-distillation模块来进一步提升泛化能力
实验结果:
在5种天气场景下相比于baseline都取得了性能上的gain,尤其是对于night-sunny场景,本文方法超出了baseline 3%。
(三) Problem Statement
当前目标检测任务通常假设的是训练集和测试集在同一个domain下,当domain发生变换时,就会产生poor generalization,由于domain-shift impact。
如何解决domain-shift impact问题呢?主要的工作集中在domain adaption以及domain generalization两种方法上。
- domain adaption(域自适应):将数据分布从source domain对齐到target domain,不过存在的两个问题:1.在训练过程中需要同时source和target数据.2.并且当target domain是多个不同的数据分布的混合时,这种方法的表现就比较差。
- Domain Generation(DG):从多个source domain中learning,接着将模型推广到一个unseen的target domain当中去,性能比较依赖source domain的数量,造成了这种方法同样也比较受限制。
为了对上述domain-shift问题进行研究,本文提出了一个问题:Single-Domain Generalization Object Detection(Single DGOD)问题,也就是给定一个场景,使在其上训练的模型能够在unseen target domain上有不错的表现,现有的Domain Generation方法在这个问题上没法得到较好的表现。
当domain-related annotations不能用的时候,如何从输入的图像特征中提取到Domain-invariant Representations(DIR)这个问题目前仍然没有得到很好地解决。
(四) Method
首先,本文设计了一个cyclic-disentangled method来获取DIR,如下图所示:
在循环的前向过程,分别设计了一个Domain-invariant Representations(DIR)和一个Domain-Specific Representations(DSR)提取器,从骨干的feature map中提取DIR和DSR,然后循环的后向过程则是将提取的DIR和DSR作为提取器的输入,再次进行提取。
- 这里可以假设DIR和DSR的提取效果很好,即输入 F d i F_{di} Fdi(DIR)到DIR提取器后能够输出更多地Domain-invariant 表示,同理输入 F d s F_{ds} Fds(DSR)到DSR提取器之后能够输出更多地Domain-Specific信息。接着最关键的来了,利用一个contrastive loss来约束该假设
- 此外,这里还探究了self-distillaiton,将DIR作为teacher representations,蒸馏集中在DIR和骨干输出的中间特征上,从而使得骨干提取的特征中包含了更多地domain-invariant 信息
这里的设计思想真的是很巧妙啊~~~~
主要的设计包括两个:cyclic-disentanglement以及self-distillaiton
Cyclic Disentanglement
- 使用Faster R-CNN作为基础的检测模型,将骨干ResNet101分成三个部分( E 1 , E 2 , E 3 E_1,E_2,E_3 E1,E2,E3),用于进行self-distillation,经骨干输出的特征图为 F b ∈ R w × h × c F_b \in \mathbf{R}^{w \times h \times c} Fb∈Rw×h×c,然后两个Extractor: E D I R E_{DIR} EDIR和 E D S R E_{DSR} EDSR分别用来提取 F d i ∈ R w × h × c F_{d i} \in \mathbb{R}^{w \times h \times c} Fdi∈Rw×h×c(DIR)和 F d s ∈ R w × h × c F_{d s} \in \mathbb{R}^{w \times h \times c} Fds∈Rw×h×c(DSR),即:
F d i = E D I R ( F b ) , F d s = E D S R ( F b ) F_{d i}=E_{\mathrm{DIR}}\left(F_{b}\right), \quad F_{d s}=E_{\mathrm{DSR}}\left(F_{b}\right) Fdi=EDIR(Fb),Fds=EDSR(Fb)
这里的 E D I R E_{DIR} EDIR和 E D S R E_{DSR} EDSR是由多个卷积层组成,接着在 F d i F_{di} Fdi上提取一组object proposals O O O,然后通过ROIAlign得到输出 P ∈ R n × s × s × c P \in \mathbb{R}^{n \times s \times s \times c} P∈Rn×s×s×c,其中 n n n表示proposals的数量, s s s表示proposal的大小,然后在re-disentanglement过程中将 F d i F_{di} Fdi和 F d s F_{ds} Fds作为输入:
F i 2 i = E D I R ( F d i ) , F i 2 s = E D S R ( F d i ) F s 2 i = E D I R ( F d s ) , F s 2 s = E D S R ( F d s ) \begin{array}{l} F_{i 2 i}=E_{\mathrm{DIR}}\left(F_{d i}\right), \quad F_{i 2 s}=E_{\mathrm{DSR}}\left(F_{d i}\right) \\ F_{s 2 i}=E_{\mathrm{DIR}}\left(F_{d s}\right), \quad F_{s 2 s}=E_{\mathrm{DSR}}\left(F_{d s}\right) \end{array} Fi2i=EDIR(Fdi),Fi2s=EDSR(Fdi)Fs2i=E