论文地址:https://arxiv.org/pdf/2203.02146.pdf
源码地址:https://github.com/gangweiX/ACVNet
出发点:
Cost Volume在立体匹配中至关重要,本文提出一种基于注意力权重的代价体构建方法,此方法可以去除冗余信息,保留与匹配相关的信息;此外,提出一种多层级自适应的块匹配策略来得到具有区分性的匹配特征,该方法可以提高弱(无)纹理区域的特征表达能力;所构建的代价体Attention Concatenation Vloume (ACV) 可以作为子模块接入到其它模型中,使得模型轻量化的同时提升精度。
注意力组合代价体主要包含三个部分:初始拼接代价体构建、注意力权重生成模块、注意力滤波模块;
给定输入图像对 I l 、 I R ∈ R H × W × 3 I_l、I_R \in R^{H\times W\times 3} Il、IR∈RH×W×3,先经过权值共享的特征提取模块得到特征向量,将左右视图的特征向量降维到32维: f l 、 f r ∈ R N c × H 4 × W 4 ( N c = 32 ) f_l 、 f_r \in R^{N_c \times \frac{H}{4} \times \frac{W}{4}} \ (N_c=32) fl、fr∈RNc×4H×4W (Nc=32) ,初始的代价体由左右视图的特征体直接拼接而来,如式1所示:
C concat ( ⋅ , d , x , y ) = Concat { f l ( x , y ) , f r ( x − d , y ) } (1) \mathbf{C}_{\text {concat }}(\cdot, d, x, y)=\text { Concat }\left\{\mathbf{f}_{l}(x, y), \mathbf{f}_{r}(x-d, y)\right\}\tag1 Cconcat (⋅,d,x,y)= Concat {fl(x,y),fr(x−d,y)}(1)
其中 c c o n c a t ∈ R 2 N c × D 4 × H 4 × W 4 c_{concat}\in R^{2N_c\times \frac{D}{4}\times \frac{H}{4}\times \frac{W}{4}} cconcat∈R2Nc×4D×4H×4W,D代表视差的最大值;
注意力权重的作用是抑制初始代价体中任务无关的信息,增强任务相关的信息。为此,将左右视图的相关性中提取的几何信息生成注意权值。弱纹理区域无法提供有效的匹配信息,使用传统的方法来构建点对点的匹配代价是不可靠的;为了解决这个问题,本文提出了基于多尺度自适应块匹配鲁棒的匹配代价构建方法(multi-level adaptive patch match:MAPM);
用公式表示此过程:
记第g组的特征表示为 f l g , f r g f_l^g, f_r^g flg,frg,则 C p a t c h C_{patch} Cpatch 可以表示为:
C p a t c h l k ( g , d , x , y ) = 1 N f / N g ∑ ( i , j ) ∈ Ω k ω i j k ⋅ C i j g ( d , x , y ) C i j g ( d , x , y ) = ⟨ f l g ( x − i , y − j ) , f r g ( x − i − d , y − j ) ⟩ (2) \begin{array}{c} \mathbf{C}_{p a t c h}^{l_{k}}(g, d, x, y)=\frac{1}{N_{f} / N_{g}} \sum_{(i, j) \in \Omega^{k}} \omega_{i j}^{k} \cdot C_{i j}^{g}(d, x, y) \\ \\ C_{i j}^{g}(d, x, y)=\left\langle\mathbf{f}_{l}^{g}(x-i, y-j), \mathbf{f}_{r}^{g}(x-i-d, y-j)\right\rangle \end{array}\tag2 Cpatchlk(g,d,x,y)=Nf/Ng1∑(i,j)∈Ωkωijk⋅Cijg(d,x,y)Cijg(d,x,y)=⟨flg(x−i,y−j),frg(x−i−d,y−j)⟩(2)
其中 C p a t c h l k C_{patch}^{l_k} Cpatchlk表示第k level的匹配代价, < . , . > <.,.> <.,.> 表示内积, ( x , y ) (x,y) (x,y) 表示像素位置, d d d 表示视差值, Ω k = ( i , j ) , ( i , j ∈ ( − k , 0 , k ) ) \Omega^{k}=(i, j), (i,j\in (-k, 0, k)) Ωk=(i,j),(i,j∈(−k,0,k))表示邻域像素(如图3所示,表示不同空洞卷积采集到的像素), w i j k w_{ij}^k wijk 表示可学习的权重(空洞卷积卷积核的参数);
首先通过左右视图的注意力权重构建特征图 ( N f = 320 N_f=320 Nf=320) ,沿着channel维度分组 N g = 40 N_{g}=40 Ng=40,再使用分组内积的方式得到Group-Wise Correlation Vloume ∈ R b × N g × d m a x 4 × h 4 × w 4 \in R^{b\times N_g\times \frac{d_{max}}{4}\times \frac{h}{4}\times \frac{w}{4}} ∈Rb×Ng×4dmax×4h×4w(这个代价体用于求注意力权重, ),0-8组作为 l 1 l_1 l1特征图,8-24组作为 l 2 l_2 l2 ,24-40 组作为 l 3 l_3 l3,对于每个 l 1 、 l 2 、 l 3 l_1、l_2、l_3 l1、l2、l3 特征,使用不同扩张率的空洞卷积核处理得到不同尺度的特征图 C p a t c h l 1 、 C p a t c h l 2 、 C p a t c h l 3 C^{l_1}_{patch}、C^{l_2}_{patch}、C^{l_3}_{patch} Cpatchl1、Cpatchl2、Cpatchl3
将三个patch的特征图拼接:
C patch = Concat { C patch l 1 , C patch l 2 , C patch l 3 } ∈ R b × N g × d m a x 4 × h 4 × w 4 (3) \mathbf{C}_{\text {patch }}=\text { Concat }\left\{\mathbf{C}_{\text {patch }}^{l_{1}}, \mathbf{C}_{\text {patch }}^{l_{2}}, \mathbf{C}_{\text {patch }}^{l_{3}}\right\} \in R^{b\times N_g\times \frac{d_{max}}{4}\times \frac{h}{4}\times \frac{w}{4}}\tag3 Cpatch = Concat {Cpatch l1,Cpatch l2,Cpatch l3}∈Rb×Ng×4dmax×4h×4w(3)
使用3D卷积与3D U-Net对其正则化,最后使用3D卷积将其channel维度压缩为1,得到注意力权重 A ∈ R b × 1 × d m a x 4 × h 4 × w 4 A\in R^{b\times 1\times \frac{d_{max}}{4}\times \frac{h}{4}\times \frac{w}{4}} A∈Rb×1×4dmax×4h×4w
使用视差GT来监督注意力权重A的学习,使用arg softmax来对A回归得到视差图,并与GT求smmoth L1损失;
使用注意力权重来去除初始代价体中冗余的信息,如式4所示:
C A C V ( i ) = A ⊙ C concat ( i ) (4) \mathbf{C}_{A C V}(i)=\mathbf{A} \odot \mathbf{C}_{\text {concat }}(i)\tag4 CACV(i)=A⊙Cconcat (i)(4)
其中 ⊙ \odot ⊙ 表示点乘。
ACVNet主要包含以下部分:特征提取、注意力权重体构建、代价聚合、视差预测;
使用2D CNN提取左右视图的特征图,得到原图大小为1/4的特征图,使用stride为1的CNN分别得到 channel为64, 128, 128大小为原图尺寸 1/4 的特征图,然后将其沿channel维度拼接得到注意力构建特征图 ∈ R b × 320 × H 4 × W 4 \in R^{b\times 320 \times \frac{H}{4}\times \frac{W}{4}} ∈Rb×320×4H×4W,最后使用CNN将其维度压缩到32 的匹配代价体构建特征图 ∈ R b × 32 × H 4 × W 4 \in R^{b\times 32\times \frac{H}{4}\times \frac{W}{4}} ∈Rb×32×4H×4W;
使用320通道的注意力权重构建特征图得到注意力权重体,使用32通道的匹配代价体构建特征图构建初始匹配代价体;然后使用注意力权重对初始匹配代价体进行滤波;
使用4个3D卷积和2个堆叠的3D U-Net网络进行代价体正则化,得到out1、out2、out3,如图2所示
基于期望的形式计算视差图:
d = ∑ k = 0 D max − 1 k ⋅ p k (5) d=\sum_{k=0}^{D_{\max }-1} k \cdot p_{k}\tag5 d=k=0∑Dmax−1k⋅pk(5)
Fast版本主要区别是使用注意力全重体生成视差图,然后使用该视差图来上下采样得到深度范围比较窄的视差假设体与注意力全重体,最后使用其来求视差图;
ACVNet的损失函数如式6所示:
L = λ a t t ⋅ Smooth L 1 ( d a t t − d g t ) + ∑ i = 0 i = 2 λ i ⋅ Smooth L 1 ( d i − d g t ) (6) \begin{array}{r} L=\lambda_{a t t} \cdot \operatorname{Smooth}_{L_{1}}\left(\mathbf{d}_{a t t}-\mathbf{d}^{g t}\right)+ \sum_{i=0}^{i=2} \lambda_{i} \cdot \operatorname{Smooth}_{L_{1}}\left(\mathbf{d}_{i}-\mathbf{d}^{g t}\right) \end{array}\tag6 L=λatt⋅SmoothL1(datt−dgt)+∑i=0i=2λi⋅SmoothL1(di−dgt)(6)
其中 d a t t d_{att} datt 为注意力体回归得到的视差图, d i d_i di 表示 o u t i out_i outi 回归得到的视差图;
ACVNet-Fast的损失函数如式7所示:
L f = λ a t t f ⋅ Smooth L 1 ( d a t t f − d g t ) + λ f ⋅ Smooth L 1 ( d f − d g t ) (7) L^{f}=\lambda_{a t t}^{f} \cdot \operatorname{Smooth}_{L_{1}}\left(\mathbf{d}_{a t t}^{f}-\mathbf{d}^{g t}\right)+\lambda^{f} \cdot \text { Smooth }_{L_{1}}\left(\mathbf{d}^{f}-\mathbf{d}^{g t}\right)\tag7 Lf=λattf⋅SmoothL1(dattf−dgt)+λf⋅ Smooth L1(df−dgt)(7)