IT评测·应用市场-qidao123.com技术社区

标题: YoloV8改进计谋:上采样改进:CARAFE:轻量级上采样|即插即用|附改进方法+ [打印本页]

作者: 汕尾海湾    时间: 2024-11-4 05:42
标题: YoloV8改进计谋:上采样改进:CARAFE:轻量级上采样|即插即用|附改进方法+
论文介绍


创新点


方法


模块作用


改进的效果


论文翻译:《CARAFE:基于内容感知的特征(FEatures)重新组装》

https://arxiv.org/pdf/1905.02188
特征上采样是很多当代卷积网络架构(比方特征金字塔)中的关键操作。其设计对于诸如目标检测和语义/实例分割等密集预测任务至关重要。在本文中,我们提出了内容感知特征重组(CARAFE),这是一种通用、轻量级且高度有效的算子,以实现这一目标。CARAFE具有几个吸引人的特性:(1)大视野。与仅利用子像素邻域的前期工作(比方双线性插值)不同,CARAFE可以在大感受野内聚合上下文信息。(2)内容感知处理。与对全部样本利用固定核(比方反卷积)不同,CARAFE支持针对实例的内容感知处理,可以即时生成自适应核。(3)轻量级且计算速度快。CARAFE引入的计算开销很小,而且可以轻松集成到当代网络架构中。我们在目标检测、实例/语义分割和图像修复的标准基准上进行了综合评估。CARAFE在全部任务中都表现出一致且显著的增益(分别为                                   1.2                         %                         A                         P                              1.2\% AP                  1.2%AP、                                   1.3                         %                         A                         P                              1.3\% AP                  1.3%AP、                                   1.8                         %                         m                         I                         o                         U                              1.8\% mIoU                  1.8%mIoU、                                   1.1                         d                         B                              1.1 dB                  1.1dB),且计算开销可忽略不计。它有望成为未来研究的强大构建块。代码和模型可在https://github.com/open-mmlab/mmdetection获取。
1. 引言

特征上采样是深度神经网络中最根本的操作之一。一方面,对于密集预测任务(比方超分辨率[7,20]、图像修复[13,32]和语义分割[43,5])中的解码器,高级/低分辨率特征图会上采样以匹配高分辨率监督。另一方面,特征上采样还涉及将高级/低分辨率特征图与低级/高分辨率特征图进行融合,这在很多最先进架构中被广泛采用,比方特征金字塔网络[21]、U-Net[34]和堆叠沙漏网络[29]。因此,设计有效的特征上采样算子成为一个关键问题。
最常用的特征上采样算子是最近邻和双线性插值,它们采用像素之间的空间间隔来指导上采样过程。然而,最近邻和双线性插值仅思量子像素邻域,无法捕捉密集预测任务所需的丰富语义信息。另一种实现自适应上采样的方法是反卷积[30]。反卷积层作为卷积层的逆算子,学习一组与实例无关的上采样核。但是,它有两个重要缺点。起首,反卷积算子在整个图像上应用相同的核,而不思量底层内容。这限定了其响应局部变化的能力。其次,当利用大核巨细时,它带有大量参数和繁重的计算工作量。这使得其难以覆盖超出小邻域的更大地区,从而限定了其表达能力和性能。
在本文中,我们超越了这些限定,并寻求一种特征上采样算子,其可以或许1)在大感受野内聚合信息,2)即时适应特定实例的内容,以及3)保持计算效率。为此,我们提出了一种轻量级且高度有效的算子,称为内容感知特征重组(CARAFE)。具体而言,CARAFE通过加权组合,在每个位置为中心的预定地区内重新组合特征,此中权重以内容感知的方式生成。别的,对于每个位置,有多组如许的上采样权重。特征上采样通过将生成的特征重新分列为空间块来完成。

请注意,这些空间自适应权重不是作为网络参数学习的。相反,它们是利用具有softmax激活的轻量级全卷积模块即时预测的。图1揭示了CARAFE的工作机制。通过CARAFE上采样后,特征图可以更准确地表现对象的形状,从而使模型可以或许预测更好的实例分割效果。我们的CARAFE不但在空间上对特征图进行上采样,还学习增强其判别能力。
为了证明CARAFE的普遍有效性,我们利用主流架构在广泛的密集预测任务上进行了全面评估,即目标检测、实例分割、语义分割和图像修复。在MS COCO 2018 test-dev数据集上,CARAFE可以使Faster RCNN[33]在目标检测上的性能提升                                   1.2                         %                                   A                            P                                       1.2\% \mathrm{AP}                  1.2%AP,使Mask RCNN[9]在实例分割上的性能提升                                   1.3                         %                                   A                            P                                       1.3\% \mathrm{AP}                  1.3%AP。在ADE20k[47, 48]验证集上的语义分割任务中,CARAFE使UperNet[38]的性能提升了                                   1.8                         %                                   m                            I                            o                            U                                       1.8\% \mathrm{mIoU}                  1.8%mIoU,在Places[46]验证集上的图像修复任务中,使Global&Local[13]的PSNR提升了1.1 dB。当将具有256个通道的                                   H                         ×                         W                              H \times W                  H×W特征图上采样两倍时,CARAFE引入的计算开销仅为                                   H                         ∗                         W                         ∗                         199                         k                              H * W * 199 k                  H∗W∗199k FLOPs,相比之下,反卷积的计算开销为                                   H                         ∗                         W                         ∗                         1180                         k                              H * W * 1180 k                  H∗W∗1180k FLOPs。在全部任务上取得的显著增益表明,CARAFE是一种有效且高效的特征上采样算子,未来有很大的潜力成为强有力的研究基石。
2. 相关工作

上采样算子。最常用的上采样方法是最近邻插值和双线性插值。这些插值方法利用间隔来权衡像素之间的相关性,并利用手工设计的上采样核。在深度学习期间,提出了几种利用可学习算子对上采样特征图的方法。比方,反卷积[30]是卷积的逆算子,在这些可学习上采样器中最为闻名。Pixel Shuffle[35]提出了一种不同的上采样器,它将通道空间上的深度重塑为空间上的宽度和高度。最近,[26]提出了引导上采样(GUM),通过采样具有可学习偏移量的像向来进行插值。然而,这些方法要么仅利用了小邻域内的上下文信息,要么需要昂贵的计算来进行自适应插值。在超分辨率和去噪领域,其他工作[27,16,11]也探索了在低级视觉任务中空间上利用可学习核。本着类似的设计精神,本文展示了内容感知特征重组在几个视觉感知任务中上采样的有效性和工作机制,并提供了一种轻量级解决方案。
密集预测任务。目标检测是定位带有界限框的物体的任务,实例分割进一步要求预测实例级掩码。Faster-RCNN[33]引入了地区提议网络(RPN)用于端到端练习,该网络通过引导锚定方案[37]得到了进一步改进。[21, 24, 17, 45, 31]利用多尺度特征金字塔来处理不同尺度的物体。通过添加额外的掩码预测分支,Mask-RCNN[9]及其变体[1, 12]得到了令人满意的像素级效果。语义分割[25, 19]要求对给定图像进行像素级语义预测。PSPNet[43]引入了多个网格尺度的空间池化,而UperNet[38]基于PSPNet设计了一个更通用的框架。图像或视频修复[42, 40, 39]是填充输入图像缺失地区的一个经典问题。U-net[34]在最近的工作中[13, 36]很受欢迎,并采用了多个上采样算子。Liu等人[23]引入了部分卷积层,以减轻缺失地区对卷积层的影响。我们的CARAFE在各种密集预测任务中展示了普遍的有效性。
3. 内容感知特征重组

特征上采样是很多当代卷积网络架构中的关键算子,这些架构是为包罗目标检测、实例分割和场景剖析在内的任务开发的。在这项工作中,我们提出了内容感知特征重组(CARAFE)来上采样特征图。在每个位置上,CARAFE可以利用底层内容信息来预测重组核,并在预界说的附近地区内重新组合特征。得益于内容信息,CARAFE可以在不同位置利用自适应和优化的重组核,而且比主流上采样算子(如插值或反卷积)实现更好的性能。
3.1. 公式化

CARAFE作为具有内容感知核的重组算子,包罗两个步骤。第一步是根据内容为每个目标位置预测一个重组核,第二步是利用预测的核重新组合特征。给定巨细为                                   C                         ×                         H                         ×                         W                              C \times H \times W                  C×H×W的特征图                                   X                              \mathcal{X}                  X和上采样比例                                   σ                              \sigma                  σ(假设                                   σ                              \sigma                  σ为整数),CARAFE将生成巨细为                                   C                         ×                         σ                         H                         ×                         σ                         W                              C \times \sigma H \times \sigma W                  C×σH×σW的新特征图                                             X                            ′                                       \mathcal{X}^{\prime}                  X′。对于输出                                             X                            ′                                       \mathcal{X}^{\prime}                  X′上的任何目标位置                                             l                            ′                                  =                                   (                                       i                               ′                                      ,                                       j                               ′                                      )                                       l^{\prime}=\left(i^{\prime}, j^{\prime}\right)                  l′=(i′,j′),在输入                                   X                              \mathcal{X}                  X上都有一个对应的源位置                                   l                         =                         (                         i                         ,                         j                         )                              l=(i, j)                  l=(i,j),此中                                   i                         =                                   ⌊                                       i                               ′                                      /                            σ                            ⌋                                  ,                         j                         =                                   ⌊                                       j                               ′                                      /                            σ                            ⌋                                       i=\left\lfloor i^{\prime} / \sigma\right\rfloor, j=\left\lfloor j^{\prime} / \sigma\right\rfloor                  i=⌊i′/σ⌋,j=⌊j′/σ⌋。这里,我们将                                   N                                   (                                       X                               l                                      ,                            k                            )                                       N\left(\mathcal{X}_{l}, k\right)                  N(Xl​,k)表现为以位置                                   l                              l                  l为中心、巨细为                                   k                         ×                         k                              k \times k                  k×k的                                   X                              \mathcal{X}                  X的子地区,即                                             X                            l                                       \mathcal{X}_{l}                  Xl​的邻域。
在第一步中,核预测模块                                   ψ                              \psi                  ψ根据                                             X                            l                                       \mathcal{X}_{l}                  Xl​的邻域为每个位置                                             l                            ′                                       l^{\prime}                  l′预测一个位置感知核                                             W                                       l                               ′                                                 \mathcal{W}_{l^{\prime}}                  Wl′​,如公式(1)所示。重组步骤如公式(2)所示,此中                                   ϕ                              \phi                  ϕ是内容感知重组模块,它利用核                                             W                                       l                               ′                                                 \mathcal{W}_{l^{\prime}}                  Wl′​重新组合                                             X                            l                                       \mathcal{X}_{l}                  Xl​的邻域:
                                                                                           W                                                       l                                           ′                                                                                                                                     =                                        ψ                                                       (                                           N                                                           (                                                               X                                                 l                                                              ,                                                               k                                                 encoder                                                               )                                                          )                                                                                                                                          X                                                       l                                           ′                                                      ′                                                                                                                       =                                        ϕ                                                       (                                           N                                                           (                                                               X                                                 l                                                              ,                                                               k                                                                   u                                                    p                                                                               )                                                          ,                                                           W                                                               l                                                 ′                                                                          )                                                                                              \begin{aligned} \mathcal{W}_{l^{\prime}} & =\psi\left(N\left(\mathcal{X}_{l}, k_{\text {encoder }}\right)\right) \\ \mathcal{X}_{l^{\prime}}^{\prime} & =\phi\left(N\left(\mathcal{X}_{l}, k_{u p}\right), \mathcal{W}_{l^{\prime}}\right) \end{aligned}                     Wl′​Xl′′​​=ψ(N(Xl​,kencoder ​))=ϕ(N(Xl​,kup​),Wl′​)​
在以下部分中,我们将具体分析                                   ψ                              \psi                  ψ和                                   ϕ                              \phi                  ϕ的细节。
3.2. 核预测模块

核预测模块负责以内容感知的方式生成重组核。在                                   X                              \mathcal{X}                  X上的每个源位置对应于                                             X                            ′                                       \mathcal{X}^{\prime}                  X′上的                                             σ                            2                                       \sigma^{2}                  σ2个目标位置。每个目标位置需要一个                                             k                                       u                               p                                            ×                                   k                                       u                               p                                                 k_{up} \times k_{up}                  kup​×kup​的重组核,此中                                             k                                       u                               p                                                 k_{up}                  kup​是重组核的巨细。因此,该模块将输出巨细为                                             C                                       u                               p                                            ×                         H                         ×                         W                              C_{up} \times H \times W                  Cup​×H×W的重组核,此中                                             C                                       u                               p                                            =                                   σ                            2                                            k                                       u                               p                                      2                                       C_{up}=\sigma^{2} k_{up}^{2}                  Cup​=σ2kup2​。

核预测模块由三个子模块组成,即通道压缩器、内容编码器和核归一化器,如图2所示。通道压缩器淘汰了输入特征图的通道数。然后,内容编码器将压缩后的特征图作为输入,对内容进行编码以生成重组核。最后,核归一化器对每个重组核应用softmax函数。以下是对这三个子模块的具体解释。
通道压缩器。我们采用一个                                   1                         ×                         1                              1 \times 1                  1×1的卷积层来将输入特征通道从                                   C                              C                  C压缩到                                             C                            m                                       C_{m}                  Cm​。淘汰输入特征图的通道数可以淘汰后续步骤中的参数数目和计算成本,使CARAFE更高效。在相同的预算下,也可以利用更大的内核巨细为内容编码器。实行效果表明,在可接受的范围内淘汰特征通道不会损害性能。
内容编码器。我们利用巨细为                                             k                            encoder                                       k_{\text {encoder}}                  kencoder​的卷积层,根据输入特征的内容生成重组核。编码器的参数为                                             k                            encoder                                  ×                                   k                            encoder                                  ×                                   C                            m                                  ×                                   C                                       u                               p                                                 k_{\text {encoder}} \times k_{\text {encoder}} \times C_{m} \times C_{up}                  kencoder​×kencoder​×Cm​×Cup​。直观上,增加                                             k                            encoder                                       k_{\text {encoder}}                  kencoder​可以扩大编码器的感受野,并利用更大地区内的上下文信息,这对于预测重组核很重要。然而,计算复杂度随着内核巨细的平方增长,而来自更大内核巨细的收益则不会。通过我们在5.3节的研究,履历公式                                             k                            encoder                                  =                                   k                                       u                               p                                            −                         2                              k_{\text {encoder}}=k_{up}-2                  kencoder​=kup​−2在性能和效率之间取得了良好的均衡。
核归一化器。在应用于输入特征图之前,每个                                             k                                       u                               p                                            ×                                   k                                       u                               p                                                 k_{up} \times k_{up}                  kup​×kup​的重组核都会通过softmax函数在空间上进行归一化。归一化步骤逼迫内核值的和为1,这是在局部地区内的软选择。由于核归一化器,CARAFE不会实行任何重新缩放并改变特征图的平均值,这就是为什么我们提出的算子被称为特征的重组。
3.3. 内容感知重组模块

利用每个重组核                                             W                                       l                               ′                                                 \mathcal{W}_{l^{\prime}}                  Wl′​,内容感知重组模块将通过函数                                   ϕ                              \phi                  ϕ重新组合局部地区内的特征。我们采用                                   ϕ                              \phi                  ϕ的简朴形式,它只是一个加权和算子。对于目标位置                                             l                            ′                                       l^{\prime}                  l′和以                                   l                         =                         (                         i                         ,                         j                         )                              l=(i, j)                  l=(i,j)为中心的相应正方形地区                                   N                                   (                                       X                               l                                      ,                                       k                                           u                                  p                                                 )                                       N\left(\mathcal{X}_{l}, k_{up}\right)                  N(Xl​,kup​),重组如公式(3)所示,此中                                   r                         =                                   ⌊                                       k                                           u                                  p                                                 /                            2                            ⌋                                       r=\left\lfloor k_{up} / 2\right\rfloor                  r=⌊kup​/2⌋:
                                              X                                       l                               ′                                      ′                                  =                                   ∑                                       n                               =                               −                               r                                      r                                            ∑                                       m                               =                               −                               r                                      r                                            W                                                   l                                  ′                                          (                               n                               ,                               m                               )                                            ⋅                                   X                                       (                               i                               +                               n                               ,                               j                               +                               m                               )                                                 \mathcal{X}_{l^{\prime}}^{\prime}=\sum_{n=-r}^{r} \sum_{m=-r}^{r} \mathcal{W}_{l^{\prime}(n, m)} \cdot \mathcal{X}_{(i+n, j+m)}                  Xl′′​=∑n=−rr​∑m=−rr​Wl′(n,m)​⋅X(i+n,j+m)​
利用重组核,地区                                   N                                   (                                       X                               l                                      ,                                       k                                           u                                  p                                                 )                                       N\left(\mathcal{X}_{l}, k_{up}\right)                  N(Xl​,kup​)中的每个像素都会基于特征的内容而不是位置的间隔,对上采样像素                                             l                            ′                                       l^{\prime}                  l′产生不同的贡献。由于局部地区内相关点的信息可以更多地被关注,因此重新组合后的特征图的语义可能比原始特征图更强。
3.4. 与先前算子的关系

在这里,我们讨论了CARAFE与动态滤波器[15]、空间注意力[3]、空间变更器[14]和可变形卷积[6]之间的关系,它们具有相似的设计理念但侧重点不同。
动态滤波器。动态滤波器根据网络的输入生成特定实例的卷积滤波器,然后将预测的滤波器应用于输入。动态滤波器和CARAFE都是内容感知算子,但它们之间的根本区别在于内核生成过程。具体来说,动态滤波器是一个两步卷积过程,此中额外的滤波器预测层和滤波层需要大量的计算。相反,CARAFE只是局部地区内特征的重新组合,而不学习跨通道的特征变更。假设输入特征图的通道数为                                   C                              C                  C,滤波器的内核巨细为                                   K                              K                  K,则在动态滤波器中,每个位置预测的内核参数为                                   C                         ×                         C                         ×                         K                         ×                         K                              C \times C \times K \times K                  C×C×K×K。对于CARAFE,内核参数仅为                                   K                         ×                         K                              K \times K                  K×K。因此,它在内存和速度上更高效。
空间注意力。空间注意力预测一个与输入特征巨细相同的注意力图,然后对每个位置的特征图进行重新缩放。我们的CARAFE通过加权和对局部地区内的特征进行重新组合。总之,空间注意力是一个具有逐点指导的重缩放算子,而CARAFE是一个具有局部地区指导的重新组合算子。空间注意力可以看作是CARAFE的一种特殊情况,此中重组核巨细为1,不思量核归一化器。
空间变更网络(STN)。STN根据输入特征图预测一个全局参数变更,并通过该变更对特征进行扭曲。然而,这个全局参数变更假设太强,无法表现复杂的空间变化;而且STN的练习很难。在这里,CARAFE利用位置特定的重组来处理空间关系,这可以或许实现更灵活的局部几何建模。
可变形卷积网络(DCN)。DCN也采用了学习几何变更的思想,并将其与常规卷积层相联合。它预测内核偏移量,而不是利用网格卷积内核。与动态滤波器类似,它也是一个重参数算子,计算成本比CARAFE高24倍。它也对参数初始化很敏感。
4. CARAFE的应用

CARAFE可以无缝集成到需要上采样算子的现有框架中。在这里,我们介绍一些在主流密集预测任务中的应用。CARAFE通过引入可忽略的额外参数,在高层次和低层次任务(如目标检测、实例分割、语义分割和图像修复)中均提升了最先进方法的性能。
4.1. 目标检测和实例分割

特征金字塔网络(FPN)是目标检测和实例分割领域的一种重要且有效的架构。它显著进步了Faster R-CNN和Mask R-CNN等流行框架的性能。FPN通过自顶向下的路径和横向毗连构建具有强大语义的特征金字塔。在自顶向下的路径中,起首通过最近邻插值将低分辨率特征图上采样2倍,然后与高分辨率特征图进行融合,如图3所示。

我们提出在全部特征级别中用CARAFE替换最近邻插值。这一修改很平滑,无需额外更改。除了FPN结构外,Mask R-CNN在掩码头的末了采用了一个反卷积层。它用于将预测的                                   14                         ×                         14                              14 \times 14                  14×14数字上采样到                                   28                         ×                         28                              28 \times 28                  28×28,以得到更风雅的掩码预测。我们也可以利用CARAFE来替换反卷积层,从而进一步降低计算成本。
4.2. 语义分割

语义分割要求模型对整个图像输出逐像素级别的预测,因此通常更喜欢高分辨率特征图。在该任务中,上采样被广泛用于放大特征图并融合不同级别的语义信息。UperNet是语义分割的一个强大基线。它在以下三个组件中利用上采样,即PPM、FPN、FUSE。我们采用CARAFE替换它们原有的上采样器。
金字塔池化模块(PPM)。PPM是PSPNet中的关键组件,它分层地将输入特征图下采样到多个尺度                                   {                         1                         ×                         1                         ,                         2                         ×                         2                         ,                         3                         ×                         3                         ,                         6                         ×                         6                         }                              \{1 \times 1,2 \times 2,3 \times 3,6 \times 6\}                  {1×1,2×2,3×3,6×6},然后通过双线性插值将它们上采样回原始尺寸。最后,通过拼接将这些特征与原始特征进行融合。由于上采样比例非常大,我们采用两步计谋,利用CARAFE在性能和效率之间取得均衡。起首,我们利用双线性插值将                                   {                         1                         ×                         1                         ,                         2                         ×                         2                         ,                         3                         ×                         3                         ,                         6                         ×                         6                         }                              \{1 \times 1,2 \times 2,3 \times 3,6 \times 6\}                  {1×1,2×2,3×3,6×6}特征上采样到原始特征图尺寸的一半,然后利用CARAFE进一步将其上采样2倍。
特征金字塔网络(FPN)。与检测模型类似,UperNet也采用FPN来丰富特征语义。它只有四个不同的特征级别                                   {                         P                         2                         ,                         P                         3                         ,                         P                         4                         ,                         P                         5                         }                              \{\mathrm{P} 2, \mathrm{P} 3, \mathrm{P} 4, \mathrm{P}5\}                  {P2,P3,P4,P5},步长分别为                                   {                         4                         ,                         8                         ,                         16                         ,                         32                         }                              \{4,8,16,32\}                  {4,8,16,32}。我们以与4.1节相同的方式更换上采样算子。
多级特征融合(FUSE)。UperNet在FPN之后提出了一个多级特征融合模块。它通过双线性插值将P3、P4、P5上采样到与P2相同的尺寸,然后通过拼接融合这些不同级别的特征。该过程相当于一个顺序上采样-拼接过程,即起首将P5上采样到P4的尺寸并进行拼接,然后将拼接后的特征图上采样到P3的尺寸,以此类推。我们在这里用CARAFE更换顺序双线性上采样。
4.3. 图像修复

U-net架构在最近提出的图像修复方法中很受欢迎,如Global&Local [13]和Partial Conv [23]。在网络的后半部分有两个上采样算子。我们简朴地将这两个上采样层更换为CARAFE并评估性能。对于Partial Conv,我们可以通过利用我们的内容感知重组核更新掩码来方便地保持CARAFE中的掩码传播。
5. 实行

5.1. 实行设置

数据集与评估指标。我们在几个重要的密集预测基准上评估了CARAFE。默认情况下,我们利用练习集进行练习,并在验证集上评估这些数据集的性能。
目标检测和实例分割。我们在具有挑衅性的MS COCO 2017数据集上进行了实行。效果采用标准的COCO评估指标,即IoU从0.5到0.95的平均精度(mAP)。
语义分割。我们采用ADE20k基准来评估我们的方法在语义分割任务中的表现。效果通过平均IoU(mIoU)和像素准确率(P.A.)来权衡,分别表现预测与真实掩码之间的平均IoU和每像素分类准确率。
图像修复。我们采用Places数据集进行图像修复。利用L1误差(越低越好)和PSNR(越高越好)作为评估指标。
实现细节。除非另有分析,否则CARAFE在实行中采用一组固定的超参数,此中通道压缩器的                                             C                            m                                       C_{m}                  Cm​为64,内容编码器的                                             k                            encoder                                  =                         3                              k_{\text{encoder}}=3                  kencoder​=3,                                             k                                       u                               p                                            =                         5                              k_{up}=5                  kup​=5。更多实现细节见增补质料。
目标检测和实例分割。我们在Faster RCNN和Mask RCNN上评估了CARAFE,主干网络为ResNet-50带FPN,并遵循Detectron [8]和MMDetection [2]的1x练习筹划设置。语义分割。我们利用UperNet的官方实现                                                      1                                       ^{1}                  1,并采用相同的实行设置。
图像修复。我们采用Global&Local [13]和Partial Conv [23]作为基线方法来评估CARAFE。
5.2. 基准测试效果

目标检测与实例分割。我们起首通过将FPN中的最近邻插值更换为CARAFE(针对Faster RCNN和Mask RCNN),以及将Mask RCNN中掩码头的反卷积层更换为CARAFE来评估我们的方法。如表1所示,CARAFE使Faster RCNN的bbox AP进步了                                   1.2                         %                              1.2\%                  1.2%,使Mask RCNN的掩码AP进步了                                   1.3                         %                              1.3\%                  1.3%。                                                        A                               P                                      S                                       \mathrm{AP}_{S}                  APS​、                                                        A                               P                                      M                                       \mathrm{AP}_{M}                  APM​、                                                        A                               P                                      L                                       \mathrm{AP}_{L}                  APL​的提升均凌驾                                   1                         %                                   A                            P                                       1\% \mathrm{AP}                  1%AP,这表明它对各种目标尺度都有益。
如图1所示的定性效果支持了我们令人鼓舞的性能。我们可视化了FPN自上而下路径中的特征图,并将CARAFE与基线(即最近邻插值)进行了比力。显然,通过内容感知重组,特征图更具判别性,而且预测出了更准确的目标掩码。在图4中,我们展示了一些实例分割效果的示例,比力了基线和CARAFE。

为了研究不同上采样算子的有效性,我们在Faster RCNN中利用了不同的算子在FPN中进行上采样,并进行了大量实行。效果如表2所示。对于“N.C.”和“B.C.”,分别表现“最近邻+卷积”和“双线性+卷积”,我们在相应的上采样后添加了一个额外的                                   3                         ×                         3                              3 \times 3                  3×3卷积层。“Deconv”、“Pixel Shuffle”(表现为“P.S.”)、“GUM”是三种具有代表性的基于学习的上采样方法。我们还比力了这里的“空间注意力”(表现为“S.A.”)。CARAFE在这些上采样算子中取得了最高的AP,且FLOPs和参数相对较少,这证明了它既有效又高效。“最近邻+卷积”和“双线性+卷积”的效果表明,额外的参数并没有带来显著的增益。“Deconv”、“Pixel Shuffle”、“GUM”和“空间注意力”的性能均低于CARAFE,这表明设计有效的上采样算子至关重要。
除了FPN这种金字塔特征融合结构外,我们还探索了掩码头中的不同上采样算子。在典型的Mask R-CNN中,采用反卷积层将RoI特征上采样2倍。为了公平比力,我们没有对FPN进行任何修改,只将反卷积层更换不同的为算子。由于我们只修改了掩码预测分支,因此以掩码AP的形式陈诉性能,如表3所示。在这些方法中,CARAFE在实例分割方面取得了最佳性能。
在表4中,我们陈诉了在Mask RCNN的FPN和掩码头中分别采用CARAFE的目标检测和实例分割效果。这些实行均取得了一致的改进。
语义分割。我们将UperNet中的上采样器更换为CARAFE,并在ADE20k基准上评估效果。如表5所示,CARAFE将单尺度测试的mIoU从                                   40.44                         %                              40.44\%                  40.44%大幅提升至                                   42.23                         %                              42.23\%                  42.23%。值得注意的是,带有CARAFE的UperNet也取得了比最近的强大基线(如PSPNet [43]和PSANet [44])更好的性能。
我们按照4.2节所述,徐徐研究了修改UperNet中不同组件的有效性。表6中的效果表明,CARAFE对全部三个组件都有帮助,且它们的组合带来了进一步的增益。
图像修复。我们证明了CARAFE在图像修复等低级任务中也是有效的。通过在两个强大的基线Global&Local [13]和Partial Conv [23]中将上采样算子更换为CARAFE,我们观察到这两种方法都有显著改进。如表7所示,我们的方法在PSNR指标上使两个基线分别进步了1.1 dB和0.2 dB。
5.3. 消融研究与进一步分析

模型设计与超参数。我们研究了模型设计中超参数的影响,即压缩通道                                             C                            m                                       C_{m}                  Cm​、编码器核巨细                                             k                            encoder                                       k_{\text{encoder}}                  kencoder​和重组核巨细                                             k                                       u                               p                                                 k_{up}                  kup​。我们还测试了核归一化器中不同的归一化方法。我们利用带有ResNet-50主干的Faster RCNN对设计和设置进行了消融研究,并在COCO 2017验证集上评估告终果。
为了实现高效设计,我们起首分析了由浮点运算数(FLOPs)权衡的计算复杂度。当以因子                                   σ                              \sigma                  σ对输入通道为                                             C                                       i                               n                                                 C_{in}                  Cin​的特征图进行上采样时,CARAFE的每像素FLOPs计算为                                   2                                   (                                       C                               in                                      +                            1                            )                                            C                            m                                  +                         2                                   (                                       C                               m                                                 k                               encoder                               2                                      +                            1                            )                                            σ                            2                                            k                                       u                               p                                      2                                  +                         2                                   σ                            2                                            k                                       u                               p                                      2                                            C                                       i                               n                                                 2\left(C_{\text{in}}+1\right)C_{m}+2\left(C_{m}k_{\text{encoder}}^{2}+1\right)\sigma^{2}k_{up}^{2}+2\sigma^{2}k_{up}^{2}C_{in}                  2(Cin​+1)Cm​+2(Cm​kencoder2​+1)σ2kup2​+2σ2kup2​Cin​,拜见[28]。
我们在通道压缩器中尝试了不同的                                             C                            m                                       C_{m}                  Cm​值。别的,我们还尝试移除通道压缩器模块,这意味着内容编码器直接利用输入特征来预测重组核。表8中的实行效果表明,将                                             C                            m                                       C_{m}                  Cm​压缩到64不会导致性能下降,反而更加高效。进一步减小                                             C                            m                                       C_{m}                  Cm​会导致性能略有下降。在没有通道压缩器的情况下,它可以到达相同的性能,这证明了通道压缩器可以在不损害性能的情况下加快核预测速度。基于以上效果,我们默认将                                             C                            m                                       C_{m}                  Cm​设置为64,以在性能和效率之间取得均衡。
然后,我们研究了                                             k                            encoder                                       k_{\text{encoder}}                  kencoder​和                                             k                                       u                               p                                                 k_{up}                  kup​的影响。直观上,增加                                             k                                       u                               p                                                 k_{up}                  kup​也需要更大的                                             k                            encoder                                       k_{\text{encoder}}                  kencoder​,因为内容编码器需要一个大的感受野来预测一个大的重组核。如表9所示,同时增加                                             k                            encoder                                       k_{\text{encoder}}                  kencoder​和                                             k                                       u                               p                                                 k_{up}                  kup​可以进步性能,而只增加此中一个则不会。我们总结了一个履历公式                                             k                            encoder                                  =                                   k                                       u                               p                                            −                         2                              k_{\text{encoder}}=k_{up}-2                  kencoder​=kup​−2,这是全部设置中的一个好选择。只管采用更大的核巨细是有帮助的,但我们默认设置                                             k                                       u                               p                                            =                         5                              k_{up}=5                  kup​=5和                                             k                            encoder                                  =                         3                              k_{\text{encoder}}=3                  kencoder​=3,以在性能和效率之间取得均衡。
除了softmax函数外,我们还测试了核归一化器中的其他替换方案,如sigmoid或带归一化的sigmoid。如表10所示,“Softmax”和“Sigmoid Normalized”具有相同的性能,而且优于“Sigmoid”,这表明将重组核归一化为和为1是至关重要的。

CARAFE的工作原理。我们进行了进一步的定性研究,以弄清楚CARAFE是如何工作的。我们利用练习好的采用CARAFE作为上采样算子的Mask RCNN模型,在图5中可视化了重组过程。在特征金字塔网络(FPN)结构中,低分辨率特征图将连续上采样几次以到达更高的分辨率,因此上采样特征图中的一个像素会从更大的地区重新组合信息。我们在高分辨率特征图中采样了一些像素,并查看它们是从哪些相邻像素重新组合而来的。绿色圆圈表现示例位置,赤色点表现在重组过程中高度加权的源。从图中可以清楚地看出,CARAFE是内容感知的。它倾向于重新组合具有相似语义信息的点。人体上的一个位置更倾向于来自同一人体的其他点,而不是其他物体或附近的背景。对于具有较弱语义的背景地区中的位置,重组更加匀称或只是偏向于具有相似低级纹理特征的点。
6. 结论

我们提出了内容感知特征重组(CARAFE),这是一种通用、轻量级且高度有效的上采样算子。它在目标检测、实例/语义分割和图像修复的标准基准上分别一致地将性能进步了                                   1.2                         %                         A                         P                              1.2\% AP                  1.2%AP、                                   1.3                         %                         A                         P                              1.3\% AP                  1.3%AP、                                   1.8                         %                         m                         I                         o                         U                              1.8\% mIoU                  1.8%mIoU、                                   1.1                         d                         B                              1.1 dB                  1.1dB。更重要的是,CARAFE引入的计算开销很小,而且可以轻松集成到当代网络架构中。未来的研究方向包罗探索CARAFE在低级视觉任务(如图像恢复和超分辨率)中的适用性。
致谢。本工作部分得到了商汤科技团体(中大协议编号:TS1610626和TS1712093)、香港研究资助局(GRF)(编号:14236516和14203518)、新加坡教育部(MOE)AcRF一级(M4012082.020)、南洋理工大学(NTU)弟子资助基金(SUG)和NTU NAP的团结研究资助。
附录

附录A. 具体实行设置

目标检测和实例分割。我们在以ResNet-50为主干网络的Faster RCNN[33]和Mask RCNN[9]上评估CARAFE。这些方法利用了FPN[21]。在练习和推理中,我们调解输入图像的巨细,使其短边有800像素或长边有1333像素,同时保持其纵横比稳定。我们采用同步SGD,初始学习率为0.02,动量为0.9,权重衰减为0.0001。我们在8个GPU上利用16的批量巨细(每个GPU 2张图像)。遵循Detectron[8]和MMDetection[2]的1倍练习筹划,我们总共练习12个周期,并在第8个和第11个周期将学习率降低0.1倍。
语义分割。我们利用以ResNet-50为主干网络的UperNet的官方实现{ }^{3} [38]。在练习期间,输入图像的短边巨细随机从{300,375,450, 525,600}中选择。在推理中,为了公平比力,我们采用单尺度测试,并将图像的短边设置为450像素。在练习和推理中,图像长边的最大长度均设置为1200。我们采用同步SGD,初始学习率为0.02,动量为0.9,权重衰减为0.0001。我们在8个GPU上利用16的批量巨细(每个GPU 2张图像),并采用同步批量归一化,这是语义分割中的常见做法。遵循[4],我们采用“poly”学习率计谋,此中当前迭代的学习率等于初始学习率乘以KaTeX parse error: Expected 'EOF', got '_' at position 21: …ext { iter /max_̲iter })^{\text …。我们将power设置为0.9,并总共练习20个周期。
图像修复。我们采用Global&Local[13]中的生成器和判别器网络作为基线。我们的生成器以带有掩码地区                                   M                              M                  M的                                   256                         ×                         256                              256 \times 256                  256×256图像                                   x                              x                  x作为输入,并输出缺失地区的                                   256                         ×                         256                              256 \times 256                  256×256预测                                             y                            ^                                       \hat{\mathbf{y}}                  y^​。然后,我们通过                                   y                         =                         (                         1                         −                         M                         )                         ⊙                         x                         +                         M                         ⊙                                   y                            ^                                       \mathbf{y}=(1-M) \odot \mathbf{x}+M \odot \hat{\mathbf{y}}                  y=(1−M)⊙x+M⊙y^​将预测图像与输入图像联合。最后,将组合后的输出                                   y                              \mathbf{y}                  y输入到判别器中。我们对基线模型进行了简朴修改,以得到更好的生成质量。与原始模型利用两个判别器相比,我们仅在修复地区利用一个PatchGAN风格的判别器[18]。这种修改可以得到更好的图像质量。
为了公平比力并思量实际应用,我们利用[41]引入的自由形式掩码作为二进制掩码                                   M                              M                  M。对于Partial Conv[23],我们只需在生成器中将卷积层更换为官方的Partial Conv模块。在练习期间,我们采用Adam求解器,学习率为0.0001,此中                                             β                            1                                  =                         0.5                              \beta_{1}=0.5                  β1​=0.5,                                             β                            2                                  =                         0.9                              \beta_{2}=0.9                  β2​=0.9。练习批量巨细为32。输入和输出在范围                                   [                         −                         1                         ,                         1                         ]                              [-1,1]                  [−1,1]内线性缩放。
附录B. CARAFE的可视化

在图6中,我们通过更多示例展示了CARAFE如何进行内容感知重组。在FPN结构的自上而下路径中,赤色单元通过CARAFE重组为绿色中心单元。
附录C. 可视化效果比力
目标检测和实例分割。如图7所示,我们提供了Mask RCNN基线和带有CARAFE的Mask RCNN在COCO[22] 2017验证集上的更多目标检测和实例分割效果比力。
语义分割。我们在图8中比力了ADE20k[47]验证集上UperNet基线和带有CARAFE的UperNet的语义分割效果。
图像修复。在图9中,我们展示了Places[46]验证集上Global&Local基线和带有CARAFE的Global&Local的图像修复效果比力。




代码

  1. class CARAFE(nn.Module):
  2.     def __init__(self, c, k_enc=3, k_up=5, c_mid=64, scale=2):
  3.         """ The unofficial implementation of the CARAFE module.
  4.         The details are in "https://arxiv.org/abs/1905.02188".
  5.         Args:
  6.             c: The channel number of the input and the output.
  7.             c_mid: The channel number after compression.
  8.             scale: The expected upsample scale.
  9.             k_up: The size of the reassembly kernel.
  10.             k_enc: The kernel size of the encoder.
  11.         Returns:
  12.             X: The upsampled feature map.
  13.         """
  14.         super(CARAFE, self).__init__()
  15.         self.scale = scale
  16.         self.comp = Conv(c, c_mid)
  17.         self.enc = Conv(c_mid, (scale*k_up)**2, k=k_enc, act=False)
  18.         self.pix_shf = nn.PixelShuffle(scale)
  19.         self.upsmp = nn.Upsample(scale_factor=scale, mode='nearest')
  20.         self.unfold = nn.Unfold(kernel_size=k_up, dilation=scale,
  21.                                 padding=k_up//2*scale)
  22.     def forward(self, X):
  23.         b, c, h, w = X.size()
  24.         h_, w_ = h * self.scale, w * self.scale
  25.         
  26.         W = self.comp(X)                                # b * m * h * w
  27.         W = self.enc(W)                                 # b * 100 * h * w
  28.         W = self.pix_shf(W)                             # b * 25 * h_ * w_
  29.         W = torch.softmax(W, dim=1)                         # b * 25 * h_ * w_
  30.         X = self.upsmp(X)                               # b * c * h_ * w_
  31.         X = self.unfold(X)                              # b * 25c * h_ * w_
  32.         X = X.view(b, c, -1, h_, w_)                    # b * 25 * c * h_ * w_
  33.         X = torch.einsum('bkhw,bckhw->bchw', [W, X])    # b * c * h_ * w_
  34.         return X
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4