[论文阅读笔记33] Matching Anything by Segmenting Anything (CVPR2024 highlight)
这篇文章借助SAM模型强大的泛化性,在任意域上进行任意的多目标跟踪,而无需任何额外的标注。
其核心思想就是在训练的过程中,利用strong augmentation对一张图片进行变换,然后用SAM分割出其中的对象,因此可以找到一组图像中目标的pixel的对应关系,从而实现了自监督的信号。
论文:https://arxiv.org/abs/2406.04221
代码:https://github.com/siyuanliii/masa
0. Abstract
MOT的本质是在帧间进行同一个目标的稳定关联。现有的MOT主要依赖于特定domain的数据集(比如行人MOT challenge,车辆VisDrone等),限制了cross domain的泛化性。
针对这个问题,作者提出了MASA,可以实现在任意域中跟踪任意目标。具体来说,利用SAM能够给出的丰富的目标分割,MASA的任务就是通过data augmentation学习一个instance level的对应。MASA将SAM的输出视为密集的region proposal,然后学习在巨大的图像库中,来匹配这些proposal。进一步地,设计了一个adapter来进行跟踪,实现了zero-shot跟踪的能力。
1. Introduction
前面的背景叙述先忽略,我们先看整体的方法。
这个工作的主要目标就是和现有的检测、分割模型结合起来,能够实现任意区域、目标的匹配与跟踪。但是做这种“任意”的事情,标签成本肯定是逃不过去的坎。
为了解决这个问题,作者对同一张图像应用不同的几何变换。在几何变换前后,像素的对应关系我们是已知的。再加上SAM的分割能力,就可以将这些像素自动分组成一个instance(object),这样就实现了像素级到实例级的对应,可以作为一个自监督信号。
除了上面这个self-training pipeline,作者构建了一个adapter,实现tracking的功能。
此外,作者提出了一个多任务训练的pipeline,其对SAM进行知识蒸馏。这种方法可以学习 SAM 的目标的位置、形状和外观先验,并在对比相似性学习期间模拟真实的检测。
整体的框图如下:
2. Methodology
2.1 训练
其实方法部分比较直接。首先前面讲,需要一个对比学习的范式来学习SAM在不同augmentation下分割的object的相似度。作者直接采用了朴素的对比学习损失:
L C = − ∑ q ∈ Q log e sim ( q , q + ) τ e sim ( q , q + ) τ + ∑ q − ∈ Q − e sim ( q , q − ) τ \mathcal{L}_{\mathcal{C}}=-\sum_{q \in Q} \log \frac{e^{\frac{\operatorname{sim}\left(q, q^{+}\right)}{\tau}}}{e^{\frac{\operatorname{sim}\left(q, q^{+}\right)}{\tau}}+\sum_{q^{-} \in Q^{-}} e^{\frac{\operatorname{sim}\left(q, q^{-}\right)}{\tau}}} LC=−q∈Q∑logeτsim(q,q+)+∑q−∈Q−eτsim(q,q−)eτsim(q,q+)
那么问题就是, q q q, 也就是目标特征,怎么来呢?
这就是文章的第二个贡献,adapter。
对于用较大的foundation model进行特定task微调的,往往需要一个adapter来进行适应。 这是因为直接微调foundation model肯定成本很高,并且可能会过拟合而丢失它原本具有的泛化性。
具体来说,作者提出的adapter具有特征金字塔结构,这是为了适应不同尺度的目标。对于Detic和Grounding DINO这种检测大模型来说,作者直接用了FPN。对SAM来说,作者用转置卷积和最大池化来上采样和下采样backbone中的特征图。
为了适应目标的不同形变,作者采用了可变形卷积:
F ( p ) = 1 L ∑ j = 1 L ∑ k = 1 K w k ⋅ F j ( p + p k + Δ p k j ) ⋅ Δ m k j F(p)=\frac{1}{L} \sum_{j=1}^L \sum_{k=1}^K w_k \cdot F^j\left(p+p_k+\Delta p_k^j\right) \cdot \Delta m_k^j F(p)=L1j=1∑Lk=1∑Kwk⋅Fj(p+pk+Δpkj)⋅Δmkj
在获取adapter各种融合之后的特征图后,采用ROI Align以及额外的4个轻量级卷积层(作者称为track head)来获取目标的实例级特征。(也就是对比学习损失中的 q q q)
此外,为了更好地让adapter捕捉instance level的特征,作者还设定了一个auxiliary task,也就是,detection head。detection head直接采用了RCNN的检测头,来根据当前的feature map检测图中的目标(作者正文没说,应该是以SAM的结果作为监督信号,稍后看代码),这样的话,就实现了一个知识蒸馏的效果。也就是从SAM的分割结果中,蒸馏出目标的形状、位置信息。
2.2 推理
在推理阶段,采用了QDTrack(Quasi-Dense Similarity Learning for Multiple Object Tracking
)的匹配策略:
- bi-softmax计算相似度:
s 1 ( τ , r ) = 1 2 [ exp ( q r ⋅ q τ ) ∑ r ′ ∈ P exp ( q r ′ ⋅ q τ ) + exp ( q r ⋅ q τ ) ∑ τ ′ ∈ T exp ( q r ⋅ q τ ′ ) ] s 2 ( τ , r ) = q r ⋅ q τ ∥ q r ∥ ∥ q τ ∥ s ( τ , r ) = 1 2 ( s 1 ( τ , r ) + s 2 ( τ , r ) ) \begin{gathered}s_1(\tau, r)=\frac{1}{2}\left[\frac{\exp \left(\mathbf{q}_r \cdot \mathbf{q}_\tau\right)}{\sum_{r^{\prime} \in P} \exp \left(\mathbf{q}_{r^{\prime}} \cdot \mathbf{q}_\tau\right)}+\frac{\exp \left(\mathbf{q}_r \cdot \mathbf{q}_\tau\right)}{\sum_{\tau^{\prime} \in \mathcal{T}} \exp \left(\mathbf{q}_r \cdot \mathbf{q}_{\tau^{\prime}}\right)}\right] \\ s_2(\tau, r)=\frac{\mathbf{q}_r \cdot \mathbf{q}_\tau}{\left\|\mathbf{q}_r\right\|\left\|\mathbf{q}_\tau\right\|} \\ s(\tau, r)=\frac{1}{2}\left(s_1(\tau, r)+s_2(\tau, r)\right)\end{gathered} s1(τ,r)=21[∑r′∈Pexp(qr′⋅qτ)exp(qr⋅qτ)+∑τ′∈Texp(qr⋅qτ′)exp(qr⋅qτ)]s2(τ,r)=∥qr∥∥qτ∥qr⋅qτs(τ,r)=21(s1(τ,r)+s2(τ,r))
- 贪心策略
在Detect 和 Track两种模式下,流程如下图:
相关文章:

[论文阅读笔记33] Matching Anything by Segmenting Anything (CVPR2024 highlight)
这篇文章借助SAM模型强大的泛化性,在任意域上进行任意的多目标跟踪,而无需任何额外的标注。 其核心思想就是在训练的过程中,利用strong augmentation对一张图片进行变换,然后用SAM分割出其中的对象,因此可以找到一组图…...

阿里Nacos下载、安装(保姆篇)
文章目录 Nacos下载版本选择Nacos安装Windows常见问题解决 更多相关内容可查看 Nacos下载 Nacos官方下载地址:https://github.com/alibaba/nacos/releases 码云拉取(如果国外较慢或者拉取超时可以试一下国内地址) //国外 git clone https:…...
四、golang基础之defer
文章目录 一、定义二、作用三、结果四、recover错误拦截 一、定义 defer语句被用于预定对一个函数的调用。可以把这类被defer语句调用的函数称为延迟函数。 二、作用 释放占用的资源捕捉处理异常输出日志 三、结果 如果一个函数中有多个defer语句,它们会以LIFO…...
机器人----四元素
四元素 四元素的大小 [-1,1] 欧拉角转四元素...
IBM Spectrum LSF Application Center 提供单一界面来管理应用程序、用户、资源和数据
IBM Spectrum LSF Application Center 提供单一界面来管理应用程序、用户、资源和数据 亮点 ● 简化应用程序管理 ● 提高您的工作效率 ● 降低资源管理的复杂性 ● 深入了解流程 IBM Spectrum LSF Application Center 为集群用户和管理员提供了一个灵活的、以应用为中心的界…...

如何选择品牌推广公司?哪家好?收费标准及评价!
不管是什么品牌,推广对公司的成败起了很关键的作用。然而,面对市面上琳琅满目的品牌推广公司,如何选择一家既熟悉又靠谱的公司,成为许多企业主面临的难题。 作为一家手工酸奶品牌的创始人,目前全国也复制了100多家门店…...

JDeveloper 12C 官网下载教程
首先、我们要登录Oracle官网 Oracle 甲骨文中国 | 云应用和云平台 登录进去如果不是中文可以点击右上角带有国旗的图标就行更改,选择一个你能看懂的文字。 然后,点击“资源”—点击“开发人员下载” 然后,点击“开发工具” 这里有很多工具可…...
中英双语介绍美国的州:印第安纳州(Indiana)
中文版 印第安纳州简介 印第安纳州位于美国中西部地区,是一个以其农业、制造业和体育文化而著称的州。以下是对印第安纳州的详细介绍,包括其地理位置、人口、经济、教育、文化和主要城市。 地理位置 印第安纳州东临俄亥俄州,北接密歇根州…...

Flink实现准确和高效流处理的关键问题
时间相关: Watermark 水位线 水位线是插入到数据流中的一个标记,可以认为是一个特殊的数据。水位线主要的内容是一个时间戳,用来表示当前事件时间的进展。水位线是基于数据的时间戳生成的。水位线的时间戳必须单调递增,以确保任务的事件时间时钟一直向前推进,进展。水位线…...

isidentifier()方法——判断字符串是否为合法的Python标识符或变量名
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 isidentifier()方法用于判断字符串是否是有效的Python标识符,还可以用来判断变量名是否合法。isidentifier()方法的语法格式如…...
天猫商品列表数据接口(Tmall.item_search)
天猫平台商品列表数据接口(taobao.item_search)是天猫开放平台提供的一个API接口,用于获取天猫平台上的商品列表数据。通过该接口,用户可以获取到商品的名称、价格、销量、评价等信息。下面将具体介绍这个接口的各个方面ÿ…...

React+TS前台项目实战(二十一)-- Search业务组件封装实现全局搜索
文章目录 前言一、Search组件封装1. 效果展示2. 功能分析3. 代码详细注释4. 使用方式 二、搜索结果展示组件封装1. 功能分析2. 代码详细注释 三、引用到文件,自行取用总结 前言 今天,我们来封装一个业务灵巧的组件,它集成了全局搜索和展示搜…...

SEO与AI的结合:如何用ChatGPT生成符合搜索引擎优化的内容
在当今数字时代,搜索引擎优化(SEO)已成为每个网站和内容创作者都必须掌握的一项技能。SEO的主要目标是通过优化内容,使其在搜索引擎结果页面(SERP)中排名更高,从而吸引更多的流量。然而…...
【信息系统项目管理师知识点速记】组织通用管理:知识管理
23.3 知识管理 23.3.1 知识管理基础 知识管理是通过利用各种知识和技术手段,帮助组织和个人生产、分享、应用和创新知识,以形成知识优势并在个人、组织、业务目标、经济绩效和社会效益方面产生价值的过程。它能为组织带来知识增值,创造新的价值,提升决策效能和水平,是提…...

CM-UNet: Hybrid CNN-Mamba UNet for Remote Sensing Image Semantic Segmentation
论文:CM-UNet: Hybrid :CNN-Mamba UNet for Remote Sensing Image Semantic Segmentation 代码:https://github.com/XiaoBuL/CM-UNet Abstrcat: 由于大规模图像尺寸和对象变化,当前基于 CNN 和 Transformer 的遥感图像语义分割方…...

DP:子序列问题
文章目录 什么是子序列子序列的特点举例说明常见问题 关于子序列问题的几个例题1.最长递增子序列2.摆动序列3.最长递增子序列的个数4.最长数对链5.最长定差子序列 总结 什么是子序列 在计算机科学和数学中,子序列(Subsequence)是指从一个序列…...
Spring Data与多数据源配置
Spring Data与多数据源配置 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨如何在Spring Data中配置和使用多个数据源。 在现代应用程序中&…...

【前端vue3】TypeScrip-类型推论和类型别名
类型推论 TypeScript里,在有些没有明确指出类型的地方,类型推论会帮助提供类型。 例如: 变量xiaoc被推断类型为string 如重新给xiaoc赋值数字会报错 let xiaoc "xiaoc"xiaoc 1111111111111如没有给变量指定类型和赋值…...

javaEE——Servlet
1.web开发概述 所谓web开发,指的是从网页中向后端程序发送请求,与后端程序进行交互 2.java后端开发环境搭建 web后端(javaEE)程序需要运行在服务器中的,这样前端才可以访问得到 3.服务器是什么? ①服务器就是一款软件,可以向其发送请求&#…...

Kotlin扩展函数(also apply run let)和with函数
also apply run let with的使用例子 private fun testOperator() {/*** also*/val person Person("ZhangSan", 18)person.also {// 通常仅仅打印使用, 也可以通过it修改it.name "ZhangSan1"println("also inner name: " it.name)}println(&qu…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...

break 语句和 continue 语句
break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行 break break语句用于跳出代码块或循环 1 2 3 4 5 6 for (var i 0; i < 5; i) { if (i 3){ break; } console.log(i); } continue continue语句用于立即终…...

多模态大语言模型arxiv论文略读(112)
Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文标题:Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文作者:Jea…...