[论文复现] Fully-Convolutional Siamese Networks for Object Tracking

版权声明:本文为博主原创文章,转载需标注来源。 https://blog.csdn.net/Code_Mart/article/details/80737896

摘要

最近,在实验室里有个关于医学影像的项目,项目里涉及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”。

SiamFC

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

CFNet

二、环境配置

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

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

1.Tensorflow 版本

首先,既然是Tensorfflow版本,就必定要用到Tensorflow。我推荐大家用原生pip进行安装,比较方便。此外,大家进行安装gpu版本,虽然tensorflow-gpu安装所需的环境配置起来很麻烦(要装CUDA,cuDNN,这两个下载起来太慢了,貌似国内也没有镜像,太不方便了),但是许多项目中还是普遍使用该版本的。
Link:
Tensorflow 官网:
https://www.tensorflow.org/?hl=zh-cn
如何兼容Python 2.x 和Python 3.x:
https://blog.csdn.net/sevensevensevenday/article/details/76223999
Windows下Tensorflow的安装教程:
https://blog.csdn.net/u010099080/article/details/53418159
https://blog.csdn.net/JerryZhang__/article/details/60763161

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

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

最后,因为作者使用的是Python 2.7,而如今 Tensorflow 所支持的版本是Python 3.5 和 3.6,所以我们需要对代码进行修改:
(1)print加上()
(2)iteritems替换为items
(3)xrange替换为range

此外,数据集解压后不是直接放在data文件夹里面,而是data里的validation子文件夹里(这一点其实可以在parameters\evaluation.json中修改)。

Link:
SiamFC-tf配置教程:
https://blog.csdn.net/weixin_38493025/article/details/80471731#commentsedit

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的问题。

Link :
VS 往年版本镜像:
https://msdn.itellyou.cn
Windows下安装MatConvNet:
https://blog.csdn.net/yexiaogu1104/article/details/73177690
安装MatConvNet时的故障排查:
https://blog.csdn.net/w1301100424/article/details/80602145
https://blog.csdn.net/u014580035/article/details/53289424

三、论文理解

由于我的知识有限,也不能在这里给大家讲解这两篇论文了,怕误人子弟。
这两篇论文给我的感觉是:要想理解这两篇论文,你得先搞懂CNN,Siamese Net,Object Track等等。
这里放两篇之前看的博客,希望大家能有所收获:
Fully-Convolutional Siamese Networks for Object Tracking基于全卷积孪生网络的目标跟踪算法SiameseFC
【目标跟踪】SiameseFC & CFNet

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

作者信息:
CSDN:Code_Mart
Github:Bojack-want-drink

猜你喜欢

转载自blog.csdn.net/Code_Mart/article/details/80737896