文章目录
前言
之前看了关于siamFC的论文、博客和代码,已经跑通了代码,但是,只是大概初步学习,没有认真的研究细节。为了后面更好的学习Siam系列的算法还是要重新认真的学习SiamFC。
先附上论文和代码。
论文:Fully-Convolutional Siamese Networks for Object Tracking
代码:基于pytorch框架的
https://github.com/huanglianghua/siamfc-pytorch
训练代码的话,需要下载GOT-10k数据集。
提示:以下是本篇文章正文内容,下面案例可供参考
一、SiamFC 论文学习
本文在ILSVRC15数据集上建立了一种端到端训练的新型全卷积Siamese 网络,为视频中的目标检测提供了一种基本的跟踪算法。该跟踪算法以超出实时的帧速率运行,尽管其极其简单,但在多个基准测试(benchmark)中实现了最先进的性能。
1.介绍
问题:
监督数据的稀缺性,算法的实时性,约束深度学习在目标跟踪中的应用。对此,有些研究利用预先训练好的深度卷积网络来克服。比如:使用网络内部表示作为特征的“浅(shallow)”方法(例如相关滤波器),执行SGD(随机梯度下降)来微调多层网络。但是,“浅”方法没有充分利用端到端学习的好处,使用SGD微调,虽然可以获得最优结果,但无法实时运行。
作者提出:
在初始离线阶段训练一个深卷积网来解决一个更一般的相似学习问题,然后在跟踪过程中简单地在线评估这个函数。本文的关键贡献是证明了该方法在目前的跟踪基准中获得了非常有竞争力的性能,其速度远远超过帧率要求。
具体来说,作者训练一个Siamese网络在一个更大的搜索区域中定位一个样本图像。进一步的贡献,是一种新颖的Siamese架构,它对于搜索图像是完全卷积的:通过双线性层计算两个输入的互相关联,实现了密集而高效的滑动窗口评估。
2.深度相似学习在跟踪中的应用
学习跟踪任意对象可以使用相似性学习来解决。提出一个函数 f ( z , x ) \ f(z,x) \, f(z,x),比较样本图像 z \ z\, z与相同大小的候选图像 x \ x\, x进行比较,如果两个图像描述相同的对象,则返回高分,否则返回低分。
为了在新的图像中找到目标的位置,我们可以穷举测试所有可能的位置,并选择与目标的过去外观相似度最大的候选。在实验中,将简单地使用对象的初始外观作为范例。函数f将从一组标有目标轨迹的视频中学习。
z \ z\, z表示样本图像(即跟踪目标模板), x \ x\, x表示待搜索图像,需要就是在x中找到z的位置
使用深度卷积网络作为 f \ f\, f函数,深度卷积网络的相似学习通常使用Siamese架构来解决。Siamese网络对两个输入进行相同的 φ \ φ \, φ变换,然后将函数输出送入 g \ g \, g函数,最后得到相似性度量函数为:
f ( z ) = g ( φ ( z ) , φ ( x ) ) f(z) = g(φ(z),φ(x)) f(z)=g(φ(z),φ(x))
当函数 g \ g \, g是一个简单的距离或相似度量, φ \ φ \, φ可以被认为是一个嵌入的函数(特征提取网络)。
2.1 全卷积孪生结构
提出的这个孪生网络,对候选图像x是完全卷积的,并且满足平移不变性的。
引入 L τ \ L_\tau\, Lτ来表示平移算子, ( L τ x ) [ u ] = x [ u − τ ] \ (L_{\tau}x)[u]=x[u - \tau]\, (Lτx)[u]=x[u−τ],对于任何平移 τ \ \tau\, τ有
h ( L k τ x ) [ u ] = L τ h ( x ) h(L_{k\tau}x)[u]=L_\tau h(x) h(Lkτx)[u]=Lτh(x)则将信号映射到信号的函数 h \ h\, h是具有整数步长 k \ k\, k的全卷积函数。(当 x \ x\, x是有限信号时,只需要保持输出的有效区域)。
全卷积网络的优点在于,我们可以提供一个更大的搜索图像作为网络的输入,而不是相同大小的候选图像,并且它将在单个评估中计算密集网格上所有平移子窗口(候选区域)的相似性。为了实现这一点,我们使用卷积嵌入函数 φ \ φ\, φ,并使用互相关层合并得到的特征图
f ( z , x ) = φ ( z ) ∗ φ ( x ) + b 1 f(z,x)=φ(z)∗φ(x)+b1 f(z,x)=φ(z)∗φ(x)+b1
其中 b 1 \ b1\, b1表示在每个位置取值 b ∈ R \ b ∈R\, b∈R的信号。此网络的输出不是单个分数,而是定义在有限网格 D ⊂ Z 2 \ D⊂Z^2\, D⊂Z2上的分数地图,如算法图所示。请注意,嵌入函数的输出是具有空间支持的特征图,而不是普通的向量。同样的技术已应用到了现代立体匹配的工作中。
在跟踪过程中,我们使用以目标的先前位置(以上一帧目标)为中心的搜索图像。最大得分相对于得分图中心的位置,乘以网络中设定的步长,得到目标在帧与帧之间的位移。通过组合一个小批量的缩放图像,可以在一次向前传递中搜索多个尺度。
使用互相关来组合特征图并在较大的搜索图像上评估一次网络(对比实际过程,在一个较大的搜索图像上,使用两个特征图,其中一个特征图来自较大的搜索图像,另一个特征图来自要匹配的目标模版,进行互相关运算),在数学上等同于使用内积运算来组合特征图,并独立地评估在每个转换的子窗口上网络。(对比实际过程,对两个特征图,其中一个特征图较大的搜索区域通过搜索窗滑动平移的方式得到搜索子窗,另一个特征图来自于要匹配的目标模版,进行内积运算,并且将搜索窗在较大的搜索区域上平移,得到较大搜索区域中各个位置图像与目标模版图像的匹配程度值图)。
然而,互相关层提供了一种非常简单的方法,可以在现有conv-net库的框架内高效地实现这一操作。虽然这在测试中很有用,但也可以在训练中加以利用。
对这段话的总结为,将目标模版对应的特征图和较大搜索区域对应图像的特征图进行互相关运算的结果,和使用滑动窗机制在较大的搜索区域对应图像上获取各个位置对应的搜索子窗图像的特征图,再将这些特征图与目标模版对应的特征图进行内积运算,组合各个内积运算的结果得到的整个搜索区域图像对应的结果是一致的。
这些图像的互相关运算,可以视为图像卷积运算。
2.2 使用大搜索图像进行训练
定义损失函数:
l ( y , v ) = l o g ( 1 + e x p ( − y v ) ) l(y,v)=log(1+exp(−yv)) l(y,v)=log(1+exp(−yv))其中, v \ v\, v是单个样本候选对的实值得分, y ∈ { + 1 , − 1 } \ y ∈\{+1,−1\}\, y∈{
+1,−1}是其真实(ground-truth)的标签。在训练过程中,我们通过使用包含样本图像和更大搜索图像的对,来利用网络的全卷积特性。这将产生得分图: D → R \ D → R\, D→R,每对有效地产生许多例子。
定义得分图的损失为单独损失的平均值:
L