Single-Domain Generalized Object Detection in Urban Scene via Cyclic-Disentangled Self-Distill阅读笔记

(一) 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} FbRw×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} FdiRw×h×c(DIR)和 F d s ∈ R w × h × c F_{d s} \in \mathbb{R}^{w \times h \times c} FdsRw×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} PRn×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=EDIR(Fds),Fs2s=EDSR(Fds)
    当再次经过Extractor之后,得到的 F i 2 i F_{i 2 i} Fi2i应该比 F d i F_{di} Fdi中包含更多的domain-invariant信息,并且 F d i F_{di} Fdi包含的domain-invariant信息要比 F i 2 s F_{i2s} Fi2s多,同理得到的 F s 2 s F_{s 2 s} Fs2s应该比 F d s F_{ds} Fds中包含更多的domain-specific信息,并且 F d s F_{ds} Fds包含的domain-specific信息要比 F s 2 i F_{s2i} Fs2i
  • 为此,本文定义了global- 以及 instance-level对比损失来约束两个Extractor:
    其中global-level的对比损失为:
    L g c = − ( log ⁡ exp ⁡ ( sim ⁡ ( F d i , F i 2 i ) / τ ) ∑ j = 0 1 exp ⁡ ( sim ⁡ ( F d i , G [ j ] ) / τ ) + log ⁡ exp ⁡ ( sim ⁡ ( F d s , F s 2 s ) / τ ) ∑ j = 0 1 exp ⁡ ( sim ⁡ ( F d s , D [ j ] ) / τ ) ) \begin{aligned} \mathcal{L}_{g c}=&-\left(\log \frac{\exp \left(\operatorname{sim}\left(F_{d i}, F_{i 2 i}\right) / \tau\right)}{\sum_{j=0}^{1} \exp \left(\operatorname{sim}\left(F_{d i}, G[j]\right) / \tau\right)}\right.\\ &\left.+\log \frac{\exp \left(\operatorname{sim}\left(F_{d s}, F_{s 2 s}\right) / \tau\right)}{\sum_{j=0}^{1} \exp \left(\operatorname{sim}\left(F_{d s}, D[j]\right) / \tau\right)}\right) \end{aligned} Lgc=(logj=01exp(sim(Fdi,G[j])/τ)exp(sim(Fdi,Fi2i)/τ)+logj=01exp(sim(Fds,D[j])/τ)exp(sim(Fds,Fs2s)/τ))
    这里 G = [ F i 2 i , F i 2 s ] , D = [ F s 2 s , F s 2 i ] . τ = 1 G=\left[F_{i 2 i}, F_{i 2 s}\right], D=\left[F_{s 2 s}, F_{s 2 i}\right] . \tau=1 G=[Fi2i,Fi2s],D=[Fs2s,Fs2i].τ=1表示超参数, sim ( a , b ) \text{sim}(a,b) sim(a,b)表示特征图 a , b a,b a,b所有元素之间余弦相似度的平均值,这个global-level损失的作用是增加 F i 2 i F_{i 2 i} Fi2i F i 2 s F_{i 2 s} Fi2s F s 2 i F_{s 2 i} Fs2i F s 2 s F_{s 2 s} Fs2s,以及 F d i F_{di} Fdi F d s F_{ds} Fds之间的差异,同时提升 F d i F_{di} Fdi F d s F_{ds} Fds分别提取Domain-invariant和Domain-Specific特征。
  • 此外,instance-level对比损失如下:
    L i c = − log ⁡ exp ⁡ ( sim ⁡ ( P , P i 2 i ) / τ ) ∑ j = 0 1 exp ⁡ ( sim ⁡ ( P , Q [ j ] ) / τ ) \mathcal{L}_{i c}=-\log \frac{\exp \left(\operatorname{sim}\left(P, P_{i 2 i}\right) / \tau\right)}{\sum_{j=0}^{1} \exp (\operatorname{sim}(P, Q[j]) / \tau)} Lic=logj=01exp(sim(P,Q[j])/τ)exp(sim(P,Pi2i)/τ)
    其中从 F d i F_{di} Fdi中获取到的Object Proposals P P P,在 F i 2 i F_{i2i} Fi2i F i 2 s F_{i2s} Fi2s上接着执行ROIAlignment操作,得到对应的输出 P i 2 i ∈ R n × s × s × c P_{i 2 i} \in \mathbb{R}^{n \times s \times s \times c} Pi2iRn×s×s×c P i 2 s ∈ R n × s × s × c P_{i 2 s} \in \mathbb{R}^{n \times s \times s \times c} Pi2sRn×s×s×c,这里 Q = [ P i 2 i , P i 2 s ] Q=\left[P_{i 2 i}, P_{i 2 s}\right] Q=[Pi2i,Pi2s],通过最小化 L i c \mathcal{L}_{i c} Lic,能够增加 F i 2 i F_{i2i} Fi2i F i 2 s F_{i2s} Fi2s之间的差异,并且帮助 P P P中获取到更多同domain-invariant相关的信息。
    最终的损失函数计算为:
    L c d = L g c + L i c \mathcal{L}_{c d}=\mathcal{L}_{g c}+\mathcal{L}_{i c} Lcd=Lgc+Lic

DIR-based Self-Distillation

  • 通过Cyclic-disentanglement module,能够得到Domain-invariant Representations, F d i F_{di} Fdi,将其作为教师特征,用来自蒸馏骨干特征,此时学生特征: F e 1 F_{e1} Fe1从骨干 E 1 E_1 E1输出, F e 2 F_{e2} Fe2从骨干 E 2 E_2 E2输出, F e 3 F_{e3} Fe3从骨干 E 3 E_3 E3输出,这里 F e 1 F_{e1} Fe1 F e 2 F_{e2} Fe2的size和通道数和 F d i F_{di} Fdi是不同的,而 F e 3 F_{e3} Fe3的size和通道数同 F d i F_{di} Fdi一样
  • 这里通过设计 T 1 , T 2 , T 3 T_1,T_2,T_3 T1,T2,T3来对 F e 1 F_{e1} Fe1 F e 2 F_{e2} Fe2 F e 3 F_{e3} Fe3进行变换,得到输出 F 1 ∈ R w × h × u , F 2 ∈ R w × h × v ,  and  F 3 ∈ R w × h × c F_{1} \in \mathbb{R}^{w \times h \times u}, F_{2} \in \mathbb{R}^{w \times h \times v}, \text { and } F_{3} \in \mathbb{R}^{w \times h \times c} F1Rw×h×u,F2Rw×h×v, and F3Rw×h×c,其中 u , v u,v u,v表示通道数。通过1x1卷积同 F d i F_{di} Fdi进行对齐。
  • 设计feature-level和classification-level约束来进行蒸馏,其中feature-level的约束为:
    L f c = dist ⁡ ( Φ 1 ( F 1 ) , F d i ) + dist ⁡ ( Φ 2 ( F 2 ) , F d i ) + dist ⁡ ( Φ 3 ( F 3 ) , F d i ) \begin{aligned} \mathcal{L}_{f c}=\operatorname{dist}\left(\Phi_{1}\left(F_{1}\right), F_{d i}\right) &+\operatorname{dist}\left(\Phi_{2}\left(F_{2}\right), F_{d i}\right) \\ &+\operatorname{dist}\left(\Phi_{3}\left(F_{3}\right), F_{d i}\right) \end{aligned} Lfc=dist(Φ1(F1),Fdi)+dist(Φ2(F2),Fdi)+dist(Φ3(F3),Fdi)
    其中 Φ 1 ∈ R 1 × 1 × u × c , Φ 2 ∈ R 1 × 1 × v × c , Φ 3 ∈ R 1 × 1 × c × c , d i s t ( ⋅ , ⋅ ) \Phi_{1} \in \mathbb{R}^{1 \times 1 \times u \times c}, \Phi_{2} \in \mathbb{R}^{1 \times 1 \times v \times c} , \Phi_{3} \in \mathbb{R}^{1 \times 1 \times c \times c},dist(\cdot,\cdot) Φ1R1×1×u×c,Φ2R1×1×v×c,Φ3R1×1×c×c,dist(,)表示距离函数,可以用L2-norm进行计算,
  • 对于classification-level约束,则是分别在 F 1 , F 2 , F 3 F_1,F_2,F_3 F1,F2,F3上进行 Roi-Alignment得到输出为 P 1 ∈ R n × s × s × u , P 2 ∈ R n × s × s × v , and  P 3 ∈ R n × s × s × c P_{1} \in \mathbb{R}^{n \times s \times s \times u}, P_{2} \in \mathbb{R}^{n \times s \times s \times v} \text {, and } P_{3} \in \mathbb{R}^{n \times s \times s \times c} P1Rn×s×s×u,P2Rn×s×s×v, and P3Rn×s×s×c,接着定义三个分类器,将 P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3输入得到输出概率 y 1 , y 2 , y 3 y_1,y_2,y_3 y1,y2,y3,而 y y y则是 F d i F_{di} Fdi输出的 P P P得到的概率值。class-level损失为:
    L c c = K L ( y , y 1 ) + K L ( y , y 2 ) + K L ( y , y 3 ) \mathcal{L}_{c c}=K L\left(y, y_{1}\right)+K L\left(y, y_{2}\right)+K L\left(y, y_{3}\right) Lcc=KL(y,y1)+KL(y,y2)+KL(y,y3)
    这里的损失能够帮助 F 1 , F 2 , F 3 F_1,F_2,F_3 F1,F2,F3 F d i F_{di} Fdi中得到类别相关的信息,
  • 最终的self-distillation损失为:
    L s d = L f c + L c c \mathcal{L}_{s d}=\mathcal{L}_{f c}+\mathcal{L}_{c c} Lsd=Lfc+Lcc

整个模型的最终损失为:
L = L r p n + L c l s + L l o c + λ ( L c d + L s d ) \mathcal{L}=\mathcal{L}_{r p n}+\mathcal{L}_{c l s}+\mathcal{L}_{l o c}+\lambda\left(\mathcal{L}_{c d}+\mathcal{L}_{s d}\right) L=Lrpn+Lcls+Lloc+λ(Lcd+Lsd)
其中 L r p n \mathcal{L}_{r p n} Lrpn表示RPN损失,用于区分前景和背景, L c l s , L l o c \mathcal{L}_{c l s},\mathcal{L}_{l o c} Lcls,Lloc分别表示类别损失和边界框回归损失, λ = 0.01 \lambda=0.01 λ=0.01表示超参数,最终输出是基于 F d i F_{di} Fdi的预测结果的。

(五) Experiment

实验设置

  • 使用mAP作为评价指标
  • 数据集daytime-sunny 场景从BDD100k中筛选出27708张图片,其中19395张图片用于训练,8313张图片用于测试。night-sunny场景从BDD100k中挑选了26158张图片,dusk-rainy和night-rainy场景使用最近提出的数据集,是对BDD100k中的下雨场景进行了渲染,分别包含了3501和2494张图片,daytime-foggy场景则是从FoggyCityscapes以及Adverse-Weather数据集中选取了3775张图片,在类别方面选取了7个常用类别
  • 实现细节:使用Faster R-CNN作为base detector,分别设计了包含三个卷积层的Extractor, E D I R E_{DIR} EDIR E D S R E_{DSR} EDSR,此外 T 1 , T 2 , T 3 T_1,T_2,T_3 T1,T2,T3均由三个卷积层组成,并采用了BN,使用SGD,动量0.9,权重衰减0.0001,学习率设置为1e-3,batch大小设置为4.

本文方法同SW,IBN-Net,IterNorm,ISW进行比较
Daytime-Sunny 在这里插入图片描述Night-Sunny在这里插入图片描述
Dusk-rainy在这里插入图片描述
Night-rainy
在这里插入图片描述
Daytime-foggy
在这里插入图片描述

(六) Notes

6.1 相关工作介绍

Domain Adaption Object Detection

  • 为了解决Domain shift问题,大多数的解决方法是将source domain和target domain的feature-level 特征进行对齐,主要采用的方法是利用对抗生成网络来将源域的样式转换成目标域的样式,通常需要同时获取源域和目标域的数据

Self-distillation 自蒸馏问题

  • 是在没有教师网络的情况下,利用自己的知识来训练有效的网络,两种常用的操作包括:基于数据增强的方式以及基于辅助网络的方式。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
泛化目标检测对于自动驾驶中的鱼眼摄像头:数据 泛化目标检测是指将模型从一种场景转移到另一种不同场景下的能力。在自动驾驶中,由于鱼眼摄像头的广角特性,它可以提供更广阔的视野范围,从而增强对道路上目标物体的感知能力。 要实现泛化目标检测,数据是至关重要的。首先,我们需要采集大量的鱼眼摄像头数据,以涵盖各种不同场景和驾驶条件,例如白天、夜间、不同天气条件以及不同道路类型。这些数据应该包括各种不同类型的目标物体,如车辆、行人和交通标志等。 为了增强泛化能力,数据应该覆盖多样性。我们需要在不同地理位置和城市之间进行数据采集,以捕捉不同地区的驾驶场景和道路条件。此外,还要注意在训练数据中包含一些较为罕见和复杂的场景,这样模型在遇到这些情况时也能够有效检测和处理。 在准备数据时,我们还需要考虑数据标注的准确性。由于目标检测需要标注每个图像中的目标位置和类别,对于鱼眼图像来说可能会更复杂。因此,在数据标注过程中需要使用专业工具和技术,确保目标物体的精确标注。 最后,为了提高数据的利用效率,可以使用数据增强技术来生成更多样性的训练样本。例如,可以通过旋转、扭曲和变换来生成具有不同角度和姿态的目标物体。 总结起来,泛化目标检测对于自动驾驶中的鱼眼摄像头需要大量多样性的数据。这些数据应该涵盖不同的场景、驾驶条件和地理位置。在数据准备和标注时,需要注意数据的准确性和多样性,以及使用数据增强技术来提高数据利用效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值