[论文笔记] Fully-Convolutional Siamese Networks for Object Tracking

最近,在实验室里有个关于医学影像的项目,项目里涉及 Object tracking 。老板给了篇参考论文让我们先进行阅读,也就是 SiamFC。在阅读期间,我遇到了许多的困难,在此记录下来,希望以后阅读这篇论文的人能绕开不必要的坑。

一、关于论文

《Fully-Convolutional Siamese Networks for Object Tracking》这篇论文是University of Oxford的Luca Bertinetto *, Jack Valmadre *, João F. Henriques, Andrea Vedaldi, Philip H.S. Torr所写的,发表在ECCV 2016 。

在这篇论文中,作者提出了 Fully-Convolutional Siamese Networks(后面简称SiamFC),该神经网络用于Object Tracking。与大多数Object Tracking不同的是,这篇Paper用SiamFc作为基本的跟踪算法,以end-to-end的形式在训练集上训练而成,且训练完成以后,“Our tracker operates at frame-rates beyond real-time and, despite its extreme simplicity, achieves state-of-the-art performance in multiple benchmarks”。

[论文笔记] Fully-Convolutional Siamese Networks for Object Tracking_第1张图片

此外,作者于2017年对SiamFC做出了改进,发表了《End-to-end representation learning for Correlation Filter based tracking》。在这篇论文中,作者引进了Correlation Filter 结构,并将改进后的网络称为CFNet。

[论文笔记] Fully-Convolutional Siamese Networks for Object Tracking_第2张图片

二、环境配置

对于论文实现部分,作者提供了两种方式:一种是MATLAB版本,另一种是Tensorflow版本。

我是通过Tensorflow版本实现复现的,这个版本的好处在于代码比较清晰,环境配置不算麻烦,重点是需要修改的地方知道如何修改。

1.Tensorflow 版本

首先,既然是Tensorfflow版本,就必定要用到Tensorflow。我推荐大家用原生pip进行安装,比较方便。此外,大家进行安装gpu版本,虽然tensorflow-gpu安装所需的环境配置起来很麻烦(要装CUDA,cuDNN,这两个下载起来太慢了,貌似国内也没有镜像,太不方便了),但是许多项目中还是普遍使用该版本的。

参考资料:

  • Tensorflow 官网
  • 官方解决方案Windows上Python2和3如何兼容
  • 【TensorFlow】Windows10 64 位下安装 TensorFlow - 官方原生支持
  • Windows下安装原生TensorFlow

装好了Tensorflow,事情基本就解决了一半了,接着再来配置论文所需要的环境。

参照项目的README将项目git到文件夹后,将作者所提供的预训练网络和数据集下载到指定数据集。由于作者发布的时间比较久,在requirements.txt中所指定的库的版本大多不是最新版本,我们只需要直接pip install最新版本的库就好了。

最后,因为作者使用的是Python 2.7,而如今 Tensorflow 所支持的版本是Python 3.5 和 3.6,所以我们需要对代码进行修改:print加上(),iteritems替换为items,xrange替换为range。此外,数据集解压后不是直接放在data文件夹里面,而是data里的validation子文件夹里(这一点其实可以在parameters\evaluation.json中修改)。

相关资料:

  • SiamFC-tf配置教程

2.Matlab版本

真心不推荐使用这个版本进行复现,因为当我废了很大劲去配置好环境,才发现还需要去修改代码,以使得其正常运行(关键是,没有前辈的博客能参考,这代表我需要完整看完整篇代码,但我并没有这么多时间,毕竟先复现才是关键)。

在Matlab版本中,你需要GPU,CUDA drivers, cuDNN, Matlab, MatConvNet 。其中,最为繁琐的步骤莫过于配置MatConvNet(MatConvNet是实现卷积神经网络(CNN)的MATLAB TOOLBOX,用于计算机视觉应用)。在配置 MatConvNet 时,我遇到的最为恼火的问题就是需要在编译该工具箱,而这意味着需要使用"mex -setup",即需要你有安装C或C++编译器。

一开始,我觉得比较简单,下个TDM-GCC以及MinGW64编译器就好了,毕竟Matlab官方也指出支持该编译器进行混合编译。**但是,MatConvNet中的命令"vl_compilenn"的源代码中就指出 MinGW64 编译器不支持,要使用 Visual Studio C++ 编译器!**那就得去安装Visual Studio,但是,你得安装与你Matlab版本相对应的VS才行,而往往同年版本的Matlab并不支持同年版本的VS。
这里,你往往又得查看官方文档,然后还得解决下载往年版本的VS的问题。

相关资料 :

  • VS 往年版本镜像
  • Windows下安装MatConvNet
  • 在matlab中安装“MatConvNet”中遇到的问题和解决方法:“No supported compiler or SDK was found."
  • MATLAB安装matconvnet toolbox时的故障排除技巧

三、论文理解

由于我的知识有限,也不能在这里给大家讲解这两篇论文了,怕误人子弟。
这两篇论文给我的感觉是:要想理解这两篇论文,你得先搞懂CNN,Siamese Net,Object Track等等。
这里放两篇之前看的博客,希望大家能有所收获:

  • Fully-Convolutional Siamese Networks for Object Tracking基于全卷积孪生网络的目标跟踪算法SiameseFC
  • 【目标跟踪】SiameseFC & CFNet

如果你看到了这篇文章的最后,并且觉得有帮助的话,麻烦你花几秒钟时间点个赞,或者受累在评论中指出我的错误。谢谢!

作者信息:
知乎:没头脑
LeetCode:Tao Pu
CSDN:Code_Mart
Github:Bojack-want-drink

你可能感兴趣的:(Paper,CV,CV,杂谈)