【第13篇】CenterNet2论文解析,Python入门零基础

DETR (Carion et al., 2020) 和 Deformable DETR (Zhu et al., 2020c) 移除了检测器中的密集输出,而是使用直接预测一组边界框的 Transformer (Vaswani et al., 2017)。

基于点的检测器、DETR 和传统检测器之间的主要区别在于网络架构。 基于点的检测器使用全卷积网络(Newell 等人,2016 年;Yu 等人,2018 年),通常具有对称的下采样和上采样层,并以小步幅(即步幅 4)生成单个特征图 . DETR 式检测器(Carion 等人,2020 年;Zhu 等人,2020c)使用变压器作为解码器。 传统的一级和二级检测器通常使用由轻量级上采样层增强的图像分类网络,并产生多尺度特征 (FPN) (Lin et al., 2017a)。

3、准备工作

=================================================================

对象检测器旨在为预定义的一组类 C 中的任何对象 i i i 预测位置 b i ∈ R 4 b_{i} \in \mathbb{R}^{4} bi​∈R4 和特定于类的似然分数 s i ∈ R ∣ C ∣ s_{i} \in \mathbb{R}^{|C|} si​∈R∣C∣。对象位置 b i b_{i} bi​ 通常由轴对齐的边界框的两个角来描述 (Ren 等人,2015;Carion 等人,2020)或通过等效的中心+大小表示(Tian 等人,2019;Zhou 等人,2019a;Zhu 等人,2020c)。 对象检测器之间的主要区别在于它们对类似然的表示,反映在它们的体系结构中。

**一级检测器(Redmon & Farhadi,2018;Lin 等,2017b;Tian 等,2019;Zhou 等,2019a)**在单个网络中联合预测对象位置和似然分数。让 L i , c = 1 L_{i,c}=1 Li,c​=1 表示对对象候选 i 和类别 c 的阳性检测,让 L i , c = 0 L_{i,c}=0 Li,c​=0 表示背景。大多数单阶段检测器(Lin et al ., 2017b; Tian et al., 2019;Zhou et al., 2019a) 然后使用每类独立的 sigmoid 将类似然参数化为伯努利分布: s i ( c ) = P ( L i , c = 1 ) = σ ( w c ⊤ f ⃗ i ) s_{i}©=P\left(L_{i, c}=1\right)=\sigma\left(w_{c}^{\top} \vec{f}_{i}\right) si​©=P(Li,c​=1)=σ(wc⊤​f ​i​),其中 f i ∈ R C f_{i} \in \mathbb{R}^{C} fi​∈RC 是主干产生的特征,wc 是特定于类的权重向量。在训练期间,这种概率解释允许单阶段检测器简单地最大化真实注释的对数似然 l o g ( P ( L i , c ) ) log(P(L_{i,c})) log(P(Li,c​)) 或焦点损失 (Lin et al., 2017b)。一级检测器在正 L ^ i , c = 1 \hat{L}_{i, c}=1 L^i,c​=1 和负 L ^ i , c = 0 \hat{L}_{i, c}=0 L^i,c​=0 样本的定义上彼此不同。有些使用锚点重叠(Lin 等人,2017b;Zhang 等人,2020b;Kim & Lee,2020),其他人使用位置(Tian 等人,2019)。然而,所有优化对数似然并使用类概率对框进行评分。所有直接回归到边界框坐标。

两级检测器(Ren 等人,2015 年;Cai & Vasconcelos, 2018) 首先使用对象性度量 P ( O i ) P(O_{i}) P(Oi​) 提取潜在的对象位置,称为对象提议。然后,他们为每个潜在对象提取特征,将它们分类为 C \mathcal{C} C 类或具有 C i ∈ C ∪ { b g } C_{i} \in \mathcal{C} \cup\{b g\} Ci​∈C∪{bg}的背景 P ( C i ∣ O i = 1 ) P\left(C_{i} \mid O_{i}=1\right) P(Ci​∣Oi​=1),并细化对象位置。每个阶段都是独立监督的。在第一阶段,区域提议网络 (RPN) 学习将带注释的对象 b i b_{i} bi​分类为前景,将其他框分类为背景。这通常通过使用对数似然目标训练的二元分类器来完成。然而,RPN 非常保守地定义了背景区域。任何与注释对象重叠 30% 或更多的预测都可以被视为前景。这个标签定义有利于召回而不是精确和准确的似然估计。许多部分对象获得了很大的建议分数。在第二阶段,softmax 分类器学习将每个建议分类为前景类或背景之一。分类器使用对数似然目标,前景标签由带注释的对象组成,背景标签来自高分的第一阶段建议,附近没有带注释的对象。在训练期间,这种分类分布隐含地以第一阶段的阳性检测为条件,因为它只对它们进行训练和评估。第一阶段和第二阶段都有概率解释,在正负定义下分别估计对象或类的对数似然。但是,整个检测器没有。它结合了多种启发式和采样策略来独立训练第一和第二阶段(Cai & Vasconcelos, 2018; Ren et al., 2015)。最终输出仅包含第二阶段的分类分数 s i ( c ) = P ( C i ∣ O i = 1 ) s_{i}©=P\left(C_{i} \mid O_{i}=1\right) si​©=P(Ci​∣Oi​=1)的框。

接下来,我们开发了两阶段检测器的简单概率解释,将两个阶段视为单个类似然估计的一部分。 我们展示了这如何影响第一阶段的设计,以及如何有效地训练两个阶段。

4、两阶段检测的概率解释

=======================================================================

对于每张图像,我们的目标是生成一组 K 个检测作为边界框 b 1 , … , b K b_{1}, \ldots, b_{K} b1​,…,bK​ 具有相关的类分布 s k ( c ) = P ( C k = c ) s_{k}©=P\left(C_{k}=c\right) sk​©=P(Ck​=c) 用于类 c ∈ C ∪ { b g } c \in \mathcal{C} \cup\{b g\} c∈C∪{bg}或每个对象 k 的背景。 在这项工作中,我们保持边界框回归不变,只关注类分布。 两阶段检测器将此分布分解为两部分:与类别无关的对象似然 P ( O k ) P(O_{k}) P(Ok​)(第一阶段)和条件分类 P ( C k ∣ O k ) P(C_{k}|O_{k}) P(Ck​∣Ok​)(第二阶段)。 这里 O k = 1 O_{k}=1 Ok​=1 表示第一阶段的阳性检测,而 O k = 0 O_{k}=0 Ok​=0对应于背景。 任何负面的第一阶段检测 O k = 0 O_{k}=0 Ok​=0 都会导致背景 C k = b g C_{k}=bg Ck​=bg 分类: P ( C k = b g ∣ O k = 0 ) = 1 P(C_{k}=bg|O_{k}=0)=1 P(Ck​=bg∣Ok​=0)=1。在多阶段检测器中 (Cai & Vasconcelos, 2018),分类由集成完成 多个级联级,而两级检测器使用单个分类器(Ren 等人,2015 年)。 两阶段模型的联合类分布为 :

P ( C k ) = ∑ o P ( C k ∣ O k = o ) P ( O k = o ) P\left(C_{k}\right)=\sum_{o} P\left(C_{k} \mid O_{k}=o\right) P\left(O_{k}=o\right) P(Ck​)=o∑​P(Ck​∣Ok​=o)P(Ok​=o)

训练目标。 我们使用最大似然估计训练我们的检测器。 对于带注释的对象,我们最大化

log ⁡ P ( C k ) = log ⁡ P ( C k ∣ O k = 1 ) + log ⁡ P ( O k = 1 ) \log P\left(C_{k}\right)=\log P\left(C_{k} \mid O_{k}=1\right)+\log P\left(O_{k}=1\right) logP(Ck​)=logP(Ck​∣Ok​=1)+logP(Ok​=1)

减少第一和第二阶段的独立最大似然目标。

对于背景类,最大似然目标不分解:

log ⁡ P ( b g ) = log ⁡ ( P ( b g ∣ O k = 1 ) P ( O k = 1 ) + P ( O k = 0 ) ) \log P(b g)=\log \left(P\left(b g \mid O_{k}=1\right) P\left(O_{k}=1\right)+P\left(O_{k}=0\right)\right) logP(bg)=log(P(bg∣Ok​=1)P(Ok​=1)+P(Ok​=0))

该目标将第一阶段和第二阶段的概率估计与损失和梯度计算联系起来。 准确的评估需要对所有第一阶段输出的第二阶段进行密集评估,这会大大减慢训练速度。 相反,我们推导出了目标的两个下限,我们共同优化了它们。 第一个下限使用 Jensen 不等式 l o g ( a x 1 + ( 1 − a ) x 2 ) ≥ a l o g ( x 1 ) + ( 1 − a ) l o g ( x 2 ) log(ax_{1}+(1-a)x_{2})\geq alog(x_{1})+(1-a)log(x_{2}) log(ax1​+(1−a)x2​)≥alog(x1​)+(1−a)log(x2​)其中 a = P ( O k = 1 ) , a=P(O_{k}=1), a=P(Ok​=1), x 1 = P ( b g ∣ O k = 1 ) x_{1}=P(bg|O_{k}=1) x1​=P(bg∣Ok​=1),并且 x 2 = 1 x_{2}=1 x2​=1:

log ⁡ P ( b g ) ≥ P ( O k = 1 ) log ⁡ ( P ( b g ∣ O k = 1 ) ) \log P(b g) \geq P\left(O_{k}=1\right) \log \left(P\left(b g \mid O_{k}=1\right)\right) logP(bg)≥P(Ok​=1)log(P(bg∣Ok​=1))

对于第一阶段的任何高分对象,该下限最大化第二阶段背景的对数似然。 对于 P ( O k = 1 ) → 0 P\left(O_{k}=1\right) \rightarrow 0 P(Ok​=1)→0或者 P ( b g ∣ O k = 1 ) → 1 P\left(bg|O_{k}=1\right) \rightarrow 1 P(bg∣Ok​=1)→1来说很严格,但可以任意松 P ( O k = 1 ) > 0 P\left(O_{k}=1\right) > 0 P(Ok​=1)>0 和 P ( b g ∣ O k = 1 ) → 0 P\left(bg|O_{k}=1\right) \rightarrow 0 P(bg∣Ok​=1)→0. 我们的第二个界限只涉及第一阶段的目标:

log ⁡ P ( b g ) ≥ log ⁡ ( P ( O k = 0 ) ) \log P(b g) \geq \log \left(P\left(O_{k}=0\right)\right) logP(bg)≥log(P(Ok​=0))

它使用 具有log单调性的 P ( b g ∣ O k = 1 ) P ( O k = 1 ) ≥ 0 P\left(b g \mid O_{k}=1\right) P\left(O_{k}=1\right) \geq 0 P(bg∣Ok​=1)P(Ok​=1)≥0 。 这个界限对于 $P\left(b g \mid O_{k}=1\right) \rightarrow 0 $ 来说很严格. 理想情况下,通过使用等式(3)和等式(4)的最大值获得最紧密的界限。 如补充材料所示,该下限在实际目标的≤ log 2 以内。 然而,在实践中,我们发现联合优化两个边界可以更好地工作。

使用下界方程(4)和正目标方程(2),第一阶段训练减少到最大似然估计,在注释对象上带有正标签,所有其他位置带有负标签。 它相当于训练一个二元单级检测器,或者一个带有严格负定义的 RPN,它鼓励似然估计而不是召回。

探测器设计。 我们的公式和标准的两阶段检测器之间的主要区别在于在检测分数方程(1)中使用了与类别无关的检测 P ( O k ) P(O_{k}) P(Ok​)。 在我们的概率形式中,分类分数乘以与类别无关的检测分数。 这需要一个强大的第一阶段检测器,它不仅可以最大化提案召回率(Ren 等人,2015 年;Uijlings 等人,2013 年),而且还可以预测每个提案的可靠对象可能性。 在我们的实验中,我们使用强大的单级检测器来估计这种对数似然,如 下一节。

5、 构建一个概率两级检测器

=========================================================================

概率两级检测器的核心组件是强大的第一级。 第一阶段需要预测准确的对象可能性,以告知整体检测分数,而不是最大化对象覆盖范围。 我们基于流行的单级检测器对四种不同的第一级设计进行了实验。 对于每个,我们强调了将它们从单级检测器转换为概率两级检测器中的第一级所需的设计选择。

RetinaNet(Lin 等人,2017b) 与传统两级检测器的 RPN 非常相似,但具有三个关键区别:更重的头部设计(RPN 中的 4 层与 1 层)、更严格的正负锚定定义以及焦点损失。 这些组件中的每一个都增加了 RetinaNet 产生校准的单阶段检测可能性的能力。 我们在第一阶段的设计中使用了所有这些。 RetinaNet 默认使用两个独立的 head 来进行边界框回归和分类。 在我们的第一阶段设计中,我们发现为两个任务使用一个共享头就足够了,因为对象或非对象分类更容易并且需要更少的网络容量。 这加快了推理 。

CenterNet (Zhou et al., 2019a) 将对象作为位于其中心的关键点,然后回归到框参数。原始的 CenterNet 在单一尺度上运行,而传统的两级检测器使用特征金字塔 (FPN)(Lin 等人,2017a)。我们使用 FPN 将 CenterNet 升级到多个尺度。具体来说,我们使用 RetinaNetstyle ResNet-FPN 作为主干(Lin 等人,2017b),输出特征图从 8 到 128(即 P3-P7)。我们将 4 层分类分支和回归分支 (Tian et al., 2019) 应用于所有 FPN 级别,以生成检测热图和边界框回归图。在训练期间,我们在固定的分配范围内根据对象大小将地面实况中心注释分配给特定的 FPN 级别(Tian 等人,2019)。受 GFL (Li et al., 2020b) 的启发,我们在中心的 3 × 3 邻域中添加了已经产生高质量边界框(即回归损失 < 0:2)的位置作为正例。我们使用到边界的距离作为边界框表示(Tian 等人,2019),并使用 gIoU 损失进行边界框回归(Rezatofighi 等人,2019 年)。我们评估了该架构的单阶段和概率两阶段版本。我们将改进后的 CenterNet 称为 CenterNet*。

ATSS (Zhang et al., 2020b) 使用每个对象的自适应 IoU 阈值对单级检测器的类似然进行建模,并使用中心度 (Tian et al., 2019) 来校准分数。 在概率两阶段基线中,我们按原样使用 ATSS(Zhang 等人,2020b),并将每个提议的中心度和前景分类分数相乘。 我们再次合并分类头和回归头以获得轻微的加速。

GFL (Li et al., 2020b) 使用回归质量来指导对象似然训练。 在概率两阶段基线中,我们删除了基于集成的回归,仅使用基于距离的回归(Tian 等人,2019)来保持一致性,并再次合并两个头部。

上述单阶段架构推断 P(Ok)。 对于每个,我们将它们与推断 P ( C k ∣ O k ) P(C_{k}|O_{k}) P(Ck​∣Ok​) 的第二阶段结合起来。 我们试验了两个基本的第二阶段设计:FasterRCNN(Ren 等人,2015 年)和 CascadeRCNN(Cai 和 Vasconcelos,2018 年)。

超参数。两阶段检测器 (Ren et al., 2015) 通常使用 FPN 级别 P2-P6(步长 4 到步长 64),而大多数单阶段检测器使用 FPN 级别 P3-P7(步长 8 到步长 128)。为了使其兼容,我们对一级和二级探测器使用 P3-P7 级。此修改略微改进了基线。遵循 Wang 等人(2019),我们将第二阶段的正 IoU 阈值从 0.5 增加到 0.6(对于 CascadeRCNN 为 0.6;0.7;对于 CascadeRCNN),以补偿第二阶段的 IoU 分布变化。我们在第二阶段最多使用 256 个提议框用于概率两级检测器,除非另有说明,否则基于 RPN 的模型使用默认的 1K 框。我们还将概率检测器的 NMS 阈值从 0.5 增加到 0.7,因为我们使用的提议较少。这些超参数变化对于概率检测器是必要的,但我们发现它们在我们的实验中并没有改进基于 RPN 的检测器。

我们基于detectron2 (Wu et al., 2019) 实现了我们的方法。我们的默认模型遵循检测器 2 中的标准设置(Wu 等人,2019)。具体来说,我们使用 SGD 优化器训练网络进行 90K 次迭代(1xschedule)。两级检测器的基本学习率为 0.02,一级检测器的基本学习率为 0.01,并在迭代 60K 和 80K 时下降 10 倍。我们使用多尺度训练,短边在 [640,800] 范围内,长边高达 1333。在训练期间,我们将第一阶段的损失权重设置为 0.5,因为一级检测器通常使用学习率进行训练0.01。在测试过程中,我们使用固定短边 800 和长边 1333。

我们在四个不同的主干上实例化了我们的概率两阶段框架。我们使用默认的 ResNet-50 (He et al., 2016) 模型进行设计选择之间的大多数消融和比较,然后与使用相同大型 ResNeXt-32x8d-101-DCN (Xie et al., 2017) 主干,并使用轻量级 DLA (Yu et al., 2018) 主干作为实时模型。我们还整合了最新进展(Zoph 等人,2020;Tan 等人,2020b;Gao 等人,2019a)并为高精度机制设计了一个超大型主干。关于每个主干的更多细节在补充中。

6、结果

===============================================================

我们在三个大型检测数据集上评估我们的框架:COCO (Lin et al., 2014)、LVIS (Gupta et al., 2019) 和 Objects365 (Gao et al., 2019b)。 每个数据集的详细信息可以在补充中找到。 我们使用 COCO 进行消融研究并与最先进的技术进行比较。 我们使用 LVIS 和 Objects365 来测试我们框架的通用性,特别是在大词汇量的情况下。 在所有数据集中,我们报告标准 mAP。 运行时报告在带有 PyTorch 1.4.0 和 CUDA 10.1 的 Titan Xp GPU 上。

image-20210924153927555

表 1 将一级和二级检测器与通过我们的框架设计的相应概率二级检测器进行了比较。 表的第一块显示了原始参考两级检测器 FasterRCNN 和 CascadeRCNN 的性能。 以下块显示了四个单级检测器(在第 5 节中讨论)和相应的概率两级检测器的性能,当使用相应的单级检测器作为概率两级框架中的第一级时获得。 对于每个一级检测器,我们展示了两种版本的概率二级模型,一种基于 FasterRCNN,一种基于 CascadeRCNN。

所有概率两级检测器的性能都优于它们的单级和两级前体。 每个概率两阶段 FasterRCNN 模型在 mAP 中比其单阶段前体提高了 1 到 2 个百分点,并且在 mAP 中比原始的两阶段 FasterRCNN 高出 3 个百分点。 更有趣的是,由于头部设计更精简,每个两阶段概率 FasterRCNN 都比其单阶段前体更快。 由于更有效的 FPN 级别(P3-P7 与 P2-P6)以及概率检测器使用更少的提议(256 与 1K),许多概率两阶段 FasterRCNN 模型比原始两阶段 FasterRCNN 模型更快。 我们观察到与 CascadeRCNN 模型类似的趋势。

CascadeRCNN-CenterNet 设计在这些概率两阶段模型中表现最好。 因此,我们在接下来的实验中采用这种基本结构,为简洁起见,将其称为 CenterNet2。

image-20210924154535228

实时模型。 表 2 将我们的实时模型与其他实时检测器进行了比较。 CenterNet2 在具有相同主干和训练计划的情况下以 1:6 mAP 优于 realtime-FCOS (Tian et al., 2020),并且仅慢了 4 毫秒。 使用相同的基于 FCOS 的主干和更长的训练计划(Tan 等人,2020b;Bochkovskiy 等人,2020 年),它比原始的 CenterNet(Zhou 等人,2019a)提高了 7.7 的 mAP,并且轻松胜过 流行的 YOLOv4(Bochkovskiy 等人,2020)和 EfficientDetB2(Tan 等人,2020b)检测器在 40 fps 下具有 45.6 mAP。使用略有不同的 FPN 结构并结合自我训练(Zoph 等人,2020 年) ),CenterNet2 以 33 fps 获得 49.2 mAP。 虽然大多数现有的实时检测器都是单级的,但在这里我们展示了两级检测器可以与单级设计一样快,同时提供更高的精度。

image-20210924155455180

**最先进的比较。**表 3 将我们的大型模型与 COCO test-dev 上的最新检测器进行了比较。使用“标准”大型主干 ResNeXt101-DCN,CenterNet2 实现了 50.2 mAP,优于具有相同主干的所有现有模型,包括一级和两级。请注意,CenterNet2 在 mAP 中比具有相同主干的相应 CascadeRCNN 模型高 1.4 个百分点。这再次突出了概率论的好处 处理两阶段检测。

为了推动目标检测的最新技术,我们进一步切换到更强大的主干 Res2Net(Gao 等,2019a)和 BiFPN(Tan 等,2020b),更大的输入分辨率(1280 × 1280 in训练和 1560 × 1560 测试),并在未标记的 COCO 上进行了大量增产(比例为 0.1 到 2)(Tan 等人,2020b),以及更长的时间表(8 倍)和自我训练(Zoph 等人,2020 年)图片。我们的最终模型使用单个模型实现了 56.4 mAP,优于文献中所有已发表的数字。关于超大模型的更多细节可以在补充中找到。

6.1 消融研究


image-20210924155521441

从 FasterRCNN-RPN 到 FasterRCNN-RetinaNet。 表 4 显示了从默认 RPN-FasterRCNN 到以 RetinaNet 作为第一阶段的概率两阶段 FasterRCNN 的详细路线图。 首先,切换到 RetinaNet-style FPN 已经带来了有利的改进。 但是,这里直接乘以第一阶段概率并没有带来改进,因为原始 RPN 很弱,无法提供适当的似然。 通过添加层使 RPN 更强,可以在第二阶段使用更少的提议,但不会提高准确性。 切换到 RetinaNet 损失(更严格的 IoU 阈值和焦点损失),提案质量得到提高,比原始 RPN 损失提高了 0.5 mAP。 通过改进的建议,在我们的概率框架中加入第一阶段的分数可以显着将准确率提高到 40.4mAP。

image-20210924155751151

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

mg.cn/97c454a3e5b4439b8600b50011cc8fe4.png)

在这里插入图片描述

简历模板在这里插入图片描述
  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值