CFNet是KCF的作者2017年最新的提出的目标跟踪算法,发表于CVPR2017,非常值得一读。
原文地址:https://arxiv.org/abs/1704.06036v1
工程地址:https://github.com/bertinetto/cfnet
多层神经网络是计算机视觉中做图像表达很有用的工具,但是,训练时没有的类别或者某类训练样本很少时,仍是一个很有挑战的问题。这一问题自然在视觉跟踪任务中遇到,因为跟踪的目标是在只在序列的初始帧给定目标包围盒的单一监督,在整个视频上重检测目标位置,主要的挑战就是目标先验信息的缺乏。
最简单的方法就是采用一个预训练的深层CNN网络来跟踪目标,但是及其有限的训练数据和大量参数让这个学习问题很困难,并且,SGD作在线调整代价昂贵(速度慢,计算复杂度高)。
一个解决方法是网络不要去做在线调整,而是学习一个deep embedding作为一个全局目标描述子,比如很多跟踪算法[ ]使用了Siamese CNN,先离线训练判别两个图像块是否包含同一个目标,一个有效的embedding将能通过相似性来做检测(跟踪),绕开了在线学习问题。然而,仅使用固定的metric比较外观模型让学习算法不能利用video-specific线索。
一个可选的策略就是使用在线学习算法如CF(Correlation Filter),CF通过高效的解岭回归问题,可以将一个patch从周围块中区分出来。并且由于采用了FFT和element-wise的操作,比SGD更高效,相比于embedding的方法,判别器能适应特定的视频。
如何把CF高效的在线学习与离线训练的高判别度特征相结合就是一个挑战性问题,[]等算法说明CF和CNNs可以互相补偿,两者的结合提高了性能。
然而,前述工作只是将CF应用到了预训练的CNN特征上,没有任何两种方法的深入集成。这篇文章想端到端的训练CNN-CF的结合。
实现这一集成的关键一步是将CF解释为可微的CNN层,为了让误差能够通过CF反传至CNN特征,挑战性在于CF本身是一个学习问题的solution,这篇文章提供了一个和CF推导近似形式的表达,并且证明了在端到端CNN架构中训练的实用性。
在与Siamese-FC的对比中,作者发现网络足够深的时候,CF并不会提高跟踪结果。但是,本文提出了几个轻量级的网络,只需要几千个参数,就能够在benchmark上取得state-of-the-art的性能,并且运行帧率很高。
这部分主要介绍了相关滤波CF跟踪研究进展以及BP算法。(略)
这一块主要介绍了三点:一是 Siamese-FC,这是一个学习embeddings的框架,也是本文的baseline。二是之前的工作是如何将embeddings应用到跟踪算法中去。三是介绍了CFNet架构,四是介绍了CF layer及它的evaluation和反向传播BP。
1. 全卷积对称网络 Siamese-FC
首先做了同baselinbe Siamese-FC的对比实验,相同卷积层数,CFNet成功率,overlap更高,5层之后两个效果一样了。
小结:
1.端到端的训练CF,彻底将CF和CNN结合了起来。
2.CF层的BP是在傅里叶域计算的,速度快,跟踪算法实时性好。
3.没有用大型神经网络,性能好的同时,模型小很多。
疑问:
1.卷积网络5层之后跟踪效果不提升的解释是?
2.CF层只加在了x那个branch上,并且,最后还是要做cross-correlate,多计算了一次相关?