【第13篇】CenterNet2论文解析,COCO成绩最高56(1),字节跳动nlp算法工程师面试-程序员宅基地

技术标签: 2024年程序员学习  算法  面试  自然语言处理  

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

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



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

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

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

在 COCO (Lin et al., 2014)、LVIS (Gupta et al., 2019) 和 Objects365 (Shao et al., 2019) 上的实验表明,我们的概率两阶段框架将强大的 CascadeRCNN 模型的准确性提高了 1 -3 mAP,同时也提高了它的速度。 使用标准 ResNeXt-101-DCN 主干和 CenterNet (Zhou et al., 2019a) 第一阶段,我们的检测器在 COCO testdev 上达到了 50.2 mAP。 凭借强大的 Res2Net-101-DCN-BiFPN (Gao et al., 2019a; Tan et al., 2020b) 主干和自训练 (Zoph et al., 2020),它在单尺度测试中达到了 56.4 mAP,表现优于 所有已发表的结果。 使用小型 DLABiFPN 主干和较低的输入分辨率,我们在 Titan Xp 上以 33 fps 的速度在 COCO 上实现了 49.2 mAP,在相同硬件上的性能优于流行的 YOLOv4 模型(在 33 fps 时为 43.5 mAP)。 代码和模型发布在 https://github.com/xingyizhou/CenterNet2。

2、相关工作

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

一级检测器联合预测整个图像中密集的对象的输出类别和位置。 RetinaNet (Lin et al., 2017b) 对一组预定义的滑动锚框进行分类,并通过重新加权每个输出的损失来处理前景-背景不平衡。 FCOS (Tian et al., 2019) 和 CenterNet (Zhou et al., 2019a) 消除了每像素多个锚点的需要,并按位置对前景/背景进行分类。 ATSS (Zhang et al., 2020b) 和 PAA (Kim & Lee, 2020) 通过改变前景和背景的定义进一步改进了 FCOS。 GFL (Li et al., 2020b) 和 Autoassign (Zhu et al., 2020a) 将硬前景-背景分配更改为加权软分配。 AlignDet (Chen et al., 2019c) 在输出之前使用可变形卷积层来收集更丰富的特征用于分类和回归。 RepPoint (Yang et al., 2019) 和 DenseRepPoint (Yang et al., 2020) 将边界框编码为一组点的轮廓,并使用该点集的特征进行分类。 BorderDet (Qiu et al., 2020) 沿边界框汇集特征以更好地定位。大多数一级检测器都有合理的概率解释。

虽然一级探测器已经取得了有竞争力的性能(Zhang et al., 2020b; Kim & Lee, 2020; Zhang et al., 2019; Li et al., 2020b; Zhu et al., 2020a),但它们通常依赖于更重的探测器 将分类和回归分支分开而不是两阶段模型。 事实上,如果词汇量(即对象类集)很大(如在 LVIS 或 Objects365 数据集中),它们不再比它们的两阶段对应物快。 此外,一级检测器仅使用正细胞的局部特征进行回归和分类,有时会与对象错位(Chen 等,2019c;Song 等,2020)。

我们的概率两阶段框架保留了单阶段检测器的概率解释,但分解了多个阶段的概率分布,从而提高了准确性和速度。

两级探测器 首先使用区域提议网络 (RPN) 生成粗略的对象提议,然后使用专用的 per-region head 对它们进行分类和细化。 FasterRCNN(Ren 等人,2015 年;He 等人,2017 年)使用两个完全连接的层作为 RoI 头。 CascadeRCNN (Cai & Vasconcelos, 2018) 使用 FasterRCNN 的三个级联阶段,每个阶段都有不同的正阈值,以便后面的阶段更加关注定位精度。 HTC (Chen et al., 2019a) 利用额外的实例和语义分割注释来增强 CascadeRCNN 的阶段间特征流。 TSD (Song et al., 2020) 将每个 RoI 的分类和定位分支解耦。

在许多情况下,两级检测器仍然更准确(Gupta 等人,2019 年;Sun 等人,2020 年;Kuznetsova 等人,2018 年)。 目前,所有两阶段检测器都使用相对较弱的 RPN,最大限度地提高前 1K 个提案的召回率,并且在测试时不使用提案分数。 大量的提议减慢了系统的速度,基于召回的提议网络不直接提供与一级检测器相同的清晰概率解释。 我们的框架解决了这个问题,并将强大的与类别无关的单阶段目标检测器与后期的分类阶段相结合。 我们的第一阶段使用更少但质量更高的区域,从而产生更快的推理和更高的准确性。

其他探测器。 一系列物体检测器通过图像中的点识别物体。 CornerNet (Law & Deng, 2018) 检测左上角和右下角,并使用嵌入特征对它们进行分组。 ExtremeNet (Zhou et al., 2019b) 检测四个极值点 并使用额外的中心点将它们分组。 段等人。 (2019) 检测中心点并用它来改进角点分组。 Corner Proposal Net (Duan et al., 2020) 使用成对的角分组作为区域提议。 CenterNet (Zhou et al., 2019a) 检测中心点并从中回归边界框参数。

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。 虽然大多数现有的实时检测器都是单级的,但在这里我们展示了两级检测器可以与单级设计一样快,同时提供更高的精度。

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-lUvsq9I4-1713437392689)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_61044466/article/details/137932856

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签