Learning to Fuse Asymmetric Feature Maps in Siamese Trackers
1. Introduction
SiamRPN特点:
SiamRPN formulates the tracking problem as one-shot detection.
SiamRPN introduces a region proposal network(RPN) and utilizes Upchannel cross correlation.
UP-XCorr imbalences the parameter distribution, making the training optimization hard
SiamRPN++特点
SiamRPN++ introduces Depthwise Correlation to efficiently generate a multi-channel correlation Feature-Map to address the imbalence of parameter distribution.
Depthwise Correlation的缺点:
Limitation 1:
Limitation 2:
2. Related Work
1. MDNet: 2. ATOM: 3. DiMP: 4. KYS: 5. SiamFC:
3. Method
3.1 Siamese Networks for Tracking
c = f ( z ‾ , x ‾ ) = φ ( z ; θ ) ∗ φ ( x ; θ ) c=f(\overline{z},\overline{x})=\varphi(z;\theta) * \varphi(x;\theta) c=f(z,x)=φ(z;θ)∗φ(x;θ)
其中φ 是 n e t w o r k \varphi是network φ是network
z ‾ = φ ( z ; θ ) ∈ R C × η × ω \overline{z}=\varphi(z;\theta)\in \mathbb{R}^{C\times \eta \times \omega} z=φ(z;θ)∈RC×η×ω
x ‾ = φ ( x ; θ ) ∈ R C × H × W \overline{x}=\varphi(x;\theta)\in \mathbb{R}^{C \times H \times W} x=φ(x;θ)∈RC×H×W
f 是结合特征图响应图和相似度响应图的函数 f是结合特征图响应图和相似度响应图的函数 f是结合特征图响应图和相似度响应图的函数
-
c d w = f ( z ‾ , x ‾ ) = z ‾ ⊗ z ‾ c_{dw} = f(\overline{z},\overline{x})=\overline{z} \otimes \overline{z} cdw=f(z,x)=z⊗z
c d w ∈ R N × ( H − η + 1 ) × ( W − ω + 1 ) c_{dw}\hspace{2mm}\in \hspace{2mm} \mathbb{R}^{N \times (H-\eta+1)\times (W-\omega +1)} cdw∈RN×(H−η+1)×(W−ω+1)
⊗ 指的是 d e p t h − w i s e 两个特征图的 c o n v o l u t i o n 操作 \otimes \hspace{1mm}指的是depth-wise 两个特征图的 convolution操作 ⊗指的是depth−wise两个特征图的convolution操作
3.2 Asymmetric Convolution
v i = [ θ z θ x ] ∗ [ z ‾ x ‾ i ] = θ z ∗ z ‾ + θ x ∗ x ‾ i v_i = \begin{bmatrix} \theta_z&\theta_x \end{bmatrix}*\begin{bmatrix} \overline{z} \\ \overline{x}_i \end{bmatrix} \\ \hspace{3mm}=\theta_z * \overline{z}+\theta_x*\overline{x}_i \\ vi=[θzθx]∗[zxi]=θz∗z+θx∗xi
v = { v i ∣ i ∈ [ 1 , n ] } = { θ z ∗ z ‾ + b θ x ∗ x ‾ i ∣ i ∈ [ 1 , n ] } = θ z ∗ z ‾ + b θ x ∗ x ‾ v = \{v_i | i \in [1,n]\} \\ \hspace{34mm}=\{\theta_z*\overline{z} \hspace{2mm}+_b \hspace{2mm} \theta_x* \overline{x}_i \hspace{4mm} |\hspace{2mm} i \in [1, n] \} \\ \hspace{10mm}=\theta_z * \overline{z} \hspace{2mm} +_b \hspace{2mm} \theta_x * \overline{x} v={ vi∣i∈[1,n]}={ θz∗z+bθx∗xi∣i∈[1,n]}=θz∗z+bθx∗x
其中
x ∈ R H × W × C 是 s e a r c h 经过 b a c k b o n e 的 f e a t u r e − m a p x\in \mathbb{R}^{H\times W\times C}是search经过backbone的feature-map x∈RH×W×C是search经过backbone的feature−map
z ∈ R η × ω × c 是 t e m p l a t e 经过 b a c k b o n e 的 f e a t u r e − m a p z \in \mathbb{R}^{\eta \times \omega \times c}是template经过backbone的feature-map z∈Rη×ω×c是template经过backbone的feature−map
θ x ∗ x ‾ ∈ R ( H − η + 1 ) × ( W − ω + 1 ) × P 是 x f 经过 h e a d ( k e r n e l _ s i z e = z f 的 k e r n e l _ s i z e = [ η , ω ] ) 之后的 r e s p o n s e − m a p , 维度是 [ H − η + 1 , W − ω + 1 , P ] \theta_x * \overline{x} \in \mathbb{R}^{(H-\eta+1)\times(W-\omega +1)\times P}是x_f经过head(kernel\_size=z_f的kernel\_size=[\eta, \omega])之后的response-map,维度是[H-\eta+1,W-\omega +1,P] θx∗x∈R(H−η+1)×(W−ω+1)×P是xf经过head(kernel_size=zf的kernel_size=[η,ω])之后的response−map,维度是[H−η+1,W−ω+1,P]
θ z ∗ z ‾ ∈ R 1 × 1 × P 是 z f 经过 h e a d ( k e r n e l _ s i z e 跟自己相同 [ η , ω ] ) 之后的 r e s p o n s e ,维度是 [ 1 , 1 , P ] \theta_z * \overline{z} \in \mathbb{R}^{1\times1\times P}是z_f经过head(kernel\_size跟自己相同[\eta, \omega])之后的response,维度是[1, 1, P] θz∗z∈R1×1×P是zf经过head(kernel_size跟自己相同[η,ω])之后的response,维度是[1,1,P]
+ b 和 ⊕ 的含义类似,也是 b r o a d c a s t 后相加,就是把维度是 [ 1 , 1 , P ] 的 z ‾ , b r o a d c a s t 成和 x ‾ 一样的 [ H − η + 1 , W − ω + 1 , P ] ,这一步才是核心,就是把原本 D W − C o r r 的卷积变成了相加,计算代价自然而然就降低了。 +_b和\oplus的含义类似,也是broadcast后相加,就是把维度是[1, 1, P]的\overline{z},broadcast成和\overline{x}一样的[H-\eta+1, W-\omega+1, P],这一步才是核心,就是把原本DW-Corr的卷积变成了相加,计算代价自然而然就降低了。 +b和⊕的含义类似,也是broadcast后相加,就是把维度是[1,1,P]的z,broadcast成和x一样的[H−η+1,W−ω+1,P],这一步才是核心,就是把原本DW−Corr的卷积变成了相加,计算代价自然而然就降低了。
这就是论文的核心工作,通过公式的分解,把DW-Corr变成矩阵Broadcast拼接
实际上在代码中,除了Search_region的response-map和template的response-map之外,还拼接了search-region的bbox=[batch, 4],bbox经过interpolate,映射为Search-region的feature-map中的坐标,然后经过Conv为[batch, 1],就可以个跟Template一样进行拼接了