[论文阅读笔记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两种模式下,流程如下图:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s集群node节点加入失败

出现这种情况: [preflight] FYI: You can look at this config file with kubectl -n kube-system get cm kubeadm-config -o yaml [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [kubelet-start] Writing kub…

python 识别图片点击,设置坐标,离设置坐标越近的优先识别点击

import pyautogui import cv2 import numpy as np import mathdef find_and_click(template_path, target_x, target_y, match_threshold0.8):"""在屏幕上查找目标图片并点击。Args:template_path: 目标图片的路径。target_x: 预设的坐标 x 轴值。target_y: 预设…

OpenCV报错已解决:Vector析构异常OpencvAssert CrtlsValidHeapPointer

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 在使用OpenCV进行图像处理时,我们可能会遇到Vector析构异常OpencvAssert CrtlsValidHeapPointer的问题。本文将…

基于LMS自适应滤波的窄带信号宽带噪声去除(MATLAB R2021B)

数十年的研究极大的发展了自适应滤波理论,自适应滤波理论已经成为信号处理领域研究的热点之一。从理论上讲,自适应滤波问题没有唯一解。为了得到自适应滤波器及其应用系统,可以根据不同的优化准则推导出许多不同的自适应理论。目前该理论主要…

在eclipse中导入idea项目步骤

一、可以把其它项目的.project&#xff0c; .classpath文件拷贝过来&#xff0c;修改相应的地方则可。 1、.project文件只需要修改<name>xxx</name>这个项目名称则可 2、.classpath文件通常不用改&#xff0c; 二、右击 项目名 >选择“Properties”>选择 Re…

自动驾驶⻋辆环境感知:多传感器融合

目录 一、多传感器融合技术概述 二、基于传统方法的多传感器融合 三、基于深度学习的视觉和LiDAR的目标级融合 四、基于深度学习的视觉和LiDAR数据的前融合方法 概念介绍 同步和配准 时间同步 标定 摄像机内参标定&#xff08;使用OpenCV&#xff09; 摄像机与LiDAR外…

微软推出最新视觉基础模型Florence-2 可在浏览器运行

据微软官方消息&#xff0c;微软推出视觉基础模型Florence-2&#xff0c;该模型现已能够在支持WebGPU的浏览器中100%本地运行。Florence-2-base-ft是一个拥有2.3亿参数的视觉基础模型&#xff0c;采用基于提示的方法来处理广泛的视觉和视觉语言任务。 该模型支持多种功能&…

IDEA 插件推荐【一】

好使的插件可以让工作事倍功半。下面就推荐一些常用的IDEA插件&#xff0c;如果你有其他好使的插件&#xff0c;欢迎评论区留言分享出来~ 1.Key Promoter X Key Promoter X 插件&#xff0c;IDEA 快捷键提示工具。 在每次我们使用鼠标进行 IDEA 的某个操作&#xff0c;Key Pr…

lambda-map.merge

map.merge 结论: 1.当前传入的 key ,value biFunction 2.如果之前map不存在则直接put(当前key,当前value) 3.如果之前map已经有了,老value与 当前value 进入function处理后再 put(当前key,处理后的value)

IDEA使用Apidocx插件在RAP生成接口文档

第一步 安装插件&#xff0c;安装最新的1.1.7即可&#xff0c;插件与idea版本对照 第二步 输入对应的IP或域名&#xff0c;端口说明&#xff1a; 1. 38080&#xff1a;为后端数据 API 服务器&#xff08;rap2-delos&#xff09; 2. 3000&#xff1a;为前端静态资源服务&…

40岁学习java是否需要报班学习?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;应该不需要。各种公开免费的…

【计算机毕业设计】087基于微信小程序社区养老服务

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

AI加持,商业智能与分析软件市场释放更大潜能

根据IDC最新发布的《中国商业智能和分析软件市场跟踪报告&#xff0c;2023H2》显示&#xff0c;2023下半年&#xff0c;中国商业智能与分析软件市场规模为5.2亿美元&#xff0c;同比增长为3.7%。其中&#xff0c;本地部署收入占比为89.3%&#xff0c;同比增长1.7%&#xff1b;公…

【MySQL】架构体系概览

本文使用的MySQL版本是8.0 MySQL架构 ​MySQL架构整体由外部程序和MySQL服务器构成。其中内部服务器分成连接层&#xff0c;服务层&#xff0c;服务管理和公共组件&#xff0c;存储引擎层和文件系统层。 连接层 连接层的作用是处理客户端的连接。 网络端口 一台MySQL服务器…

C++精解【8】

文章目录 运算,- 加减法* / 乘除法逐元 乘法逐元 除法逐元综合运算矩阵乘法与加减法 转置、共轭、伴随矩阵点乘法,叉积 运算 ,- 加减法 逐元加减法 #include <iostream> #include "e:/eigen/Eigen/Dense" using namespace std;int main() {Eigen::Matrix2d …

clip系列改进Lseg、 group ViT、ViLD、Glip

Lseg 在clip后面加一个分割head&#xff0c;然后用分割数据集有监督训练。textencoder使用clip&#xff0c;frozen住。 group ViT 与Lseg不同&#xff0c;借鉴了clip做了真正的无监督学习。 具体的通过group block来做的。使用学习的N个group token&#xff08;可以理解为聚类…

计算机毕业设计hadoop+spark+hive知识图谱医生推荐系统 医生数据分析可视化大屏 医生爬虫 医疗可视化 医生大数据 机器学习 大数据毕业设计

测试过程及结果 本次对于医生推荐系统测试通过手动测试的方式共进行了两轮测试。 &#xff08;1&#xff09;第一轮测试中执行了个20个测试用例&#xff0c;通过16个&#xff0c;失败4个&#xff0c;其中属于严重缺陷的1个&#xff0c;属于一般缺陷的3个。 &#xff08;2&am…

Ueditor中集成135编辑器

一、背景 在资讯项目平台运营过程中&#xff0c;资讯需要排版&#xff0c;一般都是在135编辑器排好以后&#xff0c;复制到平台中UEditor编辑器中&#xff0c;所以&#xff0c;他们建议集成一下135哈 二、了解135编辑器 开始调研了解135编辑器&#xff0c;发现人家就支持集成…

Golang | Leetcode Golang题解之第202题快乐数

题目&#xff1a; 题解&#xff1a; func isHappy(n int) bool {cycle : map[int]bool{4: true, 6: true, 37: true, 58: true, 89: true, 145: true, 42: true, 20: true}for n ! 1 && !cycle[n] {n step(n)}return n 1 }func step(n int) int {sum : 0for n > …

AI数据分析007:根据Excel表格数据绘制柱形图

文章目录 一、介绍二、输入内容三、输出内容一、介绍 将Excel文件中2013年至2019年间线上图书的销售额,以条形图的形式呈现,每个条形的高度代表相应年份的销售额,同时在每个条形上方标注具体的销售额数值 二、输入内容 在deepseek中输入提示词: 你是一个Python编程专家,…