Fully-Convolutional Siamese Networks for Object Tracking

最近工作中接触到一个目标追踪(object tracking)的深度学习算法(Siamese FC)。

文章题目:《Fully-Convolutional Siamese Networks for Object Tracking》
Tensorflow code:https://github.com/torrvision/siamfc-tf

  • 目标追踪(Object Tracking)
  • 全卷积(Fully-Convolutional)
  • 模型训练
  • 模型数据集
  • 运行和评估

这个网络的名字取得很有意思, Siamese Network(暹罗人网络/暹罗猫网络),估计作者是个泰国人吧,或者很喜欢撸猫。算法本身比较简单,存在很多的优化点,但是siameseFC算法的思想也算得上开辟了目标追踪的一个新方向。

1.目标追踪(Object Tracking)
该方法的追踪原理很简单,就是拿目标图片(exemplar image)与待搜索图片(candidate image)进行逐块区域对比,从左往右,从上至下。作者提出了用一个函数f (z,x)定义Z(exemplar image)和X(candidate image)的相似度,最终得到相似度分值表(score map),相似度较高的地方分值较高,反之相似度较低的地方分值较低。在下图中的地方表示计算相似的过程,1717*1为score map,红色和蓝色的点分别代表了相似度。

Smiley face

2.全卷积(Fully-Convolutional)
当然,在做相似度计算之前,还需要采用φ对原始图像进行特征提取,可以视为embedding的过程。卷积层的结构如下表所示,与AlexNet卷积层的结构一毛一样,除了输入大小和最后的全连接层。
关于全卷积网络的细节:

1.  Maxpooling is employed after the first two convolutional layers. 
2.  ReLU non-linearities follow every convolutional layer except for conv5, the final layer. 
3.  Batch normalization is inserted immediately after every linear layer.
4.  No padding is introduced within the network. 
5.  The stride of the final representation is eight.
6.  在第2、4、5层采用了group的方法.

Smiley face

3.模型训练
作者使用logistics loss作为损失函数,将score map上的点分成positive 和 negative,v表示真实的值,y表示预测值,取值范围为{-1,+1}。
Smiley face
然后作者又定义整个score map的损失函数为individual loss的均值,最后通过梯度下降的方式进行训练。
Smiley face

4.模型数据集
这个没啥好介绍的,作者采用了IamgeNet图像识别挑战的数据集(ILSVRC),包含了大约4500个视频,并且视频的每一帧都有标记的groundtruth,与其他的benchmark相比作者认为这个数据集屌爆了!

5.运行和评估
根据作者开源的代码测试截图如下,作者把模型数据集放在google drive上面,所以需要翻墙才能下载。

Smiley face
Smiley face

模型在给定的数据集运行时效果良好,主要的优缺点如下:

优点:
1.  模型速度比较快,我在一台没有GPU的PC上,运行速度也还可以;
2.  模型在当时算是一种比较新的思路吧;
缺点:
1.  精度低,当物体受到遮挡时容易丢失目标;
2.  只能进行跟踪,无法识别出物体具体是什么,而且只能识别一个物体