A2U for deep matting

Affinity-Aware Upsampling

​ 相似度(affinity)在稠密预测任务中是一个非常重要的信息,二阶的特征常用于建立相似度信息,本文主要工作是将原有的动态上采样过程都总结成一阶的信息,并在此基础上提出使用二阶的信息,用此将自相似性引入采样过程,同时通过低秩双线性模型减少模型参数,降低模型计算开支

另一种将Upsampling算子统一的视角:

​ 对于一个单通道的feature map ZRk×kZ \in \mathbb{R}^{k \times k} ,目标是通过 ZZ 去产生一个新的像素值(upsampled feature point),将 ZZ 向量化为 zRk2×1z \in \mathbb{R}^{k^2 \times 1},同时设上采样算子 WRk×kW \in \mathbb{R}^{k \times k} 向量化为 wRk2×1w \in \mathbb{R}^{k^2 \times 1},则现有的上采样算子的形式可以统一为 g(w,z)=wTzg(w,z)=w^Tz (对应新的feature map中一个像素点)

​ 文章中将现有的上采样算子分为了两类:

distance-based Upsampling

​ 基于位置信息的上采样算子,例如最临近插值

feature-based Upsampling

​ 基于图像内容信息的上采样算子,例如CARAFE,max upooling,IndexNet

可以看出无论哪种采样算子都是 g(w,z)=wTzg(w,z)=w^Tz 的形式

Learning Affinity-Aware Upsampling

​ 现有一个feature map MRC×H×W\mathcal{M} \in \mathbb{R}^{C \times H \times W},目标为产生大小为 MRC×rH×rW\mathcal{M}' \in \mathbb{R}^{C \times r H \times r W} 的新feature map,对于M\mathcal{M}' 中每一点(设为 (i,j)(i,j) 位置处),我们都要去学习一个上采样核 wRk2×1w \in \mathbb{R}^{k^2 \times 1} ,则将 ww 与原图像对应点(ir,jr)(\lfloor \frac{i}{r} \rfloor,\lfloor \frac{j}{r} \rfloor)邻域内的图像信息经过 g(w,z)=wTzg(w,z)=w^Tz 则可得新feature map (i,j)(i,j) 位置处的像素值

本文Affinity 定义:

​ 对于 ll 和其他所有可能位置 pp 之间的Affinity定义为:

softmaxp(sim(ml,mp))\mathop {softmax }\limits_{\forall p}(sim(m_l,m_p))

​ 相似度直接采用内积的方式定义:

sim(ml,mp)=mlTmpsim(m_l,m_p)=m_l^T m_p

image

上采样算子的生成:

​ 设原 local feature map(注意这个定义,它是目标采样点的邻域!!!)为 XRC×h1×w1\mathcal{X} \in \mathbb{R}^{C \times h_1 \times w_1} ,将其每一个关于通道切片向量化为XRC×NX \in \mathbb{R}^{C \times N} ,其中N=h1×w1N=h_1 \times w_1 ,我们的目标是基于XX 产生一个上采样算子,下面我们利用Affinity去进行上采样,我们不使用一阶的信息构建 $w = \sum_{i = 1}^C \sum_{j = 1}^N a_{ij} x_{ij} $​,因为二阶的信息常常用于构建相似度,使用类似于transfomer中的二阶信息(QKV矩阵):为了编码二阶的信息,我们的想法是利用双线性插值,设另外一个feature map yRC×h2×w2\mathcal{y} \in \mathbb{R}^{C \times h_2 \times w_2},同样将其向量化为YRC×MY \in \mathbb{R}^{C \times M}M=h2×w2M=h_2 \times w_2yiRC×1xiRC×1\boldsymbol{y}_i\in \mathbb{R} ^{C\times 1}\,\,\boldsymbol{x}_i\in \mathbb{R} ^{C\times 1}

w=i=1Nj=1Maijψ(xi)Tϕ(yi)=k=1Ci=1Nj=1Maijqkxiktkyjk=k=1Ci=1Nj=1Maijkxikyjk=k=1CXkAkYkw=\sum_{i=1}^N{\sum_{j=1}^M{a_{ij}\psi \left( \boldsymbol{x}_i \right) ^T\phi \left( \boldsymbol{y}_i \right)}}=\sum_{k=1}^C{\sum_{i=1}^N{\sum_{j=1}^M{a_{ij}q_kx_{ik}t_ky_{jk}}}} \\ =\sum_{k=1}^C{\sum_{i=1}^N{\sum_{j=1}^M{\mathscr{a}_{ijk}x_{ik}y_{jk}}}}=\sum_{k=1}^C{ {X}_k\boldsymbol{A}_k {Y}_k}

​ 其中 ϕ\phiψ\psi 为embedding function,$\mathscr{a}{ijk}=a{ij}q_kt_k $ ,XkRN×1 YkRM×1X_k \in \mathbb{R}^{N \times 1} \ Y_k \in \mathbb{R}^{M \times 1}AkRN×M\boldsymbol A_k \in \mathbb{R}^{N \times M} , 是第k层feature map的affinity matrix。

AkRN×M\boldsymbol A_k \in \mathbb{R}^{N \times M} 参数量非常大而且难以训练,为了减少参数量且将计算过程变为卷积形式,我们引入假设:rank(Ak)drank(\boldsymbol A_k) \le d ,则可以分解为Ak=UkVKT\boldsymbol A_k = \boldsymbol U_k\boldsymbol V_K^T ,$ \boldsymbol U_k \in \mathbb{R}^{N \times d},\boldsymbol V_k \in \mathbb{R}^{M \times d}$,因此上式可变形为:

w=k=1CxkUkVkTyk=k=1C1TUkTxkVkTyk=1Tk=1CUkTxkVkTykw=\sum_{k=1}^C{\boldsymbol{x}_k\boldsymbol{U}_k\boldsymbol{V}_{k}^{T}\boldsymbol{y}_k}=\sum_{k=1}^C{\boldsymbol{1}^T\boldsymbol{U}_{k}^{T}\boldsymbol{x}_k\odot \boldsymbol{V}_{k}^{T}\boldsymbol{y}_k} \\ =\boldsymbol{1}^T\sum_{k=1}^C{\boldsymbol{U}_{k}^{T}\boldsymbol{x}_k\odot \boldsymbol{V}_{k}^{T}\boldsymbol{y}_k}

​ 其中 \odot 代表Hadmard积,列向量 1Rd×1\boldsymbol 1 \in \mathbb{R}^{d \times 1}

​ 因为我们要生成 s×ss \times s 大小的上采样核,则列向量 1\boldsymbol 1 可写为 PRd×s2\boldsymbol P \in \mathbb{R}^{d \times s^2} ,则**WW向量化之后的采样核 ww** 可以写为:

w=PTk=1CUkTxkVkTyk=PTcatdr=1(k=1C(ukrTxkvkrTyk))=PTcatdr=1(gconv(Ur,X)gconv(Vr,Y))=conv(P,catdr=1(gconv(Ur,X)gconv(Vr,Y)))\boldsymbol{w}=\boldsymbol{P}^T\sum_{k=1}^C{\boldsymbol{U}_{k}^{T}\boldsymbol{x}_k\odot \boldsymbol{V}_{k}^{T}\boldsymbol{y}_k}=\boldsymbol{P}^T\underset{r=1}{\overset{d}{cat}}\left( \sum_{k=1}^C{\left( \boldsymbol{u}_{kr}^{T}\boldsymbol{x}_k\odot \boldsymbol{v}_{kr}^{T}\boldsymbol{y}_k \right)} \right) \\ =\boldsymbol P^T \underset{r=1}{\overset{d}{cat}} \left( gconv\left( \mathcal{U}_r,\mathcal{X} \right) \odot gconv\left( \mathcal{V}_r,\mathcal{Y} \right) \right) \\ =conv\left( \mathcal{P} ,\underset{r=1}{\overset{d}{cat}}\left( { gconv\left( \mathcal{U}_r,\mathcal{X} \right) \odot gconv\left( \mathcal{V}_r,\mathcal{Y} \right) } \right) \right)

​ 其中ukrRN×1,vkrRM×1\boldsymbol u_{kr} \in \mathbb{R}^{N \times 1},\boldsymbol v_{kr} \in \mathbb{R}^{M \times 1},卷积核PRd×s2×1×1\mathcal{P} \in \mathbb{R}^{d \times s^2 \times 1 \times 1}URd×C×h1×w1,VRd×C×h2×w2\mathcal{U} \in \mathbb{R}^{d \times C \times h_1 \times w_1},\mathcal{V} \in \mathbb{R}^{d \times C \times h_2 \times w_2} 都是 PRN×d×1,URN×d×C,VRN×d×C\boldsymbol {P} \in \mathbb{R}^{N \times d \times 1},\boldsymbol {U} \in \mathbb{R}^{N \times d \times C},\boldsymbol {V} \in \mathbb{R}^{N \times d \times C} 的reshaped tensor,conv(K,M)conv(\mathcal{K,M}) 代表在使用kernal K\mathcal{K} 在feature map M\mathcal{M} 上使用卷积操作,gconv代表group convolution,且 groups 的个数为 CC至此,我们将一个新的算子化为了能用高效的 einsum 操作的形式

补充:
  • X,Y\mathcal{X},\mathcal{Y} 可以选择相同也可以选择不同,本文选择 X=Y\mathcal{X}=\mathcal{Y},这样就对应着 self attention 中的自相似性
  • rank dd 的范围可以在 [1,min(N,M)]\left[ 1,min(N,M)\right] 内选取,本文令 d=1d=1
  • U,V\mathcal{U},\mathcal{V} 就可以视为 encoding function,为了补偿低秩模型导致的参数量过小的情况,本文选取动态生成 U,V\mathcal{U},\mathcal{V},它们的参数可以根据模型复杂度选择:共享参数,不共享参数,半共享参数,本文中 U,V\mathcal{U},\mathcal{V} 的生成过程为:先通过一次平均值池化之后,在通过一次 1×11 \times 1 的卷积生成

与下采样算子融合

​ 类似于IndexNet,upsampling可以extend to downsampling,我们使用相同的 U,V\mathcal{U,V} 在上下采样操作中,但是使用不同的 P\mathcal{P} 考虑到采样核的大小不同。即上采样核 Wu\mathcal{W}_u 大小为 Su2×H×W,{S_u^2} \times H \times W , 下采样核$\mathcal{W}_d $ 大小为 Sd2×H/r×W/r{S_d^2} \times H/r \times W/r ,本文中令 sd2=r2Sus_d^2=r^2S_u

一些经验:

  • high-resolution feature map(图像大的)对于提取spatial information来说更加有效
  • 二阶的特征比一阶特征在恢复spatial details更加有效

网络设计:

a2u matting

​ 整个网络沿用了UNet的结构,(没看懂A2U在哪里)

Q:the pairwise similarity is damaged during upsampling?