当前位置: 首页 > news >正文

Tied Block Convolution: 具有共享较薄滤波器的更简洁、更出色的CNN

摘要

https://arxiv.org/pdf/2009.12021.pdf
卷积是卷积神经网络(CNN)的主要构建块。我们观察到,随着通道数的增加,优化后的CNN通常具有高度相关的滤波器,这降低了特征表示的表达力。我们提出了Tied Block Convolution(TBC),它在等量的通道块上共享相同的较薄的滤波器,并使用单个滤波器生成多个响应。TBC的概念也可以扩展到组卷积和全连接层,并且可以应用于各种骨干网络和注意力模块。

我们在分类、检测、实例分割和注意力等方面进行了广泛的实验,结果表明,与传统的卷积和组卷积相比,TBC在各方面都取得了显著的增益。我们提出的TiedSE注意力模块甚至可以使用比SE模块少64倍的参数来实现相当的性能。特别地,标准的CNN往往在有遮挡的情况下无法准确地聚合信息,导致产生多个冗余的部分对象提议。通过跨通道共享滤波器,TBC减少了相关性,并可以有效地处理高度重叠的实例。当遮挡比为80%时,TBC将MS-COCO对象检测的平均精度提高了6%。我们的代码将会公开。

引言

卷积是卷积神经网络(CNN)的主要构建块,这些网络在图像分类(Krizhevsky、Sutskever和Hinton 2012;He等人2016;Xie等人2017;Simonyan和Zisserman 2014)、物体检测(Girshick 2015;Ren等人2015;He等人2017)、图像分割(Kirillov等人2019;Long、Shelhamer和Darrell 2015;Chen等人2017,2018)和动作识别(Ji等人2012;Wang等人2016;Carreira和Zisserman 2017;Wang等人2018)等任务中取得了广泛的成功。然而,标准的卷积在计算、存储和内存访问方面仍然成本高昂。更重要的是,优化后的CNN通常会发展出高度相关的滤波器。
在这里插入图片描述

我们可以使用一组ImageNet图像的引导反向传播模式(Springenberg等人2014)的余弦相似度来评估标准卷积(SC)中滤波器对的相似性。图1显示,随着层深度的增加,滤波器的相关性也增加。也就是说,从早到晚的层中,滤波器变得更相似,降低了特征表示的表达力。

如何优化具有较少冗余的CNN一直是研究的重点(Howard等人2017;Zhang等人2018;Ma等人2018;Xie等人2017),通常是通过探索跨空间和通道维度的依赖关系来实现。在标准卷积(SC)中,虽然每个滤波器在空间上的大小有限,但它会扩展到完整的输入特征集,而在组卷积(GC)(Krizhevsky、Sutskever和Hinton 2012)中,滤波器只与输入特征的一个子集进行卷积。因此,如果有B组输入特征,每个GC层通过将每个滤波器的大小减少B倍来减少参数数量B倍。深度卷积(DW)是GC的一个极端情况,其中每个组只包含一个通道,从而最大限度地减少了参数数量。

虽然组卷积(GC)和深度卷积(DW)在减小模型大小方面很有效,但它们没有研究滤波器之间的相关性,并且它们的孤立表示无法捕获跨通道关系。与GC和DW中通过减小每个滤波器的大小来消除冗余不同,我们通过探索每个滤波器的潜力来探索另一种消除冗余的方法。直接减少滤波器的数量会降低模型容量(He等人2016)。然而,由于SC滤波器变得相似(图1),我们可以通过在不同的特征组之间重用它们来减少有效滤波器的数量。我们提出了一种名为Tied Block Convolution(TBC)的简单替代方案:我们将C个输入特征通道分成B个相等的块,并使用仅定义在 C B \frac{C}{B} BC个通道上的单个块滤波器来产生B个响应。图2显示,一个SC滤波器跨越整个C通道,而在B=2时,我们的TBC仅跨越 C 2 \frac{C}{2} 2C个通道,但它也产生2个滤波器响应。TBC是跨组共享的GC,当B=1时,TBC简化为SC。通过将此概念扩展到全连接层和组卷积层,可以直接得到Tied Block Group Convolution(TGC)和Tied Block Fully Connected Layer(TFC)。
在这里插入图片描述

我们的TBC更有效地利用了每个滤波器、内存访问和样本。1)在B=2时,TBC使用了一个减半大小的薄滤波器来获得相同数量的响应,接近相同大小的SC输出,但模型大小减少了4倍。2)由于相同的薄滤波器被应用于每个B块,TBC通过利用GPU并行处理更有效地进行内存访问。3)由于每个薄滤波器在B倍的更多样本上进行训练,学习也变得更加有效。4)由于每组TBC滤波器都应用于所有输入通道,TBC可以跨通道聚合全局信息,并更好地建模跨通道依赖关系。

虽然TBC在理论上似乎是一个吸引人的概念,但我们能否在实践中证明其相对于SC或GC的优势将严重依赖于神经网络架构。我们将TBC/TGC/TFC应用于各种骨干网络,包括ResNet(He等人2016)、ResNeXt(Xie等人2017)、SENet(Hu、Shen和Sun 2018)和ResNeSt(Zhang等人2020),并提出了它们的绑定版本:TiedResNet、TiedResNeXt、TiedSENet和TiedResNeSt。我们对分类、检测、分割和注意力进行了广泛的实验,这些实验表明TBC/TGC/TFC在标准卷积、组卷积和全连接层上的全面性能都有显著提升。例如,图6显示了TiedResNet始终优于ResNet、ResNeXt和HRNetV2(Wang等人2019),并且模型更精简。在各种框架、任务和数据集中也获得了类似的性能提升和模型简化。

最后,学到的滤波器冗余不仅会在膨胀的尺寸下降低模型容量,还会使CNN无法捕获多样性,从而导致性能较差。对于MS-COCO上的目标检测,标准CNN往往无法准确定位目标对象区域并从前景中汇总有用信息。因此,存在多个重叠的部分对象建议,导致无法从建议池中产生单个完整对象建议。TiedResNet可以更好地处理高重叠实例,并在遮挡比为0.8时将平均精度(AP)提高6%,将IoU = 0.75时的A P提高8.3%。

相关工作

骨干网络。AlexNet(Krizhevsky,Sutskever和Hinton 2012)是在ILSVRC竞赛中首次取得显著精度提升的CNN。然而,较大的内核和全连接层极大地增加了模型的大小。使用较小的内核,GoogleNet(Szegedy等人,2015)和VGGNet(Simonyan和Zisserman 2014)仅需要比(Krizhevsky,Sutskever和Hinton 2012;Zeiler和Fergus 2014)少12倍的参数就能取得更好的性能。然而,网络深度过大会导致梯度消失问题,这在ResNet(He等人,2016)中的残差连接设计中得到了解决。由于模型的深度不再是问题,研究人员开始探索如何更有效地使用参数。在具有可比模型复杂性的情况下,ResNeXt(Xie等人,2017)在许多主要任务中优于ResNet,这主要是由于使用了高效的组卷积。通过精心设计架构,HRNetV2(Wang等人,2019)在多个主要任务上实现了最先进的性能。与这些使用GC或SC的工作相比,我们的TBC进一步发挥了每个更薄滤波器的全部潜力。我们在后面的部分中提供了与这些网络的比较。

分组卷积。组卷积(GC)(Krizhevsky,Sutskever和Hinton 2012)旨在消除滤波器冗余。由于每个GC滤波器仅与其组内的特征进行卷积,具有相同数量的通道,因此该机制可以通过因子B减少每层的参数数量,其中B是组的数量。当组的数量与输入特征的数量相同时,GC变得与深度卷积(DW)(Howard等人,2017)相同。GC和DW都通过减小每个滤波器的大小来极大地减少模型冗余。然而,它们从未研究过(学习的)滤波器之间的相关性。

由于GC和DW中的每个滤波器仅对部分输入特征图进行响应,因此在GC中损害了跨通道维度融入全局信息的能力,而在DW中则完全丧失了这种能力。相比之下,我们的TBC滤波器在所有输入通道之间是共享的,并且可以聚合长距离依赖关系。这种机制还带来了另一个好处,即我们的TBC只有一个碎片。因此,TBC可以充分利用GPU的强大并行计算能力。

注意力模块。(Hu,Shen和Sun 2018)引入了squeeze-and-excitation(SE)模块,以自适应地重新校准通道特征响应。(Cao等人,2019)将SE和非局部(Wang等人,2018)模块统一到一个全局上下文块(GCB)中。虽然SE和GCB相对较轻,但SE(GCB)仍占模型大小的10%(25%)。我们的绑定块卷积和绑定全连接层可以集成到各种注意力模块中,并显着减少参数数量:对于SE,2.53 M对比0.04 M;对于GCB,10 M对比2.5 M。

Tied Block Convolution 网络设计

我们首先分析TBC和TGC来指导我们的网络设计。我们还开发了TFC并将其应用于注意力模块。

TBC公式化

让我们将输入特征表示为 X ∈ R c i × h i × w i X \in \mathbb{R}^{c_{i} \times h_{i} \times w_{i}} XRci×hi×wi,将输出特征表示为 X ~ ∈ R c o × h o × w o \tilde{X} \in \mathbb{R}^{c_{o} \times h_{o} \times w_{o}} X~Rco×ho×wo,其中 (c, h, w) 分别是特征映射的通道数、高度和宽度。为了清晰起见,我们忽略了偏置项。卷积核的大小为 k × k k \times k k×k

标准卷积,用 ( * ) 表示,可以公式化为:

X ~ = X ∗ W \tilde{X}=X * W X~=XW
Group Convolution first divides input feature X into G equal-sized groups X_{1}, \ldots, X_{G} with size c_{i} / G \times h_{i} \times w_{i} per group. Each group shares the same convolutional filters W_{g} . The output of GC is computed as:

其中, W ∈ R c o × c i × k × k W \in \mathbb{R}^{c_{o} \times c_{i} \times k \times k} WRco×ci×k×k是空间卷积SC的卷积核。因此,空间卷积(SC)的参数数量为: c o × c i × k × k c_{o} \times c_{i} \times k \times k co×ci×k×k

分组卷积首先将输入特征X分成 G 个大小相等的组 X 1 , … , X G X_{1}, \ldots, X_{G} X1,,XG,每组的大小为 c i / G × h i × w i c_{i} / G \times h_{i} \times w_{i} ci/G×hi×wi。每个组共享相同的卷积滤波器 W g W_{g} Wg。分组卷积的输出计算如下:
X ~ = X 1 ∗ W 1 ⊕ X 2 ∗ W 2 ⊕ ⋯ ⊕ X G ∗ W G \tilde{X}=X_{1} * W_{1} \oplus X_{2} * W_{2} \oplus \cdots \oplus X_{G} * W_{G} X~=X1W1X2W2XGWG

其中, ⊕ \oplus 表示沿通道维度的拼接操作, W g W_{g} Wg 是第g组的卷积滤波器,其中 g ∈ 1 , … , G g \in {1, \ldots, G} g1,,G,且 W g ∈ R c o G × c i G × k × k W_{g} \in \mathbb{R}^{\frac{c_{o}}{G} \times \frac{c_{i}}{G} \times k \times k} WgRGco×Gci×k×k。分组卷积(GC)的参数数量为: G × c o G × c i G × k × k G \times \frac{c_{o}}{G} \times \frac{c_{i}}{G} \times k \times k G×Gco×Gci×k×k

绑定块卷积(Tied Block Convolution)通过以下公式在不同的特征组之间重用滤波器,从而减少了有效滤波器的数量:
X ~ = X 1 ∗ W ′ ⊕ X 2 ∗ W ′ ⊕ ⋯ ⊕ X B ∗ W ′ \tilde{X}=X_{1} * W^{\prime} \oplus X_{2} * W^{\prime} \oplus \cdots \oplus X_{B} * W^{\prime} X~=X1WX2WXBW

X ~ = X 1 ∗ W ′ ⊕ X 2 ∗ W ′ ⊕ ⋯ ⊕ X B ∗ W ′ \tilde{X}=X_{1} * W^{\prime} \oplus X_{2} * W^{\prime} \oplus \cdots \oplus X_{B} * W^{\prime} X~=X1WX2WXBW 其中 W ′ ∈ R c o B × c i B × k × k W^{\prime} \in \mathbb{R}^{\frac{c_{o}}{B} \times \frac{c_{i}}{B} \times k \times k} WRBco×Bci×k×k 是所有组之间共享的TBC滤波器。参数数量为: c o B × c i B × k × k \frac{c_{o}}{B} \times \frac{c_{i}}{B} \times k \times k Bco×Bci×k×k

TBC与GC的比较。虽然TBC是跨组共享滤波器的GC,但在实际应用结果中,它与GC存在几个主要区别(假设 (B=G))。

  1. TBC的参数数量比GC少B倍。
  2. TBC在GPU利用率上只有一个碎片,而GC有 G个碎片,大大降低了并行度。图3显示,GC的处理时间随着组数的增加而线性增加,而我们的TBC几乎保持相同的处理时间。
  3. TBC能更好地建模跨通道依赖。由于每组GC滤波器仅在通道的子集上进行卷积,因此GC在跨通道聚合全局信息时遇到困难。然而,每组TBC滤波器应用于所有输入通道,并能更好地建模跨通道依赖。
  4. 基于TBC的TiedResNet在目标检测和实例分割任务中大大超过了集成GC的ResNeXt。TiedResNet-S甚至可以在模型大小减少两倍的情况下超过ResNeXt,这表明TiedResNet更有效地利用了模型参数。
    在这里插入图片描述

捆绑块组卷积(TGC)捆绑块滤波的思想也可以直接应用于组卷积,表述为:
X ~ = ( X 11 ∗ W 1 ′ ⊕ ⋯ ⊕ X 1 B ∗ W 1 ′ ) ⊕ ⋯ ⊕ ( X G 1 ∗ W G ′ ⊕ ⋯ ⊕ X G B ∗ W G ′ ) \begin{aligned} \tilde{X}= & \left(X_{11} * W_{1}^{\prime} \oplus \cdots \oplus X_{1 B} * W_{1}^{\prime}\right) \oplus \cdots \oplus \\ & \left(X_{G 1} * W_{G}^{\prime} \oplus \cdots \oplus X_{G B} * W_{G}^{\prime}\right) \end{aligned} X~=(X11W1X1BW1)(XG1WGXGBWG)

其中, W g ′ ∈ R c o B G × c i B G × k × k , X g b ∈ R c i B G × h i × w i W_{g}^{\prime} \in \mathbb{R}^{\frac{c_{o}}{B G} \times \frac{c_{i}}{B G} \times k \times k},X_{g b} \in \mathbb{R}^{\frac{c_{i}}{B G} \times h_{i} \times w_{i}} WgRBGco×BGci×k×kXgbRBGci×hi×wi 是分割后的特征图, g ∈ [ 1 , G ] g \in[1, G] g[1,G] b ∈ [ 1 , B ] b \in[1, B] b[1,B]

捆绑块全连接层(TFC)卷积是全连接(FC)层的一种特殊情况,正如FC是卷积的一种特殊情况一样。我们将相同的捆绑块滤波思想应用于FC。捆绑块全连接层(TFC)在输入通道的相等块之间共享FC连接。与TBC一样,TFC可以减少B^{2}倍的参数和B倍的计算成本。

在瓶颈模块中的TBC/TGC

ResNet/ResNeXt/ResNeSt的瓶颈模块具有1x1和3x3的卷积滤波器。我们按照图4所示的不同方式应用TBC/TGC。对于ResNet和ResNeXt中的3x3卷积,我们将所有滤波器分组;每个组都有自己的TBC/TGC设置。这种选择允许不同程度的共享,并受到网络可视化工作(Zeiler和Fergus 2014;Bau等人2017)的启发:在不同层中,滤波器扮演着不同的角色,其中一些是独特的概念检测器(Agrawal,Carreira和Malik 2015;Bau等人2017)。对于瓶颈入口和出口的1x1卷积,我们用B=2的TBC替换入口卷积,以允许滤波器共享,同时保持出口卷积以跨通道聚合信息。由于ResNeSt将3x3卷积替换为多路径和具有k个基数的分割注意力模块,因此3x3卷积占整体模型复杂性的比例较小。因此,我们仅将所有3x3卷积替换为B=2的TBC,如1x1卷积所示。进一步增加B只会略微减少模型参数,但会大大降低性能。
在这里插入图片描述

对于TiedResNet-50(TiedResNeXt-50)的默认设置是4个分组,基础宽度为32(64),即 4 s × 32 w ( 4 s × 64 w ) 4 \mathrm{~s} \times 32 \mathrm{w}(4 \mathrm{~s} \times 64 \mathrm{w}) 4 s×32w(4 s×64w),而对于TiedResNet-S(TiedResNeXt-50 S)的默认设置是 4 s × 18 w ( 4 s × 36 w ) 4 \mathrm{~s} \times 18 \mathrm{w}(4 \mathrm{~s} \times 36 \mathrm{w}) 4 s×18w(4 s×36w)。我们的TiedBottleNeck在ImageNet-1K上的top-1准确率方面提高了1%以上的性能。然而,失去跨通道集成可能会削弱模型。为了弥补这一点,我们引入了一个融合器,用于融合多个分组的输出。引入融合器可使性能再提高0.5%。融合器的输入可以是分组输出的拼接或逐元素求和。表6显示逐元素求和具有更好的权衡。

TBC和TFC在注意力模块中的应用

我们将TBC和TFC应用于注意力模块,如SE(Hu,Shen和Sun 2018)和GCB(Cao等人2019),只需将其中的SC和FC替换为对应的捆绑块(图5)即可。这两种设计都显著减少了参数数量,同时没有降低性能。
在这里插入图片描述

实验结果

我们在对象识别、对象检测、实例分割和注意力等主要基准测试集上,对TBC、TGC和TFC进行了广泛的测试。

ImageNet分类

实现方法。我们遵循标准实践,使用随机裁剪进行数据增强,将图像大小调整为224x224像素(He等人,2016年)。我们使用SGD进行网络训练,动量设置为0.9,在8个GPU上使用256个样本的小批量。初始学习率设置为0.1,然后在30个周期后衰减10倍,总共训练100个周期。

性能提升。表1比较了多个模型在ImageNet-1k(Deng等人,2009年)验证集上的识别准确率。在表1中,TiedResNet50-S在top-1准确率上超过了ResNet50,但只使用了60%的浮点运算和54%的参数。类似地,TiedResNet101-S也超过了ResNet101。在相似的模型复杂度下,TiedResNet50和TiedResNet101分别比基准模型高出1.5%和1.4%的准确率,同时参数减少了10%。对于TiedResNeXt和TiedSENet也可以观察到类似的趋势。为了进一步证明TBC的有效性,我们将其与当前的SOTA模型ResNeSt集成。TiedResNeSt-50-S仅使用59%的参数和82%的计算成本,在ImageNet-1k上的性能优于ResNeSt-50-S。
在这里插入图片描述

物体检测和实例分割

MS-COCO(Lin等人,2014年)包含80个对象类别,分别有118K/5K/208K张图像用于训练(train-2017)、验证(val-2017)和测试(test-2017)。评估平均精度(AP)从IoU阈值0.5到0.95,间隔为0.05。报告了不同质量下的检测性能,即AP50和AP75,以及不同尺度下的APs、APm和APl。所有模型都在train-2017子集上进行训练,并在val-2017上报告结果。

实现方法。我们在PyTorch实现的(Chen等人,2019年)检测器中使用基准骨干网络和我们的TiedResNet模型。图像的长边和短边分别调整至最大1333和800,同时保持纵横比不变。由于1x学习率调度(LS)是不足的,因此我们只在基线和我们的模型上报告2xLS的结果。
在这里插入图片描述

结果。我们在多个最先进的框架上,包括单阶段检测器RetinaNet(Lin等人,2017年)和两阶段检测器及Mask R-CNN(He等人,2017年),与ResNeXt和ResNet进行了彻底的比较,如图6所示。由于(Chen等人,2019年)重新实现的结果通常比原始论文中的结果更好,因此我们报告了重新实现的结果以进行公平比较。

物体检测。如图6所示,使用TiedResNet作为骨干网络,单阶段检测器RetinaNet和两阶段检测器Cascade R-CNN以及Mask R-CNN在框AP方面始终比基准模型高出2%到2.5%。在RetinaNet上的TiedResNet101甚至大大超过了重量更大的ResNeXt101-64×4d。在各种框架和Pascal VOC(Everingham等人,2015年)上的详细比较见附录材料。

实例分割。使用轻量级的TiedResNet-S和大小相当的TiedResNet骨干网络,我们观察到APmask分别增加了1.1%和2.1%。无论基准检测器有多强大,我们总是观察到AP的提升,这证实了TBC的有效性。高度遮挡的实例。由于遮挡要求网络准确检测目标区域并同时区分不同的实例,因此具有大遮挡的图像上的性能揭示了网络的定位能力。每个图像的遮挡比率(r)为:
r = total overlap area  total instance area  r=\frac{\text { total overlap area }}{\text { total instance area }} r= total instance area  total overlap area 

平均精度(AP)是在IoU从0.5到0.95的范围内计算的,而在IoU=0.75时的AP(即AP75)则作为标准和限制性的评估指标。图7a和图7b显示,ResNet受到遮挡的影响很大,在遮挡比率r=0.8时,AP75下降了6%以上,而我们的TiedResNet仅轻微下降了0.7%,超过了基线8.3%。同样,随着遮挡率的增加,AP的提升从2.8%增加到5.9%。这些在MS-COCO上的定量结果表明,TiedResNet在处理高度重叠的实例方面具有强大的能力,特别是在限制性评估指标上。图7c显示,TiedResNet具有更少的错误正例提议和更好的分割质量。
在这里插入图片描述

轻量级注意力

图5展示了我们的轻量级注意力模块。当B=1时,SE模块可以看作是我们TiedSE的一个特例;同样,GCB是TiedGCB在B=1时的情况。
在这里插入图片描述

TiedSE的结果。表3中的所有实验对于基准模型和我们的模型都使用了16的降维比率。我们调查了TFC层的几个超参数设置。由于我们重新实现的基准结果比(Hu,Shen,和Sun 2018)中的结果更好,因此我们报告了我们的结果以进行公平比较。虽然SE是轻量级的,但它仍然占用了模型总参数的10%。表3显示,在B=8时,通过64倍的参数减少,TiedSE仍然获得了可比的性能。TiedSE不仅在SEResNet上显著减少了参数而没有牺牲性能,而且在移动架构EfficientNet(Tan和Le 2019)上也同样如此。
在这里插入图片描述

TiedGCB的结果。全局上下文块(GCB)(Cao等人,2019年)通过全局上下文建模和长距离依赖关系增强了分割和检测预测。将GCB与TBC结合,可以在不损失性能的情况下显著减少参数数量。表4显示,TiedGCB在参数减少16倍的情况下,分别实现了1.8%和1.4%的mAPmask和mAPbbox提升。虽然组卷积可以通过2倍的方式减少参数,但由于每个GC滤波器只看到特征的一个子集,因此建模跨通道依赖性的能力也会降低,导致mAPmask和mAPbbox分别下降了0.4%。
在这里插入图片描述

消融研究

分割数量的影响。根据(Zeiler和Fergus 2014;Bau等人2017;Xu等人2015)的研究,对应于各种视觉概念(如颜色、纹理、对象、部分、场景、边缘和材料)的单元/滤波器的比例是不同的,具有不同级别的可解释性(Agrawal,Carreira,和Malik 2015;Bau等人2017)。对于不同级别的共享,将不同的功能滤波器分组在一起可能是有用的。在表5中,我们将3x3卷积层中的所有通道分成s个分割。每个分割的基础宽度为w,B对于四个3x3的TBC层中的每一个分别是1、2、4、8,在4s×32w的设置中。在表5中,最佳的性能和模型复杂度的权衡可以在4s×32w时达到。表5还显示了将输入特征图分割成几个块的必要性,当只有2个分割时,top-1准确率将下降0.4%。
在这里插入图片描述

TiedBottleneck中的Mixer模块。由于我们将输入特征图分割成多个部分,因此这些部分之间的相互依赖关系会丢失。为了跟踪这种相互依赖关系,我们使用了Mixer来聚合跨分割的信息。在表6中,我们调查了几种融合方法。使用拼接(concatenation)达到了最高的准确率,但它引入了更多的参数。因此,我们选择元素级求和(elementwise-sum)作为融合函数,以在准确率和模型大小之间取得平衡。
在这里插入图片描述

滤波器相似性。我们使用ImageNet预训练的ResNet50和TiedResNet50-S来比较不同层之间的余弦滤波器相似性。我们使用1000个ImageNet验证集分割中滤波器引导的反向传播模式(Springenberg等人,2014年)之间的成对余弦相似度平均值来生成这些直方图。如图9所示,x轴是余弦相似度,y轴是概率密度。与VGG(Simonyan和Zisserman,2014年)相比,ResNet(He等人,2016年)的冗余更少,而我们的TiedResNet具有最低的相似性,因此在整个深度层中消除了大多数冗余,这验证了我们的假设和动机。

Grad-CAM可视化。为了定性比较不同的基础网络,我们使用了来自ImageNet的图像,应用了gradCAM(Selvaraju等人,2017年)。Grad-CAM利用流入CNN最后一个卷积层的梯度信息来理解每个神经元。生成的定位图强调了图像中对于预测概念的重要区域,并反映了网络在目标对象区域利用信息的能力。图A.1显示,与ResNet和ResNetX相比,TiedResNet更准确地关注目标对象,这表明性能的提升来自于准确的注意力和对无关杂乱的减少。

这一特性对于目标检测和实例分割等任务非常有用,因为这些任务要求网络更准确地关注目标区域并从其中聚合特征。对目标区域的不正确关注也会导致大量的假阳性建议(图7c)。

总结

我们提出了Tied Block Convolution(TBC),它在等量的通道块上共享相同的较薄滤波器,并使用单个滤波器产生多个响应。TBC的概念还可以扩展到组卷积和全连接层,并可以应用于各种基础网络和注意力模块,同时基线性能得到一致的提升。基于TBC的TiedResNet也超过了基线,具有更高的参数使用效率和更好的检测严重遮挡物体的能力。

补充资料

物体检测和实例分割的详细结果

在表A.1和表A.2中,我们提供了在MS-COCO(Lin等人,2014年)的物体检测和实例分割任务上,经过实验的不同基础网络和框架的详细结果。报告了从0.5到0.95(间隔为0.05)的IoU阈值的平均精度(AP)以及不同质量和尺寸下的AP。所有实验都是在mmdetection v1.0代码库(Chen等人,2019年)上进行的。
在这里插入图片描述

无论实验检测器的类型和性能如何,TiedResNet始终比ResNet高出2%以上,并具有更高的参数使用效率。TiedResNet的轻量级版本甚至通过减少大约2倍的参数,将性能提高了1.2%。此外,在检测和实例分割任务中的改进(约2.5%)通常比在识别任务中的改进(约1.5%)更高。相比之下,ResNeXt在识别和检测任务中的改进相似,即大约1.4%。这表明TiedResNet更适合于检测任务,并具有更强的定位能力。
在这里插入图片描述

我们还使用Mask R-CNN作为检测器,在多个基础网络上实验了我们的TBC/TGC/TFC,以证明这些提出的运算符在检测和实例分割任务上的有效性和普遍性。所有这些基础网络及其对应网络都在ImageNet上进行了100个周期的预训练,以进行公平的比较。与ImageNet识别任务中的观察结果类似,通过将TBC/TGC/TFC集成到多个基础网络中,我们获得了持续的性能提升。

在这里插入图片描述

额外的Grad-CAM可视化结果

图A.1展示了使用Grad-CAM(Selvaraju等人,2017年)的额外可视化结果。Grad-CAM是一种创建高分辨率类别判别可视化的算法,它能够展示网络在目标对象区域中利用信息的能力。图A.1表明,与基准模型相比,TiedResNet能够更准确地定位目标实例,这表明在物体检测和实例分割任务中的性能提升来自于对精确注意力的控制和对无关杂乱的噪声的减少。
在这里插入图片描述

样本结果

包括Cityscapes(Cordts等人,2016年)、Pascal VOC(Everingham等人,2015年)和MS-COCO(Lin等人,2014年)在内的多个数据集上的物体检测和实例分割任务的样本结果在图A.2中进行了可视化。我们的TiedResNet显示出处理高度重叠实例的强大能力。

相关文章:

Tied Block Convolution: 具有共享较薄滤波器的更简洁、更出色的CNN

摘要 https://arxiv.org/pdf/2009.12021.pdf 卷积是卷积神经网络(CNN)的主要构建块。我们观察到,随着通道数的增加,优化后的CNN通常具有高度相关的滤波器,这降低了特征表示的表达力。我们提出了Tied Block Convolutio…...

算法沉淀——BFS 解决 FloodFill 算法(leetcode真题剖析)

算法沉淀——BFS 解决 FloodFill 算法 01.图像渲染02.岛屿数量03.岛屿的最大面积04.被围绕的区域 BFS(广度优先搜索)解决 Flood Fill 算法的基本思想是通过从起始点开始,逐层向外扩展,访问所有与起始点相连且具有相同特性&#xf…...

wordpress外贸成品网站模板

首页大图slider轮播,橙色风格的wordpress外贸网站模板 https://www.zhanyes.com/waimao/6250.html 蓝色经典风格的wordpress外贸建站模板 https://www.zhanyes.com/waimao/6263.html...

如何使用六图一表七种武器

六图一表七种武器用于质量管理: 描述当遇到问题时应该用那张图来解决: 一、如果题目说出了质量问题需要找原因? 解:用因果图,因果图也称石川图或鱼骨图 二、如果要判断过程是否稳定受控? 解&#xff1a…...

阿里云游戏服务器租用费用价格组成,费用详单

阿里云游戏服务器租用价格表:4核16G服务器26元1个月、146元半年,游戏专业服务器8核32G配置90元一个月、271元3个月,阿里云服务器网aliyunfuwuqi.com分享阿里云游戏专用服务器详细配置和精准报价: 阿里云游戏服务器租用价格表 阿…...

【C++】C++11上

C11上 1.C11简介2.统一的列表初始化2.1 {} 初始化2.2 initializer_list 3.变量类型推导3.1auto3.2decltype3.3nullptr 4.范围for循环5.final与override6.智能指针7. STL中一些变化8.右值引用和移动语义8.1左值引用和右值引用8.2左值引用与右值引用比较8.3右值引用使用场景和意义…...

【前端高频面试题--git篇】

🚀 作者 :“码上有前” 🚀 文章简介 :前端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 前端高频面试题--git篇 往期精彩内容常用命令git add 和 git stage 有什么区别怎么使用git连接…...

c++创建对象

c创建对象 1.声明一个对象,然后使用默认构造函数来创建对象: class MyClass { public:MyClass() {// 构造函数代码} };int main() {MyClass obj; // 声明并创建一个对象return 0; }2.使用new和指针动态创建对象:不会自动释放 使用 new 运算…...

软件实例分享,洗车店系统管理软件会员卡电子系统教程

软件实例分享,洗车店系统管理软件会员卡电子系统教程 一、前言 以下软件教程以 佳易王洗车店会员管理软件V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、会员卡号可以绑定车牌号或手机号 2、卡号也可以直接使用手机号&a…...

【Docker进阶】镜像制作-用Dockerfile制作镜像(一)

进阶一 docker镜像制作 文章目录 进阶一 docker镜像制作用dockerfile制作镜像dockerfile是什么dockerfile格式为什么需要dockerfileDockerfile指令集合FROMMAINTAINERLABELCOPYENVWORKDIR 用dockerfile制作镜像 用快照制作镜像的缺陷: 黑盒不可重复臃肿 docker…...

数据密集型应用系统设计

数据密集型应用系统设计 原文完整版PDF:https://pan.quark.cn/s/d5a34151fee9 这本书的作者是少有的从工业界干到学术界的牛人,知识面广得惊人,也善于举一反三,知识之间互相关联,比如有个地方把读路径比作programming …...

分布式文件系统 SpringBoot+FastDFS+Vue.js【一】

分布式文件系统 SpringBootFastDFSVue.js【一】 一、分布式文件系统1.1.文件系统1.2.什么是分布式文件系统1.3.分布式文件系统的出现1.3.主流的分布式文件系统1.4.分布式文件服务提供商1.4.1.阿里OSS1.4.2.七牛云存储1.4.3.百度云存储 二、fastDFS2.1.fastDSF介绍2.2.为什么要使…...

【PyQt】11-QTextEdit、QPushButton

文章目录 前言一、文本输入-QTextEdit1.1 代码1.2 运行结果 二、QPushButton2.1.1 按钮上添加文本2.1.2 按键的弹跳效果2.1.3 两个信号可以绑定一个槽。2.1.4 带图标的按键运行结果 2.1.5 按键不可用以及回车默认完整代码2.2 单选按键控件运行结果 2.3 复选框(多选框…...

初识webpack(二)解析resolve、插件plugins、dev-server

目录 (一)webpack的解析(resolve) 1.resovle.alias 2.resolve.extensions 3.resolve.mainFiles (二) plugin插件 1.CleanWebpackPlugin 2.HtmlWebpackPlugin 3.DefinePlugin (三)webpack-dev-server 1.开启本地服务器 2.HMR模块热替换 3.devServer的更多配置项 (…...

什么是自编码器Auto-Encoder?

来源:https://www.bilibili.com/video/BV1Vx411j78H/?spm_id_from333.1007.0.0&vd_sourcef66cebc7ed6819c67fca9b4fa3785d39 为什么要压缩呢? 让神经网络直接从上千万个神经元中学习是一件很吃力的事情,因此通过压缩提取出原图片中最具代…...

openGauss学习笔记-219 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-网络

文章目录 openGauss学习笔记-219 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-网络219.1 查看网络状况 openGauss学习笔记-219 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-网络 获取openGauss节点的CPU、内存、I/O和网络资源使用情况,确认这些资源…...

SAP PP学习笔记- 豆知识01 - 怎么查询既存品目

SAP系统当中已经有哪些品目要怎么查询呢? 1,MM60 品目一览 这里可以输入Plant,然后可以查询该工厂的所有品目。 2,SE16 > MARA MARA 品目一般Data,存放的是品目基本信息。 如果要查询该品目属于哪个Plant&#x…...

相机的机身马达有什么用?

新手疑问: 为什么我的尼康D3200相机明明拥有拍视频能力,但是拍摄视频时却不能对焦 科普时间 那是因为你的相机缺少机身马达,并且你所使用的镜头也没有马达!机身马达是用于给镜头提供对焦动力的装置。它的作用是使相机具备自动对焦功能。如…...

拿捏c语言指针(上)

目录 前言 ​编辑 指针 内存与地址 计算机常见单位 理解编址 取地址,指针变量,解引用 取地址 指针变量 解引用 指针变量大小 指针类型的作用 char*解引用后 指针-整数 应用 void*指针 const修饰指针变量 const修饰普通变量 const修饰指…...

JVM指令手册

栈和局部变量操作将常量压入栈的指令 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入操作数栈 iconst_2 将int类型常量2压入栈 iconst_3 将int类型常量3压入栈 iconst_4 将int类型常量4…...

Linux之多线程

目录 一、进程与线程 1.1 进程的概念 1.2 线程的概念 1.3 线程的优点 1.4 线程的缺点 1.5 线程异常 1.6 线程用途 二、线程控制 2.1 POSIX线程库 2.2 创建一个新的线程 2.3 线程ID及进程地址空间布局 2.4 线程终止 2.5 线程等待 2.6 线程分离 一、进程与线程 在…...

TestNG invocationCount属性

有时我们会遇到这样的问题,比如如何多次运行一个测试用例?invocationCount是这个问题的答案。在这篇文章中,我们将讨论在TestNG中与Test annotation一起使用的invocationCount属性。 这个属性有什么作用,或者调用计数有什么用&am…...

关于maven项目中无法通过邮件服务器发送邮件的补充解决方案

1、问题及解决方法 我的一篇文章中提到使用代码发送电子邮件,但是maven项目中无法执行成功,现在我找到了解决办法,只要引入依赖时同时引入下面两个依赖就行了,我无法找到原因主要是使用单元测试方法运行,它居然不报错&…...

树形dp 笔记

树的最长路径 给定一棵树,树中包含 n 个结点(编号1~n)和 n−1 条无向边,每条边都有一个权值。 现在请你找到树中的一条最长路径。 换句话说,要找到一条路径,使得使得路径两端的点的距离最远。 注意&…...

2024-02-08 Unity 编辑器开发之编辑器拓展1 —— 自定义菜单栏

文章目录 1 特殊文件夹 Editor2 在 Unity 菜单栏中添加自定义页签3 在 Hierarchy 窗口中添加自定义页签4 在 Project 窗口中添加自定义页签5 在菜单栏的 Component 菜单添加脚本6 在 Inspector 为脚本右键添加菜单7 加入快捷键8 小结 1 特殊文件夹 Editor ​ Editor 文件夹是 …...

typescript中的Omit排除类型及Pick取想要的属性

Omit 的使用:排除类型 type OmitUser {name: string,age: number,sex:string } type newOmit Omit<OmitUser, sex>// 定义一个对象并将其类型设置为 newOmit const example: newOmit {name: "John",age: 30 };console.log( Omit 的使用:排除类型 , example…...

MATLAB计算极限和微积分

一.函数与极限 计算极限&#xff1a;lim(3*x^2/(2x1))&#xff0c;x分别趋于0和1&#xff0c;代码如下&#xff1a; syms x; limit(3*x*x/(2*x1),x,0) limit(3*x*x/(2*x1),x,1) 结果分别为0和1&#xff1a; 1.计算双侧极限 计算极限&#xff1a;lim(3*x^2/(2x1))&#xff0…...

在数组中插入元素

问题&#xff1a;假设有一个数组{1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5}&#xff0c;如果我们要在3之后插入一个数&#xff08;520&#xff09;&#xff0c;这该怎么办呢&#xff1f; 思路&#xff1a;要想在以元素3之后插入一个元素&#xff0c;我们先要做…...

【计算机网络】物理层|传输介质|物理层设备|宽带接入技术

目录 一、思维导图 二、传输介质 1.传输介质——导引型 2.传输介质——非导引型​编辑 三、物理层设备 1.物理层设备&#xff1a;中继器&集线器 2.宽带接入技术&#xff08;有线&#xff09; ​编辑 四、趁热打铁☞习题训练 五、物理层总思维导图 推荐 前些天发现…...

TCP和UDP面试题提问

TOC TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;是两种计算机网络通信协议&#xff0c;它们在网络通信中起着不同的作用。 TCP TCP 是面向连接的协议&#xff0c;它在数据传输之前需要在发送端和接收端建立一条连接。TCP 提供可靠…...

网安常用的三个攻击方式

1.渗透测试执行标准&#xff08;PTES&#xff09; 渗透测试执行标准由7个部分组成&#xff0c;包括前期交互、情报收集、威胁建模、漏洞分析、渗透利用、后渗透、撰写报告。在中国&#xff0c;渗透测试必须经过授权&#xff0c;否则就违背了网络安全法。前期交互主要指开展渗透…...

C++面向对象程序设计-北京大学-郭炜【课程笔记(二)】

C面向对象程序设计-北京大学-郭炜【课程笔记&#xff08;二&#xff09;】 1、结构化程序设计结构化程序设计的不足 2、面向对象的程序设计2.1、面向对象的程序设计2.2、从客观事物抽象出类2.3、对象的内存分配2.4、对象之间的运算2.5、使用类的成员变量和成员函数用法1&#x…...

IDEA Ultimate下载(采用JetBrain学生认证)

IDEA Ultimate版本下载 Ulitmate是无限制版&#xff08;解锁所有插件&#xff0c;正版需要付费。学生可以免费申请许可&#xff09;Community是开源社区版本&#xff08;部分插件不提供使用&#xff0c;比如Tomcat插件。免费&#xff09; 我们将通过学生认证获取免费版。 Je…...

Matplotlib plt.plot数据可视化应用案例

Matplotlib 是 Python 中一个非常流行的绘图库&#xff0c;它允许用户创建各种静态、动态、交互式的图表和可视化。plt.plot() 是 Matplotlib 中用于绘制二维数据的基本函数。 下面是一个使用 plt.plot() 的简单数据可视化应用案例&#xff1a; 案例&#xff1a;绘制正弦和余…...

ES实战--集群扩展

查看ES集群状态: GET /_cluster/health?prettytrue当一个节点加入集群的时候,ES会自动地尝试将分片在所有节点上进行均匀分配. 如果更多的节点加入集群,ES将试图在所有节点上均匀分配分片数量.这样每一个新加入的节点都能通过部分数据来分担负载 第二个节点发现第一个节点,并…...

【重要】django默认生成的表的意思记录

accounts_userprofile: 这是与用户相关的个人资料表&#xff0c;通常包含用户的额外信息&#xff0c;比如头像、个人描述等。 accounts_userprofile_groups: 这是用户个人资料和用户组之间的关联表&#xff0c;用于记录用户属于哪些用户组。 accounts_userprofile_user_permiss…...

12.3 OpenGL顶点后处理:平面着色

平面着色 Flatshading Flat shading (平面着色)是一种简化渲染技术&#xff0c;它在光栅化阶段将一个图元&#xff08;primitive&#xff09;的所有顶点赋予相同的颜色或其它输出变量的值。这些赋予的值来自于该图元的“引发顶点”&#xff08;provoking vertex&#xff09;。…...

实验5-6 使用函数判断完全平方数

本题要求实现一个判断整数是否为完全平方数的简单函数。 函数接口定义&#xff1a; int IsSquare( int n ); 其中n是用户传入的参数&#xff0c;在长整型范围内。如果n是完全平方数&#xff0c;则函数IsSquare必须返回1&#xff0c;否则返回0。 裁判测试程序样例&#xff1…...

AI 或许真的能助力中产阶级重塑辉煌 [译]

原文&#xff1a;AI Could Actually Help Rebuild The Middle Class 作者&#xff1a;DAVID AUTOR 译文&#xff1a;AI 或许真的能助力中产阶级重塑辉煌 作者&#xff1a;宝玉 人工智能&#xff08;AI&#xff09;并不一定会夺走我们的工作。相反&#xff0c;它为我们提供了一个…...

C#利用接口实现选择不同的语种

目录 一、涉及到的知识点 1.接口定义 2.接口具有的特征 3.接口通过类继承来实现 4.有效使用接口进行组件编程 5.Encoding.GetBytes(String)方法 &#xff08;1&#xff09;检查给定字符串中是否包含中文字符 &#xff08;2&#xff09;编码和还原前后 6.Encoding.GetS…...

设计模式-适配器模式 Adapter

适配器模式 (Adapter) (重点) 适配器设计模式&#xff08;Adapter Design Pattern&#xff09;是一种结构型设计模式&#xff0c;用于解决两个不兼容接口之间的问题。适配器允许将一个类的接口转换为客户端期望的另一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的…...

算法训练day29Leetcode491递增子序列46全排列47全排列Ⅱ

491 递增子序列 题目描述 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也可以视作递增序列的一…...

内网穿透与搭建私人服务器

前言 内网穿透是一种技术&#xff0c;允许用户从外部网络访问内部私有网络中的服务器或设备。这对于想要从任何地方访问家中或办公室内部网络资源的用户非常有用。以下是为初学者准备的关于如何实现内网穿透以及搭建自己的私人服务器的详细指南。 在这个数字化时代&#xff0c;…...

交大论文下载器

原作者地址&#xff1a; https://github.com/olixu/SJTU_Thesis_Crawler 问题&#xff1a; http://thesis.lib.sjtu.edu.cn/的学位论文下载系统&#xff0c;该版权保护系统用起来很不方便&#xff0c;加载起来非常慢&#xff0c;所以该下载器实现将网页上的每一页的图片合并…...

全栈笔记_浏览器扩展篇(manifest.json文件介绍)

manifest.json介绍 是web扩展技术必不可少的插件配置文件,放在根目录作用: 指定插件的基本信息 name:名称manifest_version:manifest.json文件的版本号,可以写2或3version:版本description:描述定义插件的行为: browser_action:添加一个操作按钮到浏览器工具栏,点击按…...

蓝桥杯每日一题(python)

##斐波那契数列的应用 --- 题目斐波那契 题目&#xff1a; 如果数组 A (a0, a1, , an−1) 满足以下条件&#xff0c;就说它是一个斐波那契数组&#xff1a; 1. n ≥ 2&#xff1b; 2. a0 a1&#xff1b; 3. 对于所有的 i(i ≥ 2)&#xff0c;都满足 ai ai−1 ai−2…...

【Vue】工程化开发脚手架Vue CLI

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue⛺️稳重求进&#xff0c;晒太阳 工程化开发&脚手架Vue CLI 基本介绍 Vue Cli是Vue官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子【集成了we…...

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第三天-ARM Linux ADC和触摸屏开发 (物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码&#xff1a;1688 教学内容&#xff1a; 1、ADC S3C2440的A/D转换器包含一个8通道的模拟输入转换器&#xff0c;可以将模拟输入信号转换成10位数字编码。 在A/D转换时钟频率为2.5MHz时&…...

LeetCode “AddressSanitizer:heat-use-after-free on address“问题解决方法

heat-use-after-free &#xff1a; 访问堆上已经被释放的内存地址 现象&#xff1a;同样代码在LeetCode上报错&#xff0c;但是自己在IDE手动打印并不会报错 个人猜测&#xff0c;这个bug可能来源于LeetCode后台输出打印链表的代码逻辑问题。 问题描述 题目来自LeetCode的8…...

幸运彩票

L1-6 幸运彩票 分数 15 作者 陈越 单位 浙江大学 彩票的号码有 6 位数字&#xff0c;若一张彩票的前 3 位上的数之和等于后 3 位上的数之和&#xff0c;则称这张彩票是幸运的。本题就请你判断…...