[论文阅读笔记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.rhkb.cn/news/367172.html

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

相关文章

网络爬虫基础知识

文章目录 网络爬虫基础知识爬虫的定义爬虫的工作流程常用技术和工具爬虫的应用1. 抓取天气信息2. 抓取新闻标题3. 抓取股票价格4. 抓取商品价格5. 抓取博客文章标题 网络爬虫基础知识 爬虫的定义 网络爬虫(Web Crawler 或 Spider)是一种自动化程序&…

《企业实战分享 · 常用运维中间件》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,如需交流&#xff…

HUAWEI MPLS 静态配置和动态LDP配置

MPLS(Multi-Protocol Label Switching,多协议标签交换技术)技术的出现,极大地推动了互联网的发展和应用。例如:利用MPLS技术,可以有效而灵活地部署VPN(Virtual Private Network,虚拟专用网),TE(Traffic Eng…

a-range-picker 国际化不生效

1、问题:按照官方 添加后是这样的 周和月没有翻译 1-1官方配置如下图 1-2效果: 2、import locale from "ant-design-vue/es/date-picker/locale/zh_CN"; 打印出locale是这样的 这个文件翻译文件中没有相关翻译 3、解决: 简单粗…

【实战场景】记一次UAT jvm故障排查经历

【实战场景】记一次UAT jvm故障排查经历 开篇词:干货篇:1.查看系统资源使用情况2.将十进制进程号转成十六进制3.使用jstack工具监视进程的垃圾回收情况4.输出指定线程的堆内存信息5.观察日志6.本地环境复现 总结篇:我是杰叔叔,一名…

Objective-C使用块枚举的细节

对元素类型的要求 在 Objective-C 中,NSArray 只能存储对象类型,而不能直接存储基本类型(例如 int)。但是,可以将基本类型封装在 NSNumber 等对象中,然后将这些对象存储在 NSArray 中。这样,en…

H6922 便携移动储能升压恒压方案 2.8-40V耐压 7.5A大电流应用芯片IC

H6922芯片是一款便携移动储能升压恒压控制驱动芯片,满足2.8-40V宽输入电压范围的升压恒压电源应用而设计。下面我将基于您提供的信息,对H6922的特性和典型应用进行更详细的解释。 产品特性详解 宽输入电压:H6922支持2.8-40V的宽输入电压范围…

【Windows】Visual Studio Installer下载缓慢解决办法

【Windows】Visual Studio Installer下载缓慢解决办法 1.背景2.分析3.结果 1.背景 使用visual studio在线安装包进行IDE安装,发现下载几乎停滞,网速几乎为零。 经过排查并不是因为实际网络带宽导致。 这里涉及DNS知识; DNS(Dom…

SCI丨5分期刊,JCR一区

SCI,5分,JCR Q1,中科大类3小类2区 1 基于复杂网络与xxx能源汽车节能数值分析 2 基于热能损失优化的xxx与性能管理 3 基于xxxLCA技术的绿色制造工艺优化研究 4 基于xxx入侵检测技术的物联网智能制造监控系统设计 6 基于物联网技术xxx电力系…

BMP280 环境传感器

型号简介 BMP280是博世(bosch-sensortec)的一款气压传感器,特别适用于移动应用。其小尺寸和低功耗使其能够应用于电池供电的设备,如手机、GPS 模块或手表。基于博世久经考验的压阻式压力传感器技术,具有高精度和线性度…

Elasticsearch备份数据到本地,并导入到新的服务 es 服务中

文章目录 使用elasticsearch-dump工具备份安装node.js(二进制安装)解压设置环境变量安装elasticsearch-dump docker安装使用ES备份文件到本地 使用elasticsearch-dump工具备份 这个工具备份时间比较长 安装node.js(二进制安装) wget https://nodejs.org/dist/v16.18.0/node-…

SpringBoot: Eureka入门

1. IP列表 公司发展到一定的规模之后,应用拆分是无可避免的。假设我们有2个服务(服务A、服务B),如果服务A要调用服务B,我们能怎么做呢?最简单的方法是让服务A配置服务B的所有节点的IP,在服务A内部做负载均衡调用服务B…

基于FPGA的DDS信号发生器

前言 此处仅为基于Vivado实现DDS信号发生器的仿真实现,Vivado的安装请看下面的文章,这里我只是安装了一个标准版本,只要能够仿真波形即可。 FPGA开发Vivado安装教程_vivado安装 csdn-CSDN博客 DDS原理 DDS技术是一种通过数字计算生成波形…

图解 Kafka 架构

写在前面 Kafka 是一个可横向扩展,高可靠的实时消息中间件,常用于服务解耦、流量削峰。 好像是 LinkedIn 团队开发的,后面捐赠给apache基金会了。 kafka 总体架构图 Producer:生产者,消息的产生者,是消息的…

排序算法系列一:选择排序、插入排序 与 希尔排序

目录 零、说在前面 一、理论部分 1.1:选择排序 1.1.1:算法解读: 1.1.2:时间复杂度 1.1.3:优缺点: 1.1.4:代码: 1.2:插入排序 1.2.1:算法解读&#x…

上位机图像处理和嵌入式模块部署(mcu 项目1:上位机编写)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面,我们说过要做一个报警器。如果只是简单做一个报警器呢,这个基本上没有什么难度。这里,我们就适当提高一下…

某业帮六月校招后端笔试

题目一 解题思路 签到题,dp就行。 题目二 解题思路 这个比较烦人,需要处理额外的引号和括号。用DFS,对于每个间隙,插入与不插入都搜一遍。 题目三 解题思路: 双指针,左右各一个指针,对比长度&…

如何在Python中拷贝类对象到数组

1、问题背景 在Python中,我们经常需要存储多个对象的集合。有时,我们需要拷贝这些对象,以便在不修改原始对象的情况下对它们进行操作。例如,在下述代码中,我们在colors列表中存储了多个Color对象,然后我们创…

单线激光雷达-多线激光雷达安装测试

单线激光雷达思岚 S 系列 参数简介 单线激光雷达的参数,主要看扫描频率(Hz),扫描范围(度),最大测距距离(m)以及单 圈点数)。机器人运动速度越快&#xff0c…

Windows系统安装NVM,实现Node.js多版本管理

目录 一、前言 二、NVM简介 三、准备工作 1、卸载Node 2、创建文件夹 四、下载NVM 五、安装NVM 六、使用NVM 1、NVM常用操作命令 2、查看NVM版本信息 3、查看Node.js版本列表; 4、下载指定版本Node.js 5、使用指定版本Node.js 6、查看已安装Node.js列…