FCNT其实是一个比较老的工作了,性能跟现在是没法比的,但其中的许多进步之处还是非常有价值且值得思考的。事先注明,FCNT中的“FCN”非语义分割中的FCN,FCNT这里的“FCN”指的是全卷积网络。
References:
电子文献:
https://www.cnblogs.com/Terrypython/p/10636259.html
参考文献:
[1]Visual Tracking with Fully Convolutional Networks
关注点
不同于以往的工作把CNN看成一个黑盒而不关注不同层的表现,FCNT关注了不同层的功能,即发现:顶层的CNN layer编码了更多的关于语义特征的信息并且可以作为类别检测器;而底层的CNN layer关注了更多局部特征,这有助于将目标从目标中分离出来。这个发现在之后的许多工作中也得到了应用和体现。如下图所示,这里的a图表示的是ground truth,b图表示的是使用VGG的conv4-3,也就是第10层产生的热力图,c图是通过conv5-3也就是第13层产生的热力图。
可以看到,较低维的CNN layer(conv4-3)能够更精准地表示目标的细粒度信息,而较高维的CNN layer(conv5-3)热力图显示较模糊,但对同类别的人也做出了响应。这就是说,顶层缺少类内特征区分,对类间识别比较好,更适合作语义分割;底层则反之,能够更好地表达目标的类内特征和位置信息。
基于不同层(顶层和底层)之间提取特征的不同,作者提出了一种新的tracking方法,利用两种特征相互补充辅助,来处理剧烈的外观变化(顶层特征发挥的作用)和区分目标本身(底层特征发挥的作用)。
稀疏表示
为了简化学习任务,降低模型复杂度,作者采用了稀疏表示的方法。其实基本上等同于字典学习,详见machine-learning笔记:SVD与字典学习。
简而言之,字典学习就是寻找一个稀疏矩阵和一个字典矩阵,使它们的乘积尽可能地接近原本的数据。其步骤一般是先求得一个尽可能稀疏的稀疏矩阵,然后固定该稀疏矩阵来更新字典。
在FCNT中,稀疏表示是这样进行的:
注:这里的$\pi$表示的是前景mask,$F$指的是feature map,$c$表示稀疏项。
由于稀疏项$c$已经足够稀疏,我们可以直接省去接近于零的$\lambda \left | c \right |_{1}$。
- 首先我们计算前景(也就是目标物体)的误差$e=\underset{i}{min}\left | \pi -Fc_{i} \right |_{2}^{2}$,这一步也就是判断框内有没有目标出现,当$e$小于阈值时,即认为存在目标物体。
- 然后计算的是目标物体属于哪一类,即求出使得误差最小的类别的ID,利用公式$id=arg\underset{i}{min}\left | \pi -Fc_{i} \right |_{2}^{2}$。注意这里用了$arg$。
实现
网络结构
由于feature map本身是有内在结构的,有很多的feature map对目标的表达其实并没有起到作用,因此作者设计了一种方法来自动选择高维或者低维CNN上的feature map,同时忽略另一个feature map和噪声。下面就来简单介绍一下该方法的具体步骤,首先来看看FCNT的网络结构。
具体步骤
结合上图,简单介绍一下FCNT的实现流程。
第一步
根据给定的target,对VGG的conv4-3和conv5-3进行特征图选择,其目的是选出最相关的特征图。第二步
根据conv5-3的筛选,建立广义的通用网络GNet,用于捕捉目标的类别信息。第三步
根据conv4-3的筛选,建立具有针对性的特定网络SNet,用于将目标从背景中区分出来。第四步
利用第一帧图像来初始化GNet和SNet并进行热力图回归,但要注意两个网络采用不更新的方法。第五步
对于新一帧图像,我们在上一帧目标的位置搜寻RoI,抠取之后送入全卷积网络。第六步
GNet和SNet各自产生一个前景热力图,然后通过最后的干扰检测器选择策略决定使用哪个热力图来确定下一帧的目标位置。
特征图选择
第一步中的特征图选择可能会让人比较疑惑,其实这个选择模型仅用了一个dropout层和一个卷积层,其目标就是使得目标的mask和预测出来的目标热力图尽可能相近。这里把输入的特征图向量化,并用二阶泰勒展开表示特征图扰动,也就是特征图的变化(加入噪声)带来的损失的变化。为了高效地在反向传播中计算,作者仅保留了Hessian矩阵中的对角线上的内容,而忽略泰勒展开式中的其它导数项,也就是保留$h_{ii}$而忽略$h_{ij}$,这就在计算一阶导数和二阶导数是更加高效。
补充:其实mask我之前也是一直不懂的,这里做个补充。
mask中文翻译为“掩模”,但它的功能不仅仅局限于遮掩,总的来说,mask有下面四种用途:
- 提取感兴趣区:用预先制作的mask与待处理图像相乘,RoI内图像值保持不变,而区外图像值都变为0。
- 屏蔽:用mask对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计。
- 结构特征提取:用相似性变量或图像匹配方法检测和提取图像中与mask相似的结构特征。
- 特殊形状图像的制作:其实实现方法一样,只是目的不一。
目标定位
FCNT的定位过程分为两步。