什么是目标跟踪
使用视频序列第一帧的图像(包括bounding box的位置),来找出目标出现在后序帧位置的一种方法。
什么是孪生网络结构
孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中,从而获得两个特征向量,然后通过计算这两个特征向量的的相似度,相似度越高表明其越可能是同一个类别。
给你一张我的正脸照(没有经过美颜处理的),你该如何在人群中找到我呢?一种最直观的方案就是:“谁长得最像就是谁”。但是对于计算机来说,如何衡量“长得像”,并不是个简单的问题。这就涉及一种基本的运算——互相关(cross-correlation)。互相关运算可以用来度量两个信号之间的相似性。互相关得到的响应图中每个像素的响应高低代表着每个位置相似度的高低。
在目标领域中,最早利用这种思想的是SiamFC,其网络结构如上图。图中的φ就是CNN编码器,上下两个分支使用的CNN不仅结构相同,参数也是完全共享的(说白了就是同一个网络,并不存在孪生兄弟那样的设定)。z和x分别是要跟踪的目标模版图像(尺寸为127x127)和新的一帧中的搜索范围(尺寸为255x255)。二者经过同样的编码器后得到各自的特征图,对二者进行互相关运算后则会同样得到一个响应图(尺寸为17x17),其每一个像素的值对应了x中与z等大的一个对应区域出现跟踪目标的概率。
互相关运算的步骤,像极了我们手里拿着一张目标的照片(模板图像),然后把这个照片按在需要寻找目标的图片上(搜索图像)进行移动,然后求重叠部分的相似度,从而找到这个目标,只不过为了计算机计算的方便,使用AlexNet对图像数据进行了编码/特征提取。
下面这个版本中有一些动图,还是会帮助理解的:https://github.com/rafellerc/Pytorch-SiamFC
我们对siamese的结构大致就讲完了,还有一些内容结合代码来讲,效果更好。
具体参考这篇博文:https://cloud.tencent.com/developer/article/1701801
参考文档
siameseFC论文和代码解析
SiamFC 学习(论文、总结与分析)
siamfc-pytorch代码讲解(一):backbone&head
siamfc-pytorch代码讲解(二):train&siamfc
SiamFC代码分析(architecture、training、test)
http://www.360doc.com/content/19/0801/10/32196507_852333196.shtml
视频推荐
目标跟踪零基础代码入门(一):SiamFC_哔哩哔哩_bilibili