简介
paper:Fully-Convolutional Siamese Networks for Object Tracking
code:siamfc-pytorch
siamfc
是siamese目标跟踪的开山鼻祖,siamfc
提出的背景是:直接使用深度网络用于目标跟踪无法满足实时性要求。而siamfc
开创性地使用siamese netword
结构用于目标跟踪,并使用ILSVRC15
这种大型的数据集进行预训练,从而使得siamfc
的性能非常好。
主要流程
siamfc
的网络框架如上图所示,其中z
是参照图片,x
是测试图片,将参照图片和测试图片都输入到backbone
中提取特征,输出参照图片的特征图
6
∗
6
∗
128
6*6*128
6∗6∗128,测试图片的特征图
22
∗
22
∗
128
22*22*128
22∗22∗128;之后将参照图片的特征图与测试图片的特征图进行卷积运算从而得到score map
.取score map
的max score
距离中心的偏移,乘以网络缩放比例从而得到跟踪目标的偏移量.
siamfc
将bounding box
的中心置为整幅图片的中心,同时以bounding box
的中心,取半径为R
的区域作为正标签。
y [ u ] = { + 1 if k ∥ u − c ∥ ≤ R − 1 otherwise y[u]=\left\{\begin{array}{ll} +1 & \text { if } k\|u-c\| \leq R \\ -1 & \text { otherwise } \end{array}\right. y[u]={+1−1 if k∥u−c∥≤R otherwise
训练阶段
训练时,取ILSVRC15
的来自同一个video的两张图片组成训练图像对,这两张图片间距至少是T
帧。将这样的图像对输入到siamfc
中,并采用损失函数:
L ( y , v ) = 1 ∣ D ∣ ∑ u ∈ D ℓ ( y [ u ] , v [ u ] ) L(y, v)=\frac{1}{|\mathcal{D}|} \sum_{u \in \mathcal{D}} \ell(y[u], v[u]) L(y,v)=∣D∣1u∈D∑ℓ(y[u],v[u])
其中
ℓ
(
y
,
v
)
=
log
(
1
+
exp
(
−
y
v
)
)
\ell(y, v)=\log (1+\exp (-y v))
ℓ(y,v)=log(1+exp(−yv)),
D
D
D是score map
,y[u]
是标签,v[u]
是预测的score
.
测试阶段
测试时,将首帧图像作为参照图像z
,并输入到backbone
得到其模板特征,该模板特征每过若干帧通过线性插值的方法更新。
实验结果
小结
siamfc
首次将siamese network
引入目标跟踪任务,之后siamRPN
等各种优秀的siamese
目标跟踪算法被提出。siamese network
可以用于计算两张图片的相似性,而在目标跟踪中正是在跟踪过程中寻找与目标特征最相似的区域,所以siamese network
可以很好地用于目标跟踪任务中。