当前位置: 首页 > 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…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

Map相关知识

数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...