CARAFE: Content-Aware ReAssembly of FEatures
来源:ICCV2019
作者机构:港中文,南洋理工
摘要:
特征上采样对于稠密预测十分重要,本文提出了依据内容感知进行特征重组的新方式CARAFE,具有感受野更大、可感知内容、轻量易计算的特点,易于集成到网络结构中。
引言
目前常用上采样由2种:最近邻插值、双线性插值。但最近邻和双线性插值只考虑亚像素邻域,无法捕获密集预测任务所需的丰富语义信息。
反卷积也可用于上采样,但反卷积在整张图像上使用的是同一个卷积核,并未考虑到图像内容。此外,反卷积是使用卷积操作实现的,涉及到大量参数,当卷积核较大时计算负担较大,因此,不适用于覆盖较大区域,限制了模型的表达能力和性能。
本文试图探究一种可整合较大感受野的信息、可即时对特定实例内容进行适应、可保持计算效率的特征上采样操作,即提出的CARAFE。CARAFE通过加权组合对以每个位置为中心的预定义区域内的特征重组,加权的权重通过一种content-aware的方式获得。每个位置得到多组上采样权重。特征上采样通过重新将生成的特征排列为一个空间块实现。
这些空间自适应权值不作为网络参数学习,是使用一个轻量级的全卷积模块和softmax激活即时预测得到的。
本文在4个主流的稠密预测任务(目标检测、实例分割、语义分割、图像修复)上进行了实验,证实了提出的特征上采样的有效性(速度、性能)。
CARAFE
原feature map X(C×H×WC\times H\times WC×H×W),目标feature map X‘(C×σH×σWC\times \sigma H\times \sigma WC×σH×σW)分为2步:(1)为每个位置l=(i,j)预测用于重组的kernel;(2)用预测的kernel重组X’的特征。
**(1)kernel预测模块:**对应于framework的上面橙色框内容,包括3个子模块:通道压缩、内容编码、kernel规范化
X’的每个位置l‘=(i’,j’)都对应于X的一个特定位置l=(i,j),N(Xl,k)对应于X内l的kk邻域,使用kernel预测模块预测每个l‘位置对应的kernel Wl’W_{l’}Wl’
X的每个位置对应于X‘的σ2\sigma^2σ2个位置,X’的每个位置的计算都需要一个kup×kupk_up\times k_upkup×kup大小的重组kernel。因此,该模块的输出大小为σ2k2up×H×W\sigma^2 k_2^{up} \times H \times Wσ2k2up×H×W,这里,Cup=σ2k2upC_up=\sigma^2 k_2^{up}Cup=σ2k2up
a.通道压缩:使用11卷积将通道数从C压缩至Cm,用于减少后续计算量,这样便允许后续上采样时使用更大的kernel。实验证明在一定范围内通道减少不会损伤性能。
b.内容编码:基于压缩后的feature map,使用大小为kencoderk_{encoder}kencoder的卷积层生成用于重组特征的kernel,该层的参数量为kencoder×kencoder×Cm×Cupk_{encoder} \times k_{encoder}\times C_m \times C_{up}kencoder×kencoder×Cm×Cup。使用更大的kencoderk_{encoder}kencoder会扩大感受野,探索更大范围内的上下文信息,但计算复杂度随着kencoderk_{encoder}kencoder的大小按平方增长。因此,kencoderk_{encoder}kencoder需要在性能和计算量间权衡。实验证明,kencoder=kup−2k_{encoder}=k_{up}-2kencoder=kup−2可在两者间进行较好的权衡。
c.kernel规范化:对于得到的σ2kup2×H×W\sigma^2 k^2_{up} \times H \times Wσ2kup2×H×W的feature map,将其重组为k2up×σH×σWk_2^{up} \times \sigma H \times \sigma Wk2up×σH×σW的feature map,并对每个位置的所有通道的值使用softmax函数归一化,使得每个位置的所有通道值和为1。对于X‘的每个位置l’,都有k2upk_2^{up}k2up个参数对应,用于重组特征权重(对应于重组卷积核Wl′W_{l'}Wl′,大小为kup×kupk_{up}\times k_{up}kup×kup)。
(2)基于内容感知的重组模块:
l’对应一个以l为为中心的正方形区域N(Xl,kup)N(X_l,k_{up})N(Xl,kup),重组的l’处的特征计算如下,其中,r=⌊kup/2⌋r=\left \lfloor k_{up}/2 \right \rfloorr=⌊kup/2⌋:
实验结果