当前位置: 首页 > news >正文

[论文阅读笔记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=qQlogeτsim(q,q+)+qQeτ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=1Lk=1KwkFj(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)的匹配策略:

  1. 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[rPexp(qrqτ)exp(qrqτ)+τTexp(qrqτ)exp(qrqτ)]s2(τ,r)=qrqτqrqτs(τ,r)=21(s1(τ,r)+s2(τ,r))

  1. 贪心策略
    在这里插入图片描述
    在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接口,用于获取天猫平台上的商品列表数据。通过该接口,用户可以获取到商品的名称、价格、销量、评价等信息。下面将具体介绍这个接口的各个方面&#xff…...

React+TS前台项目实战(二十一)-- Search业务组件封装实现全局搜索

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

SEO与AI的结合:如何用ChatGPT生成符合搜索引擎优化的内容

在当今数字时代,搜索引擎优化(SEO)已成为每个网站和内容创作者都必须掌握的一项技能。SEO的主要目标是通过优化内容,使其在搜索引擎结果页面(SERP)中排名更高,从而吸引更多的流量。然而&#xf…...

【信息系统项目管理师知识点速记】组织通用管理:知识管理

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如没有给变量指定类型和赋值&#xf…...

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…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...