MOOSE相关滤波跟踪算法(个人学习笔记)

MOOSE

论文标题 “Visual Object Tracking using Adaptive Correlation Filters”

原文地址

用滤波器对目标外观进行建模,并通过卷积操作来执行跟踪。

参考阅读:

目标跟踪经典算法——MOSSE(Minimum Output Sum Square Error)

目标跟踪整理(1)之MOSSE

相关滤波跟踪原理

基于以初始帧中给定的bounding box来选择目标,并基于示例图像上(基于初始帧得到)训练滤波器来建模目标的外观。在接下来的每一帧中,通过训练好的关联滤波器来跟踪目标,相关输出中最大值对应的位置表示目标的新位置,然后根据该新位置执行在线更新。

  1. 目标初始化:在视频的第一帧中,选择一个以物体为中心的小窗口,基于该区域初始化滤波器。
  2. 跟踪与滤波器训练:在接下来的每一帧中,在搜索窗口内基于训练好的滤波器进行相关操作,以跟踪目标。这个搜索窗口通常比跟踪窗口大,以便于捕捉目标的移动。
  3. 确定新位置:在相关操作的输出中,寻找最大值对应的位置。这个位置表示目标在当前帧中的新位置。
  4. 在线更新:根据目标的这个新位置,更新滤波器,使其能更好地适应目标可能的外观变化。

MOSSE算法的基本思想:首先根据第一帧图像框选的目标构建一个响应,该响应在所绘制的目标框的中心处的响应值最大,向四周缓慢衰减(二维高斯分布)。然后我们希望找到一个滤波器使得图像和这个滤波器进行相关运算之后刚好得到的就是这个响应,那么就可以根据响应值最大处得到目标的位置了。当新的一帧图像进来时,用之前得到的滤波器与新的图像进行相关运算,就可以得到新的目标位置了。

频域转换

f f f:搜索窗口,即全局图像的局部区域

h h h:滤波器

相关操作: g = f ∗ h g=f*h g=fh

为了让跟踪过程更快,应用相关过滤器的过程在频域内,即使用傅里叶变换(FFT)其使卷积运算变成元素乘法运算(切记)

F F F:输入图像的2D傅里叶变换,即 F = F ( f ) F=\mathcal{F}(f) F=F(f)

H H H:滤波器的2D傅里叶变换,即 H = F ( h ) H=\mathcal{F}(h) H=F(h)

则上式可写为:

G = F ⊙ H ∗ G=F \odot H^* G=FH

其中, ⊙ \odot 表示逐元素相乘操作,而 H ∗ H^* H表示 H H H的复共轭。

为什么是复共轭呢?

因为相关和卷积在某些地方(深度学习领域,如图像卷积操作)可能当成相同的运算,但实际上两者是有差别的(数学意义上的卷积,比如信号处理/传统图像处理)。

f f f h h h做相关实际上是 f f f和旋转了180度的 h h h做卷积。关于这点,也有疑问,相关为什么是翻转了180度的卷积操作呢?

GPT4的回答如下:

image-20240111205817378

为什么卷积的定义和深度学习中的卷积不一样呢?这篇回答中提到了,本质原因是:数学中的卷积和卷积神经网络中的卷积严格意义上是两种不同的运算。具体来说:

img

  1. 卷积神经网络图像处理卷积时,没有旋转180度。
  2. 数学上的卷积,比如信号处理/传统图像处理,处理卷积时,才旋转180度。

OK,重新捋一下思路,整个过程可以总结为

  1. 时域中的相关操作:在时域中,相关操作通常表示为 g = f ∗ h g=f*h g=fh,其中 f f f是搜索窗口, h h h 是滤波器(例如模板或掩模),而 g g g是输出结果。相关操作本质上是滤波器 h h h在搜索窗口 f f f上滑动,计算它们之间的局部相似度。
  2. 频域的傅里叶变换:为了加速计算,可以将相关操作转换到频域执行。根据傅里叶变换的性质,时域内的相关操作对应于频域内的逐元素乘积。所以,定义 F = F ( f ) F=\mathcal{F}(f) F=F(f)为输入图像 f f f的2D傅里叶变换, H = F ( h ) H=\mathcal{F}(h) H=F(h)为滤波器 h h h的2D傅里叶变换。
  3. 频域内的卷积和相关操作:在频域内,卷积运算变为 F F F H H H的逐元素相乘。但由于在时域中, f f f h h h原本要进行的是相关操作(不是卷积),这等价于 f f f和旋转180度的 h h h进行卷积。因此,在频域内,这个相关操作表示为 G = F ⊙ H ∗ G=F \odot H^* G=FH,其中 H ∗ H^* H H H H的复共轭。

预处理

预处理操作如下:

  1. 用log函数处理图像,使其具有低对比度照明情况;
  2. 像素值将正则化到零均值、一方差;
  3. 应用余弦窗到图片上,这会让图像边缘元素值趋于零。

MOSSE 滤波器

MOSSE是一种从较少的训练图像中生成滤波器的算法。因此,其需要一组训练图像 f i f_i fi和训练输出 g i g_i gi

参照原文, g i g_i gi是基于ground truth生成的,其为训练图像中以目标中心为中心的紧凑2D高斯形状峰值( σ = 2 \sigma=2 σ=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 minHiFiHGi2
所以可以明白为什么叫MOSSE(Minimum 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=iFiFiiGiFi

初始化

为了训练滤波器,需要一组训练图像,但是能够得到的只有初始帧图像。因此使用随机仿射变换构建训练图像,以及对应的训练输出 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=ηGiFi+(1η)Ai1Bi=ηFiFi+(1η)Bi1
其中, η \eta η表示学习率,其值越大,则对当前帧保留的信息越多,对历史信息保留的越少。文中给出 η \eta η的最佳值为0.125。

峰旁比

衡量峰值强度的一个简单方法为peak to sidelobe ratio(PSR),即峰值旁瓣比。

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左右时代表跟踪失败或者发生遮挡。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/313192.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电容的基础知识

一、电容单位 电容亦称作“电容量”,是指在给定电位差下的电荷储藏量,记为C,国际单位是法拉(F)。在国际单位制里,电容的单位是法拉,简称法,符号是F,由于法拉这个单位太大…

Zynq 电源

ZYNQ芯片的电源分PS系统部分和PL逻辑部分,两部分的电源分别是独立工作。PS系统部分的电源和PL逻辑部分的电源都有上电顺序,不正常的上电顺序可能会导致ARM系统和FPGA系统无法正常工作。 PS部分的电源有VCCPINT、VCCPAUX、VCCPLL和PS VCCO。 VCCPINT为PS内…

canvas绘制流动的蚂蚁线(图文示例)

查看专栏目录 canvas示例教程100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

提高iOS App开发效率的方法

引言 随着智能手机的普及,iOS App开发成为越来越受欢迎的技术领域之一。许多人选择开发iOS应用程序来满足市场需求,但是iOS App开发需要掌握一些关键技术和工具,以提高开发效率和质量。本文将介绍一些关键点,可以帮助你进行高效的…

自动化测试框架pytest系列之8个常用的装饰器函数

自动化测试框架pytest系列之基础概念介绍(一)-CSDN博客 自动化测试框架pytest系列之21个命令行参数介绍(二)-CSDN博客 自动化测试框架pytest系列之强大的fixture功能,为什么fixture强大?一文拆解它的功能参数。(三)-CSDN博客 接上文 3.5 pytest的8…

Agisoft Metashape 基于影像的外部点云着色

Agisoft Metashape 基于影像的外部点云着色 文章目录 Agisoft Metashape 基于影像的外部点云着色前言一、添加照片二、对齐照片三、导入外部点云四、为点云着色五、导出彩色点云前言 本教程介绍了在Agisoft Metashape Professional中,将照片中的真实颜色应用于从不同源获取的…

监督学习 - 逻辑回归(Logistic Regression)

什么是机器学习 逻辑回归(Logistic Regression)虽然名字中包含"回归"一词,但实际上是一种用于解决分类问题的统计学习方法,而不是回归问题。它是一种线性模型,常用于二分类问题,也可以扩展到多分…

【EI会议征稿通知】2024年图像处理与人工智能国际学术会议(ICIPAI2024)

2024年图像处理与人工智能国际学术会议(ICIPAI2024) 2024 International Conference on Image Processing and Artificial Intelligence(ICIPAI2024) 2024年图像处理与人工智能国际学术会议(ICIPAI2024)将…

python 爬虫 生成markdown文档

本文介绍的案例为使用python爬取网页内容并生成markdown文档,首先需要确定你所需要爬取的框架结构,根据网页写出对应的爬取代码 1.分析总网页的结构 我选用的是redis.net.com/order/xxx.html (如:Redis Setnx 命令_只有在 key 不存在时设置 key 的值。…

文件重命名:文件命名错了怎么办,新旧文件名互换的方法

在日常生活和工作中,经常要处理各种文件,会因为疏忽或者误解,给文件起错名字。文件名一旦错误,就可能造成后续的困扰,比如找不到需求的文件、混淆不同的文件等。如果文件命名错了如何更正呢?下面来看云炫文…

【Electron】 Vite项目 初始配置 scss

pnpm add -D sasssrc下面创建 styles/main.scss 文件 mian.ts 内引入 ./styles.scss 文件 import ./styles/main.scss 测试scss是否生效&#xff1a; styles/mian.scss :root{--mian:red; } App.vue <template><div>你好</div> </template><s…

上架苹果APP的时候在哪里填写APP的隐私政策信息

在如今高度重视数据隐私的时代&#xff0c;开发并上架一个iOS APP时提供透明的隐私政策是非常重要的。苹果公司对此有严格的规定&#xff0c;任何上架至App Store的应用都必须包含一个隐私政策。以下是您在上架苹果APP时填写隐私政策信息的详细步骤和必须注意的事项。 准备隐私…

阿里巴巴国际站商品采集API商品列表API商品详情数据API

阿里巴巴国际站&#xff08;Alibaba.com&#xff09;是阿里巴巴集团旗下的一个全球贸易平台&#xff0c;旨在连接全球买家和供应商&#xff0c;并促进国际贸易。它是目前世界上最大的B2B&#xff08;企业对企业&#xff09;在线交易市场之一。 阿里巴巴国际站提供了广泛的产品类…

使用知行之桥EDI系统的HTTP签名身份验证

本文简要概述了如何在知行之桥EDI系统中使用 HTTP 签名身份验证&#xff0c;并将使用 CyberSource 作为该集成的示例。 API 概述 API 是”应用编程接口”的缩写。这听起来可能很复杂&#xff0c;但它的真正含义是一种允许两个不同实体相互通信的软件。自开发以来&#xff0c;…

采集小红书笔记详情页的方法,大部分人都想得复杂了

一般来说&#xff0c;社交媒体都有列表页和详情页、个人主页三大页面&#xff0c;列表页一般包含搜索结果页、话题聚合页等等&#xff0c;详情页就是点开某一条笔记或者动态的具体页面&#xff1b; 小红书当然也不例外&#xff0c;比如下面这个话题聚合页&#xff1a; https:/…

高工微报告|智驾前视一体机趋势

传统智驾前视一体机赛道上&#xff0c;1V3R、1V5R产品如何升级备受关注。 根据日前调研获取的信息&#xff0c;1V3R、1V5R向轻量级行泊一体&#xff08;典型为5V5R12U方案&#xff0c;算力平台5-20TOPS&#xff09;迈进的具体市场空间&#xff0c;仍在验证阶段。 其中&#x…

java基于ssm框架的少儿编程在线培训系统论文

目 录 目 录 I 1 课题背景及研究内容 4 1.1 课题背景 4 1.2 开发目的和意义 4 2 相关技术和应用 4 2.1 VUE技术 4 2.2 Mysql数据库简介 5 2.3 SSM框架简介 6 2.4 Eclipse简介 6 2.5 B/S系统架构 6 3 系统分析 8 3.1可行性分析 8 3.1.1技术可行性 8 3.1.2经济可行性 8 3.1.3操作…

经验分享:智能知识库才是数字时代的企业必备选择

随着全球化和竞争的加剧&#xff0c;企业必须通过将知识作为战略资产进行管理&#xff0c;才能保持竞争优势。因此&#xff0c;建设有效的知识库系统&#xff0c;成为了数字时代企业必备的选择。决定企业成功或失败的不再仅仅是产品或服务的质量&#xff0c;而是如何有效利用知…

Redis的实现三:c语言实现平衡二叉树,通过平衡二叉树实现排序集

概况&#xff1a;Redis中的排序集数据结构是相当复杂的独特而有用的东西。它不仅提供了顺序排序数据的能力&#xff0c;而且具有按排名查询有序数据的独特特性。 Redis中的排序集 &#xff08;Sorted Set&#xff09;是一种特殊的数据结构&#xff0c;它结合了集合&#xff0…

mp4文件全部转换为mp3

问题 今天突发奇想&#xff0c;想把mp4视频转换为mp3来收听&#xff0c;于是想到了ffmpeg工具 步骤 安装ffmpeg环境 要在 Windows 上配置 FFmpeg 环境&#xff0c;你可以按照以下步骤进行操作&#xff1a; 下载 FFmpeg&#xff1a; 首先&#xff0c;你需要下载 FFmpeg 的 W…