江苏省住房和城乡建设部网站,人力资源信息管理平台,网站加速工具,百度指数可以查询多长时间的MOOSE
论文标题 “Visual Object Tracking using Adaptive Correlation Filters”
原文地址
用滤波器对目标外观进行建模#xff0c;并通过卷积操作来执行跟踪。
参考阅读#xff1a;
目标跟踪经典算法——MOSSE#xff08;Minimum Output Sum Square Error#xff09…MOOSE
论文标题 “Visual Object Tracking using Adaptive Correlation Filters”
原文地址
用滤波器对目标外观进行建模并通过卷积操作来执行跟踪。
参考阅读
目标跟踪经典算法——MOSSEMinimum Output Sum Square Error
目标跟踪整理1之MOSSE
相关滤波跟踪原理
基于以初始帧中给定的bounding box来选择目标并基于示例图像上基于初始帧得到训练滤波器来建模目标的外观。在接下来的每一帧中通过训练好的关联滤波器来跟踪目标相关输出中最大值对应的位置表示目标的新位置然后根据该新位置执行在线更新。
目标初始化在视频的第一帧中选择一个以物体为中心的小窗口基于该区域初始化滤波器。跟踪与滤波器训练在接下来的每一帧中在搜索窗口内基于训练好的滤波器进行相关操作以跟踪目标。这个搜索窗口通常比跟踪窗口大以便于捕捉目标的移动。确定新位置在相关操作的输出中寻找最大值对应的位置。这个位置表示目标在当前帧中的新位置。在线更新根据目标的这个新位置更新滤波器使其能更好地适应目标可能的外观变化。
MOSSE算法的基本思想首先根据第一帧图像框选的目标构建一个响应该响应在所绘制的目标框的中心处的响应值最大向四周缓慢衰减二维高斯分布。然后我们希望找到一个滤波器使得图像和这个滤波器进行相关运算之后刚好得到的就是这个响应那么就可以根据响应值最大处得到目标的位置了。当新的一帧图像进来时用之前得到的滤波器与新的图像进行相关运算就可以得到新的目标位置了。
频域转换 f f f搜索窗口即全局图像的局部区域 h h h滤波器
相关操作 g f ∗ h gf*h gf∗h
为了让跟踪过程更快应用相关过滤器的过程在频域内即使用傅里叶变换FFT其使卷积运算变成元素乘法运算切记。 F F F输入图像的2D傅里叶变换即 F F ( f ) F\mathcal{F}(f) FF(f)。 H H H滤波器的2D傅里叶变换即 H F ( h ) H\mathcal{F}(h) HF(h)。
则上式可写为 G F ⊙ H ∗ GF \odot H^* GF⊙H∗
其中 ⊙ \odot ⊙表示逐元素相乘操作而 H ∗ H^* H∗表示 H H H的复共轭。
为什么是复共轭呢
因为相关和卷积在某些地方深度学习领域如图像卷积操作可能当成相同的运算但实际上两者是有差别的数学意义上的卷积比如信号处理/传统图像处理。 f f f与 h h h做相关实际上是 f f f和旋转了180度的 h h h做卷积。关于这点也有疑问相关为什么是翻转了180度的卷积操作呢
GPT4的回答如下 为什么卷积的定义和深度学习中的卷积不一样呢这篇回答中提到了本质原因是数学中的卷积和卷积神经网络中的卷积严格意义上是两种不同的运算。具体来说 卷积神经网络图像处理卷积时没有旋转180度。数学上的卷积比如信号处理/传统图像处理处理卷积时才旋转180度。
OK重新捋一下思路整个过程可以总结为
时域中的相关操作在时域中相关操作通常表示为 g f ∗ h gf*h gf∗h其中 f f f是搜索窗口 h h h 是滤波器例如模板或掩模而 g g g是输出结果。相关操作本质上是滤波器 h h h在搜索窗口 f f f上滑动计算它们之间的局部相似度。频域的傅里叶变换为了加速计算可以将相关操作转换到频域执行。根据傅里叶变换的性质时域内的相关操作对应于频域内的逐元素乘积。所以定义 F F ( f ) F\mathcal{F}(f) FF(f)为输入图像 f f f的2D傅里叶变换 H F ( h ) H\mathcal{F}(h) HF(h)为滤波器 h h h的2D傅里叶变换。频域内的卷积和相关操作在频域内卷积运算变为 F F F和 H H H的逐元素相乘。但由于在时域中 f f f 和 h h h原本要进行的是相关操作不是卷积这等价于 f f f和旋转180度的 h h h进行卷积。因此在频域内这个相关操作表示为 G F ⊙ H ∗ GF \odot H^* GF⊙H∗其中 H ∗ H^* H∗是 H H H的复共轭。
预处理
预处理操作如下
用log函数处理图像使其具有低对比度照明情况像素值将正则化到零均值、一方差应用余弦窗到图片上这会让图像边缘元素值趋于零。
MOSSE 滤波器
MOSSE是一种从较少的训练图像中生成滤波器的算法。因此其需要一组训练图像 f i f_i fi和训练输出 g i g_i gi。
参照原文 g i g_i gi是基于ground truth生成的其为训练图像中以目标中心为中心的紧凑2D高斯形状峰值 σ 2 \sigma2 σ2。
为了找到将训练输入映射到所需训练输出的滤波器MOSSE找到了一个滤波器 H H H该滤波器 H H H可以最小化实际输出与真实输出之间的平方误差之和即 min H ∗ ∑ i ∣ F i ⊙ H ∗ − G i ∣ 2 \mathop{\min}_{H^*} \sum_{i}{|F_i\odot H^*-G_i|}^2 minH∗i∑∣Fi⊙H∗−Gi∣2 所以可以明白为什么叫MOSSEMinimum Output Sum of Squared Error了吧
对 H ∗ H^* H∗求导令其为0可得到闭式解 H ∗ ∑ i G i ⊙ F i ∗ ∑ i F i ⊙ F i ∗ H^*\frac{\sum_{i}G_i \odot F_i^*}{\sum_{i}F_i \odot F_i^*} H∗∑iFi⊙Fi∗∑iGi⊙Fi∗
初始化
为了训练滤波器需要一组训练图像但是能够得到的只有初始帧图像。因此使用随机仿射变换构建训练图像以及对应的训练输出 g i g_i gi其峰值对应于目标中心。
在线更新
在跟踪过程中通常会面临由旋转、尺度缩放、光照变化甚至进行非刚性变形等因素引起的外观变化。因此滤波器需要在线更新才能适应跟踪目标的变化如下所示 H i ∗ A i B i A i η G i ⊙ F i ∗ ( 1 − η ) A i − 1 B i η F i ⊙ F i ∗ ( 1 − η ) B i − 1 H^*_i\frac{A_i}{B_i} \\ A_i \eta G_i \odot F_i^* (1-\eta)A_{i-1}\\ B_i \eta F_i \odot F_i^* (1-\eta)B_{i-1} Hi∗BiAiAiηGi⊙Fi∗(1−η)Ai−1BiηFi⊙Fi∗(1−η)Bi−1 其中 η \eta η表示学习率其值越大则对当前帧保留的信息越多对历史信息保留的越少。文中给出 η \eta η的最佳值为0.125。
峰旁比
衡量峰值强度的一个简单方法为peak to sidelobe ratioPSR即峰值旁瓣比。 The Peak-to-Sidelobe Ratio (PSR), which measures the strength of a correlation peak, can be used to detect occlusions or tracking failure, to stop the online update, and to reacquire the track if the object reappears with a similar appearance. 这篇大概讲了一下但还是不是很明白到底什么是Peak-to-Sidelobe Ratio。
还是看原文PSR的定义为 P S R g m a x − μ s σ s PSR\frac{g_{max}-\mu_s}{\sigma_s} PSRσsgmax−μs 其中旁瓣是窗口中除了峰值之外的周围11 × 11区域的像素 g m a x g_{max} gmax为滤波结果的峰值 μ s \mu_s μs和 σ s \sigma_s σs分别为旁瓣区域的平均值和标准差。
对于MOSSE来说PSR值在20-60时代表峰值较稳定当其值在7左右时代表跟踪失败或者发生遮挡。