crest
1. 概述
论文中提出了crest算法,该算法将DCF(判别式相关滤波)重定义为卷积神经网络的一层。该算法将特征提取(feature extraction)、响应图生成(response map generation)和模型更新(model update)集成到神经网络中,用于端到端(end-to-end)的训练。为了减轻由于实时更新产生的模型退化问题,该算法采用残差学习的方式将目标的外观变化考虑在内。
2. CREST的提出与介绍
首先,DCF算法的特征提取是独自进行,未能从端到端的学习中受益。其次,DCF算法使用线性插值进行滤波的更新。这种方式难以在模型的适用性和稳定性之间取得平衡。由于噪声更新,将导致DCF跟踪器的漂移(目标丢失)。
基于以上两点限制提出的两个问题:
1). 带有特征提取的DCF算法是否可以使用端到端的方式。
2). DCF算法是否可以使用更为高效的方法进行更新,而不是使用传统的方式,如线性插值。
为了解决这两个问题,作者提出了CREST。
CREST将DCF解释为深度神经网络中的相应卷积层。根据这一想法,CREST将DCF重塑为一层卷积神经网络,用于直接生成连续两帧之间空间相关的响应图。在这一构想下,特征提取、相关响应图生成和模型更新都可以有效的集成到端到端的形式中。CREST没有选择使用循环移位样本和相关滤波进行傅里叶域内的点乘运算的方式,这样避免了边界效应,而是直接进行空间卷积运算(直接在空间域中进行卷积)。此外,卷积层是完全可微的。它允许使用反向传播来更新卷积滤波器。与DCF算法相似,卷积层以一遍过的方式在所有搜索位置生成密集的响应值。为了正确地更新模型,CREST采用残差学习,通过检测卷积层输出和标记值之间的差异,来捕获目标外观的变化。这有助于缓解由噪声更新引起的快速模型退化。与此同时,残差学习有助于提高对大外观变化的目标响应的鲁棒性。
3. Convolutional Residual Learning
CREST通过基层(base layer)和残差层(residual layer)进行特征回归。基层由一个卷积层组成,即传统的DCF。基层输出与标记值的不同由残差层捕获。
3.1 DCF重定义
在此先回顾一下DCF,DCF学习判别式的分类器,通过搜索响应图的最大值确定目标的位置。我们使用X表示输入样本,用Y表示对应的高斯函数标记。通过求解下面的最小化问题,学得相关滤波W:
通常,相关滤波W和输入X之间的卷积运算会被转换到傅里叶域做点乘运算。
CREST将DCF的学习过程重定义为卷积神经网络的损失最小化。CREST损失函数:
其中 ,等同于F(X)与Y之间的L2损失,F(X)为网络输出值,Y为标记值。
为样本X上的卷积操作,通过一个卷积层得到。卷积滤波W等同于相关滤波,公式(3)中的损失函数等同于DCF中的目标函数。因此,CREST将DCF重定义为带有L2损失的卷积层,作为目标函数。并将其作为网络中的基层。
滤波的大小为目标的大小,卷积权重通过梯度下降法计算。
3.2 残差学习
CREST将DCF重定义为由一个卷积层表示的基层。理想情况下,基层输出的响应图将与标记值相同。在实践中,单层网络不太可能实现这一点。不同于使用多层网络叠加(多层网络叠加造成模型退化)的方法,CREST利用残差学习来捕捉基层输出与标记值的差异。
理想情况的单层输出:
快速运用下的单层网络输出:
如果H(X)是对于输入X的最佳映射(H(X)总能产生理想的输出),FB(X)为基层的输出。那么,我们希望的残差学习函数应该满足:FR(X) = H(X) - FB(X)。因此我们的网络输出可以被下式表示:
其中,。映射FR(X,{WR})表示残差学习。CREST采用了三层的残差学习。残差层用来捕获在基层输出中没有呈现的残差。最后,通过基层映射和残差映射共同作用,生成输出响应图。
基层和空间残差层的结构:
此外,CREST还利用了时间残差,用于应对空间残差无效的情况。时间残差层的网络结构与空间残差层相似。从包含初始目标外观的第一帧提取时间输入。用Xt表示第t帧的输入X,因此CREST可以表示为:
FTR(X1)为从第一帧得到的时间残差。时空残差学习不需要额外的训练。
可视化的特征图:
给定输入图像,首先以前一帧的估计位置为中心提取搜索图像块。这个块被送到特征提取网络,然后通过基层和残差层回归,生成响应图。
当目标对象经历小的外观变化时,基层输出与标记值的差异很小。残差层对最终响应图没有什么影响。然而,当目标对象经历大的外观变化时,比如背景混乱,基层的响应是有限的,可能无法区分目标和背景。这时,通过对基层输出与标记值之间的差异进行建模,残差层可以减轻减轻这种限制。通过增加基层和残差层,可以减轻最终输出的噪声响应值。因此,目标响应对目标外观变化较大的情况更鲁棒。
残差网络提升跟踪效果的直观表示:
4. CREST过程
CREST不需要进行离线训练。
模型初始化
给定初始帧,以目标所在位置为中心提取训练块。将块送入CREST网络进行特征提取和响应映射。使用VGG网络进行特征提取。在零均值高斯分布下,对基层和残差层的所有参数进行随机初始化。
在线检测
对于新的一帧,根据前一帧预测的中心位置提取搜索块。搜索块的大小与训练块的大小相同,将搜索快输入到CREST网络中生成响应映射,获得响应图。响应图中拥有最大响应值的位置即为目标新的中心位置。
尺度估计
多尺度采样,采样将这些不同尺度的块输入网络,选最大响应值所对应的尺度后,进行平滑尺度更新。
第t帧下,目标的的宽度wt和高度ht通过下式更新:
wt*和ht*为有最大响应值的那一尺度下目标的宽度和长度。权重因子beta用于平滑目标尺度。
模型更新
在线跟踪期间持续生成训练数据。对于每一帧,在预测目标位置之后,我们可以生成相应的真值响应图,搜索块可以直接作为训练块。把第T帧得到的训练块和真值响应图组成训练对,输送到CREST网络中进行在线更新。
5. 实验
搜索区域大小:5倍搜索域;
特征选取:使用只保留前两个池化层的VGG-16网络中conv4-3层经PCA降维到64通道后作为特征;
真值标记:二维高斯分布,峰值为1;
尺度平滑参数beta:0.6;
其他配置:使用MatConvNet框架实现;模型初始化时,训练学习率为5e-8,当loss小于0.02停止;模型更新时,每两帧更新一次,更新时迭代2次,学习率为2e-9;
实验数据集:OTB-2013,OTB-2015,VOT-2016;
相关阅读
引言 深度学习(deep learning)已经广泛应用于各个领域,解决各类问题,例如在图像分类问题下,如图1,区分这10类目标的准确率目前可
在声明区中声明如下 (在 .bas 档中用 Public, 在 Form 中用 Private) Private Declare Function ShellExecute Lib "shell32.dll"
RePr Improved Training of Convolutional Filters阅
论文地址:https://arxiv.org/abs/1811.07275 CVPR2019的Oral Paper代码:作者目前没公布,Reddit上对于这篇论文的讨论很激烈┓( ´∀
回溯算法的定义:回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回
番茄助手主要功能 智能提示:关键字的提示,已有函数名、类名、类成员的提示; 代码高亮:关键字、类名、函数名等用不同的颜色进行高